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:

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 PlayerCar2PlayerCar5). 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