While Panos (the artist) is away on vacation I've been chiseling away at the multiplayer side of things. The server has already under gone 3 re-writes.
First Attempt: Buffers
I first used buffers to store instances. That was a terrible idea because you can't re-write a single portion of a buffer. You have to re-read and write the whole thing.
Second Attempt: Lists
Data structure lists seemed promising and I got them almost fully setup when I suddenly realized one major problem... You can't store decimals in data structures. That is a massive problem unless the server is going to do multiplication and division every single time a cooking object is modified or enabled. In the end of it all, that just isn't optimal and have lists prevents me from doing simple collision tests.
Third Attempt: Instances
This was the solution I was avoiding the first two attempts. While instances are actually pretty fast as long as you avoid running step code in them, they still take up a bit of extra memory and aren't the fastest solution. I tested with 18,000 instances active at once and everything seemed fine so handling 64 players still seems realistic with this system in place.
Server Side Features
Of course I didn't only implement boring systems over and over again! I setup some new server-side features such as auto-backup saves and tick rate control. You can control the tick rate of objects and other parts separately. The point of that is you can REALLY speed up your server. Maybe you want a 100 player server, well turn the object tick rate to 120 and the server will wait 120 ticks to perform any object actions/updates.
You can disable the console cursor which will almost completely halt server rendering of the console. It is a minute difference but one that matters to me. User interactions can be logged in the console or disabled. This will help you active admins see who stole what from who. There is even my own special class of anti-cheat called 'Seabass Anti-Cheat'. Of course not all of these are setup yet but they are all available in the server settings.
Considering New Engines
I do love Game Maker: Studio and stand by it as a fast development IDE for 2D games but I'm starting to crave a more optimal engine. I will have to wait until I have the funds and time to learn (like understand as well as I do GML) a new language. C# is definitely up on my priority list. C++ isn't far down my list either but C# does seem to be a more commonly used language for game development. Either way I just wanted to share that with you.