►
From YouTube: Carlo & Micah - Project Necromancy: How to Revive a Dead Rust Project — RustFest Global 2020
Description
By Carlo Supina & Micah Tigley
In the past two months we have been collaborating to revive a flawed project through effective planning, refactoring, and documentation. In this talk we will go over the important points that made our collaboration and revival of this project a success.
For more details and resources, check out:
https://rustfest.global/session/22-project-necromancy-how-to-revive-a-dead-rust-project/
A
B
Hi
everyone
welcome
to
our
talk
on
how
to
revive
a
dead
rust
project.
My
name
is
carlo
and
today
I'll
be
presenting,
together
with
mika
about
her
experiences
working
on
a
2d
shooter
game
made
with
the
amethyst
game
engine,
I'm
a
welder
who
is
currently
pursuing
aws
certification.
I
also
run
an
education
company
called
micronote,
where
I
make
videos
and
articles
about
programming
microcontrollers
with
micropython.
B
In
my
free
time
I
enjoy
tinkering
with
electronics,
designing
pcbs
and
designing
and
printing
3d
parts.
I
began
my
rust
journey
by
diving
straight
into
embedded
rust,
where
I
made
a
remote
controlled
rover
with
sensors
and
an
infrared
camera
then
wanted
to
get
more
conventional
experience.
I
started
working
on
a
project
called
kibrarian
for
managing
schematics
and
footprints
for
keycad
kicad
is
an
open
source,
electronics,
design,
automation
suite.
C
Hey
everyone,
I'm
mika
and
I'm
a
software
engineer
at
mozilla.
My
background
working
on
software
is
focused
on
front-end
web
development.
Currently
I
work
on
the
firefox
web
browser
working
on
the
browser's
ui.
In
my
spare
time,
I
like
to
write
blog
posts
about
my
experiences
in
software
development.
C
My
blog
posts
are
a
way
to
help
myself
practice
delivering
complex
topics
in
a
way
that
are
simple
and
easy
to
follow.
I
got
started
with
rust
over
two
years
ago
as
an
on
and
off
hobby.
Some
of
the
things
I've
done
since
then
is
contribute
to
open
source
rust
projects
and
a
few
of
my
own
toy
projects.
I
recently
started
learning
about
game
development
using
the
amethyst
game
engine.
B
In
the
summer
of
2019,
I
was
looking
for
a
project
to
hone
my
rus
skills.
I
decided
that
I
wanted
to
make
a
game,
so
I
started
looking
for
a
game
engines
that
used
rust
and
found
a
website
called.
Are
we
game
yet.rs?
This
website
had
many
resources
for
creating
games
with
the
rust
language.
Here
I
discovered
a
game
engine
called
amethyst,
which
used
an
unfamiliar
architecture
to
me
called
ecs.
I
read
through
the
amethyst
book
and
followed
some
tutorials
and
eventually
started
working
on
my
own
game
called
space.
B
Shooter
rs
this
game
started
as
a
simple
space
shooter
game
where
the
player
shoots
enemies
coming
from
the
top
of
the
screen.
After
a
few
months
of
consistent
work,
space,
shooter
rs
was
chosen
to
be
an
official
showcase
game
for
the
amethyst
engine
space
shooter
rs
was
initially
a
project
for
learning
rust,
which
meant
it
contained
mistakes
that
a
person
knew
to
rust
would
make.
B
It
was
also
unorganized
due
to
me
being
new
to
the
ecs
architecture
of
amethyst,
specifically,
the
game
contained
large
components
with
redundant
data.
This
made
the
game
difficult
for
me
to
continue
contributing
to,
because
if
I
had
a
couple
hours
to
work
on
a
feature,
I
would
first
need
to
reorient
myself
with
the
convoluted
project
before
working
on
anything
new.
For
this
same
reason,
it
was
also
difficult
for
others
to
contribute
to.
B
I
was
very
aware
that
refactoring
was
needed,
but
I
wasn't
sure
where
to
start
or
if
it
was
even
worth
it
because
of
these
flaws.
Space.
Shooter
rs's
progress
slowed
to
a
halt
around
the
beginning
of
2020.
Until
two
months
ago,
when
I
watched
mika's
rustconf
talk
about
her
experiences
with
amethyst.
B
This
talk
inspired
me
to
try
working
on
my
game
again,
but
I
ended
up
encountering
the
same
problems.
This
is
when
I
considered
inviting
mika
to
collaborate
on
space
shooter
rs.
She
clearly
had
a
passion
for
game
development.
She
also
had
knowledge
of
industry
practices
through
a
work
at
mozilla,
and
we
appeared
to
be
at
a
similar
experience
level
with
amethyst.
B
C
I
was
interested
in
collaborating
with
carlo,
because
I
wanted
to
expand
my
knowledge
about
ecs
and
the
amethyst
game
engine
by
working
on
an
existing
game
at
first.
I
wasn't
sure
if
I'd
be
able
to
help
out
meaningfully
since
i2
was
still
learning,
rust
and
amethyst,
and
I
wasn't
sure,
if
I'd
be
able
to
make
good
suggestions
on
how
we
can
make
the
existing
codebase
scalable
using
an
ecs
architecture
due
to
my
inexperience.
C
But
I
realized
doing
this
collaboration
would
help
these
concerns.
I
was
having
carlo
knew
the
code
better
than
I
did
and
he
could
guide
me
through
the
problems
the
project
was
having.
It
was
also
clear.
There
were
areas
of
amethyst
carlo
had
explored
that
I
haven't
so
I
knew
I
would
be
learning
new
concepts
as
well,
and
another
nice
thing
about
this
collaboration
was
that
we
were
both
coming
into
this.
B
Here's
a
little
background
on
space
shooter
in
this
game
you
play
as
a
spaceship
defending
an
objective.
The
goal
of
the
game
is
to
survive
levels
by
destroying
enemies,
collecting
consumables
buying
items
and
defeating
the
final
boss.
The
game
is
inspired
by
the
binding
of
isaac,
with
the
main
points
of
inspiration
being
items
that
synergize
with
each
other
randomly
generated
levels
and
satisfying
controls
influenced
by
physics.
Currently,
the
game
has
three
enemy
types.
Each
enemy
type
has
a
distinct
behavior
to
provide
a
unique
challenge
to
the
player.
There
are
also
13
unique
items.
B
Items
are
purchased
by
the
player
and
when
acquired
change,
the
rules
of
the
game
to
benefit
the
player.
This
could
range
from
changing
the
speed
of
the
player
to
changing
the
damage
the
player
does
to
enemies
or
even
changing
the
prices
of
items
in
the
store.
The
game
has
four
different.
Consumable
drops
consumables,
are
dropped
by
enemies
when
destroyed
so
far.
B
There
are
drops
that
provide
the
player
health
and
drops
for
giving
the
player
money,
which,
in
this
game,
is
represented
by
bright,
green
space
rocks
the
money
is
used
to
purchase
items
from
the
store
items
are
listed
in
the
store
for
a
price
when
purchased
by
the
player.
The
item
will
drop
from
the
top
of
the
screen
where
the
player
can
collect
it.
There
are
also
some
animations
3d
backgrounds
and
a
work
in
progress
boss
in
the
game.
C
Throughout
this
talk,
we've
been
throwing
around
the
term
ecs
and
it's
important
that
we
address
what
it
is
before.
Moving
forward,
ecs
stands
for
entity
component
system.
It's
a
common
pattern
used
in
game
development
that
makes
it
easy
to
compose
objects
in
a
game
because
components
can
be
arbitrarily
added
to
entities.
This
also
makes
development
much
more
data-driven,
since
entities
are
defined
by
the
components
that
are
attached
to
them.
C
I
find
it
easier
to
understand
what
ecs
is
through
a
series
of
examples.
This
slide
shows
a
screenshot
of
the
game
with
five
circled
objects.
These
objects
are
some
examples
of
entities
that
are
present
in
space
shooter.
The
entities
circled
in
this
image
are
sprite
renders
for
the
strafer
enemy,
spaceship
steel
barrel
item
drone
enemy
and
enemy
projectile,
but,
as
I
mentioned
before,
entities
are
represented
with
unique
ids,
which
is
why
the
entities
circled
in
this
image
have
labels
numbering
them.
One
through
five.
C
Attaching
names
to
them,
such
as
spaceship
or
enemy,
are
labels
that
make
it
easier
to
describe
the
entity's
purpose.
To
someone
else.
Next
I'll
explain
the
role
components
play
in
providing
entities,
characteristics
that
are
required
for
them
to
function
in
a
game
entities
have
a
number
of
components
attached
to
them.
These
components
define
pieces
of
data
that
help
describe
some
behaviors.
We
expect
an
entity
to
have
and
it
helps
to
think
of
these
associations.
C
As
collections
of
data
grouped
together
under
one
id
in
these
diagrams,
I
have
grouped
together
different
components
with
the
entity
id
they
are
associated
with
entity.
1
has
the
component
sprite
render
attack
health
and
movement
attached
to
it,
and
entity.
2
has
similar
components
attached
to
it
as
well.
If
we
needed
to
access
a
health
component
specifically
for
the
player
entity,
then
we
need
an
expressive
way
to
do.
This.
C
One
way
is
to
have
another
component
called
player
tag
attached
to
the
entity
so
that
we
can
differentiate
a
health
component
associated
with
the
player
entity
from
the
others,
of
course,
having
something
like
a
health
component
attached
to
an
entity
doesn't
do
much
on
its
own.
We
still
need
a
way
for
the
game
to
update
the
values
of
a
health
component
when
damage
is
dealt
to
the
entity
it's
attached
to,
and
this
is
where
the
system
part
of
ecs
comes
in.
C
But
before
we
talk
about
the
system,
part
of
ecs,
we
should
address
component
storages,
since
this
is
how
amethyst,
efficiently
accesses
and
updates
on
collections
of
them
giving
components
their
own
storages
allows
for
faster
access
to
data
needed
when
updating
an
entity's
component
state.
This
is
especially
important
when
a
system
may
need
to
operate
on
hundreds
of
components
at
a
time
because
of
this,
it's
important
that
component
storages
are
responsible
for
containing
and
managing
components
of
one
type
and
for
every
component.
C
In
a
storage
they
have
an
entity
id
that
they
are
associated
with
now
that
we
have
briefly
explained
component
storages,
we
can
quickly
go
over
the
system,
part
of
ecs.
In
this
diagram.
We
have
an
example
of
an
animation
system
implemented
using
the
amethyst
game
engine.
The
animation
system
needs
a
way
to
know
what
sprite
image
is
drawn
to
the
screen
during
each
game
cycle.
This
example
shows
that
the
animation
system
will
need
to
read
from
a
time
resource
resources
in
amethyst
are
containers
of
data
that
are
not
associated
with
an
entity.
C
The
other
two
storages
it
reads
from
are
the
animation
and
sprite
render
component
storages
using
these
resources,
the
animation
system
will
write
to
an
entity.
Sprite
writer
component
in
particular,
a
sprite
render
component
contains
a
property
whose
value
can
be
modified
to
tell
amethyst,
which
sprite
render
should
be
drawn.
The
system
uses
this
to
change
the
value
in
relation
to
the
time
resource,
which
would
result
in
an
animation
sequence.
C
The
animation
component
serves
as
data
the
entity
should
be
using
when
determining
what
to
modify
the
sprite
render
component
with
now
that
we
have
a
better
idea
of
ecs,
we
can
identify
some
of
the
problems
space
shooter
was
experiencing.
That
made
it
difficult
to
contribute
to
one
of
the
first
refactoring
tasks
we
have
identified
was
that
the
spaceship
and
enemy
components
shared
a
lot
of
redundant
data.
These
components
made
us
take
a
step
back
and
examine
the
basics
of
ecs.
C
Would
need
to
specifically
access
the
component
containing
it
rather
than
a
generic
health
component
to
understand
how
we
can
break
down
these
components
in
a
way
that
makes
them
reusable
and
concise.
It
helps
to
define
a
set
of
requirements.
This
means
that
we
should
define
what
the
expected
behavior
of
an
entity
should
be.
This
would
help
conceptualize
how
the
components
of
an
entity
work
together,
and
we
can
do
this
by
emphasizing
pieces
of
functionality
of
an
entity
instead
of
as
in
whole.
C
If
we
look
at
the
spaceship
and
enemy
entities,
we
can
see
that
they
are
expected
to
have
a
number
of
similar
behaviors,
such
as
motion,
animation
and
health.
These
behaviors
can
be
described
as
pieces
of
data
in
the
form
of
their
own
generic
components.
Having
components
reusable
between
entities
is
what
ecs
strives
to
do.
You
might
also
notice
that
the
spaceship
enemy
and
item
entities
have
a
component
with
their
same
name
for
the
space
shooter
game.
We
made
the
decision
that
functionality
that
is
specific
to
an
entity
should
be
contained
by
its
own
specific
component.
C
The
images
here
highlight
the
properties
that
define
motion
behavior
and
we
can
now
move
them
into
their
own
component.
This
motion
component
applies
to
entity
motion
within
a
two-dimensional
space
motion
in
space.
Shooter
refers
to
an
entity's
velocity
acceleration,
deceleration
and
maximum
speed
values.
C
B
Before
when
I
was
summarizing
the
game,
I
talked
about
items
in
space,
shooter
items
fuel
the
progression
of
the
player
in
the
game.
They
are
purchased
from
the
store
and
they
modify
the
rules
of
the
game
to
advantage
the
player
as
the
player
destroys
enemies.
Their
spaceship
can
collect
currency,
which
allows
them
to
destroy
enemies
more
efficiently,
which
allows
the
player
to
collect
more
currency
and
more
items
and
so
on.
B
Since
items
are
intended
to
affect
every
part
of
the
game,
how
can
we
implement
them,
so
the
systems
stay
lean
and
focused,
while
at
the
same
time
allowing
them
to
detect?
If
an
item
is
collected,
for
example
in
the
game?
There's
an
item
called
frequency
augmenter
when
collected
this
item
sharply
increases
the
rate
of
fire
for
the
player,
collisions
between
items
and
players
are
detected
in
a
system
called
spaceship
item
collision
system.
All
item
components
contain
a
hash
map
of
data
about
what
attributes
the
item
affects
for
the
frequency
augmenter
item.
B
This
data
represents
an
increase
in
the
fire
rate
for
the
player.
This
data
needs
to
find
its
way
to
a
system
called
spaceship
system,
which
is
a
system
for
managing
the
spaceship
attributes.
So
how
do
we
get
this
data
from
the
collision
detection
system
into
the
spaceship
system?
The
solution
is
through
the
use
of
an
event
channel
event.
Channels
function
as
communication
lines
between
systems,
a
good
analogy
for
event
channels
is
a
radio
broadcast.
B
A
system
that
needs
to
send
data
to
other
systems
can
initialize
an
event
message
with
the
data
that
needs
to
be
sent.
This
message
is
then
written
to
the
event
channel
in
the
source
system.
This
event
channel
can
be
thought
of
as
a
radio
tower
broadcasting
a
message.
Other
systems
can
then
tune
in
to
this
channel
by
setting
up
an
event
reader
to
look
for
events
of
a
certain
type.
Then
the
system
can
read
the
data
from
the
event
message
and
use
it
in
the
system
going.
D
B
To
the
frequency
augmenter
item,
we
can
see
that
when
the
item
is
collected
in
the
spaceship
item
collision
system,
the
item
data
is
used
to
initialize.
An
item
get
event
and
this
event
containing
the
data
can
be
sent
via
an
event
channel
to
the
spaceship
system,
where
the
attributes
can
be
added
to
the
spaceship
that
collected
it.
This
method
of
sending
item
data
between
systems
can
be
extended
for
items
that
affect
any
kind
of
system
in
the
game.
B
In
this
next
section,
we
will
go
over
how
we
collaborated
together
to
implement
the
refactors
we
discussed
previously.
One
of
the
most
important
parts
of
trying
to
revive
the
space
shooter
project
was
to
establish
a
workflow
that
worked
for
the
both
of
us.
We
needed
a
way
to
develop
and
capture
the
progress
we
wanted
to
see
in
the
next
few
weeks.
This
meant
that
we
would
need
to
discuss
and
prioritize
tasks.
We
both
agreed
would
get
the
project's
code
in
a
better
place.
We
will
be
exploring
four
approaches.
B
We
use
to
stay
focused
which
are
collaborative
coding,
practices,
writing
documentation
together,
communication
and
weekly
meetings.
The
first
factor
that
has
made
our
collaboration
successful
is
our
collaborative
coding
practices.
When
I
started
this
project
in
2019,
I
was
using
github
for
a
little
more
than
a
place
to
safely
store
and
distribute
files.
I
had
some
experience
using
branches
and
pull
requests,
but
I
knew
that
I
was
not
using
the
tools.
Github
provides
to
the
extent
that
I
should
be.
I
didn't
really
need
to,
though,
because
there
were
very
infrequent
contributors
to
the
project.
B
Besides
me
alone,
part
of
the
reason
why
I
reached
out
to
mika
to
collaborate
on
the
project
was
because
I
knew
that
she
likely
had
a
lot
more
experience
using
these
tools
through
her
work
at
mozilla
after
a
week
of
working
together,
mika
built
up
enough
trust
for
me
to
give
her
maintainer
privileges
so
that
she
could
more
easily
contribute
to
the
project
without
having
to
go
through
me.
This
allowed
her
to
manage
issues,
branches,
pull
requests
and
other
things
related
to
the
repository.
B
I
was
in
turn
able
to
follow
her
lead
and
learn
for
myself
how
to
use
these
collaborative
tools.
My
last
point
about
these
tools
is
that,
even
though
we
are
communicating
through
direct
communication
lines,
we
still
make
sure
to
do
public
code
reviews
through
github,
even
if
it
is
just
a
small
change.
B
C
Since
carlo
and
I
were
both
learning
new
things
as
we
refactored
space
shooter,
we
wanted
to
make
sure
that
we
worked
on
documentation
as
a
way
to
record
our
progress
and
thought
processes.
This
included
tasks
such
as
updating
the
readme
to
be
more
of
an
entry
point
for
learning
about
the
space
shooter
project.
C
Anyone
who
is
interested
in
learning
more
either
about
learning
the
game
or
contributing
would
go
to
the
project's
md
book,
where
more
thorough
information
can
be
found.
Mdbook
is
a
tool
written
in
rust
that
is
used
to
create
modern
online
books
for
markdown
files.
We
decide
to
create
a
book
for
space
shooter
as
a
central
location
for
documentation
right
now.
Our
most
important
pieces
of
content
would
be
helping
anyone
make
new
contributions
to
the
project.
This
meant
that
we
needed
to
create
a
basic
contributing
guide
for
those
who
are
interested
in
contributing
code.
C
We
also
made
sure
we
had
a
code
of
conduct
in
place
to
establish
a
safe
environment
where
everyone
can
contribute
and
learn
while
documentation
about
the
project's
architecture
and
code
have
been
the
main
focus
right
now,
carlo
has
been
actively
working
to
provide
contribution
guidelines
around
adding
new
items
to
the
game
as
well
as
artwork.
The
goal
of
this
effort
is
to
have
more
than
one
way,
to
contribute
to
space
shooter,
which
can
be
code,
artwork
ideas
for
items
and
even
documentation.
B
B
Long-Term
goals,
an
example
would
be
adding
a
boss
to
the
game
and
what
kind
of
components,
entities
and
systems
it
require,
and
the
last
type
of
goal
are
these
larger
project
goals
that
relate
specifically
to
space
shooter
rs
as
a
project.
This
is
what
kind
of
documentation
do
we
want
to
have
and
do
even
plan
on
selling
a
version
of
this
game
at
one
point,
these
weekly
meetings
were
also
important
for
sharing
ideas.
Our
main
guiding
principle
for
sharing
ideas
is
that,
while
some
ideas
are
certainly
bad,
all
ideas
are
worth
sharing.
B
This
is
important
for
us,
because
we
have
to
not
be
afraid
of
sharing
ideas
around
each
other
to
make
sure
that
we
are
on
the
same
page
with
the
project.
Some
examples
of
things
we
might
share
are
character,
abilities,
item
ideas,
bosses
and
the
structure
of
the
game.
Now
mika
will
discuss
our
methods
for
effectively
communicating
when
working
on
the
project.
C
Having
a
way
to
track
discussions
around
some
refactoring
decisions
was
one
of
the
best
ways
to
capture
our
thought
processes.
We
did
this
by
having
these
discussions
on
github
issues
and
code
reviews.
If
we
had
any
questions
or
ideas
about
an
issue
we
were
working
on,
we
would
post
them
to
the
issue
they
were
relevant
to.
Ideally,
these
discussions
would
involve
any
pre-implementation
work,
such
as
clarifying
the
problem
or
trying
to
solve
before
writing
any
code.
C
Then,
once
a
pull
request
has
been
submitted
as
a
potential
fix
for
that
issue,
we
could
move
the
implementation
discussions
to
there,
while
these
discussions
can
be
done.
Privately.
Information
that
is
easily
available
would
allow
us
to
revisit
the
reasoning
for
why
we
decided
to
make
certain
implementation
decisions.
C
B
B
As
mika
became
more
comfortable
working
on
the
project,
we
were
able
to
start
using
the
ideal
state
document
to
have
in-depth
discussions
about
what
the
ideal
state
of
the
game
should
look
like
over
time.
As
we
collaborated,
this
document
slowly
started
to
turn
into
a
more
informal
ideas
document
where
we
throw
ideas
out
for
discussion
as
we
think
of
them.
A
lot
of
these
informal
ideas
came
from
inspiration.
We
drew
from
other
games.
After
a
few
weeks
of
consistent
collaboration
on
this
project.
B
B
The
first
document
of
this
type
I
created
was
a
large
flowchart,
explaining
my
ideas
for
what
progression
through
the
game
could
look
like
this
included
the
progression
of
levels,
unlocking
characters
where
bosses
would
be
and
how
theming
would
change
between
levels.
The
next
more
formal
documents
I
created
were
the
mvps
for
the
project.
I
say
mvps
because
I
wrote
two
based
on
the
two
different
scopes
we
have
for
the
project.
The
first
mvp
was
for
space
shooter
as
a
showcase
game.
This
includes
how
many
items,
characters,
bosses
levels
and
enemies
you
want
in
the
game.
B
The
general
rule
for
this
mvp
was
that
things
should
only
be
included
in
the
showcase
game
to
the
point
where
they
made
sense
for
a
game
intended
to
show
off
the
amethyst
engine.
The
second
mvp
was
for
space
shooter
as
a
fully
released
game.
The
only
difference
between
this
mvp
and
the
showcase
game
nvp
is
that
the
general
rule
for
this
document
is
that
it
contains
more
content
to
make
the
game
as
fun
as
possible,
rather
than
just
to
show
off
the
engine.
B
C
So,
in
summary,
the
main
takeaways
on
the
collaboration
approaches
we
used
were
that
engaging
regularly
in
open
discussion
is
beneficial
to
capturing
project
process.
Documentation
is
important
for
solidifying
knowledge
about
project
architecture.
Decisions
and
sharing
ideas
regularly
keeps
everyone
on
the
same
page,
and
this
is
what
we
found
to
be
the
most
helpful
for
reviving
a
dead
rust
project.
If
you're
interested
in
learning
rust
or
just
want
to
contribute
to
an
open
source
game,
then
we'd
be
happy
to
help
working
on
space.
C
D
So
first
question
is:
why
is
item
and
spaceship
collision
a
separate
system
from
spaceship
and
enemy
collision.
C
So
we
organized
our
systems
to
listen
for
specific
event.
Types
so
like
in
in
this
example,
spaceship
to
enemy
and
spaceship
to
items
were
their
own
event
types,
and
because
of
that,
we
decided
to
make
that
the
decision
to
create
separate
systems
for
them.
So
it
was
easier
to
maintain
the
logic
that
was
specific
to
those
particular
event.
Types.
D
Gotcha,
do
you
feel
there
is
a
difference
between
starting
a
game,
a
game,
design
with
ecs
and
moving
one
from
something
else
to
ecs.
B
Yeah,
I
can
take
this
one.
Yes,
so
I
have
I've
tried
a
few
smaller
games.
I've
done
like
a
game
jam
in
the
past
and
yeah
ecs
was
very
unique
to
me
because
of
the
way
it
organizes
the
data.
It's
completely
different,
so
I
think
the
most
developed
one
I've
done
in
the
past
was
something
with
pi
game
and
I
was
sort
of
using
the
object-oriented
tools
there
to
make
to
best
represent
the
data
in
that
way,
and
it
wasn't
it's
very
easy
to
get.
B
B
I
can't
think
of
any,
but
I
don't
think
we're
still
learning
ecs
and
I
yeah,
I
can't
think
of
a
situation
where
I
wouldn't,
but
I
don't
think
I'm.
I
know
enough
to
speak
fully
to
that.
D
Also,
it
seems
that
the
amethyst
game
engine
in
recent
versions-
so
I'm
not
quite
sure
if
it's
released
or
not
yet,
but
it
seems
they're
moving
on
to
a
new
ecs
system.
Can
you
comment
on
that
or
or
know
anything
about
that.
B
I
I
know
that
yeah
they're,
switching
from
library
called
specs
to
legion,
and
I
don't
think
I'm
qualified
to
talk
about
it,
but
yeah.
If
you
are
interested
in
learning
about
that
there,
you
should
join
the
amethyst
discord.
That's
where
we
learn
a
lot
about
it,
so
yeah!
It's
it's
not
something
that
I
it's
something
that
we'll
need
to
probably
do
some
refactoring
to
adjust
for
that
in
the
future,
but
yeah
join
the
amethyst
discord.
I
think
to
learn
more
about
that.
D
Another
talk
and
another
user
asks
whether
you've
had
a
look
at
the
bevi
engine,
which
also
is
quite
recent
and
whether
you
can
comment
on
it
from
the
perspe
user
perspective,
an
amethyst
user.
B
I
can't
comment
on
it,
but
because
I
haven't
tried
it
yet,
but
it
does
look
interesting.
I
I
can't
it.
I
know
it
uses
like
the
same
design
philosophy,
and
I
know
that
amethyst
there's
a
post
that
was
made
that
amethyst
is
working
with
bevy
and
so
yeah.
I
think
it's
a
good.
It's
a
it's
a
great
engine
that
people
should
try
too
great
we're
not
in
competition.
D
All
righty,
then,
I
think
we're
out
of
questions
yeah.
So
just
one
second
see
if
anyone
came
in.