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
Continue reading “Pseudorandomness”
Math.random() to generate everything, which gives random numbers based on some internal system clock. Now, I’ve replaced that with a pseudorandom algorithm.
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”
Continue reading “A Tick System That Doesn’t Suck”
Date.now() function, which returns the number of milliseconds since Jan 1, 1970, for whatever reason. That’s a start.
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 0.3.2.0 here.
I haven’t posted anything since “The Thirty Days of Ladon,” which was a few months ago. That thirty-day challenge went so well and resulted in so much progress that I really started to feel like this is a project I could finish.
Continue reading “The Six Months 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 0.3.0.0.
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.
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”