Flatlander
Species Developer
Yep that's what I'm wondering too, but I guess that we can only see when you try it?
Can you reverse the order?(but leave lighting and text to work as they work right now)
And row by row should start from last tile and work backwards (because of 64x64 sprites can cover tiles what are positions [-1,-1])
What about these questions?
If we can check at the pixel level we would create perfect results.
Another idea is straight out ignore objects what are behind bigger objects, but problem is that lot of mappers use combination of different items to create the scenario.
1 more idea what you could already produce would be to:
Ignore an object what has same type or id (in case of monster we use type, we only take the top creature of same type)(walking from tile to tile from same position by same monster type might start looking glitchy though)
in case of items we take the top item of same id. (although we need to consider stack amount on some items too then, some sprite change on different counts..)
in case of effecst we use a limit of enums on same position, lets say 10.
Reason you had huge fps drop was you created like hundreds of animations. and each position had like ~50 effects moving on it.
You have great ideas. These are the things I started attempting (with little success) when I first started trying to optimize the client myself.
Here is the core issue:
- The game window in tibia is by default 512x352 pixels.
- That means the Resolution of the game window is 512x352.
- The FPS Counter in the OTClient, only tracks the FPS in this game window. (It has a separate FPS counter for the UI)
Can you IMAGINE running a game with a 512x352 resolution and getting FPS Drops, then thinking "Hmm maybe it is because there are too many creatures on the screen?"
Hell no.
If you ran a game at 800x600 and did not have 60 FPS, it better be a next-gen god-tier game.
So we have an issue, where the OTClient is drawing a game window with a resolution of 512x352, and some computers have issues running this game smoothly.
This is the equivalent, of giving an adult a paperclip, and they have trouble picking it up because it is too heavy.
There is either something wrong with the adult, or the paperclip. It is either the computer, or the client.
It is as if we have super-glued the paperclip to the floor. Then we tell an adult "hey pick up that paperclip." and watch them struggle with a task that should be VERY simple.
We need to find the glue, what is making this incredibly easy task so difficult for computers?
The OTClient is doing something clearly wrong. It has the illusion of working correctly because it LOOKS right, but somewhere in the code it is doing something insanely stupid. We need to find out what that is, and fix it.