SlideShare a Scribd company logo
Kostas Anagnostou Game developer Adjunct Lecturer in Videogame Technologies
Who am I? Freelance game developer Adjunct Lecturer in Videogame Technologies, Ionian University Game Engine programmer at Microsoft Game Studios (Rare, UK)
What is this talk about? Making great games!
What is this talk about? Not really, I don’t have the recipe for that…
What is this talk about? How to  enable  talented and creative people to make great games!
How are great games made? It is a trial-and-error, iterative process. Mechanics and content must be tried and fine tuned in-game
Who creates a great game? Game designers and artists mainly All effort in game development must be focused on making their jobs easier What we call  Power to the Artist !
Data-driven development Decouple game data and logic from game code Let data determine game behaviour/aesthetics  Make data accessible to all
Data-driven development (DDD) Data-driven game development requires more initial work Much easier to hardcode everything! Why should we care?
Benefits of DDD for artists Much easier to add new content Much easier to add new behaviour Faster iteration times Reduces artist dependency on programmer
Benefits of DDD for programmers Tighter, easier to maintain code Flat class hierarchy No artists bugging us!     Scott Shumaker,  Outrage Games
Elements that can be data-driven Level design/content Game object data/behaviour UI/localisation Game configuration
How can data affect game behaviour? Data driven development goes nicely with a Component-based engine architecture Game Entities are just containers Data specify which components/functionality are required Scott Shumaker, Outrage Games
Requirements of DDD Some form of data description Efficient and artist-friendly tools
Levels of Data driven development #define ENEMY_KAMIKAZE_HP 20 void  ApplyEnemyDamage(Enemy* enemy) { if (enemy->Type == ENEMY_KAMIKAZE) { enemy->Shield -= ENEMY_KAMIKAZE_HP; } }
Levels of Data driven development File: EnemyHitPoints.txt ENEMY_KAMIKAZE_HP 20 ENEMY_KILLER_HP 10 ENEMY_BRUTE_HP 2 ENEMY_BOSS2_HP 2 … ..
Levels of Data driven development File: EnemyDefinitions.xml <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Warrior&quot; texture=&quot;enemies_sheet.png&quot; shield=&quot;100&quot; speed=&quot;30&quot; weapon=&quot;Laser&quot; explosion=&quot;Muffled&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;0&quot; y=&quot;0&quot; w=&quot;32&quot; h=&quot;32&quot;></frame> <frame x=&quot;32&quot; y=&quot;0&quot; w=&quot;32&quot; h=&quot;32&quot; /> </frames> </enemy> <enemy type=&quot;Kamikaze&quot; texture=&quot;enemies_sheet.png&quot; shield=&quot;50&quot; speed=&quot;40&quot; weapon=&quot;&quot; explosion=&quot;Strong&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;0&quot; y=&quot;32&quot; w=&quot;32&quot; h=&quot;32&quot; /> <frame x=&quot;32&quot; y=&quot;32&quot; w=&quot;32&quot; h=&quot;32&quot; /> </frames> </enemy> </enemies> JSON is quite trendy too!
Levels of Data driven development
First taste of Data Driven Development At Rare we focused on the content pipeline a lot! Extensive framework built around Maya and the in-house game engine. The artist could fully customize assets in Maya One click asset deployment Enabled iterative development
First taste of Data Driven Development Rare’s solution focused on data/game entity customization No game engine support for components/data driven behaviour Still, artist empowerment was huge!
Space Debris by Rotten Fish Games Space Debris is a retro Space Shoot’em Up Designed for smartphones (iPhone and later Android) 15 multilayered levels in total, tens of enemies, lots of weapon/weapon upgrades, bonuses, animations etc We relied on a data-driven system to set all that up.
Data-Driven system design Game Entity is a container for data/behaviour By default only supports transform/rendering Designer can add weapons, animations, sprite animations, bonuses, upgrades, sound effects, explosions etc externally Game stats are set externally as well
Hierarchical structure of XML files Level.xml spritesheets.xml animations.xml spawners.xml bonuses.xml enemies.xml explosions.xml
Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <stages> <stage  name=&quot;stage1&quot;  spritesheets=&quot;spritesheets.xml&quot;  enemies = &quot;enemies.xml&quot;  spawners = &quot;spawners.xml&quot;  weapons = &quot;weapons.xml&quot;  animations = &quot;animations.xml&quot;  bonuses = &quot;bonuses.xml&quot;  explosions = &quot;explosions.xml&quot; > <levels> <level  name= &quot;s1level1&quot;  file= &quot;tilemap_s1l1.tmx&quot;  music = &quot;STAGE1_LEVEL_1.mp3&quot;> </level> <level  name= &quot;s1level2&quot;  file= &quot;tilemap_s1l2.tmx&quot;  music = &quot;STAGE1_LEVEL_2.mp3&quot;> </level> </levels> </stage> </stages> Enemy definitions Bonus definitions Level tilemap
Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <spawners> <spawner  type=&quot;S1LNKamikazeeHunterChase&quot;  enemytype=&quot;Kamikazee_Hunter&quot;  spawn=&quot;Chase&quot;  animation=“ ZigZag&quot;  number=&quot;6&quot;  rate=&quot;2&quot;  bonus=&quot;Invisibility&quot;> </spawner> </spawners> <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Kamikazee_Hunter&quot;> <parts> <part    sprite=&quot;alien_kamikazee_hunter“ shield=&quot;1&quot;  weapon=&quot;EnemyKamikazee1&quot;  explosion=&quot;MediumExplosion&quot;> </part> </parts> </enemy> </enemies> <?xml version=&quot;1.0&quot;?> <spritesheets> <spritesheet name=&quot;spritesheet_normal.png&quot;> <sprite name=&quot;alien_kamikazee_hunter&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;432&quot; y=&quot;96&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> <frame x=&quot;0&quot; y=&quot;144&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> </frames> </sprite> </spritesheet> </spritesheets> <?xml version=&quot;1.0&quot;?> <animations> <animation  name=&quot;SPath&quot;  type=&quot;Bezier&quot;  track=&quot;Player&quot;> <parts count=“3&quot;> <part p0=&quot;0  0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  <part p0=&quot;0  0&quot; p1=&quot;-1  0&quot; p2=&quot;-1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  <part p0=&quot;0  0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  </parts> </animation> </animations>
Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <spawners> <spawner  type=&quot;S1LNKamikazeeHunterChase&quot;  enemytype=&quot;Kamikazee_Hunter&quot;  spawn=&quot;Chase&quot;  animation=“ SPath&quot;  number=&quot;6&quot;  rate=&quot;2&quot;  bonus=&quot;Invisibility&quot;> </spawner> </spawners> <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Kamikazee_Hunter&quot;> <parts> <part    sprite=&quot;alien_kamikazee_hunter“ shield=&quot;1&quot;  weapon=&quot;EnemyKamikazee1&quot;  explosion=&quot;MediumExplosion&quot;> </part> </parts> </enemy> </enemies> <?xml version=&quot;1.0&quot;?> <spritesheets> <spritesheet name=&quot;spritesheet_normal.png&quot;> <sprite name=&quot;alien_kamikazee_hunter&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;432&quot; y=&quot;96&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> <frame x=&quot;0&quot; y=&quot;144&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> </frames> </sprite> </spritesheet> </spritesheets> <?xml version=&quot;1.0&quot;?> <animations> <animation  name=&quot;SPath&quot;  type=&quot;Bezier&quot;  track=&quot;Player&quot;> <parts count=“3&quot;> <part p0=&quot;0  0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  <part p0=&quot;0  0&quot; p1=&quot;-1  0&quot; p2=&quot;-1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  <part p0=&quot;0  0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0  -0.25&quot;  duration=&quot;3&quot;></part>  </parts> </animation> </animations>
Game data specification
Game data specification
Experiences from the DD system Programmer becomes obsolete!   Designer can iterate level design faster Easier for the team to work remotely Cleaner code, almost flat Class hierarchy
A few weaknesses Some initial coding overhead We should have used a visual editor XML files not artist friendly enough Tiled editor was a halfway solution
Let’s wrap it up! DDD can benefit even small teams Content decoupling and iteration are important Some coding overhead, usually acceptable Need good tools to exploit DDD fully Give power to the artist to express herself!
Thank you for listening! Kostas Anagnostou [email_address]

More Related Content

PPTX
Unreal Engine (For Creating Games) Presentation
PPTX
Introduction to game development
PDF
Mobile Game Development in Unity
PDF
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
PDF
BGA Studio Guidelines
PDF
Unreal Engine Beginner Workshop Slides
PDF
【UE4.25 新機能】新しいシリアライゼーション機能「Unversioned Property Serialization」について
PDF
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)
Unreal Engine (For Creating Games) Presentation
Introduction to game development
Mobile Game Development in Unity
徹底解説!UE4を使ったモバイルゲーム開発におけるコンテンツアップデートの極意!
BGA Studio Guidelines
Unreal Engine Beginner Workshop Slides
【UE4.25 新機能】新しいシリアライゼーション機能「Unversioned Property Serialization」について
UE4のローカライズ機能紹介 (UE4 Localization Deep Dive)

What's hot (20)

PPT
The 8 steps to create a board game on Board Game Arena
PDF
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
PDF
BGA Studio - Focus on BGA Game state machine
PPTX
재미에 대한 고찰
PDF
Epic Fails in LiveOps
PDF
Game Development workshop with Unity3D.
PDF
Game monetization: Overview of monetization methods for free-to-play games
PDF
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
PPTX
기획자의 포트폴리오는 어떻게 써야 할까
PPTX
Introduction to game development
PDF
猫でも分かる Control Rig UE4.25 版
PDF
Live ops in mobile gaming - how to do it right?
PPTX
게임 기획 튜토리얼 (2015 개정판)
PPTX
[IGC 2016] 넷게임즈 김복식 - 중국 모바일 게임과 캐주얼 게임 디자인
PPTX
Game development
PPTX
Unity 3D
PPTX
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
PDF
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
PDF
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
PPTX
Tales from the Optimization Trenches - Unite Copenhagen 2019
The 8 steps to create a board game on Board Game Arena
UE4のモバイル開発におけるコンテンツアップデートの話 - Chunk IDとの激闘編 -
BGA Studio - Focus on BGA Game state machine
재미에 대한 고찰
Epic Fails in LiveOps
Game Development workshop with Unity3D.
Game monetization: Overview of monetization methods for free-to-play games
【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術
기획자의 포트폴리오는 어떻게 써야 할까
Introduction to game development
猫でも分かる Control Rig UE4.25 版
Live ops in mobile gaming - how to do it right?
게임 기획 튜토리얼 (2015 개정판)
[IGC 2016] 넷게임즈 김복식 - 중국 모바일 게임과 캐주얼 게임 디자인
Game development
Unity 3D
ゲームエンジンの文法【UE4】No.005 Gameplay Frameworkの理解
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
게임회사 실무용어 완전정복! 쿡앱스 용어정리집
Tales from the Optimization Trenches - Unite Copenhagen 2019
Ad

Similar to Data Driven Game development (20)

PPTX
98 374 Lesson 06-slides
PDF
Creating Video Games From Scratch Sky Con
PDF
Monogame and xna
PPTX
XNA Intro Workshop
PDF
Useful Tools for Making Video Games - XNA (2008)
PPTX
98 374 Lesson 03-slides
PPT
Introduction To 3D Gaming
PPTX
WP7 HUB_XNA
PPTX
Xna game development
PPTX
WP7 HUB_XNA overview
PPTX
Galactic Wars XNA Game
PPTX
Game development 101 - A Basic Introduction
PPT
Presentation 1 22nd August 2008
DOCX
Documentation
PDF
3D Space Shooting Game
DOCX
Harry johnson 2d work flow task 2 screen shots
PPTX
Construct 2 Platformer: Step by Step
DOCX
Level workflow
98 374 Lesson 06-slides
Creating Video Games From Scratch Sky Con
Monogame and xna
XNA Intro Workshop
Useful Tools for Making Video Games - XNA (2008)
98 374 Lesson 03-slides
Introduction To 3D Gaming
WP7 HUB_XNA
Xna game development
WP7 HUB_XNA overview
Galactic Wars XNA Game
Game development 101 - A Basic Introduction
Presentation 1 22nd August 2008
Documentation
3D Space Shooting Game
Harry johnson 2d work flow task 2 screen shots
Construct 2 Platformer: Step by Step
Level workflow
Ad

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Encapsulation theory and applications.pdf
PPT
Teaching material agriculture food technology
PDF
Electronic commerce courselecture one. Pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Spectroscopy.pptx food analysis technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Cloud computing and distributed systems.
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
MYSQL Presentation for SQL database connectivity
Building Integrated photovoltaic BIPV_UPV.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Big Data Technologies - Introduction.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Encapsulation theory and applications.pdf
Teaching material agriculture food technology
Electronic commerce courselecture one. Pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Advanced methodologies resolving dimensionality complications for autism neur...
Unlocking AI with Model Context Protocol (MCP)
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectroscopy.pptx food analysis technology
Spectral efficient network and resource selection model in 5G networks
Cloud computing and distributed systems.
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Encapsulation_ Review paper, used for researhc scholars

Data Driven Game development

  • 1. Kostas Anagnostou Game developer Adjunct Lecturer in Videogame Technologies
  • 2. Who am I? Freelance game developer Adjunct Lecturer in Videogame Technologies, Ionian University Game Engine programmer at Microsoft Game Studios (Rare, UK)
  • 3. What is this talk about? Making great games!
  • 4. What is this talk about? Not really, I don’t have the recipe for that…
  • 5. What is this talk about? How to enable talented and creative people to make great games!
  • 6. How are great games made? It is a trial-and-error, iterative process. Mechanics and content must be tried and fine tuned in-game
  • 7. Who creates a great game? Game designers and artists mainly All effort in game development must be focused on making their jobs easier What we call Power to the Artist !
  • 8. Data-driven development Decouple game data and logic from game code Let data determine game behaviour/aesthetics Make data accessible to all
  • 9. Data-driven development (DDD) Data-driven game development requires more initial work Much easier to hardcode everything! Why should we care?
  • 10. Benefits of DDD for artists Much easier to add new content Much easier to add new behaviour Faster iteration times Reduces artist dependency on programmer
  • 11. Benefits of DDD for programmers Tighter, easier to maintain code Flat class hierarchy No artists bugging us!  Scott Shumaker, Outrage Games
  • 12. Elements that can be data-driven Level design/content Game object data/behaviour UI/localisation Game configuration
  • 13. How can data affect game behaviour? Data driven development goes nicely with a Component-based engine architecture Game Entities are just containers Data specify which components/functionality are required Scott Shumaker, Outrage Games
  • 14. Requirements of DDD Some form of data description Efficient and artist-friendly tools
  • 15. Levels of Data driven development #define ENEMY_KAMIKAZE_HP 20 void ApplyEnemyDamage(Enemy* enemy) { if (enemy->Type == ENEMY_KAMIKAZE) { enemy->Shield -= ENEMY_KAMIKAZE_HP; } }
  • 16. Levels of Data driven development File: EnemyHitPoints.txt ENEMY_KAMIKAZE_HP 20 ENEMY_KILLER_HP 10 ENEMY_BRUTE_HP 2 ENEMY_BOSS2_HP 2 … ..
  • 17. Levels of Data driven development File: EnemyDefinitions.xml <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Warrior&quot; texture=&quot;enemies_sheet.png&quot; shield=&quot;100&quot; speed=&quot;30&quot; weapon=&quot;Laser&quot; explosion=&quot;Muffled&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;0&quot; y=&quot;0&quot; w=&quot;32&quot; h=&quot;32&quot;></frame> <frame x=&quot;32&quot; y=&quot;0&quot; w=&quot;32&quot; h=&quot;32&quot; /> </frames> </enemy> <enemy type=&quot;Kamikaze&quot; texture=&quot;enemies_sheet.png&quot; shield=&quot;50&quot; speed=&quot;40&quot; weapon=&quot;&quot; explosion=&quot;Strong&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;0&quot; y=&quot;32&quot; w=&quot;32&quot; h=&quot;32&quot; /> <frame x=&quot;32&quot; y=&quot;32&quot; w=&quot;32&quot; h=&quot;32&quot; /> </frames> </enemy> </enemies> JSON is quite trendy too!
  • 18. Levels of Data driven development
  • 19. First taste of Data Driven Development At Rare we focused on the content pipeline a lot! Extensive framework built around Maya and the in-house game engine. The artist could fully customize assets in Maya One click asset deployment Enabled iterative development
  • 20. First taste of Data Driven Development Rare’s solution focused on data/game entity customization No game engine support for components/data driven behaviour Still, artist empowerment was huge!
  • 21. Space Debris by Rotten Fish Games Space Debris is a retro Space Shoot’em Up Designed for smartphones (iPhone and later Android) 15 multilayered levels in total, tens of enemies, lots of weapon/weapon upgrades, bonuses, animations etc We relied on a data-driven system to set all that up.
  • 22. Data-Driven system design Game Entity is a container for data/behaviour By default only supports transform/rendering Designer can add weapons, animations, sprite animations, bonuses, upgrades, sound effects, explosions etc externally Game stats are set externally as well
  • 23. Hierarchical structure of XML files Level.xml spritesheets.xml animations.xml spawners.xml bonuses.xml enemies.xml explosions.xml
  • 24. Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <stages> <stage name=&quot;stage1&quot; spritesheets=&quot;spritesheets.xml&quot; enemies = &quot;enemies.xml&quot; spawners = &quot;spawners.xml&quot; weapons = &quot;weapons.xml&quot; animations = &quot;animations.xml&quot; bonuses = &quot;bonuses.xml&quot; explosions = &quot;explosions.xml&quot; > <levels> <level name= &quot;s1level1&quot; file= &quot;tilemap_s1l1.tmx&quot; music = &quot;STAGE1_LEVEL_1.mp3&quot;> </level> <level name= &quot;s1level2&quot; file= &quot;tilemap_s1l2.tmx&quot; music = &quot;STAGE1_LEVEL_2.mp3&quot;> </level> </levels> </stage> </stages> Enemy definitions Bonus definitions Level tilemap
  • 25. Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <spawners> <spawner type=&quot;S1LNKamikazeeHunterChase&quot; enemytype=&quot;Kamikazee_Hunter&quot; spawn=&quot;Chase&quot; animation=“ ZigZag&quot; number=&quot;6&quot; rate=&quot;2&quot; bonus=&quot;Invisibility&quot;> </spawner> </spawners> <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Kamikazee_Hunter&quot;> <parts> <part sprite=&quot;alien_kamikazee_hunter“ shield=&quot;1&quot; weapon=&quot;EnemyKamikazee1&quot; explosion=&quot;MediumExplosion&quot;> </part> </parts> </enemy> </enemies> <?xml version=&quot;1.0&quot;?> <spritesheets> <spritesheet name=&quot;spritesheet_normal.png&quot;> <sprite name=&quot;alien_kamikazee_hunter&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;432&quot; y=&quot;96&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> <frame x=&quot;0&quot; y=&quot;144&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> </frames> </sprite> </spritesheet> </spritesheets> <?xml version=&quot;1.0&quot;?> <animations> <animation name=&quot;SPath&quot; type=&quot;Bezier&quot; track=&quot;Player&quot;> <parts count=“3&quot;> <part p0=&quot;0 0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> <part p0=&quot;0 0&quot; p1=&quot;-1 0&quot; p2=&quot;-1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> <part p0=&quot;0 0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> </parts> </animation> </animations>
  • 26. Sample XML definitions layout <?xml version=&quot;1.0&quot;?> <spawners> <spawner type=&quot;S1LNKamikazeeHunterChase&quot; enemytype=&quot;Kamikazee_Hunter&quot; spawn=&quot;Chase&quot; animation=“ SPath&quot; number=&quot;6&quot; rate=&quot;2&quot; bonus=&quot;Invisibility&quot;> </spawner> </spawners> <?xml version=&quot;1.0&quot;?> <enemies> <enemy type=&quot;Kamikazee_Hunter&quot;> <parts> <part sprite=&quot;alien_kamikazee_hunter“ shield=&quot;1&quot; weapon=&quot;EnemyKamikazee1&quot; explosion=&quot;MediumExplosion&quot;> </part> </parts> </enemy> </enemies> <?xml version=&quot;1.0&quot;?> <spritesheets> <spritesheet name=&quot;spritesheet_normal.png&quot;> <sprite name=&quot;alien_kamikazee_hunter&quot;> <frames interval=&quot;0.3&quot;> <frame x=&quot;432&quot; y=&quot;96&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> <frame x=&quot;0&quot; y=&quot;144&quot; w=&quot;48&quot; h=&quot;48&quot;></frame> </frames> </sprite> </spritesheet> </spritesheets> <?xml version=&quot;1.0&quot;?> <animations> <animation name=&quot;SPath&quot; type=&quot;Bezier&quot; track=&quot;Player&quot;> <parts count=“3&quot;> <part p0=&quot;0 0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> <part p0=&quot;0 0&quot; p1=&quot;-1 0&quot; p2=&quot;-1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> <part p0=&quot;0 0&quot; p1=&quot;1 0&quot; p2=&quot;1 -0.25&quot; p3=&quot;0 -0.25&quot; duration=&quot;3&quot;></part> </parts> </animation> </animations>
  • 29. Experiences from the DD system Programmer becomes obsolete!  Designer can iterate level design faster Easier for the team to work remotely Cleaner code, almost flat Class hierarchy
  • 30. A few weaknesses Some initial coding overhead We should have used a visual editor XML files not artist friendly enough Tiled editor was a halfway solution
  • 31. Let’s wrap it up! DDD can benefit even small teams Content decoupling and iteration are important Some coding overhead, usually acceptable Need good tools to exploit DDD fully Give power to the artist to express herself!
  • 32. Thank you for listening! Kostas Anagnostou [email_address]