Citybound - The Beginning
I set out to do something crazy - creating my own city building game.
Ever since I played A-Train and SimCity 2000 as a child, this was my dream.
Now I have the technology, the skills and the knowledge to implement it.
My game will be called: Citybound.
It will be very familiar to those who love the genre, but it will also do new things and set its own priorities and focus areas:
- It will be a single-player game that works completely offline.
- The goal is to simulate one whole, huge region at once - no need for tiny city lots or artificial city interaction dynamics.
- It will be affordable and will not rely on DLC.
- Alpha and Beta versions will be available for a reduced price.
- Moddability will be a priority, not an afterthought.
Today I'm proud to show you my first steps of what will hopefully be a great journey!
(Feel free to skip this section if you are not interested)
There are three main reasons for this choice:
it supports Windows, Mac and Linux from the beginning.
(In the future all platforms that support WebGL as a web standard!)
I can use the programming environment that I'm most familiar with and fluent in.
This means that I can iterate rapidly.
Because the game needs things like file-system access (for savegames), it will be bundled with its own fullscreen browser (node-webkit) as a standalone package.
It will look and feel like a native game.
The parts of the game that don't need native features should run in any browser, though.
Imagine: you can share a 3D snapshot of your city that your friends and fellow city-builders can explore in their regular browser.
What's already there
Basic Road Laying
Simple two-lane roads can be drawn by clicking and dragging.
The mouse snaps to existing road end points.
A few cars are spawned randomly.
- removing roads again
- splitting existing roads when creating new roads
- roads with more than two lanes, different kinds of roads
- curved roads
- rails, monorails, subway, tunnels, footpaths, ...
Basic Agent Simulation
Citybound uses microscopic agent-based simulation, but only where it helps immersion and realism. It will simulate individual cars and pedestrians. It will not simulate individual poop blobs.
A huge city full of cars, simulated all at once.
What you see:
- randomly generated street grid of 65x65 blocks (5.2x5.2 km² or 3.2x3.2 mi²)
- ca. 8,500 road segments, ca. 4,300 intersections
- ca. 51,000 cars with individual pathfinding
- individual destinations (can be changed on-the-fly)
- basic collision avoidance
- variance in driver behaviour (cautiousness/aggressiveness)
- running at 30FPS on my 4 year old gaming PC
- algorithm is completely parallelizable, though
- could be moved into a native-code plugin
- could even be moved into a shader, i.e. calculated natively on the GPU
- higher-level intersection behaviour: traffic lights & yields
- multi-lane overtaking and turning behaviour
- reaction to emergency vehicles
- congestion avoidance
- different, detailed car models
- pedestrians (their behaviour is much simpler, though)
- trains, ships, airplanes
Basic Lot and Building Generation
Procedural buildings will be very important in Citybound. Compared to a few pre-modeled buildings and lot sizes, they allow for much more convincing and varied cityscapes. They also grow organically and use the available space optimally - even in oddly-shaped road networks.
Animation: Road network, different variations of random buildings
A randomly generated city (35x35 blocks) with buildings, larger towards the center
- non-rectangular building footprints, especially for block corners
- architectural details: doors, windows, pillars, roofs, balconies, terraces, ...
- different types of buildings: agricultural, residential, commercial, industrial, combinations
- different types of construction: row-houses, highrise, european city blocks, ghettos, ...
The technical foundation of the three most important aspects of the game is there. Now I will focus on bringing them together to allow gameplay and actual city dynamics as soon as possible.
Then each area can be refined iteratively - see the "What's Missing" sections.
Planned Core Gameplay Elements:
- Zoning, dynamic creation of buildings based on demand
- Residential/commercial/industry dynamics, micro-economy
- Electricity, water & sewage management
- Service buildings, service coverage (health, police, fire, education, ...)
- Public transportation
Additional planned features:
- Terrain: hills, rivers, lake, ocean
- perhaps even dynamical changes (flooding, landslides, ...)
- Data maps & graphs
- Day/night cycle
- Seasonal cycle
- Citizen inspection, opinion polls, social media
Thanks for reading - I am looking forward to your feedback!
Discussion on reddit