Meeting 4

Burnaby GDC Meeting # 4

Summary

• Name session, introductions, interests and majors of each person
• Massive multiplayer discussion
• Netcode
• Future GDC Projects - small and large

Intro

People: JJ, Perry, Ryland, Trevor, Jordan, Adam, Yuan, Camille, Ramin, Grayson
Interests include cats and other things… but mostly cats.

Massively multiplayer game discussion

Different types: competitive vs cooperative.
Competitive – kill each other?!
Cooperative - kill together?!
Some Cooperative games have been making the news lately and/or become cultural phenomenon
Ex: Twitch plays Pokemon, folding proteins game, EVE online, Bitcoins (if you can consider that a game)
Other examples of cooperative massively multiplayer games:
Noby Noby Boy, mmo games – WOW, Runescape, etc…
But How does one go about connecting all these players?

Netcode

code put in the game to make it run online
It’s challenging! Why?
highly asynchronous:
multiple games going on at once
need to know information about each copy of the game running
ex: send input changes of other players to all copies
difficult to keep every player’s game synchronized
How is the information transferred?
Information sent through packets
packets sent from computer to computer
2 kinds
1. TCP Transfer Control protocol
• Guaranteed to be received
• Done by sending confirmation to check if it has been received

2. UDP Universal datagran protocol
• No “Check”
• Less strenuous on the network but can be dropped.
• UDp often used for gaming because requires less interwebz
How to go about sending packets?
most naive approach - send everything to everyone
downside… too much overhead, clogs the network
less naive way… send messages when an event that changes the game occurs
ex: instead of every frame saying health: full, full, full, full, -5
it would say: health -5 only when health lost
message passing
downside is that game changing info could get dropped - game becomes desynced.
Knowing what data to send and what is safe to ignore is important
What Information to send?
send each player's controller inputs to the other players
send udp updates about player's position - if packets dropped, pos will be updated the next packet
side effects: if packet dropped, motion will appear jerky. Better than becoming desynced!
Usually sent about 20 times per second
Grayson's Experience
Grayson has some first had experience using netcode!
used unity to make dodgeball
Unity Tnet library - makes life easier
How Grayson’s netcode worked: synched position, rotation, and speed 20 times per second
What if someone wants to haxorz?
cheating can occur. ex: since all you're doing is sending location, you could change your location to teleport
cheating prevention: server to regulate
server way to run game: server running the real game.
Local (player’s) games are essentially there just for input for each player and to see what is going on.
if server and client disagrees, there is a sanity check in the server that makes it so you can't do "impossible" moves.
problem with server:
in your local game, if you dodge something at the last second, server may not receive that in time and count it as a hit.
must compensate by delaying according to ping.
another way to combat this scenario is to use "rollbacks" using GGPO (Good Game Peace Out)
if on Player A’s screen, Player A doesn’t get hit, and on Player B’s screen he did (because of lag), Player B’s game gets rolled back to the moment in question to check if the player actually got hit in real time.
“rolls” game back.
Side effects:
can cause people to die and come back to life (after game reevaluates condition)
peer to peer vs server:
p2p: upload and download from everybody's game
server: every upload and download is on server
Side Note:
LAN is bestttttt.

Proposed Games

• Members will be able to have their own projects to work on independently or in small groups
• Everyone can work on the club project (Oculus Rift Horror Game)
Potential Themes
Outdoors
Cutesy?
Games
House cat simulator - Oculus Rift
Heavy metal ddr - tutorial project
Majestic Kerfuffle (Kerfluffle?)
Infected game - controlling virus to infect the human - 2d
Pokemon snap with celebrities instead of pokemon

Next week: Unity tutorial. Bring laptops!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License