Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]

Robin Hawkes
Robin HawkesDigital Tinkerer at Rawkes
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
Rawkets - A Massively Multiplayer HTML5 Game [Mozilla GameOn10]
1 of 32

Recommended

The Prayer + by
The Prayer +The Prayer +
The Prayer +Miguel Rodriguez
513 views10 slides
AQA English - Unit 1 Understanding non-fiction texts by
AQA English - Unit 1 Understanding non-fiction textsAQA English - Unit 1 Understanding non-fiction texts
AQA English - Unit 1 Understanding non-fiction textsmissbec
3.5K views8 slides
Learning sessions #5 pre incubator - aperio by
Learning sessions #5 pre incubator - aperioLearning sessions #5 pre incubator - aperio
Learning sessions #5 pre incubator - aperiojvielman
548 views9 slides
MozTW 離線報 by
MozTW 離線報MozTW 離線報
MozTW 離線報Toomore
721 views4 slides
XPers/失われたリール《腰索》 by
XPers/失われたリール《腰索》XPers/失われたリール《腰索》
XPers/失われたリール《腰索》ledsun
780 views133 slides
Helmi Suhaimi by
Helmi SuhaimiHelmi Suhaimi
Helmi SuhaimiMohd Helmi Md Suhaimi
486 views10 slides

More Related Content

Viewers also liked

Rawkets: An inside look at a multiplayer HTML5 game by
Rawkets: An inside look at a multiplayer HTML5 gameRawkets: An inside look at a multiplayer HTML5 game
Rawkets: An inside look at a multiplayer HTML5 gameRobin Hawkes
3.2K views51 slides
海峽西岸經濟區 by
海峽西岸經濟區海峽西岸經濟區
海峽西岸經濟區Toomore
1.8K views34 slides
Keluarga Galaksi, Sebuah Tinjauan Genotip by
Keluarga Galaksi, Sebuah Tinjauan GenotipKeluarga Galaksi, Sebuah Tinjauan Genotip
Keluarga Galaksi, Sebuah Tinjauan GenotipNur Agustinus
517 views14 slides
Pakej Perkhidmatan INSPIRASI BAKAT by
Pakej Perkhidmatan INSPIRASI BAKATPakej Perkhidmatan INSPIRASI BAKAT
Pakej Perkhidmatan INSPIRASI BAKATMohd Helmi Md Suhaimi
339 views1 slide
財務個案分析報告 尖美建設 by
財務個案分析報告 尖美建設財務個案分析報告 尖美建設
財務個案分析報告 尖美建設Toomore
3.4K views11 slides
fclkarinabatat by
fclkarinabatatfclkarinabatat
fclkarinabatatDov Winer
789 views14 slides

Viewers also liked(18)

Rawkets: An inside look at a multiplayer HTML5 game by Robin Hawkes
Rawkets: An inside look at a multiplayer HTML5 gameRawkets: An inside look at a multiplayer HTML5 game
Rawkets: An inside look at a multiplayer HTML5 game
Robin Hawkes3.2K views
海峽西岸經濟區 by Toomore
海峽西岸經濟區海峽西岸經濟區
海峽西岸經濟區
Toomore1.8K views
Keluarga Galaksi, Sebuah Tinjauan Genotip by Nur Agustinus
Keluarga Galaksi, Sebuah Tinjauan GenotipKeluarga Galaksi, Sebuah Tinjauan Genotip
Keluarga Galaksi, Sebuah Tinjauan Genotip
Nur Agustinus517 views
財務個案分析報告 尖美建設 by Toomore
財務個案分析報告 尖美建設財務個案分析報告 尖美建設
財務個案分析報告 尖美建設
Toomore3.4K views
fclkarinabatat by Dov Winer
fclkarinabatatfclkarinabatat
fclkarinabatat
Dov Winer789 views
080724 Mosaica Content Related Rtd by Dov Winer
080724 Mosaica Content Related Rtd080724 Mosaica Content Related Rtd
080724 Mosaica Content Related Rtd
Dov Winer462 views
Bendiciones by gsierra
BendicionesBendiciones
Bendiciones
gsierra185 views
Session4 pl online_course_6_june2011 by LeslieOflahavan
Session4  pl online_course_6_june2011Session4  pl online_course_6_june2011
Session4 pl online_course_6_june2011
LeslieOflahavan218 views
2015teleyedaB by Dov Winer
2015teleyedaB2015teleyedaB
2015teleyedaB
Dov Winer441 views
Governance as Sustainability in the Enterprise Architecture Discipline by Eric Stephens
Governance as Sustainability in the Enterprise Architecture Discipline Governance as Sustainability in the Enterprise Architecture Discipline
Governance as Sustainability in the Enterprise Architecture Discipline
Eric Stephens1.1K views

More from Robin Hawkes

ViziCities - Lessons Learnt Visualising Real-world Cities in 3D by
ViziCities - Lessons Learnt Visualising Real-world Cities in 3DViziCities - Lessons Learnt Visualising Real-world Cities in 3D
ViziCities - Lessons Learnt Visualising Real-world Cities in 3DRobin Hawkes
1.5K views34 slides
Understanding cities using ViziCities and 3D data visualisation by
Understanding cities using ViziCities and 3D data visualisationUnderstanding cities using ViziCities and 3D data visualisation
Understanding cities using ViziCities and 3D data visualisationRobin Hawkes
1.3K views26 slides
Calculating building heights using a phone camera by
Calculating building heights using a phone cameraCalculating building heights using a phone camera
Calculating building heights using a phone cameraRobin Hawkes
1.8K views26 slides
WebVisions – ViziCities: Bringing Cities to Life Using Big Data by
WebVisions – ViziCities: Bringing Cities to Life Using Big DataWebVisions – ViziCities: Bringing Cities to Life Using Big Data
WebVisions – ViziCities: Bringing Cities to Life Using Big DataRobin Hawkes
1.6K views79 slides
Understanding cities using ViziCities and 3D data visualisation by
Understanding cities using ViziCities and 3D data visualisationUnderstanding cities using ViziCities and 3D data visualisation
Understanding cities using ViziCities and 3D data visualisationRobin Hawkes
1.8K views49 slides
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGL by
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGLViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGL
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGLRobin Hawkes
5.6K views104 slides

More from Robin Hawkes(20)

ViziCities - Lessons Learnt Visualising Real-world Cities in 3D by Robin Hawkes
ViziCities - Lessons Learnt Visualising Real-world Cities in 3DViziCities - Lessons Learnt Visualising Real-world Cities in 3D
ViziCities - Lessons Learnt Visualising Real-world Cities in 3D
Robin Hawkes1.5K views
Understanding cities using ViziCities and 3D data visualisation by Robin Hawkes
Understanding cities using ViziCities and 3D data visualisationUnderstanding cities using ViziCities and 3D data visualisation
Understanding cities using ViziCities and 3D data visualisation
Robin Hawkes1.3K views
Calculating building heights using a phone camera by Robin Hawkes
Calculating building heights using a phone cameraCalculating building heights using a phone camera
Calculating building heights using a phone camera
Robin Hawkes1.8K views
WebVisions – ViziCities: Bringing Cities to Life Using Big Data by Robin Hawkes
WebVisions – ViziCities: Bringing Cities to Life Using Big DataWebVisions – ViziCities: Bringing Cities to Life Using Big Data
WebVisions – ViziCities: Bringing Cities to Life Using Big Data
Robin Hawkes1.6K views
Understanding cities using ViziCities and 3D data visualisation by Robin Hawkes
Understanding cities using ViziCities and 3D data visualisationUnderstanding cities using ViziCities and 3D data visualisation
Understanding cities using ViziCities and 3D data visualisation
Robin Hawkes1.8K views
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGL by Robin Hawkes
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGLViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGL
ViziCities: Creating Real-World Cities in 3D using OpenStreetMap and WebGL
Robin Hawkes5.6K views
Beautiful Data Visualisation & D3 by Robin Hawkes
Beautiful Data Visualisation & D3Beautiful Data Visualisation & D3
Beautiful Data Visualisation & D3
Robin Hawkes2.9K views
ViziCities: Making SimCity for the Real World by Robin Hawkes
ViziCities: Making SimCity for the Real WorldViziCities: Making SimCity for the Real World
ViziCities: Making SimCity for the Real World
Robin Hawkes2.2K views
The State of WebRTC by Robin Hawkes
The State of WebRTCThe State of WebRTC
The State of WebRTC
Robin Hawkes13.6K views
Bringing Cities to Life Using Big Data & WebGL by Robin Hawkes
Bringing Cities to Life Using Big Data & WebGLBringing Cities to Life Using Big Data & WebGL
Bringing Cities to Life Using Big Data & WebGL
Robin Hawkes6.5K views
Mobile App Development - Pitfalls & Helpers by Robin Hawkes
Mobile App Development - Pitfalls & HelpersMobile App Development - Pitfalls & Helpers
Mobile App Development - Pitfalls & Helpers
Robin Hawkes2K views
Boot to Gecko – The Web as a Platform by Robin Hawkes
Boot to Gecko – The Web as a PlatformBoot to Gecko – The Web as a Platform
Boot to Gecko – The Web as a Platform
Robin Hawkes4.3K views
Mozilla Firefox: Present and Future - Fluent JS by Robin Hawkes
Mozilla Firefox: Present and Future - Fluent JSMozilla Firefox: Present and Future - Fluent JS
Mozilla Firefox: Present and Future - Fluent JS
Robin Hawkes2.6K views
The State of HTML5 Games - Fluent JS by Robin Hawkes
The State of HTML5 Games - Fluent JSThe State of HTML5 Games - Fluent JS
The State of HTML5 Games - Fluent JS
Robin Hawkes7.6K views
HTML5 Technologies for Game Development - Web Directions Code by Robin Hawkes
HTML5 Technologies for Game Development - Web Directions CodeHTML5 Technologies for Game Development - Web Directions Code
HTML5 Technologies for Game Development - Web Directions Code
Robin Hawkes10K views
MelbJS - Inside Rawkets by Robin Hawkes
MelbJS - Inside RawketsMelbJS - Inside Rawkets
MelbJS - Inside Rawkets
Robin Hawkes1.3K views
Melbourne Geek Night - Boot to Gecko – The Web as a Platform by Robin Hawkes
Melbourne Geek Night - Boot to Gecko – The Web as a PlatformMelbourne Geek Night - Boot to Gecko – The Web as a Platform
Melbourne Geek Night - Boot to Gecko – The Web as a Platform
Robin Hawkes3.6K views
Hacking with B2G – Web Apps and Customisation by Robin Hawkes
Hacking with B2G – Web Apps and CustomisationHacking with B2G – Web Apps and Customisation
Hacking with B2G – Web Apps and Customisation
Robin Hawkes1.3K views
MDN Hackday London - Open Web Games with HTML5 & JavaScript by Robin Hawkes
MDN Hackday London - Open Web Games with HTML5 & JavaScriptMDN Hackday London - Open Web Games with HTML5 & JavaScript
MDN Hackday London - Open Web Games with HTML5 & JavaScript
Robin Hawkes3.5K views
MDN Hackday London - Boot to Gecko: The Future of Mobile by Robin Hawkes
MDN Hackday London - Boot to Gecko: The Future of MobileMDN Hackday London - Boot to Gecko: The Future of Mobile
MDN Hackday London - Boot to Gecko: The Future of Mobile
Robin Hawkes3.5K views

Recently uploaded

TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc
77 views29 slides
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... by
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...ShapeBlue
48 views17 slides
NTGapps NTG LowCode Platform by
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform Mustafa Kuğu
141 views30 slides
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueShapeBlue
96 views7 slides
Data Integrity for Banking and Financial Services by
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial ServicesPrecisely
56 views26 slides
20231123_Camunda Meetup Vienna.pdf by
20231123_Camunda Meetup Vienna.pdf20231123_Camunda Meetup Vienna.pdf
20231123_Camunda Meetup Vienna.pdfPhactum Softwareentwicklung GmbH
46 views73 slides

Recently uploaded(20)

TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc77 views
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava... by ShapeBlue
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
Centralized Logging Feature in CloudStack using ELK and Grafana - Kiran Chava...
ShapeBlue48 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu141 views
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue by ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlueElevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
Elevating Privacy and Security in CloudStack - Boris Stoyanov - ShapeBlue
ShapeBlue96 views
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely56 views
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue by ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlueWhat’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
What’s New in CloudStack 4.19 - Abhishek Kumar - ShapeBlue
ShapeBlue131 views
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R... by ShapeBlue
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
Setting Up Your First CloudStack Environment with Beginners Challenges - MD R...
ShapeBlue54 views
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue by ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlueCloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
CloudStack Managed User Data and Demo - Harikrishna Patnala - ShapeBlue
ShapeBlue46 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman40 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De... by Moses Kemibaro
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Don’t Make A Human Do A Robot’s Job! : 6 Reasons Why AI Will Save Us & Not De...
Moses Kemibaro29 views
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院 by IttrainingIttraining
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
【USB韌體設計課程】精選講義節錄-USB的列舉過程_艾鍗學院
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays40 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue83 views
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T by ShapeBlue
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
ShapeBlue56 views
State of the Union - Rohit Yadav - Apache CloudStack by ShapeBlue
State of the Union - Rohit Yadav - Apache CloudStackState of the Union - Rohit Yadav - Apache CloudStack
State of the Union - Rohit Yadav - Apache CloudStack
ShapeBlue145 views

Editor's Notes

  1. Hi everyone, I'm going to talk to you briefly about Rawkets, my HTML5 canvas and WebSockets game.\n
  2. - For those who don't know me, which I imagine is a lot of you, my name is Rob Hawkes.\n- If you're into Twitter, then feel free to follow me, my username is @robhawkes.\n- I've worked on all sorts of projects, but the most recent and well known are the HTML5 version of the Google balls logo, and Rawkets.\n- I'm also working on a few things which I hope you don't mind me mentioning.\n- The first is my book on making games using HTML5 canvas. It's called Foundation HTML5 Canvas and will be out next spring. If you're interested in it you can always pre-order it from Amazon right now, it won't cost you a penny until the book is actually released. I can promise you I'm putting my all into it and I'm really enjoying writing it.\n- The second thing is the Web design and development podcast I co-host, called ExplicitWeb. Myself and my good friends John O'Nolan, and Hannah talk about all thing related to the Web industry in a light-hearted, completely random sort of way. We're on iTunes if you want to have a listen.\n
  3. As I mentioned at the beginning, Rawkets is a game that is built using HTML5 canvas and WebSockets.\n
  4. - To be more precise, you could describe it as a massively multiplayer online space shooter game, or a mamossga for short.\n- The purpose of the game is to be…\n
  5. … massive…\n
  6. …simple…\n
  7. … experimental…\n
  8. …and social.\n
  9. \n
  10. - Rawkets it actually the major project for my university degree in interactive media. It's still in very early development, in fact it's not even 2 months old yet.\n- I created it for a few reasons.\n
  11. - Firstly, because I'm massively interested in open Web technologies. They fascinate me and I'm constantly left amazed at what can be achieved with them.\n
  12. - Secondly, I'm passionate about the Web and technology in general. I thrive on mucking around stuff to see how it works and how I can break it.\n
  13. - And finally, I absolutely love learning new things, whether that's game development theory or WebSockets. If it interests me, I want to learn more about it.\n
  14. - Developing Rawkets seemed like the perfect way to satisfy all those things, but really I can’t think of a legitimate reason why not to make it!\n
  15. - Rawkets came as a result of wanting to learn more about HTML5 canvas and WebSockets, so the technologies behind it were very much decided in advance.\n
  16. - On the client-side I'm using HTML5 canvas for the graphics…\n
  17. - …and WebSockets for the communication between the player and the server.\n
  18. - On the server-side I'm using node.js for the game logic and WebSockets communication.\n
  19. - And, although not implemented yet, data storage on the server is going to be done via MongoDB a document-based database.\n- It's honestly quite amazing what can be achieved by mashing together a few open technologies.\n
  20. - Overall, I'm quite shocked at how well these technologies perform. Even with my shoddy code I've been able to knock together a fully functional real-time multiplayer game that is generally very playable.\n- However, there are a few issues with performance that I'd like to highlight.\n
  21. – The main issues have been with network communication and the WebSockets protocol.\n- For those who aren't that clued up on WebSockets, it's basically a way for a server to send data to a user, while at the same time allowing that user to send data back to the server, practically instantaneously. In comparison, Web traffic normally only allows data to be sent in one direction at a time, which can quite slow and annoying if you're wanting to send lots of data back and forth at the same time.\n- Originally I was sending data, like the position of players, through WebSockets as quite verbose, plain text.\n- This caused a lot of bottlenecks and performance issues because there was helluva lot of position data being sent back and forth.\n- To get around this I did 2 things…\n
  22. - Firstly, I created a communication protocol that dictated how data would be sent back and forth. I coupled this with the use of BISON (a binary version of JSON), which compressed the data a bit and chopped off anything unnecessary – for example, by cutting down large floating point numbers for pixel values.\n- The data is still sent as plain text, such is the nature of WebSockets, but putting this protocol in place cut the size of data immensely, allowing for more users to be on at the same time whilst having less of an impact on network performance.\n
  23. - Secondly, I limited the rate position data was sent at. At first I was sending position data every time a keyDown event was fired. What I failed to realise was that this event fired much faster than 30ms, the framerate of the game. By limiting the rate position data is sent to 30ms, it also cut down the amount of data being sent back and forth immensely.\n- Even with these 2 issues solved, each player still currently receives data for all players in the game, regardless of whether they appear on your screen or not. This is a really bad way to do things, for one very good reason. It requires a stupid amount of resources. Let me explain…\n
  24. - Having only one player in the game is easy, you have one message coming in to the server, saying the player has moved, for example, and one message coming back out, updating the player with details from the server.\n- But one lonely player does not equal a multiplayer game, let alone a massively multiplayer one.\n
  25. - So say we now have two players, meaning the game is now technically multiplayer, but still not massively.\n- There is still only 1 message in from each player, but now each player receives 2 messages back from the server; one for them, and one for the other player.\n- This isn’t too bad, but notice how the server is having to send 4 messages – 2 for each player.\n
  26. - 4 players now. It’s still not quite massive, but look how the server is having to send 16 messages, yet it only receives 4.\n- If you haven’t already noticed, the messages out from the server are the square of the number of players.\n- But 16 messages out is alright, it’s hardly going to tax the server.\n
  27. - So imagine if we now move into properly multiplayer territory, although still not quite massive.\n- 30 players in the game would mean 30 messages coming in to the server, and 900 – NINE HUNDRED – messages going out, every 30ms. That’s a silly amount of data for just 30 people.\n- But let’s go further still…\n
  28. - Say we really do go massive and have 100 players in the game at one time.\n- It’s not so bad for each individual player, they send one message in and get 100 back – that’s bearable. \n- But check out the server, it’s getting 100 messages in and is having to send out 10,000 back, every 30ms. That’s just a mentally stupid number that’s going to cause a lot of grief.\n- Fortunately there is a way around this that cuts down the amount of messages sent from the server; you just need to send data only for players visible to another player, in essence filtering out game data that doesn't affect the current player. It’s such a simple solution, but it’s one that I never even considered at first.\n
  29. - Now, canvas also has a performance issue, but only really when doing lots of animation – it just loves to hog the CPU.\n- Fortunately this will get much better with the introduction of things like hardware accelerated JavaScript that delegates intensive work with canvas to the graphics card.\n
  30. - Aside from technical limitations, the main issue has been with cheating, or manipulation of the game code.\n- Because the game is built in JavaScript, the code is easily accessible and is open for attack.\n- But there are ways to stop this…\n- One way to foil cheaters would be to perform all important calculations on the server, rather than on the client-side. That way, although the cheater may be able to manipulate his own game, it shouldn't affect other players.\n- Another way is to use private properties and methods in JavaScript objects in an effort to prevent them from being manipulated. This is a really simple way of making it difficult for cheaters to override the game code.\n- Finally, you could just obfuscate the code and minify it to make it unreadable. That’d help too.\n
  31. - All in all, I've been left enlightened by the open Web technologies that lie behind Rawkets, and its development is proving to be a valuable experience for me. I really hope that it has a bright future ahead of it as I’m enjoying developing it.\n- I'll be putting these slides up soon, so check out my website rawkes.com if you're interested in seeing them or finding out more about Rawkets and what I get up to.\n
  32. Thank you for listening, and I hope you enjoy the rest of your evening.\n