Utopic Map Generation by Thomas Evans

What’s New?

A pretty big change for the project recently has been with the addition of a customisation randomly generated map. In previous versions the island have had to be entirely manually placed, but that is a thing of the past now.

Following Red Blob Game’s rundown of creating terrain maps from noise (for the most part) I’ve managed to use the material editor and render targets in UE4 to make a customisable terrain generation tool that could be used for a variety of maps (not necessarily Hexagonal ones).

The Noise Material

Taking in the local position with a user defined offset parameter, I combine 3 different frequencies of Simplex Noise. These frequencies are then multiplied together and then clamped to between 0-5 (as I have 5 steps of terrain height for my tiles)

The user can also decided to restrict the terrain to be contained as an island. Admittedly this is somewhere where my mathematical knowledge let me down, as I don’t currently understand quite how to reshape the terrain towards the centre as described in the Red Blob Games page. My solution to that was to simply mask out the terrain with a circular gradient mask with a variable width and density.

The Map Generation Manager

The manager itself is quite simple; it creates an instance of the noise material with the user’s settings, and renders it to a render target. This render target can then be accessed by all the tiles individually. Although the tiles themselves each get their own height, it’s actually the manager that holds the maths for obtaining the heights from the render target.

The Noise is projected to a render target

Map gen gets the furthest tiles in X and Y

Each tile asks for it’s new height

The map gen reads the pixel at the correct location based on the range from low and high X/Y

Tile sets it’s new height from the value of the pixel at the correct location.


I’ll still need to Fine tune the limits to always be within something playable, but the base is there. Next up for the map gen will be

  • More user control as to how the heights are banded

  • Terrain features and resources being generated

  • Potential Biomes.

Returning to Utopic by Thomas Evans

After returning to Utopic after a pretty long hiatus, I’ve had a change of heart on quite a few of the game’s core systems.

Progression System

Since returning, I’ve decided to change how the resources work to try and give the player a better sense of progression.

Previously every tile improvement simply cost some amount of 3 main resources:

  • Population

  • Gold

  • Production

This meant that the only prohibiting factor for creating new improvements was simply time. Currently my mind has changed on this, and I now want to add in additional resources and make each improvement more specialised.

Here is how the current improvement tree looks.

Improvement Tree.PNG
 

Art

With the new resources and improvement upgrades, I took a second pass at the art I had made originally. This included making new meshes for:

  • Stone Resource

  • Metal Resource

  • Logging Camps

  • Tribal Village

  • Tribal Farm

I also made some changes to the old forest meshes.

 

UI Conception

Although I like the old UI concepts, I had some trouble in finding a way to create the reverse transparency effect on the buttons. I also felt like having the new resources in the old UI would maybe make it too cramped, as the resource count has jumped from 3 to 10.

So I’ve gone back to the drawing board and I’m working on making the UI as simple and unobtrusive as possible. Below are a couple of iterations I’ve been working on.

 

Misc changes

To get ready for implementing new systems I’ve had to change a couple old things as well, some of which I’ll cover more in depth in another post.

  • Tile visual interaction

  • Colouring has been changed to be more material based, rather than PostProcess based to make the lighting shift to nighttime easier.

  • Movement speed and camera boom length have been changed to accommodate larger play space.

  • Design Doc overhaul.