On this page
Build your game

Set Up a New City Scene

Take an empty scene, or your own city, and make it a working CCDS gameplay or main menu scene.

The one-step version

  1. Open the scene.
  2. Tools → BoneCracker Games → CCDS → Create Scene Managers → Gameplay (or Main Menu).

That creates a CCDS_SceneManager, sets its levelType, and builds every manager that scene type requires. Run it again at any time — it reuses what already exists instead of duplicating it, and reactivates a manager that had been disabled.

Unity Hierarchy for a CCDS gameplay scene, showing the CCDS managers, mission markers, and the RCCP and RTC scene objects

This is what a configured gameplay scene looks like: the CCDS managers, the mission markers nested under CCDS_MarkerManager, and the RCCP_SceneManager / RTC_SceneManager / RTC_TrafficSpawner objects that the vehicle and traffic systems need.

What gets created

CCDS_SceneManager is the scene's root reference holder. Its levelType decides the manager set.

Gameplay scenes

Manager Responsibility
CCDS_GameplayManager Game state machine, player reference
CCDS_UI_Manager In-game HUD
CCDS_MarkerManager Mission marker spawning and tracking
CCDS_MissionObjectiveManager Mission registration and completion
CCDS_MissionObjectivePositionsManager Objective positions
CCDS_MinimapManager Minimap rendering
CCDS_CopsManager Police AI
CCDS_NetworkManager Photon connection and spawning
CCDS_SaveGameManager Save and load
CCDS_TutorialManager Tutorial dispatch
CCDS_UI_NametagManager Multiplayer nametags
CCDS_Minimap_Camera Minimap camera
RCCP_SceneManager RCCP scene services
RCCP_Camera Vehicle camera
Manager Responsibility
CCDS_MainMenuManager Menu flow
CCDS_UI_MainMenuManager Menu UI
CCDS_Camera_Orbit Orbiting showcase camera
CCDS_SoundtrackManager Music playlist
RCCP_SceneManager RCCP scene services

Note what is not in the main menu set: no gameplay manager, no mission managers, no minimap. A main menu scene that has them was built as a gameplay scene by mistake.

Register the scene

Add it to File → Build Profiles → Scene List. The index matters:

  • CCDS_Settings.mainMenuSceneIndex (default 0) points at your main menu.
  • CCDS_Settings.defaultSelectedSceneIndex (default 1) is the gameplay scene a new player starts in.
  • The player's chosen scene is saved and read back by CCDS.GetScene() / CCDS.SetScene().

Adding a gameplay scene without updating those defaults gives new players a scene index that does not exist.

Scene requirements

Beyond the managers, a gameplay scene needs:

Requirement Why
A baked NavMesh Cop and mission AI path on it. Unbaked means AI that will not move.
Ground colliders The vehicle ground-snap in ACCDS_Vehicle.OnEnable raycasts downward.
Correct layers Markers, checkpoints and minimap items are layer-driven.
A spawn point CCDS_SpawnPoint for the player. Main menu scenes use CCDS_MainMenuManager.spawnPoint.
Lighting Bake it. The demo scenes use Adaptive Probe Volumes.

Re-bake the NavMesh whenever you change the city geometry. Nothing warns you that it went stale; the AI simply stops moving.

Layers

With CCDS_Settings.enableAutoLayerManagement enabled (the default), CCDS creates and assigns these automatically:

Setting field Default layer
layerCCDSMap CCDS_Map
layerCCDSMinimapItem CCDS_MinimapItem
layerCCDSTrailblazerObstacle CCDS_TrailblazerObstacle
layerCCDSCheckpoint CCDS_Checkpoint
layerCCDSMarker CCDS_Marker
layerCCDSProp CCDS_Prop

Put your city's drivable geometry on CCDS_Map — that is the layer the minimap and raycasting use.

Turning auto layer management off means assigning all six by hand, on every object, forever. Leave it on unless you have a specific conflict.

Traffic

Traffic comes from RTC. Drag RTC_TrafficSpawner.prefab from the RTC package into the scene and lay out its waypoints along your roads.

Density is player-facing: CCDS.GetTrafficDensity() / CCDS.SetTrafficDensity() range 0–2 with 1 meaning 100%, and CCDS_Settings.defaultTrafficDensity sets the starting value.

Two runtime controls exist for gameplay moments:

C#
CCDS.DisableTrafficForAWhile();        // temporary, e.g. during a race
CCDS.ToggleTrafficPermanently(false);  // until turned back on

In multiplayer, the master client owns traffic. The spawner instantiates over the network and non-master clients receive it. Do not spawn traffic locally on a client.

Validate

Tools → BoneCracker Games → CCDS → Open Validation Panel.

It checks the scene against CCDS_SceneManager.CheckMisconfigurations() and every component implementing ICCDS_CheckEditorError, and reports specific missing references — for example "Missing 'Spawn Point' on CCDS_MainMenuManager!" or "Missing UI Text 'Money Text' on MainMenu Manager!".

Run it before every build. It catches the broken-reference class of bug that otherwise only shows up at runtime.

Common problems

Symptom Cause
Player spawns and falls through the world No ground collider, or the city is not on a collidable layer
AI cars never move NavMesh not baked, or baked before the geometry changed
Minimap is blank City geometry not on CCDS_Map; minimap camera missing
Markers invisible or not triggering Wrong layer, or enableAutoLayerManagement disabled
CreateMission returns null Managers not created — run Create Scene Managers
Menu scene tries to run gameplay logic levelType set to Gameplay; fix it on CCDS_SceneManager
Duplicate managers after re-running the menu Pre-existing managers were renamed, so they were not found

Next

(c) 2014 - 2026 BoneCracker Games - City Car Driving Simulator 1.6Back to top ↑
Document details

Generated from: 02_Build_Your_Game/03_Set_Up_A_New_City_Scene.md
Date: 2026-09-15 07:52
(c) 2014 - 2026 BoneCracker Games - City Car Driving Simulator 1.6