Page 1 of 6

Korman 0.02 Released!

PostPosted: Tue Jul 21, 2015 7:38 pm
by Tsar Hoikas
After just 10 days, 59 commits, and 3,000+ lines of codes edited... Korman 0.02 is available for your usage!

This release includes a number of bug fixes and new features, including Python File nodes. Korman will let you load python scripts and generate node trees from them. Logic nodes have also been improved such that you can no longer connect nodes in ways that are invalid (or otherwise illegal). A number of new modifiers are included, such as an entire category for wavesets.

Here's the full changelog:
  • Added the Animation Group modifier
  • Added the Render Follow (FollowMod) modifier
  • Added the Render Swivel (ViewFaceMod) modifier
  • Added the Timed Callback Message logic node
  • Added the Enable Message logic node
  • Added the Exclude Region logic node
  • Added Python logic nodes
  • Added Water (waveset) modifiers
  • Added the ability to not regenerate baked vertex lighting
  • Changed the modifier list to be sorted by name
  • Changed logic nodes to not allow invalid node connections
  • Fixed a potential failure in the exporter related to the order in which Objects and modifiers were exported
  • Fixed an export failure encountered when the blend had objects that aren't exported as SceneObjects
  • Fixed many issues with Dynamic Text Map creation
  • Fixed an issue in which UVmap settings were ignored
  • Fixed an export failure that occured when objects had unapplied mesh modifiers
  • Fixed an issue in which a temporary (nonsense) mesh name was used in an error message
  • Optimized the texture exporter by reimplementing certain parts in C++
  • Optimized the mesh exporter by delaying certain object operations until they are absolutely needed
  • Removed the ability to name modifiers individually

fun fact: korman is 5,896 LOC

Re: Korman 0.02 Released!

PostPosted: Tue Jul 21, 2015 9:13 pm
by Charura
Nice!

Re: Korman 0.02 Released!

PostPosted: Tue Jul 21, 2015 9:33 pm
by Nev'yn
@Hoikas: Sorry for the pointless question....

...Hopefully you're taking a break when ya' read this...After all, you've been coding seemingly non-stop for a month now. Anys, so what are the conventions regarding software to release the Korman verison labeled 1.0? Oh, and where does the name Korman come from anyway?

Just curious!!!

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 1:29 am
by dendwaler
As in the first version i still have the pagenum problem,
when an 2.49B file is opened, the pagenumbers of all the objects are gone.
This forces me to add the pagenumbers one by one manually.
Not a nice job if you have thousends of objects on 14 pages!
Also in the alcscript exists many references to objects on different pages.
Like this :
receivers:
- 006D:Dagger2BlueButton@North

Can you solve this?

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 2:49 am
by Tweek
Nev'yn wrote:@Hoikas: Sorry for the pointless question....

...Hopefully you're taking a break when ya' read this...After all, you've been coding seemingly non-stop for a month now. Anys, so what are the conventions regarding software to release the Korman verison labeled 1.0? Oh, and where does the name Korman come from anyway?

Just curious!!!


Korman, or Kormahn as it is also spelled, is the D'ni word for Descriptive Book.

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 4:08 am
by janaba
Tweek wrote:
Nev'yn wrote:@Hoikas: Sorry for the pointless question....
...Hopefully you're taking a break when ya' read this...After all, you've been coding seemingly non-stop for a month now. Anys, so what are the conventions regarding software to release the Korman verison labeled 1.0? Oh, and where does the name Korman come from anyway?
Just curious!!!

Korman, or Kormahn as it is also spelled, is the D'ni word for Descriptive Book.

Interesting that someone would ask for that ... When I hear 'Kormahn' I sometimes feel reminded of Ashtar's Alcugs 'Great Tree TPotS Testing Shard' later called 'Kormahn Shard' (login screen for the shard btw) ... :P

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 4:10 am
by Sirius
And another impressive list of new features ! :)

My Age now exports without any problem, but I had to completely delete the biggest object - it caused Uru to crash at 3/4 of the loading bar (maybe it's because it used too many vertices ? Doesn't Korman check for objects that are too big ?).
So, I deleted that object, but now Uru crashes at the beginning of the loading bar. I had a quick look in the PRP, and I see it's missing the whole DrawableSpan ! :shock: DrawInterfaces are here, but they point to a nonexistant object, which Uru obviously hates.
Any idea what might be causing this ? My objects use only a single material with no texture or lightmap, and I am using two different pages (Uru loads the second page fine, but it only contains a single collider). Don't know if it helps :? I'll have a look later at removing some objects to see if there is an offending one...

DenDwaler wrote:As in the first version i still have the pagenum problem,
when an 2.49B file is opened, the pagenumbers of all the objects are gone.
This forces me to add the pagenumbers one by one manually.
Not a nice job if you have thousends of objects on 14 pages!
These page_num properties are still in the "Game Logic" panel, like when we were testing the 2.7 version of PyPRP, right ? I might have a solution for you.
First, setup all your pages in the World panel. You don't need to worry about their ID, but make sure their name is correct.
Then, open a "Text Editor" panel, create a new text, and paste the following code.
Code: Select all
import bpy

# put your pages with their number here
pages = {
    1: "your first page name here", # <-- you want to modify this
    2: "your second page name here", # <-- you want to modify this
    }

# this copies game properties into page attribute for Plasma Objects
for obj in bpy.context.scene.objects:
    for prop in obj.game.properties:
        if prop.name == "page_num":
            i = int(prop.value)
            obj.plasma_object.page = pages[i]

Now, you must edit this part of the script:
Code: Select all
pages = {
    1: "your first page name here", # <-- you want to modify this
    2: "your second page name here", # <-- you want to modify this
    }

This handles your pages using this format:
Code: Select all
PageId: "PageName",
The page ID and page names are those you used in your "Book" file in 2.49. It is crucial that they match exactly what you were using in this file.
Here is another example, if it can be of use:
Code: Select all
pages = {
    0: "mainRoom",
    1: "firstIsland",
    2: "tower",
    3: "etc",
    }

Finally, click the "Run Script" button. This should copy all the properties into the "Page" attribute Korman uses.

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 4:28 am
by janaba
This sounds like a wonderful solution and relief, like a miracle even, Sirius, for dendwaler's concern and issue and all who might need this, in case it would work ... :)

And Wow, just Wow! and Kudos! to you, Adam, our smart and diligent coding expert, and the H'Uru team, for the release of this comprehensive and speedy update ... :P

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 6:01 am
by Deledrius
Sirius wrote:
Code: Select all
import bpy

# put your pages with their number here
pages = {
    1: "your first page name here", # <-- you want to modify this
    2: "your second page name here", # <-- you want to modify this
    }

# this copies game properties into page attribute for Plasma Objects
for obj in bpy.context.scene.objects:
    for prop in obj.game.properties:
        if prop.name == "page_num":
            i = int(prop.value)
            obj.plasma_object.page = pages[i]

Finally, click the "Run Script" button. This should copy all the properties into the "Page" attribute Korman uses.


If only Blender had a YAML module installed by default, we could avoid any manual entry at all:
(At first I was surprised to think it was a default module, but I realized I only had YAML in mine because I had tried your PyPRP update)
Code: Select all
import bpy
import yaml

pages = [{entry["index"]: entry["name"]} for entry in yaml.load(bpy.data.texts["Book"].as_string().replace("\t","    "))["age"]["pages"]]

# this copies game properties into page attribute for Plasma Objects
for obj in bpy.context.scene.objects:
    for prop in obj.game.properties:
        if prop.name == "page_num":
            i = int(prop.value)
            obj.plasma_object.page = pages[i]

We could even add a Convert All button for Page assignment, since this information is (theoretically) accessible, but while we can write YAML using the built-in JSON parser, we can't (safely/reliably) parse YAML with it. I'd love to automate as much conversion from old Ages as possible, but without adding dangling or one-off dependencies.

Re: Korman 0.02 Released!

PostPosted: Wed Jul 22, 2015 6:27 am
by dendwaler
Thx Sirius ,

It does not work for me ,giving me the error message Python script fails, look into the console
There i find:

PYTHON INTERACTIVE CONSOLE 3.4.2 (default, Dec 8 2014, 22:52:33) [MSC v.1800 32 bit (Intel)]

Command History: Up/Down Arrow
Cursor: Left/Right Home/End
Remove: Backspace/Delete
Execute: Enter
Autocomplete: Ctrl-Space
Zoom: Ctrl +/-, Ctrl-Wheel
Builtin Modules: bpy, bpy.data, bpy.ops, bpy.props, bpy.types, bpy.context, bpy.utils, bgl, blf, mathutils
Convenience Imports: from mathutils import *; from math import *
Convenience Variables: C = bpy.context, D = bpy.data


Is it perhaps because i have several objects with an "non existing pagenumber" I have those for things that are not ready for export yet, for example : PyPRP can't export objects that are not textured.