O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Eight Rules for Making Your First Great Game

279 visualizações

Publicada em

Presented November 23, 2016 at Wedel University of Applied Sciences, Germany.
http://www.fh-wedel.de/

Publicada em: Tecnologia
  • How long does it take for VigRX Plus to start working? ◆◆◆ http://t.cn/Ai88iYkP
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Seja a primeira pessoa a gostar disto

Eight Rules for Making Your First Great Game

  1. 1. Eight Rules For Making Your First Great Game Nick Prühs
  2. 2. About Me “Best Bachelor“ Computer Science Kiel University, 2009 Master Games Hamburg University of Applied Sciences, 2011 Lead Programmer Daedalic Entertainment, 2011-2012 Co-Founder slash games, 2013-2016 Technical Director Daedalic Entertainment, 2016 2 / 79
  3. 3. Diversity of Games 3 / 113
  4. 4. Diversity of Games 4 / 113
  5. 5. Diversity of Games 5 / 113
  6. 6. Diversity of Games 6 / 113
  7. 7. Diversity of Games 7 / 113
  8. 8. Diversity of Games 8 / 113
  9. 9. Game Development “Games are insanely complex.” - Warren Spector
  10. 10. Rule 1 Make testing as easy as possible!
  11. 11. 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
  12. 12. Make testing easy! 12 / 79
  13. 13. Make testing easy! 13 / 79 This was arguably the best idea we had throughout the project.
  14. 14. 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
  15. 15. 15 / 79
  16. 16. Rule 2 Deploy often!
  17. 17. Deploy often! 17 / 79 Creating a new version can involve a step or two:  Accessing source control o 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
  18. 18. Deploy often! You wouldn’t wanna do all that by hand. Every time. Do you? 18 / 79
  19. 19. Deploy often! 19 / 79
  20. 20. Rule 3 Use a bullet-proof, feature-based project structure!
  21. 21. Bad Example • Assets  EMHQ o Data – Icons – Images – Sprites – Textures o Resources – Icons o UI – Common » Sprites  EMHQ_gfx_export o Textures  GUI o Assets – Images 21 / 79
  22. 22. Bad Example • Assets  EMHQ o Data – Icons – Images – Sprites – Textures o Resources – Icons o UI – Common » Sprites  EMHQ_gfx_export o Textures  GUI o Assets – Images 22 / 79 Bonus Objective: - Find the icon for the Main Menu button.
  23. 23. Bad Example • Assets  EMHQ o Data – Icons – Images – Sprites – Textures o Resources – Icons o UI – Common » Sprites – Base » HUD • Sprites  EMHQ_gfx_export o Textures  GUI o Assets – Images 23 / 79 Bonus Objective: - Find the icon for the Main Menu button.
  24. 24. Feature Folders • Project Root  FingerGestures  FreudBot  HOTween  NGUI  NData  Unity Test Tools 24 / 79
  25. 25. Feature Folders • Project Root  FingerGestures  FreudBot o 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
  26. 26. Feature Folders • Project Root  FreudBot o Scripts – Ads – Analytics – Comics – Core – Debug – Dialogue – IAP – Mobile – Progression – Sound – UI 26 / 79
  27. 27. Feature Folders • Project Root  FreudBot o Scripts – Ads » Components » Events » Systems 27 / 79
  28. 28. Feature Folders This way, features and plugins can easily be updated or removed without having to scan the full project tree. 28 / 79
  29. 29. Rule 4 Listen to your players!
  30. 30. Analytics 30 / 79
  31. 31. Analytics 31 / 79
  32. 32. Analytics 32 / 79 This is okay. (Endboss)
  33. 33. Analytics 33 / 79 This is not. (Intermediate level)
  34. 34. Rule 5 Fix bugs immediately!
  35. 35. 35 / 79 Why you should always start debugging immediately
  36. 36. 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
  37. 37. Code Quality Tools 37 / 12
  38. 38. Code Quality Tools 38 / 12
  39. 39. 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); }
  40. 40. Divide-and-conquer 40 / 12
  41. 41. Divide-and-conquer 41 / 12
  42. 42. Divide-and-conquer 42 / 12
  43. 43. Divide-and-conquer 43 / 12
  44. 44. Divide-and-conquer 44 / 12
  45. 45. Divide-and-conquer 45 / 12
  46. 46. Logging 46 / 12
  47. 47. On-Screen 47 / 12
  48. 48. Pair Programming 48 / 12 Source: University of Utah, UIT
  49. 49. And if nothings helps … 49 / 12
  50. 50. And if nothings helps … 50 / 12 Try again tomorrow!
  51. 51. Some are really nasty … • Remote systems • Race conditions • Mobile development, embedded systems, drivers • “Release Mode only” bugs 51 / 12
  52. 52. 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
  53. 53. You need a repro. Period. How can you be sure you’ve fixed it? 53 / 12
  54. 54. Rule 6 Gameplay first!
  55. 55. 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 possible in the development process. Our initial priority was to get a guy moving around on the screen and hacking monsters. This is what players would be doing most of the time, and it had to be fun.”
  56. 56. Rule 7 Learn from others!
  57. 57. Because you wouldn't use a screwdriver on a nail... 57 / 60 StarCraft II Galaxy Editor
  58. 58. 58 / 60 StarCraft II Galaxy Editor Because you wouldn't use a screwdriver on a nail...
  59. 59. 59 / 60 StarCraft II Galaxy Editor Because you wouldn't use a screwdriver on a nail...
  60. 60. 60 / 60 StarCraft II MakeCombat Because you wouldn't use a screwdriver on a nail...
  61. 61. 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 content creation, but then abandoned them. Too often, we decided to keep using inferior tools because we thought we were almost done with the game, and didn't want to take the time to improve them. Unfortunately, in most of these cases, we were not really almost done with the game.“ Because you wouldn't use a screwdriver on a nail...
  62. 62. Genre Standards 62 / 60 StarCraft II Screenshot
  63. 63. Genre Standards 63 / 60 StarCraft II Screenshot
  64. 64. Genre Standards 64 / 60 StarCraft II Screenshot
  65. 65. Genre Standards 65 / 60 StarCraft II Screenshot
  66. 66. Genre Standards 66 / 60 StarCraft II Screenshot
  67. 67. Genre Standards 67 / 60 StarCraft II Screenshot
  68. 68. Genre Standards 68 / 60 StarCraft II Screenshot
  69. 69. Genre Standards 69 / 60 StarCraft II Screenshot
  70. 70. Genre Standards 70 / 60 Unreal Tournament 3 Splash Screen
  71. 71. Genre Standards 71 / 60 Unreal Tournament 3 Login Screen
  72. 72. Genre Standards 72 / 60 Hostile Worlds Screen Transitions
  73. 73. Genre Standards 73 / 60 Steam Server Browser
  74. 74. Genre Standards 74 / 60 WarCraft III Lobby
  75. 75. Genre Standards 75 / 60 WarCraft III Loading Screen
  76. 76. Genre Standards 76 / 60 WarCraft III Score Screen
  77. 77. Genre Standards 77 / 60 StarCraft II Options Screen
  78. 78. Open Game Sources 78 / 60 Doom 3 GPL Release on GitHub
  79. 79. Open Game Sources 79 / 60 Blizzard on GitHub
  80. 80. Open Game Sources 80 / 60 Blizzard QT on GitHub
  81. 81. Open Game Sources 81 / 60 Blizzard Premake on GitHub
  82. 82. Project Structure 82 / 60 Windows 10 - System32 Folder
  83. 83. Project Structure 83 / 60 > 3000 Libraries
  84. 84. Project Structure 85 / 60 Hearthstone Asset Bundles
  85. 85. Project Structure 86 / 60 Hearthstone Data Files
  86. 86. Project Structure 87 / 60 StarCraft II “Mods”
  87. 87. Project Structure 88 / 60 StarCraft Game Folder Size
  88. 88. Project Structure 89 / 60 StarCraft MPQ Files
  89. 89. 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.
  90. 90. 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
  91. 91. 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>
  92. 92. Log Files 93 / 60 Hearthstone Log File Platform assembly: D:GamesHearthstoneHearthstone_DataManagedICSharpCode.SharpZipLib.dll (this message is harmless) Loading D:GamesHearthstoneHearthstone_DataManagedICSharpCode.SharpZipLib.dll into Unity Child Domain Platform assembly: D:GamesHearthstoneHearthstone_DataManagedPlayMaker.dll (this message is harmless) Loading D:GamesHearthstoneHearthstone_DataManagedPlayMaker.dll into Unity Child Domain
  93. 93. 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
  94. 94. Art Guides 95 / 12
  95. 95. Development Blogs 96 / 60 Post-Mortem of WarCraft
  96. 96. Developer Conferences 97 / 60 Post-Mortem of Ochestrator
  97. 97. Rule 8 Commit to quality!
  98. 98. 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 its huge degree of randomness and its nearly infinite character skill and equipment paths, required a Herculean 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-based Sorceress unable to continue in Hell Mode?”
  99. 99. Thank you for listening! https://github.com/npruehs @npruehs nick.pruehs@daedalic.com

×