The next issue of Blaise Pascal Magazine will contain a nice long article I wrote about Castle Game Engine! 20 pages, describing how to use the engine from absolute basics, showing how to construct a simple cross-platform 3D game using TCastleWindow, TCastleScene, TCastleTransform, SoundEngine features. I am quite happy with it 🙂
I will also make the article available for all Patrons of Castle Game Engine at the end of this month (September). If you would like to support the development of CGE, now is the time 🙂
My vision and goals for X3D is documented publicly in my “x3d-tests” wiki. This wiki contains an overview + lots of details what I would like to see in X3D standard. Many of the ideas revolve around bringing X3D more “aligned” with glTF 2.0 feature set. Which is of course closely tied with getting glTF 2.0 into Castle Game Engine, as an X3D scene graph. I believe that this is a solution in which everyone wins, i.e. we will have an engine with perfect interchange format (for which glTF 2.0 is now better, although X3D tries to catch up) and a perfect scene graph (where X3D shines already).
We have a number of engine improvements to announce:
A new way to access data files is to use a special protocol castle-data, like this: castle-data:/images/my_image.png. This is exactly equivalent to using ApplicationData('images/my_image.png'). During development, it will simply load a file data/images/my_image.png from your project.
The advantage of the castle-data protocol is that it can be used easily from other data files, like X3D or xxx.castle-user-interface created by Castle Game Engine Editor or Lazarus .lfm. The CGE editor already automatically uses this protocol if you open an image or 3D model within the data subdirectory of the project.
The editor keeps improving. You can add, delete components, you can start a new file from any root (so e.g. you can start building user-interface rooted in TCastleUserInterfaceRect, or TCastleSceneManager), you can see the effect of the UI scaling, we automatically detect when you open a file in project data (and use castle-data protocol), you can easily add a scene with a primitive (like a box or plane, using PrimitiveGeometry underneath).
I’m proud to present first public screenshots from the upcoming Castle Game Engine Editor!
The goal of the editor is to allow you to manage CGE projects (create, build, run…), visually design hierarchies (of user interface controls and 3D/2D models) and browse project assets. Yeah, just like those other big game engines:)
You can create a project from a template, or open an existing project. Project is just any directory with CastleEngineManifest.xml file.
You can compile / run / package / generate textures and do other usual operations on the project. The output, like compilation output, as well as program log (regardless of the OS) is displayed at the bottom. The editor calls the build tool for these operations, which in turn calls FPC and other tools.
You can open and save a designed user interface (anything descending from TCastleUserInterface, formerly TUIControl) and 3D/2D game models (anything descending from TCastleTransform). They are serialized using Pascal RTTI (JSON format produced by FpJsonRtti). The editor, as well as your own game, use CastleComponentSerialize unit to do this. The files have extensions .castle-user-interface or .castle-transform and can be loaded with functions UserInterfaceLoad or TransformLoad.
You can edit the published properties of the selected component using the object inspector on the right. It’s all updated “live” in the middle window of course. If you save the edited file, and run the project, you will see that it’s actually using a new design.
See the screenshots for the initial stuff:)
Of course, many things are missing now, including some crucial things to make it actually useful for real applications. E.g. dropping new components on the design is not yet implemented. And dragging the UI controls, and TCastleTransform, visually (in the 3D window) is not possible yet. Well, there’s work ahead!
I’m really pleased with the result so far 🙂 P.S. If you like what I do, please consider donating to help in the development of the engine. Thank you!
The point of the models tagged with [cge] (and later in our asset store) is to be available in formats that Castle Game Engine can handle. Like X3D, castle-anim-frames, Spine JSON. See the exporting documentation about how to export from various software.
Of course, just like all opengameart.org submissions, the assets must also be clearly marked with an open-source license. And, like all opengameart.org assets, you are strongly encouraged (but not required) to upload also a “source” model version (in Blender, Spine etc.), to allow people creating derivative works from it.
Note: The assets I upload will also be available as part of CGE demo-models repository, in subdirectory opengameart.org-submissions. So you can also get them from GitHub, and you can submit pull requests to add/modify them. But that’s just my choice, you can host your models in any way you like, just make sure to upload them 🙂
-------------------- Time Profile begin
Profile (speed of execution).
Each line shows time, followed by [time spent in this process], followed by description.
Lines are sorted within each group, to show the most expensive operation at the top.
7.35 [7.35] - TCastleApplication.OnInitialize
> 1.65 [1.65] - Loading .../character/soldier1.castle-anim-frames (TCastleSceneCore)
> 1.49 [1.48] - Loading .../level/level-dungeon.x3d (TCastleSceneCore)
> 0.78 [0.78] - Loading All Sounds From .../audio/index.xml (TRepoSoundEngine)
> > 0.71 [0.71] - Loading .../audio/dark_fallout.ogg (TSoundFile)
> > 0.00 [0.00] - Loading .../audio/flaunch.wav (TSoundFile)
2.07 [2.07] - Prepare Resources .../level/level-dungeon.x3d
-------------------- Time Profile end