Something Postmortem Something Something

Hello LudumDare crowd,

I'm writing this to break down my experience in LD38 and better analyze what things went well and poorly for me. I'll start by going through the phases of my project - in terms of how I was approaching it without judging my actions, and then afterwards discuss time use and what went well and didn't. I have a number of ideas about what to do better next time, summarized in the last section.

For reference, here's a link to my game (Something Something)

Phase 1 - Getting started (+0h)

Frankly, "A Small World" was among my least favorite themes in the judging, it definitely didn't inspire anything that could be crazy and fun, like some of the other mechanic-related themes could have. After thinking about it for a long while, I came up with two general ideas - both pretty ambitious, but I felt like I had a good shot at completing either of them. * A minecraft-like game on a small spherical world. * An RTS on a very small world map with serious space constraints.

I felt like I had a better chance of completing the RTS approach, and estimated that the minecraft-like game would be considerably more complex to implement. I drew up a pretty simple list of requirements, planned out some goals, and prepared to start work.

I didn't particularly choose a specific platform to target before LudumDare began, but this did not end up being a problem; Someone I know just happened to mention MonoGame right when I was thinking about where to start, and since I've had a lot of experience developing with XNA, I picked it up and ran with it. Despite a few initial technical problems, I quickly was able to get rendering working and started moving forward with my plan.

Phase 2 - Rendering the world (+3h)

My first priority was to build a representation for my world, and to display that representation to the user. Since I had decided to build a game involving map depth as a gameplay element I had decided that a 3D representation was the best approach. I quickly produced a usable world representation in code, and also quickly was able to display this flat representation. I decided to improve this world to use textures, and spent some time implementing textured rendering and building some simple textures. I continued to add some largely cosmetic features like correctly rendering the "cliffs" seperating vertical gaps, and a few buildings. I continued to implement another rendering mode for the billboard sprites which I'm using for the "forest" tile and ultimately the unit sprites. At this point I felt the rendering was effectively complete and spent a short amount of time building a UI editor for maps in order to build the kind of terrain I envisioned for the completed project.

Phase 3 - Building the game engine (+26h)

I thought for a while about the structure I wanted to build to enable the minimal set of features I needed as well as the future expansion I expected to do, and settled on a design. I have a core game engine class which manages all of the details of the map, actions, and units. Public methods allow for querying information and requesting action. In the future I expect to add a layer between the requests and the engine to allow for replay functionality, and this slightly constrained the design. I decided to build a set of data structures to provide properties of the different resources / buildings / units / construction tasks in the game, and I created that array of data and functions to lookup the reference structure for the different types. I built a game engine tick system and hooked it up to the game update, so every frame it may tick the game state forward, making progress on active tasks and updating any active units. At this point the game was mostly functionally there, but needed UI to be able to do anything.

Phase 4 - Building UI (+39h)

I realized that the deadline was starting to get pretty close... But some sort of UI was pretty important. I built a few more icons for game resources, and various rendering code for the variety of panels that are needed to show what a tile is, what things you can build/research, what tasks are in the queue and their progress level. And of course some time was spent polishing obvious errors I saw as I was throwing things together.

Phase 5 - The mad dash to the finish (+43h)

I was sufficiently satisified with the UI to proceed, and pathfinding was the last major obstacle to getting the game to a point where it was playable. I built some map support code to tell me which transitions between edges were passible, and an A* system to produce a path through the tiles. Then I produced sub-paths within each tile to lead the unit to its final destination. Implementing unit spawning and rendering went pretty quickly but after fixing a few last bugs with the system, I encountered the +48 hour deadline, and was unable to get to work on the gameplay features

Post-LD

Since LudumDare ended, I have spent (so far) 3 hours more working on my game, and so far have already implemented resource harvesting, attacking and destroying buildings, and building new structures. So, things were pretty close, if I had just a bit more time I could potentialy have produced a winnable game, though still far short from my original vision.

Time management

I have built some tools to monitor where my time goes, and below is some data from the the LudumDare 38 compo time range LD38_Timeusage.PNG Full Size Image

Report for time range 4/21/2017 6:00:00 PM - 4/23/2017 6:00:00 PM
Time on record: 48.00h
Screen On Time: 48.00h (100.0%)
Active Time: 28.49h (59.4%)

Visual Studio: 19.70h (69.12%)
LD38.exe: 1.72h (6.04%)
Chrome: 1.27h (4.45%)
Photoshop: 1.25h (4.39%)
Edge: 0.97h (3.42%)
OneNote: 0.67h (2.34%)
mIRC: 0.61h (2.13%)

Overall, I think I did pretty well with time management. I have approximately 24 hours of interactive time with visual studio / the game / photoshop / onenote (Interactive time is actively using the mouse or keyboard within ~5 seconds). I did manage to oversleep on Friday night, should have set an alarm. Yeah, I can probably do better, but I'm pretty happy with this.

Conclusions

It's been about 8 years since the last time I participated in a Ludum dare... My biggest mistake was overconfidence and thinking that I had the right mental state and discipline to build a game supremely fast. I would have got much further if I had focused less on graphics and polish and charged ahead with the game engine and gameplay as soon as possible. Funnily enough some of my friends even told me this but I didn't beleive them at the time, I felt that there was sufficient time to engineer and polish the things in the order that I was doing them. So next time my goal will be to have something playable by +24h in, and to prioritize that above all else.

One other thing I'd like to do is try to think about the game differently, rather than trying to form a full game concept and then charge forward towards it - While that's fun and can work pretty well for longer duration projects, it really doesn't work well in an LD competition. The thing I hope I remember for next time is, don't do that. Instead try to pick out game mechanics that relate to the theme (or just arbitrarily, if the theme is no help), and try to find an interesting concept by merging some mechanics.

Anyway, it was great fun - Hope this write-up was interesting, and I will certainly be back in 4 months for the next LD :)