Milestone 3: v0.3.0 - First interactive release

(Erlend Sogge Heggen) #1

I have a pretty clear idea of how our first playable release will play out. I’ve divided my notes into defined and undefined to give an indication of how complete I consider different designs, but anything is of course subject to discussion.


Goal: Don’t let any creature species go extinct

In other words the loss condition is that a creature species goes extinct as a result of the player failing to reach a stable (enough) equilibrium in the ecosystem.

2-5 minute game sessions

A game session should last about 2-5 minutes. It won’t be variable: we will settle on a final timer after some play-testing.

All game sessions have a maximum play time, but they may also end before reaching their maximum if a creature species dies out before the interactive part of the game session has ended.

Play X minutes, simulate for X minutes

Every game session will operate this way. Let’s say the fixed game length we landed on is 5 minutes. After 5 minutes of gameplay you can no longer interact with the game. It will now play itself out without any intervention for another 5 minutes* (sped up). If no creature species has gone extinct in this time, you’ve successfully completed the challenge. :100: :confetti_ball:

Interaction flow (in default speed)

10 seconds of non-interactive world simulation
10 second window to choose a mutation. Change is not applied until the end of the decision window.
10 seconds of non-interactive world simulation
10 second window (…)

Optional: Session seeds

We’ve talked about determinism. I think we should embrace it as a core mechanic. It’s a good constraint to grind our design explorations against to make them polished.

Whenever I start a game I want to have two options:

  • Play random seed
  • Play specific seed

Mostly I’ll play random seed. But if @khskarl tells me about how he just can’t figure out if seed#113 is even solvable, I’ll want to try that specific seed out for myself and see if I can crack it. I think all of us would want to give it a go :wink:

Later on we might even add options such as “Popular seeds” and “Unsolved seeds”.

Think of every seed in a game iteration as a distinct puzzle to be solved.

Optional: Sentry tracking

There’s a very simple and interesting use case for Sentry here as well, which we’ve successfully integrated with Amethyst already. (We have an instance somewhere but I think it’s private for now.)

We’d like to track things like:

  • How many different seeds have been played
  • Which seeds take the most/least attempts to solve?
  • Which seeds remain unsolved?

In the first version of the game we could limit the seeds to just 10 (i.e. they don’t even have to be computer-generated) so that we’ll have some meaningful overlap. In the early stages of the game we’ll be lucky to keep a play tester engaged for more than a handful of game sessions anyway.


Traits manipulation

We’ve touched on this a little bit in chat:

Erlend said:

I think I know what I want the first version of interaction to be like. Quite simply: Every 20 seconds you get 10 seconds to make a decision. You get to choose one creature type to tweak. You can change up the stats of this creature however you like, within certain power limits of course.

Think of it essentially like each creature has 10 traits (movement speed, health etc) all with 10 upgrade levels, but you only have 50 upgrade points per creature. And every round you only get to choose a single creature to tweak. Followed by 20 seconds of gameplay you can’t interact with

You just gotta observe and figure out where you should attempt a balancing act next

Makes sense?

Marot said:

I like the idea, but for the first iteration I would simplify it: Every 20 seconds let the user choose between two random traits for each type: E.g. choose between + 20 Health; - 0.1 attack speed and +0.1 attack speed - 0.1 speed

Or something similar, basically I want the user to be able to do the decision with a single click

I like @marot’s simplified approach better than my more complicated design. But we can’t do random traits because we want other players’ playthroughs of a particular seed to play out exactly the same if they make the same choices, and they should have the exact same choices available to them. I realise that with seed-based faux randomness the game will actually remain deterministic, but I want players to be able to predict to a pretty good extent what options they’ll have available to them in the next turn when they’re deciding on a play for the current turn.

Maybe the degree to which you can manipulate any given trait is decided by the seed. So in seed#111 you can change “Movement speed” in increments of 1 point, whereas in seed#222 “Movement speed” can only be changed in increments of 5 points. Heck, in seed#333 “Movement speed” can’t be changed at all!

This would make it so that you can’t easily use the same strategy for achieving equilibrium in every seed session.

I’ll follow up later with a more specced out version of what this could look like.

The prospect of playing Evoli as a crowd-play experience
(Erlend Sogge Heggen) #2

Made some mockups of how a simple interaction flow could work.

  1. Select creature to inspect
  2. Opt to edit creature traits
  3. Choose one trait to either upgrade or downgrade.

In this seed, the three traits available for edit for all creatures are move speed, spawn time and line of sight.

A different seed might have unique combinations of editable traits per creature.

During this decision process the game should be fixed at 0.5x speed (didn’t pay any special attention to that part of the interface in this mock-up though). Game resumes to normal game speed as soon as the player has made their decision, and then their edit is applied at the end of the 10 game seconds.

(Karll) #3

Maybe a system like Tetris? In Tetris you can see the next N tetriminos that will come, we could show the next N pairs of random traits.

There is one challenge about the seeds aspect, most seeds will be rather similar to each other, so maybe those “10 seeds” would be better approached as 10 hand made levels.

Also, a thought for the future:

Recently I had one idea that players could change psychological traits instead of “physiological traits” and have food carry different nutrients.
Different nutrients can change positively or negatively a creature’s physical traits as they eat it, later the creature can reproduce and the offspring will have a mix of their parents’ physiological and psychological traits.

But this changes a little bit the style of the game, currently it is about balancing the attributes so the creatures can coexist, this change would make the game about finding equilibrium in the natural selection of these creatures.

(Erlend Sogge Heggen) #4

If you and @marot can agree on a “random traits” interface then I’m fine with starting there. I still have a feeling this style of randomness will compromise important strategic elements of the game, but it’s as good of a first iteration as any :+1:

Yeah exactly, for the first “batch of seeds” we’d just fake it by hand rolling 10 of our own design.

1 Like
(Erlend Sogge Heggen) #5

My current thinking for a first-take of our interactive experience works something like this:

You control just a single species, the herbivores.

Every action round, you have to pick between two random trait upgrades. For example “movespeed +3 vs line-of-sight +5”.

The upgrade is applied to 50% of all living herbivores.

New herbivores have a % chance of spawning with the trait upgrade relative to the number of living herbivores that carry the upgrade. In other words, if the herbivores with the upgrade have a greater survival rate, the upgraded herbivore will make up an growing majority of the herbivore population.

If you make the herbivores too good at avoiding predators, the predators will go extinct and the herbivores will eat the plants faster than they can reproduce, causing those to go extinct as well.