►
From YouTube: Scalable Multiplayer Game Design with OpenShift (E5)
Description
This monthly series explores what it takes to design a scale-out multiplayer video game architecture using containers and OpenShift. There will be live coding, philosophical design discussion, and everything in between.
Host:
Erik Jacobs
Guests:
* Derek Reese
* Michael Clayton
* Roderick Kieley
* Jared Sprague
A
Hello,
everyone
and
welcome
to
another
episode
of
the
scalable
multiplayer
game
design
series
with
openshift
tv.
So
I
think
that's
where
we
are
today.
I'm
your
fake
sort
of
internet
wannabe
host
eric
jacobs
joining
me
today.
We've
got
roddy
keeley,
okay,
who
I
probably
always
butcher
your
name
kylie,
okay,.
A
Riley,
damn
I'm
gonna
commit
that
to
memory
one
of
these
days
I
promise
derek
reese
and
mr
michael
clayton,
hello,
everybody.
The
head
nod
so
yeah
since,
since
we
last
played
around
we've,
made
a
bunch
of
progress
with
the
game
server
and
a
few
changes
to
the
game.
Client
and
roddy
kylie
is
going
to
show
us
some
of
what
we've
got
going
on.
We've
we've
made
some
extensible
configuration
and
some
other
cool
changes.
I'll
turn
it
over
to
you
roddy.
If
you'd
like
to
share
your
screen.
B
B
Okay,
yes,
all
right!
So
what
we're
gonna
do
here?
We're
gonna,
take
a
quick
look.
Hopefully
people
can
see
the
microscopic
size
here
of
the
command
line,
arguments
that
we've
added
in
over
the
past
little
while
so,
essentially,
we
tell
it
where
the
broker
lives,
which
for
me
is
at
192.168.2.221,
which
for
the
moment
is
a
linux
box.
Port
5672
is
our
standard.
B
So
you
don't
actually
see
the
window
it
pops
up.
You
know.
D
B
Selected
screen,
of
course,
let
me
jump
in
and
chat
for
anybody
who's
actually
on
this.
Okay,
maybe
that's
a
better
way
to
do
it.
D
B
So
here's
our
very
straightforward
arguments,
so
the
one
thing
that's
been
added
here
if
anybody's
been
following
along
on
the
end,
we
have
this
new
item
force
multiplier.
So
one
of
the
things.
A
B
Okay,
so
I'm
just
going
to
get
to
exactly
where
it
is
located
with
regards
to
parsing
it.
So
it
looks
like
this
on
the
command
line,
and
so
what
we
realized
really
early
on
is
that
we
have
a
bit
of
a
disconnect
between
what
we
want.
B
What
we
had
in
the
past,
which
was
like
a
direct
mapping
between
either
sticks
or
keyboard,
being
minus
one
to
one
in
the
x
and
y
directions
and
the
forces
as
being
applied
to
the
physics
simulation
and
the
masses
and
stuff
that
our
ships
are
going
to
represent
so
in
in
testing.
Obviously,
you
know
getting
a
nice
update
and
test
again
loop
in
development.
This
is
obviously
a
good
thing
to
do
so
add
it
into
the
command
line.
B
So
when
you
run
the
server
you
don't
actually
have
to
recompile
it
for
testing
purposes.
So
we
have
this
currently
set
to
300
000,
which
gives
us
a
nice
movement
rate,
I'm
just
going
to.
A
I
guess
it
probably
is
either
a
newton
or
something
I'm
pulling
up
the
the
notes
that
we
had
last
time.
Newton.
B
Yeah,
so
so
for
the
moment,
that's
what
we
have
that
actually
gives
you
a
sensible
movement
rate
on
the
screen.
So
I'm
pretty
sure
if
I
bring
this
into
my
screen,
you're
not
going
to
see
the
update.
Basically,
I
have
a
broker
up
and
running
on
this
2.221
ip,
which
of
course.
D
B
Sees
I'll
just
see
if
I
can
do
new,
oh,
we
can
do
new
share.
Let's
see
what
happens
there.
C
C
C
C
A
B
What
you
may
see
here
is
the
new
amk
broker
that
we're
running
was
released
in
the
fall
781,
which
is
based
on
the
upstream
active
mq
artemis
216..
B
One
of
the
things
that's
nice
about
this
one
is
that
there's
an
updated
gui
and
a
console.
So
this
obviously,
is
the
text
interface,
and
if
we,
what
I'll
do
here
really
quickly,
I
will
run
the
game
server
and
I
think
you'll
see.
B
B
There
wasn't
an
update.
I
thought
there
would
be
an
update
here
on
the
log
screen.
Let
me
just
quickly
switch
back
quickly,
show
the
log
screen
so
from
the
game.
Server's
point
of
view.
It's
now
running
through
the
c
plus
id
sea
lion.
B
And
so
one
of
the
things
in
the
it
is
indeed
very
hard
to
read,
and
one
of
the
things
that
we
identified
in
the
past
was
that
I
couldn't
define
the
key
combination
to
to
increase
this
very
readily.
Let's
try
that
this
is.
B
Yes
right
to
the
basic
amqp
port
primary
key,
yes,
so
essentially
in
the
last
stream.
We
realized
that,
by
default
on
mac
in
c
lion,
the
scrolling
capability
to
increase
and
decrease
the
font
size
is
disabled.
B
So
I
had
to
go
through
the
configuration,
find
it
and
re-enable
it.
Okay,
so
people
can
see.
So
that's
good.
So
all
we're
saying
here
is
that
hey,
there
is
a
game
server
and
it's
connected
to
the
broker
as
far
as
it's
concerned
and
things
that
are
of
concern
for
us
are
the
command
in
where
commands
come
from
from
the
client
and
game
event
that,
where
we
spew
our
simulation
updates,
essentially
right
so
very
quickly
here
and.
B
A
D
B
D
B
B
Yeah
based
on
pattern,
fly
yeah.
A
A
B
B
And
see
that
see
the
traffic
going
back
and
forth,
essentially
right,
I'm
just
gonna
reload
the
client
using
npm
and
pop
it
up
in
a
browser.
Now
let
me
quickly
turn
off
the
music
which
auto
starts,
because
I
can't
hear
anything.
I
think
that's
the
next
configuration
item
we
need
to
add:
I'm
always
greatly
distracted
when
the
browser
starts
up
and
the
music
starts,
although
it
is
a
nice
spacey
kind
of
ambient
kind
of
tune.
B
Alright.
So,
unlike
my
earlier
attempt
today,
I'm
going
to
use
the
arrow
keys
and
not
wasd,
and
we
can
see
here
now
that
I
can
move
around
the
screen
relatively
well.
It
might
take
a
second
to
reach
you
guys,
but
from
my
point
of
view
like
it
feels
pretty
good.
A
D
B
A
B
B
We
can
see
now,
for
example,
that
we
have
a
command
dot
out
with
a
very
specific
identifier,
tagged
on
the
end,
and
so
this
is
essentially
how
the
server
identifies
a
given
client
and
sends
stuff
back
to
it
right,
and
we
can
see
now
that
if
we
look
at
our
our
game.event.out
address,
we
have
a
multicast
queue
which
really
means
it's
a
topic
with
a
specific
identifier
and
we
can
check
for
connections,
and
we
can
see
that
at
this
point
we
have
three
connections,
because
I
think
there's
one
for
the
server
and
two
for
the
client.
B
Maybe
and
interestingly,
you
can
drill
down
into
the
address.
Let's
go
to
gameevent.out,
for
example,
and
go
to
attributes
and
you
can
quickly
scroll
down
and
you
can
check
whether
or
not
this
address
is
functioning
properly
and
you
can
see
whether
or
not
there's
traffic
flowing
whether
those
messages
flowing
through
this
address.
B
And
if
we
look
here,
we
can
see
that
there's
been
8
366
messages
and
growing,
and
the
number
of
messages
acknowledged
by
the
client
is
just
a
little
tiny
bit
lower.
And
so
I
think
the
discrepancy
here
is
because
of
the
distance
between
when
the
server
starts
using
the
address
and
when
the
client
starts
consuming
from
it
right.
B
But
it
gives
you
some
very
nice
easy
ways
to
grab
a
statistics.
Let's
even
get
a
chart
here.
B
I
don't
know
if
that
works
well
here
at
the
moment
we
can
see
the
timeline
yeah.
I
don't
know
if
that's
working
in
my
browser
for
the
moment,
just
let
me
jump
around
one
more
second
here,
so
that
was
the
game.event
that
out
and
what
we'll
do
here
now
we
can
see
in
my
other
browser
window,
I'm
still
floating
around
in
space.
With
my
original
spaceship
still
trying
to
use
wasd
to
move
everything
is
still
okay.
Here
I
can
move
around.
So
let's
start
ourselves
up
a
new
client
and
join
in
and
see
what
happens.
B
E
B
Order
to
reduce
repetitive
stress
so
my
linux
box
has
the
mouse
on
the
left,
hand,
side
and
my
macbook
has
the
mouse
on
the
right
hand,
side.
Oh.
B
Traditionally,
I've
been
right-handed,
so
I
think
I'd
probably
get
beaten,
pretty
handily
all
right.
So.
C
Back
in
the
day
when
we
used
to
play
counter-strike
at
a
near
professional
level,
we
had
a
couple
of
people,
including
myself,
who
would
play
left-handed
to
handicap
ourselves
just
to.
C
B
B
We
go
back
here
now.
We
can
see
that
there
was
a
new
command
that
out
for
the
new
consumer,
which
is
a
one-to-one
relationship
between
the
game,
server
and
the
client,
and
we
look
at
the
multicast-
and
we
have
another
couple
of
addresses
here-
another
new
couple
of
new
identifiers
for
sending
out
the
events
to
the
given
client
and,
of
course
you
can
check
your
sizes
and
all
that
kind
of
stuff.
So
there's
a
lot
of
interesting
stuff.
B
You
can
do
here
and
there's
a
lot
of
ways
you
can
drill
down
into
this
information
to
kind
of
ask
the
broker
like
hey,
what's
going
on,
like
what's
going
on
with
the
messages
in
and
out
of
here,
so
by
using
the
broker
like
right
out
of
the
gate
so,
like
so
far,
we've
been
pointing
out
like
hey
it's
tcp
right
now,
and
so
you
know
from
a
first
person
shooter
perspective
that
might
be
kind
of
sucky
because
of
the
headline
blocking
problem
and
the
reliability.
It
gives
you,
but
by
using
the
broker.
B
For
example,
you
get
this
nice
gui
and
you
have
all
these
statistics
that
you
can
drill
into
like
kind
of
out
of
the
box
that,
like
normally,
if
you're,
writing
your
networking
code,
your
net
code
from
scratch,
like
you,
might
have
to
write
all
this
stuff
from
scratch.
Do
right.
So
it's
better
much
better
to
focus
on
gameplay
related
stuff.
If
we
ignore
that
little,
not
so
little
head
of
line
blocking
problem.
A
Yeah,
you
know,
but
at
some
at
some
point
I
think,
didn't
you
say
that
they're
investigating
making
this
work
with
udp.
B
Right
absolutely
so.
That
brings
me
to
my
next
point.
If
we
look
live
on
two
three,
four
five,
so
the
library
that
we've
adopted
here
for
amqp
1.0,
based
on
tcp
called
cupid
proton
in
the
upstream,
has
developers
as
of
right
now
working
on
raw
udp
support
for
basically
raw
udp
in
the
library.
Then
the
next
step
will
be
amqp
based
on
that
raw
udp
support.
B
So
that
will
be
from
the
client's
point
of
view.
So
when
the
client
is
udp
capable
you'd
be
able
to
do
like
peer-to-peer,
multiplayer
udp,
and
then
you
could
do
like
a
reliable
udp
at
the
application
level,
above
that,
if
you
wanted,
for
example,
or
maybe
you
could
integrate
it
with
libquik
to
do
like
udp
into
the
browser,
for
example,
because
chrome
has
really
great
quick
support
now,
because
the
way
we
work
in
getting
our
tcp
traffic
into
a
browser
is
that
it
goes
through.
Websockets
and
websockets
is
like
a
it's.
B
A
web
browser
based
implementation
and
standard
for
delivering
tcp
traffic
into
the
more
restrictive
browser
environment
right
so
chrome,
chrome
and
google
in
particular,
have
been
working
on
ways
to
speed
up
traffic.
For
browsers-
and
they
invented
this
new
quick
protocol,
which
basically
uses
udp
to
deliver
traffic
into
the
browser,
so
http
3,
for
example,
will
be
based
on
this
new
quick
protocol
and
it's
going
to
be
standardized
by
the
ietf.
B
So
like
we're
basing
our
our
assumptions
here
on
the
fact
that
we're
open
we're
using
open
standards,
you
know
it's
not
everything.
We
want
it
to
be
from
a
gameplay
perspective,
but
there's
some
legs
here
and
some
potential
to
grow.
B
B
E
Right
is,
is
quick
support
going
to
have
any
impact
on
like
websocket
support
for
amq
or.
B
I
assume
it
will
be
an
alternative
like
right.
Now,
like
we
have
a
ws
colon
to
specifically
say:
hey,
we're
not
just
doing
tcp
we're
actually
really
doing
websocket
and,
like
I
think,
the
next
step
we're
going
to
get
like
hey,
we
can
do
udp
and
then
okay.
Well,
we
want
to
do
udp
into
the
browser
and
the
way
to
do
that
will
be
quick.
So
maybe
we'll
have
quick
colon
slash
browser
ip
colon
port,
for
example.
That's
just
the
way
I
envision
it
going
like
right
now.
B
B
So
one
of
the
design
goals
of
quick
as
a
protocol
was
to
use
udp
to
get
around
the
headline
blocking
problem
and
to
kind
of
like
build
upon
all
these
years
of
experience.
We
have
in
understanding
what
we
can
do
from
a
protocol
point
of
view
at
the
application
layer,
because
there's
so
much
hardware
out
there
that
has
tcp
in
it.
Like
you
can't
just
say:
well,
let's
just
invent
a
new
protocol
and
we're
going
to
deploy
all
new
hardware
all
over
the
world
and
we've
seen
how
that
went
with
the
ipv4.
B
The
ipv6
rollout
right,
like
ipv6,
has
taken
a
huge
huge
amount
of
time
to
become
standard
and
commonplace,
so
they
went
back
to
the
drawing
board
and
they
were
like.
How
can
we
build
upon
our
current
infrastructure
and
still
tackle
the
problems
we
want
to
tackle
that
we
have
today
that
we
didn't
have
when
you
know,
tcp
and
udp
were
invented
right.
So
two
things
they
wanted
to
tackle
was
mobility
challenges.
B
So,
for
example,
one
thing
the
tcp
is
bad
at
is
because
it's
connection
oriented
is
mobile
right,
so
you're
on
a
phone
you're
driving
in
like
down
the
highway.
You
go
and
tower
to
tower,
and
tcp
doesn't
like
that
very
much
like.
If
you
look
at
how
the
broker
would
handle
that,
like
it
doesn't,
think,
connections
are
ever
going
to
be
dropped
because
dcp
is
reliable
right.
B
So
then,
how
does
that
address
translate,
as
you
move
like
tower
to
tower
to
tower
so
that
assumptions
basically
off
the
table
and
then
the
other
thing
obviously
is
speed
right,
because
tcp
introduces
a
bunch
of
overhead
so
like
just
to
set
up
an
encrypted
connection.
There's
like
three
round
trips,
so
your
total
round
trip
time
before
you
can
ever
even
do
anything
is
all
those
three
round
trips
for
tcp,
including
the
head
of
line,
blocking
problem.
A
A
B
Checking
tls
connection
to
you
know
abc
right,
like
there's
a
bunch
of
stuff
that
happens
and
if
all
that
stuff
has
to
be
connected
and
the
multiple
connections
that
are
encrypted.
There's
like
this
three
round
trip
thing
that
happens
every
single
time
right,
so
you're
really
slow
getting
out
of
the
gate.
So
one
of
the
other
things
they
did
is
make
it
zero
round
trip
time.
B
D
B
It
helps
to
solve
some
of
these
problems
that
we
currently
don't
have
good
solutions.
For
that
really
we're
like!
Well
hey!
You
know
this
is
the
way
tcp
was
designed,
we're
just
going
to
live
with
it,
because
all
the
hardware
out
there
all
that
infrastructure
can't
replace
it
all.
You
know
what
I
mean
we've
built
on
it
for
like
what
40
50
a
lot
more
than
that
it
was
late,
60s
arpanet
right,
so
we
build
up.
B
B
There's
a
bunch
of
other
companies
with
implementations
like
what
will
happen,
probably
from
a
cupid
proton
point
of
view.
Is
that
we'll
be
like
hey
we've
got
cooper
proton
does
tcp,
it
does
udp
in
the
case
of
using
proton
with
websocket.
We
use
it
together
with
libwebsocket
to
do
cupid
dispatch,
which
is
an
amqp
based
router.
A
B
This
broker,
in
particular,
is
written
in
java
right
based
on
open
jdk,
so
they'll
have
their
own
solution
to
doing
udp
as
well
as
quick
and
all
that
kind
of
stuff,
but
like
the
whole
ecosystem,
has
to
evolve
together,
basically
to
make
it
all
happen.
B
B
Just
yep,
just
let
me
dig
out
the
link,
but.
C
I
mean
if
you've
ever
wondered
how
bleeding
edge
video
game
stuff
is.
We
also
had
a
question
from
panic.
Maven.
They
were
asking
a
question.
I
think
we
had
answered
in
our
first
or
second
stream
about
you
know
why
all
of
this
is
not
like
webrtc
or
something
like
that.
B
In
my
case,
I
think
you
know
the
red
hat
back
there
and
I
put
it
on
like
as
a
messaging
engineer-
and
I
look
at
my
background-
and
I
say
how
can
all
this
work
I've
done
in
messaging
for
the
enterprise
space
and
as
we
can
see,
it
brings
some
nice
tooling,
and
I
something
nice
technologies
along
with
it.
How
can
we
apply
that
to
the
problems
that
game
developers
face
right?
So
it's
not
that
webrtc
was
necessarily
a
bad
choice.
It's
probably
a
really
good
choice.
B
C
Just
this
gives
me
a
chance
to
be
a
little
preachy
too,
when
you're
doing
game
development,
I've
known
a
ton
of
people
to
compare
the
process
to
you,
know
you're
driving
a
car
down
the
road
but
you're
also
building
the
car.
C
We're
getting
is
really
terrible
and,
yes,
like
premature
optimization,
is
the
root
of
all
evil.
That's
a
quote
from
don
knuth,
but
honestly
like
when
you're
building
a
game
engine-
and
you
don't
have
those
dashboards,
you
don't
have
those
cool
visualizations
and
that
sort
of
interesting
info.
It's
really
easy
to
miss
something
like
a
pothole.
C
Coming
up
where
you
just
like
slam
full
force
into
it,
you're
like,
oh
god,
we
did
not
identify
this
problem,
whereas
if
you're
using
existing
toolkits
like
especially
like
a
lot
of
the
stuff
we
get
out
of
the
box
with
red
hat
products
and
technologies,
you
already
have
all
that
stuff
built
in
and
it's
a
lot
easier
to
see
those
you
know
red
flags
coming
up
and
go
okay.
We
should
pay
attention
to
this.
C
We
don't
need
to
go
optimize,
the
code
for
it,
yet
we
don't
need
to
go,
spend
a
ton
of
time
on
it,
but
we're
aware
that
this
could
be
a
potential
issue.
So
when
you
start
encountering
some
more
warning
signs,
you
know
where
to
focus
your
development
time
and
energy
and
effort-
and
you
don't
you
know,
blow
past
your
launch
date
by
eight
months
or
something
like
that.
A
B
Yeah
and
actually
like
the
the
folks
who
work
on
the
cube
proton,
have
invested
in
doing
some
work
on
jaeger
as
well.
Yeah.
A
And
open,
but
I
think
it
would
be,
it
would
be
super
neat
to
be
able
to
see
like
the
the
message
come
into
the
openshift
environment.
You
know
and
then
into
the
game
server
and
then
like
out
to
the
data
grid
and
then
some
other
like
server
picks
it
up
and
then
goes
out
like
that'd,
be
super
neat
to
be
able
to
see
like
that
trace
path.
C
One
of
the
things
that
I
love
to
talk
about-
and
I
think
we
have
a
little
bit
of
time
today-
that
I
never
get
to
is
lossless
versus
lossy
data
streams
and
it's
something
that's
kind
of
not
normally
talked
about
in
the
you
know,
era
of
web,
because
everything's
tcp
pretty
much
and
so
that's
lost
list.
And
so,
if
you
ask
for
an
image
eventually,
you
get
the
whole
image.
C
But
for
a
lot
of
the
things
in
game
development
you
don't
need
lossless
like
if
you
get
an
image
or
a
texture
or
something
from
a
server,
it
doesn't
necessarily
have
to
be
lossless
like
if
you
think
about
your
eyes
and
the
way
they
perceive
things.
Your
brain
fills
in
a
lot
of
gaps
very
quickly,
so
stuff
in
the
real
world
doesn't
have
to
actually
match
up
to.
C
When
really
like
it
shouldn't
matter
right,
we
should
throw
as
much
texture
as
you
can
potentially
get
and
whatever
you
get
you
get
right,
you
can
run
ai
on
the
client
side
to
regenerate
those
missing
portions
or
you
can
even
use
shader
tricks
to
recreate
some
of
that
data.
And
that's
something.
That's
not
really
discussed
right
now,
because
there's
not
a
lot
of
research,
that's
done
into
it
and
there
are
definitely
places
on
the
web
where
it
makes
a
lot
of
sense
right
like
if
you're
watching
a
movie
on
youtube.
C
You
actually
don't
need
that
whole
compressed
data
stream.
You
only
need
enough
to
like
fill
in
enough
of
the
blanks
right
and
so
netflix
actually
has
compression
formats
that
they
use
that
that
do
that
hack
right.
They
understand
like
how
the
human
brain
perceives
an
image
and
then
discards
a
lot
of
that
data,
and
some
of
it
doesn't
even
need
to
get
sent
over
the
network
for
it
to
be
a
final
result
that
you
can.
A
Yeah
and
but
the
other
thing
that
that
I
was
thinking
about
is
like
we
were
talking
earlier
way
early
in
one
of
the
early
streams
about
you
know,
just
sending
updates
and
not
necessarily
the
new,
like
the
whole
state
of
the
game
again
to
the.
A
As
you're
talking
about
video
streaming,
I'm
like
yeah,
like
if
you're
watching,
like
if
you're
watching
this
stream
right
now,
we
have
four
video
streams,
but
60,
plus
percent
of
each
of
our
streams
is
pixels
that
are
never
changing,
like
roddy's
door
isn't
going
to
move
anytime
soon.
So
why
would
I
send
the
whole
frame
if
the
book
is
still
in
the
same
place
like
so.
A
C
Well,
yeah
and
that's
kind
of
the
next
step
in
that
portion
is
like
you
know.
If
you're
sending
a
keyframe
right
like
someone's
head
moves,
you
know
you're
saying
that
whole
keyframe
of
like
all
those
data
changes
you
don't
even
need
to
send
that
I
mean
you
could
send
like
a
partial
keyframe
and
just
like
a
little
annotation
that
says,
that's
someone's
head
right
and
an
ai
program
on
the
receiving
end
could
go
okay.
C
I
know
what
human
heads
look
like
when
they
move
and
just
redraw
all
of
that
space
and
fill
it
in
kind
of
like
what
our
brains
do,
and
so
video
games
actually
use
this
quite
a
bit
to
save
on
data
and
help
with
latency
for
things
like
movement
or
you
know,
ability,
usage
right
like
and
you'll
notice
like.
If
you
have
a
really
bad
network
hiccup,
you
might
see
a
player
character,
you
know
they're
running
in
one
direction
and
then
jump
well.
C
What
happened
there
isn't
that
they
were
running
and
then
you
know
jumped
or
something
like
that.
It's
that
they
started
running
in
that
direction.
That
player
changed
what
they
were
doing
and
the
server
just
dropped
that
data
right,
like
the
connection,
didn't
show
up
or
the
packet
got
lost,
or
you
know
whatever.
D
C
Yeah-
and
I
mean
like
obviously
I'm
oversimplifying-
it's
not
a
I,
but
that's
just
a
generic
term.
We
can
throw
on
anything
with
predictive
logic
these
days,
so
I
mean,
and
that
type
of
manipulation
in
data
stream
handling
can
happen
on
almost
any
avenue.
It
doesn't
need
to
be
limited
to
client-side
prediction
and
game
development.
You
can
do
it
with
like.
I
was
saying,
like
textures,
with
models
with
any
bits
of
data
where
the
human
brain's
allowed
to
do.
Interpolation
or
you
could
have
you
know
some
sort
of
client-side
software
doing
interpolation.
C
You
don't
have
to
send
that
over
the
network
and
that's
you
know
it
might
be
in
the
area
of
over
optimization
right,
it's
easier
to
just
send
a
zip
file
to
a
client
be
like.
Well,
you
have
everything,
it's
fine,
you
know,
but
there's
there's
definitely
a
lot
of
opportunity
to
talk
about
some
of
the
crazier
things
that
we
could
do.
I
mean.
Could
you
stream
a
bunch
of
4k
videos
inside
of
video
game
engine?
C
Theoretically,
yes,
I
mean
the
bandwidth
isn't
possible
right
now,
but
if
you
employ
some
of
these
technologies
and
some
of
these
tools
that
let
us
recreate
data
client-side
without
needing
the
entire
picture,
all
of
a
sudden,
we
could
do
crazy
stuff,
like
that.
I'm
not
sure
why
we'd
want
to,
but
that's
never
stopped
us
before.
C
Sorry,
I
totally
did
not
mean
to
like
derail
the
conversation,
but
it's
one
of
those
cool
things
where,
like
there's,
there's
a
lot
of
limitless
potential
here
for
really
crazy,
weird
stuff
to
play
around
with,
and
it's
one
of
those
things
where
you
know
technology
inspires
the
art.
Art
inspires
technology.
You
get
to
this.
This
vicious
cycle
of
development,
where
you
can
have
crazy
things
happen
and
make
some
really
unique
and
interesting
aspects
of
gameplay
yeah.
A
Let's
see
so,
we
talked
about
the
new
server
stuff,
so
I
guess:
where
do
we
want
to
go
now?
Maybe
do
we
want
to
try
and
hack
some
code
in
to
actually
be
applying
rotation
or
or
switch
to
using
the
mass
bodies
or
like
what?
Where
are
we
at?
At
this
point?
I
guess.
E
Let's,
let's
cover
for
a
minute
the
the
client
improvements
that
jared
made
since
the
last
stream.
A
I
got
c
lion
main
scene
js.
Oh
okay,
it
is
srt
web
client
right.
B
Here
yeah
so
michael
may
be
actually
able
to
talk
to
the
javascript
side
better,
but
essentially
jared
who's
not
able
to
make
it
here
today
he
took
a
full
pass
on
the
client
side
and
what
we
had
before.
We
had
an
index.html
with
a
bunch
of
javascript
thrown
in
more
or
less
yeah.
A
B
Kind
of
where
we
were
right
so
he
took
it
and
he
broke
it
down
into
a
sensible
java.
Like
I
guess,
would
you
call
it
a
single
page
application
michael?
Is
that
how
you
would
describe.
E
What
it
is
you
could
get
away
with,
calling
it
that
usually
single
page
application
is
kind
of
indirectly
referring
to
sub
paths,
always
routing
back
to
the
same
applications.
So
if
we
went
to
the
space
ring
things-
and
I
don't
know-
let's
say
there
was
a
configuration
menu,
we
might
want
to
expose
that
under
the
url
path,
slash
config!
E
So
if
you
go
to
slash
config,
it
automatically
pops
up
the
configuration
menu,
but
it's
still
the
same
game
underneath
it's
the
same
index.html
and
the
same
javascript
running
it's
just
sort
of
using
the
url
path.
Instead
of
routing
it
to
different
files,
it's
just
routing
it
to
different
states
of
the
application
and
we're
not
exactly
doing
that.
But
it's
still
a
single
page.
So
I'll.
A
Initially,
most
of
the
work
or
a
lot
of
the
work
that
jared
was
trying
to
do
is,
as
you
described
like
break
it
up
into
more
modular
components,
and
then
we
we
attempted
to
kind
of
go
the
typescript
route,
but
ended
up
fighting
with
a
bunch
of
stuff
and
and
jared
was
trying
to
do
it
very
quickly.
So
we
we
abandoned
it
temporarily,
but
there's
a
goal,
maybe
to
try
and
go
the
typescript
route.
With
this
thing,.
E
Yeah,
it's
like
I'm.
Looking
through
the
diffs
myself,
it
looks
like
he
added
an
abstraction
over
the
the
message.
A
A
B
A
Although,
technically,
I
think
this
is
faster
than
the
game
client,
because
how
would
how
does
the
game
client
know
that
tick,
because
we're
using
we're
using
a
game
engine
to
do
the
rendering
here
and
so
phaser
has
its
own
sort
of
tick
rate
loop
rate?
And
so
I'm
not
sure
that
that
comment
is
accurate.
B
B
Right,
that
is,
and
for
those.
C
That
aren't
really
familiar
with
tick
rates
and
games.
There's
a
pretty
famous
example:
if
you've
ever
played
the
elder,
scrolls
skyrim
or
any
of
the
bethesda
creation
engine
games,
like
fallout
all
of
their
game,
resource
handling
and
all
of
their
like
world
logic
happens
in
the
gameplay
loop
and
it's
based
on
your
frame
rate,
which
is
tagged
to
30
fps
on
consoles
and
60
fps
on
computers,
which
means
the
fastest.
The
game
can
do.
Anything
is
at
60
hertz,
which
includes
physics
and
loading
textures
and
models
and
doing
gameplay
simulation
everything.
C
So
if
your
frame
rate
like,
if
you
go
into
the
config
and
change
that
it
changes
the
entire
way,
the
game
works,
which
includes
like
breaking
your
physics,
which
there's
plenty
of
hilarious
videos
on
on
youtube.
So
when
you're
building
game
engines
right,
that's
kind
of
like
a
fundamental
thing.
Nowadays,
when
you're
building
like
a
modern
game
engine,
to
separate
out
your
your
tick
rates,
the
hurts
at
which
you're
processing
things
into
different
threads.
C
E
Yeah
and
that
that's,
that
is,
that
is
nice,
that's
something
that
I've
kind
of
struggled
with
writing
games
is
trying
to
reconcile
that
trying
to
get
the
physics
loop
running
fast
enough,
so
that
you
don't
have
well.
I've
tried
to
write
like
collision
detection
that
runs
fast
enough,
that
if
whatever
the
maximum
speed
of
an
object
is
if
it
hits
another
object,
there's
no
point
where
it
can
wind
up
overshooting
and
overlap
the
object
and
kind
of
get
stuck.
C
One
of
the
things
that
I've
done
in
the
past,
which
you
know
people
look
at
you
like
you're,
crazy
and
they're
like
wait
a
minute.
This
might
actually
work,
is
instead
of
running
one
physics
engine
at
an
extremely
fast
hertz,
especially
for
where
you
have
like
objects
or
projectiles
that
are
traveling
very
quickly.
You
run
two
physics
engines.
At
the
same
time,
one
of
them
is
a
one
step
ahead,
and
then
you
know
I
used
to
call
this
like
quantum,
even
though
it's
nothing
to
do
with
it.
C
It's
just
the
fact
that
you're
writing
two
things
at
the
same
time,
but
quantum
physics
simulation
and
what
you
do.
Is
you
interpolate
between
the
two
states?
And
you
say
if
at
any
point
in
here
it
breaks
like
the
physics
engine,
then
we're
going
to
resolve
to
the
prior
state
and
consider
it
a
collision.
C
And
basically
it's
like
you're
running,
like
a
simulation
of
what
things
will
happen
next
and
using
that
to
inform
how
your
simulation
resolves
currently,
and
that
sounds
crazy,
expensive.
But
when
you're
running
like
a
physics
engine,
two
of
them
only
at
like
you
know,
15
hertz
or
something
like
that,
instead
of
one
of
them
at
like
90
or
120
hertz,
you
actually
have
some
performance
gains
on
that,
but
it
only
really
works
in
that
scenario,
where
you
have
things
that
are
moving
like
super
fast
and
you're
trying
to
resolve
collisions
where
it's.
C
Relative
to
the
tick
rate
yeah,
so
you
know
things
like
spaceships
flying
throughout
a
solar
system
at
near
sublight
speeds
like
that's
a
good
use
for
that,
where
you
have
a
predictive
physics
engine
informing,
what's
actually
happening
and
being
like
hey,
you
know
some
stuff
broke,
so
you
have
to
stop
the
simulation.
There
register
a
collision
before
it
actually
happens.
E
Another
thing
on
frame
rates
that
I
I
learned
recently
so
I
got
my
first
high
frame
rate
monitor
and
maybe
three
month
hurts
and
I
I
was
like
wow,
the
mouse
is
so
smooth
look
at
it
move
it's
super
smooth
and
then
I
loaded
up
the
a
game
that
jared
and
I
built
zorbio
that
we've
talked
about
on
stream.
We've
actually
had
the
game
on
stream,
getting
it
running
on
openshift,
so
I
load
up
that
game.
E
It's
a
web-based
game
and
I
start
playing
it
like
wow
this
game,
it's
so
smooth
at
144
hertz.
This
is
incredible
and
then,
like
a
month
later,
I
find
out
that
request,
animation
frame,
which
is
the
the
function.
You
call
in
a
web
browser
to
get
a
frame
rate
locked
a
callback
to
basically
to
run
something.
E
That's
v-synced.
Is
that
one
way
to
put
it?
It's
how
you
animate
things
I
find
out,
you
can't
go
higher
than
60.,
so
I
was
looking
at
the
game
at.
E
And
thinking
this
is
so
smooth,
it's
couldn't
tell
so
that's
an
interesting
takeaway
is
that
you
at
the
moment
in
web
browsers,
you
cannot
go
higher
than
60
hertz.
C
Well-
and
there
are,
there
are
ways
around
that.
Actually,
I
think
with
canvas
right,
there's
a
way
to
get
around
it.
Well,.
E
You
know
I
haven't
played
with
it
in
like
years,
but
you
can
draw
you've,
always
been
able
to
draw
faster
just
with
a
set
interval.
You
can
go
down
to
like
every
millisecond
or
something
if
you
want
it's
just
a
little
inconsistent,
because
that
interval
isn't
they're
not
evenly
spaced.
You
know
the
when
the
when
your
function
gets
called.
It's
not
evenly.
Spaced
request,
animation
frame
is
the
only
way
to
do
smooth
animations,
because
it's
locked
to
your
monitor's
frame
rate,
except
in
the
case
of
having
greater
than
60
so
yeah.
C
Yeah,
that's
that's
definitely
true
and
there's
I
swear
there
was
a.
I
don't
know
there
was
something
that,
when
I
had
originally
messed
with,
like
you
know,
html
canvas,
3d,
sort
of
thing
where
you're
not
using
request
animation
frame
but
you're,
essentially
like
requiring
3d
hardware,
acceleration.
There's
a
there's
a
way
to
do
that
and
I
think,
even
like
shader
toy
or
something
like
that,
uses
that
hack
to
let
you
get.
You
know
above
60
frames
per
second
but
yeah.
C
I
don't
know
if
it's
something
that's
shippable
right
now
for
a
game
on
the
screen,
but
to
your
point
about
like
feeling
that
it's
smoother
so
it
actually,
even
if
the
animation
itself
isn't
updating
more
than
60
frames.
A
second
that
monitor
that
anything
that
displays
on
that
monitor
will
likely
appear
smoother,
just
because
it's
less
rough
on
your
eyes
like
if
you've
ever
gone
at
a
home
depot,
especially
in
like
the
90s
and
like
gotten
a
headache
from
the
overhead
lighting,
you
know
or
any
like
home
supply
store.
That
uses
like
mass
manufactured
cfls.
C
That's
because
that
lighting
is
like
running
at
like
40
hertz
or
something
absurdly
slow,
and
so
it's
flickering,
you
know
40
times
a
second
and
your
brain
is
like,
oh
god,
I
have
to
make
up
so
much
information
and
you
get
a
headache
from
it.
It's
it's
not
everybody
that
experiences
this,
but
for
some
people
right
and
the
same
thing
can
be
said
with
computer
monitors.
C
You
know
like
I
can
very
easily
see
the
difference
between
a
240,
hertz
or
a
600
hertz
monitor
versus
a
60
hertz
one,
but
I'm
also
someone
if
I
walk
into
like
hellos
or
home
people,
or
even
like
a
mcdonald's
that
hasn't
been
updated
in
a
while.
I
immediately
get
a
headache,
so
it
is
pretty
different
for
a
person,
but
it
is
something
that
the
human
eye
can
notice
and
I
think
it's
somewhere
up
to
4
000
hertz.
B
Sending
the
move
yeah,
I
was
just
giving
a
brief
overview
there
of
essentially
what's
going
on,
I
mean
you
can
see
if
you
take
a
quick
look
through
like
the
code
is
really
nicely
structured,
there's
constructors
in
place
it
very
much
maps
with,
like
my
game,
dev
view
of
like
an
update
loop
and
having
the
zen
move
separate
and
all
the
stuff
that
you
kind
of
expect
to
see,
and
you
look
at
the
way
the
scenes
are
broke
down
like
coming
from
like
a
unity
background,
for
example,
that
probably
is
like
an
easy
thing
to
crock
or
even
or
even
godot.
B
B
It
gives
us
a
really
great
base
to
build
upon
versus
like
our
original
stuff,
which
was
like
hey,
let's
get
this
stuff
working
and
let's
throw
all
this
code
in
here
and
like
crack
the
crap
out
of
it
and
then
it
was
like
it
got
to
the
point
where
it
worked
and
then
jared
was
like
hey.
I
see
that
that
works.
Let's
take
that
and
turn
that
into
like
the
face.
E
Of
of
the
server
messages
to
smooth
out
the
client
motion.
B
A
C
It's
basically
using
an
argument.
It's
saying:
hey
here's,
the
position
that
we
have
currently
here's
the
position
that
the
server
is
saying
increment
along
that
path
and
in
game
development.
Essentially,
there's
you
know
two
ways
that
you
want
to
do:
interpolation,
there's,
linear,
interpolation
and
there's
spherical
linear
interpolation,
and
all
that
really
means
is
a
direct
line
to
the
point
you're
going
to
or
essentially
you're
going
to
have
an
arc
between
the
two
points.
Spherical
looks
better,
but
it
also
requires
a
lot
more
finessing
to
make
it
look
good.
A
C
D
C
C
The
latency
number
is
yeah,
which
you
know
for
competitive
fps.
That's
terrible,
and
in
fact
that's
why
you
predict
like
where
the
player
will
be
so.
The
current
position
is
always
what
the
server
says
and
then
you
have
predictions
and
then
you,
you
know:
linear,
spherical,
linear
interpolate,
between
the
two
for
like
an
rts,
you
know,
or
this
type
of
like
strategy
game
like
it's.
Okay
for
things
to
be,
you
know
30
of
half
a
millisecond
behind
right
like
it's.
It's.
D
A
Well,
no,
I
think
we
wanted
to
talk
about
so
last
week
we
had
explored
a
little
bit
in
box
3d
about
how
to
assign
a
mass
to
the
objects
and
change
the
like
the
type
of
object
that
it
was
because
we
were
doing
one
type.
B
A
A
The
left
and
the
right
arrow
keys
are
not
applying
rotational
force,
they're,
simply
applying
left
and
right
force
to
the
center
of
mass,
and
so
we
probably
want
to
figure
out
how
we're
going
to
do
rotational
force
instead
of
left
and
right
to
center
of
mass
and
then
also
figure
out.
You
know
once
we
start
strapping
things
on
to
our
ship,
like
how
that's
going
to
change
the
physics
of
the
object,
and
you
know
where
we
want
to
attach
those
things
and
and
so
on
and
so
forth.
B
Yeah
so
like
our
limiting
factor
from
like
a
server
point
of
view
at
the
moment
is
essentially
we
loop
through
the
the
move,
q
and
then
literally,
we
take
them.
Like
I
said
earlier,
we
take
the
x
and
the
y,
and
each
x
and
y
is
between
minus
one
and
one.
We
take
the
configuration
force
multiplier
and
then
we
basically
take
that
vector
and
we
apply
it
to
the
center
of
the
box
to
the
object,
which
is
why
we
have
like
strictly
this
way
this
way,
and
that's
it
right.
B
So
one
of
the
things
I
think
derek
worked
on
was
figuring
out
how
our
rotation
is
going
to
work
with
regards
to
game
play,
and
so
what
we
need
to
do
there.
I
think,
if
my
understanding
is
correct,
is
determine
the
correct
vector
on
the
client
side
of
where
we
are
applying
force
to
the
body
and
send
that
vector
to
the
server
and
apply
it
here,
but
it
will
no
longer
be
applying
it
to
the
center.
We
will
have
to
apply
it
to
a
specific
point.
Is
that
right?
There.
C
Essentially
they
build
out
a
realistic
flight
model
and
then
they
put
an
abstraction
on
top
of
that,
so
your
controls
are
simplified
and
you
can
essentially,
you
know,
put
in
your
input
the
way
you
would
expect
any
other
video
game
to
work
and
then
it
translates
that
to
a
flight
model,
and
so
you
get
that,
like
really
nice
feel
to
it.
Now
I
don't
feel
like
we
need
to
go
something
that
complicated.
You
know
for
essentially
what
is
a
mobile
game,
but
it
I
do
like
the
idea
of
saying.
C
Like
hey,
you
know
we
have
a
force
vector
it's
the
rear
of
the
ship.
It's
where
the
engines
are.
You
know
it's
only
going
to
cover
that
180
degree
angle
of
force,
and
so,
if
you
want
to
go,
you
know
backwards.
Essentially,
you
have
to
rotate
the
ship
first
and
that's
a
rule
that
the
control
logic
you
know
come
in
is
the
only
thing
the
ship
should
be
concerned
with,
and
the
only
thing
the
server
should
be
concerned
with
is
the
thrust
vector.
C
You
know
that's
essentially
being
simulated
against
the
engines
for
our
spaceship,
but
on
the
player
side
on
the
control
side,
we're
going
to
be
doing
all
that
translation
of
well,
you
want
to
go
left,
so
we're
going
to
you
know,
put
in
a
thrust
vector
of
this
and
send
that
to
the
server
or
you
want
to
rotate
around.
Like
you're,
you
know
you're
tapping
behind
the
ship,
so
it
needs
to
rotate
so
we're
going
to
send
this
thrust
vector.
B
A
C
About
humans,
it
doesn't
want
to,
you
know,
deal
with
people,
that's
that's
a
client
problem
and
a
lot
of
times
when
you're
doing
game
development.
You'd
kind
of
run
into
this
like
scope
problem
where
the
human
centric
code
is
everywhere
in
the
code
base,
and
so
when
your
players
do
stupid
things,
your
code
base
does
stupid
things.
But
if
you
localize
all
of
the
logic
that
has
to
deal
with,
you
know
your
players
into
one
place.
It's.
A
It's
only
two
words,
so
it
can't
be
a
skyband
yeah.
I
can't
so.
I
guess
if
I
was
to
sort
of
unpack
a
little
bit
of
what
was
said.
So
what
we
want
to
do
is
on
the
server
side,
simply
accept
a
vector
of
force
and
then
on
the
client
side,
depending
on
the
input
device
calculate
the
vector
of
force
to
tell
the
server.
B
A
B
So
one
of
the
things
that
could
happen
that
I
could
envision
is
hey:
we've
blown
up
an
enemy
ship.
We
picked
up
a
thruster.
It
happened
to
stick
to
whatever
part
of
our
ship,
but
from
my
point
of
view
on
the
server,
that's
still
simple,
because
the
vector
will
all
be
calculated
before
it's
handed
to
the
server
well.
A
A
The
client
may
need
to
say:
okay,
the
resultant
vector
is
blah
or
I
need
you
so
so
we're
actually
also
now
changing
the
messaging
structure,
because
today
the
message
for
what's
coming
from
the
client
doesn't
do
any
of
this.
So
we
actually
probably
need
to
start
at
the
message
level
with
the
protobuf
for
sending
yeah
raw
input,
because
what
we're
actually
sending
looks
today,
like
a
pb
vec.
A
C
C
Yes,
but
I'm
going
to
say,
let's
do
even
less
work
right.
I
think
we
should
offload
that
work
to
the
player
right
and
that's
a
place
where
maybe
there's
artificial
difficulty.
Maybe
there's
real
difficulty
right
and
that's
a
question
to
maybe
solve
later
down
the
road.
But
it's
something
to
be
aware
of
is,
if
you
add
a
you
know,
another
thruster
or
weight
or
mass,
or
you
change
the
way
that
the
physics
of
the
ship
works
as
a
player.
C
C
No
matter
what
you're
just
saying
the
control
vector
this
is
where
I
want
the
ship
to
go
now.
Does
that
mean,
if
you
add
a
thruster,
that
the
we're
not
actually
adding
a
physical,
just
additional
point
of
thrust
to
the
ship?
We're
doing
is
incrementing.
You
know
the
value
of
the
base.
You
know
physics
or
something
like
that.
So
now
the
ship.
B
E
C
You
know
edition,
or
is
it
an
actual
physics
edition
regardless?
I
feel
like
that,
like
once
we
decide
gameplay
balance
wise,
which
way
to
go.
The
problem
should
still
have
to
be
solved
by
the
player.
We
shouldn't
have
the
game
engine
adjust
for
that
fact.
You
know
like
having
that
difficulty
of
oh,
your
ship's,
more
unwieldy
right,
because
when
you
tap
here
instead
of
it,
turning
how
you
expect
it
turns
faster.
That's
that
should
be.
You
know
an
expected
consequence
and
in
fact
that
might
be
really
good
player
feedback.
A
So
it's
interesting
you're,
you're,
sort
of
both
agreeing
with
me
and
disagreeing
with
me,
and
so
I'm
going
to
paraphrase
what
you
said
a
little
bit.
So
if
you
think
about
a
more
classical
flight,
sim
or
or
like
a
racing
game
where
you,
you
have
a
base
level
of
control
and
let's
assume
the
negative
sort
of
situation,
you
have
damaged
your
vehicle
and
now
the
handling
is
screwed
up
because
the
vehicle
is
damaged.
A
So
when
you
try
to
turn
left,
it
turns
left
like
way
a
lot
and
when
you
try
to
turn
right,
it
turns
right
like
really
badly
right.
This
is
like
classical
race
car.
You
know
kind
of
damage
calculation
stuff,
so
we're
actually
doing
the
opposite,
where
we
are
adding
handling
performance
to
the
vehicle,
but
we're
not
necessarily
adding
it
equally
in
all
directions,
and
so
what
you
sort
of
were
describing
is
like.
A
What
I'm
getting
at
is
like,
if
you
strap
one
thruster
onto
the
left
side
of
your
spaceship,
you're,
going
to
turn
right
really
fast,
but
you're
not
going
to
turn
left
any
faster
and
the
only
way
to
make
that
work
is
either.
The
client
has
to
sort
of
do
interpolated,
math
to
to
calculate
the
the
resultant
single
vector
on
the
object,
or
we
have
to
look
at
the
fact
that
there's
now
two
thrusters
on
this
thing
and
apply
the
thruster,
the
one
thrusters
force
and
then
apply
the
second
thrusters
force
as
two
force
vectors.
B
So
I
guess
the
question
is:
are
thrusters
a
special
case
of
what
we're
going
to
do
in
general,
right
like
in
general,
like
if
you
look
at
the
body
as
just
a
single
unit,
then
calculating
everything.
Client
side
makes
a
lot
of
sense
right.
But
when
you
start
picking
up
mass,
do
we
still
look
at
it
as
a
single
unit?
Or
do
you
want
to
physically
simulate
the
breakdown?
B
And
each
item
then
has
its
own
properties
right,
because
you
can
get
into
another
level
of
detail
where
we
say
like
well,
there's
a
joint
between
this
new
thing
that
came
along
and
it's
stuck
to
the
body,
and
we
want
to
physically
simulate
that,
and
so
just
as
you're
saying
eric.
If
it's
a
thruster
there's
a
point
in
a
joint
where
that's
connected
and
because
it's
joined
it
has
a
force
and
through
the
joint
it
applies
the
force
to
the
original
body
and
that's
all
simulated,
all
the
way
through
right.
So,
like
that's,
the.
C
My
argument,
my
argument
here
is
this-
should
stay
out
of
our
proto
buff.
This
is
a
gameplay
feel
and
a
gameplay
balance
question,
and
I
think
we
should
try
both
eventually
right
to
see
which
one
feels
better
for
the
player
and
which
one
kind
of
controls
better
and
gives
you
more
feedback.
But
and
when
we're
talking
about
like
the
protobuf
itself,
we
should
just
stick
to
that.
You
know
one
vector
of
this
is
the
control
input
from
the
spaceship
and
then
on
the
server
right.
A
A
So
if
we
think
about
an
imaginary
joystick
inside
the
spaceship
ignore
whatever
the
human
interface
is
to
the
game,
it
could
be
a
carrier
pigeon,
I
don't
care,
but
inside
the
spaceship
there
is
an
imaginary
joystick
and
what
derek
it
sounds
like
you're
saying
is
the
human
interface
device
takes
an
input
and
then
figures
out
where
the
imaginary
spaceship
joystick
is
and
then
sends
that
to
the
game
server
and
then
the
game
server
does
whatever
should
happen.
Based
on
the
spaceship's,
imaginary,
joystick
position.
A
Okay,
cool
roddy
does
that
does
that
make
sense
too?
Yes,
yeah?
So
now
now
we're
back
to
yes,
I
agree
with
you
derek.
We
do
not
have
to
change
the
protobuf.
We
don't
have
to
change
the
messaging
structure,
we're
going
to
take
some
scaled
zero
to
one
in
both
the
x
and
the
y.
That's
the
spaceship,
stick,
input
position
and
then
variety
to
your
point.
A
However,
we
implement
the
physics
underneath
like
do.
We
actually
attach
a
new
body
with
a
joint,
and
you
know
then
there's
additional
force
applied
scaled
based
on.
You
know,
properties
of
that.
So
I
think
to
your
point
also
roddy.
We
may
end
up
with
keeping
track
of
multiple
things
for
the
big
body.
So,
for
example,
like
the
main
thruster
everybody
starts
with
the
same
one
and
then
you
fly
around
you
you
blow
up
some
other
bad
people.
You
know
your
opponents
whatever
and
then
suddenly
you
have
an
extra
thruster.
That's
attached
to
your
thing.
A
Now
you
have
a
another
thrust
source
that
has
to
look
at
the
input
from
the
the
ship
stick
if
you
will
and
apply
some
proportional
force
based
on
its
own
properties.
Right
so
you
picked
up
the
gold
thruster
as
opposed
to
the
platinum
one
and
the
gold
one
only
puts
out.
You
know
a
hundred
thousand
kilogram
meter
second
force,
whereas
the
platinum
one
is
200
000.
You
know
or
something
like
that,
and
so
we
need
to
keep
track
of
those
things.
A
I
would
say
for
the
for
the
initial
purposes
of
simplicity
like
we
just
need
to
change
the
numbers
that
the
client's
sending
we
actually
don't
need
to
do
anything
different.
Yet
at
the
server.
A
Yeah
yeah,
so
the
next
step
after
that,
though,
is
like
once
we
implement
the
client
side
human
input
device
to
ship
stick
translation.
Then
we
get
to
the
point
of
okay.
Now
what
we
want
to
do
on
the
server
side
is
change
it
so
that
left
right
on
the
ship
stick
is
applying
rotational
force
to
the
body
as
opposed
to
currently
where
it
only
applies
linear
force
in
either
the
x
or
the
y.
D
A
First,
simple
change
is,
just
you
know,
figure
out
the
control
scheme
at
the
client
level
and
then
send
new
numbers
as
opposed
to
negative
one
to
positive
one
and
then
or
a
scaled
number
from
zero
to
negative
one
to
positive
one
on
a
linear
scale,
as
opposed
to
the
on
off
where
it
is
right
now
and
then
the
next
step
is
to
change
it
to
add
rotational
force.
That
makes
sense.
So
it's
like
kind
of
two
two
pieces.
A
C
And
this
is
the
thing
I
had
been
talking
about
that
I
that
I
wanted
to
start
working
on
and,
like
I
kind
of
wrote
out
the
math,
but
I
need
to
translate
that
to
code,
but
yeah,
it's
you
know,
tapping
mouse
click
or
whatever,
essentially
you're,
just
going
to
interpolate
like
that
that
linear
distance
and
say
you
know
hey.
This
is
how
much
force
I'm
going
to
request
from
the
server
in
order
to
get
the
ship
to
move
in
this
direction
right
versus
using
like
a
controller,
you
might
get
more
fine
tune.
A
A
Yeah,
so
I
just
had
an
idea
for
for
mouse
control,
and
you
can
tell
me
if
you
hate
it
or
not.
So
if
you
drew
a
ring
around
the
like
a
circle
around
the
spaceship-
and
you
said
any,
if
you
click
this,
this
also
translates
into
cars
because
there's
a
thing
called
the
physics
circle,
where
you
only
have
a
certain
amount
of
traction
in
any
direction,
right
forward
backwards,
side
to
side
and
so
draw
around
the
spaceship
in
your
mind,
a
circle
and
then
take
the
mouse
cursor.
A
And
if
you
click
on
the
circle,
that
is
the
maximum
that
you
of
that's
the
farthest.
You
could
move
the
ship
stick
in
that
direction.
So
if
the
ship
is
pointed
straight
vertical
and
you
click
here
like
at
a
perfect
45
degree
angle
from
up
and
down,
you
are
now
maximum
left
thrust
and
maximum
forward,
and
if
you
click
right
next
to
the
ship,
that's
like
almost
zero.
A
So
as
you
as
you,
click
in
the
circle,
you're,
basically
creating
the
vector
of
thrust
application
based
on
where
you
click.
So
it's
super
visual.
You
know
exactly
where
the
limit
is
and
how
far
so
like,
if
you
click
outside
the
circle,
you're
not
going
any
faster,
you're
already
past
the
maximum,
you
know
and
then
maybe
there's
even
a
trope
of
like
well
the
more
thrusters
you
have
like
the
bigger
the
circle
gets.
C
Absolutely
no,
no,
no,
and
in
fact
so
this
this
gives
me
feed
to
like
go
on
that
tangent.
I
was
talking
about
two
minutes
ago,
but
in
a
typical
game
developer
studio,
you
will
actually
have
dedicated
engineers
that
are
solving
each
one
of
these
problems,
so
you
will
have
a
gameplay
engineer
who
their
only
jobs
are
sitting
there
in
unity
or
unreal,
or
a
version
of
the
engine
that
you're
working
on
and
all
they're
doing
is
iterating
on
the
movement
they're
trying
to
get
the
movement
of
the
player
character,
feeling
right,
feeling
fun
and
engaging.
C
So
when
the
players
interact
with
they're
like
yeah
like
I
want
to
keep
flying
the
ship,
because
it's
just
fun
to
fly.
The
ship
and
you'll
have
somebody
who's
sitting
there
and
they're,
just
working
with
controllers
and
they're,
just
working
with
you
know,
keyboard
and
mouse
and
all
the
different
inputs
prototyping
out.
You
know
how
that
feels,
how
that
interacts
with
the
different
movement
system.
Things
like
that.
So
I
mean
each
one
of
these
gameplay
systems
right
like
you'll.
Have
somebody
like
the
most
important
thing?
Is
that
player
feedback?
You
know
the
first
step.
C
Is
you
as
a
developer
right
like?
Is
this
fun
for
me
and
then
you're
gonna
go
and
play
test
that
you're
gonna
go
grab
your
kids
or
your
family
or
co-workers
and
be
like
hey?
Try
this
out.
Does
this
feel
really
fun?
So
that's
where,
like
you
know,
when
you
have
an
idea
like
that
of
like
hey,
you
know
if
I
tap
and
drag
from
the
middle
right
in
this,
like
the
sphere
like,
we
should
be
prototyping
that
we
should
be
testing
this
out.
C
You
know
touching
it
and
playing
around
with
it
and
going
does
this
feel
good?
You
know,
and
I
can
tell
you
from
experience,
having
played
a
lot
of
these
games,
that
is
a
fantastic
idea
right
and
combining
that
with
like
tapping
on
the
screen
where
you
have
like
an
automated
like
it'll
turn
the
ship
for
you
automatically.
C
D
C
This
is
something
yeah
exactly
well
within
the
circle
right.
It
would
be
kind
of
like
a
tap
and
drag
like
you're.
You
know
essentially
moving
a
joystick
right,
but
outside
of
that,
if
you're
tapping
like
in
the
surrounding
space,
because
your
ship's
gonna,
you
know
only
take
up
a
small
area
on
the
screen,
because
you
need
to
see
other
ships
to
know
where
they
are
and
shoot
them
and
that
sort
of
thing
if
you're
tapping
like
behind
that
enemy
ship,
your
ship
should
automatically
rotate
and
try
to
move
over.
In
that.
C
Right,
yeah,
and
that
makes
a
lot
of
sense
right.
You
know.
Do
I
want
to
manually
control
the
ship,
but
it
takes
a
lot
of
my
attention
and
I'm
not
looking
at
what
upgrades
I
have
and
where
other
players
are
or
do
I
want
to
just
tap
on
the
screen.
But
now
my
ship
is
going
to.
You
know,
move
in
a
very
predictable
manner,
what's
more
important
for
me
as
a
player,
but
to
your
question
about
targeting.
So
this
is.
C
A
D
A
C
Exactly
and
it
kind
of
brings
into
that,
like
I
have
limited
space,
I
have
a
limited
grid
set
on.
You
know
the
spaceship
frame
that
I
have
right
now
if
I
go
bigger,
I'm
easier
to
hit,
but
I
can
put
more
things
on
there
like
shield
generators
or
whatever.
But
now
my
choice
is,
do
I
add
missiles
which
only
fire
to
the
side
and
then
can
arc
away
the
farther
away?
You
know
a
target
is,
do
I
add
only
lasers,
but
lasers
are
short-ranged,
but
they
can
hit
any
direction
no
matter.
C
What
do
I
add
giant
cannons
which
only
shoot
forward
you
know
and
maybe
instead
I
had
a
shield
generator,
because
I'm
never
gonna
attack
somebody
head-on,
because
I
have
a
very
flat
and
wide
ship.
These
are
the
types
of
decisions
that
you
know.
We
can
envision
players
making
where
you
know
hey.
I
I
literally
have
30
seconds
before
I
drop
into
the
next
arena.
I
just
won
the
previous
one.
How
do
I
upgrade
and
change
my
ship?
C
A
Yeah,
so
to
sort
of
go
back
and,
and
paraphrase
it
sounds
like
there,
there
is
a
desire
among
you
all
to
have
this
like
tap
over
here
and
the
ship
just
tries
to
get
there
automatically
like.
I
I
that
almost
seems
like
it's
makes
the
game.
Not.
It
certainly
doesn't
make
the
game
too
easy,
but
it
seems
like
that's.
A
Yeah
sort
of
like
my
vision,
is
like
you,
you
should
have
to
control
sort
of
thrust
like
you,
you
can,
you
can
go
for,
you
can
apply
forward
and
backward.
You
know
sort
of
around
that
circle,
but
if
you,
what
it
sounded
like
you
were
saying
is
like
oh
well.
If
I
just
click
over
here
and
hold
outside
the
circle,
the
ship
is
just
going
to
figure
out
how
to
get
there,
and
it's
like
that.
That
seems
too
simple.
C
C
D
A
A
So
if
we're
cool
with
the
circle
idea
and
like
the
mouse
thing,
I
think
again
we're
now
back
to
like,
maybe
michael,
if
you
want
to
share
your
screen
since
you're
the
phaser
expert
here
today,
and
and
we
can
communally,
look
through
the
phaser
docs
to
figure
out
like
how
do
we
actually
click
on
the
screen
with
the
mouse
with
phaser
and
have
it
do
something.
E
E
A
E
Okay,
okay,
all
right,
I
will
try
to
share.
D
E
E
Zoom
in
a
bit
so
I'll
see
if
I
can
bring
up
the
bring
up
the
one
we
were
using
just
to
just
as
a
really
quick
input.
Let's
see
camera.
A
C
The
other
thing
to
note
accessibility,
wise
as
far
as
mobile
games,
go
pretty
much
an
accessibility
requirement
to
have
the
joysticks
like
invisible,
joysticks
or
whatever
you
call
them
in
the
bottom
right
and
bottom
left
of
the
the
screen,
in
addition
to
whatever
on-screen
controls.
You
have
because
there's
there's
plenty
of
people
that
have
difficulty
moving
their
fingers
to
the
center
of
the
screen.
A
Yeah,
but
so
then
you
get
into
this
weird
like
okay.
If
this
I
don't
use
the
word
term
disabled,
but
like
a
person,
who's
got
a
you
know
a
challenge
with
touching
the
center
of
the
screen
or
whatever
like
well.
If
all
they
have
is
a
joystick,
then
they
don't
get
that
sort
of
like
capital
ship
ask
touch
over
here
and
do
other
things
kind
of
thing,
because
all
they
have
is
a
joystick.
So
at
that
point
it's
sort
of
there's
a
there's
a
I
hate
the
word
fair,
because
nothing
in
the
world
is
fair.
A
Like
there's.
There's
this
unfair
input
difference
between
the
the
player,
who
has
a
a
an
abilities
challenge
and
like
the
player
who
can
tap
anywhere
on
the
screen,
and
so
if
we
want
to
have
the
virtual
joystick,
then
we
should
probably
just
have
the
virtual
joystick
and
call
it
a
day
and
make
that
be
the
only
input.
C
I
am
not
an
accessibilities
expert,
but
I
spend
a
lot
of
time
talking
with
and
working
with,
accessibility
experts
and
you're
kind
of
falling
into
some
of
the
common
tropes.
There.
Accessibility
is
not
about
limiting
everybody,
to
the
capabilities
of
a
single
type
of
input
or
person
right
or
about
fairness.
What
it
is
about
is
making
affordances
for
people
who
do
have
disabilities,
which
it
is
not
a
bad
word
right.
Disability
is
a
word
that
describes
exactly
what
it's
about
yeah.
C
Not
something
you
should
feel
guilty,
or
you
know
bad
about
saying,
especially
you
know
on
a
type
of
stream
where
accessibility
is
a
topic
we're
going
to
cover,
and
it's
something
that's
very
important.
I
think
to
all
of
us.
But
what
it's
more
about
is
providing
those
options
and
opportunities
for
people
who
are
differently
abled
to
be
able
to
participate
in
the
same
environment
and
they're
not
going
to
ask
for
it
to
be
fair,
they're
not
going
to
ask
for
it
to
be.
C
You
know
specifically
designed
to
accommodate
you
know
the
essentially
minimum
type
of
input
right,
they're
asking
for
is
customization
options
and
awareness
right
and
as
long
as
what
you're
doing
is
kind
of
covering
your
your
bases
there
and
making
sure
that
there's
multiple
different
ways
to
approach
the
problem,
because
each
person
is
different
right.
No,
two
people,
even
with
a
similar
disability,
are
going
to
have
the
same
exact
experience.
A
C
If
you're
building
in
those
accommodations
right,
then
what
you're
doing
is
being
responsible
so
sure
it's
really
it's
kind
of
a
misnomer
to
say,
like
being
accessible,
is
restricting
gameplay
to
a
you
know
very
simple
input
right.
It
is
about
that
customization
and
that
awareness
and
that's
what's
really
important
and
the
best
thing
that
we
can
do
about
this
is
not
make
those
decisions
ourselves,
but
go
to
accessibility
experts
and
go
to
people
who
have
the
disabilities
that
we're
going
to
accommodate
and
get
their
input
instead.
E
Yes,
this
is,
I
think
this
isn't
something
we
could
actually
use,
but
maybe
it'll
be
a
a
good
place
to
start
the
or
continue
the
conversation
about
virtual
joysticks.
So
this
is
a
game
that
jared
and
I
made
written
in
phaser
two,
and
this
was
a
virtual
joystick
plugin.
So
I
don't
know
if
you
can
see
my
like
touch
cursor,
it's
right
above
the
earth.
It's.
E
So
the
way
this
virtual
joystick
works
is
it
doesn't
have
a
fixed
origin
anywhere
on
the
page.
It's
as
soon
as
you
put
your
finger
down,
it
appears
and
as
you
drag
it
goes
out,
and
it
has
this
maxim.
You
see
these
three
smaller
circles
that
you
can
kind
of
see
them
pulling
them
in
different
directions
and
as
I
pull
them,
you
can
see
the
barrier
around
the
earth
moves
with
them.
E
So
the
idea
here
is
that,
wherever
you
put
your
thumb
down,
which
would
probably
if
you're
holding
the
phone
with
one
hand
it'll
probably
be
around
here-
you
can
put
it
down
and
that's
your
origin
point
and
then
you
can
drag
to
different
sides
to
control
the
the
direction
and
this
game
doesn't
have
a
velocity
or
anything.
So,
there's
no
magnitude
considered
here,
but
you
can
see
the
joystick
has
a
magnitude,
as
these
smaller
circles
expand
outward,
and
then
it
has
a
maximum
magnitude
where
I
can't
stretch
them
out
any
farther.
E
So
that
sounds
like
something
pretty
close.
Were
you
guys
imagining
that
the
the
control
circle
would
be
placed
directly
on
top
of
the
ship
or
yeah.
C
Your
index
finger
right
like,
and
your
primary
means
of
input
with
this
game
is
going
to
be
movement
only
right
like
we
don't
have
any
sort
of
weapons
controls
or
anything
like
that.
That's
all
automatic,
so
you're
either
moving
the
ship
or
upgrading
the
ship
right.
Those
are
the
two
essential
things
that
you're
doing
to
me,
like,
I
said,
for
you
know,
accessibility
purposes,
as
well
as
giving
the
player
a
lot
of
choice
about
the
way
they
interact
with
the
game.
C
We
should
also
support,
you
know
an
option
like
you
check
a
box
or
something,
and
then
the
joystick
is
just
permanently
in
the
bottom
left
hand,
bottom
right
hand,
corner
or
something
right
like
those
are
options,
but
for
now,
as
far
as
like
basic
implementation,
I
think
putting
a
virtual
joystick
smack.
On
top
of
the
you
know,
the
spaceship
right
is
the
easy
way
to
get
rolling
with
the
control
options.
E
Is
that
you
can
you
can
control
the
motion
from
whatever
your
comfortable
hand,
position
is
the
one
of
the
downsides,
though,
is
you
can't
look
at
this
screen
and
know
what
to
do
you
have
to
you
have
to
tap
and
start
moving
your
finger
around
and
kind
of
figure
out
what
to
do,
because
there's
no
ui
element
showing
you.
Here's
where
you
control
motion.
D
C
Right
exactly
yeah,
and
that
doesn't
mean
we
can't
change
things
in
the
future.
Right
like
we're,
not
locked
in
and
in
fact
that's
one
of
the
most
important
things
about
game
development
is
being
able
to
iterate.
You
don't
want
to.
You
know,
write
yourself
into
a
corner
where
hey
we
prototype
some
random
thing,
and,
oh,
my
god,
it's
so
much
better
than
everything
else.
We've
done
right.
You
want
to
be
able
to
pivot
to
that
and
immediately
kind
of
build
the
game
up
around
that.
C
So,
if
we,
you
know
accidentally
put
together,
some
sort
of
you
know
weapon
or
you
know,
tool
or
control
interface.
You
know
just
playing
around
that's
all
of
a
sudden
like
wow.
This
feels
amazing.
This
is
this
is
addicting
right.
That's
where
you
know
you
have
something
good
and
that's
where
you
want
to
be
able
to
put
it
into
the
game.
So
avoiding
writing
ourselves
into
corners
is
really
important.
E
Absolutely
so
I
don't
know
if,
let's
see,
is
this
one
that
paid
one
now
this
one's
on
github.
E
A
E
C
Another
thing:
that's
super
fun
with
mobile
games
in
a
place
where
mobile
games
are
actually
pretty
further
along
than
a
lot
of
desktop
games
is
consideration
for
all
the
different
aspect
ratios
on
devices
and
placement
on
the
screen.
A
lot
of
desktop
games
assume
you
know
you're,
either
you're
16
by
nine,
no
matter
what
and
you're
1920
by
1080
or
you
know,
4k
and
with
mobile
devices.
You
don't
have
that
luxury
right
like
your
screen,
could
be
any
size.
It
could
be
a
bloody
cube.
C
You
know,
there's
some
mobile
phones
out
there
that
just
do
that
right,
and
so
you
know
making
those
considerations
of
like
when
we're
building
the
ui
when
we're
taking
an
input
when
we're
calculating
the
displays,
it's
always
about
making
our
best
guess
about.
You
know
what
is
the
minimum
width
of
the
device.
C
D
B
C
There's
an
application.
I
love
to
use
called
flawless
widescreen,
it's
a
dll
injector,
a
game
file
injector,
but
it
goes
to
show
like
two
how
little
effort
it
takes
nine
times
out
of
ten.
If
you
just
think
about
these
things,
you
know
before
you
write
the
code,
because
what
it
does
is
it'll
adjust,
there's
something
like
a
library
of
nearly
a
thousand
games
in
there
that
don't
support
arbitrary
resolutions
on
desktop,
but
this
little
dll
injector,
you
know
just
has
somewhere
around
less
than
150
lines
of
code
for
each
one
of
the
games.
E
E
The
rex
one
configurable
enough
yeah,
it
looks
like
it
has
a
base
and
a
thumb
configuration
option
where
the
default
is
just
to
draw
draw
this
phasor
circle
for
each,
but
this
this
is
kind
of
telling
me
and
I
think
the
documentation
would
back
this
up-
that
you
can
put
any
phaser
game
object
here.
So
we
could
replace
this
with
a
sprite
or
even
a
animated
fancy
thing.
If
we
wanted
to
spice
up
how
this.
E
Well
I'll
have
to
check
out
the
repo
first
and
does
the
game
run
without
a
amq?
It.
A
E
E
E
E
D
A
Yeah,
we
don't
need
it
in
the
in,
like
the
intro
page
or
whatever.
E
So
we
got
preload,
I'm
just
pasting
in
what's
from
the
the
demo,
it's
weird
all
right,
so
we've
got
the
url
in
here
since
we're
pre-loading
the
plug-in.
This
way,
I'm
going
to
remove
the
script
tag.
I
just
added.
E
C
C
C
C
No,
no
I'm
saying
moving
away
from
typescript
is
never
worth
it.
You
know,
especially
in
the
in
the
long
term,
where
you're
like
dealing
with
a
much
larger
code
base
with
multiple
people
working
on
it,
like
I've,
been
down
that
road
before
of
like
spent
multiple
years
working
with
typescript
things
and
then
like
the
second,
I
went
into
a
project
where
they
had
like
tried,
typescript
and
been
like.
Oh
this
is
you
know
too
much
of
a
pain
moved
away
from
it.
C
They
ran
into
like
all
the
problems
that
typescript
solved
with
the
code
base
with
like
six
people
working
on
it,
it
was
like
it
was.
It
was
a
really
good
case
and
point
of
like
typescript
is
pretty
fantastic,
and
while
it
is
painful
to
get
rolling
with
it,
sometimes
especially
using
third-party
libraries,
it's
almost
always
worth
the
effort
just
because
of
how
much
time
it
saves
you
down
the
road.
So
if
you're
planning
on
keeping
the
code
around
for
you
know
longer
than
a
week,
definitely
think
about
typescript.
A
I
mean
if,
if
you
want
to
do
that,
explanation
while
well
michael's
furiously
coding
away
sure.
C
Absolutely
I'm
down
for
that
launched
some
missiles
while
we're
at
it.
Typescript
is
really
it
solves
the
problem
of
the
fact
that
in
javascript
everything's
an
object.
So
what
is
it
that
you're
dealing
with
in
your
code?
Well,
I
don't
know
you
tell
me,
and
that
runs
into
all
sorts
of
issues
where
you
can
be
accidentally
reassigning
values
to
variables.
You
can
be
using
variables
in
situations
where
it
doesn't
make
any
sense
and
doing
static
analysis
on
javascript
code
is
kind
of
a
nightmare.
C
For
those
reasons
we
can't,
like
you
know,
run
down
every
arbitrary
runtime
path,
just
to
see
what'll
happen
with
a
bunch
of
random
variables
that
you
don't
know
what
they're
supposed
to
be,
and
so
there's
you
know.
Js
dock
and
other
types
of
annotations
that
you
can
use
to.
You
know
sort
of
make
things
a
little
bit
easier
for
static
analysis
and
for
your
programmers
to
take
a
look
at
the
code
and
understand
what
it's
supposed
to
be
doing,
but
with
typescript
itself
you're.
C
Actually,
you
know
you
have
a
compiler
you're
building
the
process
itself
together,
yeah
he
froze
I'm
assuming
he'll
he'll
be
right
back,
but
with
the
compiler
right,
it's
you're,
actually
putting
in
types
you're
putting
in
definitions
of
how
the
different
variables
are
defined
in
the
system.
You
know
whether
that's
a
string
or
an
integer,
if
it's
a
constant,
you
know
or
something
that's
static
or
not,
and
that
compiler
will
perform
that
pre-analysis
and
that
translation
to
javascript.
C
That
will
let
you
catch
so
many
type
issues
that
you
know
like
that's
kind
of
like
a
nightmare
of
like
you,
don't
know
what
this
type
is
that
run
time?
Well,
I
don't
understand
why
this
you
know
isn't
populated.
So
then
you
put
in
a
break
point
and
then
you're
like
digging
down
to
like
what
happened
this
variable
and
it's
like.
Oh,
I
redeclared
it
in
another
portion
of
the
code.
C
C
It's
one
of
those
things
where,
like
modern
php,
you
know
has
like
types
now
defined
for
input.
Parameters
for
functions
returned
values
like
all
this.
You
know
additional,
you
know
what
you
might
call
craft,
but
really
your
ide
takes
care
of
90
of
it.
These
days,
like
that
sort
of
stuff
allows
you
that
sort
of
craft
allows
you
to
do
static
analysis
and
like
in
real
time,
look
at
your
code
and
as
you're
writing
it.
It's
like
this
isn't
going
to
work
like.
I
know
what
you're
trying
to
do.
C
Click
this
button
and
we'll
get
you
there,
but
you
know-
and
that's
that's
the
sort
of
stuff
that's
going
to
make
the
difference.
You
know
between
modern
programming
and
what
was
happening.
You
know
even
five
years
ago.
We
should
be
able
to
get
to
the
point
where
we
communicate
an
intent
to
the
computer.
This
is
what
we
want.
Not
you
know.
This
is
what
we
see
happening
and
the
computer
goes.
Okay,
here's
the
steps!
I
can
get
you
there
right.
Does
this
make
sense?
We
shouldn't
be
spending
all
this
time.
D
A
Tell
me
about
it:
no,
I
mean
it's
probably
a
good
ending
point.
Then
we
we
talked
a
lot.
We
should
we
showed
what
we
had
done.
We
talked
a
whole
lot
about
kind
of
what
we
could
do
from
a
physics
perspective.
A
We
have
an
idea
for
changing
the
control
input
to
be
some
kind
of
virtual
joystick
yeah
sure
we
talked
a
little
bit
about
sort
of
physics
and
and
how
we're
going
to
sort
of
the
the
virtual
joystick
is
the
virtual
ship
stick
and
the
server
will
figure
out
what
to
do
with
whatever
that
is
telling
us
yeah
and
so.
D
A
A
We'll
be
completely
switched
over
to
typescript
no
and
we'll
have
the
virtual
joystick
and
maybe
we'll
have
rotation
of
the
spaceship
or
not
we'll
see.
C
B
A
The
server
just
needs
to
take
the
the
force
input
or
the
ship
stick
position
and
and
do
something
with
it,
and
so
today
that
would
be
rotation.
And
then
I
guess
we
will
need
to
change
the
client
to
actually
rotate
the
ship,
because
right
now
it
only
puts
it
in
the
same
position
at
xy.
That's
right
so
we'll
need
we'll
need
a
heading
of
the
object
to
come
back
in
the
message
which
I
think
it
does
and
then
we'll
have
to
rotate
the
sprite.
A
It
almost
all
the
way
man
good
good
good
on
you.
I
hope
everything's
okay
for
him
all
right,
we'll
see
you
all
next
month,
next
time,
thanks
again
and.