A real-time open-world 3D simulation engine built with Three.js, featuring dynamic environments, vehicles, and characters. VirtuCities is designed to deliver immersive sandbox-style gameplay inspired by high-end cinematic rendering and AAA open-world systems.
The name VirtuCities is derived from โVirtual Citiesโ, reflecting the core vision of the engine.
The system is designed to support multiple interconnected cities within a single seamless world, where players can:
- Enter and exit different cities without loading screens
- Travel continuously across large-scale environments
- Experience seamless world streaming and transitions
- Maintain persistent physics, vehicles, and NPC states across regions
City boundaries are designed to feel invisible to the player, creating a continuous open-world experience rather than isolated levels.
VirtuCities is a modular virtual world engine that combines real-time rendering, physics simulation, and dynamic world systems to create a scalable open-world experience similar to modern sandbox games.
The core environment is based on the Pier Island game level, available in two distinct variants:
https://sketchfab.com/3d-models/crateria-96e015d3465945e189bf1cc15f30976a
High-fidelity environment designed for cinematic visuals, advanced lighting, and physically-based rendering (PBR).
Inspired by offline rendering workflows such as 3ds Max and V-Ray pipelines.
Optimized version focused on performance, scalability, and gameplay prototyping.
Ideal for large-scale simulation, AI testing, and low-end hardware support.
๐ https://www.turbosquid.com/3d-models/pier-island-3d-model-1998778
- ๐ Multi-city open-world streaming system
- ๐๏ธ Dual-mode Pier Island environment (Realistic + Low Poly)
- ๐ Dynamic vehicle system (driveable + AI-controlled)
- ๐ง Dynamic NPC character system
- โ๏ธ Real-time physics simulation using Cannon.js
- ๐ฎ Interactive sandbox gameplay systems
- ๐ Seamless world streaming architecture (WIP)
- ๐งโ๐คโ๐ง Multiplayer support (real-time networked simulation)
- Rendering Engine: Three.js
- Physics Engine: Cannon.js
- Language: JavaScript / TypeScript
- World System: Multi-city streaming architecture
- Networking: WebSocket-based multiplayer system
- Asset Pipeline: Real-time optimized 3D models
VirtuCities aims to combine real-time performance with cinematic visual fidelity.
Inspired by:
- 3ds Max rendering workflows
- V-Ray lighting and shading techniques
- Physically-Based Rendering (PBR) pipelines
- ๐ฅ High-fidelity cinematic mode (Realistic)
- ๐ฎ Optimized performance mode (Low Poly)
- Scene Manager โ world streaming & lifecycle control
- City Streaming System โ dynamic loading/unloading of cities
- Physics World โ Cannon.js integration
- Entity System โ NPCs, vehicles, props
- Input Controller โ player & camera control
- Rendering Pipeline โ Three.js WebGL renderer
- Network Layer โ multiplayer synchronization system
VirtuCities is built around a multi-city streaming architecture, where:
- The world is divided into multiple city zones
- Only nearby cities are fully loaded
- Distant cities are streamed or simplified
- Transitions between cities are seamless
- Physics and entity states persist across regions
This creates the illusion of a single continuous massive world.
- NPC AI navigation system
- Advanced vehicle physics (suspension, drift system)
- Weather system & day/night cycle
- Multiplayer synchronization improvements
- World streaming optimization (LOD + chunking system)
- Advanced lighting & post-processing
- Traffic and city simulation system
- WASD โ Move player / vehicle
- Mouse โ Camera control
- Space โ Jump / Brake
- Shift โ Sprint / Boost
VirtuCities must be run through a local web server. Opening virtucities.html directly from your file system (file://) may prevent models, textures, scripts, and other assets from loading correctly due to browser security restrictions.
- Open the project folder in Visual Studio Code.
- Install the Live Server extension if it is not already installed.
- Locate
virtucities.htmlin the project directory. - Right-click
virtucities.html. - Select Open with Live Server.
The application will automatically launch in your default web browser.
python -m http.server 8000Open:
http://localhost:8000/virtucities.html
npx serve .Then open the URL displayed in the terminal.
The main application entry file is:
virtucities.html
After starting a local server, navigate to:
http://localhost:<port>/virtucities.html
to launch the VirtuCities simulation.
If the application displays a blank screen or assets fail to load:
- Verify that the project is running through a local web server.
- Check the browser developer console for errors.
- Ensure all asset paths and dependencies are present.
- Refresh the page after making changes.
- Confirm that JavaScript modules and external assets are loading successfully.
# Clone the repository
git clone <repository-url>
# Open the project folder
cd VirtuCities
# Launch with Live Server
# or start a local server
python -m http.server 8000Open your browser and navigate to:
http://localhost:8000/virtucities.html
You are now ready to explore the VirtuCities open-world simulation.
VirtuCities is a real-time simulation engine focused on combining physics-driven gameplay with cinematic-quality open-world visuals. It is actively under development and evolving toward a scalable multi-city sandbox framework.