Giter Club home page Giter Club logo

ecs's Introduction

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

Installation

Warning This repository not always contains actual submodule, so you should check the latest changes in 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 section).
  4. Be sure your submodule folder has a name Assets/ecs-submodule or Assets/ECS-submodule.
  5. You are ready to Initialize Project.

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"
  }
}
  1. You are ready to Initialize Project.

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

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

Submodule Repository

https://github.com/chromealex/ecs-submodule

FAQ

FAQ

Glossary

Link Description
Video Tutorials Here are some links to youtube channel which shows how to use some features
Classes All classes and structures used in ME.ECS
Memory Allocator How to use memory allocator
Deterministic Operations Deterministic Operations like Random and GetHashCode in collections
Burst How to use burst
World Operations How to operate the world
Default Modules Describe default modules included in ME.ECS by default
Create World Describe how to create new world and set up your empty project
Create Feature How to create new feature
Create System How to create new system
Create Module How to create new module
Create Entity How to create new entity
Create Component How to create new component
Create Filter How to create new filter
Create Marker How to create new marker
Create Timers How to create timers
Create Views How to register prefab in ME.ECS
Send User Input How to send user inputs to systems
Send UI Events How to send events from UI to systems
Receive User Input How to receive markers in systems
Send and Receive RPC Calls How to register object in NetworkModule, send and receive RPC packages
Defines Define usage
Data Configs How to create and use data configs
Global Events How to create and use global events
Code Generators 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
Pathfinding implementation: AStar, FlowField, NavMesh
https://github.com/chromealex/me.ecs-pathfinding
                                                                                                               

Physics

License: Unity
Unity Physics port (DOTS) with fixed-point math
https://github.com/chromealex/me.ecs-physics
                                                                                                               

Input

License: MIT
Input implementation for mouse/touch
https://github.com/chromealex/me.ecs-input
                                                                                                               

Destroy

License: MIT
Additional API to destroy entities by the time
https://github.com/chromealex/me.ecs-destroy
                                                                                                               

Goal-Oriented Action Planning (GOAP)

License: MIT
Goal-Oriented Action Planning (GOAP) implementation
https://github.com/chromealex/me.ecs-goap
                                                                                                               

Data Config Generator

License: MIT
Data Config Generator for Google Spreadsheets
https://github.com/chromealex/me.ecs-dataconfiggenerator
                                                                                                               

Addressable Views

License: MIT
Additional API to be able load addressables
https://github.com/chromealex/me.ecs-viewaddressables
                                                                                                               

Collections: DataObject

License: MIT
DataObject collections
https://github.com/chromealex/me.ecs-collections-dataobject
                                                                                                               

Collections: Intrusive

License: MIT
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)

ecs's People

Contributors

chromealex avatar jlabarca avatar oleg-grim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecs's Issues

[BUG] System does not call 'AdvanceTick'

Expected behavior
'AdvanceTick' should be called on every entity if there is no filter. But with or without a filter, it doesn't get called at all. Nevertheless, 'OnConstruct' is quietly called.

Screenshots
Create а Feature...
изображение
Loading Feature...
изображение
System code...
изображение

Unity Version: 2022.3.0

[BUG] ECS Initializer "Features" incorrect display

Describe the bug
ECS Initializer "Features" incorrect display

Screenshots
image
image
image
image

Unity (please complete the following information):

  • Version: 2021.3.4f1c1 apple silicon
    It seems that this project recommend unity2020, but since unity support for apple silicon only started from 2021 version, I had to use unity 2021

Additional context

ecs-submodule: 2.4.100

MacBook Pro 16' 2021
macOS 13.0

namespace is generated incorrectly

When create system or components namespace sometime is generated incorrectly.
Example
Assets/InfinityWar/Features/Units/Systems
Version me ecs 01.2021

Assembly Reload Time

The latest version of the framework has a huge Assembly Reload Time

Test on Unity 2019.4.26f1 2020.2.xx 2020.1.xx
Use https://github.com/chromealex/ecs.example

Profiling tool https://github.com/Unity-Technologies/com.unity.editoriterationprofiler

By default Reload time (fast)
image

After update to last version (slow)
image

In a real case, without debugging. Changing 1 line of code in one case takes 4s, in another 12s.
If you remove Burst and Collections, the time drops from 12s to 8s

Is there anything you can do about this? For fast iteration, an initial compilation time of 12s is very annoying...
And one more question. Is it possible to develop without a Unity? Is it possible to build game logic and framework code (without unity) to DLL?

[BUG]

Unable to install this project - instructions unclear / outdated.

Which version of unity is required? Project seems to require outdated unity modules.

Tutorial

Follow your work for quite a while :)
A video tutorial would be greatly appreciated!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.