Editor improvements: undo, context menu on hierarchy, shell list, clear warnings…

Posted on

  1. With great thanks to Eugene Loza, we now have a working Undo system for Castle Game Engine Editor!

    • You can undo / redo any action.
    • The undo / redo menu items shows the previous/next operation description.
    • History is trimmed smartly based on approximate size in memory.
    • See the pull request for details.
    • Just try it! It’s bound to Ctrl + Alt + Z shortcut now.

    We want to work on it some more before release: correctly handle transformation changes by gizmos, correctly handle record changes (like TCastleColor) by dialogs (right now these actions will be glued to the next undo; so the design remains correct, you just don’t have the “granularity” of undoing/redoing that you may expect). I’d also like to experiment whether we can assign it to Ctrl + Z when OI is not focused (right now undo is bound to Ctrl + Alt + Z to avoid conflicts).

  2. You can now edit names of components in the editor’s tree view (click or press F2). Also thanks to Eugene Loza!

  3. Right-clicking in hierarchy now exposes a context menu with some useful functions, in particular you can add new component as a child of selected. The credit for this goes also to Eugene Loza – thank you!

  4. Thanks to Andrzej Kilijański, we have a “Clear” button to clear currently displayed warnings.

  5. Fixed deleting a component (deletion should be recursive, previously the children were hidden but remained in memory and prevented from reusing the same Name).

  6. The shell list view is better, with directories.

  7. The dialog to open URLs (e.g. for TCastleScene.URL) by default starts in project’s data directory, to make it natural to choose files there.

Comment on this post ➤

“Escape from the Universe” has been released in Japan for Nintendo Switch

Posted on

Escape from the Universe - one of possible ending screens in Japanese

Escape from the Universe is now available in Japan for Nintendo Switch!

This is a Japanese version of our English (for Americas and Europe) version.

As some of you know, I’m wearing two hats — I’m the author of Castle Game Engine and I’m the CTO of Cat-astrophe Games, an indie game company where we plan to achieve great things with our technical skills, and also cats. Escape from the Universe was developed by Cat-astrophe Games some time ago, ported to Nintendo Switch, and now it has been translated to Japanese — all 100% in Castle Game Engine! The Japanese localization and a ton of testing was done by Worker Bee Inc.

The whole approach to localization is 100% open-source and part of CGE: see the manual section Localization (translation) using CastleLocalizationGetText. I hope this shows that our localization support is fully capable of handling a large, professional project, done in cooperation by 2 companies.

If you have Nintendo Switch, you have now no excuse not to play this game 🙂

Comment on this post ➤

Various engine improvements: lift lights limit, test simultaneous animations, fix changing TLevel.Player, SaveScreenRgba…

Posted on

Zrzut ekranu z 2020-10-22 22-53-57
Zrzut ekranu z 2020-10-22 22-54-04
Zrzut ekranu z 2020-10-22 21-40-10
Zrzut ekranu z 2020-10-22 21-40-27

Here goes an unorganized list of engine features and fixes done lately 🙂 Enjoy, and see if you can find something for yourself in this menu 🙂

  1. You can now increase the number of allowed lights per shape using Scene.Attributes.MaxLightsPerShape. view3dscene has a menu item to experiment with it (“View -> Max Lights Per Shape…”). A test model is in demo-models: gltf/multiple_animated_lights.

  2. view3dscene allows to test multiple simultaneous animations. Just select the checkbox Enable Multiple Simultaneous Animations in the animations panel (Ctrl + A), and now you start/stop the animations independently. The animations are controlled using TTimeSensorNode.Start and TTimeSensorNode.Stop, just like in the example simultaneous_animations_one_scene.

  3. Thanks to Andrzej Kilijański, changing TLevel.Player after the level is loaded is now fixed. This fixes various applications relying on it, like the old “The Castle” game. It is demonstrated by fps_game example, just press F1 to recreate player. It works reliably in all cases, with 1st and 3rd-person navigation.

  4. In code you can iterate using for .. in over TCastleTransform and TCastleUserInterface children.

  5. Fixed opening Lazarus when it is installed from Debian packages (lazarus-ide binary), thanks to Eugene Loza.

  6. TCastleViewport.PositionToRay utility. This allows to get a 3D ray from a 2D viewport position and use this ray to e.g. perform collisions with the world geometry to determine anything you like.

  7. TUIContainer.SaveScreenRgba method allows to grab a screenshot to RGBA image. An example is in examples/short_api_samples/save_screen_rgba/save_screen_rgba.lpr.

  8. Fixed glTF look in case of no explicit material.

  9. Fixed gravity when reading glTF camera (in glTF, gravity is always +Y).

  10. Fixed TCastleViewport.Transparent to ignore X3D Background nodes (it was always documented like this, but got accidentally broken ~year ago).

Comment on this post ➤

Improvements to creatures and items from resource.xml (weapon reloading, automatic pool…), updated resource_animations and fps_game examples

Posted on

Zrzut ekranu z 2020-10-19 02-48-53
Zrzut ekranu z 2020-10-19 02-48-18
Zrzut ekranu z 2020-10-19 02-48-00
Zrzut ekranu z 2020-10-19 02-47-41

A number of improvements and fixes to creatures and items defined by resource.xml were done. Also, our example animations/resource_animations was completely redone, and example fps_game now has a proper gun for shooting 🙂

  1. Weapons defined by CastleItems support reloading, with reload animation, ammo capacity and currently loaded ammo. Demo in fps_game .

  2. Auto-determine pool of animations. For animations not defined by castle-anim-frames/MD3, using pool is most advised, to get performance and animation blending.

  3. Introduced orientation=”..” to resource.xml options. Allows to mix models in glTF, castle-anim-frames and any other formats easily within one project.

  4. resource_animations example is now:

    • designed using CGE editor.
    • it is much simpler, spawning creature “by the book” (using CreateCreature) instead of demonstrating its animations in hacky way.
    • clearly advises the approach “single glTF file” instead of setups with x3d/castle-anim-frames.
  5. The ShootingEye from fps_game with no/poor animations is replaced with a pretty plasma gun from OpenGameArt. The model has been retouched by Michalis and exports nicely to glTF.

  6. Deprecated using different URLs for different animations. See how to define animations in resource.xml. Different file per animation doesn’t match the advised usage (one glTF file with all animations), is not efficient (the same file will be switched back-and-forth to show various animation states, if reused by multiple creatures) and makes animation blending impossible.

  7. Fixed blinking of animation from castle-anim-frames when defined in resource.xml

  8. Fixed changing bounding sphere radius for resources loaded from resource.xml

Comment on this post ➤

Updated online conversion tool to X3D (from glTF, Spine, Collada, others)

Posted on


Our online conversion tool was updated to include all the latest improvements done in Castle Game Engine in the last months.

In particular, you can now use it to convert glTF 2.0 files to X3D (in classic or XML encoding) and the output will automatically use X3D PhysicalMaterial nodes to express glTF PBR materials.

In general our approach to convert glTF -> X3D is documented here. So if you’re unsure how given glTF construction is translated to X3D, this page probably has an answer 🙂

You can open the resulting X3D files in view3dscene or any other engine tool.

Reminder: you can also use view3dscene to do the same conversion (interactively or in batch mode). Use “File -> Save As X3D…” menu item, or command-line as documented here. We provide the online tool just as a convenience for people who don’t want to install view3dscene.

Comment on this post ➤

Andrzej Kilijański joins the development of Castle Game Engine

Posted on

I want to announce, with great excitement, that Andrzej Kilijański joined the development of Castle Game Engine as his part-time job since this October!

You already know Andrzej (and3md on Discord) 🙂 He wrote a number of articles about CGE, and provided many PRs focusing on physics (like settings, triggers, OnCollisionEnter, GetCollidingTransforms), mobile (like time, ASTC compression, admob updates) music (streaming!) and more. So I’m absolutely certain of his experience and dedication for our engine.

As I want our engine to grow, I decided we need to invest. Thanks to this, Andrzej will now be able to spend serious time developing CGE, and we will proceed to develop the engine at unparalled speed 🙂

I want to thank all our Patreon supporters at this point. The money you put in our project is making a serious difference. Please support the engine on Patreon if you like the engine!

Oh, and the tasks we do and their order are public on CGE Trello. That is the place where we coordinate work, and everyone is welcome to join.

Comment on this post ➤

Attach objects to (animated) bones, like weapon in character’s hand, by ExposeTransforms

Posted on

Zrzut ekranu z 2020-10-09 00-47-16
Zrzut ekranu z 2020-10-09 00-46-42
Zrzut ekranu z 2020-10-02 02-42-19
Zrzut ekranu z 2020-10-09 02-17-05

You can now easily attach objects to (animated) bones in your models, e.g. to attach a weapon to animated character’s hand.

This is performed by setting the TCastleSceneCore.ExposeTransforms property. It allows to “expose” transform nodes within a TCastleScene. Transform node is TTransformNode, which in particular represents “bones” animated by glTF and Spine. “Expose” means that we create children TCastleTransform instances, which follow these bones. Subsequently, you can place new scenes inside these children, e.g. add weapons to the hand bone.

It is all nicely visual, ExposeTransforms can be set in the CGE editor using a comfortable dialog box. The children transforms are automatically created and named.

You can also use ExposeTransformsPrefix to avoid name collisions.

See the example application examples/animations/expose_transformations_to_animate_children.

Comment on this post ➤

Upcoming talks about Castle Game Engine at conferences!

Posted on

Screenshot of selection at 2019-02-17 22:01:41
  1. On 9-13 November the Web3D 2020 conference will be held. This year, it is online and completely free! I recommend this event for people interested in the X3D standard, which is an important building block of our engine.

    I will have a short talk (20 minutes) about view3dscene capabilities, esp. in regards to new X3Dv4 features there.

  2. On 19-22 November, MiniDebConf Online #2 “Gaming Edition” will take place. It is also free and completely online. I recommend this event for people interested in Linux, Debian and gaming on these platforms. Actually my talk there will be quite universal, so you’re all invited 🙂

    I will give a talk presenting new Castle Game Engine 7.0 features during the “talks weekend” (21+22 November). It will be 35 min talk + 10 minutes for questions.

I will announce more as we get closer to these dates.

Comment on this post ➤

GameFromScratch review of Castle Game Engine

Posted on


Castle Game Engine was reviewed by GameFromScratch! Watch the video below 🙂

My first reactions:

  • I’m extremely happy that a number of good things about the engine (in particular editor, documentation, recent CGE for Unity page, support for many platforms and formats) were pointed out. The 12-minute video is packed with information, and most of it is exactly the information I want to emphasize to the new engine users. Which means that overall we’re doing a decent job of communicating “what the engine is all about”, since an “outsider” was able to figure it out and very nicely describe.

  • I browsed the comments under the video (wow, > 12000 views!). It is obvious that having a console port (Nintendo Switch) and some actually released games like The Unholy Society and Escape from the Universe (that look pretty, unlike our somewhat ugly examples) is an important factor for many people for judging the engine. So I’m glad we have those, and I’ll keep emphasizing them on our webpages 🙂

    And with this, a big plea to everyone who makes games using CGE: let me know about them, make screenshots, make movies, make announcements on your website — I want to reshare (and put in our gallery) all the pretty stuff you create. This stuff makes me personally happy, and it is a proof for others that “the engine can be actually used to create real, finished, polished games”.

  • I lament that there are ~5 seconds when the editor gizmo dragging doesn’t work on the video. That is most probably because the video was recorded right before we finished gizmos’ implementation. Gizmos rock today!

  • The author mentioned common Lazarus complaint: it opens a lot of windows 🙂 Note that Lazarus has actually since some time a solution to it (it is just not enabled by default): it’s called “anchored layout”. To use it, just open in Lazarus a package inside your Lazarus source code: components/anchordocking/design/anchordockingdsgn.lpk. Install this package (it will recompile Lazarus) and you have an IDE with docked windows! Much more manageable in my experience, even if still not ideal.

Comment on this post ➤

New Patreon rewards and goals since October, including plans for: training videos, conference+gamejam, Occulus port

Posted on

Castle Game Engine on Patreon

First of all, big thank you to everyone who already supports the engine on Patreon. If you like what we’re doing, please support us!

This announcement took a long time to write. I want to change our Patreon rewards and goals to be both more exciting (having CGE on VR was my dream for some time now 🙂 ) and also more realistic (as I announced last month).

Before we start, I wanted to tell you what “Patreon rewards” I rejected — because they are available already, for free, for everyone 🙂

  • A new developer, whose time will be paid by my savings, will join CGE in October! I will announce him officiallly next weekend 🙂
  • Remember that you can always contact me, describe your project, and ask for help. You can use Castle Game Engine forum, Discord and other ways, email or Keybase or just send a message through Patreon.

    I promise to look at everything. Simple questions or even fixes/improvements are always answered promptly, as you can probably see in the above communication channels 🙂

  • Remember that I welcome all your projects on our game gallery (or tools or components galleries). I want to link to you, I want to announce your projects, I want to reshare your screenshots and movies. I love seeing how you use CGE, this is incredibly motivating. Please send me screenshots / movies of what you’re doing with CGE right now 🙂

Moving on, these are new rewards for your support on Patreon on various tiers:

  • 5 USD tier allows you to “Request new training video”.

    The goal is that you can request a new training video on any CGE-related topic. I promise to have time each month to prepare at least 1 video on any subject that can “fit” anywhere between 5-45 minutes. The videos will be public (so everyone using the engine benefits) on our YouTube channel.

  • 10 USD tier becomes now “Request Next Engine Features, once every 2 months”.

    I want to openly admit that this is a downgrade to what I previously offered. This reward previously costed 5 USD, and I promised 1 feature every month. But I was not able to deliver it… And practically, developing requested features took me between 1 and 2 weeks of work (instead of “1 weekend”, as I initially envisioned). So I hope that the new plan will be more sustainable for me, and I will be able to deliver on-time what is promised.

    Of course features and games requested so far will be done ASAP, they are in my backlog and I want to do them. I have now feature “TCastleScene loading from stream”, and “Marble Madness game” in my backlog.

  • 50 USD tier remains unchanged: you get “Cloud Builds Server for Your Projects” and my eternal gratitude! I’m also thinking about introducing merch for this tier. Please let me know what do you think about this, as Patreon makes it super-easy to make and deliver.

  • Oh, and the 1 USD tier remains as just a basic way to support the engine. You also still get access to private posts on Patreon, but I do not want to commit to them regularly. I want to make everything public and open about the engine, so there wasn’t much opportunity for private posts in the past.

And here are new Patreon goals:

  • Upon reaching 250 USD / month support (I really hope we’ll reach it soon!) we organize Castle Game Engine online conference + gamejam!

    To celebrate this goal, we’ll organize a conference followed by a gamejam session! To start small, I want to devote a weekend toward it, with one day (Saturday) devoted to sessions (4-8 talks of 30 mins) and another day (Sunday) devoted to a gamejam. (Maybe we should switch gamejam and sessions days order?) Throughout the entire weekend, the primary goal will be to actually “meet” (online) and have a chance to talk together — CGE developers and users alike. There are many free tools to organize such event now, so I have no worries about the technical feasability of it 🙂

  • Upon reaching 500 USD / month we buy a good VR headset (in 200-300 USD price range) and port CGE to it.

    The goal is to buy a real, popular, powerful VR headset and make games for it 🙂 Which one we will actually buy — depends on when it will happen. A few months ago I was doing research, and would go for one of the Occulus variants, as they seemed to give biggest “bang for the buck” within 200-300 USD price range. The “optimal VR headset” may well be something different in 2021, so we will just make a final decision once we reach this goal. The explicit desire here is to buy something that has really good quality and significant user base.

  • Upon reaching 1000 USD / month we make “Cloud Builds Server for Your Projects (Jenkins)” accessible for all open-source projects, for free, and you can automatically register and use it.

    I described what it is on Cloud Builds (Jenkins) wiki page. Yes, we have it already running, and Jenkins and continuous delivery concept rock! I actually planned to make this available for free since a long time. However, making it secure and reliable when 100 projects and people (that don’t know each other) will start using it… proved to be a much more difficult task. So this now our goal on Patreon. The money would cover both the cost of development and maintenance of a specialized Jenkins instance, and the cost of actual servers.

Comment on this post ➤