• Register
Post news RSS Testing performance with 1000 pawns - Wasteland Syndicates

I've been working on performance lately and have finally managed to get a 250x250 tile map with 1000 characters to work without melting my PC. Actually there is some room left for lowering the minimum requirements!

Posted by on

Dear diary,

After finishing the base building core of Wasteland Syndicates the next step would be setting up a small village with a couple of factions and some independent residents. In order for this to work I've been doing some performance tests lately and spend a couple of weeks optimizing the game.

The goal was to get about 1000 pawns on one map to simultaneously pathfind, move and work without hiccups or lag.

This is what 1000 characters look like

To give you a better picture here is what a pawn is made of right now. They are not quite as complex as your standard dwarf in DF or colonist in RW yet, but also not quite as dull as a drone.

A pawn is animated with breathtaking 4 Fps!

A pawn has a list of job types sorted by priority. The priority can be edited by the player. So all the pawn does is cycling through all types until it finds a suited one to start pathfinding. After a path is found the pawn moves to the jobs target tile and executes an action.

While moving the pawn constantly checks the 5 tiles ahead for obstacles like newly constructed walls. If an obstacle is found the pawn will repath and continue.

Each pawn consists of one custom mesh which gets edited 4 times per second and changes based on the current animation and clothing.

That's it. As you can see there is no social system or loyalty yet. Later most of this stuff will be determined by the characters perks, faction membership and history. There may be some performance heavy things ahead but it does look like most of the really heavy stuff is happening while searching for jobs and most of the planned features would be reactive (As long as the pawns are not checking the 100 tiles around them for small talk partners every frame we should be fine).

Here is a recording of me testing a map with 1000 pawns:

Of course the player won't have 1000 pawns to command. This is more of a proof of concept regarding the simulation of a city.

Let's say we set a limit of 500-600 residents per city - a small, Deadwood like, wild-west, mad max themed town. A few independent residents and a couple of gangs and factions with up to 50, 60 members (including the player with up to 50-60 pawns). Add a couple of travelling merchants, visitors and a major raid, and we should reach 1000 dudes in the late game.

The pawns we have right now are not as complex as they would be with a social system, but more complex than a NPC will be (for example city residents do not need to look after job priorities and will not need to pathfind to already known places which are part of their daily routine, animals won't need to be as precise as a pawn when looking for the nearest food and so on).

That's a pretty rough approximation and I will definitely have to optimize more but for now it's just about showing that the games core is capable of simulating a significant amount of characters on one map.

I see this as a first proof of concept and it makes me pretty confident in achieving this games goal!

In fact, the first performance testing went way better than expected (On a quad core 4GHz the game is mostly at about 4-6ms per update using only 2 cores).

That's all for now. If you want to you can take a look at my YouTube channel, where I am posting small gameplay videos from time to time.


Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.