In my village my fps is only 35 If I disable shadows, it increases to around 40-50. If I also disable animations (morphed meshes or what they were) it increases to 60. But of course, the game looks pretty bad then!shubla wrote:Client performs quite well when there aren't many objects visible. (Especially animated ones, like animals)
I am sure that FPS will drop when people build bigger villages.
-
shubla
- Posts: 13041
- Joined: Sun Nov 03, 2013 11:26 am
- Location: Finland
Re: Client performance update thread

I'm not sure that I have a strong argument against sketch colors - Jorb, November 2019
http://i.imgur.com/CRrirds.png?1
Join the moderated unofficial discord for the game! https://discord.gg/2TAbGj2
Purus Pasta, The Best Client
-
DPblH
- Posts: 432
- Joined: Wed Jun 09, 2010 4:57 pm
Re: Client performance update thread
I am agree with shubla. I also have sets of modded resources without mesh morph animations, texture rotations and some disabled skeleton animations. This is only way for me to play at 50-60 fps, but yeah, the game become too ugly 
Give a man a game engine and he delivers a game. Teach a man how to make a game engine and he never delivers anything.
-
Alitis
- Posts: 123
- Joined: Wed Jun 20, 2018 5:04 pm
Re: Client performance update thread
No extra meshes or anything
-
loftar
- Posts: 9093
- Joined: Fri Apr 03, 2009 7:05 am
- Location: Your character database
Re: Client performance update thread
It's (finally) time for another status update. The new client is actually mostly working at this point. Since the last update, most of the things I've been doing is converting lots of small things here and there, too numerous and piecewise insignificant to list, but the last "block" of things I've completed is all the "custom" graphics for various different objects, like cow textures, barterstand items, display signs, tracking effects, smoke, drug effects and all those various little miscellaneous things.
I think the only real things that are missing at this point are instanced rendering and shadows, and out of those I'm currently working on instancing. I expect shadow rendering to be a fairly small thing (given that it uses much of the very same infrastructure that click-testing does). I'm only saving it for last to see whether it can properly re-use the same instancing data as the primary rendering uses. Instancing is certainly the bigger sub-project of the two, but it's coming along.
Technically, it should actually be possible to start testing the client publicly at this point, since instancing is really only a performance optimization (albeit a very important one), but setting up a public testing environment is not completely trivial since it requires a separate set of resources (with differing versions). It has to be done sooner or later, of course, since the client will have to be tested before switching to it entirely. I'm just waiting with that until the real work is done. The "future work" part of the OP still remains, though.
Time-wise, since everything seems to be almost complete, I actually don't expect it to take all that much longer. I'm sure there will be bugs aplenty to fix once public testing starts, but unless there are any really hard-to-fix ones (here's to hoping there aren't), I'd expect the new client to be done and in use before summer is over, hopefully sooner rather than later.
Performance-wise, it's actually looking somewhat better than expected. It is, of course, hard to test actual realistic situations (so perhaps I shouldn't be counting my chickens before they hatch, and such), and the lack of instancing and shadows also makes it hard to compare to the current client, but as intended, the "actual client rendering" (as defined in the OP) has been pretty much removed as a bottleneck. More surprisingly though, the OpenGL dispatch performance also seems to have improved somewhat significantly (30% faster in one recent test, when compared to the current client with shadows turned off), and that's despite the current lack of instancing. I'm honestly not sure why that even is, but it might be related to the OpenGL backend having more information to order rendering more intelligently. I expect the "vertex-data atlasing" mentioned in the OP to improve it further. Experimentally, I've also tried parallelizing per-tick work over several cores, which does seem to cause a somewhat significant improvement when there are many animated objects being rendered at once, but also has a not insignificant amount of overhead, so there is probably some kind of balance to be struck for when to use it, and I'm not yet entirely sure where that balance lies.
Since the new client isn't really intended to look different in any way, screenshots don't really say a whole lot, but I thought I'd include one anyway if only because it makes the post look more significant: I guess the stats look a bit different.
I think the only real things that are missing at this point are instanced rendering and shadows, and out of those I'm currently working on instancing. I expect shadow rendering to be a fairly small thing (given that it uses much of the very same infrastructure that click-testing does). I'm only saving it for last to see whether it can properly re-use the same instancing data as the primary rendering uses. Instancing is certainly the bigger sub-project of the two, but it's coming along.
Technically, it should actually be possible to start testing the client publicly at this point, since instancing is really only a performance optimization (albeit a very important one), but setting up a public testing environment is not completely trivial since it requires a separate set of resources (with differing versions). It has to be done sooner or later, of course, since the client will have to be tested before switching to it entirely. I'm just waiting with that until the real work is done. The "future work" part of the OP still remains, though.
Time-wise, since everything seems to be almost complete, I actually don't expect it to take all that much longer. I'm sure there will be bugs aplenty to fix once public testing starts, but unless there are any really hard-to-fix ones (here's to hoping there aren't), I'd expect the new client to be done and in use before summer is over, hopefully sooner rather than later.
Performance-wise, it's actually looking somewhat better than expected. It is, of course, hard to test actual realistic situations (so perhaps I shouldn't be counting my chickens before they hatch, and such), and the lack of instancing and shadows also makes it hard to compare to the current client, but as intended, the "actual client rendering" (as defined in the OP) has been pretty much removed as a bottleneck. More surprisingly though, the OpenGL dispatch performance also seems to have improved somewhat significantly (30% faster in one recent test, when compared to the current client with shadows turned off), and that's despite the current lack of instancing. I'm honestly not sure why that even is, but it might be related to the OpenGL backend having more information to order rendering more intelligently. I expect the "vertex-data atlasing" mentioned in the OP to improve it further. Experimentally, I've also tried parallelizing per-tick work over several cores, which does seem to cause a somewhat significant improvement when there are many animated objects being rendered at once, but also has a not insignificant amount of overhead, so there is probably some kind of balance to be struck for when to use it, and I'm not yet entirely sure where that balance lies.
Since the new client isn't really intended to look different in any way, screenshots don't really say a whole lot, but I thought I'd include one anyway if only because it makes the post look more significant: I guess the stats look a bit different.
You do not have the required permissions to view the files attached to this post.
"Object-oriented design is the roman numerals of computing." -- Rob Pike
-
loleznub
- Posts: 751
- Joined: Sat Sep 14, 2013 4:26 am
Re: Client performance update thread
Why does that cow have an anvil in its chest?
-
loftar
- Posts: 9093
- Joined: Fri Apr 03, 2009 7:05 am
- Location: Your character database
Re: Client performance update thread
I apologize to the cows. They, and the anvil, were inside a house that has since decayed.loleznub wrote:Why does that cow have an anvil in its chest?
"Object-oriented design is the roman numerals of computing." -- Rob Pike
-
loleznub
- Posts: 751
- Joined: Sat Sep 14, 2013 4:26 am
Re: Client performance update thread
Ah this makes sense, thanks for the clarification.loftar wrote:I apologize to the cows. They, and the anvil, were inside a house that has since decayed.
loftar wrote:... They, [...] were inside a house that has since decayed.
-
Ardennesss
- Posts: 1171
- Joined: Sun Oct 06, 2013 4:22 pm
Re: Client performance update thread
I sincerely hope you're coding on a potato if you're getting 32 FPS with only that on your screen... Otherwise, I don't have super high hopes for the outcome of this project.
-
loftar
- Posts: 9093
- Joined: Fri Apr 03, 2009 7:05 am
- Location: Your character database
Re: Client performance update thread
Actually, that's just because I have a weird issue with my GPU sometimes in that, when it isn't loaded enough, it stays clocked down to the power-saving performance state even though that causes individual frames to run over (since the next frame is still mostly idle due to vsync, the driver doesn't consider it loaded enough to clock up). It's happens particularly often to me in houses or caves, but sometimes also outside like this. It's actually pretty retarded, but I also haven't cared enough to try to solve it.Ardennesss wrote:I sincerely hope you're coding on a potato if you're getting 32 FPS with only that on your screen... Otherwise, I don't have super high hopes for the outcome of this project.
"Object-oriented design is the roman numerals of computing." -- Rob Pike
-
Ardennesss
- Posts: 1171
- Joined: Sun Oct 06, 2013 4:22 pm
Re: Client performance update thread
A good real world test would be to test the new performance with ~100 animals on screen.loftar wrote:Actually, that's just because I have a weird issue with my GPU sometimes in that, when it isn't loaded enough, it stays clocked down to the power-saving performance state even though that causes individual frames to run over (since the next frame is still mostly idle due to vsync, the driver doesn't consider it loaded enough to clock up). It's happens particularly often to me in houses or caves, but sometimes also outside like this. It's actually pretty retarded, but I also haven't cared enough to try to solve it.Ardennesss wrote:I sincerely hope you're coding on a potato if you're getting 32 FPS with only that on your screen... Otherwise, I don't have super high hopes for the outcome of this project.
