Map modes
So far, I’ve only shown the Street View – the classic isometric view where the player watches events unfold between buildings and streets. But for a game like this, that’s not enough. You need a way to zoom out and see more of the city, especially when managing larger operations.
To solve this, I added two additional modes: Near Map and City Map views. Right now, there are two ways to switch between them – either by pressing the F key (conveniently next to WASD for map movement), or by navigating through the UI and clicking to zoom into specific areas of interest.
The Near Map view works like a tactical bird’s-eye view of a specific district. Say you’re gathering your crew in one part of town – this view helps you check if any police patrols or rival gangsters are nearby. From here, you can also spot moving NPCs, select buildings, and issue orders to rob, scout, or surveil.

The City Map mode is a much more zoomed-out view of the world. Think of it as the Near Map at 20% scale, with a few extra bells and whistles. It’s meant to help you get your bearings, understand the layout of different neighborhoods, spot key businesses, and eventually give orders on a city-wide level.

One of the more tedious parts was implementing the logic for switching between view modes, as shown in the code snippet below. That said, it wasn’t all pain – a useful side effect was finally adding a scroll_to()
function for each view mode. That’s going to be immensely helpful later on, especially for jumping to events or units directly.

Below, you can see how circular toggling works between the views using the F key:
Street → Near Map → City Map → back to Street → …
Naturally, being able to switch between view modes gives the player a stronger sense of tactical control and reinforces the feeling of agency over their growing empire.
Unit Selection
As you assign orders to your pawns – whether it’s to move, rob, or just relocate – you can switch to Near Map mode to observe their movement in a simple 2D view. Below is my first pass at implementing single unit selection logic inside the game controller. It’s basic, but it works and sets the stage for more advanced interaction later.
The approach is pretty straightforward. I grab the object ID (an integer) from the framebuffer – what I refer to internally as the GPU object ID. Then I check if that ID is registered as a person, and more specifically, if it’s an entity belonging to the player (one of your family’s gangsters). If so, I allow the selection decal to light up.
But maybe the more interesting part is what happens next – when you tell the pawn to move somewhere. If you remember from a previous post where I talked about implementing an ECS-like system, I introduced path matrices and an Entity
class that acts as a view over those systems. Below is the go_to()
function implemented in that class:

First and foremost, the go_to()
function handles pathfinding. Right now, I’m using Manhattan distance, but I may switch to HPA (Hierarchical Pathfinding A)* for shorter journeys later – more on that in another post. Once the path is calculated, it’s set on the entity manager’s arrays. The set_path_for_entity()
function handles additional logic like hiding or unhiding the pawn when entering or exiting buildings, as well as triggering any animation-related updates.
Next, I started working on multi-selection. The player should be able to move multiple gangsters at once in Street View, especially for tactical reasons – whether it’s preparing for a fight, avoiding one, or just repositioning units. That said, it’s not just for combat. You might want to position your gangsters around the city to execute certain orders simultaneously, which could offer some strategic advantages.
As you can see, I also used this opportunity to rework the faction (family) indicators – the shiny diamonds (or plumbobs) floating above your gangsters. If you pick green as your faction color, all your controllable units will light up with the same color, making it easier to spot who you command at a glance.
Another interesting piece of this is how the game handles crew positioning when you give a move order to multiple pawns. Instead of stacking them all on a single tile, I apply a central clustering logic around the destination point. This spreads your gangsters out naturally on arrival, giving a more believable and tactical feel to unit movement.