Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Sven Erik Knop, Perforce

370 visualizaciones

Publicado el

Version Management for Games Developers

(White Nights Conference St. Petersburg 2017)
The official conference website — http://wnconf.com

Publicado en: Empresariales
  • Inicia sesión para ver los comentarios

  • Sé el primero en recomendar esto

Sven Erik Knop, Perforce

  1. 1. Version Management for Game Developers Sven Erik Knop Perforce Software
  2. 2. 2 What we do  Perforce helps delivery teams build complex products collaboratively, securely and efficiently.  Commonly used for… • Software • Games • Electronics • Animations • Chipsets • Medical Devices • IoT Global 24x7 Support
  3. 3. 3 Why version management?
  4. 4. 4 What is Version Management? src img game.cc game.h test.cc knight.psd armour.png shield.psd File @1 @2 @3 @4 @5 @6 game.cc #1 #2 game.h #1 #2 test.cc #1 #2 #3 #4 knight.psd #1 #2 #3 armour.psd #1 #2 #3 shield.psd #1 #2 #3
  5. 5. 5 Working with Version Management (1) #include <game.h> int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents(); StartUpGame(); }
  6. 6. 6 Working with Version Management (2) #include <game.h> #include <login.h> int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SetUpOpponents(); StartUpGame(); }
  7. 7. 7 Working with Version Management (3) #include <game.h> #include <loot.h> int main() { InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents(); StartUpGame(); }
  8. 8. 8 Working with Version Management (4) #include <game.h> #include <login.h> #include <loot.h> int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents(); StartUpGame(); }
  9. 9. 9 Merging ... #include <game.h> int main() { InitialiseGame(); PopulateWorld(); SetUpOpponents(); StartUpGame(); } #include <game.h> #include <login.h> int main() { LogOnUser; InitialiseGame(); PopulateWorld(); SetUpOpponents(); StartUpGame(); } #include <game.h> #include <loot.h> int main() { InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents(); StartUpGame(); } #include <game.h> #include <login.h> #include <loot.h> int main() { LogOnUser(); InitialiseGame(); PopulateWorld(); SeedLoot(); SetUpOpponents(); StartUpGame(); } Base Source Target Merged
  10. 10. 10 Working together on binary files  Merging for binary files?  Locking!
  11. 11. 11 Single of Source of Truth
  12. 12. 12 Challenges in Games Development  Why is Games Development so hard? • Besides the obvious I mean …  Average AAA game: • 100 of thousands of files • 1 TB+ source code and assets at HEAD • 50GB + changes a day • 100+ Team size
  13. 13. 13 Consequences  Continuous integration • Builds take minutes (incremental) to hours (full) • Smoke tests? • Full tests?  Who broke the build?  HEAD is not stable!
  14. 14. 14 Coding practices compared  Different ways to organise your sources  There is no single best way • Team size • Target platform: Mobile/Console/PC/4K/… • Rate of change • Iteration frequency
  15. 15. 15 Single Code Line Head Stable Head still stable?
  16. 16. 16 Development branches Long-lived development branches can cause problems
  17. 17. 17 Task/Feature branches Keeping feature branches short- lived avoids severe merge conflicts
  18. 18. 18 3-way merge for binary assets?  Images?  3D models?  Sound files?  Locking!  Across branches?
  19. 19. 19 Component-based Shared trunk Separate trunks
  20. 20. 20 Trunk-based Development Trunk Release Extended testing for release Requires tooling! Stable
  21. 21. 21 Milestone branches Stabilise in separate branch Merge fixes, ignore hacks
  22. 22. Perforce Helix
  23. 23. 23 Flexible Workflow Version control, code reviews, simple file sharing, distributed, Git Fast and Scalable From 10 to 10,000+ users, unlimited files Every file Efficiently handles large, often binary, data All contributors Familiar tools, natural workflows Anywhere Supports geographically distributed teams Secure Granular permissions, theft risk monitoring Open and Extensible APIs and integration hooks for customization Introducing Perforce Helix Next Generation Hybrid Version Management
  24. 24. 24 IDEs Integrated into your workflow Game Engines Build/CI Image and 3D Tools + APIs and many other tools
  25. 25. 25 Distributed Single Source of Truth Versioning Service Proxy Proxy Edge Service (humans) D/R Edge Service (automation)
  26. 26. 26 Helix Streams
  27. 27. 27 How do I start?  Perforce is free (without restrictions) • For educational purposes • For Open Source projects • For 5 users / 20 workspaces  www.perforce.com  Hosted, for example, by Assembla (www.assembla.com)
  28. 28. Thank You Questions?

×