feat: whole project restructuring
This can be seen as the initial state of the project after the released demo.
The changes include:
- New ship models
- Singleton manager structure to keep project scaleable in the future
- Managing players, their settings, character choices, statistics, match setups, controls etc. in a separate decoupled scene
- Main menu with transitions to the arena scene
- Beginnings of a custom audio solution
- Logging with Log4Net
It is really a complete overhaul of the projects structure and management.
This commit is contained in:
parent
f39fae335c
commit
64162cb4a1
@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_Logging: 1
|
||||
m_AutomaticPerformanceModeEnabled: 1
|
||||
m_EnableBoostOnStartup: 1
|
||||
m_StatsLoggingFrequencyInFrames: 50
|
||||
m_StatsLoggingFrequencyInFrames: 30
|
||||
m_IndexerSettings:
|
||||
m_Active: 1
|
||||
m_ThermalActionDelay: 10
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f1cc20c0d0cf7304a9295088a8302282
|
||||
guid: e0e1d8057c7f97d4495b1827a30f941c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c66bc34cb5c3ead4d95c6db73466a47e
|
||||
guid: f1c5bdc7486d4604285dd44c4cbed571
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
BIN
Assets/AudioResources/Music/bgm_0.wav
Normal file
BIN
Assets/AudioResources/Music/bgm_0.wav
Normal file
Binary file not shown.
23
Assets/AudioResources/Music/bgm_0.wav.meta
Normal file
23
Assets/AudioResources/Music/bgm_0.wav.meta
Normal file
@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f03afcd094e19824e8549f6fec3655ef
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 1
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 1
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9664f04197907f443ab8a27e87ecc7fa
|
||||
guid: 34f2d49886d8dc244bcc393efba8b70e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
BIN
Assets/AudioResources/Sounds/ONE_SHOT_SPACE_TEAR.wav
Normal file
BIN
Assets/AudioResources/Sounds/ONE_SHOT_SPACE_TEAR.wav
Normal file
Binary file not shown.
23
Assets/AudioResources/Sounds/ONE_SHOT_SPACE_TEAR.wav.meta
Normal file
23
Assets/AudioResources/Sounds/ONE_SHOT_SPACE_TEAR.wav.meta
Normal file
@ -0,0 +1,23 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 82a8d17c2698c834f96370756847edec
|
||||
AudioImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 7
|
||||
defaultSettings:
|
||||
serializedVersion: 2
|
||||
loadType: 0
|
||||
sampleRateSetting: 0
|
||||
sampleRateOverride: 44100
|
||||
compressionFormat: 1
|
||||
quality: 1
|
||||
conversionMode: 0
|
||||
preloadAudioData: 0
|
||||
platformSettingOverrides: {}
|
||||
forceToMono: 0
|
||||
normalize: 1
|
||||
loadInBackground: 0
|
||||
ambisonic: 0
|
||||
3D: 1
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -13,6 +13,7 @@ MonoBehaviour:
|
||||
m_Name: Input System Input Settings
|
||||
m_EditorClassIdentifier:
|
||||
m_SupportedDevices:
|
||||
- Mouse
|
||||
- Gamepad
|
||||
- Keyboard
|
||||
m_UpdateMode: 1
|
||||
@ -2,7 +2,7 @@
|
||||
// <auto-generated>
|
||||
// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
|
||||
// version 1.6.3
|
||||
// from Assets/Input/InputActionMaps.inputactions
|
||||
// from Assets/Input System Settings/InputActionMaps.inputactions
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@ -56,7 +56,7 @@ public partial class @InputActionMaps: IInputActionCollection2, IDisposable
|
||||
},
|
||||
{
|
||||
""name"": ""Boost"",
|
||||
""type"": ""Button"",
|
||||
""type"": ""PassThrough"",
|
||||
""id"": ""c8819d8c-8dc4-4eb6-ae07-132d6fffbed4"",
|
||||
""expectedControlType"": ""Button"",
|
||||
""processors"": """",
|
||||
@ -429,6 +429,76 @@ public partial class @InputActionMaps: IInputActionCollection2, IDisposable
|
||||
""isPartOfComposite"": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
""name"": ""Meta"",
|
||||
""id"": ""a5c1447b-b3fb-4a89-b942-fdf9beb5a79f"",
|
||||
""actions"": [
|
||||
{
|
||||
""name"": ""Start"",
|
||||
""type"": ""Button"",
|
||||
""id"": ""18797b6b-ee2f-4fde-85c6-b70e831cdf95"",
|
||||
""expectedControlType"": ""Button"",
|
||||
""processors"": """",
|
||||
""interactions"": """",
|
||||
""initialStateCheck"": false
|
||||
},
|
||||
{
|
||||
""name"": ""Pause"",
|
||||
""type"": ""Button"",
|
||||
""id"": ""2cf1215a-a9ec-4bce-8f08-978e08472f6a"",
|
||||
""expectedControlType"": ""Button"",
|
||||
""processors"": """",
|
||||
""interactions"": """",
|
||||
""initialStateCheck"": false
|
||||
}
|
||||
],
|
||||
""bindings"": [
|
||||
{
|
||||
""name"": """",
|
||||
""id"": ""5a7b5d2a-ece5-46e0-a265-deb8949f1b47"",
|
||||
""path"": ""<Gamepad>/start"",
|
||||
""interactions"": """",
|
||||
""processors"": """",
|
||||
""groups"": ""Controller"",
|
||||
""action"": ""Start"",
|
||||
""isComposite"": false,
|
||||
""isPartOfComposite"": false
|
||||
},
|
||||
{
|
||||
""name"": """",
|
||||
""id"": ""3cd0cfc6-4d22-448f-8f55-ce3678def10a"",
|
||||
""path"": ""<Keyboard>/enter"",
|
||||
""interactions"": """",
|
||||
""processors"": """",
|
||||
""groups"": ""Keyboard 1;Keyboard 2"",
|
||||
""action"": ""Start"",
|
||||
""isComposite"": false,
|
||||
""isPartOfComposite"": false
|
||||
},
|
||||
{
|
||||
""name"": """",
|
||||
""id"": ""98e0906e-0a6c-4097-a3f8-4d8640ad4d2a"",
|
||||
""path"": ""<Gamepad>/start"",
|
||||
""interactions"": """",
|
||||
""processors"": """",
|
||||
""groups"": ""Controller"",
|
||||
""action"": ""Pause"",
|
||||
""isComposite"": false,
|
||||
""isPartOfComposite"": false
|
||||
},
|
||||
{
|
||||
""name"": """",
|
||||
""id"": ""fa09a433-c040-4da0-8e75-7c8a5f62d4ce"",
|
||||
""path"": ""<Keyboard>/escape"",
|
||||
""interactions"": """",
|
||||
""processors"": """",
|
||||
""groups"": ""Keyboard 1;Keyboard 2"",
|
||||
""action"": ""Pause"",
|
||||
""isComposite"": false,
|
||||
""isPartOfComposite"": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
""controlSchemes"": [
|
||||
@ -478,6 +548,10 @@ public partial class @InputActionMaps: IInputActionCollection2, IDisposable
|
||||
m_Player_Steer = m_Player.FindAction("Steer", throwIfNotFound: true);
|
||||
m_Player_Reset = m_Player.FindAction("Reset", throwIfNotFound: true);
|
||||
m_Player_Boost = m_Player.FindAction("Boost", throwIfNotFound: true);
|
||||
// Meta
|
||||
m_Meta = asset.FindActionMap("Meta", throwIfNotFound: true);
|
||||
m_Meta_Start = m_Meta.FindAction("Start", throwIfNotFound: true);
|
||||
m_Meta_Pause = m_Meta.FindAction("Pause", throwIfNotFound: true);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
@ -605,6 +679,60 @@ public partial class @InputActionMaps: IInputActionCollection2, IDisposable
|
||||
}
|
||||
}
|
||||
public PlayerActions @Player => new PlayerActions(this);
|
||||
|
||||
// Meta
|
||||
private readonly InputActionMap m_Meta;
|
||||
private List<IMetaActions> m_MetaActionsCallbackInterfaces = new List<IMetaActions>();
|
||||
private readonly InputAction m_Meta_Start;
|
||||
private readonly InputAction m_Meta_Pause;
|
||||
public struct MetaActions
|
||||
{
|
||||
private @InputActionMaps m_Wrapper;
|
||||
public MetaActions(@InputActionMaps wrapper) { m_Wrapper = wrapper; }
|
||||
public InputAction @Start => m_Wrapper.m_Meta_Start;
|
||||
public InputAction @Pause => m_Wrapper.m_Meta_Pause;
|
||||
public InputActionMap Get() { return m_Wrapper.m_Meta; }
|
||||
public void Enable() { Get().Enable(); }
|
||||
public void Disable() { Get().Disable(); }
|
||||
public bool enabled => Get().enabled;
|
||||
public static implicit operator InputActionMap(MetaActions set) { return set.Get(); }
|
||||
public void AddCallbacks(IMetaActions instance)
|
||||
{
|
||||
if (instance == null || m_Wrapper.m_MetaActionsCallbackInterfaces.Contains(instance)) return;
|
||||
m_Wrapper.m_MetaActionsCallbackInterfaces.Add(instance);
|
||||
@Start.started += instance.OnStart;
|
||||
@Start.performed += instance.OnStart;
|
||||
@Start.canceled += instance.OnStart;
|
||||
@Pause.started += instance.OnPause;
|
||||
@Pause.performed += instance.OnPause;
|
||||
@Pause.canceled += instance.OnPause;
|
||||
}
|
||||
|
||||
private void UnregisterCallbacks(IMetaActions instance)
|
||||
{
|
||||
@Start.started -= instance.OnStart;
|
||||
@Start.performed -= instance.OnStart;
|
||||
@Start.canceled -= instance.OnStart;
|
||||
@Pause.started -= instance.OnPause;
|
||||
@Pause.performed -= instance.OnPause;
|
||||
@Pause.canceled -= instance.OnPause;
|
||||
}
|
||||
|
||||
public void RemoveCallbacks(IMetaActions instance)
|
||||
{
|
||||
if (m_Wrapper.m_MetaActionsCallbackInterfaces.Remove(instance))
|
||||
UnregisterCallbacks(instance);
|
||||
}
|
||||
|
||||
public void SetCallbacks(IMetaActions instance)
|
||||
{
|
||||
foreach (var item in m_Wrapper.m_MetaActionsCallbackInterfaces)
|
||||
UnregisterCallbacks(item);
|
||||
m_Wrapper.m_MetaActionsCallbackInterfaces.Clear();
|
||||
AddCallbacks(instance);
|
||||
}
|
||||
}
|
||||
public MetaActions @Meta => new MetaActions(this);
|
||||
private int m_ControllerSchemeIndex = -1;
|
||||
public InputControlScheme ControllerScheme
|
||||
{
|
||||
@ -648,4 +776,9 @@ public partial class @InputActionMaps: IInputActionCollection2, IDisposable
|
||||
void OnReset(InputAction.CallbackContext context);
|
||||
void OnBoost(InputAction.CallbackContext context);
|
||||
}
|
||||
public interface IMetaActions
|
||||
{
|
||||
void OnStart(InputAction.CallbackContext context);
|
||||
void OnPause(InputAction.CallbackContext context);
|
||||
}
|
||||
}
|
||||
@ -34,7 +34,7 @@
|
||||
},
|
||||
{
|
||||
"name": "Boost",
|
||||
"type": "Button",
|
||||
"type": "PassThrough",
|
||||
"id": "c8819d8c-8dc4-4eb6-ae07-132d6fffbed4",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
@ -407,6 +407,76 @@
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Meta",
|
||||
"id": "a5c1447b-b3fb-4a89-b942-fdf9beb5a79f",
|
||||
"actions": [
|
||||
{
|
||||
"name": "Start",
|
||||
"type": "Button",
|
||||
"id": "18797b6b-ee2f-4fde-85c6-b70e831cdf95",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Pause",
|
||||
"type": "Button",
|
||||
"id": "2cf1215a-a9ec-4bce-8f08-978e08472f6a",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
{
|
||||
"name": "",
|
||||
"id": "5a7b5d2a-ece5-46e0-a265-deb8949f1b47",
|
||||
"path": "<Gamepad>/start",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Controller",
|
||||
"action": "Start",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "3cd0cfc6-4d22-448f-8f55-ce3678def10a",
|
||||
"path": "<Keyboard>/enter",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard 1;Keyboard 2",
|
||||
"action": "Start",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "98e0906e-0a6c-4097-a3f8-4d8640ad4d2a",
|
||||
"path": "<Gamepad>/start",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Controller",
|
||||
"action": "Pause",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "fa09a433-c040-4da0-8e75-7c8a5f62d4ce",
|
||||
"path": "<Keyboard>/escape",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "Keyboard 1;Keyboard 2",
|
||||
"action": "Pause",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"controlSchemes": [
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb7df17cd29013e46a4aa3b247344c43
|
||||
guid: 51f0da2801c1c1d4a9f5b0b465c0cbe5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
37
Assets/Logging/Log4NetConfiguration.xml
Normal file
37
Assets/Logging/Log4NetConfiguration.xml
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<log4net>
|
||||
<!-- Define custom log levels -->
|
||||
<level name="Debug" value="DEBUG" />
|
||||
<level name="Info" value="INFO" />
|
||||
<level name="Warn" value="WARN" />
|
||||
<level name="Error" value="ERROR" />
|
||||
|
||||
<!-- Console appender -->
|
||||
<appender name="UnityDebugConsole" type="UnityDebugAppender">
|
||||
<layout type="log4net.Layout.PatternLayout" name="DefaultLayout">
|
||||
<conversionPattern
|
||||
value=" %message | %logger | Thread: [%thread] %date{ss:fff}ms %newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<!-- Rolling file appender -->
|
||||
<appender name="File" type="log4net.Appender.RollingFileAppender">
|
||||
<file type="log4net.Util.PatternString" value="%property{LogFileName}.log" />
|
||||
<appendToFile value="true" />
|
||||
<rollingStyle value="Size" />
|
||||
<maxSizeRollBackups value="5" />
|
||||
<maximumFileSize value="10MB" />
|
||||
<staticLogFileName value="true" />
|
||||
<layout type="log4net.Layout.PatternLayout" name="DefaultLayout">
|
||||
<conversionPattern
|
||||
value="%date{yyyy-MM-dd HH:mm:ss.ffff} Thread: [%thread] %level %logger - %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<!-- Root logger -->
|
||||
<root>
|
||||
<level value="Debug" />
|
||||
<appender-ref ref="UnityDebugConsole" />
|
||||
<appender-ref ref="File" />
|
||||
</root>
|
||||
</log4net>
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ec15dad1b04214281a9b4853b22e16f8
|
||||
guid: 7c1001ab95d71c345aac765158c01a9f
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e363a7a3b19f9476eafd671062b7b491
|
||||
guid: 0df9c17681eebce4eabca03ea64a85dc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
24
Assets/Logging/UnityDebugAppender.cs
Normal file
24
Assets/Logging/UnityDebugAppender.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using log4net.Appender;
|
||||
using log4net.Core;
|
||||
using UnityEngine;
|
||||
public class UnityDebugAppender : AppenderSkeleton
|
||||
{
|
||||
protected override void Append(LoggingEvent loggingEvent)
|
||||
{
|
||||
string message = RenderLoggingEvent(loggingEvent);
|
||||
string colorTag = GetColorTag(loggingEvent.Level);
|
||||
Debug.Log($"<b>{colorTag}</b> {message}");
|
||||
}
|
||||
private string GetColorTag(Level level)
|
||||
{
|
||||
// Map log levels to colors (customize as needed)
|
||||
switch (level.Name)
|
||||
{
|
||||
case "DEBUG": return "<color=green>Debug: </color>";
|
||||
case "INFO": return @"<color=black>Info: </color>";
|
||||
case "WARN": return @"<color=yellow>Warning: </color>";
|
||||
case "ERROR": return @"<color=red>Error: </color>";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 092bf3b983af64d85be968602701f933
|
||||
guid: b7edba1b4c159d1489cc9ee1d2624e7e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@ -13,6 +13,7 @@ Material:
|
||||
m_ModifiedSerializedProperties: 24
|
||||
m_ValidKeywords:
|
||||
- _ALPHAPREMULTIPLY_ON
|
||||
- _MANUAL_RIPPLE
|
||||
- _OCCLUSIONMAP
|
||||
- _SPECULARHIGHLIGHTS_OFF
|
||||
- _SPECULAR_SETUP
|
||||
|
||||
@ -26,6 +26,7 @@ Material:
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _ALPHAPREMULTIPLY_ON
|
||||
- _MANUAL_RIPPLE
|
||||
- _OCCLUSIONMAP
|
||||
- _SPECULARHIGHLIGHTS_OFF
|
||||
- _SURFACE_TYPE_TRANSPARENT
|
||||
@ -134,12 +135,12 @@ Material:
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _ImpactSpeed: 4.22
|
||||
- _ManualRipple: 0
|
||||
- _ManualRippleAmplitude: 0.1
|
||||
- _ManualRippleAnim: 0
|
||||
- _ManualRipple: 1
|
||||
- _ManualRippleAmplitude: 0.07
|
||||
- _ManualRippleAnim: 1
|
||||
- _ManualRippleDensity: 15
|
||||
- _ManualRippleFrequency: 20
|
||||
- _ManualRippleRadius: 4
|
||||
- _ManualRippleRadius: 2.5
|
||||
- _MaxWaveDistortion: 1.13
|
||||
- _Metallic: 0.88
|
||||
- _MetallicSpecGlossMapToggle: 0
|
||||
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user