Merging my Branch with the Trunk

Announcements and discussion regarding any projects related to Cyan Worlds' Plasma Engine including (but not limited to) CyanWorlds.com Engine, Drizzle, OfflineKI, PyPRP, and libHSPlasma.

Merging my Branch with the Trunk

Postby GPNMilano » Fri Nov 27, 2009 2:44 am

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.
You can't stop the truth. IC Blog
User avatar
GPNMilano
 
Posts: 1155
Joined: Mon Apr 21, 2008 5:50 am

Re: Merging my Branch with the Trunk

Postby D'Lanor » Fri Nov 27, 2009 3:05 am

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
User avatar
D'Lanor
 
Posts: 1980
Joined: Sat Sep 29, 2007 4:24 am

Re: Merging my Branch with the Trunk

Postby Jojon » Fri Nov 27, 2009 3:35 am

Wow! The future looks bright. B^)
Jojon
 
Posts: 1116
Joined: Sun Sep 30, 2007 5:49 am

Re: Merging my Branch with the Trunk

Postby GPNMilano » Fri Nov 27, 2009 3:47 am

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
User avatar
GPNMilano
 
Posts: 1155
Joined: Mon Apr 21, 2008 5:50 am

Re: Merging my Branch with the Trunk

Postby Robert The Rebuilder » Fri Nov 27, 2009 7:30 am

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.]
Can we rebuild it? Yes, we can - here's how.

MOULagain KI# 1299

Myst Movie coming soon - spread the word!
User avatar
Robert The Rebuilder
 
Posts: 1383
Joined: Sat Sep 29, 2007 7:24 am
Location: Virginia, US

Re: Merging my Branch with the Trunk

Postby diafero » Fri Nov 27, 2009 8:11 am

This sounds like some huge progress, wow!

So will this give us a pink-less Rell-too? If yes, that's already worth it :D :lol:
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
diafero
Deep Island Admin
 
Posts: 2904
Joined: Mon May 05, 2008 5:50 am
Location: Germany

Re: Merging my Branch with the Trunk

Postby GPNMilano » Mon Nov 30, 2009 11:02 am

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:

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
User avatar
GPNMilano
 
Posts: 1155
Joined: Mon Apr 21, 2008 5:50 am

Re: Merging my Branch with the Trunk

Postby DanTheMystFan » Wed Dec 16, 2009 9:46 am

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
User avatar
DanTheMystFan
 
Posts: 24
Joined: Sat Aug 09, 2008 9:42 am

Re: Merging my Branch with the Trunk

Postby GPNMilano » Thu Dec 17, 2009 11:19 am

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:
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
User avatar
GPNMilano
 
Posts: 1155
Joined: Mon Apr 21, 2008 5:50 am

Re: Merging my Branch with the Trunk

Postby Grogyan » Sun Dec 27, 2009 1:46 pm

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
User avatar
Grogyan
 
Posts: 1203
Joined: Thu Oct 11, 2007 1:27 am

Next

Return to Plasma Development

Who is online

Users browsing this forum: No registered users and 4 guests