Backend de jogos multiplayerRodrigo Delduca (@skhaz)https://skhaz.iohttps://nullonerror.orghttps://ultratech.softwarePUC PR - 2017
View Slide
Brace yourself. Sopa de letrinhas is coming!
Formas de comunicação● TCP● UDP● RawSocket● WebSockets● SocketIO● WebRTC
Arquitetura
Otimizando o tamanho do payload
Otimizando o tamanho do payloadpayload = {"UpPressed": true,"downPressed": false,"attackPressed": true}// 76 bytes
Otimizando o tamanho do payloadpayload = {"u": true,"d": false,"a": true}// 46 bytes
Escovando os bits
Tecnologias● C/C++● Python● Elixir● Java● NodeJS● Swift● Erlang● … Ou qualquer outra linguagem que permita abrir uma conexão.
Qual tecnologia é melhor?
Qual tecnologia é melhor?A que você dominar melhor*
Qual tecnologia é melhor?A que você dominar melhor*só não vale usar Visual Basic :)
E onde hospedar?● Google Cloud● Heroku● Digital Ocean● Amazon Web Services (AWS)● Scaleway● Rackspace● Azure● IBM Bluemix
Banco de dados● PostgreSQL, MySQL, Oracle e SQLite (relacional)● MongoDB, CouchBase e RethinkDB (orientado a documento)● Redis, memcached e Cassandra (chave-valor)● Neo4J e ArangoDB (banco de dados de grafos)
Outras alternativas… Que podem ser ideias para hackathon e gamejams
Exemplo usando Socket.IO
Demohttp://bit.ly/pucpr-mmo
● https://davidwalsh.name/websocket● http://blog.soom.la/2016/02/top-10-parse-alternatives-game-backend.html● https://realm.io/docs/realm-object-server/● https://firebase.google.com/● http://heroku.com/● https://www.meteor.com/● https://phaser.io● https://socket.io/● https://cloud.google.com/● http://choongsoo.info/docs/starcraft2.netgames12.pdf● https://blog.heroku.com/introducing_session_affinity
Perguntas?
Muito obrigado :)Scorpion winsFlawless victoryFatality!