Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/chromealex/ecs

ECS for Unity with full game state automatic rollbacks
https://github.com/chromealex/ecs

3d-pathfinding csharp csharp-framework determinism ecs ecs-framework framework game-state network networking pathfinding rollback rts states states-history transport unity unity3d

Last synced: 11 days ago
JSON representation

ECS for Unity with full game state automatic rollbacks

Lists

README

        

### ME.BECS now is available https://github.com/chromealex/ME.BECS

# ME.ECS

ME.ECS - it's ECS implementation for Unity Engine with full state automatic rollbacks. In general ME.ECS could be used for multiplayer real-time strategy games (or any rudp/tcp-based) because of Network support out of the box with automatic rollbacks. You can set up tick time for your game and ME.ECS will store your state and automatically sync game instances using minimum traffic (just user RPC calls, no full game sync required).

[![License: MIT](https://img.shields.io/github/license/chromealex/ecs?style=flat&color=greenyellow)](https://github.com/chromealex/ecs/blob/master/LICENSE)


[![](https://img.shields.io/discord/434291087629221918?style=flat&color=blueviolet)](https://discord.gg/SxJJPPNsSf)

## Installation

> **Warning**
> This repository not always contains actual submodule, so you should check the latest changes in [submodule](https://github.com/chromealex/ecs-submodule)

Using submodule

1. Download or add as a submodule this repository https://github.com/chromealex/ecs-submodule.
2. Create an empty file called ```csc.gen.rsp``` inside Assets folder. Your file should have the path ```Assets/csc.gen.rsp```.
3. Add packages (see [Package Dependencies](#package-dependencies) section).
4. Be sure your submodule folder has a name ```Assets/ecs-submodule``` or ```Assets/ECS-submodule```.
5. You are ready to [Initialize Project](Docs/VideoTutorials.md).

Using Unity Package Manager

1. Create an empty file called ```csc.gen.rsp``` inside Assets folder. Your file should have the path ```Assets/csc.gen.rsp```.
2. Open ```Packages/manifest.json``` file.
3. Add ME.ECS to your dependencies section:
```
{
"dependencies": {
[HERE ARE OTHER PACKAGES]
"com.me.ecs": "https://github.com/chromealex/ecs-submodule.git"
}
}
```
4. You are ready to [Initialize Project](Docs/VideoTutorials.md).

### Package Dependencies

```
"com.unity.collections": "1.2.3",
"com.unity.ui": "1.0.0-preview.18",
"com.unity.addressables": "1.19.9",
"com.unity.burst": "1.6.5",
"com.unity.mathematics": "1.2.6",
"com.unity.localization": "1.0.5",
"com.unity.profiling.core": "1.0.0"
```

## Example Repository

https://github.com/Oleg-Grim/Pong-Out

Pong Out - a classic pong game with fully functioning multiplayer made with ME.ECS

## Submodule Repository
https://github.com/chromealex/ecs-submodule

## FAQ
[FAQ](Docs/FAQ.md)

## Glossary

| Link | Description |
| ------ | ----- |
| [Video Tutorials](Docs/VideoTutorials.md) | Here are some links to youtube channel which shows how to use some features |
| [Classes](Docs/Manual-Classes.md) | All classes and structures used in ME.ECS |
| [Memory Allocator](Docs/MemoryAllocator.md) | How to use memory allocator |
| [Deterministic Operations](Docs/Manual-Deterministic.md) | Deterministic Operations like Random and GetHashCode in collections |
| [Burst](Docs/Manual-Burst.md) | How to use burst |
| [World Operations](Docs/World-Operations.md) | How to operate the world |
| [Default Modules](Docs/DefaultModules.md) | Describe default modules included in ME.ECS by default |
| [Create World](Docs/Manual-CreatingWorld.md) | Describe how to create new world and set up your empty project |
| [Create Feature](Docs/Manual-CreatingFeature.md) | How to create new feature |
| [Create System](Docs/Manual-CreatingSystems.md) | How to create new system |
| [Create Module](Docs/Manual-CreatingModules.md) | How to create new module |
| [Create Entity](Docs/Manual-CreatingEntities.md) | How to create new entity |
| [Create Component](Docs/Manual-CreatingComponents.md) | How to create new component |
| [Create Filter](Docs/CreatingFilters-Archetypes.md) | How to create new filter |
| [Create Marker](Docs/Manual-CreatingMarkers.md) | How to create new marker |
| [Create Timers](Docs/Manual-Timers.md) | How to create timers |
| [Create Views](Docs/Manual-CreatingViews.md) | How to register prefab in ME.ECS |
| [Send User Input](Docs/Manual-SendingUserInputToWorld.md) | How to send user inputs to systems |
| [Send UI Events](Docs/Manual-SendingUIEventsToWorld.md) | How to send events from UI to systems |
| [Receive User Input](Docs/Manual-ReceivingUserInputInWorld.md) | How to receive markers in systems |
| [Send and Receive RPC Calls](Docs/Manual-SendingAndReceivingRPCCalls.md) | How to register object in **NetworkModule**, send and receive RPC packages |
| [Defines](Docs/Defines.md) | Define usage |
| [Data Configs](Docs/DataConfig-Readme.md) | How to create and use data configs |
| [Global Events](Docs/GlobalEvents-Readme.md) | How to create and use global events |
| [Code Generators](Docs/CodeGenerators.md) | Code Generators usage |

## ME.ECS Add-ons

> **Note**
> To install modules you can use `ME.ECS/Add-ons` menu (all packages listed here: https://github.com/chromealex/ecs-submodule/blob/master/Addons.md).

|

Pathfinding

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-pathfinding?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-pathfinding/blob/master/LICENSE)
Pathfinding implementation: AStar, FlowField, NavMesh
https://github.com/chromealex/me.ecs-pathfinding |
|                                                                                                               |


|

Physics

|
| ------ |
| [![License: Unity](https://img.shields.io/badge/license-UCL-yellowgreen)](https://github.com/chromealex/me.ecs-physics/blob/main/LICENSE)
Unity Physics port (DOTS) with fixed-point math
https://github.com/chromealex/me.ecs-physics |
|                                                                                                               |


|

Input

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-input?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-input/blob/main/LICENSE)
Input implementation for mouse/touch
https://github.com/chromealex/me.ecs-input |
|                                                                                                               |


|

Destroy

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-destroy?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-destroy/blob/master/LICENSE)
Additional API to destroy entities by the time
https://github.com/chromealex/me.ecs-destroy |
|                                                                                                               |


|

Goal-Oriented Action Planning (GOAP)

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-goap?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-goap/blob/master/LICENSE)
Goal-Oriented Action Planning (GOAP) implementation
https://github.com/chromealex/me.ecs-goap |
|                                                                                                               |


|

Data Config Generator

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-dataconfiggenerator?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-dataconfiggenerator/blob/master/LICENSE)
Data Config Generator for Google Spreadsheets
https://github.com/chromealex/me.ecs-dataconfiggenerator |
|                                                                                                               |


|

Addressable Views

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-viewaddressables?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-viewaddressables/blob/master/LICENSE)
Additional API to be able load addressables
https://github.com/chromealex/me.ecs-viewaddressables |
|                                                                                                               |


|

Collections: DataObject

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-collections-dataobject?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-collections-dataobject/blob/master/LICENSE)
DataObject collections
https://github.com/chromealex/me.ecs-collections-dataobject |
|                                                                                                               |


|

Collections: Intrusive

|
| ------ |
| [![License: MIT](https://img.shields.io/github/license/chromealex/me.ecs-collections-intrusive?style=flat&color=greenyellow)](https://github.com/chromealex/me.ecs-collections-intrusive/blob/master/LICENSE)
Intrusive collections
https://github.com/chromealex/me.ecs-collections-intrusive |
|                                                                                                               |

## Discord
https://discord.gg/SxJJPPNsSf

## Contact Me


## Inspired by
>

> Mushroom Wars 2

> Steam, iOS, Android, Switch, XBOXOne, PS4

## Projects
>

> Wild Wars

> Mobile (iOS/Android)

>

> Qubix Infinity

> WebGL

>

> Unreleased Project #1

> Mobile (iOS/Android)