Top Banner
Eight Rules For Making Your First Great Game Nick Prühs
100

Eight Rules for Making Your First Great Game

Jan 13, 2017

Download

Technology

Nick Prühs
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Eight Rules for Making Your First Great Game

Eight Rules For Making Your First Great GameNick Prühs

Page 2: Eight Rules for Making Your First Great Game

About Me

“Best Bachelor“ Computer ScienceKiel University, 2009

Master GamesHamburg University of AppliedSciences, 2011

Lead ProgrammerDaedalic Entertainment, 2011-2012

Co-Founderslash games, 2013-2016

Technical DirectorDaedalic Entertainment, 2016

2 / 79

Page 3: Eight Rules for Making Your First Great Game

Diversity of Games

3 / 113

Page 4: Eight Rules for Making Your First Great Game

Diversity of Games

4 / 113

Page 5: Eight Rules for Making Your First Great Game

Diversity of Games

5 / 113

Page 6: Eight Rules for Making Your First Great Game

Diversity of Games

6 / 113

Page 7: Eight Rules for Making Your First Great Game

Diversity of Games

7 / 113

Page 8: Eight Rules for Making Your First Great Game

Diversity of Games

8 / 113

Page 9: Eight Rules for Making Your First Great Game

Game Development

“Games are insanely complex.”

- Warren Spector

Page 10: Eight Rules for Making Your First Great Game

Rule 1

Make testing as easy as possible!

Page 11: Eight Rules for Making Your First Great Game

Make testing easy!

11 / 79

At the beginning of Campus Buddies, Christian had the idea of creating

a debug web page containing links for several debug functions

creating and logging in a test user

adding points for the current user

unlocking achievements

and many, many more

Page 12: Eight Rules for Making Your First Great Game

Make testing easy!

12 / 79

Page 13: Eight Rules for Making Your First Great Game

Make testing easy!

13 / 79

This was arguably the best idea we had throughout the project.

Page 14: Eight Rules for Making Your First Great Game

Make testing easy!

14 / 79

• Debugging can be a pain in the ass

especially when network communication is involved

• Our debug page saved us lots of blood, sweat and tears

• The earlier you set up your debugging tools, the more you’ll benefit

from them

Page 15: Eight Rules for Making Your First Great Game

15 / 79

Page 16: Eight Rules for Making Your First Great Game

Rule 2

Deploy often!

Page 17: Eight Rules for Making Your First Great Game

Deploy often!

17 / 79

Creating a new version can involve a step or two:

Accessing source controlo Syncing working copy

o Creating tags

Writing version numbers

Performing the actual build

Packaging the build result

Publishing the game on a build page

Running unit tests

Sending email notifications

Page 18: Eight Rules for Making Your First Great Game

Deploy often!

You wouldn’t wanna do all that by hand.

Every time.

Do you?

18 / 79

Page 19: Eight Rules for Making Your First Great Game

Deploy often!

19 / 79

Page 20: Eight Rules for Making Your First Great Game

Rule 3

Use a bullet-proof, feature-based

project structure!

Page 21: Eight Rules for Making Your First Great Game

Bad Example

• Assets

EMHQo Data

– Icons

– Images

– Sprites

– Textures

o Resources– Icons

o UI– Common

» Sprites

EMHQ_gfx_exporto Textures

GUIo Assets

– Images

21 / 79

Page 22: Eight Rules for Making Your First Great Game

Bad Example

• Assets

EMHQo Data

– Icons

– Images

– Sprites

– Textures

o Resources– Icons

o UI– Common

» Sprites

EMHQ_gfx_exporto Textures

GUIo Assets

– Images

22 / 79

Bonus Objective:

- Find the icon for the Main Menu button.

Page 23: Eight Rules for Making Your First Great Game

Bad Example

• Assets

EMHQo Data

– Icons

– Images

– Sprites

– Textures

o Resources– Icons

o UI– Common

» Sprites

– Base» HUD

• Sprites EMHQ_gfx_export

o Textures

GUIo Assets

– Images

23 / 79

Bonus Objective:

- Find the icon for the Main Menu button.

Page 24: Eight Rules for Making Your First Great Game

Feature Folders

• Project Root

FingerGestures

FreudBot

HOTween

NGUI

NData

Unity Test Tools

24 / 79

Page 25: Eight Rules for Making Your First Great Game

Feature Folders

• Project Root

FingerGestures

FreudBoto Animations

o Atlases

o Fonts

o Localization

o Prefabs

o Scenes

o Sounds

o Sprites

o Scripts

HOTween

NGUI

NData

Unity Test Tools

25 / 79

Page 26: Eight Rules for Making Your First Great Game

Feature Folders

• Project Root

FreudBoto Scripts

– Ads

– Analytics

– Comics

– Core

– Debug

– Dialogue

– IAP

– Mobile

– Progression

– Sound

– UI

26 / 79

Page 27: Eight Rules for Making Your First Great Game

Feature Folders

• Project Root

FreudBot

o Scripts

– Ads» Components

» Events

» Systems

27 / 79

Page 28: Eight Rules for Making Your First Great Game

Feature Folders

This way, features and plugins can easily be updated

or removed without having to scan the full project

tree.

28 / 79

Page 29: Eight Rules for Making Your First Great Game

Rule 4

Listen to your players!

Page 30: Eight Rules for Making Your First Great Game

Analytics

30 / 79

Page 31: Eight Rules for Making Your First Great Game

Analytics

31 / 79

Page 32: Eight Rules for Making Your First Great Game

Analytics

32 / 79

This is okay. (Endboss)

Page 33: Eight Rules for Making Your First Great Game

Analytics

33 / 79

This is not. (Intermediate level)

Page 34: Eight Rules for Making Your First Great Game

Rule 5

Fix bugs immediately!

Page 35: Eight Rules for Making Your First Great Game

35 / 79

Why you should always start debugging immediately

Page 36: Eight Rules for Making Your First Great Game

Why you should always start debugging immediately

• Code entropy says your code will get worse, all the time, unless you

actively invest in preventing that

• Broken windows theory says the worse your code is, the worse it will

become

• Tracking down bugs is harder in a larger code base

• Tracking down bugs is harder in a buggy code base

36 / 12

Page 37: Eight Rules for Making Your First Great Game

Code Quality Tools

37 / 12

Page 38: Eight Rules for Making Your First Great Game

Code Quality Tools

38 / 12

Page 39: Eight Rules for Making Your First Great Game

Code Quality Tools

39 / 12

/// <summary>

/// Attaches the passed component to the entity with the specified id.

/// Note that this manager does not check whether the specified id is valid.

/// </summary>

/// <exception cref="ArgumentNullException">

/// Passed component is null.

/// </exception>

/// <exception cref="InvalidOperationException">

/// There is already a component of the same type attached.

/// </exception>

public void AddComponent(int entityId, IEntityComponent component)

{

if (component == null)

{

throw new ArgumentNullException("component");

}

if (this.components.ContainsKey(entityId))

{

throw new InvalidOperationException(

"There is already a component of type " + component.GetType() + " attached to entity with id "

+ entityId + ".");

}

this.components.Add(entityId, component);

this.OnComponentAdded(entityId, component);

}

Page 40: Eight Rules for Making Your First Great Game

Divide-and-conquer

40 / 12

Page 41: Eight Rules for Making Your First Great Game

Divide-and-conquer

41 / 12

Page 42: Eight Rules for Making Your First Great Game

Divide-and-conquer

42 / 12

Page 43: Eight Rules for Making Your First Great Game

Divide-and-conquer

43 / 12

Page 44: Eight Rules for Making Your First Great Game

Divide-and-conquer

44 / 12

Page 45: Eight Rules for Making Your First Great Game

Divide-and-conquer

45 / 12

Page 46: Eight Rules for Making Your First Great Game

Logging

46 / 12

Page 47: Eight Rules for Making Your First Great Game

On-Screen

47 / 12

Page 48: Eight Rules for Making Your First Great Game

Pair Programming

48 / 12Source: University of Utah, UIT

Page 49: Eight Rules for Making Your First Great Game

And if nothings helps …

49 / 12

Page 50: Eight Rules for Making Your First Great Game

And if nothings helps …

50 / 12

Try again tomorrow!

Page 51: Eight Rules for Making Your First Great Game

Some are really nasty …

• Remote systems

• Race conditions

• Mobile development, embedded systems, drivers

• “Release Mode only” bugs

51 / 12

Page 52: Eight Rules for Making Your First Great Game

Quoting My Tutor

“If the bug is not where you expect it to be,

you better start looking for it where you’re not expecting it to be.”

- Hagen Peters

52 / 12

Page 53: Eight Rules for Making Your First Great Game

You need a repro. Period.

How can you be sure you’ve fixed it?

53 / 12

Page 54: Eight Rules for Making Your First Great Game

Rule 6

Gameplay first!

Page 55: Eight Rules for Making Your First Great Game

Gameplay First

55 / 60

Erich Schaefer. Postmortem: Blizzard's Diablo II. http://www.gamasutra.com/view/feature/131533/postmortem_blizzards

_diablo_ii.php

“First, we make the game playable as soon as possiblein the development process. Our initial priority was toget a guy moving around on the screen and hackingmonsters. This is what players would be doing most ofthe time, and it had to be fun.”

Page 56: Eight Rules for Making Your First Great Game

Rule 7

Learn from others!

Page 57: Eight Rules for Making Your First Great Game

Because you wouldn't use a screwdriver on a nail...

57 / 60

StarCraft II Galaxy Editor

Page 58: Eight Rules for Making Your First Great Game

58 / 60

StarCraft II Galaxy Editor

Because you wouldn't use a screwdriver on a nail...

Page 59: Eight Rules for Making Your First Great Game

59 / 60

StarCraft II Galaxy Editor

Because you wouldn't use a screwdriver on a nail...

Page 60: Eight Rules for Making Your First Great Game

60 / 60

StarCraft II MakeCombat

Because you wouldn't use a screwdriver on a nail...

Page 61: Eight Rules for Making Your First Great Game

61 / 60

Erich Schaefer. Postmortem: Blizzard's Diablo II. http://www.gamasutra.com/view/feature/131533/postmortem_blizzards

_diablo_ii.php

“In many cases we created tools to speed up contentcreation, but then abandoned them. Too often, wedecided to keep using inferior tools because wethought we were almost done with the game, anddidn't want to take the time to improve them.Unfortunately, in most of these cases, we were notreally almost done with the game.“

Because you wouldn't use a screwdriver on a nail...

Page 62: Eight Rules for Making Your First Great Game

Genre Standards

62 / 60

StarCraft II Screenshot

Page 63: Eight Rules for Making Your First Great Game

Genre Standards

63 / 60

StarCraft II Screenshot

Page 64: Eight Rules for Making Your First Great Game

Genre Standards

64 / 60

StarCraft II Screenshot

Page 65: Eight Rules for Making Your First Great Game

Genre Standards

65 / 60

StarCraft II Screenshot

Page 66: Eight Rules for Making Your First Great Game

Genre Standards

66 / 60

StarCraft II Screenshot

Page 67: Eight Rules for Making Your First Great Game

Genre Standards

67 / 60

StarCraft II Screenshot

Page 68: Eight Rules for Making Your First Great Game

Genre Standards

68 / 60

StarCraft II Screenshot

Page 69: Eight Rules for Making Your First Great Game

Genre Standards

69 / 60

StarCraft II Screenshot

Page 70: Eight Rules for Making Your First Great Game

Genre Standards

70 / 60

Unreal Tournament 3 Splash Screen

Page 71: Eight Rules for Making Your First Great Game

Genre Standards

71 / 60

Unreal Tournament 3 Login Screen

Page 72: Eight Rules for Making Your First Great Game

Genre Standards

72 / 60

Hostile Worlds Screen Transitions

Page 73: Eight Rules for Making Your First Great Game

Genre Standards

73 / 60

Steam Server Browser

Page 74: Eight Rules for Making Your First Great Game

Genre Standards

74 / 60

WarCraft III Lobby

Page 75: Eight Rules for Making Your First Great Game

Genre Standards

75 / 60

WarCraft III Loading Screen

Page 76: Eight Rules for Making Your First Great Game

Genre Standards

76 / 60

WarCraft III Score Screen

Page 77: Eight Rules for Making Your First Great Game

Genre Standards

77 / 60

StarCraft II Options Screen

Page 78: Eight Rules for Making Your First Great Game

Open Game Sources

78 / 60

Doom 3 GPL Release on GitHub

Page 79: Eight Rules for Making Your First Great Game

Open Game Sources

79 / 60

Blizzard on GitHub

Page 80: Eight Rules for Making Your First Great Game

Open Game Sources

80 / 60

Blizzard QT on GitHub

Page 81: Eight Rules for Making Your First Great Game

Open Game Sources

81 / 60

Blizzard Premake on GitHub

Page 82: Eight Rules for Making Your First Great Game

Project Structure

82 / 60

Windows 10 - System32 Folder

Page 83: Eight Rules for Making Your First Great Game

Project Structure

83 / 60

> 3000 Libraries

Page 84: Eight Rules for Making Your First Great Game
Page 85: Eight Rules for Making Your First Great Game

Project Structure

85 / 60

Hearthstone Asset Bundles

Page 86: Eight Rules for Making Your First Great Game

Project Structure

86 / 60

Hearthstone Data Files

Page 87: Eight Rules for Making Your First Great Game

Project Structure

87 / 60

StarCraft II “Mods”

Page 88: Eight Rules for Making Your First Great Game

Project Structure

88 / 60

StarCraft Game Folder Size

Page 89: Eight Rules for Making Your First Great Game

Project Structure

89 / 60

StarCraft MPQ Files

Page 90: Eight Rules for Making Your First Great Game

Data Structure

90 / 60

https://en.wikipedia.org/wiki/MPQ

MPQ (Mo'PaQ, short for Mike O'Brien Pack, named after its creator[citation

needed]), is an archiving file format used in several of Blizzard Entertainment's games.MPQs used in Blizzard's games generally contain a game's data files, including graphics, sounds, and level data. The format's capabilities include compression, encryption, file segmentation, extensible file metadata, cryptographic signature and the ability to store multiple versions of the same file for internationalization and platform-specific differences. MPQ archives can use a variety of compression algorithms which may also be combined.

Page 91: Eight Rules for Making Your First Great Game

Data Structure

91 / 60

Hearthstone Localization Files (GAMEPLAY.txt)

TAG TEXT COMMENT

GAMEPLAY_COIN_TOSS_LOSTYou get an extra card

GAMEPLAY_COIN_TOSS_WON You go first

GAMEPLAY_FATIGUE_TITLE Fatigue

GAMEPLAY_FATIGUE_TEXT Out of cards! Take {0} damage.

GAMEPLAY_FATIGUE_HISTORY_TEXT Trying to draw from an empty deck

deals increasing damage to your hero.

GAMEPLAY_END_TURN END TURN

GAMEPLAY_ENEMY_TURN ENEMY TURN

GAMEPLAY_YOUR_TURN Your Turn

GAMEPLAY_ERROR_PLAY_REJECTED Too late! Your turn is over.

GAMEPLAY_MOBILE_BATTLECRY_CANCELED Battlecry canceled.

GAMEPLAY_MANA_COUNTER {0}/{1} 0=unused mana 1=current total mana

Page 92: Eight Rules for Making Your First Great Game

Data Structure

92 / 60

Hearthstone Data Files (BOARD.xml)

<?xml version="1.0" encoding="UTF-8"?><Dbf><Column name="ID" type="Int" /><Column name="NOTE_DESC" type="String" /><Column name="PREFAB" type="AssetPath" /><Record><Field column="ID">1</Field><Field column="PREFAB">Assets/Game/Boards/STW/STW</Field><Field column="NOTE_DESC">Stormwind</Field></Record><Record><Field column="ID">2</Field><Field column="PREFAB">Assets/Game/Boards/ORG/ORG</Field><Field column="NOTE_DESC">Orgrimmar</Field></Record>

Page 93: Eight Rules for Making Your First Great Game

Log Files

93 / 60

Hearthstone Log File

Platform assembly:

D:\Games\Hearthstone\Hearthstone_Data\Managed\ICSharpCode.SharpZipLib.dll (this

message is harmless)

Loading D:\Games\Hearthstone\Hearthstone_Data\Managed\ICSharpCode.SharpZipLib.dll

into Unity Child Domain

Platform assembly: D:\Games\Hearthstone\Hearthstone_Data\Managed\PlayMaker.dll

(this message is harmless)

Loading D:\Games\Hearthstone\Hearthstone_Data\Managed\PlayMaker.dll into Unity

Child Domain

Page 94: Eight Rules for Making Your First Great Game

Log Files

94 / 60

League of Legends Log File

Function: Spell::Effect::SpellFXRenderer::Update

Expression: false

001567.413| 0.0000kb| 0.0000kb added| ERROR| Assertion

failed!

File: E:/jenkins/workspace/game-code-Releases-4-18-public-

win32/code/Game/LoL/Spell/Effect/Client/SpellFXRenderer.cpp

Line: 854

Page 95: Eight Rules for Making Your First Great Game

Art Guides

95 / 12

Page 96: Eight Rules for Making Your First Great Game

Development Blogs

96 / 60

Post-Mortem of WarCraft

Page 97: Eight Rules for Making Your First Great Game

Developer Conferences

97 / 60

Post-Mortem of Ochestrator

Page 98: Eight Rules for Making Your First Great Game

Rule 8

Commit to quality!

Page 99: Eight Rules for Making Your First Great Game

Commit To Quality

99 / 60

Erich Schaefer. Postmortem: Blizzard's Diablo II. http://www.gamasutra.com/view/feature/131533/postmortem_blizzards

_diablo_ii.php

“The task of testing a game of Diablo II's scope, with itshuge degree of randomness and its nearly infinitecharacter skill and equipment paths, required aHerculean effort. […] Would a party of five Paladins,each using a different defensive aura, be untouchable?After more than 100 hours of play, is a fire-basedSorceress unable to continue in Hell Mode?”

Page 100: Eight Rules for Making Your First Great Game

Thank you for listening!

https://github.com/npruehs

@npruehs

[email protected]