Top Banner
Game Development Challenges Nick Prühs
113

Game Development Challenges

Jul 15, 2015

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: Game Development Challenges

Game Development Challenges

Nick Prühs

Page 2: Game Development Challenges

About Me

“Best Bachelor“ Computer ScienceKiel University, 2009

Master GamesHamburg University of Applied Sciences, 2011

Lead ProgrammerDaedalic Entertainment, 2011-2012

Co-Founderslash games, 2013

2 / 113

Page 3: Game Development Challenges

Diversity of Games

3 / 113

Page 4: Game Development Challenges

Diversity of Games

4 / 113

Page 5: Game Development Challenges

Diversity of Games

5 / 113

Page 6: Game Development Challenges

Diversity of Games

6 / 113

Page 7: Game Development Challenges

Diversity of Games

7 / 113

Page 8: Game Development Challenges

Diversity of Games

8 / 113

Page 9: Game Development Challenges

Diversity of Games

9 / 113

Page 10: Game Development Challenges

Game Development Roles

Programming

10 / 113

Page 11: Game Development Challenges

Game Development Roles

2D Art

11 / 113

Page 12: Game Development Challenges

Game Development Roles

3D Art

12 / 113

Page 13: Game Development Challenges

Game Development Roles

Game Design

13 / 113

Page 14: Game Development Challenges

Game Development Roles

Sound Design

14 / 113

Page 15: Game Development Challenges

Game Development Roles

Cinematic Art

15 / 113

Page 16: Game Development Challenges

Game Development Roles

Game Author

16 / 113

Page 17: Game Development Challenges

Game Development Roles

Level Designer

17 / 113

Page 18: Game Development Challenges

Game Development Roles

Technical Artist

18 / 113

Page 19: Game Development Challenges

Game Development Roles

Localization

19 / 113

Page 20: Game Development Challenges

Game Development Roles

Producer

20 / 113

Page 21: Game Development Challenges

Game Development Roles

QA & Support

21 / 113

Page 22: Game Development Challenges

Game Development Roles

Marketing

22 / 113

Page 23: Game Development Challenges

Game Development Roles

PR

23 / 113

Page 24: Game Development Challenges

Game Development Roles

Community Management

24 / 113

Page 25: Game Development Challenges

Game Development Roles

Analytics

25 / 113

Page 26: Game Development Challenges

Art Pipelines

26 / 113

Page 27: Game Development Challenges

Art Pipelines

27 / 113

Page 28: Game Development Challenges

Art Pipelines

28 / 113

Page 29: Game Development Challenges

Art Pipelines

29 / 113

Page 30: Game Development Challenges

Game Engines

30 / 113

Page 31: Game Development Challenges

Game Engines

31 / 113

Page 32: Game Development Challenges

Game Engines

32 / 113

Page 33: Game Development Challenges

Game Engines

33 / 113

Page 34: Game Development Challenges

Game Engines

34 / 113

Page 35: Game Development Challenges

Example: Physics

35 / 113

Page 36: Game Development Challenges

Example: Physics

36 / 113

Page 37: Game Development Challenges

Example: Physics

37 / 113

−𝜖𝑣𝐴𝐵𝑛 = 𝑣𝐴𝐵′ 𝑛 definition

coefficient of restitution

= (𝑣𝐴′ − 𝑣𝐵

′ )𝑛 definitionrelative velocity

=(𝑣𝐴 +

𝑗

𝑀𝐴𝑛 − 𝑣𝐵 +

𝑗

𝑀𝐵𝑛)𝑛

definitioncollision impulse

=𝑣𝐴𝑛 +

𝑗

𝑀𝐴𝑛𝑛 − 𝑣𝐵𝑛 +

𝑗

𝑀𝐵𝑛𝑛

distribution

=𝑣𝐴𝑛 − 𝑣𝐵𝑛 +

𝑗

𝑀𝐴𝑛𝑛 +

𝑗

𝑀𝐵𝑛𝑛

commutative property

=𝑣𝐴𝐵𝑛 +

𝑗

𝑀𝐴𝑛𝑛 +

𝑗

𝑀𝐵𝑛𝑛

definitionrelative velocity

Page 38: Game Development Challenges

Lessons Learned

38 / 113

Page 39: Game Development Challenges

Campus Buddies

39 / 113

Page 40: Game Development Challenges

Campus Buddies

40 / 113

Page 41: Game Development Challenges

Campus Buddies

41 / 113

Page 42: Game Development Challenges

Campus Buddies

42 / 113

Page 43: Game Development Challenges

Campus BuddiesFeatures• Sharing ads using multiple channels (Email, Facebook, Twitter, Google+)

• Lead verification as specified by Yourfone

• Authentication by different providers (username/password, Facebook)

• Classical gamification mechanics (achievements, level ups, …)

• Periodic competitions resolved by the server

• Dynamic news stream

• Full moderation backend

• Responsive mobile version

• Facebook OpenGraph integration

• Friend referral program

• Customized reportings

• Secure reward shop

• Stateless Scalable Web Application

• SSL-Encryption

43 / 113

Page 44: Game Development Challenges

Campus BuddiesFeatures

44 / 113

Development Scope

10 Weeks

Page 45: Game Development Challenges

Lessons Learned

45 / 113

Page 46: Game Development Challenges

Gotcha!

LESSON 1:

Expect changes of external APIs!

46 / 113

Page 47: Game Development Challenges

External APIs

47 / 113

• Integrated three of the major social platforms: Facebook, Twitter and Google+

• During the development process, both Facebook and Google+ changed their APIs…

• … effectively turning some of our code into useless rubbish

• Took about a day or two to get everything up and running again

Page 48: Game Development Challenges

External APIs

48 / 113

Page 49: Game Development Challenges

External APIs

49 / 113

• Talking to other web developers, we learned that social platform providers tend to change their APIs regularly

• They won’t notify you about that.

• Neither before, nor after.

• Never.

Page 50: Game Development Challenges

Hint

LESSON 2:

Avoid doing everything yourself!

50 / 113

Page 51: Game Development Challenges

Don’t Reinvent The Wheel

51 / 113

• Got a problem that is not exactly related to just your application?

• Maybe someone else has already solved it.

• There’s lots of smart people having spent tens of hundreds of hours on your problem.

• Use that knowledge!

Page 52: Game Development Challenges

Don’t Reinvent The Wheel

52 / 113

Page 53: Game Development Challenges

Hint

LESSON 3:

Make testing as easy as possible!

53 / 113

Page 54: Game Development Challenges

Make testing easy!

54 / 113

At the beginning of the project, Christian had theidea of creating a debug web page containing linksfor several debug functions

• creating and logging in a test user

• adding points for the current user

• unlocking achievements

• and many, many more

Page 55: Game Development Challenges

Make testing easy!

55 / 113

Page 56: Game Development Challenges

Make testing easy!

56 / 113

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

Page 57: Game Development Challenges

Make testing easy!

57 / 113

• 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 58: Game Development Challenges

Hint

LESSON 4:

Make deployment as easy as possible!

58 / 113

Page 59: Game Development Challenges

Deploy often!

59 / 113

Creating a new version can involve a step or two:

• Accessing source control• Syncing working copy• 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 60: Game Development Challenges

Deploy often!

60 / 113

Page 61: Game Development Challenges

Deploy often!

You wouldn’t wanna do all that by hand.

Every time.

Do you?

61 / 113

Page 62: Game Development Challenges

Campus BuddiesLessons Learned

62 / 113

Page 63: Game Development Challenges

Hint

LESSON 5:

Mock network interaction for testing!

63 / 113

Page 64: Game Development Challenges

Mocking

• Everything that involves network communication is annoying to test.

• We mocked parts of the remote interaction of our application• sending e-mails

• verifying leads

• Whenever a mail was sent, it was written to the console instead, for instance.

64 / 113

Page 65: Game Development Challenges

Mocking

2013-05-19 19:36:29,980 - [INFO] - from applicationMOCK MAILER: send email

2013-05-19 19:36:29,982 - [INFO] - from applicationFROM:"yourfone.de Campus Buddies" <[email protected]>

2013-05-19 19:36:29,983 - [INFO] - from applicationTO:"Nick" <[email protected]>

2013-05-19 19:36:29,985 - [INFO] - from applicationTEXT:

<html><head><title>...

65 / 113

Page 66: Game Development Challenges

Mocking

This allowed us to check all parts of our applicationthat include sending mails without having to spamour (or everyones…) inboxes.

66 / 113

Page 67: Game Development Challenges

Campus BuddiesLessons Learned

67 / 113

Page 68: Game Development Challenges

Gotcha!

LESSON 6:

Standardize your code style!

68 / 113

Page 69: Game Development Challenges

Consistent Code Style

• If you aren’t alone (and I sincerely hope you’re not), you’ll want to standardize your code styles.

• Be clear about tiny details such as tabs vs. spaces• greatly increases maintainability

• reduces the number of merge conflicts

69 / 113

Page 70: Game Development Challenges

Merge Conflict

70 / 113

Page 71: Game Development Challenges

StyleCop

71 / 113

Page 72: Game Development Challenges

StyleCop

72 / 113

Page 73: Game Development Challenges

Eclipse

73 / 113

Page 74: Game Development Challenges

Eclipse

74 / 113

Page 75: Game Development Challenges

Lessons Learned

75 / 113

Page 76: Game Development Challenges

FreudBot

76 / 113

Page 77: Game Development Challenges

FreudBot

77 / 113

Page 78: Game Development Challenges

FreudBot

78 / 113

Page 79: Game Development Challenges

FreudBot

79 / 113

Page 80: Game Development Challenges

FreudBot Features

• 46 levels, 17 animated characters, 10 screens, 137 cards, 4 comics, 10 000 words, 45 sounds

• Dedicated website and social media channels

• Multiple ad providers and in-app purchases

• Fully localized to five different languages

• Full analytics integration

• Cloud savegames

• Native mobile features (loading screen, snap mode, suspend, charms, toasts)

• Marketing (fan art, card contest, trailer, contests)

• Multi-platform release on iOS, Android, Windows Store, Windows Phone (Windows and Mac to come)

80 / 113

Page 81: Game Development Challenges

Lessons Learned

81 / 113

Page 82: Game Development Challenges

Hint

LESSON 1:

Use a feature-based project structure!

82 / 113

Page 83: Game Development Challenges

Feature Folders

• Project Root• FingerGestures

• FreudBot

• HOTween

• NGUI

• NData

• Unity Test Tools

83 / 113

Page 84: Game Development Challenges

Feature Folders

• Project Root• FingerGestures• FreudBot

• Animations• Atlases• Fonts• Localization• Prefabs• Scenes• Sounds• Sprites• Scripts

• HOTween• NGUI• NData• Unity Test Tools

84 / 113

Page 85: Game Development Challenges

Feature Folders

• Project Root• FreudBot

• Scripts• Ads• Analytics• Comics• Core• Debug• Dialogue• IAP• Mobile• Progression• Sound• UI

85 / 113

Page 86: Game Development Challenges

Feature Folders

• Project Root• FreudBot

• Scripts• Ads

• Components

• Events

• Systems

86 / 113

Page 87: Game Development Challenges

Feature Folders

This way, features and plugins can easily be updated or removed without having

to scan the full project tree.

87 / 113

Page 88: Game Development Challenges

Hint

LESSON 2:

Collaboration first!

88 / 113

Page 89: Game Development Challenges

Collaboration first!

89 / 113

Page 90: Game Development Challenges

Collaboration first!

Excel CSV XML Game

90 / 113

Page 91: Game Development Challenges

Collaboration first!

Excel CSV XML Game

91 / 113

Page 92: Game Development Challenges

FreudBotLessons Learned

Let everyone work with the tools they’re most experienced with, and provide a tool chain for

data conversion as soon as possible.

92 / 113

Page 93: Game Development Challenges

Hint

LESSON 3:

Listen to your players!

93 / 113

Page 94: Game Development Challenges

Analytics

94 / 113

Page 95: Game Development Challenges

Analytics

95 / 113

Page 96: Game Development Challenges

Analytics

96 / 113

This is okay. (Endboss)

Page 97: Game Development Challenges

Analytics

97 / 113

This is not. (Intermediate level)

Page 98: Game Development Challenges

Gotcha!

LESSON 4:

Don‘t forget the tutorial!

98 / 113

Page 99: Game Development Challenges

Tutorials

99 / 113

Page 100: Game Development Challenges

Tutorials

• Have players test your game early on• Don’t talk, just watch and listen.

• Don’t underestimate the time required for implementing your tutorial. It introduces many special cases, such as• Prohibiting player actions (e.g. use ability, end turn)

• Triggering unusual events (e.g. let turn timers expire)

• Tweening UI in step by step

• Providing fixed outcomes (e.g. always same card hand)

100 / 113

Page 101: Game Development Challenges

Hint

LESSON 5:

There‘s 2D skeletal animation!

101 / 113

Page 102: Game Development Challenges

Spine

102 / 113

Page 103: Game Development Challenges

Spine Atlas Image

103 / 113

Page 104: Game Development Challenges

Spine Atlas File

104 / 113

Page 105: Game Development Challenges

Spine Animation File

105 / 113

Page 106: Game Development Challenges

FreudBotLessons Learned

106 / 113

Page 107: Game Development Challenges

Gotcha!

LESSON 6:

Localization is a bitch!

107 / 113

Page 108: Game Development Challenges

Localization Sheet

108 / 113

Page 109: Game Development Challenges

Localization Pipeline

109 / 113

Game

XML

CSV

Excel

CSV

XML

Page 110: Game Development Challenges

Localization Best Practice

• Use unique, immutable localization keys• Changing any localization keys will invalidate any sheets

handed out to your localization team

• Highlight new texts, changed texts• These additional texts will have to be localized later

• Provide a playable version of your game, as well as rich background information (e.g. characters, places)• People need to know the game before they can localize it.

• Allow instant integration of the localized texts, if possible• Localization team can check for encoding issues, overlapping

labels, missing texts immediately

110 / 113

Page 111: Game Development Challenges

And there is more…

• Learn from others!

• Stick to your plan!

• Build prototypes!

• Use automatic testing!

• Setup proper version control workflows!

111 / 113

Page 112: Game Development Challenges

And there is more…

• Learn from others!

• Stick to your plan!

• Build prototypes!

• Use automatic testing!

• Setup proper version control workflows!

See Game Programming

http://www.npruehs.de/teaching/game-programming/

Monday, 8.30 am, E 45

112 / 113

Page 113: Game Development Challenges

Thank you for your attention!

Contact

Mail

[email protected]

Blog

http://www.npruehs.de

Twitter

@npruehs

Github

https://github.com/npruehs

113 / 113