Why not three.js

The first slice lived in a browser tab on three.js. Then the game had other plans, so does the engine.

Godot, full frame

The first prototype

D20 started as a real-time action game in a browser tab, third person, swinging swords, with the boss waiting at the end. It came out of free low poly asset packs from the legendary Quaternius.

Seeing a lot of praise for Opus 5.5 out there, I just wanted to see what it can cook and the fastest engine to kick off was three.js due to the massive public JavaScript code base available out there.

I am not by any means a game developer, I am only a DevOps engineer, with no experience of 3D or animation. While I like pretty things, the fast loop matters more to me than fancy engines I’m used to work with back in my corporate life like Unreal.

Like Geralt of Rivia once said “It's a matter of the hand, not the steel it's holding.” So three.js sticks for now.

The three.js logo, a triangle made of smaller triangles, above its name and website, threejs.org.
27 Sep: three.js, where the first slice lived.
27 Sep: the three.js slice, a walk down the village road.
27 Sep: the three.js slice, real-time sword combat.

Then the game changed

Maybe I’m just getting old, I don’t feel like playing full blown action game anymore so here’s when the turn-based idea came in. I wanted to try something that involves planning and a bit more strategic.

Failing to plan is planning to fail

Since the goal was full CLI and headless development with fast iteration, as a DevOps engineer, this is just something I cannot let go of, the automation capability as that is how I like to work. No manual repetitive stuffs, only the fun meaningful decisions.

The logos of Tauri, Unity, Unreal Engine, Bevy and Godot in a row, with Godot circled in yellow and the rest dimmed.
27 Sep: Game engines selection.

My first game engine is actually Godot, I made some university student a simple game with it for some extra bucks, then from what I know ECS is really beneficial for game development, so Defold and Bevy pop up only it may not be suitable for my planned game mechanics.

Unity has some anti-consumer practices history so I’d steered away. Unreal is just not efficient enough to iterate. Even though I got tons of free assets there.

Since I do plan to release it on multiple platform natively, instead of just as web based games, why not do it properly this time. So the plan became a short Godot spike first, with a couple of pass or fail tests.

Two frames of the same village scene, the Godot version on top and the earlier three.js slice below it.
27 Sep: Godot on top, the three.js slice below.

The cel look made it across, and Godot became the engine’s the game will be built on, while the three.js slice stays in the archive as an art reference or the glorified tech demo it meant to be made in a single night sleep.

The Godot logo, a blue robot head, above its name and website, godotengine.org.
27 Sep: All hail the choosen one.

That’s a lot of plan and next one is to get the gameplay loop fun before the rest of the game, because a nice-looking test does not make a game yet, eh?

No comments yet