Author Topic: Older graphic cards - backward compatibility  (Read 7803 times)

Older graphic cards - backward compatibility
« on: August 16, 2013, 10:20:37 pm »
Let’s be honest, any FOnline based game is no Crysis 3 so I don't really see why to force players to buy newer cards just to see amazing 2D graphics (don't get me wrong, I really like the look of Fallout). There is still a significant percentage of players who keep playing on older graphic cards without OpenGL 2.0 or shader support. The reason why they do that is another topic, please don't give advices like "go buy better card", if you think there is no need for backward compatibility then go ahead, express your oppinion.

OK, so here's the thing; I have the graphical anomaly which is quite familiar to all of us (to all old carders), in the history of FOnline it has been always easy to fix till now. There was a workaround that made the compiler skip the DirectX effect file (Primitive_Default.fx → Primitive_Default.fxc). All you had to do was to remove Primitive_Default.fx’s content and clear the cache.

I'm having these troubles in FOnline2 server, but I'm pretty sure this is the engine problem. Older engine versions didn't suffer on this. I noticed FOnline2 uses version 0436-F7 so no luck here but FO2238 had version 0423-EC which worked well for me.

If you are not familiar with this bug, see this picture explaining how it should look and how it looks if the workaround doesn't work.

Direct link: http://oi43.tinypic.com/2isb2nt.jpg
I hope FOnline engine developers will read this and that they do something about backward compatibility, maybe a parameter in FOnline.cfg wouldn't hurt anyone, for example OldCard = true. I assume this should not be a problem since it always worked and there were no significant graphical changes, heck even offering another FOnline.exe file (FonlineSW.exe) that would be entirely software rendered for people with extremely weak cards would make this game more accessible I believe.

There may be already a solution to this problem, if you know how to fix this, you would help not only me, but many other players, too.

JovankaB

  • Guest
Re: Older graphic cards - backward compatibility
« Reply #1 on: August 17, 2013, 03:35:03 pm »
It was like that in SDK for a while.
I guess it's just that 2238 was behind with this particular "improvement".

I have the same problem and I highly doubt anything will be done about that.
« Last Edit: August 17, 2013, 03:43:45 pm by b__B »

Re: Older graphic cards - backward compatibility
« Reply #2 on: August 17, 2013, 03:51:21 pm »
I guess it's just that 2238 was behind with this particular "improvement".
Does this mean that games based on 2238 SDK will not suffer of this?
I have the same problem and I highly doubt anything will be done about that.
Well in that case I will not play FOnline SDK based games, probably the only solution.

JovankaB

  • Guest
Re: Older graphic cards - backward compatibility
« Reply #3 on: August 17, 2013, 03:58:35 pm »
Does this mean that games based on 2238 SDK will not suffer of this?

As long as they stick to the old client (the one used by 2238). Which they don't have to.

Re: Older graphic cards - backward compatibility
« Reply #4 on: August 17, 2013, 03:59:36 pm »
I see, thanks for replies.

Offline Berko

  • Tim Tom Ted
    • http://kabefis.deviantart.com/
Re: Older graphic cards - backward compatibility
« Reply #5 on: August 17, 2013, 05:51:20 pm »
So the problem is that game close when it doesn't find effects file?

You can try to change effects files to disactivate them :

1\ In data/effects/ you have a lot a fx files, just open these
Code: [Select]
2D sprites        2D_Default.fx
3D models         3D_Default.fx
Interface         Interface_Default.fx
Fonts             Font_Default.fx
Primitive         Primitive_Default.fx

2\ Replace
Code: [Select]
// Techniques
technique Simple
{
pass p0
{
VertexShader = (compile vs_2_0 VSSimple());
PixelShader  = (compile ps_2_0 PSSimple());
}
}

by

Code: [Select]
// Techniques
technique Simple
{
pass p0
{
VertexShader = 0;//(compile vs_2_0 VSSimple());
PixelShader  = 0;//(compile ps_2_0 PSSimple());
}
}

3\ Delete effects cache in data\cache\<address.port>\ (fxc files)

4\ Start the game to compile new effects

=> I didn't test if it works on old card (don't have card/time) but for me the game start and I have the same you have in your screens "old card"

Hope it help (and works)!
~~~ Ashes of Phoenix project --> http://fonline-aop.net/ ~~~

Re: Older graphic cards - backward compatibility
« Reply #6 on: August 17, 2013, 06:20:13 pm »
I tried what you had posted, but it didn't work, Berko. Thanks for your effort anyway.

Offline Berko

  • Tim Tom Ted
    • http://kabefis.deviantart.com/
Re: Older graphic cards - backward compatibility
« Reply #7 on: August 17, 2013, 06:44:10 pm »
:( ok

Reading again the post it look like I'm not sure if I really understand the problem.
Is the game close itself with error in log  or  did it start but you don't have some graphic features ?
And your card doesn't support shaders, even v1.0 that's it?
~~~ Ashes of Phoenix project --> http://fonline-aop.net/ ~~~

Re: Older graphic cards - backward compatibility
« Reply #8 on: August 17, 2013, 09:04:44 pm »
If you delete cache and make a blank primitive_default.fx file in effects folder, it will not compile this file and the game will not start (Error - There were no techniques, Compilation failed, FOnline engine initialization fail.). After this you will find only these files in cache folder (everything except primitive_default.fxc):
Code: [Select]
2D_Default.fxc
3D_Default.fxc
Interface_Default.fxc
Font_Default.fxc
This is what always worked in 2238 client, but for some reason does not work in other newer clients of standard FOnline SDK.

Now when I try your idea to clear the cache and set shaders to 0, the file gets compiled and in the cache folder you see these files:
Code: [Select]
2D_Default.fxc
3D_Default.fxc
Interface_Default.fxc
Font_Default.fxc
Primitive_Default.fxc
Which means primitives managed to compile, you are able to launch the game now, but still the lines and lights and fog is missing.

My card supports shaders 1.1 or 1.3, not entirely sure. Hope I made it clear for you.

Offline Berko

  • Tim Tom Ted
    • http://kabefis.deviantart.com/
Re: Older graphic cards - backward compatibility
« Reply #9 on: August 17, 2013, 11:03:47 pm »
Ok, what I write before was to disable all effects to start the game.

When launching game with normal effect do you have error in client log? (have to enable log if it's not)


To know what version of shader your card support you have to check in fact what directx version it support. Launch dxdiag to see what version of directx you have.
Code: [Select]
directx shaders
7.0 none
8.0 1.0/1.1
8.0a 1.3
9.0 2.0
9.0a 2.0a
9.0b 2.0b
9.0c 3.0
...

If it support 1.0 1.1 or 1.3 you can change version in fx files
Example with v1.1
Code: [Select]
// Techniques
technique Simple
{
pass p0
{
VertexShader = (compile vs_1_1 VSSimple());
PixelShader  = (compile ps_1_1 PSSimple());
}
}

A problem come with 2D_Default.fx, don't know if it's only me or not. (error X4520: can read from texcoord ..)
I commented a part of code (if statement) and the game works again.
Code: [Select]
// Pixel shader
float4 PSSimple(AppToVsToPs_2DEgg input) : COLOR
{
float4 output;

// Sample
float4 texColor = tex2D(ColorMap, input.TexCoord);
output.rgb = (texColor.rgb * input.Diffuse.rgb) * 2;
output.a = texColor.a * input.Diffuse.a;

// Egg transparent
//if(input.TexEggCoord.x != 0.0f)
output.a *= tex2D(EggMap, input.TexEggCoord).a;

return output;
}
Don't know what kind of bug can happen with this part removed..

If it still don't works and logs didn't tell anything interesting then I don't know :p
~~~ Ashes of Phoenix project --> http://fonline-aop.net/ ~~~

Re: Older graphic cards - backward compatibility
« Reply #10 on: August 18, 2013, 12:18:26 am »
I think you're right, GPU-Z shows DirectX/Shader model support as 7.0/SM0.0, so that's why compile vs_1_1 does not work for me  >:(

Re: Older graphic cards - backward compatibility
« Reply #11 on: October 29, 2013, 02:33:32 pm »
Hello, to jump in on this issue, I can not run Fonline client and was wondering what to do to remedy that.

My system is Windows XP Professional SP3.
My version of directx is 9.0c.
My "graphic card" is Intel q45/q43 express chipset (integrated into motherboard).

My client is Fonline 2238 trying to connect to Fonline Reloaded server (the new and updated client is downloaded from their website, tried with both full and compact versions).

My master and critter .dat's are within the clients' directory and fo2238config.exe points to them in orderly fashion.

And here is my Fonline client log output:

Code: [Select]
Starting FOnline (version 0423-EC)...
Engine initialization...
Sprite manager initialization...
GraphicLoader::LoadEffect - Unable to compile effect, effect<Primitive_Default.fx>, errors<
error X3539: ps_1_x is no longer supported; use /Gec in fxc to automatically upgrade to ps_2_0
error X3539: Alternately, fxc's /LD option allows use of the old compiler DLL

C:\Program Files\FOnline Reloaded\memory(31,19): ID3DXEffectCompiler::CompileEffect: There was an error compiling expression
ID3DXEffectCompiler: Compilation failed
>.
Sprite manager initialization complete.
Sound manager initialization...
Sound manager initialization complete.
LanguagePack::LoadAll - Unable to load MSG<FOTEXT.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FODLG.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOOBJ.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOGAME.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOGM.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOCOMBAT.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOQUEST.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOHOLO.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOCRAFT.MSG>.
LanguagePack::LoadAll - Unable to load MSG<FOINTERNAL.MSG>.
CritType::InitFromMsg - Default zero type not loaded.
Load scripts...
Main script section not found in MSG.
Interface initialization.
Load data.
Load sprites.
Interface initialization complete.
Item manager initialization...
Item manager initialization complete.
Hex field initialization...
Hex field initialization complete.
Engine initialization complete.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Network init...
Connecting to server<play.fonline-reloaded.net:2238>.
Connecting successful.
Network init successful.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
Script::PrepareContext - Invalid bind id<0>. Context info<Game>.
etc etc
...

I suspect it's about shaders. The "old" Fonline client does not give that kind of error.

Thanks in advance!

Re: Older graphic cards - backward compatibility
« Reply #12 on: February 26, 2014, 11:15:35 am »
Let’s be honest, any FOnline based game is no Crysis 3 so I don't really see why to force players to buy newer cards just to see amazing 2D graphics (don't get me wrong, I really like the look of Fallout). There is still a significant percentage of players who keep playing on older graphic cards without solar kits or shader support. The reason why they do that is another topic, please don't give advices like "go buy better card", if you think there is no need for backward compatibility then go ahead, express your oppinion.

OK, so here's the thing; I have the graphical anomaly which is quite familiar to all of us (to all old carders), in the history of FOnline it has been always easy to fix till now. There was a workaround that made the compiler skip the DirectX effect file (Primitive_Default.fx → Primitive_Default.fxc). All you had to do was to remove Primitive_Default.fx’s content and clear the cache.

I'm having these troubles in FOnline2 server, but I'm pretty sure this is the engine problem. Older engine versions didn't suffer on this. I noticed FOnline2 uses version 0436-F7 so no luck here but FO2238 had version 0423-EC which worked well for me.

If you are not familiar with this bug, see this picture explaining how it should look and how it looks if the workaround doesn't work.

Direct link: http://oi43.tinypic.com/2isb2nt.jpg
I hope FOnline engine developers will read this and that they do something about backward compatibility, maybe a parameter in FOnline.cfg wouldn't hurt anyone, for example OldCard = true. I assume this should not be a problem since it always worked and there were no significant graphical changes, heck even offering another FOnline.exe file (FonlineSW.exe) that would be entirely software rendered for people with extremely weak cards would make this game more accessible I believe.


There may be already a solution to this problem, if you know how to fix this, you would help not only me, but many other players, too.

I think you are absolutely right so there is no mean in spending money on these graphic cards.
« Last Edit: February 27, 2014, 06:06:17 pm by AlLippincott »

Re: Older graphic cards - backward compatibility
« Reply #13 on: February 26, 2014, 03:19:03 pm »
I would like to add that fonline tla and generally new versions of engine or client/server (?) can lag my computer sometimes and does not work pretty smooth. +/- 100 fps are not enough, maybe I have wrong eyes or something but it lag for me as hell. Other games work well.