Technical Design Document for Ramp! One Man Games (Carlo Altieri, matr. T07573, carlo.altieri@gmail.com) A.A. 2013 2014 V 2.4 20/06/2014
Summary 1. Document History... 3 2. Overview... 3 3. Development... 3 3.1 Development tasks... 3 3.2 Development team composition... 4 3.3 Hardware, software and services... 4 4. Testing... 6 5. Production... 6 5.1 hardware & software... 6 5.2 Staff... 7 6. Delivery... 7 7. Gantt chart... 7 8. Value added services... 7 9. Customization service... 7 10. Estimated Resources Needed... 7 10.1 Hardware for development machines... 7 10.2 Hardware for servers... 8 10.3 Network hardware... 8 10.4 Storage... 8 10.5 Other hardware... 8 10.6 Software licenses... 8 10.7 Connectivity... 8 10.8 Staff for development&testing... 9 10.9 Staff for production stage... 9 10.10 Other testing devices... 9 10.11 Estimated cost... 10 11. Infrastructure Details... 10 11.1 What is on each server... 10 11.1.1 Development... 10 11.1.2 Production... 10 11.2 How servers are connected... 11 11.3 Capacity planning... 12 11.3.1 Storage... 12 11.3.2 Bandwidth... 12 11.4 Scalability and extendibility... 12 11.5 Potential security issues... 12
1. Document History V. When Who What 1.0 20/04/2014 Carlo Altieri Creation / preliminary version 2.0 25/04/2014 Carlo Altieri Total rewrite 2.1 27/04/2014 Carlo Altieri Page setting and other minor changes 2.2 03/05/2014 Carlo Altieri Minor changes after public TDD correction 2.3 03/06/2014 Carlo Altieri Minor changes after reloading 2.4 20/06/2014 Alex Malavasi English revised 2. Overview Ramp! is a 2D platform single player / multiplayer game. A particularity of Ramp! is that there are 2 types of players: main players (those who are challenging trying to reaching the top of the level), and side players (they can control enemies trying to interfere with the main players) In multiplayer mode, it needs a local area network to be played and one of the devices acts as server for itself and the other devices. An Internet connection is required only during login (in this case not mandatory), when players add new level codes and if they want to add their score to the world chart. The game will be developed in Unity and there will be a company server to permit users registration, new level codes validation, world score charts management. This server needs also a DB server and a mechanism of new codes emission. Unity has been chosen because of its ease of development both for the prototyping and for the production stage and for the plenty of delivery platforms. For information about interfaces and controls, competing platforms, GUI specifications, workflow and other game details not listed here see GDD. The game uses traditional interfaces: keyboard, mouse, joystick/gamepad or touchscreen for tablets and smartphones. 3. Development 3.1 Development tasks The development tasks are: - Unity 2D development (clients) GUI Level initialization Players behaviour Weapons behaviour Other characters (Enemies, ) behaviour Networking Internet activities (Login, codes validation, score registration) Other - 2D Graphics
Characters Objects Platform elements GUI Web graphics elements - Music Background music Interludes and contextual jingles - Sound Sound effects - Level design - Web/DB development Registration Login Codes validation Game site (MediaWiki/Wordpress/HTML) Score charts management - Customer customizations New codes emission Media customization - Other Servers design, installation and setup 3.2 Development team composition Each task does not necessarily correspond exactly to a person; I can imagine a development team made up of: 1 Game Designer and Team Leader => TL 1 Senior Unity Developer (with skills also in networking and sound effects) => UD 1 Web Developer (PHP/C/HTML/SQL) => WD 1 Junior Developer (PHP/HTML/SQL/C#/Unity) => JD (pronunciation: Jedi, so he must know everything, works 24/7 and only for personal satisfaction) 1 Graphic Designer => GD 1 Musician => MU 1 System Administrator => SA 1 System Architect => AR 1 Game Tester => GT Notes: - TL, GD and GT must also have some skills on Unity development; - Each component is responsible for its part of the documentation, the TL is the documentation reviser and approval; - The reference platforms during development are Windows (Desktop & Tablets) and Android (Tablets & Smartphones). 3.3 Hardware, software and services 1) Unity development (X 2) PC with Windows 8 22 monitor or bigger Unity Pro
Audacity DB client Git client 2) Graphics development PC (Mac, Linux or Windows) 22 monitor or bigger Scanner Graphic tablet Painting software (Photoshop, Paint.NET, Gimp ) Git client 3) Music development PC (Mac, Linux or Windows) Monitor Musical keyboard Cubase Git client 4) Web & DB development PC (Mac, Linux or Windows) Monitor C/C++, PHP, HTML Editors (Eclipse, Visual Studio Express, Notepad++, vi etc.) SSH client SFTP client DB client Git client 5) RS: Repository server for software, media and documentation Server with Linux (Ubuntu Server) Monitor 3 Hard disks in RAID 5, with hardware controller Local firewall Software and hardware for local backup Bug tracking system Git server 6) Web/DB server Server with Linux (Ubuntu Server) Monitor Lighthttp + FastCGI + PHP MariaDB/MySql GCC 7) Other Internet connection with static IP Modem Router Access point with good firewall functionalities Good antivirus Domain + Email service SSL certificates
Notes: - The last stable or, better, the LTS version is ALWAYS mandatory for system software (o.s., DB, etc.) - 5 and 6 can be the same server or, better, 6 can be virtualized on 5 - The graphic card is not so important during the developing and testing stage 3.4 Testing & Playtesting Informal tests of the Unity clients are in charge of TL, JD, WD and GD during the first stage of development. Informal tests of the web site and applications are in charge of TL, JD and UD. In an advanced stage of development will be hired one dedicated tester (=> GT). Security/load tests/stress tests on Web/DB servers will be in charge of the SM. 4. Production 5.1 hardware, software & services The production architecture is composed of: 1) PWS: Portal Web Server (official site with forum, support and wiki) Linux (Ubuntu server) MariaDB (for CMS&C.) Apache web server + PHP Software for web contents (MediaWiki, Wordpress, etc.) 2) AWS: Application Web Server (registration, login, codes validation and world score chart) Linux (Ubuntu server) Lighttpd + PHP + FastCGI 3) DBS: DB Server (DB for AWS) Linux (Ubuntu server) MariaDB (cluster version) 4) Download server External free service and torrent based download system 5) Other Internet connection with static IP Modem Router Access point with good firewall functionalities Domain + Email service SSL certificates Notes: - The last stable or, better, the LTS version is ALWAYS mandatory for system software (o.s., DB, etc.) - 1,2 and 3 will be in hosting. - The development &testing architecture will survive also in the production step.
5.2 Staff 1 Supervisor 1 System Administrator 1 Developer for the maintenance of server applications and Unity clients 1 Web editor for web contents (game site and Facebook), customer support (only via site forum) and community management 5. Delivery 6.1 Estimated delivery time 2 months for the core game and the web servers, from 1 to 6 weeks for each required customization of graphics, levels and codes mechanism. 6.2 Delivery platform and strategy Platform Delivery Costs Windows desktop Web download 0 Windows 8+ & Windows Phone Marketplace Microsoft 75 /year Android Google Play 25$ ios App Store 99$/year The game will be advertised where you can play it (cafes, restaurants, fast foods or shopping malls, fairs, events ) and downloaded if possible - pointing a QR Code. Other kinds of advertisement is in charge of customers of each customized version. References: http://msdn.microsoft.com/en-us/library/windows/apps/jj863494.aspx https://play.google.com/apps/publish/signup/ https://developer.apple.com/programs/ 6. Gantt chart See attached Excel document, sheet Gantt. 7. Value added services Official site with also a Wiki Support forum (in particularly cases, after a post in the forum, directly by email) Facebook community (not support service via Facebook!) 8. Customization service The graphic and music of the game can be customized on request for particular uses (i.e. for a brand, an event or an advertising campaign). Each campaign could need a new level codes delivery implementation (new hardware and software). 9. Estimated Resources Needed 10.1 Hardware for development machines What Who O.S. medium level PC + monitor Game designer Mac, Linux or Windows
high level PC + big monitor Unity senior developer Windows 8 high level PC + big monitor Unity junior developer Windows 8 high level PC + big monitor Graphics developer Mac, Linux or Windows medium level PC + monitor Musician Mac, Linux or Windows high level PC + monitor Web/DB developer Mac, Linux or Windows medium level PC + monitor System manager Mac, Linux or Windows Note: one of the computers at least must be a Mac for testing and Apple Store deploying and one with Windows 8 for testing. 10.2 Hardware for servers What Use O.S. Notes High level server Repository, etc. Linux RAID 5 controller 3 hard disks 1TB Tape Backup Unit ( + 4 cartridges 1TB) Low level server Web/DB development Linux 10.3 Network hardware Switch ADSL Modem Router Access point VPN server with good firewall functionalities 10.4 Storage See 10.2 10.5 Other hardware What Scanner Graphic tablet Musical keyboard UPS Color Laser Printer Whip or Cat o' nine tails Who Graphics developer Graphics developer Musician One for servers and one for PCs Everybody Team Leader 10.6 Software licenses If needed, licenses for PC O.S. (Windows or Mac) Unity Pro (2 licenses) + deploying licenses Photoshop Cubase References: https://store.unity3d.com/products http://www.steinberg.net/en/shop/buy_product/product/cubase-75.html https://creative.adobe.com/plans/offer/photoshop+lightroom?store_code=it&loc ale=it&promoid=kipgx 10.7 Connectivity Internet connection (ADSL or optical fibre) with static IP Data SIM for smartphone testing
10.8 Staff for development & testing Who Cost * Number of days Game designer 250 /day 52 days Unity developer 250 /day 52 days Graphics developer 300 /day 38 days Musician 200 /day 20 days Web/DB developer 250 /day 29 days Junior Developer 25.000 /year 48 days System administrator 35.000 /year 12 days Game tester 120 /day 10 days System Architect 450 /day 5 days * Those are also costs for customizations 10.9 Staff for production stage Who Cost ** Supervisor 40.000 /year Developer 30.000 /year System administrator 30.000 /year Web editor 25.000 /year ** Must add year-end bonus Notes: - /day is different from /year because of the type of employment contract: consultant vs employee - System administrator is involved in the developing stage, production stage and customization stage - The Game Designer could be also the Supervisor in the production stage and customization stage References: http://forum.unity3d.com/threads/131101-average-unity-programmer-salary http://www.payscale.com/ http://www.gamasutra.com/view/news/167355/game_developer_reveals_2011_ Game_Industry_Salary_Survey_results.php 10.10 Other testing devices Android: 7" and 10" tablets with a mix of Android 4.1, 4.2, 4.3, 4.4 (in total different 6 devices) Smartphones with Android 2.2, 2.3, 4.1, 4.2, 4.3, 4.4 (in total 6 different devices) TV Keys/TV boxes/consoles with Android (4 different devices, included Amazon Fire TV) Microsoft: 8" Windows tablet 10" Windows tablet Microsoft Surface RT Windows Phone 8 (Lumia) Apple: ipad
iphone 10.11 Other costs - SSL certificates - ADSL with static IP - Domain + Email Service 10.12 Estimated cost See attached Excel file for details. Development Staff: 62.100 Hardware: 18.053 Licenses & Services: 9.850 Total: 90.003 Production (x year) Staff: 125.000 Hosting + Bandwidth: 6.941 Other: 1.247 Total: 133.188 10. Infrastructure Details 11.1 How services are deployed on servers Because doesn't exist a real game server (one of the client acts as a server for each match), only a limited number of operations requires a centralized service, so I will provide an Application Web Server (AWS) for users registration, users login, level codes validation and world ranking management. The PWS hosts web services based on Apache and PHP (game portal, forums, etc.). 11.2 What is on each server 11.2.1 Development Repository server (RS) Ubuntu server last LTS 64 bit MariaDB Bugzilla Backup software (i.e. RSync) Git server 11.2.2 Production Portal Web Server (PWS) Ubuntu server last LTS 64 bit MariaDB Apache web server + PHP
MediaWiki Wordpress + forum plugin Application Web Server (AWS) Ubuntu server last LTS 64 bit Lighttpd + PHP + FastCGI DB Server (DBS) Ubuntu server last LTS 64 bit MariaDB (cluster version) Note: Last stable version ALWAYS! 11.3 How servers are connected Università degli Studi di Milano - OGD aa 2013-14 The Repository server (RS) is visible only inside the One-Man Games (OMG) lan and it can connect to the Portal Web Server (PWS), the Application Web Server (AWS) and the DB Server (DBS) only for administrative purposes and to launch backups (daily or weekly, full, incremental or differential, depending of the bandwith consumption). PWS and AWS can be reached also from Internet. AWS updates world score charts on the PWS internal DB (unidirectionally: AWS firewall blocks PWS accesses). Each cloud server performs a daily backup to the provider infrastructure. Each server has a local firewall and OMG lan connects to Internet trough a firewall. Ports & Services
RS: SSH / HTTP / DB port only from lan IPs PWS: HTTP/HTTPS any IP, SSH only from OMG IP, DB port only from OMG IP and AWS IP AWS: HTTP/HTTPS any IP, SSH only from OMG IP DBS: SSH and DB port only from OMG IP 11.4 Capacity planning 11.4.1 Storage RS: the dimension of storage depends on technical and commercial considerations: 3 hard disks, each 1TB (less quantity is not justified by the lower price), in total 2TB, a monster quantity for a single project s files. PWS: 5 gigabyte is a sufficient amount of storage to contain o.s., applications and data for the game portal, including the database AWS: 5 gigabyte is a sufficient amount of storage to contain o.s., applications and data DBS: I can imagine 1 million users (Wow!) and 100 million level codes released (not used!), one user or one code correspond to a record into a database table, 1k (quantity very rough), so approximately 100GB could be the right dimension for the storage of DBS 11.4.2 Bandwidth & Band consumption PWS: 10 pages/sec, 50 KB/page mean 4 Mb/sec. and approximately 10TB/month. AWS: 1 million players, on average each player logins or adds code one time a day, 1KB of traffic each operation mean 30TB/month, for a bandwidth of 12 Mb/sec. DBS: connected to Internet only for administrative purposes, 5TB/month could be a right quantity also considering an eventual daily backup of the virtual server snapshot and a bandwidth commeasured to ADSL connection of the office. Note: the traffic between VPSes concerns especially DBS and AWS and is commensurable with the previous calculations, also does not affect the billing (intra-servers traffic in the same farm is free of charge). 11.5 Scalability and extendibility The cloud hosting service (Digital Ocean) I chose permit a full scalability in an easy way. 11.6 Potential security issues Each server runs a local firewall (IPtables) properly configured (see 11.3), Logwatch and RKHunter. Ramp! can be easily cheated because of the client-server architecture. A player with a modified client can: - Win without playing - Have every kind of facilities and power-up in a normal match - Register a fake score - Play each level he wants (without inserting new codes) With a fake AWS he can play each level he wants with a genuine (not modified) application without inserting new codes.
However, it is not important: codes cheating is irrelevant because they are easy to obtain (and apparently free of charge for the player) and gameplay cheating reduces the fun and a player cheating, because we are playing together, can be easily discovered and so in general this practice, we can imagine, will be avoided and in any case does not affect the business model.