Game Development

8 min. read

Introduction

Game Development Life cycle (GDLC)

Educate
Step 1: Gather Information (Idea)
Idea/Concept/Story of the game

Game Concept Document
“The core game concept, the story flow, the visual appeal, characters and the interactivity of the player, protagonists(if any), missions, multiplayer(if any), levels(if any) playing hours, build size of the product, business/revenue strategy, social sharing, publishing platforms and producers budget are the things needs to be thought about and written in the game concept document.”

Game design theory is a set of fundamental questions about the game-mechanics, play-mechanics and game play experience. Therefore, a basic visual theme, character, arts sketchup, background and environment as a story board, flow chart, created by artists or designer must be a part of the document.

Tools
http://gamedesigntools.blogspot.com.au/

Visual Theme, character, art sketchup, background, environment, storyboard, flowchart

Step 2: Planning (Game Design)
This is where the Game Design document will go, with all data sheets, etc..
Game Concept/Genre/Audience of the product as narrative story flow and genre definitions and target audience etc.
UI Interface of game flow as flow charts, Buttons, Animations/Tween, Popups, Texts, Font, Dialogue systems, UI supportive resolutions, UI theme, error handling messages, etc.
Character Features as Player Characters, Animations, Its Inputs, Player point System.
Game Data as Inventory, Weapons upgrades, Power Ups, level progression, etc.
Level Design as Winning Elements/Stages, Losing conditions, Game Progression Stages/Scenes, difficulty level, interactive game play enhancements, game over pointers, redeem of points for upgrades,etc.
Music as background theme music, pop up and UI button sounds, sound effects for player and other interactive elements in the game.
3D Environment as game world, Player view in scenes, navigation in 3D world, real world-scale and props/objects, character/player addons, supportive in game characters, protagonists, each level design views, background theme etc.
Graphics/Visuals as Lighting, Shadows, Reflections, post processing, particle and other vfx effects.
Camera Projection as perspective or orthographic modes, field of view, HDR, Occlusions, etc.
Game Progression as storytelling and narrative writing as in game videos, cut scenes, animations, camera points as per level design, loading screens, scene transitions, game progression transitions as per winning and losing conditions, etc.

Tools

Step 3: Design
Technical Requirements Analysis
Sitemaps
Wireframes

Step 4: Content

Step 5: Development
Frameworks, plugins, data, scripts, scene management, software patterns, object pooling, UI development, game architecture

Step 6: Test, Review
Test Cases
Test Plans
Release notes

Step 7: Marketing
Logos, Icons, videos, screenshots

Step 8: Maintenance
Analytics

Educate (GDLC)

Step 1: Idea

Step 2: Game Design

Step 3: Technical Requirements
Critical decisions, selecting the game engine, supportive plugins/modules/frameworks/architecture
Team

Modules

Technical specification document should include

UI System
3D Modelling and Texturing
Animation
Sound
AI
Data Management
Particles
Multiplayer
Physics/Collisions
Social Media Sharing
Game Analytics
Video Player and Subtitles
Graphics/Shaders
Lighting, Shadows and Reflection
Sky box
Camera Projections
Platform dependency
Game Point System
External Supportive Framework
Game Monetization
Language Support
Post Processing Effects
Performance and Optimization
Connectivity
Source Control: GIT/Cloud Backup
Code Merge and Code Editor

Software Architecture
More about organising code than writing code

abstraction, modularity, design patterns, and software architecture

Decoupling code!

if two pieces of code are coupled, it means you can’t understand one without understanding the other. If you decouple them, you can reason about either side independently

To me, this is a key goal of software architecture: minimize the amount of knowledge you need to have in-cranium before you can make progress

You use interfaces so that your code works with any class that implements it instead of just the one that does today

You use observers and messaging to let two parts of the game talk to each other so that tomorrow, it can easily be three or four.

it’s easier to make a fun game fast than it is to make a fast game fun

Abstraction and decoupling make evolving your program faster and easier, but don’t waste time doing them unless you’re confident the code in question needs that flexibility.

Think about and design for performance throughout your development cycle, but put off the low-level, nitty-gritty optimizations that lock assumptions into your code until as late as possible.

Move quickly to explore your game’s design space, but don’t go so fast that you leave a mess behind you. You’ll have to live with it, after all.

If you are going to ditch code, don’t waste time making it pretty. Rock stars trash hotel rooms because they know they’re going to check out the next day.

But, most of all, if you want to make something fun, have fun making it.

Design Patterns
Command
Educate
Encapsulate a request as an object, thereby letting users parameterize clients with different requests, queue or log requests, and support undoable operations.

Commands are an object-oriented replacement for callbacks.
Examples
Base class:
class Command
{
public:
virtual ~Command() {}
virtual void execute() = 0;
};

Execution

Step 4: Development
Lead Programmer at this stage should make a checklist of how the data is going to get executed using the software architecture. This gets excited about abstraction, modularity, design patterns, and software architecture.

Programming input and output of data is simple, however handling that with art, visuals, animations, collisions, physics, sounds, scene/level management, AI, Dynamic Objects Loading and Unloading, shaders, rendering power, garbage collections and to top CPU and GPU performance every dynamic frames makes it complex.

Step 5: Testing

Step 6: Deployment

Step 7: Marketing

Step 8: Maintenance

Execution

References
Video game development
https://en.wikipedia.org/wiki/Video_game_development

Video game producer
https://en.wikipedia.org/wiki/Video_game_producer

IEEE
http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6761558

Game Development Lifecycle
https://personanonymous.wordpress.com/2013/01/06/game-development-lifecycle/

https://courses.cs.ut.ee/MTAT.03.263/2016_fall/uploads/Main/slides6

What Is the Game Development Life Cycle?
https://www.gamasutra.com/blogs/JuegoStudios/20170413/296019/What_Is_the_Game_Development_Life_Cycle.php

Game development life cycle
https://www.slideshare.net/sarahelazab/game-development-life-cycle

Best article (Our GDLC is based on this)
https://www.linkedin.com/pulse/game-development-life-cycle-sumit-jain/

https://jserd.springeropen.com/articles/10.1186/s40411-016-0032-7

https://www.ijircce.com/upload/2013/october/36_Lifecycle.pdf

http://gamedesigntools.blogspot.com.au/?lipi=urn:li:page:d_flagship3_pulse_read;m1IKJVzjRteNWD9Iz19OHA%3D%3D

https://www.coursera.org/learn/gamedev-business/?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3Bm1IKJVzjRteNWD9Iz19OHA%3D%3D

Game Patterns
http://gameprogrammingpatterns.com/architecture-performance-and-games.html

Unity Resources
https://github.com/ummahusla/Unity-Game-Development#game-design
https://forum.unity.com/threads/list-of-useful-game-designing-tools.275202/

Unreal Resources
http://www.businessofapps.com/big-list-unreal-engine-development-resources/

Game design Tools
http://gamedesigntools.blogspot.com.au/2010/10/game-design-documentation.html