Giter VIP home page Giter VIP logo

evol's Introduction

Discord Chat

Evol is a multiplayer hero defense.

Multiplayer

Abilities

Deadly forest

Inventory

Part of the lore is generated using deep learning OpenAi's gpt2

The old machine learning part is here, thinking about where to add ML in this project

Videos

Oldest to newest:

Features

  • Abilities that can evolve with runes (duplicate, enlarge ...)
  • Items / Inventory system
  • Game loop
  • Forest propagation
  • Working UI
  • Working multiplayer
  • Account system

Contribution

Any contribution are welcome either development, assets or just ideas, feedbacks, advice just be sure to follow the rules

Thanks

A list of all assets used is available

evol's People

Contributors

aubinp avatar bfourquin avatar fourquinb avatar libr4rian avatar louis030195 avatar rom1504 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

vedraiyani

evol's Issues

GOD AI

GOD AI

  • Make the goal of agents harder to reach by modifying environment in order to generalize the AI and avoid overfitting later on real environment
  • Tweak the paramaters like life loss per actions, rewards etc. in order to improve the agents performances

Heuristic AI implementation

I propose to use a Finite State Machine (FSM) code architecture for the heuristic AI
An AI is always in a state, a state has:

  • Actions (what to do)
  • Transitions which includes decisions (conditions to change state)

Which looks like this
image
image
image

3D models TODO list

  • Living beings with animations
  • Environment (Universim-like design would be nice ?) like this:
    image

Design

TODO list by order of importance

  • Character (model, rig, animations ...)
  • Wolf (rig, animations ...)
  • Tree boss (model, rig, animations ...)
  • Level design
  • Base camp
  • UI #24

Évolution

There are many ways to implement evolution but here is a simple one :
For every kind of agent (herbivorous, carnivorous) :
Each worker is an individual with carecteristics (speed, size,... )
Every N (= 10000 for example or 1000) steps a selection+reproduction is done : it select the 5 individual with the best reward, do the crossover and produce 50 new individual, one by worker.
Reinforcement learning procedure stay the same.

On death and reset of an individual during an evolution step, take the same carecteristics (the mean reward is considered at the end of the evolution step)

Cloud training script

Make a script to train on cloud (aws, gc ...)

  • clone ml agents
  • install everything
  • scp the Evol binary + chmod +x Evol.x86_64
  • train

tensorboard ?

Networking local player control broken

First player to join the server can control the char perfectly, when another player join, he loses control and control the other player (the other player can control his own gameobject).

Both players are perfectly owning their own player gameobject, maybe script enable/disable issue ...

Cameras are ok

Separate program into 3 scenes

We are mixing 3 axes here :

  • The game : with features, graphism, Android compilation,...
  • Reinforcement learning : make animals do the right action in a smart way, using the right reward, algorithm, actions and observations
  • Evolution : make animals characteristics change based on survival in the environment

It is hard to explore the 3 axes in a single scene/game.
I propose to instead make 3 scenes with a single axe in each scene :

  • One with only the game : with interesting features and graphism but no rl and no evolution, behavior of animals will be a basic heuristic (go to nearest food)
  • One with only rl : with a fast converging algo producing interesting behaviors but no complex game features and no evolution
  • One with only evolution : be able to quickly see animals evolve but with no complex game features and no rl (no training time)

We could then have a few other scenes mixing 2 of the axes or the 3 of them.

That organization will make it possible to make quick progress on these mostly independent problematics and get interesting results faster.

Realistic evolution

Another way to do evolution is to implement it as it works in real life nature : make individual go to each other to reproduce when their life is high enough. Produce a child when they reproduce. No selection phase, only death is the selection.

It is realistic and work well but it can result in herbivorous or carnivorous winning.

TODO dev

TODO list dev by order of importance:

  • Forest
  • Game loop
  • Player controller
  • Improve network
  • Add spells / balance
  • AI

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.