Colony XG-29 is a strategy and resource management game where you take on managing a fledging human colony on an outer rim planet. It was developed solo in 72 hours using C# and Monogame.

Details and download link
Here I’d like to talk about the design process, what went well, and challenges I encountered.
I am quite verbose. So to save your scroll wheel on the main page, everything is below the fold.
Theme
I’m pretty bad at predicting the final theme. Like the last LD, I had barely thought about either of these themes in advance. It took around 2 seconds to rule out two button controls. Then it took around 2 hours of brainstorming to settle on a direction for growing, which was too much time.
Initial Designs
“Why not both?”
I did come into the LD hoping to make something turn based and mechanic heavy. That probably meant either a TBS or a card game. I don’t know what happened, but I must have had an aneurysm because for some reason I thought “why not both?”.
The original design idea was to grow a colony of settlers using cards to place buildings and perform actions. I didn’t have a really good sense for how the game would play out. I think I was expecting the cards to be a secondary mechanic for the turn based unit and building management.
One of the first major decisions was setting. A space colony seemed to make a little more sense than a historic or fantasy setting. Having some sort of abstract stockpile of things that could be used on demand didn’t seem to fit those settings.

Development
“Hexes are future-y”
I have written a lot of engine and other game code over the years with C# and Monogame/XNA. Other than my core engine, I pulled in some of the card rendering and basic interaction code I used in mini-LD 60 (but then ended up rewriting a lot of it). I also have a bunch of code to support a hex grid with structures, rendering, and camera controls. Going into the LD, I didn’t really want to reuse the hex rendering logic since I’ve used it for several projects and it’s a bit of a beast, but hexes are future-y and fit the theme. Eventually I was also able to crib some of the tutorial system from LD 33.
That all makes it sound like I just had smash a bunch of bits together and call it a day, but I definitely wrote more new code this LD than any previous one. Wiring up the hex grid rendering code to the point where it showed terrain took almost all of Friday evening, if that’s any indication.
I wasn’t really sure how you would select or generate cards. I knew I wanted some sort of pack opening mechanic integrated somehow. While trying to think about how it would work during normal gameplay, I hit upon the initial drafting mechanic. It fit really nicely with the theme as like selecting supplies for a space ship. As soon as I had terrain rendering, I switched gears and implemented the card rendering and built out the initial card drafting screen because it made a good simple test.

After hooking up some basic cards on the map and the resource system, I started to get an inkling that I was just building a turn based, single player, Offworld Trading Company. I really wanted to differentiate the game. I had originally thought about military units fighting off aliens as sort of being a primary component of the game, but wrote it off for time as things were dragging on. The game needed something more, so I put in the aliens and built up the combat and AI. Supporting direct unit control for player units was going to take too much time. Instead I was planning on having turret-based defenses, but once I had the units in it was easier to just drop one in as owned by the player with some small AI tweaks. I had the units pop back to your deck when idle because I didn’t know what else to do with them. With that hooked up, I never felt like I needed to circle back to add defense turrets. Automating the units after placement gave the game more movement, kept it from dragging with micromanagement, and meant you didn’t have to fill the board with a giant turret ring.
I knew I needed a way to get more cards from very early on. I wired up the black market, and set up a system for card pack vendors. That system really highlighted just how few cards there were. You’d open a pack, and get the same cards every time. The problem was that I was already behind schedule. The goal I’ve had with LDs is to have a complete and playable game Saturday night. That leaves Sunday for testing, audio, UI polishing, balance, etc. I didn’t hit that point until Sunday afternoon and the last four hours of the compo window was a mad dash of building a bunch of cards to fill in packs and blank spots in the economy.
This game continues my tradition of terrible names created at the literal last seconds 

Compo -> Jam
“Making a better game won out”
It was and incredibly frantic weekend, and I didn’t have time for audio, but I did it! I made a compo game on time! One little problem. I hadn’t actually played the game. It ran and the features mostly worked, but I had ran out of time before playing it with all the debug cheats off. After some food, some errands, and some relaxing, I reevaluated what I had made. It was technically a complete game, but it wasn’t fun.
I had to make a tough call. I had created a game within the compo restraints, but I was very disappointed with it. I had taken Monday off as an LD recovery day, so I had flexibility. In the end, making a better game won out.
“Why does this tiny colony need this many hospitals?”
There were a lot of problems with the compo version.
- You very quickly had more resources than you knew what to do with – This is still a problem to some extent, but it was worse in the initial version. You could not practically spend your resources fast enough. To address this, I created reusable cards like the DarkNet Channel to act as money sinks, and created disasters to eat chunks of your reserves. I strongly considered adding resource caps that you needed to expand, but ran out of time.
- You had to wait too long for population to grow and the last 200 citizens took ages – I added in the random chance for colonists to arrive, and added the Offworld Shuttle as both a population pump an money sink. I also magnified the effect of happiness, which hadn’t increased population enough in the late game
- You constantly had a ton of dead cards in your hand – one of the problems is that if you bought a pack of cards, you got all of them. If you wanted a specific card, you’d get several duds as well. I added in the resell mechanic, the direct vendor purchase, and the recycling card to help keep your hands small.
- The aliens were only a thread because you had so many useless cards in your deck you had to skip to get to a military unit – I strengthened some of the aliens, and increased the costs of the military units
- Buildings could go anywhere. There was no reason to not just plonk buildings down wherever – I wish I had time for more of these, but I added the Network Hub and changed to Vidplex to change based on the surrounding buildings.
- There wasn’t enough variety – Originally the only event you could get was the black market. I added random disasters, colonists, and the direct sale screens as alternatives. I did make a handful of new cards as well, but I didn’t want to flood the game with slight variations on the same cards, they needed to be unique.
- You spent more time reading tooltips than looking at the card – I improved some of the card-mouse interactions, and specifically added the hover effect that pops cards in hand forward.
- Happiness was pointless after a few dozen turns, you really had to let a shortage get out of hand to offset the happiness from buildings – this took a lot of thinking. Futzing with the formulas would either make the early game too difficult, or it was confusing. Eventually I settled on the adding the health mechanic. After a certain grace period, the illness value periodically starts ticking up by one, and every turn the population goes down by the illness number. That doesn’t make a ton of sense if you stop to think about it (why does this tiny colony need this many hospitals?), but it solves several problems. It can have significant detrimental effects if you don’t deal with it, health buildings are a resource sink, and it acts as a sort of ticking clock beyond the aliens.
- You didn’t know when the aliens were coming, so you had to play zoomed out and constantly scan around for alien movement to deploy your units – I added the notification queue so you can see them coming.
At final count, I had 7 units, 24 buildings, and 38 cards. For as much time as I spent on them that feels like such a small number.
What went well?
I really feel like I nailed the content workflows this time. I figured out a way to skip one step to import content with monogame, but I also saved tons of time ignoring the XML-driven content system I’ve used in past games. Instead I focused on generating all the card rules and text in code. I’ve picked up great C# techniques since the last LD that were really clutch. The last time I tried game data via code, it meant constructors with tons of parameters and/or lots of switch statements and special cases all over, but now I can make this so succinct. This is all it took to get a card in game:

That’s so much simpler than the XML deserialization nonsense I had been dealing with, and delegates make special cases so much cleaner.
I took good advantage of C#’s async feature. It was very convenient for the card playing logic. It made it really easy to create a code flow like click -> wait for animation to complete -> prompt for a cell on the map -> actually play the card. No need for a bunch of state variables or deep callback chains, it’s all one code path. (FYI: If you’re thinking of going down this route with Monogame, by default your tasks may land on a second thread, which can cause unexpected race conditions. You can fix this by rolling your own SynchronizationContext)
I found a bug in my engine that has been there for probably ~5 years. This is an improvement over last LD, where I ran into a lot of issues with the control layout and interaction code that led to significant rewrites afterwards.
What went poorly?
“I should have known better.”
I should have known better. Mini-LD 60 was a card game, and it ate so much time. Building a turn based strategy game on top of that was madness from the very beginning. I never had time to stop and consider how much work I had set myself up to do, I just kept going. Not submitting for compo was disappointing, and this was ultimately the cause.
Even with an extra day, I didn’t really have enough time for audio. I just couldn’t prioritize it over making the game playable and intuitive. Making music was out of the question, but some simple sound effects would go a long way. In retrospect, I probably could have reused some old audio with the jam rules, but wiring it up and mixing it still takes some time.
Cards have a rarity that impacts how often you see them in packs, but you basically can’t tell and it doesn’t matter. Every pack has a rare, but since there are so few, they’re sometimes practically more common than other common cards.
There isn’t much of a reason to explore once you’ve found the three basic resources.
Future plans
After the extra day of balancing, I’m super chuffed about this game. I’ve played through it a few times after submission just for fun, which I haven’t done for an LD game in a while. I’ve got tons of ideas for cards and mechanics. I really do want to see this thing through. Art will be a very large challenge, though. Programmer art is not a cohesive style. I’m thinking about clean and solid colors, maybe something like this?

[looks like I didn’t put a shadow under that smokestack… whoops]