Jump to content

Schemer / Skinner


photo

Recommended Posts

Has anyone used or had much success with the schemer/skinner. Is it stable enough to use.

 

Im looking at the viability of using it for game logic and behaviours, in a similar way to cryengine flowgraph.

 

It would be good to see Unigine create some more complex examples to show what could be achieved with the current implementation.

Link to comment

Skinner is used for the whole range of animations combined together (blended, added, subtracted, etc). So it can be used to create very complex animations. And it's definitely fast. That's the main point.

  • Check skinner samples.
  • Check shooter prototype, all agents there are animated via Skinner.

Link to comment
  • 10 months later...

Hi,

 

i use SkinnedMesh class for control animations, but i have problem, i can compile control script only 47x, after this number i get:

memory:747:NameSpace::NameSpace(): maximum namespace is 65535

 

I use Skinner as singleton and SkinnedMesh for each instance.

How can clean NameSpace for more compile this script?

 

Script have about 152 blocks, it control 23 animations, 39kb script and code have 95kb file size.

 

Thanks

Honya

Link to comment

That i used Skinner how you write, but how i extend control script, i can compile it less than before, that it is my problem.

 

Optimal i like compile it about 200 times, that means about 200 characters in one scene that do animations from players input using this script.

Link to comment
  • 3 months later...

I guess that i create too complex script for my expected count of SkinnerMesh instances, so i will convert it to the script's classes.

 

And i have few question about Schemer, than i like to know for better use and optimalization.

Is anywhere list of limitation for Schemer, what may cause troubles?

How many blocks can be in Schemer, until i get "maximum namespace" error?

If i use less blocks, but larged code in blocks, then it can increase count of compilate, until i get "maximum namespace" error?

 

I like to know it, when i will working with Shemer again.

 

Honya

Link to comment
  • 2 months later...

Hi Honya,

 

Sorry for the late reply.

We could not reproduse such behavior. So, if it is possible, could you please send us your sample as the test scene?

Thanks!

Link to comment
  • 3 weeks later...

Hello Honya,

Sorry for the late reply.

It's hard to determine any limitations for the skinner/schemer. The bigger script you have the less characters in the scene could be controlled over this script.
You can control about 1,5 thousands of characters with the minimal skinner script which contains 4 blocks (entry, set, file, animation).

"maximum namespace" error does not depend on the character model or animation length.

If you want to increase number of characters controlled by skinner script you would better to use less blocks with larger code in blocks.
Also, note that all disconnected blocks also affect to the number of compilations. So if you have any unusable blocks in script it's better to remove them.

 

Sorry for inconvenience caused.

Link to comment
  • 2 months later...

How can I create a callback event from skinner?

 

Got it, by adding new block types in core\systems\schemer\blocks\schemer.blocks file.

<block type="schemer.callback0">
    <input_path>input</input_path>
    <output_path>output</output_path>
    <input_link edit="1">functionName</input_link>
    <update><![CDATA[
    if (is_function(functionName, 0))
        engine.world.call(functionName);
    else
        log.error(format("schemer.callback0 error. Can't find function %s with 0 arguments.\n", functionName));
    ]]></update>
</block>

...
...
...

<block type="schemer.callback6">
    <input_path>input</input_path>
    <output_path>output</output_path>
    <input_link edit="1">functionName</input_link>
    <input_link edit="1">arg1</input_link>
    <input_link edit="1">arg2</input_link>
    <input_link edit="1">arg3</input_link>
    <input_link edit="1">arg4</input_link>
    <input_link edit="1">arg5</input_link>
    <input_link edit="1">arg6</input_link>
    <update><![CDATA[
    if (is_function(functionName, 6))
        engine.world.call(functionName, arg1, arg2, arg3, arg4, arg5, arg6);
    else
        log.error(format("schemer.callback6 error. Can't find function %s with 6 arguments.\n", functionName));
    ]]></update>
</block>

I think this blocks are quite useful. Maybe adding them to Unigine is a good idea?

Link to comment

Hi vadim.sergeev,

 

Thanks for your suggestion.

We've passed it to our devs, but I'm afraid it has low priority for the present moment.

Link to comment
  • 1 year later...
×
×
  • Create New...