SlideShare a Scribd company logo
RPG COMBAT KATA
@SuuiGD
DOMAIN
• For the scope of this kata, the player won’t be running around and doing stuff. The
features implemented in each iteration will be limited to the framework that the
game may use in the future.
• It is centered on the characters combat skills which are basically damaging and
healing.
• You may fix a time limit for each iteration as a constraint.
PREPARATION (10 MIN)
• Find a pair
• Choose a language
• Setup your environment
ITERATION 1
• Characters have:
• Health, starting at 1000.
• Level, starting at 1.
• Characters are:
• Dead or alive.
• Characters can:
• Deal damage.
• Heal.
• Conditions:
• When the damage received is higher
than the actual health, health drops to 0
and the character dies.
• When the character is dead, he cannot
be healed.
• The character cannot be healed over
1000 health.
ITERATION 2
• The player can deal damage to his enemies, but not to himself.
• The player can heal himself, but not his enemies.
• The level now has an effect on the damage applied.
• If the target is 5 or more levels above the player, the damage applied will be reduced by
50%.
• If the target is 5 or more levels below the player, the damage applied will be boosted by
50%.
ITERATION 3
• The player has an attack range.
• If he is a melee fighter, his range will be 2 meters.
• If he is a ranged fighter, his range will be 20 meters.
• When trying to deal damage, the player must be in range.
RETROSPECTIVE (10 MIN)
• Are you keeping up with the requirements?
• Do you feel good about your design, is it scalable and easily adapted to the new
requirements that will be introduced in the last iterations?
• Is everything tested and are you confident in your tests?
ITERATION 4
• We now have factions.
• One player may join or leave one or more factions.
• Players of the same faction are allies
• They can’t damage each other
• They can heal each other.
ITERATION 5
• Finally, the player can damage other things that are not characters (props). This
means that he can attack a house, a tree or anything else that has some health.
• Those things cannot heal nor be healed and cannot deal damage.
• They belong to no faction, as they are neutral things.
• You may setup a house starting with 2000 health.
FINAL RETROSPECTIVE
• What problems did you encounter?
• What have you learned?
• Debate on the different ways to possibly solve the kata!

More Related Content

What's hot

Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
Doncho Minkov
 

What's hot (20)

Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Interface in java
Interface in javaInterface in java
Interface in java
 
How to Convert a Component Design into an MUI React Code
How to Convert a Component Design into an MUI React CodeHow to Convert a Component Design into an MUI React Code
How to Convert a Component Design into an MUI React Code
 
JDBC: java DataBase connectivity
JDBC: java DataBase connectivityJDBC: java DataBase connectivity
JDBC: java DataBase connectivity
 
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022
 
Domain Driven Design: Zero to Hero
Domain Driven Design: Zero to HeroDomain Driven Design: Zero to Hero
Domain Driven Design: Zero to Hero
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Flutter
FlutterFlutter
Flutter
 
Jdbc architecture and driver types ppt
Jdbc architecture and driver types pptJdbc architecture and driver types ppt
Jdbc architecture and driver types ppt
 
Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014Crafted Design - ITAKE 2014
Crafted Design - ITAKE 2014
 
Flutter beyond hello world
Flutter beyond hello worldFlutter beyond hello world
Flutter beyond hello world
 
Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
MySQL Cheat Sheet
MySQL Cheat SheetMySQL Cheat Sheet
MySQL Cheat Sheet
 
Dart programming language
Dart programming languageDart programming language
Dart programming language
 
Introduction to spring boot
Introduction to spring bootIntroduction to spring boot
Introduction to spring boot
 
Arrays in Java
Arrays in Java Arrays in Java
Arrays in Java
 
Classpath
ClasspathClasspath
Classpath
 
Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)
Java Database Connectivity (JDBC)
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
 

Viewers also liked

CompletableFuture
CompletableFutureCompletableFuture
CompletableFuture
koji lin
 
Introduction to Functional Reactive Programming
Introduction to Functional Reactive ProgrammingIntroduction to Functional Reactive Programming
Introduction to Functional Reactive Programming
Edward Amsden
 

Viewers also liked (17)

CompletableFuture
CompletableFutureCompletableFuture
CompletableFuture
 
Functional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix APIFunctional Reactive Programming in the Netflix API
Functional Reactive Programming in the Netflix API
 
Asynchronous Processing in Java/JEE/Spring
Asynchronous Processing in Java/JEE/SpringAsynchronous Processing in Java/JEE/Spring
Asynchronous Processing in Java/JEE/Spring
 
Perspectives Volume 4
Perspectives Volume 4Perspectives Volume 4
Perspectives Volume 4
 
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven SystemsGo Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
Go Reactive: Building Responsive, Resilient, Elastic & Message-Driven Systems
 
Java 8 Streams
Java 8 StreamsJava 8 Streams
Java 8 Streams
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
 
Reactive design: languages, and paradigms
Reactive design: languages, and paradigmsReactive design: languages, and paradigms
Reactive design: languages, and paradigms
 
API Asynchrones en Java 8
API Asynchrones en Java 8API Asynchrones en Java 8
API Asynchrones en Java 8
 
Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)Building Reactive Systems with Akka (in Java 8 or Scala)
Building Reactive Systems with Akka (in Java 8 or Scala)
 
Introducing Akka
Introducing AkkaIntroducing Akka
Introducing Akka
 
Reactive programming with examples
Reactive programming with examplesReactive programming with examples
Reactive programming with examples
 
Introduction to Functional Reactive Programming
Introduction to Functional Reactive ProgrammingIntroduction to Functional Reactive Programming
Introduction to Functional Reactive Programming
 
Reactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-JavaReactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-Java
 
Intro to Reactive Programming
Intro to Reactive ProgrammingIntro to Reactive Programming
Intro to Reactive Programming
 
Java SE 8 best practices
Java SE 8 best practicesJava SE 8 best practices
Java SE 8 best practices
 
Introduction to Reactive Java
Introduction to Reactive JavaIntroduction to Reactive Java
Introduction to Reactive Java
 

Recently uploaded

Recently uploaded (20)

Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
SOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBrokerSOCRadar Research Team: Latest Activities of IntelBroker
SOCRadar Research Team: Latest Activities of IntelBroker
 
Agnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in KrakówAgnieszka Andrzejewska - BIM School Course in Kraków
Agnieszka Andrzejewska - BIM School Course in Kraków
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 

RPG Combat Kata

  • 2. DOMAIN • For the scope of this kata, the player won’t be running around and doing stuff. The features implemented in each iteration will be limited to the framework that the game may use in the future. • It is centered on the characters combat skills which are basically damaging and healing. • You may fix a time limit for each iteration as a constraint.
  • 3. PREPARATION (10 MIN) • Find a pair • Choose a language • Setup your environment
  • 4. ITERATION 1 • Characters have: • Health, starting at 1000. • Level, starting at 1. • Characters are: • Dead or alive. • Characters can: • Deal damage. • Heal. • Conditions: • When the damage received is higher than the actual health, health drops to 0 and the character dies. • When the character is dead, he cannot be healed. • The character cannot be healed over 1000 health.
  • 5. ITERATION 2 • The player can deal damage to his enemies, but not to himself. • The player can heal himself, but not his enemies. • The level now has an effect on the damage applied. • If the target is 5 or more levels above the player, the damage applied will be reduced by 50%. • If the target is 5 or more levels below the player, the damage applied will be boosted by 50%.
  • 6. ITERATION 3 • The player has an attack range. • If he is a melee fighter, his range will be 2 meters. • If he is a ranged fighter, his range will be 20 meters. • When trying to deal damage, the player must be in range.
  • 7. RETROSPECTIVE (10 MIN) • Are you keeping up with the requirements? • Do you feel good about your design, is it scalable and easily adapted to the new requirements that will be introduced in the last iterations? • Is everything tested and are you confident in your tests?
  • 8. ITERATION 4 • We now have factions. • One player may join or leave one or more factions. • Players of the same faction are allies • They can’t damage each other • They can heal each other.
  • 9. ITERATION 5 • Finally, the player can damage other things that are not characters (props). This means that he can attack a house, a tree or anything else that has some health. • Those things cannot heal nor be healed and cannot deal damage. • They belong to no faction, as they are neutral things. • You may setup a house starting with 2000 health.
  • 10. FINAL RETROSPECTIVE • What problems did you encounter? • What have you learned? • Debate on the different ways to possibly solve the kata!