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

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

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.