Skip to content

This package contains a set of services to ease the development of a basic game architecture

License

Notifications You must be signed in to change notification settings

CoderGamester/Services

Repository files navigation

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 2019.4 or higher. Feel free to try older version.

Installation

To install this project as a Git dependency 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 - to create an seamless abstraction layer of execution between the game logic and any other part of the code by invoking commands
  • CoroutineService - to control all coroutines in a non destroyable object with the possibility to have an end callback
  • DataService - to help loading and saving persistent game Data on the running platform
  • MainInstaller - to provide a simple dependency injection binding installer framework
  • MessageBrokerService - to help decoupled modules/systems to communicate with each other while maintaining the inversion of control principle
  • NetworkService - to provide the possibility to process any network code or to relay backend logic code to a game server running online
  • PoolService - to control all object pools by type and allows to create independent self management object pools
  • TickService - to provide a single control point on Unity update cycle
  • TimeService - to provide a precise control on the game's time (Unix, Unity or DateTime)

Package Structure

<root>
  ├── 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

Command Service

Creates a seamless abstraction layer of execution between the game logic and any other part of the code by invoking commands

// Example TODO

Coroutine Service

Controls all coroutines in a non destroyable object with the possibility to have an end callback

// Example TODO

Data Service

Helps loading and saving persistent game Data on the running platform

// Example TODO

Main Installer

Provides a simple dependency injection binding installer framework

// Example TODO

Message Broker Service

Helps decoupled modules/systems to communicate with each other while maintaining the inversion of control principle

// Example TODO

Network Service

Provides the possibility to process any network code or to relay backend logic code to a game server running online

// Example TODO

Pool Service

Controls all object pools by type and allows to create independent self management object pools

// Example TODO

Tick Service

Provides a single control point on Unity update cycle

// Example TODO

Time Service

Provides a precise control on the game's time (Unix, Unity or DateTime)

// Example TODO

License

MIT