DevLog 000 — Introduction

Martin Sikora
badgermakesagame
Published in
2 min readMay 13, 2023

This is the first entry in my personal blog where I want to document my journey developing my own game.

My vision is to make a strategy rogue-like hex-based and turn-based game where the world lives on its own. A game where the same persistent world exists and reacts to player’s decisions that might have unforeseen consequences.

Well, I don’t have an exact concept of how the gameplay should be yet. But I think I know how I want to think and feel when playing it.

A few technical notes that are, I believe, final:

  • The game is going to be 2D where the main view will be a top-down hex map. Graphics will be very simple but I’m expecting complex UI.
  • I’m developing the game in Angular web framework in Typescript. For all rendering I’m using HTML Canvas element via PixiJS package. For calculations on a hex map I’m using flauwekeul/honeycomb package.
  • To make creating UIs easier I’m using Angular CDK and Tailwind packages.
  • The game will be wrapped with Electron for desktop and Ionic (probably) for mobile environments.
  • I’m not too much worried about performance because Chromium and JavaScript runtimes are very efficient these days. On the top of that I can use Web Workers for parallel computing and even offscreen canvas rendering.

Since the world generation and simulation is going to be the core of the game I’m probably going to spend a lot of time developing just that. I know I’ll need a pretty sophisticated UI to test the simulation to make sure it behaves predictably.

The first image of the world generator UI

The generator is already decoupled from the canvas map component and both support plugins. I hope this way I can keep the code clean and easy to maintain. Each menu item is defined by a plugin and can be turned on/off using Angular’s DI.

The next step right now is to make some tooling code to highlight/draw things on the map like neighbouring hexes, hex coordinates or hex boundaries. After that I can finally start with some world generation.

--

--