I’ve replaced the pure randomness in Ladon with pseudorandomness. If you’ve played it at all before now, you probably noticed that each time you played (or even just refreshed the page) the rocks were in a different place, the colors changed, and the resources you found were completely different. That’s because I was using plain old Math.random() to generate everything, which gives random numbers based on some internal system clock. Now, I’ve replaced that with a pseudorandom algorithm.

Continue reading “Pseudorandomness”

Building with Hexagons that Don’t Look like Hexagons

It’s no secret that the hexagon is the basic building block of pretty much everything in Ladon. The obvious easy choice would have been squares or cubes, but the world doesn’t need another Minecraft lookalike. Hexagons are a little tougher, as far as the math, but I find them a lot more interesting.

Continue reading “Building with Hexagons that Don’t Look like Hexagons”

A Tick System That Doesn’t Suck

Ticks are always difficult to get right. Everything in a game needs to move or animate at the right speed, and you need to know how many “ticks” have elapsed during each render frame in order to do that correctly. Javascript gives you the function, which returns the number of milliseconds since Jan 1, 1970, for whatever reason. That’s a start.

Continue reading “A Tick System That Doesn’t Suck”

Venturing Into the BabylonJS Community

I’ve been working a lot on Ladon but what I’ve been doing hasn’t gone into the game’s code, yet. I’ve been working on a new text system and discussing it over in the BabylonJS forum. The way I’ve been doing text up to now is just using the BabylonJS GUI controls, which is fine, but not very good for performance. So, I created a way to do efficient text, and I made it 3D. I think it looks clean, and it has almost zero impact on performance, even when updated on every render frame.

I did add a few minor visual updates, performance improvements, and a new graphics option on the menu, though.

Version here.

The Thirty Days of Ladon

Kari and I watched this TED Talk recently. The gist of it is to do something every day for thirty days. Her challenge to me was to work on Ladon for thirty days. So I did! I added something new to Ladon every day. The net result is that Ladon went from this to this. I’m really surprised and happy with the result of a month’s work. I added the pause menu, ship building, new tile types, mining, resource types, loading and saving, and some really significant performance improvements. Thanks, Kari.

Today is my first update after the thirty day challenge plus a week off, and it’s mostly just a code clean-up, but in honor of the month of progress, I’m bumping up the version to



I cleaned up some code, fixed some minor bugs, and improved performance a little more. With these changes, I think it’s safe to say that the “foundation” of the game is done. It’s time to start thinking about the bigger picture. I need to dig up all my old documents that I worked on years ago. I had worked out all the different weapons and upgrades I wanted, as well as the different enemies and bosses. This is a fun and challenging part of game design. It’s where the actual “game” starts to take shape.

Play it here.

Performance Fixed

I’m really happy that I was able to fix the performance issues that had been creeping into the game. It now runs at a steady 60 FPS even on my 10-year-old laptop. I added lots of performance measuring in the last release, and that combined with having all the old releases available made it possible to track down exactly the source of the slow-down. It turned out to be something totally unexpected — the text rendering.

As long as I don’t update the text on the screen more than a few times per second, performance is great. Before, I was updating it on every tick. This prompted me to do something I’ve been needing to do anyway, which is to separate things that need to be done on every tick from things that don’t. Text rendering, for example, can happen 3 times per second. I scaled collision testing back to about 20 times per second, as well, since it’s fairly expensive.

It’s running great and I’m really relieved. Give it a try here.


I’ve reached a point where performance is something I have to start watching. I have an older laptop that I sometimes use for development and I’ve seen the frame rate drop to 15 or so at times. That’s partially because it’s an old and slow laptop, partially because Firefox released a new version that really slowed things down, and partially because there’s starting to be a lot going on in each frame.

Continue reading “Performance”