Ruben's Virtual World Project Temp name

A hybrid between a topdown shooter and a basebuilder, where you manage a group of rebels hiding from a dystopian government.


I am no longer working on RVWP. For more information, see the blog post

Blog post


3D world drawn in 2D, using Z-layers
3D world drawn in 2D, using Z-layers
Full 3D lighting
Full 3D lighting
Single or Multiplayer
Single or Multiplayer
NPCs, AI, and blueprint building
NPCs, AI, and blueprint building
Lua modding API
Lua modding API

Two games in one

RVWP is a hybrid between a topdown shooter and a basebuilder. You can switch between Hero and Architect modes at any time.

Hero Mode Explore, recruit, fight

In Hero mode, the player will directly control the actions of their character. They'll be able to explore freely, recruit, and fight.

If the Player's Character dies, then it's game over. In singleplayer, the player will be able to load from a save file, but in multiplayer they will need to create a new character to continue playing.

Architect Mode Plan, build, organise

In Architect mode, the player won't be tied to any particular character and will be able to issue orders - for example, to build a wall. It works a lot like RimWorld and other basebuilding games. Architect mode only allows you to view and manage your base and areas that you own - whilst your player character is away, you can use it to check on your base.



RVWP's gameplay has largely evolved throughout development. There's no definite plans. The current idea is that you manage a group of rebels hiding from a dystopian government, with procedural generation and missions.

NPCs In Progress

The game centers around managing a base of characters with needs and loyalties. They will perform work the player has ordered, and will be aware of their environment and any threats.

Planned Gameplay


The Project

For the last four years, I’ve been working on a sandbox game using C++ and SFML. The game renders the world as a topdown cross-section, with support for changing the z-level by walking up and down stairs.

The original aim was to use C sockets to learn about lower level multiplayer networking concepts - such as reliability, latency mitigation, and prevention of cheating. However, the focus has since changed to developing this project into an actual game with interesting new mechanics.

Current State

The world is already "near-infinite", with a simple noise-based map generator. The world has 3D lighting using a flood fill algorithm.

In hero mode, you can control your character - wandering around the world, performing some basic interactions.

In architect mode, you can place blueprints. NPCs will build blueprints, using a job queue and simple game AI.


There's Lua modding support, with hot script reloading.

It was decided to use behaviour trees to program NPC behaviour. They have the benefit of avoiding complicated state transition logic, allowing any state to respond correctly to threats or another interruption. The code for this in RVWP is custom, but the trees themselves are edited using a GUI tool called owl-bt.

Example of behaviour tree
A behaviour tree, rendered by owl-bt.


I will be improving the NPCs and architect modes by adding new jobs and types of behaviour. I will also be working on hero gameplay, such as combat.


Multiplayer Topdown Sandbox Game

Multiplayer Topdown Sandbox Game

13 August 2017

A timeline with screenshots of the early development progress, from 2015 to 2017. Background in detail of the origin of this project.

Rendering a topdown world using SFML

Rendering a topdown world using SFML

24 April 2019

An explanation of the techniques that are used to render the world, supporting voxel lighting, and multiple z-levels (heights of the map).

Creating worker NPCs using behaviour trees

Creating worker NPCs using behaviour trees

17 July 2022

Recently, a couple of my games have had NPCs that can build and perform work directed by the player. In this article, I will explain how I implemented the NPC AIs, and the problems I faced.

Make games not engines: why I'll be using Godot engine

Make games not engines: why I'll be using Godot engine

14 July 2023

This article is an exploration of my journey in game dev, a discussion of what motivates me, and a promise for the future.


There are no builds available, you'll need to build RVWP yourself.

Source Code