About standardcombo


Ludum Dare 36

standardcombo's Trophies

standardcombo's Archive

Top Down Game Development With Pyramid Builder

Posted by
Sunday, September 4th, 2016 11:21 am

Friday night I asked my wife what was the first thing that came to her mind when I said “Ancient Technology”. She replied “pyramids”, and I slept on it. Saturday morning at 5am I woke up with an idea for a God-simulation game where the day and night cycle is represented by the Sun and Moon and you summon workers to build a pyramid. At night ghosts come to steal hearts from the houses and you have to defend them with well-positioned pussycats. Sort of a tower defense.

This is my first Ludum Dare and I had never made a complete game in such a short time. To achieve the crazy deadline I took an extreme top-down approach. Instead of starting, as usual, from the core gameplay and working up to the finished product, I would specify everything, type all the artwork, including animations and logo, and at the end piece it together and hope for the best. I also borrowed the rendering layer and input system from Stone Story to solve lots of issues with Ascii art in an engine like Unity.

With a rough game idea in mind I typed up the following concept piece and posted it to twitter and my dev log, to psychologically oblige me to complete the game. In addition to the visual style, this step develops the perspective, overall size, layout and specific character designs.

Saturday morning was spent writing the game design specs (see end of post). It was sad, but clear: the ghosts and cats would have to go. There wasn’t enough time for such complexity. I aim to make games that can be played without instructions, and this design direction had too many open questions. Building the pyramid by itself could be enjoyable, if balanced correctly, and people can compete to see who builds it in the least amount of days. Another obvious thing was that the game required audio and I wouldn’t have enough time to make it myself. My twitter post had garnered some interest, including from Bibiki, a musician and sound designer who agreed to contribute to the project.

The rest of Saturday was spent typing all the art and animations and creating prefabs for them in the project. This is the most fun part of development and time flies fast. The pyramid itself took about 4 hours to make in a way that it would progress brick-by-brick. I’ve tried a few tools for doing ascii art, but if you think of ascii as text (which it is) instead of pixels, nothing beats the speed of a plain text editor. And there is always copy/paste and find/replace.

Sunday was an intense coding marathon piecing it all together.

I took a break to do some screen size calculations and see which fonts would be needed. The rendering system automatically picks the best font to fit your screen or however you resize the window. I already had 7×12 and 16×29 fonts from Stone Story, but Pyramid Builder’s grid size is higher (116×40) and so a 14×25 font was needed to fill the mid range of screen sizes when in full screen. I contacted Chris Early, pixel-font master, and he cranked it out in a second.

By the end of the day my arms were spent but the game was done, and the top-down approach worked. I realize Pyramid Builder is a bit of a love/hate game. Some people get it, and others don’t. That’s ok.

This was totally worth it and I would do it again. Things I would add to the game would be different pyramid designs, of varying difficulty, and a histogram at the end, showing how the time you took compares to other players. There still may be space for a ghost/mummy that at night rises from a tomb in the middle and destroys your houses, justifying a narrative as to why you are sealing it with a pyramid. I also designed a Bell you can place on the beach and when a boat passes by it, it calls the workers to the pier, so you have to figure out the optimal position for it. There could be house upgrades which specialize the workers into better farmers or stone pushers.

Ludum Dare page

The Game Design (as seen Saturday afternoon)

[cache: storing page]