02 Dec 2012

Last2Die (that zombie survival game) isn’t going to happen. To make a long story slightly less long, a badly put together engine is going to buckle under the weight of expansion, and too many errors are going to amount to a pile that can only be fixed with a restart. Basically, Last2Die was not efficient as far as multiplayer games go. By the time I had implemented the player objects (without even attempting zombies or weapons), it had begun to slow down horrendously on my machine and wouldn’t even work in some browsers.
Development came to a halt. After numerous attempts to optimize pieces of code, I realized that the only intelligent way to move forward would be to scrap the project and start from scratch. I most likely could have kept going and found some way of speeding things up, but it just wouldn’t have been smart. Trying to design something on top of the sloppy foundation I had created was like asking for nightmares later on. It just wouldn’t have worked. As such, I made the decision to shelve the project for the time being. I still like the idea, but I just don’t have the resources for the Last2Die I want to create at the moment.
Why this is awesome:
Last2Die was always going to fail. I don’t mean that to be pessimistic. In fact, I’m fairly confident I could have put something together that worked, but it would never have been the game I wanted to create. I had never worked with networking before and was completely inexperienced in the concept of trying to sync the games between multiple people in different geographical locations. It was overwhelming. I made a fully functional chat room and lobby system, sure, but my method of getting player movements to sync was a disaster waiting to happen. The reason this is great, however, is because it was my method. I read up a little on networking and multiplayer games before diving into the project, but, in the end, I still designed the systems through which the clients communicated with the server. I still tried to make my own engine.
So really, in the end, Last2Die was a success because it was a failure. I don’t mean to sound cliche when I say it, but I definitely did learn from my mistakes. For one thing, I learned that I really should read up a little more before trying another full on real time multiplayer game. Beyond that, this project showed me a lot about how systems interact. Even staying away from multiplayer, this kind of knowledge is invaluable in a world of OOP programming where different pieces of the overall project need to interact nicely with one another. In the game I’m working on now, I’m fairly confident I can keep these interactions much cleaner than they were in GravX, which was more or less hacked together in a way that worked enough for me but would have been illegible for anyone else.
In the end, though, I do want to try something like this again. It was fun and, although it didn’t quite work out how I had planned, I wouldn’t mind trying to overcome those challenges again. Once I have more time, and a better starting point, it might be interesting to take Last2Die off the shelf and dust it off.