The Void

Minimalist casual strategy game where you defend a base against an everpressing void.

The Void has been my off and on passion project for the last year. It began with my Hexagonal Pattern Generator that generated colorful maps.

Through trial and error, constant iteration, and challenging myself I have learned alot about programming, design, and UX/UI through this project.

UI/UX

User Experience

A core focus of mine, while working on a casual mobile game, has been the user experience. I want things to be clear and satisfying. I love the idea of creating a game that is fun just to interact with regardless of mechanics or story. Some of my favorite games, Minecraft, Don't Starve, League of Legends, Hades, are all fun just to mess around with. They have satisfying controls and juicy visuals that just make them a joy to play with as a toy.

For The Void, I put a major amount of my time towards making the primary action the player takes, building on tiles, as satisfying as possible. First, there is clear indication of what tiles can be built on, with a bright and moving visual outline. Then, when clicked there is immediate visual feedback as the green outline shrinks smoothly and a black/yellow construction outline grows, communicating without explanation that the tile is under construction. Then the process of meeps beautifully flopping toward the tile, carrying resources, and dropping them off is all clear and fun to watch. And Finally, as the tile has resources delivered, each creates a section of the building, clearly showing the progress towards completing the new building.

Visual Design/User Interface

The visual design of the void is made to communicate. Simple icons, unique shapes, satisfying motions, and colorblind distinct colors help engage and teach almost automatically. I made it a goal of mine to lift the learning burden as much as possible off the players shoulders. For example I was able to avoid cluttering the game with onscreen number popups by showing resources as physical pips. You can intuitively see if you have alot of resources if your clump or resources is large. Also you can track how quickly you are producing with a hexagonal progress bar that moves around producing tiles, rather than having a countdown number or not communicating that info at all.

I also made the buttons fit the aesthetics of the game as hexagonal buttons that fit into a grid that not only looks clean, but helps communicate which buildings are similar and what's more complex, based on which buttons are grouped together and which are higher up.

Please continue to the read more about my process designing the main menu for the void.

Go To: Menu Design On The Void

Meep workers moving to complete tasks
Meep workers moving to complete tasks
opening sequence of The Void
opening sequence of The Void

Design

Casual Strategy

Casual strategy is an incredibly interesting genre to design a game in. There is a very careful balance between simplicity and complexity that demands elegant interlaced systems. I have to make sure The Void can be learned quickly to reach a mobile market; while also making sure there is real meat to the game that makes it worth opening the app again. The best way to achieve this is with very purposeful design decisions that focus on generating emergent complexity. In which the simple systems I design can interact in ways that go beyond the simple rules that I am defining, leading to complex strategic decisions even from a simple and small set of player choices.

Tynan Sylvester is a major role model. His perspective on the fundamental goal of the designer I have taken to heart.

“The designer's real goal is to enrich the player's internal experiences. That goal is harder to achieve, and it's damned difficult to measure. But it's the truth. And pursuing that truth makes your designs smaller, simpler, more focused, and more elegant than they could ever get by strategy counting.” Tynan Sylvester, Designing Games

Design Challenges and Decisions

A major design change I made while working on The Void was taking the game from 4 to 3 resources. I originally planned for the game to have 4 resources somewhat arbitrarily. However, in my process of iteration I often look back at past decisions to check if they are purposeful or just based on assumptions/genre baggage(Something that is standard/feels right because other games have it without looking at the reason why its in MY game specifically). And when looking at 4 resources, I saw that each did not serve a unique role. Each could really just be called "currency 1,2,3, and 4" and it would not change anything.

So, recognizing the problem, I asked many questions, why do I have resources in this game? What is the purpose of resources? how should each resource be acquired? what should each resource be used for? what role does each resource serve? how can I get the player to feel that these resources have value? This is my favorite design tool. It really helps me focus on details, and ensure that my decisions are purposeful and fully thought out.

I reimplemented the resource system in the game to have just 3 resources each with unique roles. Basic energy is easy to get but dependant on expanding the base. Flux is very useful for defense but requires reaching mineable tiles out in the map, and has a limited supply. Finally Ether is powerful for endgame, but can only be acquired by fighting against the void.

Each resource feels impactful, has a unique purpose, and a seperate path towards acquiring it. Together this makes the resource system of the game elegant, just 3, but it can lead to many interesting scenarios and decisions inorder to acquire and use them.

Programming

Meeps

Meeps are the triangular workers that complete tasks to build, transport, and defend. They rotate along their edges to move around the grid. Although a simple shape entirely controlled by code, they move in a natural--pulled by gravity way--that gives them a personality and cuteness. I really wanted the player to care about their workers as it connects them emotionally to defending their little base. While my game does not have characters, it still can offer a story and emotional experience through personification of their little buddies. This all comes together through programming.

Pathfinding

In order for meeps to reach their tasks they have to get from point A to B, using their triangular flopping movement, without running into obstacles, or other meeps. With these unique design requirements in mind, I made my own pathfinding algorithm based on A*.

The pathfinding system works by treating each hexagonal tile as a mini roundabout. Meeps rotate clockwise around each hex, until they reach the side of the tile that they need to go to. This ensures that meeps will never have a head on collision trying to go opposite directions even when there are many meeps moving.

Job Allocation

In order to build up the players base and defend against the encroaching void, the meeps complete jobs: transporting resources, building buildings, fighting creeps. This demanded the creation of a complex job allocation and completion system. It finds the nearest available meep and resource to the destination and generates a string of commands to the meep. Move, pick up, go to sleep, etc are all set as the job is assigned. If any step goes wrong(destination becomes unreachable, meep dies, etc) it dynamically handles the change. The system I've created is expandable and elegant it can handle any type of job I would want to create while catching any errors.

Working on a system like this has been an amazing learning experience, as it gave me so much perspective on other strategy worker focused games(Rimworld, AOE2). It's a problem that demands a complex yet elegant system, which is a painful joy to put together on my own.