World Generation, Biomes, and Core Systems

Here’s what I’ve been working on since the last post.

World Generation



I finally got the world generation up and running. I utilized an algorithm I had previously used from GitHub. This algorithm calculates moisture, heat, and elevation to determine the distribution of biomes. It’s not ground-breaking or anything. It just works.

Biome Tables

To define different planet types and their available biomes, I set up biome tables using scriptable objects. But, it was challenging to identify the biomes in the table since the object names weren’t visible. After some dicking around, I found a hacky way to change the icon of the scriptable objects, making it much easier to understand the table.

Local Maps

For individual local maps within the game, I implemented the wave function collapse technique. I had used this method before when I was making my roguelike tutorial. Essentially, I saved training data to disk and reused it at runtime, resulting in varied and interesting maps. Here’s a long-ass video where I set it up:

AI and Dijkstra Maps

I added AI and learned how to use Dijkstra maps. It was a learning experience, but eventually I wrapped my head around it, and I’m pretty happy with it so far. I used GoRogue’s GoalMap implementation to calculate the maps and added logic to handle many goals at once.

Factions and Relationship System

I set up factions and a relationship system. This system keeps track of the relationships between different entities — defining friends and enemies based on faction affiliations. It’s an essential component for creating dynamic interactions within the game.

Friend then foe

Stats, Skills, Abilities, and Attributes

I dedicated a significant amount of time to developing the core systems of the game. I added stats, skills, abilities, and attributes, all managed through scriptable objects. This approach greatly reduced the amount of code required. Plus, it was kind of a fun challenge.

Customizable Ability Bar

One of the more challenging tasks was creating a customizable ability bar with support for both mouse and keyboard input. It was a pain in the ass, but the end result turned out alright.

Things that don’t deserve a paragraph

  • Added a message log
  • Added a save system
  • Added melee and ranged combat
  • Added Basic UI StuffTM like player’s name and a health bar

Next Steps

Gonna add items and equipment into the game next. This will involve designing various items, creating an inventory system, and handling the mechanics associated with equipping and using different gear.


Thanks for reading and following along with my progress.


Note: All graphics in this post are placeholders and are not representative of the final product.