Older release notes: Updating Ages for PyPRP 1.0


New Features

  • Added support for Dynamic Text Maps (GPNMilano)
  • Added support for Maintainer's Markers (GPNMilano)

Bug Fixes

  • Fixed alpha edge artifacts (Tachzusamm)
  • Improved vertex efficiency (Tachzusamm)

Changed Features

  • Added better waveset defaults such that they display on ancient graphics cards (D'Lanor)
  • Corrected spot light size calculations (D'Lanor)
  • Improved elasticity and friction coefficients (D'Lanor)


New Features

  • Added support for external WAV and OGG files, and support for Cyan/URU OGG files. Loading the Sound in Blender (Robert The Rebuilder)
  • Alternative way of computing normals for objects with flat faces and rounded edges. Normal Recomputation (CWalther)
  • New QuickScript_StateAnimation added. StateAnimation (D'Lanor)
  • QuickScript_SDLIntActEnabler: modified to recognize StateAnimation activator. SDL IntActEnabler (D'Lanor)
  • New message: plEventCallbackMsg, proper support for plMessageWithCallbacks. Callback Messages (Nadnerb)
  • Added plOccluder export: objects with type: occluder are exported as occluders. How to use them however is not known yet. (Nadnerb)
  • QuickScript_StateAnimation: added option to temporarily disable the clickable activator. StateAnimation (D'Lanor)
  • QuickScript selfanimation: added seekpoint option. SelfAnimation (D'Lanor)
  • Allow setting of visual.icicle AlcScript flags by name. Drawable Flags (Nadnerb)
  • Export the modified mesh for objects that have modifiers. Export with Modifiers Applied [1] (CWalther)
  • Kickables can now have user-defined collision geometry. Mobile Objects (Robert The Rebuilder)
  • Texture scale can now be animated. Animating Textures (tikibear)
  • Added support for simple GUI dialogs. GUI Dialog (Paradox, GPNMilano, D'Lanor)
  • PyPRP is installed as a single folder now. (CWalther)

Changed Features

  • QuickScript_SimpleClickable: can play a single animation now, autorun option now consequently affects all actions, start actions either automatically or through Python. [2] (D'Lanor)
  • Visregions are no longer inverted. Visregions [3] (Paradox & CWalther)
  • "none" parameters no longer actually write params to pythonfilemods, and instead behave as "spacers" to change the param indexes. (Nadnerb)
  • Shadows are now twice as strong for any given light. [4] (CWalther & D'Lanor)
  • Changed AlcScript schema for setting DrawableSpan RenderLevel, Drawable Props and Criteria flags. Drawable Flags, Managing Transparent Objects (Paradox)

Bug Fixes

  • Fixed double export of sound emitters. (D'Lanor)
  • Fixed Python error when exporting a sprite with no flags specified (typo in code). (Hoikas)
  • Fixed incorrect export of soft volumes that have a rotation or scale. (CWalther)
  • Fixed a typo to allow use of extended soft volume syntax (!(...) etc.) for visregions. (CWalther)
  • Put layers that are flagged as lightmaps using the "Amb" button in the material "Map To" panel into the "piggybacks" list. Lightmaps [5] (Nadnerb)
  • Fixed "createnewdefaultcam" camera message AlcScript command (previously not recognized at all). (Nadnerb)
  • Fixed repeated texture compression when two materials in Blender use the same texture image. (CWalther)
  • QuickScript_SoundRegion: matched volume to emitter. [6] (D'Lanor)
  • Fixed incorrect alpha component on exported vertex colors when no "Alpha" vertex color layer is present. (Paradox)
  • Footprint and Ripple materials no longer get the MADD blendflag set that removed intermediate transparency levels (forcing pixels to either fully transparent or fully opaque). (Nadnerb)
  • Recognize the "Alpha" vertex color layer by its name (case-insensitively) instead of simply checking for a second layer. (Nadnerb)
  • Fixed MemoryError during checksumming at the end of an export. (CWalther)
  • Fixed kickables passing thru each other. Remembering the ball's location (Robert The Rebuilder)
  • QuickScript_StateAnimation: oneshot callback marker must be specified separately now. Previous assumption that <marker name> = <animation name> was wrong. StateAnimation [7] (D'Lanor)
  • QuickScript_SoundRegion fixes: forces object type to logic region, soundemitters list processing works properly now. Controlling your Sound with Regions (D'Lanor)
  • QuickScript_SoundRegion: added enter and exit triggers to objectinvolume. (did not have any effect until 389 (380)) (D'Lanor)
  • QuickScript_Footstep: multiple footstep sounds were not appended conform "specs". (D'Lanor)
  • Fixed Uru crash with ages exported for ABM/UU. (D'Lanor)
  • Fixed potential MemoryError when reading files (e.g. texture cache). (CWalther)
  • QuickScript_SoundRegion: multiplayer sync issue fixed. (D'Lanor)
  • Fixed dynamic environment map coordinates for objects with parents, ipos, or tracking. (CWalther)
  • Fixed animation of opacity using the 'Col' material ipo curve. Animating Textures (Paradox)
  • Fixed operation on PowerPC Macs or other big-endian machines. (CWalther)
  • Texture offset and scaling (static or animated) now matches what Blender displays (unfortunately only in the Render Preview (Shift-P) or full render, not in the textured real-time display). [8] (tikibear)
  • Fixed cross-page references. (Paradox & CWalther)

Compatibility with PyPRP 1.5

Some of the changes in this release may break existing ages, in the sense that something exports differently than it did with PyPRP 1.5. These are marked with a number in square brackets in the list above. Here are the details of what has changed, and what to do to your Blender file to have your exported age look the same as before:

  • [1] Modifiers are applied. To get the old behavior back: Remove modifiers. (But why would you have modifiers but not want to apply them?)
  • [2] Sound or animation may no longer play when combined with Python. To get the old behavior back: Start through Python (example will be in docs) or add autorun: true to your quickscript.
  • [3] Visibility of objects with visregions is reversed. To get the old behavior back: For objects with a single visregion, invert the soft volume by using an inverse soft volume, adjusting in- and outstrength, or, if a single plane, flipping the normal. Multiple visregions on an object require a more extensive reorganization, or put the kIsNot flag back using a PRP editor, or wait for a PyPRP version that allows specification of visregion flags.
  • [4] Shadows are stronger. Impossible to get the old behavior back (could halve light energy to restore weak shadows, but that obviously changes the rest of the lighting).
  • [5] Lightmaps appear brighter in moderately-lit areas. This is more correct, but can be undesired if you compensated for the darkening by making the lightmap brighter. To get the old behavior back: Turn off the "Amb" button so that the lightmap is treated as a plain multiplicative layer.
  • [6] Sound may be too soft if you lowered the volume of the ogg file as workaround. To get the old behavior back: Set emitter volume to 1.
  • [7] Default callback comes at end of animation now. To get the old behavior back: Specify marker.
  • [8] Y offset is reversed and scaling is applied from the center of the texture, not from a corner. Using sizeZ as an additional scaling factor is no longer supported. To get the old behavior back: Use the conversion script under PyPRP Wizards. Conversion might be impossible if you used extreme values.

Conversion Wizards

Wizards have been added to PyPRP that check your Blender file for some of the compatibility issues listed above and can automatically update some aspects of your age to restore the way it exported with PyPRP 1.5. Not all points are checked or converted, so be on the lookout for changed details and consult the list above even after using the wizards. For some points, a check is implemented, but conversion will have to be done manually if needed.

To use the wizards:

  1. Make a backup copy of your Blender file.
  2. Open your age in Blender and open a Scripts window by choosing Scripts Window from the window type menu in the lower left corner of an existing or new window.
  3. From the Scripts menu, choose Wizards > PyPRP Wizards.
  4. In the menu that pops up, choose 1.5 to 1.6 - Compatibility Report. Blender checks your age, but no modifications are done yet. If it tells you "No issues found", you're done here. Otherwise:
  5. Change the Scripts window to a Text Editor window using the window type menu in the lower left corner.
  6. Choose Compatibility Report from the data block menu at the bottom. Any compatibility issues found are described in the text that shows up.
  7. If the compatibility report tells you that some issues can be converted automatically (currently, this is only implemented for texture scales and offsets), change the window back to a Scripts window and run PyPRP Wizards again. In the menu that pops up, choose the appropriate option labeled with "1.5 to 1.6" (e.g. 1.5 to 1.6 - Convert Texture Transform). It will perform the conversion and present you with a short summary of what it did.
  8. When you're done with the compatibility check, you may delete the Compatibility Report text block using the X button next to the data block name in the Text Editor window.