Technical Design Document for Ramp!
One Man Games
(Carlo Altieri, matr. T07573, [email protected])
A.A. 2013 – 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
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
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.
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.
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 Who
Scanner Graphics developer
Graphic tablet Graphics developer
Musical keyboard Musician
UPS One for servers and one for PCs
Color Laser Printer Everybody
Whip or Cat o' nine tails 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:
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
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
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.
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.