Skip to content

Commit

Permalink
Updated README.md for better readability to external developers
Browse files Browse the repository at this point in the history
Added windsurfrules file to help AI assistant to better predict the code on Windsurf IDE
  • Loading branch information
CoderGamester committed Jan 16, 2025
1 parent fc22f20 commit 43059ef
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 5 deletions.
3 changes: 3 additions & 0 deletions .windsurfrules
Original file line number Diff line number Diff line change
@@ -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
81 changes: 76 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down

0 comments on commit 43059ef

Please sign in to comment.