additive animation and additive skin swaps missing in creature2d

Discuss issues pertaining to the various game/web runtimes of Creature here.
Post Reply
blurymind
Posts: 16
Joined: Tue Sep 08, 2015 7:53 am

additive animation and additive skin swaps missing in creature2d

Post by blurymind » Fri Sep 29, 2017 11:52 pm

Right now creature 2d seems to have two very big limitations in two of the core features.

1. Character maps in creature2d are static- meaning that the runtime can only load a predetermined collection of visible body parts.#

Let me explain what I mean.. lets say that in your game your character is wearing a top armor and a bottom armor- in the game the player equips a new top armor (containing its own set of parts and animation frames), but keeps the bottom armor. To implement that in creature2d, you would need to manually create all possible combinations of top and bottom armors, because there is no way to tell the run time to swap out only the top half armor part or only a specific set of body parts that the armor is made of with another set. You can only give it instruction on the entire character- what to show and hide.
https://www.youtube.com/watch?v=2NW6FMxlPHA

Compare that to the much more flexible system in spriter, and it becomes very obvious which one is better in this
https://www.youtube.com/watch?v=xSkVu5tMcdc

To summarize:
In spriter you can apply multiple character maps on the character and combine as many as you want to. In creature2d- you can only apply one
Spriter lets you to set hidden,set ignored,and assign specific replacements.A character map is a set of instructions that can affect only a specific set of body parts. Creature2d only lets you set to show/hide and put a name on it- a skin swap is a set of instructions that always affect ALL of the body parts. It is very basic and limited in that way

2. Additive animation
Lets say that your game is a run and gun and you need to make your character play a shooting animation on the top half of the body, while the bottom half is running or idle. How do you do that in creature2d? The runtime doesnt seem to allow to do additive animation.You can only play one animation on the entire character.
In contrast spriter lets you play a second animation on top of a running one and have all the bones that have keyframes on them in the second animation overwrite the actions in the first animation - or blend on top

chong
Posts: 706
Joined: Thu Feb 19, 2015 2:21 am

Re: additive animation and additive skin swaps missing in creature2d

Post by chong » Sat Sep 30, 2017 12:12 am

Hello,

Actually none of what you said is true. :)

1) The SkinSwap is just a map which can be changed dynamically at runtime with code. You can construct on the fly new SkinSwaps with any combination you want via the core API in UE4 and Unity ( also for WebGL JS as well ). In UE4 you can even do it through the BP Visual Scripting system. The SkinSwap allows for authoring with a GUI in the editor while dynamic SkinSwaps are constructed using the API which is what you want to do anyway. In other words, it gives you the flexibility you described in your writeup above.

2) This additional change was added:
https://github.com/kestrelm/Creature_Un ... b99cffac10

It allows you to call into the API to blend between different parts of the body with different animations for the core API.

In general, you shouldn't be comparing the Construct support vs general runtime support for Creature ( I mean by UE4, Unity, WebGL ) in terms of feature set/functionality. The reason why the Construct plugin is more limited is because the Construct framework itself is quite limiting, it is not mesh render friendly, among many other things. If and when they allow for a more flexible API, such features will naturally be incorporated into their runtime.

blurymind
Posts: 16
Joined: Tue Sep 08, 2015 7:53 am

Re: additive animation and additive skin swaps missing in creature2d

Post by blurymind » Sat Sep 30, 2017 1:51 pm

Hi @chong

On the skin swap- that is good to know- but by the looks of it - constructing skinswaps in code is nice,but much less straightforward than telling the runtime to simply swap only a specific set of items.So spriter is still leading you- as it takes much less work to implement an armor swapping system. No need to write extra code with the spriter runtime. The process there is easier to set up and takes 0 lines of code to set up.

On point two- I wasn't aware and it looks like this was added only 18 days ago. Can you present us with an example or make a video that explains how to do this in creature2d? :o

Sorry for the confusion, I didnt know :)

My hope was really to see these features in Godot engine- ideally in a plugin using gdnative for godot 3- but so far nobody has made a runtime.
The current runtime for godot2 is missing a lot of features and is very outdated. I like godot, because:
- unlike unity and unreal, it has a dedicated 2d game engine, while the other two are 3d faking 2d
- much smaller footprint. Takes about 30 mb and runs from flash thumb, compare that to unity's 6+ gb and unreal's 15+ gb
- easier scripting language
- royalty free

Construct2 is a very easy to use engine, but it is not worth using it imo- seeing as to how scirra is moving away from supporting it and going with a subscription only rental model that I have no interest in buying into ever. The other disadvantage there is that construct can only build html5 games

chong
Posts: 706
Joined: Thu Feb 19, 2015 2:21 am

Re: additive animation and additive skin swaps missing in creature2d

Post by chong » Sat Sep 30, 2017 4:32 pm

Hello,

1) Writing code is not difficult, it just depends on how the API is structured. In this case, making a dynamic swap with code is actually more flexible and easier than using a UI which is much more limiting. You are again looking at the perspective from the Construct framework, this is very trivial to do in a system like UE4 where you use the BP Visual Scripting system. In many cases, writing code is actually much faster than using the UI; you shouldn't be afraid to write simple lines of code to get to what you want if the functionality is more suited for that task.

2) There are a lot of things going on right now, the actual usage is again documented in the code I presented. When there are cycles, I will get around doing so.

Regarding Godot Engine, the plan is to obviously write a GDNative runtime for Godot 3.0. This will put the Godot runtimes in parity with UE4, Unity and WebGL. The issue right now with Godot in general is the docs are difficult to find for crucial items that are required for the runtime to function properly; Godot is a great engine don't get me wrong but it just doesn't have the support that Unity/UE4 provide which is rock solid documentation with lots of questions answered properly on a site like AnswerHub for instance. Hence, development in it is actually much more challenging and time-consuming than developing on the regular commercial engines. I am also not too happy with the current Godot 2.x runtime which requires you to mess with the build/compilation step of the entire engine; which is why I intend to move the actual dev to Godot 3.x since it has GDNative. Again, the issue with 3.x is it looks quite amazing but I do not know when it will actually be out for actual development. By that, I don't mean released but I mean stable and robust enough for plugin development ( 2 different things ). The last thing I want is to release a runtime that cannot fully express the power and functionality of Creature itself giving a subpar user experience.

On a personal note, regarding the whole notion of engines like Unity + UE4 doing "Fake2D", you realise at the core technical level there really is no such thing right? :) All modern engines run on the GPU, albeit OpenGL or DirectX or Vulkan etc. The underlying framework is all 3D. With 2D, you are just changing the camera and coordinate spaces are calculated. In other words, you can do the same exact thing in UE4 or Unity. I really don't understand why it's been made to be such a big deal; it just isn't. On the contrary, I believe we need to look ahead and not be confined to thinking of working in traditional 2D, but rather, use UE4 or Unity's 3D engine to render 2D characters. By just placing your camera and adjusting the settings correctly, you can get the same 2D effect + fancy lighting features ( Global Illumination, Normal Mapping, Point lights etc. ). That truly brings your characters to life. :) This is also another reason why I am personally excited about Godot 3.x if and when it is ready; it has a much more improved 3D engine that I believe if ready, will make creature 2d characters shine just like in UE4 and Unity. So in other words, Godot 3.x is definitely the correct thing to do if we were to want to have full plugin features for Creature; it doesn't matter if the plugin has been written yet because the platform itself isn't ready yet ( the main issue ). I went onto their discord chat and asked around; most people told me to wait since they say it is still rather buggy and unpredictable.

Cheers

blurymind
Posts: 16
Joined: Tue Sep 08, 2015 7:53 am

Re: additive animation and additive skin swaps missing in creature2d

Post by blurymind » Sat Sep 30, 2017 6:35 pm

The plan for Godot3 is to have a stable release by the end of this year :)
For what it's worth, here are some links on the documentation of gdnative that might help you get started:
https://github.com/GodotNativeTools/godot_headers
https://github.com/GodotNativeTools/godot-cpp

a few demos/examples:
https://github.com/GodotNativeTools/GDNative-demos

and the announcement article
https://godotengine.org/article/dlscript-here


I think the demos folder can be of huge help, but also it might be worth contacting karroffel/ Thomas Herzog, who can be easily reached at godot's
discord page: https://discordapp.com/channels/2122508 ... 4228652034

Hope this helps

chong
Posts: 706
Joined: Thu Feb 19, 2015 2:21 am

Re: additive animation and additive skin swaps missing in creature2d

Post by chong » Sat Sep 30, 2017 7:04 pm

Hello,

Yes I know about those docs for GNative and have already read them. But they are still rather sparse and docs for actual featureset implementations are still in an early phase. THe GDNative demos at all rather basic in nature, none of them cover actual mesh rendering/dealing with indices/vertices etc. yet.

As I told you before, it is pointless to start now when the system is not fully formed and stable yet, you cannot develop in such a state when things are still changing. This is something you need to understand from a dev's perspective.

I fully believe in Godot 3 and am super excited to make the plugin happen when the stable release ( not first, but stable ) is out with proper docs that I can rely on to build a robust Creature plugin system. That's how development works in general.

The other thing is I provide the full source for Creature runtimes on GitHub, that is the very reason why I use GitHub in the first place, to allow other devs to contribute and join in the effort of enhancing the plugins for their own requirements. I am very happy to see you are enthusiastic about animation and Creature, you are free yourself to port any additional features or make modifications yourself to the plugin you see fit. For UE4 + Unity, we have contributors who submit bug fixes + feature enhancements all because the source is provided in GitHub. This goes the same for Godot, there is nothing stopping you from tinkering around the Creature Godot runtime codebase and adding the features you want. You can use the UE4 or other runtime repos for code reference if you want.

Cheers

blurymind
Posts: 16
Joined: Tue Sep 08, 2015 7:53 am

Re: additive animation and additive skin swaps missing in creature2d

Post by blurymind » Mon Oct 02, 2017 5:26 pm

@chong,
You promise 2 creature2d licenses reward for anyone who ports the runtime to gdnative on reddit
https://www.reddit.com/r/godot/comments ... animation/

I am definitely interested in giving this a try - especially now that you already have a runtime and it only needs to be exposed to the engine.
I bet and hope others would be interested too. Will post it to the discord channel too

Post Reply