+ All Categories
Home > Technology > MMOPONG - BrnoJS X - Vincent van Scherpenseel

MMOPONG - BrnoJS X - Vincent van Scherpenseel

Date post: 20-Jul-2015
Category:
Upload: dotblue
View: 86 times
Download: 1 times
Share this document with a friend
Popular Tags:
18
MMOPONG BrnoJS X - 7 April 2015 Vincent van Scherpenseel
Transcript
Page 1: MMOPONG - BrnoJS X - Vincent van Scherpenseel

MMOPONGBrnoJS X - 7 April 2015

Vincent van Scherpenseel

Page 2: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Disclaimer

Please don’t laugh (too much)

Page 3: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Why?

• I wanted to learn NodeJS

• I love code related to networking

• I love retro games

• My love life was falling apart ;)

Page 4: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Ingredients

• NodeJS

• SOCKET.IO (v0.8.7) for networking

• jCanvas (v5.1) for simple canvas manipulation

• Webserver (Apache, Nginx, pick your poison)

• Open port 8080

Page 5: MMOPONG - BrnoJS X - Vincent van Scherpenseel

“Architecture”

Server(dictator)

Player(slave)

Player(slave)

Player(slave)

Player(slave)

Page 6: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Server is a dictator

The server dictates:

• where the ball is

• where all players (pads) are

• when a collision has occurred

• when a goal has been scored

Page 7: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Player is a slave

The only thing that the player is allowed to do:

• request to move (more on that later)

• render the game

Page 8: MMOPONG - BrnoJS X - Vincent van Scherpenseel

SOCKET.IO rocks

Page 9: MMOPONG - BrnoJS X - Vincent van Scherpenseel

The game loopServer-Side

Page 10: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Collision detection

Page 11: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Moving the ballserver-side

client-side

client-side

Page 12: MMOPONG - BrnoJS X - Vincent van Scherpenseel

The game loopClient-Side

Page 13: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Drawing assets

Page 14: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Moving the pads

Page 15: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Confession time

Why is network performance so horrible?

Page 16: MMOPONG - BrnoJS X - Vincent van Scherpenseel

This is baaaaaaaaaaaaaaaaaaad

ServerPlayer Can I haz move?

ServerPlayer Yes, new coords:

Page 17: MMOPONG - BrnoJS X - Vincent van Scherpenseel

The Right Way™

ServerPlayer

ServerPlayer DISCONNECT

My new coords:

if ( $distance > $possibleDistanceTraveledConsideringTime ) {

Page 18: MMOPONG - BrnoJS X - Vincent van Scherpenseel

Thank you!Vincent van Scherpenseel

http://vincent.io/ @vanscherpenseel


Recommended