Merging my Branch with the Trunk
Merging my Branch with the Trunk
I haven't updated my branch since I have returned to the fold, but and am in the process of updating my version of PyPRP so that it's more compatible with the current versions before doing so.
However, Christian and I were discussing my changes. He has, for now, stepped aside from developing the trunk to deal with other stuff. So he has asked me to post here regarding my changes so that we (The Developers and the GoW's in general) can all discuss some of the stuff that I've developed in my off time:
So, let's run down the list of stuff:
prp_MatClasses
Lot's of changes were made since my last update to my branch. The majority of them were superficial. Things were mapped to just about every button in blender, that would allow for it, to access just about every possible flag you could set for a material or layer. The upside of this is that it's a pretty powerful tool that runs much more efficiently in game.
The coloring of layers is now entirely on a pre-layer basis, save for the Specular coloring. Layer Animations now are also entirely on a pre-layer basis. The downside to this is that a wizard will have to be written that will map the current layout of colors to the new scheme, which, really isn't all that difficult.
Included with the animations is now plLayerBink's and plLayerAVIs. Those unfamiliar with these, they are essentially what the linking panels in Myst V were. They reference a bik file that you place in the avi folder, and play a movie on the layer. These are entirely exported with PyPRP and require no manual editing of files. You just load up the original file (the avi) into Blender, and chose the movie rather than image source. You'll also need alcscript to define the length of the playback. Once you've exported you drop the converted avi or video file (the bik version) into the avi folder of Uru and away you go.
plLayerSDLAnimations and plLayerLinkAnimations are also supported. LayerSDL's are an animation that in reference to the time of day of your age they're used for day night cycles. The variable is defined in your alcscript, and you need to add it to your SDL file for the age. LayerLinkAnimations are the avatar animations that play upon linking into an age.
Along with the animations changes, there is also a new blending techine using funkramps. These are useful for things like sprites and blades of grass. They work just like the stenciling technique we currently have. You just need to use a alpha blend image (like those we already use for stenciling) and activate the "FromDuplicates" button in the MTex section of Blender.
prp_GuiClasses
Paradox, when he gets a chance, is going to go over these with a fine tooth comb, but the majority save one or two classes, of the entire GUI spectrum of classes has been coded and can all be exported via PyPRP. These include GuiButtons, GuiTextChat mods and a wide arrange of other useful gui tools.
prp_LogicModifiers/prp_Messages
MultiStageBehMods, ExcludeRegionModifers(And its associated message class), AnimEventModifier, and SeekPointMods. There are also two additional DynDecalMgr classes. They are DynaBulletMgrs and DynaTorpedoMgrs. EaxListenerMods have been in my branch for awhile. There's already some documentation on them on the wiki, I don't believe however that they were included with the latest release of pyprp.
prp_ParticleClasses
I took the liberty of taking some of Lontahv's work with Particle Sytems and mapping it to Blender's particle system interface. There's alot left to be done there so support is completely minimal.
New Stuff:
prp_AVClasses
This is an entirely new prp to us. It's basically the very beginnings of Avatar Creation and modifying, however it's very minimal, just some modifiers at this point. NPCSpawnMods, AliasModifiers and ArmatureLODMods along with some broken stuff. Nothing that should be included in the trunk yet. Eventually, once I figure out some of the avatar stuff it'll be where custom clothing creation, custom avatars and the like will go.
PyPRP AlcScript Dictionary
This is a fun new tool, it's going to be in the prp wizard interface, and will be the host of various commonly used alcscript functions like logic modifiers and responders. When one is chosen from the list it automatically adds an empty alcscript for that modifier to wherever the cursor is in the alcscript file. it's handy for quickly scripting a long list of responders or modifiers.
That's everything I think. I might have missed some stuff and if I have I'll add it to the list later.
However, Christian and I were discussing my changes. He has, for now, stepped aside from developing the trunk to deal with other stuff. So he has asked me to post here regarding my changes so that we (The Developers and the GoW's in general) can all discuss some of the stuff that I've developed in my off time:
So, let's run down the list of stuff:
prp_MatClasses
Lot's of changes were made since my last update to my branch. The majority of them were superficial. Things were mapped to just about every button in blender, that would allow for it, to access just about every possible flag you could set for a material or layer. The upside of this is that it's a pretty powerful tool that runs much more efficiently in game.
The coloring of layers is now entirely on a pre-layer basis, save for the Specular coloring. Layer Animations now are also entirely on a pre-layer basis. The downside to this is that a wizard will have to be written that will map the current layout of colors to the new scheme, which, really isn't all that difficult.
Included with the animations is now plLayerBink's and plLayerAVIs. Those unfamiliar with these, they are essentially what the linking panels in Myst V were. They reference a bik file that you place in the avi folder, and play a movie on the layer. These are entirely exported with PyPRP and require no manual editing of files. You just load up the original file (the avi) into Blender, and chose the movie rather than image source. You'll also need alcscript to define the length of the playback. Once you've exported you drop the converted avi or video file (the bik version) into the avi folder of Uru and away you go.
plLayerSDLAnimations and plLayerLinkAnimations are also supported. LayerSDL's are an animation that in reference to the time of day of your age they're used for day night cycles. The variable is defined in your alcscript, and you need to add it to your SDL file for the age. LayerLinkAnimations are the avatar animations that play upon linking into an age.
Along with the animations changes, there is also a new blending techine using funkramps. These are useful for things like sprites and blades of grass. They work just like the stenciling technique we currently have. You just need to use a alpha blend image (like those we already use for stenciling) and activate the "FromDuplicates" button in the MTex section of Blender.
prp_GuiClasses
Paradox, when he gets a chance, is going to go over these with a fine tooth comb, but the majority save one or two classes, of the entire GUI spectrum of classes has been coded and can all be exported via PyPRP. These include GuiButtons, GuiTextChat mods and a wide arrange of other useful gui tools.
prp_LogicModifiers/prp_Messages
MultiStageBehMods, ExcludeRegionModifers(And its associated message class), AnimEventModifier, and SeekPointMods. There are also two additional DynDecalMgr classes. They are DynaBulletMgrs and DynaTorpedoMgrs. EaxListenerMods have been in my branch for awhile. There's already some documentation on them on the wiki, I don't believe however that they were included with the latest release of pyprp.
prp_ParticleClasses
I took the liberty of taking some of Lontahv's work with Particle Sytems and mapping it to Blender's particle system interface. There's alot left to be done there so support is completely minimal.
New Stuff:
prp_AVClasses
This is an entirely new prp to us. It's basically the very beginnings of Avatar Creation and modifying, however it's very minimal, just some modifiers at this point. NPCSpawnMods, AliasModifiers and ArmatureLODMods along with some broken stuff. Nothing that should be included in the trunk yet. Eventually, once I figure out some of the avatar stuff it'll be where custom clothing creation, custom avatars and the like will go.
PyPRP AlcScript Dictionary
This is a fun new tool, it's going to be in the prp wizard interface, and will be the host of various commonly used alcscript functions like logic modifiers and responders. When one is chosen from the list it automatically adds an empty alcscript for that modifier to wherever the cursor is in the alcscript file. it's handy for quickly scripting a long list of responders or modifiers.
That's everything I think. I might have missed some stuff and if I have I'll add it to the list later.
You can't stop the truth. IC Blog
Re: Merging my Branch with the Trunk
GPNMilano wrote:plLayerSDLAnimations and plLayerLinkAnimations are also supported. LayerSDL's are an animation that in reference to the time of day of your age they're used for day night cycles. The variable is defined in your alcscript, and you need to add it to your SDL file for the age.
What exactly is the difference with the Global SDL Animations described here in the wiki? I have already used these and they work fine in PyPRP 1.6.
"It is in self-limitation that a master first shows himself." - Goethe
Re: Merging my Branch with the Trunk
Wow! The future looks bright. B^)
Re: Merging my Branch with the Trunk
D'Lanor wrote:GPNMilano wrote:plLayerSDLAnimations and plLayerLinkAnimations are also supported. LayerSDL's are an animation that in reference to the time of day of your age they're used for day night cycles. The variable is defined in your alcscript, and you need to add it to your SDL file for the age.
What exactly is the difference with the Global SDL Animations described here in the wiki? I have already used these and they work fine in PyPRP 1.6.
Because those are object animations. Slightly different. Basically it's the same thing except rather than the object being animated (like with AgeGlobalAnims) the LayerAnimation has the globaltimevar. The sky, sun and moon and vista in Gira for instance are a plLayerSDLAnimations. While the lamps that control the shading for the ground and objects are controlled by AgeGlobalAnims. Just like we move objects with normal animations, and animate colors with layer animations. AgeGlobalAnims move the object based on the time of day, while layersdlanimations animate the colors and uv-coordinates based on the time of day. Prior to my changes this was buggy because the colors had to be mapped via a pre-layer basis for a good looking visual of day to night. Now that it's possible to do so, they can be exported.
You can't stop the truth. IC Blog
- Robert The Rebuilder
- Posts: 1383
- Joined: Sat Sep 29, 2007 7:24 am
- MOULa KI#: 1299
- Location: Virginia, US
Re: Merging my Branch with the Trunk
Welcome back, GPNMilano! I've been waiting on the layer SDL animations for quite some time.
[Note to Rell-too explorers: This is why it's so pink - the background color would have faded with the sun cycle, but not without this feature.]
[Note to Rell-too explorers: This is why it's so pink - the background color would have faded with the sun cycle, but not without this feature.]
Can we rebuild it? Yes, we can - here's how.
MOULagain KI# 1299
Myst Movie coming soon - spread the word!
MOULagain KI# 1299
Myst Movie coming soon - spread the word!
-
- Deep Island Admin
- Posts: 2972
- Joined: Mon May 05, 2008 5:50 am
- MOULa KI#: 0
- Location: Germany
Re: Merging my Branch with the Trunk
This sounds like some huge progress, wow!
So will this give us a pink-less Rell-too? If yes, that's already worth it

So will this give us a pink-less Rell-too? If yes, that's already worth it


I prefer e-mails to "diafero arcor de" (after adding the at and the dot) over PMs.
"Many people's horizon is a circle with a radius of zero. They call it their point of view."
Deep Island Shard | Offline KI
"Many people's horizon is a circle with a radius of zero. They call it their point of view."
Deep Island Shard | Offline KI
Re: Merging my Branch with the Trunk
Update:
Most of the new stuff is located in my contrib. I did the best I could to merge it with the current version of pyprp, but there may be some things missing.
Note:
the prp_MatClasses is useable but you'll need to adjust your colors before exporting. It'll still export fine, however the ambient color is mapped to the mtex.col pallette, whose default setting by blender is a shade of purple rather than white. Till a wizard can be written to upgrade from the current scheme to the one located in the my matclasses it'll all have to be done manually (this includes layer animations, as they to are now handled MUCH differently than before.)
a layer animation with both offsets and color animations require two ipos. One for the runtime color (which is located under the texture ipo channel) and the rest under the material channel as it was before. No matter what animation you have though, if you're animating a color and not the offsets, or vice versa, it only requires one to export correctly. So you can animate the offsets and size without the color and vice versa. The plugin handles this upon export.
If you want your layer animations to be sdlanimations the script for this in alcscript is:
If you want to export a layerlinkanimation the necessary script is:
feel free to play around with it and see what you guys think. if you have any questions about the various flags and what buttons do what now I'll be glad to post a comprehensive list.
Most of the new stuff is located in my contrib. I did the best I could to merge it with the current version of pyprp, but there may be some things missing.
Note:
the prp_MatClasses is useable but you'll need to adjust your colors before exporting. It'll still export fine, however the ambient color is mapped to the mtex.col pallette, whose default setting by blender is a shade of purple rather than white. Till a wizard can be written to upgrade from the current scheme to the one located in the my matclasses it'll all have to be done manually (this includes layer animations, as they to are now handled MUCH differently than before.)
a layer animation with both offsets and color animations require two ipos. One for the runtime color (which is located under the texture ipo channel) and the rest under the material channel as it was before. No matter what animation you have though, if you're animating a color and not the offsets, or vice versa, it only requires one to export correctly. So you can animate the offsets and size without the color and vice versa. The plugin handles this upon export.
If you want your layer animations to be sdlanimations the script for this in alcscript is:
Code: Select all
"YourObject":
visual:
sdlanim:
sdlname: "your sdl variable"
If you want to export a layerlinkanimation the necessary script is:
Code: Select all
"YourObject":
visual:
linkanim:
linkkey: "YourObject"
leavingage: "True"/"False"
feel free to play around with it and see what you guys think. if you have any questions about the various flags and what buttons do what now I'll be glad to post a comprehensive list.
You can't stop the truth. IC Blog
- DanTheMystFan
- Posts: 24
- Joined: Sat Aug 09, 2008 9:42 am
Re: Merging my Branch with the Trunk
Would you mind explaining how to implement GUIButtons in AlcScript? I can't seem to get them to work. I looked through how to manually do it and it looks like I need to set a modifier on the SceneObject, but I'm not sure how I can go about that, or if that's necessary.
Thanks,
Dan
Thanks,
Dan
Re: Merging my Branch with the Trunk
NOTICE:
This will only work using changes from my contrib of PyPRP and is not in any released version of pyprp or the NightlyTrunk.
Dan, if you've downloaded or updated your version of pyprp with some of my changes, please be careful in that some of the stuff isn't completely finished. But for buttons with GUIs you need to download the updated prp_GUIClasses in my contrib, merge some stuff from prp_RefParser and some stuff from prp_File and prp_LogicModifier.
You should be able to find what you need in those files. Basically you want the stuff referring to the class pfGUIButtonMod.
Once you get everything set up the resulting alcscript is
For the Button:
This should be attached to whatever physical object in blender you're using for your GUI button.
The Tag ID is irrelevant if you're not using a python script for a complex dialog with lots of buttons. For the default paper dialog you'll find in places like ChloesHoodOffice the BaronCityOffice and scattered in the city, it uses the value of 99 as that seems to be the default value they chose.
Also in the script for the actual dialog object:
This is important as it connects your button to the dialog.
Hope this helps.
This will only work using changes from my contrib of PyPRP and is not in any released version of pyprp or the NightlyTrunk.
Dan, if you've downloaded or updated your version of pyprp with some of my changes, please be careful in that some of the stuff isn't completely finished. But for buttons with GUIs you need to download the updated prp_GUIClasses in my contrib, merge some stuff from prp_RefParser and some stuff from prp_File and prp_LogicModifier.
You should be able to find what you need in those files. Basically you want the stuff referring to the class pfGUIButtonMod.
Once you get everything set up the resulting alcscript is
For the Button:
Code: Select all
logic:
actions:
- type: guibuttonmod
name: (TheNameofYourButton
guibuttonmod:
tagid: (1-Whatever)
flags:
- inheritprocfromdlg
- wantsinterest
This should be attached to whatever physical object in blender you're using for your GUI button.
The Tag ID is irrelevant if you're not using a python script for a complex dialog with lots of buttons. For the default paper dialog you'll find in places like ChloesHoodOffice the BaronCityOffice and scattered in the city, it uses the value of 99 as that seems to be the default value they chose.
Also in the script for the actual dialog object:
Code: Select all
dialog:
tagid: 0
name: (NameOfYourDialog)
camera: posteffectmod:(NameOfYourDialog)
modal: false
controls:
- guibutton:(NameOfYourButton)
This is important as it connects your button to the dialog.
Hope this helps.
You can't stop the truth. IC Blog
Re: Merging my Branch with the Trunk
Looks like i'll soon be able to implement some GUIs for various puzzles I want to do
Better to have loved and lost than never to have loved at all