Not Applicable
Problem description:
This might belong in a different subforum, like Design Philosophy. oops.
I am developing an isometric BYOND game for the Mazes Contest that's going on right now. Since I've been planning to make this game singleplayer-only, I decided to not pull any punches with things that you usually don't see in BYOND games because of the network lag bottleneck, like particle effects, lighting, responsive controls, and so forth.
This is a screenshot of the game.
However, this was not without its problems. I've been noticing framerate dips, and huge spikes in CPU usage.
Right now, when I am sitting and there are no moving objects (the particles here are just sitting still with animated icons), the framerate hovers at around 20 (the world is set to 25fps), and the CPU hovers around 25%!
The CPU hovering around 25% for a game that's essentially doing nothing is unacceptable.. so I started running profiler tests.
None of my functions had a total CPU value of over 5.000, and most of them had over 10,000 calls (even the ones with the highest CPU value)... so it wasn't my code.
So I went and disabled the particles, and I saw that the CPU would hover around 15% in a similar game state. That's really odd, I thought, so I made particles that didn't have an animated icon but were animated via pixel offset, and the CPU usage rose back up to 25% with the same dips in framerate.
Right now, my world is set to 40x40 icon size, isometric, and 22x26 view size (960x520 screen size in pixels).
Then I turned the map_format bit back to TOPDOWN_MAP, and I put the game in the same usual gamestate, with no moving objects and lots of animated particles. The framerate was a constant 25fps, like it should have been, and the CPU usage sat below 6%.
So I've come to the conclusion that BYOND isometric is completely incapable of displaying animated icons. This is a huge disappointment, because I have invested a lot of time into making my stuff work in isometric, like the shading on the walls and a private library for turning normal square tiles into isometric tiles, and creating an isometric tileset(which was the most time-consuming), and so forth.
I don't know what to do from here.
I can't continue working on this in BYOND isometric because of how incapable it's proven to be.
Should I just drop isometric and make the game with a traditional camera angle? Should I make my own isometric stuff in TOPDOWN_MAP?
tl;dr: I've invested a crapload of time making a game in BYOND isometric, but it turns out that BYOND isometric isn't capable of showing animations so it isn't an acceptable medium for this project. I don't know what to do anymore.
[EDIT]: Here is a demo of the game with DEBUG enabled so you can see for yourself the problems I'm describing: http://files.byondhome.com/D4RK354B3R/Apprentice.zip
If you lower the target framerate to 20fps, is it stable and is the game still playable? What if you lowered the view to 20x24?
Are the "spark" particles a single atom or many atoms? If many, could you dynamically blend them into one state so it only required one atom?
Just spit-balling here, but it seems like a lot of work to throw away (although hopefully you would be able to salvage a fair amount of it).