Spine Bezier paths support, some fixes

Posted on


New features:

  • We now support Spine paths. They are converted to NURBS curves internally, and you can display them or use them from code to do anything you like (e.g. animate camera or some character along the path). See Spine support in Castle Game Engine for notes.

  • view3dscene has new menu items in the “Edit” section: “Hide Selected Shape”, “Reveal All Hidden Shapes”


  • We now treat Intel GPU on Windows with driver version >= 9 more like a normal GPU: assume they can make cubemaps, and generate mipmaps. See here.

  • Fix testing OpenGLES on 64-bit Windows (using Mali or Angle). See also here, and see updated links to get OpenGLES on Windows.

  • Fix compiling with CodeTyphon FPC. Thanks to Benedikt Magnus!

    Note that Michalis still advices to use normal FPC and Lazarus with Castle Game Engine, not CodeTyphon. I simply trust more in FPC and Lazarus developers, they care about making open-source Pascal code in a proper way, and with good quality.

Comment on this post ➤

Castle Game Engine 6.4 release – physics, iOS services, shader pipeline upgrade, big API improvements (vectors, transform) and more

Posted on


We’re proud to announce Castle Game Engine 6.4 release! Castle Game Engine is a free, open-source game engine written in Object Pascal. We support both 3D and 2D games. We are cross-platform (desktop, Android, iOS — with the help of our own build tool and scalable user-interface components). The complete list of the engine features is here, so go ahead and download it and try!

New features in 6.4 release:

  1. Rigid-body physics. Under the hood, we use Kraft Physics Engine for all the calculations. Kraft is developed by Benjamin “BeRo” Rosseaux and thousand thanks go to him for implementing this wonderful physics engine. Integration of Castle Game Engine with physics engine was requested and sponsored by Castle Game Engine supporters on Patreon.

  2. Many new services are available for iOS games: Apple Game Center, in-app purchases, analytics (Google Analytics, Game Analytics), Facebook SDK and sharing photos. Most of these were implemented for our “Escape from the Universe” release for iOS.

  3. Terrain generation API upgraded, terrain demo improved, and a new game demo showing terrain editing, planting trees and destructible objects was implemented thanks to supporters on Patreon. The demo is called Wyrd Forest, and you can download a complete source code and binary release on GitHub or watch a movie here.

  4. Jan Adamec is working on a mobile view3dscene — a viewer for X3D, VRML, and all the other formats supported by Castle Game Engine (Collada, 3DS, MD3, STL, Spine JSON…) for Android and iOS. He also implemented various new CGE features in this release — thousand thanks!

  5. Shader pipeline rendering code was much improved, to completely unify mobile (OpenGLES) and desktop (OpenGL) shaders — this means that both desktop and mobile can do Gouraud or Phong shading, and mobile renderer can use bump mapping, steep parallax bump mapping, specular maps, and other advanced material features from CommonSurfaceShader. Also, the desktop rendering uses now shader pipeline by default. So, the rendering code is more functional and faster and simpler at the same time:)

  6. New powerful TCastleTransform class is introduced. This allows to transform scenes (TCastleScene instances) in a comfortable way. It is also the ancestor of TCastleScene, so you can now e.g. trivially move the TCastleScene by just doing Scene.Translation := Scene.Translation + Vector3(1, 2, 3);.

  7. New modern API for vectors and matrices.

  8. Other new things supported: support “Dragon Bones” for creating animated 2D models, support https protocol, support KTX texture format.

  9. Other API improvements: using Delphi-compatible Generics.Collections containers throughout the engine, camera API simplifications, drawing ellipses, rectangles lines on TCastleImage (thanks to Eugene Loza!), improved FPS API and documentation, base units are now compatible with Delphi.

    I advice existing Castle Game Engine users to read upgrading to CGE 6.4 notes.

  10. Various engine examples were improved, in particular we completely reimplemented rift (fixed_camera_game) engine example.

Together with the new engine, we also release view3dscene 3.18.0 — our 3D and 2D model browser, and glViewImage 1.8.0 — our image browser. These tools are useful when working with the engine (to quickly check how does the engine handle given model or image), but are also perfectly useful on their own, to view or even post-process your files.

At this moment, I also want to ask you to support the engine development on Patreon. This support really helps me, and is very appreciated. Various 6.4 features (like physics integration!) would not happen without this.

If you have not yet seen my plans for 2018, read them — I have a plan that should make our engine the best engine ever 🙂 In short: editor component (to get standalone editor, like Unity3d, and to get editing inside Lazarus/Delphi, like GLScene, and to get runtime inspection/editing of the game world), Delphi compatibility, glTF and PBR, and looking closely at WebAssembly and pas2js.

Comment on this post ➤

New release this weekend, last pre-release notes

Posted on


We’re ready for the next Castle Game Engine 6.4 release. This weekend (Friday / Saturday), I’ll announce and upload everything 🙂

In the meantime, here’s a list of engine improvements we did in January:

  1. Drawing ellipses (and circles), rectangles, lines on TCastleImage thanks to Eugene Loza.

  2. Photo service on iOS and Android, thanks to Jan Adamec.

  3. DXF exporter application, thanks to @rweinzierl on our Discord.

  4. Many improvements to the engine examples:

    • rift (fixed_camera_game) example was completely reimplemented. It now uses TUIState, has muuuch simpler code, and is portable to mobile (Android, iOS).
    • Terrain example reimplemented, has now much more functions (like adjusting shader parameters) and better defaults (some taken from wyrd-forest), and is portable to mobile too (Android, iOS).
    • Various fps_game improvements for Android.
    • sandbox (now just “isometric_game”) code improved (although it still uses a very simple approach to rendering) and it can compile to mobile (although input still relies on a keyboard).
  5. Sound buffer improvements and fixes: TSoundBuffer is a class now (although it should be invisible to you, as it’s automatically managed by the sound engine). And it correctly “survives” if the application was paused / resumed on Android. So you can safely do Buffer := SoundEngine.LoadBuffer(‘sound.wav’) in Application.OnInitialize and then play this buffer at any time later.

  6. Easier way to adjust ApplicationName: just set ApplicationProperties.ApplicationName.

  7. New Viewpoint.fieldOfViewForceVertical field.

  8. New property Attributes.SolidColor to make Attributes.Mode = rmSolidColor reliable with the shader pipeline.

  9. The assets:/ protocol is deprecated, better use now castle-android-assets:/. Read more about the protocols supported here, and reasons for name change are listed here. This should be internal (invisible during normal engine usage), as cross-platform applications should never explicitly use this protocol.

Comment on this post ➤

Integrate your iOS games with Google Analytics, Game Analytics, Facebook, open URLs, share text…

Posted on


Happy new year everyone!

In preparations for releasing Escape from the Universe on iOS, I have implemented a number of new “services” on iOS. They allow to integrate your games easily with various iOS frameworks.

The detailed information how to activate all these integrations is here, you just add a 1 line to your CastleEngineManifest.xml and then use a trivial Pascal routines/classes for everything.

Have fun with Castle Game Engine in 2018 ! 🙂 And if you had not seen it yet, take a look at our plans for 2018 – it starts now.

Comment on this post ➤