Use custom code editor (Emacs, Atom, VS Code…) when opening Pascal source from CGE editor
A small but important improvement to our CGE editor: Now various commands that open Pascal files can use your custom editor, configured in Preferences -> Code Editor. By default we keep invoking Lazarus but you can now freely change it.

This affects a few editor commands:

GPU-based 3D particle system, and upgraded 2D particle system for Castle Game Engine
With huge thanks to Trung Le (Kagamma), we have a new 3D particle system for CGE, and serious upgrades to the existing 2D particle system:

The 2D particle system has now an alternative GPU-based implementation.

It allows to render 1 million particles on the screen

More permissive license to use our examples code
We change the license of our examples (stuff in examples/ subdirectory) to be more permissive. Namely, all our example code and almost all our example data are now covered by the modified BSD (3-clause) license. It's a very permissive license that basically says "we keep our copyright, but otherwise do what you want with these files, modify them as yo

Automatic downscaled textures can be now specific to a platform
We improve the process of automatic texture downscaling. The automatic downscaling is determined by data/material_properties.xml file and documented here. The new features are:

Ability to specify any set of scales, not necessarily a continuous range.

Ability to specify that some scale values are packaged

Various improvements (2D navigation, PhysicsRayCast, examples upgrades, important bugfixes)
The navigation in 2D viewports (with orthographic projection and standard direction/up: -Z/+Y) is now much better. We have a new algorithm TCastleExamineNavigation.ExactMovement that makes the navigation more natural, and we have a dedicated TCastle2DNavigation class (des

Introducing TUIState.DesignUrl, DesignPreload, DesignedComponent
We expose TUIState.DesignUrl (and some friends) as a more comfortable alternative to the TUIState.InsertUserInterface method. InsertUserInterface was a method used by many CGE applications to load a designed UI into a TUIState. Advantages of the new TUIState.DesignUrl approach:

It looks simpler. You do not need t

Full-featured Sprite Sheet Editor inside Castle Game Engine, also our own castle-sprite-sheet format
Our CGE editor now includes a full-featured sprite sheet editor. This allows to create and modify sprite sheets that can be then trivially used (loading, playing animation) through TCastleScene. The resulting sprite sheets are saved in our own format

Docker image, Android upgrades, Aarch64 optimizations, FMOD on Android
A bunch of improvements of particular interest to mobile (Android, iOS) developers. In completely related news, stay tuned for The Unholy Society on Android and iOS release :)


Updated our Docker image (affects also FPC/Lazarus used to build the default CGE releases) to:

Better code navigation, new units/states creation, new ways to open source code for editing, better integration with Lazarus project
I've done a number of improvements to our editor and build tool to improve the advised organization of a CGE project and allow to comfortably edit Pascal code from CGE editor.

The goal of

Multi-sampling (full-screen anti-aliasing) on iOS
You can now activate multi-sampling on iOS using Window.AntiAliasing := aa4SamplesFaster. You should set this before window is opened, which usually means it should be done in the initialization section of a unit like GameInitialize.

What values of AntiAliasing are actually meaningful?

Internally iOS supports only "none" or "4" multi-sampling values

Many new things: Various editor, glTF, physics, sprite sheets and other improvements. Upcoming more: tutorial, sprite sheet editor, particle system news.
We're busy doing a lot of things :)

The pull request with our own sprite sheet editor and format is in-progress. Thanks to Andrzej Kilij

Many improvements: behaviors attached to TCastleTransform (a bit like MonoBehaviour), alphaMode and alphaCutoff from X3D 4.0 and glTF, Android services docs, loading/saving from TStream
We introduce a new class TCastleBehavior which can be attached to any TCastleTransfor

Castle Game Engine 7.0-alpha.1 release, view3dscene 4.0.0 release
We proudly present the first alpha pre-release of Castle Game Engine 7.0. It is time to break the long period of waiting since CGE 6.4!

We emphasize that it is a pre-release. We're still working on a finished 7.0 release, where all the features are polished, all examples are reorganized to show the new approach, all o

Simplifications, optimizations, GTK backend suitable for testing OpenGLES too
We had a few methods that needlessly traversed whole TCastleTransform hierarchy. Reworking them was an optimization and also an API simplification (IOW, a "no-brainer" :) ). Changes:

TCastleTransform.Press, TCastleTransform.Release are now only called when TCastleTransform.ListenPr

Demo of showing loading progress, WaitForRenderAndCall utility, new TCastleTouchNavigation
We have new TUIState.WaitForRenderAndCall utility, especially useful to implement loading inside TUIState descendant.

Our examples/user_interface/zombie_fighter features now a demo showing loading progress (as a descendant of TUIState, which is our advised approa

Interactive example showing our collision routines, various engine and editor improvements
I made a nice new example to demonstrate our collision checking routines examples/3d_rendering_processing/collisions:

TCastleTransform.Move - move, with collision checking and wall-sliding
Viewport.Items.WorldBoxCollision - detect collisions with axis-

Reading glTF extras (e.g. from Blender custom properties) to X3D metadata, support changing shape collision mode from Blender, documentation improvements
We now read glTF extras data to X3D nodes metadata.

In practical terms, it means that you can set custom properties in Blender, and then read i

Editor improvements: dragging scenes to viewport, undo for gizmos, better docs
You can now drag scene files (like glTF, X3D, images...) from the "Files" bottom panel onto a viewport. It will automatically create a TCastleScene instance with proper URL that displays this model.

The initial translation is determined by the point where you drop the item, with some smart

New TCastleTransformDesign component (like prefab for TCastleTransform), example advanced_editor showing advanced usage of designs and custom components
New component TCastleTransformDesign allows to reference a xxx.castle-transform file inside a parent design. This way you can define a composition o

Lots of optimizations, support for explicit tangents information in glTF and X3D, X3D 4.0 being finalized
As I mentioned in the news post 2 weeks ago, lately I've been following a trail of reworking and optimizing some renderer code. In particular this is important if you do skinned animation in glTF with bump mapping — which is a very common us

Show older

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!