Korman:0.12 Release Notes

Korman Burndown

Korman 0.12a was released on September 2, 2021. It represents 117 commits with approximately 5,500 lines of code changed since Korman 0.11a.


Help! I don't understand these options.

Changes from Korman 0.11 to Korman 0.12

  • Added support for first person cameras (thanks to Doobes for authoring this patch).
  • Added support for quaternion rotation keyframes (thanks to Hazado for co-authoring this patch).
  • [1] Added the ability to bake and reuse lighting in multiple exports.
  • [2] Added the ability to export multiple animations per object/texture.
  • Added the ability to remove or reset multiple Plasma Modifiers at once.
  • Added the Grass Shader modifier.
  • [3] Added the Localized Text modifier.
  • Added the Random Sound modifier.
  • Changed animated RT lights that are in a light group to only affect materials that reference that light group.
  • [4] Changed localization handling for MOUL Ages to match Cyan's localization databases.
  • [5] Changed texture offset animations to match in both Uru and Blender (thanks to Sirius for authoring this patch).
  • Fixed a potential crash when converting images exported by GIMP.
  • Fixed a potential problem in which Python material attribute nodes might not link to the exported layers correctly.
  • Fixed a problem in which parent objects might not generate a CoordinateInterface, resulting in incorrect visuals.
  • Fixed a traceback in the cube map generator when the filename does not contain an underscore.
  • Fixed a traceback in the cube map generator when the input image is not of the expected size.
  • Fixed a traceback in the exporter when trying to change the volume of a sound with a Sound Message node.
  • Fixed a very bad problem with lighmapped materials that were marked emissive.
  • [6] Fixed an issue in which box collision and rendering bounds might be sized incorrectly (thanks to Sirius for authoring this patch).
  • Fixed an issue in which objects with transforms might forget their transform after being enabled or disabled.
  • Fixed an issue in which material color animations might not function correctly on runtime-lit materials.
  • Fixed an issue in which Satan might subjugate too many materials if he was unleashed from the abyss.
  • Fixed an issue in which re-generated cube maps were not marked for re-caching on export.
  • Fixed an issue in which texture opacity animations might not function correctly on runtime-lit materials.
  • Fixed an issue preventing animation groups from controlling ObData animations, such as lamp colors (thanks to Sirius for authoring this patch).
  • Fixed an issue preventing shadow-only RT lamps from functioning (thanks to TikiBear for authoring this patch).
  • Fixed an issue with region sensors attaching to the wrong object (thanks to Sirius for authoring this patch).
  • [7] Implemented "Blender for Korman".
  • Improved vertex color baking by defeating self-occlusion artifacts (thanks to Sirius for authoring this patch).
  • Resurrected the exponential fog (distance squared) option (thanks to Doobes for authoring this patch).

Changes from Korman 0.12 to Korman 0.12a

  • Fixed a traceback when exporting certain convex hull colliders.



[2] Multiple animations can now be specified on objects and textures by a range of frames. This feature is currently considered experimental but will be critical for the introduction of GUIs in a future release of Korman. By default, all objects and textures will now have an animation named "(Entire Animation)" that consists of the entire range of exportable keyframes. You may add new animations with arbitrary frame ranges and control those animations by name using logic nodes. The "(Entire Animation)" may be deleted once you have created additional animations; however, it will be recreated if the animation modifier detects that all animations have been deleted.

As a side effect, all animated objects (except for fixed cameras) must have an animation modifier attached in order for animations to be exported. Additionally, the rules for addressing texture animations in the Animation Command node have been relaxed to not require specifying all of: the object, material, and texture. Now, only one of those must be specified.

Baked Lighting

[1] In previous version of Korman, Korman would always force you to wait for all of your Age's lighting to bake every time you exported. For some Ages, this grew to an excessive amount of time. Korman 0.12 adds toolbox operators that allow you to "Bake All" or "Bake Selected" lighting. Once you have done this, the objects that you have baked manually will no longer bake at export. This means that your exports will now be faster with the caveat that you will now need to manually press the "Bake All" or "Bake Selected" buttons again if the lighting in your Age changes significantly. This feature is optional, and you may retain the old behavior by either doing nothing or using the "Clear All" button to discard any baked lighting.

IMPORTANT: This feature has collateral damage! If any of your lightmaps were using the same UV map as the diffuse texture, then you may notice that the lighting on these objects now comes out "garbled". This is because Korman no longer attempts to sanitize or fix your lightmap UV maps. You will need to make sure that any lightmap UV maps do not have any overlapping faces. Blender can do this for you using the "Pack Islands" operator.

NOTE: You may want to let any lightmapped objects with Blender modifiers bake at export time due to the potentially changing nature of the UV maps.

Bounds Changes

[6] Sirius discovered that libHSPlasma, the library Korman uses to generate Uru game files, was computing box bounds incorrectly. The mode of failure was that the origin (0, 0, 0) was always being included as part of the object. This means that any box colliders you used in an Age might have been seemingly misplaced. More subtly, it means that more objects were being rendered in your Age than were needed, reducing gameplay performance. In testing, this change greatly reduces the number of onscreen polygons in game; however, the corrected bounds may have knock-on effects to runtime lighting. Be advised.

Blender for Korman

[7] When Blender Foundation shifted development focus from Blender 2.79 to Blender 2.80, they continued porting a handful of bugfixes and features to the Blender 2.79 code. These additions never made it into an official Blender 2.79c release. Further, as Blender 2.79b has aged, it has become increasingly difficult to continue to build the C++ code that powers Korman. With this in mind, we have begun producing "Blender for Korman" - the absolute latest work on the Blender 2.79 base combined with the latest Korman release. These "Korman for Blender" builds are currently considered experimental. However, we intend to fix any and all major problems with them and require Korman to be used with "Blender for Korman" in Korman 0.13 (the next release) and onward. Therefore, Blender 2.79b support should be considered deprecated.

Please note that once you save a blend file using these builds, it is unknown whether or not those blend files will work correctly with Blender 2.79b. Proceed with caution.

To assist in the migration to this new platform, we have produced re-releases of the last two Korman versions using the Blender for Korman platform:

In the future, we hope to offer working builds for more operating systems using this platform.


[3] The Localized Text modifier requires corresponding functionality in the game client. This functionality is included in H'uru clients (Destiny, Gehn Shard) built as of August 25, 2021. At release time, this is not supported in Path of the Shell; however, it will be added by a future release of the Offline KI.

[4] Previously, Korman exported all the localizations (eg journals) for all languages into a file called `<agename>.loc`. This becomes problematic for repository maintainers and translators, especially those who use Cyan's pfLocalizationEditor tool to edit or translate localizations. Cyan's tools generate separate .loc files for each language. Korman 0.12 has been updated to also produce single .loc files for each language by default. If your Age is already being distributed on a MOUL shard and has journals, then you need to be aware that the new files and the old single file may come into conflict with each other. To fix this issue, you can set the "Localization" drop-down on the world panel to "Localization Database (Compat Mode)" mask out the old file. To get the old behavior back, chose "Single File" (not recommended).

Texture Offset Changes

[5] Previously, Korman exported texture Y offsets incorrectly. This has been corrected, and, as a consequence, you may notice that any "vertical" texture animations are running in reverse. To fix this, subtract one by the offset Y value.