anirul / Darwin

BSD 3-Clause "New" or "Revised" License
5 stars 6 forks source link

gameplay improvement #13

Open mlaagerc2c opened 4 months ago

mlaagerc2c commented 4 months ago

the npc ball need to

aborbtion should be all at once mass transfer only if balls a touching (so if a ball only striffs another there is only a slight mass transfer) so we have a a gradual mass transfer (watch osmos game for that)

speed booster shif key to run for a short time but loose some masse (in form of an ejected npc ball behind the player)

anirul commented 4 months ago

Yea that would be nice! but:

  1. The size this is easy to solve (at the create element you can assign size for these).
  2. Also easy to solve (also at the creation of the element) but this won't work as they are upgrades!

But we need to first!

anirul commented 4 months ago

We need a way to distinguish from upgrade to NPC? The actual problem is we are limited in size we can move from CPU to GPU. and presently we have 1 vec4 for sphere (position and size) and 1 vec4 for color (RGBA). We could use the A for like element type?

enum TypeEnum {
    TYPE_UNKNOWN = 0;           // Unknown this is an error!
    TYPE_GROUND = 1;            // From where the gravity is generated.
    TYPE_EXPLOSION = 2;         // Explosion that push stuff around.
    TYPE_UPGRADE = 3;           // Upgrade to upgrade character.
    TYPE_GREEN = 4;             // Greenery (no effect on anything).
    TYPE_BROWN = 5;             // Tree bark and non destructible elements.
    TYPE_WATER = 6;             // Water.
    TYPE_CHARACTER = 7;         // Player character.
}

And move the value instead of the alpha?

anirul commented 3 months ago

I'd like first to find good default parameters!

// PlayerParameter
// Next: 12
message PlayerParameter {
    // Vertical speed (jumping).
    double vertical_speed = 1;
    // Horizontal speed (running).
    double horizontal_speed = 2;
    // Player start mass.
    double start_mass = 3;
    // Player drop height (start at planet radius and add this value).
    double drop_height = 4;
    // Penalty for eating too similar to player color.
    double penalty = 5;
    // Move cost in mass value.
    double living_cost = 6;
    // Friction (this will stop the move at a certain point).
    double friction = 7;
    // Victory size (in volume).
    double victory_size = 8;
    // Disconnection timeout.
    double disconnection_timeout = 9;
    // Eating speed.
    double eat_speed = 10;
    // Color list.
    repeated ColorParameter colors = 11;
}