From 43059efa02912d45cd17df753f472e8901b587bc Mon Sep 17 00:00:00 2001 From: CoderGamester Date: Thu, 16 Jan 2025 13:16:19 +0000 Subject: [PATCH] Updated README.md for better readability to external developers Added windsurfrules file to help AI assistant to better predict the code on Windsurf IDE --- .windsurfrules | 3 ++ README.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 .windsurfrules diff --git a/.windsurfrules b/.windsurfrules new file mode 100644 index 0000000..2570310 --- /dev/null +++ b/.windsurfrules @@ -0,0 +1,3 @@ +This project is made in Unity 2022.3.51f1 +The code is in the "Assets/Scripts" folder +Use 3rd party libraries are in the "Assets/Libs" and "Library/PackageCache" folders to help the project code development \ No newline at end of file diff --git a/README.md b/README.md index 6fcb2bc..a05b94e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,81 @@ -# Core-Game -This repository is a the core foundation of a new game project. +# Core Game Template Project -- Open in Unity 2022.3.1f or later +## 🎮 Overview +A Unity game template project to develop your own mobile or web game, designed with scalability, performance, and best practices in mind. + +## 🚀 Features +- Follow game development best practices with SOLID principles foundation +- Optimized performance and architecture design +- Contains a [Compliance Screen](https://github.com/CoderGamester/Core-Game/blob/master/Assets/Addressables/Prefabs/UI/Compliance%20Screen.prefab) for mobile and web-based games with terms of service and privacy policy + +## 📦 Prerequisites +- [Unity 2022.3.51f1](https://unity.com/releases/editor/whats-new/2022.3.51) +- .NET 4.x or .NET Standard 2.1 compatible +- Git LFS (Large File Storage) + +## 🛠️ Installation +1. Clone the repository: + ```bash + git clone https://github.com/CoderGamester/Core-Game/blob/master/README.md + ``` +2. Open the project in Unity Hub +3. Open Addressables Groups page and generate Addressables settings. Window > Asset Management > Addressables > Groups > Generate Settings +4. Open the UiConfigs scriptable object. Search in the project or Tools > Select UiConfigs.asset +5. Open the "Boot" Scene to play the game demo +6. Run the project + +## 🧩 Project Structure +- `Assets/`: Main project assets + - `Addressables/`: Static game resources to be loaded at runtime via addressables + - `Libs/`: Third-party libraries + - `Resources/`: **AVOID THIS FOLDER**. Only used by deafult Unity assets or some plugins. Use Addressables instead + - `Src/`: All game relacted code + - `Scenes/`: Game scenes and that are not dynamic loaded at runtime via addressables + +## 📚 Package Dependencies +- [Game Services](https://github.com/CoderGamester/Services) to provide the intricate connection between game logic and different modules of the game +- [Game State Machine](https://github.com/CoderGamester/StatechartMachine) to control the game's flow +- [Ui Service](https://github.com/CoderGamester/UiService) to provide the necessary MVP architecture to control the game's UI flow and object visibility +- [Asset Importer](https://github.com/CoderGamester/AssetsImporter) to import addressable assets from the Unity Hub +- [Configs Provider](https://github.com/CoderGamester/ConfigsProvider) to provide the necessary static configuration for the game. Useful for game settings and to use in par with the [Asset Importer](https://github.com/CoderGamester/AssetsImporter) +- [Google Sheet Importer](https://github.com/CoderGamester/GoogleSheetImporter) to import data from Google Sheets +- [Data Extensions](https://github.com/CoderGamester/DataExtensions) to provide the necessary Unity's data extensions to use in a game. E.g. [Observable Collections](https://github.com/CoderGamester/Unity-DataTypeExtensions/blob/master/Runtime/ObservableList.cs) +- [Notification Service](https://github.com/CoderGamester/NotificationService) to provide the necessary notification system to use in a game running on a notification based device (e.g web browser & mobile) +- [Mobile UI Service](https://github.com/CoderGamester/Unity-Mobile-NativeUI) to provide the default mobile app UI system +- [Unitask](https://github.com/Cysharp/UniTask) to provide the necessary async extensions to use in a game +- [Mathfs](https://github.com/FreyaHolmer/Mathfs) to provide the necessary math extensions to use in a game + +## 🔧 Dependency Injection +This project uses manual dependency injection through the [Main Installer](https://github.com/CoderGamester/Services/blob/master/Runtime/MainInstaller.cs), providing: +- Loose coupling between game modules +- Easy testability +- Flexible and modular architecture + +## 🌐 Asset Management +Leverages Unity Addressables with [Asset Importer](https://github.com/CoderGamester/AssetsImporter) for: +- Efficient asset loading +- Dynamic resource management +- Reduced initial load times +- Generate Addressables loading paths and groups for easier coding in [AddressableId](https://github.com/CoderGamester/Core-Game/blob/master/Assets/Src/Ids/AddressableId.cs). Can be used in the following way: +```csharp +AddressableId.Addressables_Configs_DataConfigs.GetConfig().Address; +``` - Open Addressables Groups page and generate Addressables settings. Window > Asset Management > Addressables > Groups > Generate Settings -- Open the UiConfigs scriptable object. Search in the project or Tools > Select UiConfigs.asset -- Open the "Boot" Scene to play the game demo + +## 🤝 Contributing +1. Fork the repository +2. Create your feature branch (`git checkout -b feature/AmazingFeature`) +3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + +## 📄 License +[MIT License](https://github.com/CoderGamester/Core-Game/blob/master/LICENSE) + +## 📞 Contact +Create new issues and pull requests at or contact us via Discord for any questions or suggestions: +- [GitHub](https://github.com/CoderGamester/Core-Game/issues) +- [Discord](https://discord.gg/MaDymKtKWy) ## Unity Project Keybind Shortcuts