SlideShare a Scribd company logo
1 of 28
Download to read offline
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 PixelThomas 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: FlutterGreen 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 cloudChris Schalk
 
2D Game Development with Starling
2D Game Development with Starling2D Game Development with Starling
2D Game Development with StarlingJuwal 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 DevelopmentIntel® 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 2011Karsten 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 asideLeszek 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 DrupalBrian 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 FOSSKirk 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 2013Ramesh 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 EnginesPooya 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

Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMok TH
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Soroosh Khodami
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfWSO2
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabbereGrabber
 
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 RAGAlluxio, Inc.
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Gáspár Nagy
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1KnowledgeSeed
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Naer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research SynthesisNaer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research Synthesisparimabajra
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMarkus Moeller
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersEmilyJiang23
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionMohammed Fazuluddin
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfDeskTrack
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)Max Lee
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionWave PLM
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Andrea Goulet
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024Shane Coughlan
 

Recently uploaded (20)

Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptx
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
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
 
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
Tree in the Forest - Managing Details in BDD Scenarios (live2test 2024)
 
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
A Python-based approach to data loading in TM1 - Using Airflow as an ETL for TM1
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Naer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research SynthesisNaer Toolbar Redesign - Usability Research Synthesis
Naer Toolbar Redesign - Usability Research Synthesis
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java Developers
 
5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand5 Reasons Driving Warehouse Management Systems Demand
5 Reasons Driving Warehouse Management Systems Demand
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 
JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)JustNaik Solution Deck (stage bus sector)
JustNaik Solution Deck (stage bus sector)
 
The Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion ProductionThe Impact of PLM Software on Fashion Production
The Impact of PLM Software on Fashion Production
 
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
Entropy, Software Quality, and Innovation (presented at Princeton Plasma Phys...
 
OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024OpenChain @ LF Japan Executive Briefing - May 2024
OpenChain @ LF Japan Executive Briefing - May 2024
 

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.