SlideShare a Scribd company logo
From an idea to a release on Steam:
everything about making your game
using Castle Game Engine
Michalis Kamburelis
I'm Michalis Kamburelis
● Castle Game Engine - https://castle-engine.io/
● PasDoc - https://pasdoc.github.io/
● Modern Object Pascal Introduction -
https://castle-engine.io/modern_pascal
● Involved in 3D standards
○ X3D (Web3D member)
○ glTF (Khronos liaison)
○ Others (WIP IFC implementation for https://www.sorpetaler.de/ )
Castle Game Engine intro:
Editor, Components and Building
Applications
Castle Game Engine
From an idea to a release on Steam: everything about making your game using Castle Game Engine
Features
● 3D and 2D
○ any game type
● Comfortable Editor
○ with game simulation possible, and custom components
● Pascal API (all that you can do in editor + much more)
○ For your games and for engine
○ FPC (all platforms) and Delphi (Windows, Linux)
● Open-source
○ Want to fork to add a project-specific feature? OK.
● Multi-platform
○ Windows, Linux (Raspberry Pi too), FreeBSD, macOS
○ Android, iOS
○ Nintendo Switch
3D FPS game template
● Views
● Play view
○ Viewport, navigate in 3D
○ Left side: hierarchy with components
■ UI
■ viewport is also UI
■ 3D: transform scenes, cameras, lights
■ drag-and-drop 3D models, images
■ transform, delete, duplicate
■ behaviors attach to transforms, like billboard
○ Right side: properties
○ Bottom: files
■ preview
■ special data directory
■ double click to run view3dscene on scenes
2D game template
Run!
From CGE editor, or Lazarus, or Delphi, or VS Code.
Run on mobile
Just switch "Run -> Platform (...)" to "Android".
Assuming you have Android SDK and FPC cross-compilers, see https://castle-engine.io/android .
Coding
Any editor you like - VS Code, Lazarus IDE,
Delphi, Emacs…
Our VS Code extension ( https://castle-engine.io/vscode ) provides everything:
● Pascal highlighting and code completion (LSP), knowing also CGE layout
● Integration with CGE projects (build, run, debug)
Views, handle key press
● Organize project into views
● Views can handle events, like
○ Start
○ Update
○ Press
○ Natural place to handle events, like OnClick of buttons, too
Handle button click, change Translation
● Assign TCastleButton.OnClick event to handle classic button clicks
● Change TCastleTransform.Translation whenever
● TVector3, our vector type, is used throughout the engine
Play a sound
● Non-spatial?Just setup TCastleSound and call SoundEngine.Play(MySound)
● Spatial? Use TCastleSoundSource and TCastleSound.
● See https://castle-engine.io/sound
Physics
Setup and test Physics in editor -
colliders and rigid bodies
Use forces from code
Level design in editor (bigger
projects)
From an idea to a release on Steam: everything about making your game using Castle Game Engine
From an idea to a release on Steam: everything about making your game using Castle Game Engine
Reuse designs, factory of designs
Design (compose) components and reuse
● Design a composition of CGE components in editor
● Instantiate them, once or multiple times using TCastleComponentFactory
● This is a bit like LCL / VCL / FMX TFrame, but more for our purposes
○ It can be 3D or 2D thing
○ Factory allows to create lots of it - spawn monsters, falling down debris, rockets
etc.
From an idea to a release on Steam: everything about making your game using Castle Game Engine
Demo
Behaviors
Behaviors
● Descend from TCastleBehavior
● Override TCastleBehavior.Update to do what you want
● Attach to multiple things
● Example: patrolling enemy in "3D FPS Game"
Ready behaviors
● TCastleBillboard
● TCastleSoundSource (mentioned previously)
● Physics colliders and rigid bodies (mentioned previously)
● New….
In progress (not yet in master) TCastleLiving,
TCastleMoveAttack behaviors
● Add TCastleLiving where you want the player to be (camera, avatar)
● Add TCastleLiving and TCastleMoveAttack to each creature
● Configure stuff, like Enemy
● Ready FPS game mechanics!
● Short-range attack, approach the player when sees player. Underneath also
fire missile and navmesh (in progress to make them exposed nicely).
● It works when you run the game, or in simulation.
TCastleMoveAttack and TCastleLiving demo
Show creatures_behaviors demo.
● Where are behaviors
● Run game
● Run simulation
● Show tweaks - change Enemy.
Notes:
● Behaviors can be added by code, or by editor.
● You can query for all TCastleMoveAttack occurences in Viewport.Items etc.
● Custom components, like behaviors, want to see them at design-time?
https://castle-engine.io/custom_components
Demo - TCastleMoveAttack also at simulation
Demo "poor guy" - one skeleton is enemy
Use ready assets
(aka: why I love open 3D
standards and glTF in particular)
We integrate with Sketchfab, you can search
and download models from Sketchfab
● Demo:
○ Get level (dungeon) (tweak PreciseCollisions)
○ Get props (barrel)
○ Setup walk/fly navigation (tweak MouseLook, MoveSpeed)
○ Ready game - run!
● The assets are in data/sketchfab, with licenses and authors to attribute
● This is thanks to using glTF standard , https://castle-engine.io/gltf
Demo from Sketchfab models
More open-source and free assets
● Quaternius https://quaternius.com/
● OpenGameArt https://opengameart.org/
● Pro tip: Seek for "modular" assets to have "lego pieces" to build levels, either in CGE
editor or Blender
● Demo:
○ Drag-and-drop glTF files on plane
○ Add lights, shadows
● Again, glTF rules
Demo from Quaternius models
Integrations - Steam, Google Play
Create a game on Steam, use our integration
for achievements and more
● https://castle-engine.io/steam
● Soon: engine also on Steam
From an idea to a release on Steam: everything about making your game using Castle Game Engine
From an idea to a release on Steam: everything about making your game using Castle Game Engine
From an idea to a release on Steam: everything about making your game using Castle Game Engine
We also integrate with Google Play Games and
Apple Game Center
● Android and iOS applications:
○ Compiled using FPC to library
○ We add support code in Java / Objective-C to interact with system
○ We add optional "services" code to interact with specific 3rd-party native libraries,
like Google Play Games
○ The resulting project is build to APK (Android) or IPA / Xcode project (iOS)
TCastleControl
Also on LCL / VCL / FMX form, alongside other
LCL / VCL / FMX
● Useful if you only want to CGE rendering to existing LCL / VCL / FMX applications
● Everything described here still works, you just start a bit different, by TCastleControl
● See https://castle-engine.io/control_on_form
From an idea to a release on Steam: everything about making your game using Castle Game Engine
From an idea to a release on Steam: everything about making your game using Castle Game Engine
Conclusion
Homework proposal: try to combine all the
things you learned:)
You know now how to:
● Design stuff in editor
● Write Pascal code to make logic you want
● Use ready-made assets from the Internet
○ learning Blender is beyond this talk :), but if you do -- export from Blender to glTF and
the world is your oyster.
● Download https://castle-engine.io/ and make a game!
● Let me know how it goes:
○ michalis@castle-engine.io
○ https://forum.castle-engine.io/
○ https://castle-engine.io/talk.php
Plans
● We are at 7.0-alpha.3, I think we'll make 7.0-alpha.4 in October
○ New features already: https://castle-engine.io/steam
○ TCastleMoveAttack almost finished
○ Other features (distance field fonts, export design to X3D/STL),
shadows optimization
● Working on 7.0 release, hopefully in 2024
○ For 7.0: material components, new navigation components
○ See https://castle-engine.io/roadmap
● Then, for 7.2: Web target using FPC WebAssembly
How to make this sustainable?
● We are looking for your support:
https://www.patreon.com/castleengine
● We are open to cooperation with companies (consulting, dedicated
features, platforms…). Talk to me!
Thank you!
https:/
/castle-engine.io
These slides:
https:/
/castle-engine.io/cologne2024
michalis@castle-engine.io

More Related Content

PDF
Castle Game Engine: intro, web, IFC, 3D scanning, mORMot
PDF
Creating 3D games and applications using Castle Game Engine
PDF
Developing games and graphic visualizations in Pascal
PDF
Advanced Castle Game Engine features - forms, 3D generation, shaders, customi...
PDF
Castle Game Engine and the joy of making and using a custom game engine
PDF
Let's make games using Delphi! Presentation from Delphi Day 2025 at Piacenza.
PDF
Developing mobile games and applications using Castle Game Engine
PDF
How to build Kick Ass Games in the Cloud
Castle Game Engine: intro, web, IFC, 3D scanning, mORMot
Creating 3D games and applications using Castle Game Engine
Developing games and graphic visualizations in Pascal
Advanced Castle Game Engine features - forms, 3D generation, shaders, customi...
Castle Game Engine and the joy of making and using a custom game engine
Let's make games using Delphi! Presentation from Delphi Day 2025 at Piacenza.
Developing mobile games and applications using Castle Game Engine
How to build Kick Ass Games in the Cloud

Similar to From an idea to a release on Steam: everything about making your game using Castle Game Engine (20)

PPTX
GDCE 2015: Blueprint Components to C++
PDF
Castle Game Engine - highlights, features, plans as of July 2024
PDF
Using FireMonkey as a game engine
PDF
mloc.js 2014 - JavaScript and the browser as a platform for game development
PDF
Intro - End to end ML with Kubeflow @ SignalConf 2018
PDF
Introduction to html5 game programming with impact js
PPTX
Baiscs of OpenGL
PDF
Introduction to html5 game programming with ImpactJs
PDF
Getting started with Verold and Three.js
PPTX
Kubernetes 101
PPTX
Intro to Flutter SDK
PPTX
Robust C++ Task Systems Through Compile-time Checks
PPTX
Leonid Kuligin "Training ML models with Cloud"
PDF
State of the Art OpenGL and Qt
 
PDF
Power Leveling your TypeScript
PDF
Computer Graphics - Lecture 01 - 3D Programming I
ODP
Buildout: creating and deploying repeatable applications in python
KEY
Android game development
PDF
Tools for developing Android Games
PDF
Building Kick Ass Video Games for the Cloud
GDCE 2015: Blueprint Components to C++
Castle Game Engine - highlights, features, plans as of July 2024
Using FireMonkey as a game engine
mloc.js 2014 - JavaScript and the browser as a platform for game development
Intro - End to end ML with Kubeflow @ SignalConf 2018
Introduction to html5 game programming with impact js
Baiscs of OpenGL
Introduction to html5 game programming with ImpactJs
Getting started with Verold and Three.js
Kubernetes 101
Intro to Flutter SDK
Robust C++ Task Systems Through Compile-time Checks
Leonid Kuligin "Training ML models with Cloud"
State of the Art OpenGL and Qt
 
Power Leveling your TypeScript
Computer Graphics - Lecture 01 - 3D Programming I
Buildout: creating and deploying repeatable applications in python
Android game development
Tools for developing Android Games
Building Kick Ass Video Games for the Cloud
Ad

Recently uploaded (20)

PDF
Digital Strategies for Manufacturing Companies
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Introduction to Artificial Intelligence
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
L1 - Introduction to python Backend.pptx
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
medical staffing services at VALiNTRY
PPTX
Essential Infomation Tech presentation.pptx
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
history of c programming in notes for students .pptx
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
Digital Strategies for Manufacturing Companies
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Introduction to Artificial Intelligence
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
L1 - Introduction to python Backend.pptx
wealthsignaloriginal-com-DS-text-... (1).pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Reimagine Home Health with the Power of Agentic AI​
medical staffing services at VALiNTRY
Essential Infomation Tech presentation.pptx
Understanding Forklifts - TECH EHS Solution
CHAPTER 2 - PM Management and IT Context
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
history of c programming in notes for students .pptx
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
VVF-Customer-Presentation2025-Ver1.9.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Odoo POS Development Services by CandidRoot Solutions
Upgrade and Innovation Strategies for SAP ERP Customers
Ad

From an idea to a release on Steam: everything about making your game using Castle Game Engine

  • 1. From an idea to a release on Steam: everything about making your game using Castle Game Engine Michalis Kamburelis
  • 2. I'm Michalis Kamburelis ● Castle Game Engine - https://castle-engine.io/ ● PasDoc - https://pasdoc.github.io/ ● Modern Object Pascal Introduction - https://castle-engine.io/modern_pascal ● Involved in 3D standards ○ X3D (Web3D member) ○ glTF (Khronos liaison) ○ Others (WIP IFC implementation for https://www.sorpetaler.de/ )
  • 3. Castle Game Engine intro: Editor, Components and Building Applications
  • 6. Features ● 3D and 2D ○ any game type ● Comfortable Editor ○ with game simulation possible, and custom components ● Pascal API (all that you can do in editor + much more) ○ For your games and for engine ○ FPC (all platforms) and Delphi (Windows, Linux) ● Open-source ○ Want to fork to add a project-specific feature? OK. ● Multi-platform ○ Windows, Linux (Raspberry Pi too), FreeBSD, macOS ○ Android, iOS ○ Nintendo Switch
  • 7. 3D FPS game template ● Views ● Play view ○ Viewport, navigate in 3D ○ Left side: hierarchy with components ■ UI ■ viewport is also UI ■ 3D: transform scenes, cameras, lights ■ drag-and-drop 3D models, images ■ transform, delete, duplicate ■ behaviors attach to transforms, like billboard ○ Right side: properties ○ Bottom: files ■ preview ■ special data directory ■ double click to run view3dscene on scenes
  • 9. Run! From CGE editor, or Lazarus, or Delphi, or VS Code.
  • 10. Run on mobile Just switch "Run -> Platform (...)" to "Android". Assuming you have Android SDK and FPC cross-compilers, see https://castle-engine.io/android .
  • 12. Any editor you like - VS Code, Lazarus IDE, Delphi, Emacs… Our VS Code extension ( https://castle-engine.io/vscode ) provides everything: ● Pascal highlighting and code completion (LSP), knowing also CGE layout ● Integration with CGE projects (build, run, debug)
  • 13. Views, handle key press ● Organize project into views ● Views can handle events, like ○ Start ○ Update ○ Press ○ Natural place to handle events, like OnClick of buttons, too
  • 14. Handle button click, change Translation ● Assign TCastleButton.OnClick event to handle classic button clicks ● Change TCastleTransform.Translation whenever ● TVector3, our vector type, is used throughout the engine
  • 15. Play a sound ● Non-spatial?Just setup TCastleSound and call SoundEngine.Play(MySound) ● Spatial? Use TCastleSoundSource and TCastleSound. ● See https://castle-engine.io/sound
  • 17. Setup and test Physics in editor - colliders and rigid bodies
  • 19. Level design in editor (bigger projects)
  • 23. Design (compose) components and reuse ● Design a composition of CGE components in editor ● Instantiate them, once or multiple times using TCastleComponentFactory ● This is a bit like LCL / VCL / FMX TFrame, but more for our purposes ○ It can be 3D or 2D thing ○ Factory allows to create lots of it - spawn monsters, falling down debris, rockets etc.
  • 25. Demo
  • 27. Behaviors ● Descend from TCastleBehavior ● Override TCastleBehavior.Update to do what you want ● Attach to multiple things ● Example: patrolling enemy in "3D FPS Game"
  • 28. Ready behaviors ● TCastleBillboard ● TCastleSoundSource (mentioned previously) ● Physics colliders and rigid bodies (mentioned previously) ● New….
  • 29. In progress (not yet in master) TCastleLiving, TCastleMoveAttack behaviors ● Add TCastleLiving where you want the player to be (camera, avatar) ● Add TCastleLiving and TCastleMoveAttack to each creature ● Configure stuff, like Enemy ● Ready FPS game mechanics! ● Short-range attack, approach the player when sees player. Underneath also fire missile and navmesh (in progress to make them exposed nicely). ● It works when you run the game, or in simulation.
  • 30. TCastleMoveAttack and TCastleLiving demo Show creatures_behaviors demo. ● Where are behaviors ● Run game ● Run simulation ● Show tweaks - change Enemy. Notes: ● Behaviors can be added by code, or by editor. ● You can query for all TCastleMoveAttack occurences in Viewport.Items etc. ● Custom components, like behaviors, want to see them at design-time? https://castle-engine.io/custom_components
  • 31. Demo - TCastleMoveAttack also at simulation
  • 32. Demo "poor guy" - one skeleton is enemy
  • 33. Use ready assets (aka: why I love open 3D standards and glTF in particular)
  • 34. We integrate with Sketchfab, you can search and download models from Sketchfab ● Demo: ○ Get level (dungeon) (tweak PreciseCollisions) ○ Get props (barrel) ○ Setup walk/fly navigation (tweak MouseLook, MoveSpeed) ○ Ready game - run! ● The assets are in data/sketchfab, with licenses and authors to attribute ● This is thanks to using glTF standard , https://castle-engine.io/gltf
  • 36. More open-source and free assets ● Quaternius https://quaternius.com/ ● OpenGameArt https://opengameart.org/ ● Pro tip: Seek for "modular" assets to have "lego pieces" to build levels, either in CGE editor or Blender ● Demo: ○ Drag-and-drop glTF files on plane ○ Add lights, shadows ● Again, glTF rules
  • 38. Integrations - Steam, Google Play
  • 39. Create a game on Steam, use our integration for achievements and more ● https://castle-engine.io/steam ● Soon: engine also on Steam
  • 43. We also integrate with Google Play Games and Apple Game Center ● Android and iOS applications: ○ Compiled using FPC to library ○ We add support code in Java / Objective-C to interact with system ○ We add optional "services" code to interact with specific 3rd-party native libraries, like Google Play Games ○ The resulting project is build to APK (Android) or IPA / Xcode project (iOS)
  • 45. Also on LCL / VCL / FMX form, alongside other LCL / VCL / FMX ● Useful if you only want to CGE rendering to existing LCL / VCL / FMX applications ● Everything described here still works, you just start a bit different, by TCastleControl ● See https://castle-engine.io/control_on_form
  • 49. Homework proposal: try to combine all the things you learned:) You know now how to: ● Design stuff in editor ● Write Pascal code to make logic you want ● Use ready-made assets from the Internet ○ learning Blender is beyond this talk :), but if you do -- export from Blender to glTF and the world is your oyster. ● Download https://castle-engine.io/ and make a game! ● Let me know how it goes: ○ michalis@castle-engine.io ○ https://forum.castle-engine.io/ ○ https://castle-engine.io/talk.php
  • 50. Plans ● We are at 7.0-alpha.3, I think we'll make 7.0-alpha.4 in October ○ New features already: https://castle-engine.io/steam ○ TCastleMoveAttack almost finished ○ Other features (distance field fonts, export design to X3D/STL), shadows optimization ● Working on 7.0 release, hopefully in 2024 ○ For 7.0: material components, new navigation components ○ See https://castle-engine.io/roadmap ● Then, for 7.2: Web target using FPC WebAssembly
  • 51. How to make this sustainable? ● We are looking for your support: https://www.patreon.com/castleengine ● We are open to cooperation with companies (consulting, dedicated features, platforms…). Talk to me!