HomeGamesUpdatesPricingMethodology
Steam News15 June 202613d ago

Dev Diary - Development History

To celebrate being part of Steam Next Fest, I figured I'd do a little write-up of the development history of the game and the inspiration behind it.

Full notes

Full HAE Stack update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

1 fix1 addition10 changes0 removals
  • Gameplay
  • Performance
  • UI and audio
  • Maps
  • Fixes
addedThe inspirationIn 2019, the New York Times released a series of articles about the commercial surveillance industry. The reporters had been given file from a location-based advertising firm that included over 50 billion GPS location pings from more than 12 million devices over 2016-2017. I strongly recommend you take a look at those articles yourself, as in addition to their content, the visuals they employ are excellent.
changedThe inspirationThroughout the articles, the reporters demonstrate how use of this data can reveal intimate details about a person's life: where they live and work, who they know, who they interact with, marital infidelities, etc. While the articles outlined the numerous personal privacy and national security problems that datasets like this and the technology used to generate them represent, one thought occurred to me: "This could make a pretty cool video game".
changedThe five year waitMy initial idea was to have a realistic city population, and use randomization & proc-gen to decide where people lived and worked. I thought a relatively "small" city of ~50,000 people would be a good target. So I cracked open Unity, made a spawner for 50,000 circular sprites, and the FPS was... garbage. Unity had recently announced their ECS & DOTS architectures, which were supposed to be super-high performance for large numbers of elements, so I figured "Okay, I'll just wait for that to be ready before I try again."
changedThe five year waitI tried again two years later, this time with ECS, and the performance was... good! Then I tried to make the sprites move and the FPS went back to being terrible. "Eh, they say the architecture still isn't finished, maybe it'll get better by next year." It didn't.
changedThe five year waitAfter waiting 4 years for Unity to finish their ECS/DOTS implementation, in 2023 my interest in Entity/Component architectures, the Rust programming language, and my discontent with Unity (both the software and the company), led me to try making this prototype in the Bevy game engine . A simple prototype test managed 100,000 sprites moving around with solid 60/FPS performance, so I started working on a real prototype.
changedA working(?) versionOver the next 6 months I built out a prototype with the intention to answer the question: "If you give players a map with dots moving to specific places at specific times, will the players invent narrative for those dots, and is that compelling?"

To celebrate being part of Steam Next Fest, I figured I'd do a little write-up of the development history of the game and the inspiration behind it.

The inspiration

In 2019, the New York Times released a series of articles about the commercial surveillance industry. The reporters had been given file from a location-based advertising firm that included over 50 billion GPS location pings from more than 12 million devices over 2016-2017. I strongly recommend you take a look at those articles yourself, as in addition to their content, the visuals they employ are excellent.

Throughout the articles, the reporters demonstrate how use of this data can reveal intimate details about a person's life: where they live and work, who they know, who they interact with, marital infidelities, etc. While the articles outlined the numerous personal privacy and national security problems that datasets like this and the technology used to generate them represent, one thought occurred to me: "This could make a pretty cool video game".

The five year wait

My initial idea was to have a realistic city population, and use randomization & proc-gen to decide where people lived and worked. I thought a relatively "small" city of ~50,000 people would be a good target. So I cracked open Unity, made a spawner for 50,000 circular sprites, and the FPS was... garbage. Unity had recently announced their ECS & DOTS architectures, which were supposed to be super-high performance for large numbers of elements, so I figured "Okay, I'll just wait for that to be ready before I try again."

I tried again two years later, this time with ECS, and the performance was... good! Then I tried to make the sprites move and the FPS went back to being terrible. "Eh, they say the architecture still isn't finished, maybe it'll get better by next year." It didn't.

After waiting 4 years for Unity to finish their ECS/DOTS implementation, in 2023 my interest in Entity/Component architectures, the Rust programming language, and my discontent with Unity (both the software and the company), led me to try making this prototype in the Bevy game engine. A simple prototype test managed 100,000 sprites moving around with solid 60/FPS performance, so I started working on a real prototype.

A working(?) version

Over the next 6 months I built out a prototype with the intention to answer the question: "If you give players a map with dots moving to specific places at specific times, will the players invent narrative for those dots, and is that compelling?"

The prototyping started with me trying to draw the maps and person schedules by hand, but I eventually decided to use an Open Street Map export and write my own map renderer. I handled road-based navigation, home and work selection, and even fake OS window management, and a couple of (mostly placeholder) apps.

After playtesting with a couple people, I concluded that "yes people can invent narratives for these little dots, but when those dots behave weirdly the narratives break down". The proc-gen system I had built caused a lot of weird behaviors, the custom map renderer was tricky to work with, the data from Open Street Map was inconsistent, working on UI in Bevy was a pain, and I estimated that it'd take ~6 years to build a version of this project that was up to my standards, so I decided to scrap the project.

Oh right, Javascript

Nine months after scrapping the prototype and the project in general, I stumbled onto the Javascript map rendering libraries Deck.GL and Maplibre. They had examples of perfectly rendered maps with hundreds of thousands of objects and excellent performance. I tried them out, and within a day I had a better version of map & person rendering the previous prototype ever was.

Switching to Javascript (or more specifically Typescript), was an easy choice. Outside the map, the majority of the "game" is a UI that emulates an operating system and applications, and using HTML for that is significantly more straight forward than "game engine" UI systems. I also have a decent amount of experience with web technologies from my freelance and personal work, so there wasn't a huge learning curve like there was with Rust. Within days it was clear that this version would develop significantly faster than the previous prototype.

Scope reduction

One other factor that led to me to restart the project was abandoning the idea of procedurally generating tens of thousands of fake people. Proc-gen was too unreliable and unpredictable, and the only way I can guarantee that all the people had believable schedules was to make sure that I craft them myself. With this scope reduction, the largest "unknown complexity" problem was resolved, and I just had to do the manual labor of making the schedules by hand, or with whatever tools I built for myself. This does have the downside of exponential work: for every new day of position history I add, I need update every single person, but even that is less trouble than bug testing the proc-gen results for 10,000+ people any time I modify the algorithms.

The current version

I've been working on the current version of the game for ~1.5 years. I've mainly focused on functionality over "content" thusfar, and I'm very happy with the quality and functionality so far. As I progress from this demo version into the full game, I am confident I have a strong foundation to build on. There's a lot more I could get into about the specific implementation of this version of the project, but I think that is better left to a different post (or series of posts).

Future Dev Diaries

I have some other ideas for dev diary posts, so if you're interested in any of the following topics (or something else), let me know in the commends or on Discord.

  • The schedule editor, modding system, and user-generated content.

  • Maps!

  • Discussions of real-world Surveillance Capitalism, my research on the topic, what I think this game "does about it".

  • "Psychological Horror Games", and whether this game is one.

  • Friction and realism in games, and why some things have to stay annoying.

  • Complicity and what to do about it.

Source

Steam News / 15 June 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.