Stuck in a loop ♻️
Hey there!
Tim the RoboToad here again to share an update on what I've been up to over the past month. I've covered a lot of ground working on my upcoming sci-fi game and want to share a couple of focused updates on two areas of interest.
The loop, the loop, the loop is on fire! 🔥
First, it's all about the loop! A fundamental component of games is their "core game loop" which is basically just answering the question: "What captivating activities are players engaging in over and over again as they progress from the beginning of the game to the end?" In my case, the core loop is basically:
You descend to the planet -> roam around the landing site collecting data and salvage -> return to base (the ship) -> sell data for money -> combine salvage with money to upgrade and unlock new abilities -> head back down to the planet and do it all over again.
Of course, there's a bunch of complexity, intrigue, and sub-loops hidden behind that terse description, but stubbing out that core loop is currently my main goal. To that end, I recently created a "home base" in the form of a ship orbiting the abandoned colony world. The colony world is where you'll spend most of your time in the game loop, and the ship gives you a reprieve from the harsh environments planet-side. At the moment, the ship includes three interactable areas: a communications terminal to interact with other non-player characters, a navigation terminal where you'll choose your next landing site, and a trusty landing craft that will convey you safely to the planet's surface.

Communications Terminal

Navigation Terminal

Landing Craft
Landing Craft, but Spinning!
Now who doesn't love a good gif? This one was too good not to share here.

A walk in the park 🏞️
Now that I have the ship in a functional state where you can receive quests, select a landing site, and collect rewards (in the form of sweet, sweet cash) for your efforts, the next step is to get the landing sites set up. This includes the wider landscape, buildings to explore, and interactable items to engage with. Setting, intrigue, interaction!
For the landscapes, I'm trying to keep things interesting by leveraging procedural generation to create unique terrain features for every landing site. At a high level, it works like this:
- First you create a flat plane with many points arranged in a grid. Imagine a checkerboard where the corners of each square are points that you could raise or lower to create mountain peaks or valleys.
- Then, you generate a black and white noise texture and capture the color for each pixel in the image as a number from 0 to 1. For our map, 0s would be the "low" terrain areas and the 1s would be the "high" areas such as mountain peaks.
- Once you have your "map" of height values collected from the noise texture, you apply those to your flat plane to raise or lower each of the points on the checkerboard. The result is a natural-looking landscape with rolling hills and valleys.

Raw Noise Texture

Applied Noise Texture

Perspective View
As a secondary step, I also use those height values to create "regions" where different landscape features could be placed. For example, at the higher points, I could add rocky cliffs. And at the lower points, you find grass, trees, and other flora. Putting this all together gives us natural, flowing landscapes, along with organic clustering of trees, rocks, and other features that would otherwise have to be placed by hand.
Next up: procedurally generated colony sites. This is where you'll spend most of your time during the core game loop and I want to make sure these areas are full of intrigue and charisma. So I'll be creating modular building parts to keep the buildings unique, abandoned equipment for salvageable resources, and buggy terminals to collect raw data from. More to come on that in the next transmission!
Until next time,
- Tim the RoboToad
P.S. - Just for fun, here's a couple of renders showing a concept landing craft that I ended up not using. The idea I was working with had the player descending to the planet in the same ship they occupied in orbit. In practice I couldn't balance a big enough interior space with a small enough ship to fit in the landing zones.

Front View

Back View