diff --git a/.gitignore b/.gitignore index b2b055e..d6b3a0b 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,5 @@ crashlytics-build.properties # Temporary auto-generated Android Assets /[Aa]ssets/[Ss]treaming[Aa]ssets/aa/* + +.idea/ diff --git a/.idea/.idea.Race_fields/.idea/workspace.xml b/.idea/.idea.Race_fields/.idea/workspace.xml deleted file mode 100644 index 575968c..0000000 --- a/.idea/.idea.Race_fields/.idea/workspace.xml +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { - "associatedIndex": 4 -} - - - - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.MCP Project settings loaded": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "copilot.chat.legacySessionMetadata.migrated": "true", - "git-widget-placeholder": "cviat", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - - - - - 1783925238013 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Assets/NewLayer.terrainlayer b/Assets/NewLayer.terrainlayer index b31d4cd..5bc923b 100644 --- a/Assets/NewLayer.terrainlayer +++ b/Assets/NewLayer.terrainlayer @@ -7,17 +7,17 @@ TerrainLayer: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: NewLayer - m_DiffuseTexture: {fileID: 0} - m_NormalMapTexture: {fileID: 0} + m_DiffuseTexture: {fileID: 10307, guid: 0000000000000000f000000000000000, type: 0} + m_NormalMapTexture: {fileID: 2800000, guid: a2c3f97d8a8a0054683d166f08fed9a9, type: 3} m_MaskMapTexture: {fileID: 0} - m_TileSize: {x: 2, y: 2} + m_TileSize: {x: 20, y: 20} m_TileOffset: {x: 0, y: 0} m_Specular: {r: 0, g: 0, b: 0, a: 0} m_Metallic: 0 - m_Smoothness: 0 + m_Smoothness: 0.424 m_NormalScale: 1 m_DiffuseRemapMin: {x: 0, y: 0, z: 0, w: 0} - m_DiffuseRemapMax: {x: 1, y: 1, z: 1, w: 1} + m_DiffuseRemapMax: {x: 0.7169812, y: 0.5299214, z: 0.21306516, w: 1} m_MaskMapRemapMin: {x: 0, y: 0, z: 0, w: 0} m_MaskMapRemapMax: {x: 1, y: 1, z: 1, w: 1} m_SmoothnessSource: 1 diff --git a/Assets/Settings/PC_Renderer.asset b/Assets/Settings/PC_Renderer.asset index 475b02e..26d7767 100644 --- a/Assets/Settings/PC_Renderer.asset +++ b/Assets/Settings/PC_Renderer.asset @@ -13,32 +13,27 @@ MonoBehaviour: m_Name: PC_Renderer m_EditorClassIdentifier: debugShaders: - debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, - type: 3} + debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3} hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3} - probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, - type: 3} + probeVolumeSamplingDebugComputeShader: {fileID: 7200000, guid: 53626a513ea68ce47b59dc1299fe3959, type: 3} probeVolumeResources: - probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, - type: 3} - probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, - type: 3} - probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, - type: 3} - probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, - type: 3} - probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, - type: 3} - probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, - type: 3} - probeVolumeBlendStatesCS: {fileID: 7200000, guid: b9a23f869c4fd45f19c5ada54dd82176, - type: 3} + probeVolumeDebugShader: {fileID: 4800000, guid: e5c6678ed2aaa91408dd3df699057aae, type: 3} + probeVolumeFragmentationDebugShader: {fileID: 4800000, guid: 03cfc4915c15d504a9ed85ecc404e607, type: 3} + probeVolumeOffsetDebugShader: {fileID: 4800000, guid: 53a11f4ebaebf4049b3638ef78dc9664, type: 3} + probeVolumeSamplingDebugShader: {fileID: 4800000, guid: 8f96cd657dc40064aa21efcc7e50a2e7, type: 3} + probeSamplingDebugMesh: {fileID: -3555484719484374845, guid: 57d7c4c16e2765b47a4d2069b311bffe, type: 3} + probeSamplingDebugTexture: {fileID: 2800000, guid: 24ec0e140fb444a44ab96ee80844e18e, type: 3} + probeVolumeBlendStatesCS: {fileID: 7200000, guid: b9a23f869c4fd45f19c5ada54dd82176, type: 3} m_RendererFeatures: - {fileID: 7833122117494664109} - m_RendererFeatureMap: ad6b866f10d7b46c - m_UseNativeRenderPass: 1 + - {fileID: 5169210368067817717} + m_RendererFeatureMap: ad6b866f10d7b46cf5d0f22d71b9bc47 + xrSystemData: {fileID: 0} postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} - m_AssetVersion: 2 + m_AssetVersion: 3 + m_PrepassLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 m_OpaqueLayerMask: serializedVersion: 2 m_Bits: 4294967295 @@ -56,11 +51,28 @@ MonoBehaviour: m_RenderingMode: 2 m_DepthPrimingMode: 0 m_CopyDepthMode: 0 + m_DepthAttachmentFormat: 0 + m_DepthTextureFormat: 0 m_AccurateGbufferNormals: 0 m_IntermediateTextureMode: 0 + m_TileOnlyMode: 0 +--- !u!114 &5169210368067817717 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e32e72b6a3f58a24c9033e2b9275eea0, type: 3} + m_Name: ScreenSpaceShadows + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.ScreenSpaceShadows + m_Active: 1 + m_Shader: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, type: 3} --- !u!114 &7833122117494664109 MonoBehaviour: - m_ObjectHideFlags: 0 + m_ObjectHideFlags: 1 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} @@ -84,12 +96,3 @@ MonoBehaviour: BlurQuality: 0 Falloff: 100 SampleCount: -1 - m_BlueNoise256Textures: - - {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3} - - {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3} - - {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3} - - {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3} - - {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3} - - {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3} - - {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3} - m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3} diff --git a/Assets/_Project/Art/Terrain/TerrainData/New Terrain.asset b/Assets/_Project/Art/Terrain/TerrainData/New Terrain.asset index bd67b9b..9c49241 100644 Binary files a/Assets/_Project/Art/Terrain/TerrainData/New Terrain.asset and b/Assets/_Project/Art/Terrain/TerrainData/New Terrain.asset differ diff --git a/Assets/_Project/Scenes/Demo Scene.unity b/Assets/_Project/Scenes/Demo Scene.unity index 55e2ea7..21538c7 100644 --- a/Assets/_Project/Scenes/Demo Scene.unity +++ b/Assets/_Project/Scenes/Demo Scene.unity @@ -159,7 +159,7 @@ TerrainCollider: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 765191281} - m_Material: {fileID: 0} + m_Material: {fileID: 13400000, guid: fde663cc303af38428fced16ed2ec0d1, type: 2} m_IncludeLayers: serializedVersion: 2 m_Bits: 0 @@ -505,6 +505,133 @@ MonoBehaviour: m_VarianceClampScale: 0.9 m_ContrastAdaptiveSharpening: 0 m_Version: 2 +--- !u!1 &1735981100 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1735981103} + - component: {fileID: 1735981102} + - component: {fileID: 1735981101} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1735981101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735981100} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalLightData + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_CustomShadowLayers: 0 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 + m_RenderingLayersMask: + serializedVersion: 0 + m_Bits: 1 + m_ShadowRenderingLayersMask: + serializedVersion: 0 + m_Bits: 1 + m_Version: 4 + m_LightLayerMask: 1 + m_ShadowLayerMask: 1 + m_RenderingLayers: 1 + m_ShadowRenderingLayers: 1 +--- !u!108 &1735981102 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735981100} + m_Enabled: 1 + serializedVersion: 13 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize2D: {x: 0.5, y: 0.5} + m_Shadows: + m_Type: 1 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShapeRadius: 0.025 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1735981103 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1735981100} + serializedVersion: 2 + m_LocalRotation: {x: 0.4066569, y: 0, z: 0, w: 0.913581} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 47.99, y: 0, z: 0} --- !u!146 &1899711170 stripped WheelCollider: m_CorrespondingSourceObject: {fileID: 8455356023009735661, guid: 1c6eef4db4f06c940a02fc3a54abcaab, type: 3} @@ -522,3 +649,4 @@ SceneRoots: - {fileID: 765191284} - {fileID: 1186595579} - {fileID: 829907302} + - {fileID: 1735981103} diff --git a/Docs/cover.png b/Docs/cover.png new file mode 100644 index 0000000..2222ea2 Binary files /dev/null and b/Docs/cover.png differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a47a0c --- /dev/null +++ b/README.md @@ -0,0 +1,99 @@ +# Race Fields + +![Race Fields](Docs/cover.png) + +Race Fields - Unity-проект аркадной гонки в полевом сеттинге. Основная заготовка проекта строится вокруг управляемого багги, камеры третьего лица, заготовок игровых режимов, усилений, оружия, VR/arcade cabinet модулей и структуры для дальнейшего наполнения трассами, префабами и данными. + +## Требования + +- Unity `6000.5.1f1` +- Universal Render Pipeline `17.5.0` +- Input System `1.19.0` +- Unity Test Framework `1.7.0` + +Версия Unity зафиксирована в `ProjectSettings/ProjectVersion.txt`, зависимости - в `Packages/manifest.json`. + +## Быстрый старт + +1. Откройте корень проекта в Unity Hub. +2. Используйте Unity `6000.5.1f1` или совместимую версию Unity 6. +3. Откройте сцену `Assets/_Project/Scenes/Demo Scene.unity`. +4. Запустите Play Mode. + +Базовое управление багги: + +- `W` / `Up Arrow` - газ +- `S` / `Down Arrow` - назад +- `A` / `Left Arrow` - поворот влево +- `D` / `Right Arrow` - поворот вправо +- `Space` - тормоз + +## Основные сцены + +- `Assets/_Project/Scenes/Demo Scene.unity` - рабочая демо-сцена проекта. +- `Assets/Scenes/SampleScene.unity` - стандартная примерная сцена Unity, оставлена отдельно от основной структуры проекта. + +## Структура проекта + +```text +Race_fields/ ++-- Assets/ +| +-- _Project/ # основной код и ресурсы игры +| | +-- Art/ # визуальные ассеты: модели, материалы, текстуры, UI, VFX, terrain +| | +-- Audio/ # музыка, звуковые эффекты и голосовые ассеты +| | +-- Prefabs/ # игровые префабы: техника, камеры, окружение, UI, оружие, VFX +| | +-- Scenes/ # основные сцены проекта +| | +-- ScriptableObjects/ # игровые настройки и данные: режимы, трассы, транспорт, оружие +| | +-- Scripts/ # C#-код проекта +| | +-- Settings/ # настройки Addressables, билда, ввода, физики и рендера +| | +-- Tests/ # EditMode и PlayMode тесты +| | +-- ThirdParty/ # сторонние ассеты, которые относятся к проекту +| +-- 300Mind/ # импортированный 2D Game UI Kit +| +-- Scenes/ # стандартные/вспомогательные сцены Unity +| +-- Settings/ # общие настройки ассетов Unity +| +-- TutorialInfo/ # стандартные tutorial-ассеты Unity +| +-- _Recovery/ # восстановленные/резервные ассеты Unity ++-- Docs/ # изображения и материалы для документации ++-- Packages/ # Unity Package Manager manifest и lock-файлы ++-- ProjectSettings/ # настройки проекта Unity ++-- UserSettings/ # локальные настройки редактора ++-- Logs/ # локальные логи Unity ++-- Library/ # кеш Unity, не хранится в репозитории ++-- Temp/ # временные файлы Unity ++-- obj/ # временные файлы сборки IDE/.NET +``` + +## Код + +Код проекта хранится в `Assets/_Project/Scripts/` и разделен по игровым подсистемам: + +- `Vehicles/` - управление транспортом, колеса, мотор, подвеска и визуальная синхронизация. +- `Camera/` - камеры игры, включая `BuggyFollowCamera` для камеры третьего лица. +- `Input/` - ввод для клавиатуры/геймпада, AI, VR и arcade cabinet. +- `GameFlow/` - сессии, состояния игры и будущая машина состояний. +- `GameModes/` - режимы игры: arena, challenges, survival race, tournament. +- `PowerUps/` - усиления: boost, repair, shield и специальные эффекты. +- `Weapons/` - оружие, ракеты, мины, шок-эффекты и targeting. +- `Damage/` - урон, разрушаемые объекты и эффекты повреждений. +- `Harvesters/` - логика комбайнов/сборщиков, AI, звук и визуальная часть. +- `World/` - трассы, чекпоинты, hazards, spawners и сегменты мира. +- `UI/` - HUD, меню, гараж, результаты и операторская панель. +- `VR/` - VR rig, комфорт и калибровка. +- `ArcadeCabinet/` - модули для аркадного автомата: hardware, payments, diagnostics, calibration. +- `Editor/` - редакторские инструменты, включая сборку префабов багги. +- `Core/`, `Data/`, `Utilities/` - общие сервисы, данные и вспомогательные классы. + +## Полезные редакторские инструменты + +В проекте есть editor-команда: + +```text +Race Fields/Setup/Rebuild Buggy Prefab +``` + +Она пересобирает префаб багги `Assets/_Project/Prefabs/Vehicles/Player/Buggy_Player.prefab`, настраивает физику колес и обновляет префаб камеры `Assets/_Project/Prefabs/Cameras/Buggy_ThirdPersonCamera.prefab`. + +## Документация и ассеты README + +- `README.md` - основное описание проекта. +- `Docs/cover.png` - изображение, используемое в шапке README.