Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rapid app development

Rapid app development

How we built a real-time multi-player game engine in a matter of weeks

Avatar for Peter Johnson

Peter Johnson

October 24, 2012
Tweet

Other Decks in Technology

Transcript

  1. Rapid app development How we built a real-time multi-player game

    engine in a matter of weeks www.openshuffle.com
  2. RAD (Rapid Application Development) Software development methodology that uses minimal

    planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself. The lack of extensive pre-planning generally allows software to be written much faster, and makes it easier to change requirements. (Wikipedia)
  3. Why OpenShuffle? Rediscover classic games & play on-line • Billions

    of people already know how to play. • Play with friends and family, be social. • Regional games not represented online. Open API • Developers can leverage the backend logic. • Share the user base with other apps.
  4. Tools • amazon aws, nodejitsu, rapid ssl • nginx +

    tcp proxy module • node.js ◦ express 3 ◦ socket.io ◦ mongoose + mongoDB ◦ mustache, hogan.js ◦ coffee-script ◦ everyauth ◦ vows / mocha ◦ less • npm, npm, npm, npm
  5. 1st prototype 2008 • Socket server in Action Script 2

    (Flash) • PHP backend, Apache, TCP socket relay • Flash client & Flash server • Difficult to version client libraries • Difficult to maintain • Impossible to create a centralized API
  6. 2nd prototype 2010 • MySQL, PHP5-fpm, NGINX, Zend Framework 1.x

    • REST interface with JSON • Difficult cross domain AJAX calls • Still difficult to scale • Network communication very slow (polling) • PHP blocking resources and sandboxed architecture Insomnia (github.com/missinglink/insomnia) • PHP5.3 RESTful web service API • Using Doctrine2 components • OpenSource (MIT license)
  7. 3rd time's a charm! • node.js event driven • socket.io

    => easy cross domain communication • MongoDB Map Reduce built in • HTML5 data attributes, Web Sockets • Very high performance • Very low resources usage • Easy to scale • Game ruleset on server => easy to add new games • node.js single process architecture => easy shared memory for the games tables
  8. Peter Johnson Web Geek @insertcoffee github.com/missinglink Tancredi Trugenberger Digital Creative

    @Liquidimage_ github.com/tancredi www.liquidimage.it www.openshuffle.com