Evoli: MVP implementation tracker

(Karll) #1

As @erlend_sh mentioned on Discord, I have been working on a prototype for the Evolution Island project, and it’s now on a good point to make this post!

I mostly worked on it with the mindset of getting something done as a starting point for a team project, in which becomes much easier to raise a task list that people can pick and do, and to see the shortcomings of this iteration to improve on it.

Current status & core systems briefing

“Wow, look at these charismatic faces, can I take one of them in a date?” - Maybe you, impressed by the beautiful magenta lines and the brutal charisma of a carnivorous entity.

This prototype has some very basic steering-like behaviour, it has a Wander behavior, a system to enforce bounds EnforceBoundsSystem and a weakly opinionated structure for the project.

By weakly opinionated I just mean it has a structure but the opinion is restricted to “What felt good at the moment to have a rather modular structure”, so it isn’t anything well planned, actually I think the structure of the project can benefit a lot more from a discussion as a team, the current structure is useful exactly to have a common reference point to tear apart and improve.

The wander behavior is implemented as a WanderSystem, which uses mainly the components Movement, Wander, WanderBehaviorTag.

Movement is intuitive, but why both WanderBehaviorTag and Wander components? That’s where I felt most unsure how to continue, while a Wander component is enough, if removed the entity loses it’s Wander data, so this raised the question, what data will be contained in Wander? Should it contain persistent wander attributes like turn_rate, wander_speed or should these be found in a Attributes component?

These are a couple of questions I had while developing this and work as good starting points for a discussion.

MVP milestone

We are currently working towards v.0.1.0, the “MVP release”, made according to the MVP spec.

The implementation work is being tracked in the v0.1.0 milestone on our GitHub repo:

Quality-of-life tasks not yet specced and tracked:

  1. [ ] Accelerate simulation
  2. [-] Debug stats UI (delta time, fps, simulation speed)
  3. [ ] Loading sim and creature parameters from file

If anyone wants more information or justification for an item, just ping us here or in the existing GitHub issue.

Evoli Introduction
Evoli: MVP Specification
Evoli Sitemap
(Kel) #2

Hey! I’d like to try and make some assets for this since I got a new drawing tablet (pixel or otherwise). Any idea of what items are needed and at what size?

(Erlend Sogge Heggen) #3

Seeing the prototype above (the simple square map shape is ideal for now) and keeping th MVP design doc in mind, might you be able to mock up what you imagine this game looking like? I.e, some basic concept art of what the game would look like in play.

I could try give more specific instructions, but it’d just be another way of getting to the first of a handful of iterations anyhow.

(Karll) #4

Erlend’s suggestion is a good one, concept art is really useful to better visualize multiple art directions for the game so we can pick one and work on consistent assets.

Working on art assets now, besides placeholders, may not be the best thing as there aren’t many things in the game needing assets right now.

(Nolan) #5

Hey, I was pinged on Discord about lending my perspective to this.

For those who don’t know, I’m blind, and am interested in using Amethyst for developing audio games. This requires both having a rich audio subsystem that is easy to work with and conveys spatial sound well, and having spoken feedback for the underlying UI so menus and other interface elements can be navigated.

I’ve been actively working on refactoring the audio subsystem to achieve the first goal. I’m building my own sample game based on that effort, and will strive to submit PRs so the upstream system can benefit.

I haven’t started work on the second goal, but it’s high on my list when the audio subsystem becomes a bit easier to work with. Essentially, what would help me there is adding a rich set of events for just about anything that happens in the UI subsystem. So when a UI element gains/loses focus by any means (mouse, keyboard, etc.) I’d need an event. If a widget changes its value (checked/unchecked, text in a field changes, etc.) I’d need an event. If the cursor moves around in a text field, I’d need an event letting me know where it is. With those events, I can create an accessibility subsystem that provides speech feedback. I’ve been building a TTS crate for just that purpose, and it currently supports Linux and possible WebAssembly. Support for other platforms would be easy to add.

Anyhow, I was pinged about participating in this effort, so I’m just noting my interest in doing so. :slight_smile:

On a related note, a recent US law called the 21st Century Communications and Video Accessibility Act initially exempted video game menus from being accessible. That exemption has recently lapsed, though, and some mainstream games are gaining menus that provide spoken feedback. There’s an opportunity to be the first game engine with this support baked right in. Unity has a third party accessibility plugin that publishers can independently add, but I don’t think it leverages the engine directly. I’d like to help make this happen if possible, and it’d be neat if the concept game could either enable this subsystem behind a feature flag, with a certain key combination, etc.

(Erlend Sogge Heggen) #6

@jakob_t_r A long time friend of mine also living in Oslo has offered to do ambient/background music for the game. Here are some of his samples:

Last one looped (apparently there’s something not quite right with the audio quality of this one so there’s a remake pending)

The plan is to come up with some gentle loops that players won’t easily get tired of.

(Erlend Sogge Heggen) #7

Put out a call for collaborators on Users and /r/rust:

(Erlend Sogge Heggen) split this topic #8

2 posts were split to a new topic: Meeting notes 2019-04-26

(Erlend Sogge Heggen) #9

Progress Update

We are almost half-way as several fundamental pieces have been implemented just in the last week.

Needs review:

(Erlend Sogge Heggen) #10

First (pre-)release of Evoli is officially tagged!

https://github.com/amethyst/evoli/releases/tag/v0.0.1 :tada:

(Marco Fruhwirth) #11

Things we might want to do that I’d classify as cleanup:

  • We have multiple dispatchers, but the game data dispatcher contains the rendering and user input systems. We should split those up so that we can run the main game state dispatcher between input and rendering.
  • The time control UI could be declared as prefabs.
  • State in the time control UI is ‘hacked’ by mirroring the events. Instead, we could store the current pause state (Play or Pause) in a resource.
  • Move swarm_behaviors and ixies into the experimental folder.
(Erlend Sogge Heggen) #12

‪Evoli just released v0.1.1 which brings it up to date with Amethyst v0.11‬


‪This means we’re in much better shape to accept contributions again. Next up is the transition to 3D!‬

1 Like