Call of Duty: Elite

  • user warning: Got error 28 from storage engine query: SELECT node.nid AS nid, node_revisions.body AS node_revisions_body, node_revisions.format AS node_revisions_format, node.title AS node_title, RAND() AS _random FROM node node LEFT JOIN node_revisions node_revisions ON node.vid = node_revisions.vid WHERE (node.type in ('quote')) AND (node.status <> 0 OR (node.uid = 0 AND 0 <> 0) OR 0 = 1) ORDER BY _random ASC LIMIT 0, 1 in /var/www/jg-soft.com/modules/acquia/views/includes/view.inc on line 755.
  • user warning: Got error 28 from storage engine query: SELECT node.nid AS nid, node_data_field_images.field_images_fid AS node_data_field_images_field_images_fid, node_data_field_images.field_images_list AS node_data_field_images_field_images_list, node_data_field_images.field_images_data AS node_data_field_images_field_images_data, node_data_field_images.delta AS node_data_field_images_delta, node.type AS node_type, node.vid AS node_vid, RAND() AS _random FROM node node LEFT JOIN content_field_images node_data_field_images ON node.vid = node_data_field_images.vid INNER JOIN term_node term_node ON node.vid = term_node.vid LEFT JOIN term_node term_node2 ON node.vid = term_node2.vid AND term_node2.tid = 41 WHERE (node.status <> 0 OR (node.uid = 0 AND 0 <> 0) OR 0 = 1) AND (node.type not in ('project')) AND (node_data_field_images.field_images_list <> 0) AND (term_node.tid = 13) AND (term_node2.tid IS NULL) ORDER BY _random ASC LIMIT 0, 1 in /var/www/jg-soft.com/modules/acquia/views/includes/view.inc on line 755.
http://elite.callofduty.com
January 1, 2012

I did this project with the guys at 2advanced. It took 2 years and went through several redesigns before the actual project was launched. There is so much technology packed into this application that it is a bit overwhelming to work on sometimes. The application is heavily integrated into the game. All multi player game play data is pushed out to a farm of over 300 web and database servers (hosted by demonware). Our back end web services layer pulls most of its data from this game-data farm via a Kohana PHP application that has some python extensions. The demonware web servers are in erlang serving JSON web services in python.

The web site front-end is also a Kohana PHP application. It talks with the back end web services over HTTP using curl. The web services provide a JSON interface which store and retrieve most data to and from a semi-sharded mySQL cluster.

This front end uses ajax heavily and lots of jquery. There is a little Flash, but not too much. With all the game data available we've been able to do things like recent matches, match heatmaps and tons of leaderboards in real time. Users can also calculate how long it will take them to level up. I'm so happy this application launched. It was a LOT of work and sometimes a bit nightmarish in terms of client expectations. We did get it done though and the world is now a better place.

Screenshots