I've been playing this game occasionally for like two months by now, recently beat the normal difficulty and am working on a decent multi-binary to go into the normal(autonomous) difficulty.
I do love the game, but the code editor/compiler has several albeit small issues. Probably the most annoying one is that you cannot assign values to enum entries, which means that if you want to keep your message protocols consistent, you gotta have the same message type enum in every process, even if this process only uses one type of message. So it ends up as a waste of space(2048? lines max), + a waste of time since you gotta go into every process and update the enum.
enum{ //500-599 REQUEST MSG_REQUEST_ESCORT = 500, MSG_REQUEST_BUILDER = 501, //600-699 FOUND MSG_WELL_FOUND = 600, MSG_ENEMY_FOUND = 601 };
Something like that would be awesome.
Now that i think about it, you could use variables to hold stuff like that, yes, but that's a waste of memory and a waste of instructions, since assigning a variable does use up several instructions.
Also i was thinking, maybe create lookup tables for math operations like sin/cos and possibly even atan2? There are only ~8k possible angles in-game, so a lookup table for a sin operation would be around 32 kilobytes(float(4 bytes)*8k angles) which isn't that bad, but with such a lookup table loaded sin and cos operations are just wrapping the angle + looking up the result + some multiplication. Not sure if this applies to atan2 though - the amount of possible inputs is infinite, and even for the visible area(900 pixels*900 pixels) is quite big(~1.6 megabytes for a lookup table). But in the end it ends up as a single operation against 16 that atan2 currently uses.
If you somehow manage to set up the atan2 lookup table to take arguments and convert it into an index in the lookup table we do end up with 32 kilobytes yet again, not sure if that's possible in less than 16 operations tho.
Not sure if that's worth the trouble though, because you'd rarely use more than one atan2 call in a process.
(edit)Another thing i forgot to suggest, while not really related to the compiler, it would be great to have more options in the Custom Game screen. Ideally a map editor, of course, but adding some simple settings is enough. Like, Spawn Distance From Wells. At the start of a custom game, green and purple bases fail to spawn their defense processes because they're too close to a well, which prevents them from participating in the battle properly. Also please add fields like Well Replenish, Well Reserve 1 and Well Reserve 2 for better control over custom game wells, with an option for endless wells.