SlideShare a Scribd company logo
Castle Game Engine
Michalis Kamburelis
and the joy
of making and using a custom game engine
The Plan is to tell 2 things
1. Why
● And what decisions we made
● And which decisions were good
2. Presentation of the engine
● Download it and try yourself
● It is actually used to make production games (on Steam, Android, iOS, Nintendo Switch)
https:/
/castle-engine.io
Live demo of the engine
Viewport, physics, shadows
glTF, PBR, animations, cameras,
behaviors, designs
2D, Spine animations, sprite
sheets
Code, just access components
and use their methods/properties
Why and how
Why
1. Open-source game engine (100% open-source, including tooling,
support etc.)
2. Choose one good language for both engine and games
3. Use open standards for data formats, i.e. 2D and 3D graphics
● Long long time ago: What Blender supports as export?
○ -> A lot of limited formats
○ -> And this cool thing called VRML 1.0
○ It has a spec. I can implement it just as well as anyone else.
○ It has real hope for tools around it. Because everyone, like me and
Blender, can read this spec.
○ Good (scalable) design. Someone (many someones!) thought
about future when designing it.
Decision: Use open standards for 3D and 2D
● The reasons for choosing open standards for 3D models have been
confirmed.
● Data standards are your most important dependency, because you cannot
change them easily, invest wisely into things that will continue to exist in the
future.
We focus on glTF and X3D now
X3D
● I did a few improvements
around X3D, e.g. for
"compositing shaders" (think
Unity surface shaders, but a
bit better :) ).
● I'm a Web3D member and
liaison Web3D <-> Khronos.
glTF
● Great design from Khronos
● Great set of features for
gamedevs (skinned animation,
PBR, efficiency…)
● Suitable to be read at runtime (no
need to transform meshes before
they are ready for runtime)
● Ecosystem of stuff around it, like
Blender support
Coming soon to Castle Game Engine
thanks to it:
● Build your 3D environment from
ready models on Sketchfab (they
do have API and can return glTF!)
Decision: Pascal
● Clean (type-safe) language
● Code engine and games in the same language (every user is contributor)
● Compiled to native code
● Higher-level language that scales - OOP, units, generics
● Cross-platform (desktop, mobile, WebAssembly)
● General purpose, so existing libraries for everything
○ database
○ xml, json
○ ai, blockchain
● Integration with any existing library with C API
○ any renderer, sound library, physics - we can use everything
Fast compilation
$ castle-engine cache # once after installation
$ cd castle-engine/examples/viewport_and_scenes/cars_demo/
$ castle-engine clean # build from scratch, like a new project
$ time castle-engine compile
...
real 0m2,513s
$ time castle-engine package --target=android # 32 and 64-bit devices
...
Build cars_demo-0.1-android-debug.apk
...
real 0m10,188s
Easy to pick up if you know any OOP language
https://castle-engine.io/modern_pascal
Automation rocks and it is free for open-source
GitHub Actions, GitLab CI - build your games using their free runners, just copy a "recipe" we prepared.
Cross-platform
● Desktop (Linux, Windows, macOS, FreeBSD...)
● Raspberry Pi too
● Mobile (Android iOS)
● Nintendo Switch
Coming soon:
● VR (Oculus Quest, using OpenXR)
● WebGL (FPC WebAssembly compiler is waiting!)
● XBox (we got a devkit)
Lessons learned (broader context)
Evangelizing your technology
Eye-opening: CoRecursive podcast #040: Tech Evangelism with Gabriel Gonzalez.
● Think about making the core of your thing small (start vertical) and make that core shine
● Think about your slogan/catchphrase/elevator pitch -- not because it's PR, because it is your
priority compass
Have fun while developing because it will take a long time.
Declarative is good
● Declarative API - "your things have properties and are inter-connected"
○ (vs "your things can act to do something").
● Declarative is simpler
● Declarative is serializable
● Declarative enables editing
● Declarative allows to change how it works easier (e.g. use a rendering technique that is multi-pass
or make batching)
● Pascal components and RTTI were designed from the ground-up for this: classes have properties
and an object inspector shows them and you can serialize them.
OpenGL(ES) still rocks
● We have lots of enticing alternatives - Vulkan, Direct3D, Metal.
● OpenGL(ES)-like API is the only API that really works everywhere, today.
○ (and where it doesn't there's Angle, MetalAngle etc.)
Controlling your technology
● Amazing when a big thing comes together.
● Big thing is not a one finished thing -- it is a tool that opens possibilities to make more things.
Thanks!
https:/
/castle-engine.io
michalis@castle-engine.io

More Related Content

Similar to Castle Game Engine and the joy of making and using a custom game engine

Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by Pixel
Thomas Gazzoni
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentDavid Galeano
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
Green Custard
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)
Slide_N
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
Chris Schalk
 
2D Game Development with Starling
2D Game Development with Starling2D Game Development with Starling
2D Game Development with Starling
Juwal Bose
 
Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)
Verold
 
LibGDX: Cross Platform Game Development
LibGDX: Cross Platform Game DevelopmentLibGDX: Cross Platform Game Development
LibGDX: Cross Platform Game Development
Intel® Software
 
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Ron Munitz
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
Karsten Wysk
 
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
Ron Munitz
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology aside
Leszek Godlewski
 
Drupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with DrupalDrupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with Drupal
Brian Hay
 
WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014Minko3D
 
ngGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and TokyongGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and Tokyonotolab
 
Advanced Video Production with FOSS
Advanced Video Production with FOSSAdvanced Video Production with FOSS
Advanced Video Production with FOSS
Kirk Kimmel
 
Enlightenment Foundation Libraries (Overview)
Enlightenment Foundation Libraries (Overview)Enlightenment Foundation Libraries (Overview)
Enlightenment Foundation Libraries (Overview)Samsung Open Source Group
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
Ramesh Nair
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game Engines
Pooya Eimandar
 
X86 ROM Cooking 101 (Android Builders Summit 2014)
X86 ROM Cooking 101 (Android Builders Summit 2014)X86 ROM Cooking 101 (Android Builders Summit 2014)
X86 ROM Cooking 101 (Android Builders Summit 2014)
Ron Munitz
 

Similar to Castle Game Engine and the joy of making and using a custom game engine (20)

Flutter - Pixel by Pixel
Flutter - Pixel by PixelFlutter - Pixel by Pixel
Flutter - Pixel by Pixel
 
mloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game developmentmloc.js 2014 - JavaScript and the browser as a platform for game development
mloc.js 2014 - JavaScript and the browser as a platform for game development
 
Green Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: FlutterGreen Custard Friday Talk 22: Flutter
Green Custard Friday Talk 22: Flutter
 
PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)PSGL (PlayStation Graphics Library)
PSGL (PlayStation Graphics Library)
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
 
2D Game Development with Starling
2D Game Development with Starling2D Game Development with Starling
2D Game Development with Starling
 
Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)Power of WebGL (FSTO 2014)
Power of WebGL (FSTO 2014)
 
LibGDX: Cross Platform Game Development
LibGDX: Cross Platform Game DevelopmentLibGDX: Cross Platform Game Development
LibGDX: Cross Platform Game Development
 
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
Android ROM cooking: A practical Tutorial (DroidCon Torino 2014)
 
Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011Delta Engine @ CeBit 2011
Delta Engine @ CeBit 2011
 
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
ROM Cooking: A Hands-on, "Do it at Home" Approach (Wearable DevCon 2014)
 
Linux as a gaming platform, ideology aside
Linux as a gaming platform, ideology asideLinux as a gaming platform, ideology aside
Linux as a gaming platform, ideology aside
 
Drupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with DrupalDrupal 3D - Intro to Using Web 3D with Drupal
Drupal 3D - Intro to Using Web 3D with Drupal
 
WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014WebGL games with Minko - Next Game Frontier 2014
WebGL games with Minko - Next Game Frontier 2014
 
ngGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and TokyongGoBuilder and collaborative development between San Francisco and Tokyo
ngGoBuilder and collaborative development between San Francisco and Tokyo
 
Advanced Video Production with FOSS
Advanced Video Production with FOSSAdvanced Video Production with FOSS
Advanced Video Production with FOSS
 
Enlightenment Foundation Libraries (Overview)
Enlightenment Foundation Libraries (Overview)Enlightenment Foundation Libraries (Overview)
Enlightenment Foundation Libraries (Overview)
 
Javascript Update May 2013
Javascript Update May 2013Javascript Update May 2013
Javascript Update May 2013
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game Engines
 
X86 ROM Cooking 101 (Android Builders Summit 2014)
X86 ROM Cooking 101 (Android Builders Summit 2014)X86 ROM Cooking 101 (Android Builders Summit 2014)
X86 ROM Cooking 101 (Android Builders Summit 2014)
 

Recently uploaded

Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
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
takuyayamamoto1800
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
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
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

Castle Game Engine and the joy of making and using a custom game engine

  • 1. Castle Game Engine Michalis Kamburelis and the joy of making and using a custom game engine
  • 2. The Plan is to tell 2 things 1. Why ● And what decisions we made ● And which decisions were good 2. Presentation of the engine ● Download it and try yourself ● It is actually used to make production games (on Steam, Android, iOS, Nintendo Switch) https:/ /castle-engine.io
  • 3. Live demo of the engine
  • 5.
  • 6. glTF, PBR, animations, cameras, behaviors, designs
  • 7.
  • 8. 2D, Spine animations, sprite sheets
  • 9.
  • 10. Code, just access components and use their methods/properties
  • 11.
  • 13. Why 1. Open-source game engine (100% open-source, including tooling, support etc.) 2. Choose one good language for both engine and games 3. Use open standards for data formats, i.e. 2D and 3D graphics
  • 14. ● Long long time ago: What Blender supports as export? ○ -> A lot of limited formats ○ -> And this cool thing called VRML 1.0 ○ It has a spec. I can implement it just as well as anyone else. ○ It has real hope for tools around it. Because everyone, like me and Blender, can read this spec. ○ Good (scalable) design. Someone (many someones!) thought about future when designing it. Decision: Use open standards for 3D and 2D
  • 15. ● The reasons for choosing open standards for 3D models have been confirmed. ● Data standards are your most important dependency, because you cannot change them easily, invest wisely into things that will continue to exist in the future. We focus on glTF and X3D now
  • 16. X3D ● I did a few improvements around X3D, e.g. for "compositing shaders" (think Unity surface shaders, but a bit better :) ). ● I'm a Web3D member and liaison Web3D <-> Khronos.
  • 17. glTF ● Great design from Khronos ● Great set of features for gamedevs (skinned animation, PBR, efficiency…) ● Suitable to be read at runtime (no need to transform meshes before they are ready for runtime) ● Ecosystem of stuff around it, like Blender support Coming soon to Castle Game Engine thanks to it: ● Build your 3D environment from ready models on Sketchfab (they do have API and can return glTF!)
  • 18. Decision: Pascal ● Clean (type-safe) language ● Code engine and games in the same language (every user is contributor) ● Compiled to native code ● Higher-level language that scales - OOP, units, generics ● Cross-platform (desktop, mobile, WebAssembly) ● General purpose, so existing libraries for everything ○ database ○ xml, json ○ ai, blockchain ● Integration with any existing library with C API ○ any renderer, sound library, physics - we can use everything
  • 19. Fast compilation $ castle-engine cache # once after installation $ cd castle-engine/examples/viewport_and_scenes/cars_demo/ $ castle-engine clean # build from scratch, like a new project $ time castle-engine compile ... real 0m2,513s $ time castle-engine package --target=android # 32 and 64-bit devices ... Build cars_demo-0.1-android-debug.apk ... real 0m10,188s
  • 20. Easy to pick up if you know any OOP language https://castle-engine.io/modern_pascal
  • 21. Automation rocks and it is free for open-source GitHub Actions, GitLab CI - build your games using their free runners, just copy a "recipe" we prepared.
  • 22. Cross-platform ● Desktop (Linux, Windows, macOS, FreeBSD...) ● Raspberry Pi too ● Mobile (Android iOS) ● Nintendo Switch Coming soon: ● VR (Oculus Quest, using OpenXR) ● WebGL (FPC WebAssembly compiler is waiting!) ● XBox (we got a devkit)
  • 24. Evangelizing your technology Eye-opening: CoRecursive podcast #040: Tech Evangelism with Gabriel Gonzalez. ● Think about making the core of your thing small (start vertical) and make that core shine ● Think about your slogan/catchphrase/elevator pitch -- not because it's PR, because it is your priority compass Have fun while developing because it will take a long time.
  • 25. Declarative is good ● Declarative API - "your things have properties and are inter-connected" ○ (vs "your things can act to do something"). ● Declarative is simpler ● Declarative is serializable ● Declarative enables editing ● Declarative allows to change how it works easier (e.g. use a rendering technique that is multi-pass or make batching) ● Pascal components and RTTI were designed from the ground-up for this: classes have properties and an object inspector shows them and you can serialize them.
  • 26. OpenGL(ES) still rocks ● We have lots of enticing alternatives - Vulkan, Direct3D, Metal. ● OpenGL(ES)-like API is the only API that really works everywhere, today. ○ (and where it doesn't there's Angle, MetalAngle etc.)
  • 27. Controlling your technology ● Amazing when a big thing comes together. ● Big thing is not a one finished thing -- it is a tool that opens possibilities to make more things.