# November improvements: huge animation upgrade, guidelines about AI usage, Codeberg mirror, various fixes

**URL:** https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056
**Category:** News
**Created:** [December 1, 2025, 7:34pm UTC](https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056 "2025-12-01T19:34:43Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [December 1, 2025, 7:34pm UTC](https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056/1 "2025-12-01T19:34:44Z")

</div>

| [![Displaying a crowd of characters animated using skinning in glTF](https://forum.castle-engine.io/uploads/default/original/2X/f/f51a55c6e02564ccc72afb7f687ec0d0ef3b7e0b.png)](https://castle-engine.io/wp/wp-content/uploads/2025/12/skin_crowd.png "Displaying a crowd of characters animated using skinning in glTF") |
| [![Skinned animation of an alien](https://forum.castle-engine.io/uploads/default/original/2X/f/f9c34540045289eb7ae7b77aa9e688822f16ff2c.png)](https://castle-engine.io/wp/wp-content/uploads/2025/12/skin_alien.png "Skinned animation of an alien") |
| [![Skinned animation of a fox](https://forum.castle-engine.io/uploads/default/original/2X/2/2ce2b7fefbc764bf5778e1ad97c4676399db758b.png)](https://castle-engine.io/wp/wp-content/uploads/2025/12/skin_fox.png "Skinned animation of a fox") |

We have a few things to report from November. Enjoy 🙂

1. We have merged a big branch with numerous improvements to our animation handling (skinned animation and other). The important [new functionality is documented here](https://castle-engine.io/skin). This merge features:
  - _Skinned animation_ loaded from glTF is now performed on GPU (mesh is deformed using shaders). This allows such animations to be loaded much faster, take much less memory, and be more efficient at the same time. You can animate a big crowd of characters using this technique.

  - The same efficient skinned animation can be defined in X3D using new [Skin node](https://castle-engine.io/skin).

  - [animate\_bones\_by\_code](https://github.com/castle-engine/castle-engine/tree/master/examples/animations/animate_bones_by_code) example was updated to showcase this, including skinned animation and huge crowd test.

  - We have [fixed loading/saving of matrix values from X3D](https://github.com/castle-engine/castle-engine/tree/master/tests/data/matrix_vrml_x3d_format).

  - The `OptimizeExtensiveTransformations` flag is deprecated and does nothing now, because the related optimization is now done _always, unconditionally, and for all animations_ (including _Skin_, _H-Anim_, and regular animation of transformations without the skin). The optimization has been reworked to be “always a gain”, by updating a set of sub-trees.

  - The `InternalFastTransformUpdate` flag does not exist anymore. This optimization is also now done _always, unconditionally, for all animations_, and it benefits all animations of transformations (with or without skinned animation).

  - I have a longer version of this news… but I also want to extend this work even more, in particular to pass joints information using a texture. Current implementation limits number of joints that can be handled by a shader: when the joints count is \> 128 it falls back to CPU animation. We can make it better and handle almost ~any number of joints by passing their information in a different way.

2. We have published [guidelines for AI usage in Castle Game Engine](https://castle-engine.io/ai).

3. We maintain now a mirror of our repositories at [Codeberg](https://codeberg.org/castle-engine). GitHub is not your only choice 🙂 We intend to explore it more, including their CI/CD as alternative to [GitHub Actions](https://castle-engine.io/github_actions).

4. Improved reading “extra” glTF data into X3D metadata, to put JSON contents into X3D metadata when we don’t have a better option.

5. glTF reading is also a bit faster, as we use bounding box from glTF _“accessor”_ (no need to calculate it on our side in some cases).

6. Fixed and improved _“Edit -\> Visualize H-Anim Joints”_, _“Edit -\> Visualize Skin Joints”_ in [Castle Model Viewer](https://castle-engine.io/castle-model-viewer).

7. Workarounded [Delphi 13 crashing when building our engine in release mode](https://github.com/castle-engine/castle-engine/issues/699).

8. Important fix for processing textures from [data URI](https://castle-engine.io/url#_embedded_data_data) (caching was way too agreessive resulting in wrong textures used).

---

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [December 1, 2025, 7:39pm UTC](https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056/2 "2025-12-01T19:39:44Z")

</div>



---

<div class="post-metadata">

### Author: ![edj](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/edj/32/1701_2.png) [@edj](https://forum.castle-engine.io/u/edj)
#### Post date: [December 2, 2025, 3:27pm UTC](https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056/3 "2025-12-02T15:27:48Z")

</div>

So the big crowd of characters can be doing different movements unsyncronized? In the past too many animated animals was killing me. Maybe I should revisit.

---

<div class="post-metadata">

### Author: ![michalis](https://forum.castle-engine.io/user_avatar/forum.castle-engine.io/michalis/32/3_2.png) [@michalis](https://forum.castle-engine.io/u/michalis)
#### Post date: [December 3, 2025, 1:14pm UTC](https://forum.castle-engine.io/t/november-improvements-huge-animation-upgrade-guidelines-about-ai-usage-codeberg-mirror-various-fixes/2056/4 "2025-12-03T13:14:59Z")

</div>

> [@edj](#):
>
> So the big crowd of characters can be doing different movements unsyncronized? In the past too many animated animals was killing me.

Indeed, our animation improvement addresses your past problems 🙂

Loading `TCastleScene` with animation is now much faster and takes less memory (because we don’t precalculate animation frames). So you can have create multiple independent `TCastleScene`, that can play different animations (or different time of the same animation) independently, and they will work nicely 🙂

Take a look at the “Test Crowd” in [animate\_bones\_by\_code](https://github.com/castle-engine/castle-engine/tree/master/examples/animations/animate_bones_by_code) example. We create a number of independent scenes, and then we create even more “dependent” by TCastleTransformReference. Together, these multiply and create a big crowd that still works 🙂
