►
From YouTube: Scalable Multiplayer Game Design with OpenShift (E9)
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.
Today's show will cover the integration of the game lobby and the game's web client with Red Hat SSO.
Host:
Erik Jacobs
Guests:
* Derek Reese
* Michael Clayton
* Roderick Kieley
* Jared Sprague
YouTube: https://youtu.be/BI6sV_p1k8I
Twitch: https://red.ht/twitch
A
Hello,
everyone
and
welcome
to
another
episode
of
the
scalable
multiplayer
game
design
show.
My
name
is
eric
jacobs
joining
me
today.
Are
my
partners
in
crime,
michael
clayton,.
B
C
A
The
park
got
spongebob
in
the
background
joining
us
today,
so
yeah.
What
have
we
been
up
to?
We?
We
didn't
get
to
do
last
month
because
we
had
a
lot
of
crazy
stuff
going
on
internally,
and
so
we
didn't,
we
didn't
get
a
whole
lot
done
to
actually
show
you,
but
we
did
get
a
little
bit
done
more
recently
and
what
we
did
do
or
or
what
I
did
or
what
I
butchered
probably
is
more
appropriate.
A
A
Authenticate
you,
or
at
least
force
you
to
authenticate,
if
you
will
so
what
I'm
going
to
do
is
show
my
screen
here:
hey
diva
73,
thanks
for
thanks
for
joining
in
today
yeah.
This
is
the
one
I
want
to
share.
Share.
A
Key
cloak
red
hat
sso
and
its
database,
we
have
the
infinispan
operator,
which
has
deployed
the
game
data
data
grid,
cache
which
really
isn't
being
used
for
anything
yet
we'll
get
there
someday.
But
when
I
run
my
little
script,
that's
what
it
deploys.
A
A
Then
we
have
the
actual
game
client,
which
now
is
a
true
node.js
application
running,
express
because
that's
how
we're
doing
the
key
cloak
integration
and
then
we
have
the
ruby
based
chat
lobby.
Oh
you
know.
If
I
deploy
the
game
server,
I
could
actually
just
throw
this
up
and
we
could
let
people
play
the
game
or
or
or
do
like
blow
things
up
well
anyway,
we'll
maybe
get
to
that
for
next
show.
So
if
I
open
the
chat
room
lobby,
there's
no
skinning
on
this,
I
should
probably
bootstrap
it
up
or
something.
A
A
So
when
I
log
in
through
github,
if
it
doesn't
blow
up,
apparently
I
was
already
authenticated
enough
to
github
that
single
sign-on
sent
me
directly
back
and
so
now,
I'm
in
the
lobby-
and
I
can
send
chat
messages
this.
This
will
actually
work.
I'm
going
to
put
this
in
the
stream
chat.
A
This
isn't
a
permanent
url.
This
is
just
a
cluster
that
I
have
for
now,
so
it'll
probably
go
away,
but
if
you
log
in
with
your
github
id
and
type
chat
messages
in
the
box,
they'll
appear
in
here,
I
don't
know.
If
the
scroll
bar
will
ever
appear
or
whatever,
but
anyway
what
we
did
under
the
covers-
hey
mr
clayton,
there
you
go
test.
A
What
we
did
under
the
cover
is,
if
I
inspect
oh,
if
I
make
the
text
bigger,
oh
it
does
make
the
inspector
bigger
too.
So
what
we
did,
what
I
did
was.
I
wanted
the
game
client
to
force
you
back
to
the
lobby.
A
If
you
weren't
already
authenticated
enough,
and
so
one
of
the
hacks,
I
did
drop
table
spaceships.
Yes,
exactly
one
of
the
hacks
that
I
did
was
I
made
this
link
for
play
now:
a
form
that
actually
posts
your
encoded
jwt
access,
token,
and
so
it
posts
this
over
to
the
web
client.
If
I
pull
up
the
web
client
code
and
michael,
I
know
you
made
some
changes.
I
don't
have
your
changes
here,
but
I
have
enough
to
just
show
what's
going
on,
if
I
pull
up
app.js,
this
is
a
node.js
application.
A
It
uses
express
for
pretty
basic
handling,
and
so,
when
somebody
posts
it
runs
a
series
of
middleware
handlers
in
order
and
the
first
one
is
okay
check,
sso
handler
and
if
we
scroll
down
to
the
function,
the
check
sso
handler
does
a
couple.
First,
a
couple
things:
first,
it
says
all
right,
I'm
going
to
redirect
you
back
to
the
lobby
by
default.
If
anything,
if
I
can't
figure
out
what
to
do,
that's
what
I'm
going
to
do.
A
First
thing:
it
does,
it
says:
hey
if
the
request
has
an
access
token
in
the
body,
you're
sort
of
already
logged
in
most
likely,
so
we're
gonna
send
you
to
sso.
Now
this
sounds
dumb
right
like
why?
Don't
we
just
always
send
you
to
sso,
because
I
wanted
you
to
get
sent
back
to
the
lobby
if
you
weren't
logged
in
and
so
sending
you
to
sso,
if
you
are
already
logged
in
kicks
you
back
to
the
game
client,
but
doesn't
actually
send
you
away.
A
I
know
that
sounds
really
weird
but
like,
if
you
think
about
it,
if
you
just
bookmarked
the
game,
client
url
and
you
kill
their
cookies
and
you
close
your
browser
and
you
went
to
the
game.
Client.
What
we
don't
want
you
to
be
able
to
do
is
get
kicked
to
the
login
page
and
then
immediately
kick
back
to
the
game
client
without
ever
seeing
the
lobby.
A
Ideally,
players
should
start
in
the
lobby
so
that
we
can
show
them
notifications-
or
you
know
if
this
was
the
real
world,
so
that
we
could
sell
them
5
000
things
with
micro
transactions.
You
know
we.
We
definitely
want
them
to
start
at
the
lobby,
and
so
what
this
is
doing
is
it's
basically
saying:
okay.
Does
the
game
client
know
anything
about
your
session
if
it
does
we'll
send
you
to
like
double
check
your
authentication,
to
make
sure
that
you're
still
valid,
like
maybe
you're,
maybe
timed
out
or
whatever?
A
But
if
I
can't
figure
out
what's
going
on
with
you,
I'm
just
going
to
shoot
you
back
to
the
lobby
and
then
let
the
lobby
handle
showing
that
you
should
really
actually
click
the
login
button.
So
if
you
have
an
access
token
in
your
request,
we
don't
redirect
you.
If
the
server
has
session
data
for
you,
then
we
don't
redirect
you
otherwise
stuff
is
missing,
and
so
we
force
you
back
to
or
redirect
you
to
whatever
the
lobby
host
name
is
as
an
environment
variable.
A
So
pretty
simple
stuff.
We
took
all
the
existing
code
for
the
for
the
web
client,
which
was
basically
just
static,
html
and
javascript,
and
we
moved
it
into
the
public.
I
moved
it
into
the
public
folder
and
so
all
that
stuff
lives.
Here
from
a
phaser
perspective,
I
made
a
couple
of
really
minor
changes
in
the
menu
scene.
A
There's
now
a
quit
button.
So
if
I
scroll
down
here
so
there's
a
button
that
will
appear
for
quit.
So
as
soon
as
you
come
into
the
game,
client,
the
first
thing
that
happens
is
you
see
the
menu
and
one
of
the
menu
options
is
now
quick
and
then,
if
you
click
the
quit
button
from
the
menu,
it
sends
you
to
the
slash
quit
path.
A
And
then,
if
we
look
at
the
express
stuff,
slash,
quit
does
two
things:
it
destroys
your
session
so
that
you
you
you
or
as
far
as
the
client
is
concerned.
As
far
as
node.js
is
concerned,.
A
So
destroying
the
session
means
that
you're
no
longer
going
to
have
this
key
cloak
data
in
the
session.
So
that's
good.
That
means
that
you'll
you'll
get
redirected
next
time
you
show
up,
and
then
it
redirects
you
back
to
the
lobby,
so
quitting
the
game
from
the
quit
menu.
Redirects
you
to
the
lobby.
A
There
was
a
quit
button
that
we
had
added
way
back
when
I
added
ugly
quick
button
to
the
upper
right
hand
corner
and
that
would
take
you
to
a
quit
scene.
A
Probably
the
quit
button
in
the
menu
should
also
take
you
to
the
quit
scene,
but
whatever
the
reason
that
we
have,
this
special
quit
scene
is
because
once
you're
in
the
game,
you
have
to
tell
the
game
that
you're
leaving
the
actual
game
like
the
playing
field,
whereas
if
you're
in
the
menu
you're,
not
actually
in
the
playing
field,
yet
you
haven't
been
initialized.
A
A
A
Click
quit
it's
going
to
redirect
me
if
I
click
click
join.
Oh,
my
god.
It's
going
to
play
music!
Don't
do
that!
Don't
do
that!
Jesus,
oh
and
the
the
quit
button
is
hidden
by
the
zoom
thing.
So
if
I
click
the
x
now,
I'm
back
in
the
lobby,
but
you'll
notice,
I'm
not
logged
out.
A
I
can
still
go
to
the
lobby
and
do
things
if
I
click
play.
It's
gonna
take
me
back
into
the
game
and
then
because
I'm
posting
into
the
game,
it's
gonna
be
like
oh
cool.
I
know
who
you
are.
I'm
gonna
force
you
through
sso,
real,
quick
but
you're.
All
good!
So
quickly
turns
me
back
around
and
I'm
back
in
the
game,
and
now
I
can
just
go
and
quit
directly
from
here
same
thing.
A
I
should
probably
send
you
actually
back
to
the
lobby
and
not
just
to
the
host,
so
that
that's
my
bad,
but
that's
that's
what's
going
on
now,
and
so,
if
I
let
me
copy
the
link,
oh
that's
a
form.
I
can't
do
that
all
right.
Let
me
do
this.
A
It
didn't
redirect
me
because
I
didn't
find
any
data
to
post,
but
I'm
still
logged
in
in
terms
of
sso
and
I
still
have
a
session
in
the
lobby,
so
I
can
still
access
the
lobby
if
I
click
log
out
and
now
I
try
to
go
to
the
game-
client,
I'm
just
going
to
get
rebooted
back
to
the
lobby
again
and
if
I
try
to
access
the
lobby
now
that
I'm
like
the
actual
chat
room
part
of
the
lobby.
Now
that
I'm
locked
out
this,
I
think
just
boots
me
back
to
the
home
page.
A
B
It
seems
it
seems
robust
enough
for
now,
at
least
for
sure,
thank
you
yeah.
A
Robust
enough
for
for
for
my
high
school
programming
level
to
to
not
explode.
A
Yeah,
so
I
was
thinking
there
is
a
an
openshift
cluster
that
the
product
managers
maintain.
I
think
it
might
be
a
public
cluster,
so
I'm
tempted
to
get
this
all
going
in
that
cluster
and
just
leave
it
up
and
and
and
see
what
happens.
I'm
sure
it'll
be
all
kinds
of
atrociously
awful
and
bad.
There's
no
profanity
filtering,
there's
nothing.
I
mean
it's
all,
it's
all
bad.
So
I
don't
know
if
that's
a
good
idea
or
not,
but
anyway,
let's
see.
Is
there
any
other
code
that
I
want
to
show?
A
C
A
B
B
So
I
was
thinking
that
we
could
live
code
that
but
the
player
data
might
be
even
a
little
more
useful,
but
either
way
it's
just
phaser
stuff
and
did
phaser
a
little
while
ago.
So
I'm
like.
A
B
B
The
window.open
didn't
work
for
some
reason,
but
yeah
it's
a
yeah.
C
B
A
D
A
A
I'm
having
a
de-enhancement
unintended
feature.
Okay,
how
can
I
stop
showing
my
screen?
Zoom
is
like
I'm
trying
to
click
the
stop
share,
but
it
isn't
actually
doing
it.
B
And
it
doesn't,
it
doesn't
allow
me
to
take
over
either.
So,
oh
god
this
is,
I
cannot
start
all
the
other
participants
sharing.
A
D
A
Yeah
I
had
to
click
return
to
meeting
which,
like
kicked
down
the
little
menu
at
the
top
of
the
page
or
the
top
of
my
screen,
and
then
I
was
able
to
click
the
button
like
for
some
reason
when
it's
hovering
over
the
clock
in
fedora
it
just
wouldn't
it
wouldn't
do
the
right
thing
all
right.
You
do
that
I'm
gonna
try
and
get
the
game
server
running
on.
C
B
Okay,
so
so
eric
right
before
we
started,
we
were
looking
at
adding
kind
of
a
debug
mode
like
development
mode
way
to
bypass
sso,
so
you're
not
bursting.
A
B
But
this
this
could
be
a
good
thing
to
have
too.
I
think
we.
A
A
B
C
B
A
Maybe
oh
docker,
probably
not
if
it
was
pod
man,
maybe.
B
B
Yeah,
that
seems
to
be
running
so
I'm
gonna
pop
over
here
to
the
to
the
web
client.
And
if
we
look
at
the
package
json
this,
the
start
script
is
here
and
it's
got
that
that
debug,
the
debug
flag
that
you
mentioned
and
what's
nvm
neo
bim.
B
It's
like
a
modern
fork
of
them
with
a
lot
of
the
legacy,
stuff
removed
and
some
new
new
capabilities
added.
C
A
B
Zoom
is
it
feels
like
everything
is
in
syrup.
Everything
is
so
slow.
I'm
sharing.
This
feels
horrible
okay.
So
what
we're
going
to
do
is
try
to
make
the
games
server,
not
not
the
server
the
game,
client
launch
in
debug
mode
and
have
the
debug
mode
control
whether
sso
is
required
for
any
of
the
endpoints
that
we
might
hit
yes,
so
these
are
all
vars,
but
I'm
going
to
break
the
mold
and
do
const
bring
in
the
debug
package
and
then.
B
B
Where's
the
enabled
so
it
works
something
like
this.
You
can
query
whether
debug
is
enabled
with
the
enabled
function
and
it
has
an
optional
name
space.
So
you
can
enable
and
disable
debugging
on
subsets
of
your
modules,
but
we
don't
really
care
about
that.
So
I'm
just
going
to
run
enabled
with
no
argument
which
seems
to
I
don't
see
this
in
the
docs,
but
it
seems
to
stay
or
it
seems
to
just
be
a
wild
card.
If
you
don't
have
an
argument,
so
it'll
add
debug
to
or
it'll
check
if
default,.
B
C
B
So
we
can
do
something
a
little
fancy.
It
might
not
be
as
readable
like
this
is
really
hard
to
like.
If
not
aren't
you
hacking.
B
B
Looks
okay
and
then.
C
A
B
All
right
so
we'll
we'll
log
that
so
we
can
take
a
look
and
see
if
the
array
looks
right
and
then
the
way
that
we'd
actually
use
it
is
with
the
spread
operator
middlewares.
So
that
should
give
us
one
two
three
four.
B
Again,
we
should
get
four
middleware
functions
when
we're
not
in
debug
mode
and
when
we
are
in
debug
mode.
It
should
be
just
the
slash
and.
A
E
C
With
a
lot
of
yep.
A
Cool,
so
the
reason
I
was
using
debug
mode
is
because
like
express,
doesn't
log
anything
otherwise
and
so
it'd
be
nice.
If
we
logged
the
requests
or
whatever,
but
it's
fine,
we
don't
have
to
do
it
now.
B
A
A
B
Does
that
work?
It's.
C
A
B
A
B
B
Yeah,
that's
a
good!
Let's
try
that
so
I'll
just
add
it
to
this
ebook
enabled.
A
Yep
so
try
try
it
with
a
namespace,
though
like
of
srt
web.
B
C
B
B
And
I
guess
the
next
thing
is
we
find
out
if
we
can
actually
connect
to
the
server
here.
A
Oh
then,
it
probably
is
dead,
it
doesn't
look
like
it,
it
won't.
The
server
tends
to
seg
fault
if
it
runs
for
a
long
time
without
anybody
doing
anything
with
it.
But
there's
no
slight
fault,
that's
not
the
server.
That's.
This
is
srt.
A
Artemis
is
just
the
messaging.
A
A
Yeah,
but
if
you
look
step
three
step,
two
was
go
to
the
debug
tab
step.
Three
was
click
the
play
button
for
launch
main
assuming
you're
using
vs
code
tab.
B
B
A
D
A
A
A
It
for
you
right
so
so:
okay,
here's
the
challenge,
so
you
have
hang
on
hang
on.
You've
got
artemis,
which
is
the
message
broker,
which
is
not
the
game
server,
but
in
order
for
the
game
server
to
do
anything,
it
needs
the
message
broker
yeah.
So
what
these
instructions
are
attempting
to
do
are
telling
first
get
the
message
broker
running
then
build
the
game
server
container
image.
If
you
want
to
run
it
in
a
container,
then
run
the
container
image.
So
the
steps
are
out
of
order
and.
E
A
I
don't
even
know
I've
never
seen
this
error
on
fedora
before
so
I
don't.
I
don't
know
if
you
want
to
do
all
these
things
with
docker,
you
probably
can
without
any
of
the
pseudos
so
anyway,
so
just
get
rid
of
sudo
and
and
get
rid
of
podband
and
just
do
it
as
docker.
But
I
don't
that
that
sounds
like
a
misconfiguration
in
your
system.
C
A
What
b.
B
A
B
C
C
D
A
I
don't
have
docker
installed
on
my
system,
so
I
can't
I
can't
run
it.
D
B
But
it's
still
bound
to
what
port
was
it
three.
A
C
A
A
B
Okay,
yeah.
Let
me
let
me
go
ahead
and
push
that
so
you
can
get
it
derek.
B
C
C
A
You
can
push
straight
to
a
branch
we
should
only
we
we
only.
I
would
think
that
we
only
need
to
do
pr's
when
we're
trying
to
put
stuff
into
maine.
So.
B
B
A
B
Yeah
and
impressive
add
missed
files.
A
Serve
name
not
supported
for
ai
stock
type
connect
to
108802.
Where
is,
are
you
still
running
our
tennis
with
pod
man.
A
B
A
A
B
A
A
No
because
again,
docker
and
podman.
Well,
I
don't
think
anything's
running
in
your
in
your
docker,
because
that
the
compose
blew
up,
but
they
they
have
completely
different
network
name
spaces
anyway.
That
error
is
coming
from
proton,
but
I
don't
understand
what
it
means.
Survey,
I'm
not
supported
for
ai
stock
type.
A
And
you're,
using
the
latest
main
or
whatever.
B
A
A
A
Where,
where
did
it
blow
up
again
blew
up
on.
A
A
Phaser
well
this:
this
is
your
opportunity
to
make
it
do
something
without
the
game.
Server.
A
A
A
B
C
B
A
A
A
A
A
B
Put
a
put
quotes
around
ip
addresses
or
ip
address,
and
it
should
be
okay,
all
right.
Let's
do
switch
back
to
pi
man.
A
A
C
C
B
Just
just
following
orders.
A
A
A
A
A
A
A
A
B
Yeah,
I
think
so
that's
the
one.
That's
in
the
readme.
A
Yeah,
that's
probably
why
that
while
you're
having
weird
issues
hold
on
a
second,
I
think-
maybe
maybe
not.
A
B
A
A
A
A
A
Damn
it
okay,
why
is
it
in
there?
That's
a
weird.
A
A
D
C
A
All
right
here
is
the
old
thing
source
config.js
endpoint.
A
A
Here
let
me
do
one
more
other
thing
here:
get
check
out.
Are
we
still
master
maine?
No,
we're
still
master
all
right,
oh
did
it.
My
did
my
jwt.
I
thought
we
cherry
picked.
My.
A
A
If
that
makes
any
sense
like
the
the
things
you
did,
but
I
don't.
I
don't
know
that
I
actually
ran
it
with
a
server
after
I
did
the
express
stuff.
So
let
me
hack
something
really
fast
here
app.js,
so
I'm
just
going
to
get
rid
of
these
things.
C
A
C
C
A
A
We
have
that
we
use
this
entry
point
and
then
we
also
have
command
yeah.
A
D
D
A
A
B
Well,
what
all
I'm
saying
is
every
time
I've
seen
cmd
inside
that
array,
each
individual
item
has
double
quotes
around
it
like
the
dash
v
would
be
quote,
dash
v
quote:
that's
the
way.
I've
seen
it
again
like
I'm,
not
a
docker
guy.
I
don't
know
what
I
don't
know.
What's
what
I
just.
A
I
think
this
is
just
the
output
of
yeah
right,
correct,
correct
click.
Yes,
that's
the
output
of
the
logging
library
that
we're
using
I
mean
I
can
always
just
override
the
whole
entry
point.
C
A
A
C
A
A
D
A
Oh
because,
I
sorry
sorry,
sorry,
sorry
web
client,
I
have
to
change
my
config.js.
A
A
A
Same
problem,
so
let's
go
to
verbosity8,
which
I
think
does
like
crazy
command.
Debug
dumps.
A
A
Unexpected
type
yeah,
so
something
weird
is
going
on
with
the
amqp
library
when
it's
being
loaded
this
way,
but
like
I
don't
think,
we've
changed
any
of
the
stuff
in
here,
and
so
this
is
where
the
conversion
that
jared
had
done
to
this
isn't
typescript,
whatever.
Whatever
this
formatting
or
way
of
doing
things
is
called
like.
I
have
no
idea
how
to
debug
javascript
at
this
level,
because
I
don't
know
how
to
like
in
the
console
get
into
any
of
these
things.
B
D
Yeah,
you
can
add
the
breakpoint
and
then
launch
the
application
with
like
the
debug
and
then
use
the
ports
on
chrome.
Let
me
make
sure
that
works.
A
A
Yeah,
so
the
only
difference
in
like
I
don't
know
that
there's
any
difference
in
any
of
the
messaging
code,
but
when
I
checked
out
prior
to
express
and
ran
it
like,
it
worked
fine.
So
something
has
changed
in
the
way
that
the
messaging
code
is
being
loaded
executed,
used
wrapped,
like
I'm
out
of
my
league
here
in
javascript.
A
A
A
So
the
this
isn't
it's
not
that
this
is
the
problem.
It's
like.
I
don't
actually
know
what
to
do
like.
Okay,
yeah
great,
I
can
add
a
break
point
like
a
break
point
to
do
what.
A
Well,
so
the
the
library
is
not
what's
sending
the
first
set
of
communication,
it's
the
it's
this.
This
is
what
we're
doing
when
we
when
we
join
when
we
go
into
the
game,
I
guess
so.
I
guess
I
probably
want
to
debug
here.
Yeah.
B
C
C
A
All
right,
let's
see
what
we
got
here,.
B
And
then,
over
on
the
right
under
scope,
you'll
see
all
of
the
the
variables
that
are
currently
in
scope,
yeah.
B
A
D
A
Now
that
did
the
server
complain,
server
wasn't
even
running.
Well,
definitely
didn't
complain,
definitely
did
not
complain.
A
A
A
A
D
C
D
D
I
saw
that
so
line
97
of
ampq
or
amqp
game
client,
client
right
where
we
had
the
right
where
we
had
the
right
right
was
that
body,
maybe
not
working
previously,
and
now
it
works
like
we
were
sending
a
you
know.
This.Sender.Send
and
body
was
just
false
and
now
that
it's
populated
with
data,
it's
not
working.
A
A
So
what
I
can
do
is
like
I
can
revert
the
code
run
this
again
and
then
we
can
look
at
yeah
and
we
can
set
the
break
point
here
and
look
at
what's
in
the
thing
and
then
like
compare
the
two
things,
but
let's
see
so
web
client.
D
D
Wait
why
you
just
showed
in
the
chrome,
dev
tools
that
you're
sending
a
map
right
at
that
break?
Point
just
a
giant
map
of
data.
A
D
C
A
D
Okay,
so
where
is
the
binary
or
not
binary,
but
the
where's,
the
data
that
is
being
sent
that
we're
expecting
that
isn't
matching
up
like
what
does
it
look
like.
C
E
C
A
A
Unless
this
is
some
weird,
like
local
hosty,
protocoly
problem,
that
would
be
my
that's
gotta,
be
it
it's
like
some
weird.
Let
me
try
something
different
here:
what's
the
broker
ip
address,
1088.05.
A
A
D
A
A
C
B
Try
npm
start
again
and
make
sure
in
in
the
devtools
network
tab
you
have
bypass
cache
or
disable
cache
checked.
A
A
A
So,
like
nodejs
and
nodejs,
dependencies
played
no
part
in
what's
happening
here,
because
all
we're
doing
is
loading
files.
So
all
of
these
files,
a
hundred
percent
of
everything
in
javascript
and
and
lib
and
scenes
and
model
and
everything
these
files
all
existed
previously
and
and
did
not
change.
Can
you.
A
D
D
A
A
A
A
So
I
think
we
are
using
different
versions
of
stuff
srt
web
client,
srt
game
server,
srt
web
client.
So
if
we
look
at
package.json
low
dash,
phaser,
protobufs,
rhea,
etc
are
now
in
here
and
they
get
copied
in,
and
so
if
I
get
blog
so
this
is
probably
a
bug
in
newer
versions
of
something
cherry
pick
migrate
to
express,
express.
A
A
A
Oh
definitely
not
what
I
wanted
to
do.
Let
me
look
at
this,
so
I
think
what
has
happened
is
there's
some
dependency
version
change,
srt
web
client.
A
Serial1024,
so
my
my
guess
is
that
the
real
library
has
changed,
so
I
might
just
have
to
go
backwards
through
time
until
I
find
a
real
library
that
works,
because
if
I
look
at
package
json
here,
phasers
352.
A
A
It's
whatever
version
this
file
is,
and
so
I'm
not
really
even
sure
other
than
like
downloading
each
tagged
version
and
diffing
it
to
figure
out
which
version
it
is.
You
know
which
is
fine.
I
can
do
that.
It's
not
the
end
of
the
world,
but
that's
basically
what
what
I
think
happened.
So
if
I
come
here
and
go
to
github
rhea.
C
C
A
Got
it
this
says
august
4th
ria.js.
A
A
But
we're
not,
I
see
what
you're
saying
hang
on
a
second
I'm
at
the
previous
commit.
So
if
I
look
at
package
lock
and
what
do
you
want
me
to
search
for
aria.
C
C
A
But
remember
we
started
doing
maybe
we
didn't
start
doing
this
more
than
a
year.
A
A
Maybe
it's
a
newer
version
than
1024
that
we
have
previously,
because
that's
no
august
4th
is
like
today.
How
do
I
look?
Can
you
look
through
the
get
history
and
find
when
ria.js
was
added
yeah
to
the
repo?
The
first
time.
D
I
mean,
besides
six
months
ago,
which
is
only
slightly
helpful,
say
what,
besides
six
months
ago,
which
is
something
slightly
helpful.
Just
with
the
comments.
D
D
So,
what's
what's
happening
on
the
c
plus
side?
Is
it's
looking
at
the
message,
queue
with
message
being
specifically
a
protobuf
message,
and
it's
expecting
to
get
a
binary
message
and
decode
that
using
protobuf
and
instead
what
it's
getting
is
what
it
identifies
as
a
map
instead
of
a
binary
string.
D
A
Oh,
let
me
look
at
the
releases
history,
that's
better!
That's
what
I'm
looking
at
all
right
june
april
august,
5th
yeah
and
so
the
when
we
added
ria
was
december.
16Th.
B
Yeah,
maybe
maybe
you
didn't
grab
the
latest
at
the.
B
A
A
From
well
so
yeah,
let
me
do
this:
ls
dist
get
diff
distria
dot,
js
temp,
ria
nope.
These
are
very
different.
Also.
B
C
A
A
B
See,
what's
the
latest
packages
yeah,
you
do
npm
install
and
it's
a
regular
dependency
right,
not
a
div
or
is
it
correct.
A
A
No
we're
we
have.
We
wrote
that
copy
script
as
a
post
install
which
copies
the
depths
from
node
modules
into
that's
this.
Where
is
it
copyrex?
Dot?
Sh?