SlideShare une entreprise Scribd logo
1  sur  102
Minecraft and Scala:
Creating a DSL to enable Kids
to Create Mods
Paulo “Jcranky” Siqueira
Paulo.siqueira@gmail.com / @jcranky
@JCranky
Who am I ?
Developer
(Scala, Java)
@JCranky
Who am I ?
Gamer
Minecraft
and Other Indie Games
@JCranky
Who am I ?
Musician
Wannabe!
@JCranky
Who I work for
TecSinapse
Car Dealers
Research and Innovation
@JCranky
Anytime!
@JCranky
Setting the Scene
What is Minecraft
What Are Minecraft Mods
What Are Kids
@JCranky
Then...
Easyforger: the DSL
Pending challenges
summary
@JCranky
What is Minecraft
Open World Game
DO ...
… Whatever
@JCranky
What is Minecraft
Single Player
multiplayer
@JCranky
What is Minecraft
Client – Server
Architecture
Written in Java
… go figure
@JCranky
Single Player
Internal Server
Very performatic
(unless recording or on a bad/old machine)
Starting a new Game
Barbecue Machine
@JCranky
Multi player
Client: Player Machine
Server: Anywhere,
Holds the Business Logic
Craftbot Server
Some Multi Player fight
@JCranky
What are Mods
Minecraft:
@JCranky
What are Mods
Community Mods to the rescue!
@JCranky
What are Mods
No Official Api
(Being developed for a While...)
… in theory
@JCranky
What are Mods
Community to Rescue (again)!
Client-Server API Mapping
Minecraft CODE Decompilation
@JCranky
Decompilation
Easy: Its Java!
Quite unpleasant Identifiers
though...
Identifiers ...
@JCranky
Modding Alternatives
Server-Side Modifications
(aka server plugins)
Client Mods
(which also goes on the server...)
@JCranky
Server Plugins
Several Options
(all including said SERVER API Mapping)
Bukkit
Canary
Spigotmc
etc
a mini-Game Server
Chicken Shooter
@JCranky
Good!
Any client can join
Nothing to be Installed
@JCranky
Bad!
Can't add new Stuff
(Blocks, Entities etc)
Just change/Control what's already
there
@JCranky
Client Mods: Forge
Minecraft Forge
Main (only?) option
Already includes the Decompilation
(part of the build setup)
@JCranky
Demo: the difference
A Normal Client
A Minecraft Forge Client
@JCranky
Good!
Can do just about anything
@JCranky
Bad!
For multi Player...
Mods have To be installed in the
server as well
@JCranky
Bad!
The installation can be complex
@JCranky
Bad - instalation
No standards
Jar jugling
PixelMon Craft
Mad pack
@JCranky
Kids!
Devoxx4Kids
TDC4Kids
TDC4Kids - FLoripa
@JCranky
But How?
Pre-configured eclipse
With forge and MCP
@JCranky
But How?
Kids modify something and
Run the game from the IDE
@JCranky
But How?
Sounds simple enough ...
@JCranky
All well...
But lets do better!
@JCranky
Why not...
Scala?
Its the JVM After all!
From chicken-Shooter
@JCranky
Better, but...
Simplify!
Kids
Any beginner, Really
@JCranky
A Dsl !
That's Exactly
what DSLs Are good for!
@JCranky
Quickly: DSL Types
Internal: Written and interpreted in
the laNguage
@JCranky
Quickly: DSL Types
External:
uses parsers and other tools
syntax freedom
@JCranky
Our decision
Go internal!
Its simpler and Scala is amazing for
that!
@JCranky
Our decision
5 minutes
(from scala.concurrent.duration)
@JCranky
Our decision
Auto complete from IDEs is
available out of the box
@JCranky
Enter EasyForger
A DSL for writing
minecraft Mods
(on top of minecraft forge)
@JCranky
Enter EasyForger
Supports simple modifications
(with lots more to come!)
@JCranky
Next, lets see:
What can it do?
How is it done?
@JCranky
Creature Item Drops
demo
@JCranky
New Furnace Recipes
Demo
@JCranky
New Crafting Recipes
Demo
@JCranky
New Crafting Recipes
(shaped)
Demo
@JCranky
Creeper Explosion Radius
Demo
@JCranky
Creature Held Item
Demo
@JCranky
How?
Lots and Lots of Experimentation
Target: what “feels right”?
@JCranky
How?
Write what I want
Implement and make it work
@JCranky
How?
Always: auto complete
Must work
@JCranky
Implementation
Guess what...
Lots of implicits!
@JCranky
Implementation
Small methods
Case classes and use of copy
@JCranky
Implementation
Demo Code:
RichItemStack and Friends
@JCranky
implementation
??? helps a lot
@JCranky
The sin
Hard to avoid some side effects
@JCranky
Where are we?
Not tested in the field yet
=(
@JCranky
Where are We?
Target:
make it really easy!
@JCranky
Where are We?
Tried Last October
Environment not ready
@JCranky
Where are we?
Lots to do and fix
Help is welcome!
@JCranky
Problems and ideas
Setup
Macros
Mod Installation
@JCranky
Problems and ideas
Behavior mods
Auto Complete excess
@JCranky
Setup
Make it easy to setup!
No downloads if possible!
@JCranky
Setup
Minecraft Forge
Gradle Build does a Lot!
(plus lots of dependencies downloaded)
@JCranky
Setup
Ideally:
Single zip download
Usable offline
@JCranky
Macros
Perhaps good for
simpler constructs?
@JCranky
Macros
Don't forget about
Auto complete!
@JCranky
Mod Installation Process
EasyForger
is a mod itself
@JCranky
Mod Installation Process
Separate that
and perhaps solve the setup problem...
@JCranky
Custom Behavior support
Experimental
Not happy with the DSL yet
@JCranky
Custom skeleton behavior
Code: Custom Skeleton
@JCranky
Auto Complete Excess
Predef (etc) stuff is useless
In the auto complete box
(for the dsl)
@JCranky
Auto Complete Excess
Confusing for beginners
@JCranky
In time...
Why only kids?
@JCranky
In time...
Why only beginners?
In time...
@JCranky
summary
Minecraft == fun
@JCranky
Modding minecraft == fun.2
@JCranky
Enabling kids to do it
==
Fun.3
@JCranky
Creating the DSL
==
Fun.4
@JCranky
Links
Easyforger.com
Github.com/jcranky/easyforger
Twitter.com/easyforger
Twitter.com/jcranky
@JCranky
acks
_underscore
For the support
@JCranky
Acks
TecSinapse
For allowing me to come
(even though I just started there ;))
@JCranky
Acks
You!
For listening...
And for future contributions! ;)
@JCranky
Questions ?!
Throw them at me!
If it pleases you...
Paulo “Jcranky” Siqueira
Paulo.siqueira@gmail.com / @jcranky

Contenu connexe

En vedette

30 seconds to mars
30 seconds to mars30 seconds to mars
30 seconds to mars
Zairapm8
 
Fotos formatura gi_1
Fotos formatura gi_1Fotos formatura gi_1
Fotos formatura gi_1
Edson Paiva
 
Brandi Chavez Resume New
Brandi Chavez Resume NewBrandi Chavez Resume New
Brandi Chavez Resume New
Brandi Chavez
 

En vedette (15)

Portfolio
PortfolioPortfolio
Portfolio
 
Leishmaniasis
LeishmaniasisLeishmaniasis
Leishmaniasis
 
SEA Fundraising Workshop - Sarah Steward
SEA Fundraising Workshop - Sarah StewardSEA Fundraising Workshop - Sarah Steward
SEA Fundraising Workshop - Sarah Steward
 
30 seconds to mars
30 seconds to mars30 seconds to mars
30 seconds to mars
 
Fotos formatura gi_1
Fotos formatura gi_1Fotos formatura gi_1
Fotos formatura gi_1
 
Tree Advancement Patterns
Tree Advancement PatternsTree Advancement Patterns
Tree Advancement Patterns
 
Deutsche Wolke Präsentation 100114
Deutsche Wolke Präsentation 100114Deutsche Wolke Präsentation 100114
Deutsche Wolke Präsentation 100114
 
How to win more sales with less effort
How to win more sales with less effortHow to win more sales with less effort
How to win more sales with less effort
 
How to network with busy people
How to network with busy peopleHow to network with busy people
How to network with busy people
 
30 Seconds to Mars
30 Seconds to Mars30 Seconds to Mars
30 Seconds to Mars
 
Index 2 html taller informatica 904
Index 2 html taller informatica 904 Index 2 html taller informatica 904
Index 2 html taller informatica 904
 
Yubi Juragan: Program Reseller Dari YukBisnis
Yubi Juragan: Program Reseller Dari YukBisnisYubi Juragan: Program Reseller Dari YukBisnis
Yubi Juragan: Program Reseller Dari YukBisnis
 
Food poisioning, infection and diseases
Food poisioning, infection and diseasesFood poisioning, infection and diseases
Food poisioning, infection and diseases
 
Fish borne parasitic zoonoses
Fish borne parasitic zoonosesFish borne parasitic zoonoses
Fish borne parasitic zoonoses
 
Brandi Chavez Resume New
Brandi Chavez Resume NewBrandi Chavez Resume New
Brandi Chavez Resume New
 

Similaire à Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods

Similaire à Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods (20)

Adobemax2009na
Adobemax2009naAdobemax2009na
Adobemax2009na
 
Intro to STEM for Girls: Using JavaScript to Mod Minecraft
Intro to STEM for Girls: Using JavaScript to Mod MinecraftIntro to STEM for Girls: Using JavaScript to Mod Minecraft
Intro to STEM for Girls: Using JavaScript to Mod Minecraft
 
Learning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter RetrospectiveLearning to Mod Minecraft: A Father/Daughter Retrospective
Learning to Mod Minecraft: A Father/Daughter Retrospective
 
Migrating Web SDK from JS to TS
Migrating Web SDK from JS to TSMigrating Web SDK from JS to TS
Migrating Web SDK from JS to TS
 
JCON - The Battle of the IDEs
JCON - The Battle of the IDEsJCON - The Battle of the IDEs
JCON - The Battle of the IDEs
 
What does OOP stand for?
What does OOP stand for?What does OOP stand for?
What does OOP stand for?
 
Functional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupFunctional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User Group
 
Introduction to Minecraft Modding at YaJUG
Introduction to Minecraft Modding at YaJUGIntroduction to Minecraft Modding at YaJUG
Introduction to Minecraft Modding at YaJUG
 
Realtime selenium interview questions
Realtime selenium interview questionsRealtime selenium interview questions
Realtime selenium interview questions
 
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil TayarCypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
Cypress vs Selenium WebDriver: Better, Or Just Different? -- by Gil Tayar
 
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
Live Typing- Automatic Type Annotation that improves the Programming eXperie...Live Typing- Automatic Type Annotation that improves the Programming eXperie...
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
 
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
05092019 The Battle of the IDEs by Ko Turk at the AlmereJUG / Conspect
 
JVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEsJVM Conference - The Battle of the IDEs
JVM Conference - The Battle of the IDEs
 
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
Load testing, Lessons learnt and Loadzen - Martin Buhr at DevTank - 31st Janu...
 
Fun and Games with the Full-Stack Jamstack (KCDC 2022).pdf
Fun and Games with the Full-Stack Jamstack (KCDC 2022).pdfFun and Games with the Full-Stack Jamstack (KCDC 2022).pdf
Fun and Games with the Full-Stack Jamstack (KCDC 2022).pdf
 
Extreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software CraftsmanshipExtreme Professionalism - Software Craftsmanship
Extreme Professionalism - Software Craftsmanship
 
Clean Code with Java 8 - Functional Patterns and Best Practices
Clean Code with Java 8 - Functional Patterns and Best PracticesClean Code with Java 8 - Functional Patterns and Best Practices
Clean Code with Java 8 - Functional Patterns and Best Practices
 
Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...Cards n Castles: Merging card game and city building game into one, developer...
Cards n Castles: Merging card game and city building game into one, developer...
 
Gamedev-grade debugging
Gamedev-grade debuggingGamedev-grade debugging
Gamedev-grade debugging
 
My summary for cs001x computer science for beginners
My summary for cs001x computer science for beginnersMy summary for cs001x computer science for beginners
My summary for cs001x computer science for beginners
 

Plus de Paulo Siqueira

Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de Atores
Paulo Siqueira
 

Plus de Paulo Siqueira (7)

Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...
Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...
Como a Carjump usa Scala para revolucionar o mercado de Compartilhamento de c...
 
Desvendando o sistema de tipos do scala
Desvendando o sistema de tipos do scalaDesvendando o sistema de tipos do scala
Desvendando o sistema de tipos do scala
 
Minecraft Modding e Scala
Minecraft Modding e ScalaMinecraft Modding e Scala
Minecraft Modding e Scala
 
Minecraft Modding: Um Jogo que vira Muitos!
 Minecraft Modding: Um Jogo que vira Muitos! Minecraft Modding: Um Jogo que vira Muitos!
Minecraft Modding: Um Jogo que vira Muitos!
 
Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2Atendendo Milhares de Requisições com o Play Framework 2 - v2
Atendendo Milhares de Requisições com o Play Framework 2 - v2
 
Entendendo o Modelo de Atores
Entendendo o Modelo de AtoresEntendendo o Modelo de Atores
Entendendo o Modelo de Atores
 
Akka no Just Java 2012
Akka no Just Java 2012Akka no Just Java 2012
Akka no Just Java 2012
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Minecraft and Scala: Creating a DSL to enable kids to create Minecraft Mods