game development challenges

113
Game Development Challenges Nick Prühs

Upload: nick-pruehs

Post on 15-Jul-2015

115 views

Category:

Technology


0 download

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