When it comes to programming, art, audio, and design, typically I only have sufficient time to focus on two of these. To put things into perspective, it made sense I invest all of it into programming... Virtually all my development time was devoted to the technical aspects with Player.IO.
The Good
The game works! Technically, it turned out as I had planned on Friday evening, briefly after the theme was announced.
The server automatically match makes three random people and lets them play as a unified character. I was thrilled to play with complete strangers online. This was such a boost of morale so definitely I want to take online multiplayer further. Overcoming this initial technical roadblock opens up all kinds of opportunities.
As for the jam itself, I got sufficient sleep and maintained a healthy schedule. The core features were finished on time, leaving just optional ones like a chat system for another time.
The Bad
Potato Gnomes Online actually is not very fun, especially for the gnome who jumps because it is just a single button for input. Not surprisingly, it is typically the first player who disconnects. Also, it isn't very entertaining to sit in the match making lobby while the game attempts to find other players.
The audio and art are lackluster. Music is missing entirely. Focusing on these components would have stretched my time budget too thin.
The audio and art are lackluster. Music is missing entirely. Focusing on these components would have stretched my time budget too thin.
The Ugly
The code manifested into a tiny little nightmare. The server was written in C#, but it contains all sorts of poor programming practices that do not utilize the strengths of the language. Algorithms are stitched together and unused variables float around everywhere like a bunch of turds in a maze of sewer pipes.
I discovered the hard way that the server is multithreaded so needs to be thread safe. I panicked and sprinkled lock statements everywhere to neutralize the problem in a very crude way.
The game feels very laggy. For example, if a player wants to jump, then the request is sent to the server, which then processes everything and broadcasts the live data. I designed it this way intentionally, to force flawless synchronization across each client.
My game jam entry was a success on a technical level, and a very rewarding experience. It has given me the confidence and experience to put it to much better use in the future.
Summary
My game jam entry was a success on a technical level, and a very rewarding experience. It has given me the confidence and experience to put it to much better use in the future.