Spriter/C2 update 11/2 bug fix for performance mode

Discussion and feedback on Construct 2

Post » Sun Oct 16, 2016 2:34 pm

@lucid, I'm a little confused about the Hybrid method you describe. If I understood the steps correctly it will result in two separate (and differently named) SCML objects in C2? One using the spritesheet for direct draw and one containing the individual objects for collision purposes. If yes, I assume we then need to associate the two separate SCML objects to our player objects in C2 to get everything working as you describe?

EDIT:
From page 157, appreciate it if someone who has successfully got the hybrid method working help clarify the instructions @lucid provided:

"First, save your project normally, and then save a spritesheeted project. Import your non-spritesheeted project the old way."

Does this mean import the non-spritesheeted SCML into C2 by dragging and dropping the file?

"Follow the old to new style project conversion steps, but this time only delete everything except collision boxes, and other sprites you want to test for collisions."

So convert the SCML/Spriter project to spritesheet format and then delete everything but the collision boxes? Not following this. If we delete everything except the collision sprites, when do we import the spritesheeted version into C2?
B
10
Posts: 21
Reputation: 390

Post » Fri Oct 21, 2016 11:14 pm

Hello everyone. I apologize for the extremely late reply. It's been an unexpectedly busy month as the delay for a variety of reasons, but things are relatively back to normal now.

I will try to reply to everyone. Please let me know if I miss anyone. Also, if you sent me a project to take a look at or illustrate a bug, if you don't mind resending it, it will help me to get back to you about your issue more quickly.

Cipriux wrote:@lucid Any news about that blended animation fix for non looping animations?

I will be looking into this this weekend. Please resend your file if you can.

EDIT: Nevermind. I had already responded to you back when you posted by PM.

Ninjadoodle wrote:Hi @lucid

I've had the Spriter Pro license for a while, but only just started learning how to use it and it is a great tool.

Any chance you guys will add a "Snap to grid" for bones and images in the near future (along with a customizable grid)? I could really use this feature in my workflow as I rely on precise setups etc.

Please let me know if this is something you guys are considering :)

Thank you in advance!

Do you mean in the program itself? It's not impossible, but probably not for Spriter Pro. I'm mainly focusing on bug fixes for Spriter Pro, and I'm putting the bulk of my time into Spriter 2. Still very early on, and no ETA, but it will be a free upgrade for Spriter Pro owners.


Team EternaL wrote:@lucid Has this been reported yet, or is there a fix for it?: When using the new 'draw self' method--which I love, because of its performance-increasing power in avoiding thousands of images in C2--the origin points for the images are very off, I believe all reset to their original upper-left positions. Such as either not properly saved in the scon despite using the correct sprite sheet options in Spriter, or not properly read by the scml plugin side in C2. Is there a fix for this now, or a way I can manually work around the issue myself now?

Sorry it took me so long to get back to you. If you can send (or resend) the zipped project folder (scml file and all images), I will look into this over the next few days, and I should hopefully have a fix.

sagispin wrote:Hi,
i tried using the Spine "beta" plugin, and noticed they only use one C2 game object, instead of multiple sprites.
this might be crucial to performance, but i dont really know.
just wanted to through this out there.

also it looks like spine plugin supports bending sprites:
https://cdn.rawgit.com/flyover/spine-c2-plugin
/master/example/export/index.html
this was made in C2 and Spine, it only uses 1 simple png. i was kinda mind blown, but i think the same can be achieved in spriter.
Spine plugin missing tons of features that exists in Spriter.

We have a performance mode in the plugin that only uses the scml object, and loading a single image into it: viewtopic.php?f=146&t=75748&p=1040600&hilit=direct+draw#p1040600

The Spriter 2 plugin will support bending sprites, and much more, but as mentioned above Spriter 2 is still a ways off.


stricky wrote:@lucid, a few questions. Apologies if these have been covered before:

1. First time starting a layout, spriter objects intitialise fine and I can set character maps using the "on initialised" trigger, but when restarting layouts or moving to another layout the trigger doesn't fire. So not sure how to set character maps when moving to another layout.

2. Does the new directdraw mode significantly reduce CPU usage? My CPU usage is very high. Each enemy has 40+ animations of 10 frames each and there are upto 10 enemies on screen at once. Enemy variations are managed via character maps so there is only one SCML object.

3. If the individual sprites are no longer separate objects in directdraw mode how would I go about setting frame specific hit boxes? I would like to avoid having to set hit boxes outside of spriter (i.e. in C2) for specific animation frames.

Thanks,

I believe @Sethmaster answered all of your questions, including a workaround for the on initialised thing, but I will look into on initialised to make it so you can just use that one event to get it to work.

tunepunk wrote:Does spriter characters have any ragdoll mode?

Can you edit bones within a game? Could you for example create a rock climbing game where you move the limbs of a spriter character individually in game?

You can't make like a physics based ragdoll, but you can do IK to bones in real time, or override any other parameter. The scml plugin has an Action under 'Override Animation' called 'Override Bones With IK', this does simple 2 bone IK. Override Object Animation let's you override any parameter like x,y,scale, etc. There are made to use every tick, rather than set it and forget it.

Ninjadoodle wrote:HI guys,

I have a long Spriter object which starts outside of the C2 layout and stretches down.

The problem is that if I place the Spriter object outside of the C2 layout, it doesn't appear.

If I place it inside the layout, it appears no problem, but doesn't solve my issue.

Is there any way to work around this?

Thank you for your help!

PS. I managed to get this working, by changing the "Animation Export Box Size" - I don't however understand why this makes a difference, as I'm not exporting a sequential animation.

If anybody could shed some light on this, that would be awesome :)

At the bottom of the original post you can find additional information on using the direct draw mode: https://brashmonkey.com/forum/index.php ... -2/&page=1

I'll paste the relevant information here:
To use bounding boxes precalculated in Spriter for correct clipping and effects, in Spriter, simply click on the box icon on the animation widget. Use settings roughly like what you see below:
Image

framerate: In order to calculate a bounding box that takes tweening into account, Spriter will go through the animation at a set framerate. 60 is recommended.

padding: Extra pixels added to each side of the bounding box to ensure that frames in between the above calculated don't go slightly outside. 0 is probably fine for most cases, but 1 or 2 pixels isn't going to affect your performance and makes doubly sure.



The best workflow would probably be to run the calculation once on all animations the first time you use it, and each time you add an animation. After that, only bother recalculating the bounding box if new animation changes massively affect the bounding box, or if you notice any clipping at runtime. And of course, run it once before shipping or demoing your game.



stricky wrote:@lucid, I'm a little confused about the Hybrid method you describe. If I understood the steps correctly it will result in two separate (and differently named) SCML objects in C2? One using the spritesheet for direct draw and one containing the individual objects for collision purposes. If yes, I assume we then need to associate the two separate SCML objects to our player objects in C2 to get everything working as you describe?

EDIT:
From page 157, appreciate it if someone who has successfully got the hybrid method working help clarify the instructions @lucid provided:

"First, save your project normally, and then save a spritesheeted project. Import your non-spritesheeted project the old way."

Does this mean import the non-spritesheeted SCML into C2 by dragging and dropping the file?

"Follow the old to new style project conversion steps, but this time only delete everything except collision boxes, and other sprites you want to test for collisions."

So convert the SCML/Spriter project to spritesheet format and then delete everything but the collision boxes? Not following this. If we delete everything except the collision sprites, when do we import the spritesheeted version into C2?

Let me know if I've answered your question correctly, but you should:
Import the old way by dragging and dropping into C2.
Then double click the scml object and follow the steps as if importing it the new way. Then inside C2, you can delete all of the sprites it created (except the collision box sprites if you need those), and it should still run everything you didn't delete as well as direct draw.
Last edited by lucid on Mon Oct 24, 2016 1:01 pm, edited 1 time in total.
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

Post » Fri Oct 21, 2016 11:29 pm

Hello everyone. If you had an issue I hadn't replied to, please see the post immediately preceding this one.


In other news, BrashMonkey is pleased to present the Radius Wing SHMUP Art Pack! Check out the trailer here:
Image

There is also a free Essentials version for Spriter Pro owners. If you own Spriter Pro on Steam or purchased it from our site you can download the Essentials version now. If you own Spriter Pro on the Scirra Store, it will be available as an 'alternate version' download for Spriter Pro once Scirra approves it for the Store, which will probably be on Monday.

The full Radius Wing SHMUP Pack will also be available on the Scirra Store after it's approved, but in the mean time Spriter Pro and all Art Packs (including the SHMUP Pack) are on sale on Steam. so you may want to check out those deals if you haven't purchased Spriter yet.

Here are some screenshots:
ImageImage
Image
Image
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

Post » Sun Oct 23, 2016 10:42 pm

Let me know if I've answered your question correctly, but you should:
Import the old way by dragging and dropping into C2.
Then double click the scml object and follow the steps as if importing it the new way. Then inside C2, you can delete all of the sprites it created (except the collision box sprites if you need those), and it should still run everything you didn't delete as well as direct draw.


OK, so using this method I only have one SCML object which contains the direct draw and the collision objects (this is then pinned to my player sprite in C2). This approach works but I am finding that performance is very poor, as in 10-20 FPS. When I have two separate SCML objects one for collision and one for directdraw pinned to my player sprite in C2 I get much better performance (around 40 FPS), but there is still significant room for improvement. With just direct draw alone I get a solid 60 FPS. My collision sprites are very simple (just one rectangle sprite).

So either I'm doing something very wrong or the hybrid method has some issues.
B
10
Posts: 21
Reputation: 390

Post » Mon Oct 24, 2016 12:57 pm

@stricky, would you mind sending me a capx to take a look at?
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

Post » Mon Oct 24, 2016 1:22 pm

@Team EternaL - I tried with your Spriteria boss contest entry file, which has extremely large images. It doesn't have any issues for me with pivot points. Are you sure you exported with all the required options?
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

Post » Mon Oct 24, 2016 2:56 pm

@Sethmaster
@stricky
@chadorireborn

New plugin release:

10/24/2016
  • Changed the behavior of blends from nonlooping animations to behave more intuitively.
  • Changed behavior of 'on initialized' condition to trigger even if the object fetches information already initialized in a previous layout. (to allow actions to be easily used in on initialization events)
  • Added "nickname" property. This feature is to make it possible to differentiate different scml object types (and individual instances if desired) in the layout editor in C2. The scml object now shows the filename in the square inside the layout. If you have something inside the nickname property it will display that instead.
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

Post » Mon Oct 24, 2016 4:45 pm

lucid wrote:Added "nickname" property. This feature is to make it possible to differentiate different scml object types (and individual instances if desired) in the layout editor in C2. The scml object now shows the filename in the square inside the layout. If you have something inside the nickname property it will display that instead.


:o :o :D :D Wow. This is so amazing! The timing is so perfect. Just when I needed it the most. :lol:

Thanks for adding this feature.
The Things you can create is only limited by your imagination. If you don't have the skills then use your motivation as a natural force to exceed all expectations. Chadori RebornXD
B
30
S
12
G
76
Posts: 954
Reputation: 50,830

Post » Thu Oct 27, 2016 3:04 pm

Introduction:
This is going to be a large post but first I'd like to start off with saying hello to the Brashmonkey team and hello to everyone that is providing support towards fixing bugs and many more things.

My Case:
I'm currently working on a fairly large game and as a proud owner of Spriter Pro I can only say, thank you so much for making my and my artists life easier.
I recently decided to try out the new spritesheet feature because I'm getting closer and closer to the sprite limit.
So far my tests have all been successful and I was surprised that even char maps worked using the new method.

My Problem:
My game is using custom ragdolls (physics joints that connect the single sprites with each other making them "wobbly"), this feature was working fine with the old method and as you might already be able to guess, spritesheeting unfortunately breaks this feature of mine.

The Request:
I know this probably sounds easy from my perspective but I would like to request a custom ragdoll feature that you could perhaps turn on/off at will. I understand that this won't be as easy to implement as I think but I'm sure that if you'd implement this feature, you wouldn't only make me happy but also a lot of other Spriter + C2 users here.

Some Last Words:
Adding this feature in combination with spritesheeting would be a blessing and honestly it would calm down my fear of reaching the sprite limit for sure.
If you guys need someone to test it out (if it's possible), I'm willing to invest my time into it and surely all the other helpful people here will do it as well.

Thanks again for this amazing product and looking forward to hear from you guys.
ImageImageImageImage
B
40
S
11
G
41
Posts: 460
Reputation: 23,968

Post » Thu Oct 27, 2016 6:45 pm

@TheRealDannyyy is there anyway you can use the Override Object Animation action to tell each sprite where to be while in ragdoll mode?
Spriter Dev
B
87
S
21
G
12
Posts: 3,240
Reputation: 16,461

PreviousNext

Return to Construct 2 General

Who is online

Users browsing this forum: No registered users and 9 guests