https://github.com/codergamester/services
This package contains a set of services to ease the development of a basic game architecture
https://github.com/codergamester/services
architecture-components csharp game-development gamedev objectpool services unity unity-package unity3d
Last synced: 5 months ago
JSON representation
This package contains a set of services to ease the development of a basic game architecture
- Host: GitHub
- URL: https://github.com/codergamester/services
- Owner: CoderGamester
- License: mit
- Created: 2020-01-06T11:17:49.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-07T18:53:52.000Z (10 months ago)
- Last Synced: 2025-06-04T06:15:02.941Z (8 months ago)
- Topics: architecture-components, csharp, game-development, gamedev, objectpool, services, unity, unity-package, unity3d
- Language: C#
- Homepage:
- Size: 159 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Services Package
The purpose of this package is to provide a set of services to ease the development of a basic game architecture.
## System Requirements
- [Unity](http://unity3d.com/) 2019.4 or higher. Feel free to try older version.
## Installation
To install this project as a [Git dependency](https://docs.unity3d.com/Manual/upm-git.html) using the Unity Package Manager,
add the following line to your project's `manifest.json`:
```
"com.gamelovers.services": "https://github.com/CoderGamester/com.gamelovers.services.git"
```
You will need to have Git installed and available in your system's PATH.
It is also possible to just add a package via the *Package Manager* window inside Unity via git url: `https://github.com/CoderGamester/com.gamelovers.services.git`
## Service List
The services provided by this package are:
- [CommandService](#CommandService) - to create an seamless abstraction layer of execution between the game logic and any other part of the code by invoking commands
- [CoroutineService](#CoroutineService) - to control all coroutines in a non destroyable object with the possibility to have an end callback
- [DataService](#DataService) - to help loading and saving persistent game Data on the running platform
- [MainInstaller](#MainInstaller) - to provide a simple dependency injection binding installer framework
- [MessageBrokerService](#MessageBrokerService) - to help decoupled modules/systems to communicate with each other while maintaining the inversion of control principle
- [NetworkService](#NetworkService) - to provide the possibility to process any network code or to relay backend logic code to a game server running online
- [PoolService](#PoolService) - to control all object pools by type and allows to create independent self management object pools
- [TickService](#TickService) - to provide a single control point on Unity update cycle
- [TimeService](#TimeService) - to provide a precise control on the game's time (Unix, Unity or DateTime)
## Package Structure
```none
├── package.json
├── README.md
├── CHANGELOG.md
├── Runtime
│ ├── GameLovers.Services.asmdef
│ ├── CommandService.cs
│ ├── CoroutineService.cs
│ ├── DataService.cs
│ ├── MainInstaller.cs
│ ├── MessageBrokerService.cs
│ ├── NetworkService.cs
│ ├── PoolService.cs
│ ├── TickService.cs
│ └── TimeService.cs
└── Tests
├── Editor
│ ├── GameLovers.Services.Editor.Tests.asmdef
│ ├── CommandServiceTest.cs
│ ├── DataServiceTest.cs
│ ├── IntegrationTest.cs
│ ├── MainInstallerTest.cs
│ ├── MessageBrokerServiceTest.cs
│ ├── NetworkServiceTest.cs
│ ├── PoolServiceTest.cs
│ ├── MessageBrokerServiceTest.cs
│ ├── TickServiceTest.cs
│ └── TimeServiceTest.cs
└── Runtime
├── GameLovers.Services.Tests.asmdef
└── CoroutineServiceTest.cs
```
Creates a seamless abstraction layer of execution between the game logic and any other part of the code by invoking commands
```csharp
// Example TODO
```
Controls all coroutines in a non destroyable object with the possibility to have an end callback
```csharp
// Example TODO
```
Helps loading and saving persistent game Data on the running platform
```csharp
// Example TODO
```
Provides a simple dependency injection binding installer framework
```csharp
// Example TODO
```
Helps decoupled modules/systems to communicate with each other while maintaining the inversion of control principle
```csharp
// Example TODO
```
Provides the possibility to process any network code or to relay backend logic code to a game server running online
```csharp
// Example TODO
```
Controls all object pools by type and allows to create independent self management object pools
```csharp
// Example TODO
```
Provides a single control point on Unity update cycle
```csharp
// Example TODO
```
Provides a precise control on the game's time (Unix, Unity or DateTime)
```csharp
// Example TODO
```
## License
[MIT](LICENSE.md)