top of page

Sweep Serf

Role
Programmer
Genre
Puzzle Platformer

A 2D platformer where players explore underground ruins while avoiding minesweeper-like obstacles.

Tools
Godot, Aseprite
Game

When I first thought of Sweep Serf I wanted to make a game that was the opposite of "Jump King". So I made a game about a peasant (serf) that went down instead of up. To make the act of going down challenging I decided to have players dig down while avoiding minesweeper mines.


Player Controller

Since Sweep Serf is a platformer, it was important for me that the controls be tight since one missed input could result in a game over. In order to achieve this, I implemented the player controller using a state machine. This allows me to be able to closely control what state a player can be in at a given moment and also expose per-state properties that a game designer could use to tune the balancing without having to modify code.


Map System

In the game, players will load at the top of a room that has mines with the objective of digging through X amount of layers while avoiding mines.

To achieve this I:

  • Leveraged Godot's TileMapLayers to create destructible terrain that adhered to tile map rules

  • Created a manager that was responsible for placing mines according to difficulty and using a custom algorithm for placing blocks in a way that was challenging but solvable

  • Used events to update the visuals of the map in a performant way.


Inventory System

One of the key differences between this game and conventional minesweeper is that players need to be adjacent to tiles in order to remove them or flag them. Since players could potentially get stuck in on solvable areas, one way I decided to resolve this issue was by adding items that players could use to interact with the board in new ways.

I implemented items using resources since they could be created and modified in editor. This was ideal because I only needed one copy of the item's definition and I could easily drag and drop references to items in other nodes that used them like NPCs, Chests, Drop Tables, etc.


Menu System

I wrote a custom menu system capable of handling both mouse/keyboard and game pad inputs and gracefully transferring focus when dynamically spawning various UI elements.

bottom of page