Project Structure
Traffic Overtaker is a Unity 6 (6000.3.6f1), URP, Linear-color-space complete project by BoneCracker Games. Everything the game ships with lives under a single root folder — Assets/TO/ — so that you can drop the project into any Unity installation and immediately see the full set of scripts, prefabs, scenes, art, and the bundled physics engine in one place. This page maps that on-disk layout folder by folder, explains the hard boundary between the game's own code and the vendored Realistic Car Controller Pro (RCCP) engine, and points you at the exact folder each reskinning task touches. Knowing where things live is the prerequisite for every other guide in this set, because the rest of the documentation refers to these paths constantly.
Every folder name and file in the trees below was enumerated directly from the project on disk. If a path is not listed here, it does not exist in the shipped layout — do not assume sibling folders that are not shown.
The Assets/TO/ boundary: game code vs. bundled engine
The single most important rule for navigating this project is the prefix-and-folder boundary:
Assets/TO/minus theRealistic Car Controller Prosubfolder is the game's own code. Every class the game itself defines uses theTO_prefix (for exampleTO_Player,TO_GamePlayManager,TO_OvertakeAI) and lives in theBoneCrackerGamesnamespace. The bundled RCCP stays global/namespace-less (kept stock so its vendored patches remain re-appliable) and is disambiguated by itsRCCP_prefix. No.asmdeffiles exist, so everything compiles into the defaultAssembly-CSharp.Assets/TO/Realistic Car Controller Pro/is the bundled physics engine. Those classes keep theRCCP_prefix and are not rebranded. Clients do not import RCCP separately; it is vendored inside the product. Treat this subfolder as a third-party dependency: you will read it to understand vehicle setup, but you should not casually edit it (see the warning at the bottom of this page).
The scripting define symbol BCG_TO is set for the project (it replaces the source project's BCG_HR2). When you see #if BCG_TO in a script, that block is part of Traffic Overtaker's own compilation. The full architecture of how the TO_ managers talk to each other is covered in 04_SystemArchitecture.md; this page stays focused on where the files sit.
Top-level folder map
The root of the project is Assets/TO/. Its direct children are:
Assets/TO/
├── Scripts/ # All TO_ runtime C# (the game's own logic)
├── Editor/ # All TO_ editor-only C# (inspectors, wizards, validators)
├── Resources/ # ScriptableObject configs + GUI skin (Resources.Load targets)
├── Prefabs/ # Player cars, traffic cars, UI canvases, roads, particles, cameras
├── Scenes/ # MainMenu + gameplay scenes, scene templates, lighting/volumes
├── Materials/ # Shared materials used across scenes and props
├── Models/ # Imported meshes (environment, props)
├── Textures/ # Texture maps
├── Skyboxes/ # Skybox materials/textures for the weather scenes
├── Shaders/ # Custom shaders (e.g. blurred road)
├── Sounds/ # Audio clips (UI clicks, near-miss, horn, music)
├── Font/ # TextMeshPro fonts
├── Animations&Animators/ # Animation clips and Animator controllers
├── URP/ # Universal Render Pipeline assets/settings
├── Documentation/ # This documentation set (MD + HTML mirror)
├── Realistic Car Controller Pro/ # Bundled RCCP engine (RCCP_ prefix — NOT game code)
├── RCCP_VehicleUpgrade_NOS.cs # Loose TO-authored RCCP upgrade helper script
├── InputSystem.inputsettings.asset# New Input System settings asset
├── Third-Party Notices.txt # Bundled third-party attribution notices
└── Logo.png # Product logo
The two loose files at the root — RCCP_VehicleUpgrade_NOS.cs and InputSystem.inputsettings.asset — are intentional: the NOS upgrade script is a thin TO-authored bridge into RCCP's upgrade system (note it keeps the RCCP_ prefix because it plugs into RCCP types), and the input settings asset configures the New Input System that both the game and RCCP read.
The Scripts/ folder
Assets/TO/Scripts/ holds all of the game's runtime logic, organized into one subfolder per subsystem. Two top-level scripts — TO_API.cs (the static persistence/navigation API) and TO_Player.cs (the runtime player-vehicle component) — sit directly at the Scripts/ root because they are referenced from almost everywhere.
| Subfolder | What lives here |
|---|---|
AI/ |
TO_OvertakeAI.cs (the input-level AI driver) and TO_LaneFollowingTelemetry.cs (lane-stability instrumentation) |
Camera/ |
TO_Camera.cs, TO_Camera_Showroom.cs, TO_CameraSettingsApplier.cs — gameplay and showroom cameras |
Managers/ |
TO_GamePlayManager.cs, TO_SceneManager.cs, TO_MainMenuManager.cs, TO_SoundtrackManager.cs |
Roads and Path/ |
Road treadmill + path/lane system: TO_CurvedRoad.cs, TO_CurvedRoadManager.cs, TO_PathManager.cs, TO_PathDirection.cs, TO_Lane.cs, TO_LaneManager.cs, TO_Object.cs, TO_FixFloatingOrigin.cs |
Traffic/ |
TO_TrafficManager.cs (spawn pool + lead-car query) and TO_TrafficCar.cs |
Scriptable/ |
TO_Settings.cs and TO_PlayerCars.cs — the two ScriptableObject definitions loaded from Resources/ |
UI/ |
~30 UI scripts: panel controllers, the cart-based purchase flow, the Overtake button (TO_UI_OvertakeButton.cs), scoring popups, options |
Misc/ |
Shared helpers: TO_Events.cs (event bus), TO_Singleton.cs, TO_PlayerStabilizer.cs, TO_PlayerPrefsX.cs, bounds/cart utilities |
Others/ |
Visual/prop scripts: TO_EngineSmoke.cs, TO_LensFlare.cs, TO_LightBox.cs, TO_BarrierCollisionProtector.cs, TO_ResetDecal.cs, and more |
Shaders/ |
TO_BlurredRoad.shader |
Note the difference between Scripts/Shaders/ (a single ShaderLab file used by the road) and the top-level Assets/TO/Shaders/ art folder — both exist, and they are not the same place.
Configuration in Resources/ (the two ScriptableObjects)
Assets/TO/Resources/ is special because Unity lets any script load its contents at runtime by name via Resources.Load. Two ScriptableObject assets drive nearly all of the game's tunable behavior, and each is loaded by a static instance property on its defining class:
| Asset | Loaded by | What it holds |
|---|---|---|
TO_Settings.asset |
Resources.Load("TO_Settings") in TO_Settings.cs |
Game-wide constants: speed thresholds, score multipliers, money values, audio clips, prefab references, layer names, default options, and the scene-template paths |
TO_PlayerCars.asset |
Resources.Load("TO_PlayerCars") in TO_PlayerCars.cs |
The vehicle roster (14 cars): display name, prefab, price, and unlocked flag per entry |
The exact load lines are instance = Resources.Load("TO_Settings") as TO_Settings; and instance = Resources.Load("TO_PlayerCars") as TO_PlayerCars;. Because the lookup is by string name, these two assets must stay directly in a Resources/ folder and keep those exact file names — moving or renaming them breaks the load at runtime with no compile error to warn you. The folder also contains TO_Gui.guiskin (an IMGUI skin) and a Generated/ subfolder for generated assets. The settings values themselves (score multipliers, money, prefab wiring) are documented in 14_APIReference.md and edited through the inspector covered in 12_EditorTools.md.
The Prefabs/ folder
Assets/TO/Prefabs/ groups every reusable GameObject the game spawns. Its subfolders are the primary reskin surface for swapping art:
Prefabs/
├── Player Vehicles/ # 14 player car prefabs (e.g. M5_E30, Coupe, CTR, PlayerCar2…)
├── Traffic Vehicles/ # TrafficCar1…TrafficCar5 pooled AI traffic
├── UI/ # TO_UI_Canvas_MainMenu, TO_UI_GameplayCanvas,
│ # TO_UI_GameoverCanvas, TO_UI_EventSystem
├── Highway Roads/ # TO_Highway (Prototype), TO_CurvedRoadsPrefab (road segments)
├── Particles/ # TO_Explosion, TO_EngineSmoke, TO_Rain
├── TO_MainCamera.prefab # Gameplay camera rig
├── TO_ShowroomCamera.prefab # Main-menu showroom camera
└── TO_ResetDecal.prefab # Ground decal used when a car is reset
The player-car prefab file names do not always match the in-menu display names (for example the free starter car E30 is the prefab M5_E30, and several entries are still named PlayerCar2…PlayerCar5). The authoritative name-to-prefab mapping lives in 06_PlayerVehicles.md; the traffic prefabs are covered in 08_TrafficSystem.md.
The Scenes/ folder
Assets/TO/Scenes/ contains the playable scenes plus the editable templates used to author new ones:
Scenes/
├── TO_Scene_MainMenu.unity # Car showroom, selection, purchase, scene pick
├── TO_Scene_Sunny.unity # Gameplay (day)
├── TO_Scene_Rainy.unity # Gameplay (rain)
├── TO_Scene_Night.unity # Gameplay (night)
├── TO_Scene_CarCreate.unity # Vehicle-creation/showroom scene (present, build-disabled)
├── TO_SceneTemplates/
│ ├── TO_SceneTemplate_Mainmenu.unity
│ └── TO_SceneTemplate_Gameplay.unity
├── Lighting Settings/ # Baked LightingSettings assets
└── Volume Profiles/ # URP post-process volume profiles
The four scenes enabled in Build Settings are TO_Scene_MainMenu, TO_Scene_Sunny, TO_Scene_Rainy, and TO_Scene_Night; TO_Scene_CarCreate and the two scene templates are present in the project but left disabled in the build list. The two template paths are stored on TO_Settings (templateScenePath_MainMenu and templateScenePath_Gameplay) so the editor tooling can clone them. Each scene's object layout and how to build a new one are detailed in 05_Scenes.md and 10_ReskinningScenes.md.
Where each reskin surface lives
When you reskin Traffic Overtaker into your own game, you will touch a predictable, small set of folders. This table is the quick index:
| Reskin task | Where it lives |
|---|---|
| Swap a player car model | Prefabs/Player Vehicles/ + the roster in Resources/TO_PlayerCars.asset |
| Swap traffic cars | Prefabs/Traffic Vehicles/ |
| Change prices, free car, unlock state | Resources/TO_PlayerCars.asset |
| Tune scoring, speeds, money, layers | Resources/TO_Settings.asset |
| Restyle UI | Prefabs/UI/ canvases + scripts in Scripts/UI/ |
| Reskin road / environment art | Prefabs/Highway Roads/, Models/, Materials/, Textures/, Skyboxes/ |
| Replace audio | Sounds/ (then re-wire clip references on TO_Settings) |
| Add or restyle a scene | Scenes/ + the templates in Scenes/TO_SceneTemplates/ |
| Adjust AI driving feel | Scripts/AI/TO_OvertakeAI.cs (via its custom inspector) |
| Customization upgrades (paint/wheels) | RCCP customizer + Resources upgrade data — see 09_Customization.md |
The bundled RCCP engine folder
Assets/TO/Realistic Car Controller Pro/ is the complete, vendored RCCP package. Its internal layout mirrors a standard RCCP install:
Realistic Car Controller Pro/
├── Scripts/ # RCCP_ runtime (RCCP_CarController, RCCP_Input, RCCP_Axle…)
├── Editor/ # RCCP editor tooling
├── Prefabs/ # RCCP vehicle/demo prefabs
├── Models/ Materials/ Textures/ Fixed Meshes/ # Vehicle and demo art
├── Audio/ Lensflares/ Font/ # Engine/audio/UI assets
├── Animators & Animations/ Physics Materials/ # Driver animation + surface friction
├── InputActions/ Resources/ Addons/ Scenes/ # Input maps, settings, add-ons, demo scenes
├── Documentation/ # RCCP's own HTML manual (vehicle-setup guide)
├── License Agreement.txt Third-Party Notices.txt Icon.png
Treat this folder as read-mostly. The bundled copy is stock RCCP except for two minimal, additive edits in RCCP_Input.cs and RCCP_Axle.cs that let TO_OvertakeAI author inputs in the same physics step; those edits are the only non-upstream changes, and a future RCCP package update will clobber them, so they must be re-applied after any engine upgrade. RCCP ships its own vehicle-setup manual at Realistic Car Controller Pro/Documentation/HTML/03_vehicle_setup.html, which the editor exposes through a How To Build An RCCP Vehicle button (see 12_EditorTools.md). For day-to-day reskinning you mostly read RCCP rather than modify it — the integration points the game relies on are listed in 04_SystemArchitecture.md.
See Also
- 02_Installation.md — getting the project opened and the first-run setup wizard.
- 04_SystemArchitecture.md — how the
TO_managers and RCCP fit together at runtime. - 12_EditorTools.md — the menu items and custom inspectors that edit the assets described above.
- 10_ReskinningScenes.md — turning this folder layout into your own game.