Skip to content

kul-sudo/eportal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  1. About the project
  2. How to help the project?

About the project

image

What is eportal?

e in eportal stands for evolution, so eportal is an evolution portal where you can create your own configurable worlds.

Plants

Plants spawn in different places and eventually die. They serve as food for the bodies. The plants are split into green and yellow: grass and bananas. Bananas give more energy than grass.

Bodies

Bodies are split into types. Each type has a unique color.

Food can be:

Every body has an eating strategy that can be:

When the body reaches food, the food disappears, which means it's been eaten by the body. The body gets energy from it.

When the body goes beyond the evolution field, it gets teleported to the opposite border.

Energy

The body gets energy by eating food:

  • plants: Plants of one kind all give the same energy.
  • living bodies: Living bodies give their current energy.
  • dead bodies: Dead bodies give the energy they had the moment they died.

Omnivorous bodies only get certain part of the energy of the food they eat, unlike carnivorous and herbivorous bodies.

The body constantly spends energy on:

  • living
  • movement
  • skills
  • healing from viruses
  • vision: Carnivorous bodies spend energy on vision only when someone is within their vision distance.

Properties

The body has properties that affect whether it survives.

  • energy: The amount of energy the body has left. When the energy goes below a specific point, the body dies.
  • speed: The speed the body moves with.
  • vision distance: The radius of how far the body can see.
  • division threshold: The threshold of energy the body has to be eligible to procreate.
  • skills: The skills the body has.
  • viruses: The viruses the body has been infected with.
  • lifespan: How long the body has left to live in case it theoretically stands still. The life shortens when the body moves, depending on the speed.

Procreation

The body procreates and therefore splits into 2 other bodies if and only if:

  • It isn't being chased by anyone
  • Its energy is greater than its division threshold

Both children of the body get the following properties directly:

  • eating strategy
  • viruses
  • energy / 2

Both children of the body get the following properties with a deviation:

  • speed
  • vision distance
  • division threshold
  • skills

Death

The body dies if:

  • Its energy drops below a specific point
  • Its lifetime is over
  • It's been eaten

It becomes an eatable cross in the first 2 cases. The cross disappears in a certain period of time.

Skills

Every body can coincidentally get or lose any of the following skills:

  1. Do not compete with relatives: When the body sees another body of its type following a plant, body, or cross, it doesn't try to follow the same object.
  2. Do not compete with younger relatives: When the body sees a younger body of its type following a plant, body, or cross, it doesn't try to follow the same object.
  3. Alive when arrived: When the body sees a plant or dead body, the body makes sure it doesn't die before it gets to the food.
  4. Profitable when arrived: When the body sees a living body, cross, or plant, the body makes sure it'll get more energy when it eats it than it spends on getting to that food.
  5. Prioritize faster chasers: When the body sees it's being chased by several other bodies, it escapes from the faster one.
  6. Avoid new viruses: When the body sees a living body, it makes sure that eating it won't result in getting viruses the body doesn't have yet.
  7. Will arrive first: When the body sees there are other bodies following the same food as it is following, the body makes sure it gets there the fastest.
  8. Eat crosses of my type: When the body sees a cross of its type, it eats the cross to make sure bodies of other types don't eat it and therefore don't get the energy.
  9. Avoid infected crosses: When the body sees a cross contains viruses the body itself doesn't have yet, it avoids the cross.

Viruses

Every omnivorous or carnivorous body can be infected (a red dot is shown on top of the body) with the following viruses:

  1. Speed virus: The virus steals specific part of the body's speed the moment the body gets infected with the virus.
  2. Vision virus: The virus steals specific part of the body's vision distance the moment the body gets infected with the virus.

The body gets infected with a virus:

  • At the start of the evolution
  • Throughout the evolution by eating infected living or dead bodies

The body spends energy on healing from the virus. However, if the body has got rid of the virus, the effects of the virus stay on.

Conditions

The evolution process is periodically struck by conditions.

  • Drought: Fewer plants grow.
  • Rain: More plants grow.

Zoom

When the zoom mode is on, you can see:

  • Vision distance circles
  • Lines between the body and its food
  • The info about each specific body

Interactions

  • esc: quit the program
  • left mouse button: toggle the zoom mode
  • 1: toggle showing the info
  • 2: toggle showing the info about the current evolution
  • 3: update the mid-evolution settings from the config if there have been changes
  • space: toggle drawing

Configuration

All configuration is done through config.toml. The config has to:

  • be named correctly
  • be in the same directory as the binary/executable
  • have valid syntax

The default config is here: https://github.com/kul-sudo/eportal/blob/main/config.toml

How to run?

Compile from source

If you don't have the Rust compiler installed yet, get it from rustup.rs. Then simply run this command wherever you feel comfortable:

git clone https://github.com/kul-sudo/eportal; cd eportal; RUSTFLAGS='-C target-cpu=native' cargo run --release;

Get a Linux or Windows binary from the releases

https://github.com/kul-sudo/eportal/releases

How to help the project?

Financially

Even small donations are appreciated:

Contributions

Especially:

  1. Better organizing the code
  2. Documentantion in the code and in the README (what you're reading right now)
  3. Adding more viruses and skills
  4. Handle values in config.toml leading to crashes

About

An evolution simulator in Rust

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages