SlideShare a Scribd company logo
Improving Iteration Times Through The Reloading of
Code and Data
Boyan Spassov
Overview
Short talk on the virtues of reloading, hot-swapping, exploratory
programming, live editing and not waiting for the compiler
https://xkcd.com/303/
How not to
improve
iteration times
How context
switching affects
productivity
Topics
Reloading code
Reloading data
In-engine live editing
APIs, Component systems and other ways to improve iteration times
Who am I
Game programmer at Gameloft for 2.5 years
Games I have worked on: World at Arms
Why reload code and data
Why reload code and data
More time to try stuff
More time to explore
Inspirational (and useful) tools:
REPLs: Lisp, Python, Lua
IPython notebook: code, documentation, output and history all in the
same place
http://ipython.org/notebook.html
http://jupyter.org/
Shadertoy
https://www.shadertoy.com/
Online compilers/playgrounds/assemblers
https://gcc.godbolt.org/ - online compiler that outputs pretty assembly
https://jsfiddle.net/
How to reload code and data
Reloading Code
Reloading Code
Use Unreal, Unity, etc.
Reloading C/C++
Reloading Scripting languages
Reloading C/C++
Casey Muratori’s Handmade Hero
https://www.youtube.com/watch?v=WMSBRk5WG58
Especially the video Looped Live Code Editing
https://www.youtube.com/watch?v=xrUSrVvB21c
Molecular Matters blog
http://blog.molecular-matters.com/2014/05/10/using-runtime-
compiled-c-code-as-a-scripting-language-under-the-hood/
RuntimeCompiledC++ http://runtimecompiledcplusplus.blogspot.bg/
Bitsquid’s Cutting the Pipe talk from GDC 2012
https://github.com/niklasfrykholm/blog/tree/master/presentations
Reloading Scripting languages
E.g.: Lua
Generally easier
But can get complicated depending on your data and function bindings
(please don’t use luabind)
Reloading Server code
E.g. Python (beware)
Languages designed for hot-swapping (Erlang, maybe Common Lisp,
maybe others?)
Serialize, Shutdown, Restart
Fixing bugs in production
Reloading Data
Reloading Data
Use Unreal, Unity, etc.
Custom solutions depend on the data: materials, models, textures,
game logic, settings, ui
During development or on a live game
DLC
Game settings (especially how to resolve conflicting changes)
Fixing bugs which were caught too late
Insomniac games patching Ratchet and Clank: Up Your Arsenal via a
buffer overrun in the EULA
http://gamasutra.com/view/feature/194772/dirty_game_develop-
ment_tricks.php
Next level
Next level: In-engine live editing
UI
Levels
Object settings / logic
Live prototyping
Collaborative editing
What happens when the engine/game is broken/won’t start?
Version control
Other stuff which can help improve iteration times
Good and versatile APIs
Another talk by Casey Muratori: Designing and Evaluating Reusable
Components http://mollyrocket.com/casey/stream_0028.html
Entity Component systems
Shorter compilation times
Determinism, recording & playback
Awesome but hard and not always possible

More Related Content

Similar to Improving iteration times through the reloading of code and data

TestUpload
TestUploadTestUpload
TestUpload
ZarksaDS
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
Johan Andersson
 
Chapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technologyChapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technology
BATMUNHMUNHZAYA
 
Less code More fun
Less code More funLess code More fun
Less code More fun
Amos Laber
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
arun.arwachin
 
Synapseindia dot net development about programming
Synapseindia dot net development about programmingSynapseindia dot net development about programming
Synapseindia dot net development about programming
Synapseindiappsdevelopment
 
Season 7 Episode 1 - Tools for Data Scientists
Season 7 Episode 1 - Tools for Data ScientistsSeason 7 Episode 1 - Tools for Data Scientists
Season 7 Episode 1 - Tools for Data Scientists
aspyker
 
X page developer
X page developerX page developer
X page developer
Jakob Majkilde
 
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docxPhase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
randymartin91030
 
Lua in Games
Lua in GamesLua in Games
Lua in Gameswe20
 
Lua in games
Lua in gamesLua in games
Lua in gamesSon Aris
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
Jeremy Coates
 
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionistDEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
Felipe Prado
 
Introduction to html5 game programming with impact js
Introduction to html5 game programming with impact jsIntroduction to html5 game programming with impact js
Introduction to html5 game programming with impact js
Luca Galli
 
SynapseIndia dotnet debugging development process
SynapseIndia dotnet debugging development processSynapseIndia dotnet debugging development process
SynapseIndia dotnet debugging development process
Synapseindiappsdevelopment
 
Making Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to UseMaking Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to Use
Kazuaki Ishizaki
 
Introduction to Google Colaboratory.pdf
Introduction to Google Colaboratory.pdfIntroduction to Google Colaboratory.pdf
Introduction to Google Colaboratory.pdf
Yomna Mahmoud Ibrahim Hassan
 
OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
OGDC2012 Lua In Game_Mr. Van, Nguyen NgocOGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
Buff Nguyen
 

Similar to Improving iteration times through the reloading of code and data (20)

TestUpload
TestUploadTestUpload
TestUpload
 
RResume
RResumeRResume
RResume
 
Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)Parallel Futures of a Game Engine (v2.0)
Parallel Futures of a Game Engine (v2.0)
 
Chapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technologyChapter 1 computer abstractions and technology
Chapter 1 computer abstractions and technology
 
Less code More fun
Less code More funLess code More fun
Less code More fun
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
 
Synapseindia dot net development about programming
Synapseindia dot net development about programmingSynapseindia dot net development about programming
Synapseindia dot net development about programming
 
Season 7 Episode 1 - Tools for Data Scientists
Season 7 Episode 1 - Tools for Data ScientistsSeason 7 Episode 1 - Tools for Data Scientists
Season 7 Episode 1 - Tools for Data Scientists
 
X page developer
X page developerX page developer
X page developer
 
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docxPhase 1 Software Progress ReportCard Czar Android AppCMS.docx
Phase 1 Software Progress ReportCard Czar Android AppCMS.docx
 
Lua in Games
Lua in GamesLua in Games
Lua in Games
 
Lua in games
Lua in gamesLua in games
Lua in games
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
 
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionistDEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
 
Introduction to html5 game programming with impact js
Introduction to html5 game programming with impact jsIntroduction to html5 game programming with impact js
Introduction to html5 game programming with impact js
 
SynapseIndia dotnet debugging development process
SynapseIndia dotnet debugging development processSynapseIndia dotnet debugging development process
SynapseIndia dotnet debugging development process
 
CISY 105 Chapter 1
CISY 105 Chapter 1CISY 105 Chapter 1
CISY 105 Chapter 1
 
Making Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to UseMaking Hardware Accelerator Easier to Use
Making Hardware Accelerator Easier to Use
 
Introduction to Google Colaboratory.pdf
Introduction to Google Colaboratory.pdfIntroduction to Google Colaboratory.pdf
Introduction to Google Colaboratory.pdf
 
OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
OGDC2012 Lua In Game_Mr. Van, Nguyen NgocOGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
OGDC2012 Lua In Game_Mr. Van, Nguyen Ngoc
 

Recently uploaded

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 

Recently uploaded (20)

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 

Improving iteration times through the reloading of code and data

  • 1. Improving Iteration Times Through The Reloading of Code and Data Boyan Spassov
  • 2. Overview Short talk on the virtues of reloading, hot-swapping, exploratory programming, live editing and not waiting for the compiler
  • 5. Topics Reloading code Reloading data In-engine live editing APIs, Component systems and other ways to improve iteration times
  • 6. Who am I Game programmer at Gameloft for 2.5 years Games I have worked on: World at Arms
  • 7. Why reload code and data
  • 8. Why reload code and data More time to try stuff More time to explore Inspirational (and useful) tools: REPLs: Lisp, Python, Lua IPython notebook: code, documentation, output and history all in the same place http://ipython.org/notebook.html http://jupyter.org/ Shadertoy https://www.shadertoy.com/ Online compilers/playgrounds/assemblers https://gcc.godbolt.org/ - online compiler that outputs pretty assembly https://jsfiddle.net/
  • 9. How to reload code and data
  • 11. Reloading Code Use Unreal, Unity, etc. Reloading C/C++ Reloading Scripting languages
  • 12. Reloading C/C++ Casey Muratori’s Handmade Hero https://www.youtube.com/watch?v=WMSBRk5WG58 Especially the video Looped Live Code Editing https://www.youtube.com/watch?v=xrUSrVvB21c Molecular Matters blog http://blog.molecular-matters.com/2014/05/10/using-runtime- compiled-c-code-as-a-scripting-language-under-the-hood/ RuntimeCompiledC++ http://runtimecompiledcplusplus.blogspot.bg/ Bitsquid’s Cutting the Pipe talk from GDC 2012 https://github.com/niklasfrykholm/blog/tree/master/presentations
  • 13. Reloading Scripting languages E.g.: Lua Generally easier But can get complicated depending on your data and function bindings (please don’t use luabind)
  • 14. Reloading Server code E.g. Python (beware) Languages designed for hot-swapping (Erlang, maybe Common Lisp, maybe others?) Serialize, Shutdown, Restart Fixing bugs in production
  • 16. Reloading Data Use Unreal, Unity, etc. Custom solutions depend on the data: materials, models, textures, game logic, settings, ui During development or on a live game DLC Game settings (especially how to resolve conflicting changes) Fixing bugs which were caught too late Insomniac games patching Ratchet and Clank: Up Your Arsenal via a buffer overrun in the EULA http://gamasutra.com/view/feature/194772/dirty_game_develop- ment_tricks.php
  • 18. Next level: In-engine live editing UI Levels Object settings / logic Live prototyping Collaborative editing What happens when the engine/game is broken/won’t start? Version control
  • 19. Other stuff which can help improve iteration times Good and versatile APIs Another talk by Casey Muratori: Designing and Evaluating Reusable Components http://mollyrocket.com/casey/stream_0028.html Entity Component systems Shorter compilation times Determinism, recording & playback Awesome but hard and not always possible