CONTEXT

Cathedral Builder is my first game. I've always been interested in game development and have a decent understanding of how games work, but I never actually tried creating one myself until the 2023 JS13KGAMES challenge. I discovered this competition by chance in January 2023 and set myself the goal of submitting a solid entry by the deadline.

BEFORE THE JAM

As a beginner, I started researching game architecture, especially in an HTML5 & JavaScript context. I read numerous tutorials and experimented with external libraries like Phaser and Pixi. However, I quickly realized I needed to develop my own mini game engine for two main reasons:

  1. It's fun and challenging
  2. I like to understand and control every single line of code

I began working on my MGE (Mini Game Engine) project in April 2023 during Easter holidays. Within one week, I had a first functional version with all the features I wanted (game loop, mouse and keyboard inputs, sprites, etc.) except sound.

I then dove into learning the Web Audio API and created a simple synthesizer and basic sequencer. The music component turned out to be the most challenging part to implement, despite having some prior knowledge of sound synthesis

Finally, I created a small Python script for code minification.

AUGUST 13TH - AUGUST 20TH: THEME REVEAL AND CONCEPT

When the big day arrived, I was well-prepared with my mini game engine ready and plenty of energy to start working.

I loved this year's theme "13th Century" because it's concrete and tangible—unlike some previous themes like "404", "Back", or "Offline" which seemed more abstract and challenging. Within an hour of the theme announcement, I knew I wanted to create a game about cathedral construction. I wanted to highlight something positive from this historical period, and I believe cathedral building represents one of humanity's greatest achievements.

I've visited many cathedrals throughout my life as a tourist, but I'd never really examined them closely or understood how they were built. So I began researching Gothic art and cathedral architecture. I spent hours online trying to understand cathedral structures and how it's possible to build so high using only stones. I learned an incredible amount and will now see cathedrals with completely different eyes!


However, having the concept and technical knowledge wasn't enough. I still had to figure out: What will my game look like? Will it be a clicker game, a strategy game, a puzzle? How will the player interact and what will they see?

This turned out to be far more difficult than I anticipated. I hadn't expected how challenging game design and gameplay definition would be. I spent an entire week just sketching in my notebook, trying different scenarios, exploring various gameplay mechanics—all without writing a single line of code.

In the end, I chose to create a clicker game with a simple workflow: extract rock → cut stone → build. Players would be able to upgrade each element with gold, and I'd include random bonuses and auto-click buttons.

In my vision, the fun part for players would be watching the cathedral being built progressively. Therefore, I dedicated a significant portion of the project to cathedral rendering.

AUGUST 21ST - SEPTEMBRE 10TH: DEVELOPMENT TIME!

After initializing the project, I started building a mini 3D rendering engine based on vanishing point perspective. It renders cubes (the stones of our cathedral) at given positions (x, y, z). It's a quick and dirty solution, but it gets the job done!

Next, I worked on the cathedral's structure. From a technical standpoint, it's quite simple: the structure is stored stone-by-stone in an array, and there's a buildStones function that draws the next "x" stones. Stones are rendered in 4 offline canvases representing different player viewpoints (depths: 110, 90, 50, and 0). The appropriate canvas (depending on how many stones have been built) is then drawn onto the main game canvas.

The most difficult part of development was populating the structure array in the defineStructure function. To keep my ideas organized, I drew the cathedral layout in several Excel grids.

CONCLUSION

I'm really proud to have released something for this challenge!

What Went Well

I learned an enormous amount during the game jam and had a lot of fun. The community is fantastic, and I enjoyed following other developers' progress in the Slack chat.

What Was Challenging

On the other hand, I didn't anticipate how difficult game design would be (in my opinion, it's even harder than coding itself) or the number of late nights I'd spend working during those 4 weeks.

LINKS

Play (and give some stars if you want) on itch.io

Play game entry on js13kgames

Have a look to the source code on github