SlideShare a Scribd company logo
1 of 19
Download to read offline
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

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
 
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 Games
we20
 
Lua in games
Lua in gamesLua in games
Lua in games
Son Aris
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
Jeremy Coates
 

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

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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)
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
[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
 

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