This is a little embarrassing but how do one check how much RAM ones game takes up?
Task Manager, you can also monitor the memory usage from Fusion's debugger, but it ain't so reliable
Don't have an account yet? Then register once and completely free of charge and use our wide range of topics, features and great options. As a registered member on our site, you can use all functions to actively participate in community life. Write posts, open topics, upload your pictures, put your videos online, talk to other members and help us to constantly improve our project and grow together! So, what are you waiting for? Become a part of us today!
Login or registerTo get support for a technical issue such as installing the software, to query a purchase that you've made/would like to make, or anything other than using our software, please visit our Customer Service Desk:
Open a TicketThis is a little embarrassing but how do one check how much RAM ones game takes up?
Task Manager, you can also monitor the memory usage from Fusion's debugger, but it ain't so reliable
Display MoreThanks! I love nothing more than talking about my workflows, so your wish is my command X)
I use Toon Boom Harmony for animation. It's expensive, but fantastic. It has the best vector tools of any program I've used: powerful, but much more fluid than Illustrator or Photoshop, in a way that encourages natural freehand drawing and sketching.
In addition to a frame-based timeline, it uses a node system, which can seem overwhelming at first but you quickly learn to love it because of how powerful and flexible it is. You use it to rig up your characters in way that lets the various parts interact with each other in lots of useful ways, in complex ways that wouldn't be possible with a top-to-bottom layer-based system alone. This enemy has hundreds of nodes. Even just the pink jelly 'bullet' has a lot:
Please login to see this picture.
It might look like a bird's nest of cables and rectangles, but it actually means that everything is kept super modular and non-destructive, which ultimately makes life easier.
This type of workflow is well suited to my skillset. I'm not a particularly gifted illustrator, so I can't just throw down some art and have it look amazing on the strength of the drawing alone. But where I shine is with my use of complexity and intricacy, and when I can experiment and iterate to test ideas and tweak them as I go. Toon Boom Harmony is great at this. I've set up my MFA to automatically import new PNGs for all key assets when it runs, so I can iterate frequently and test in-game almost instantly.
So have a look at the bullet in the below GIF. Each of the bullet's blue tendrils has its own nodes (those of one tendril are shown in the pink box, top-right). The light blue node is the actual tendril drawing. The topmost Peg node can control the movement of this drawing, as can the three bright green Bone nodes. Rotating one bone affects the others bones (like a shoulder > elbow > wrist hierarchy).
This tendril's nodes are themselves connected to the pink jelly's nodes elsewhere, which allows the tendril to move up and down in sync with the jelly, which you can see in the GIF.
You animate these movements on a timeline (bottom) using keyframes and automatic tweening. And you can fine-tune the easing with bezier curves (top-left).
Please login to see this picture.
You can include various effects and deformers as part of the node network. In the following GIF I isolate some of the nodes that were used to create the explosion effect:
Please login to see this picture.
Here's an example of a neat node called the Two-Point-Constraint. With it, you can place 2 simple pegs on a drawing, then as you move the pegs it automatically applies squash, stretch, and rotation to the drawing. Notice how each cheek can be independently squashed and stretched just by dragging a peg around. Also notice how the mouth has its own Two-Point-Constraint node which is informed by the bottom pegs of each cheek. So as you move one of the cheeks' pegs, not only does the cheek squash and stretch, but the mouth moves with it and squashes and stretches itself.
Please login to see this picture.
Here's my PokerEel rig, which uses a lot of deformers. Notice how when I deform the body, the flipper, frill and head all adjust accordingly. And notice that masks are applied in such a way that the bottom teeth are hidden by the upper jaw, while the upper teeth are hidden by the lower jaw
Please login to see this picture.
Apropos FX, I highly recommend the book Elemental Magic Volume 2 by Joseph Gilland. It's a great (non-technical) explainer of how things like splashes, waves, fire, and explosions work and how to animate them, by a real expert in the field.
Wow - that's a really great overview of everything. Thanks for sharing! I dabbled with a Toon Boon demo around 2012-ish but I'm a terrible illustrator and never progressed with it. I honestly had no idea it was that capable of a software.
This week I made some Puffworms. These little guys react to Spryke's movements, and give her a little puff to make her jump higher.
Please login to see this picture.
They're procedurally generated. All I need to do is place pairs of these Edge objects in my level editor wherever I want the Puffworms to spawn. The engine will then generate the worms itself: some behind Spryke, some in front. It will adapt their positioning and angle to any slopes, will choose from 3 pre-baked animations, and will randomise things like size, animation speed, and how close each worm must to be to Spryke before it reacts.
Please login to see this picture.
Display MoreThis week I made some Puffworms. These little guys react to Spryke's movements, and give her a little puff to make her jump higher.
Please login to see this picture.
They're procedurally generated. All I need to do is place pairs of these Edge objects in my level editor wherever I want the Puffworms to spawn. The engine will then generate the worms itself: some behind Spryke, some in front. It will adapt their positioning and angle to any slopes, will choose from 3 pre-baked animations, and will randomise things like size, animation speed, and how close each worm must to be to Spryke before it reacts.
Please login to see this picture.
Very cool! Does that have a lot of storage and memory overhead for all the animations you are using, or are you loading those externally now?
Very cool! Does that have a lot of storage and memory overhead for all the animations you are using, or are you loading those externally now?
I load animations externally. Though I was concerned about memory myself, so actually I also built a mechanism this week to calculate the RAM usage of imported animations, and can therefore tell you that these worms take up 16.9MB in RAM (3.17MB on disk). Not too bad. I make sure to crop animations where possible as I export them, to minimise empty pixels:
Please login to see this picture.
If anyone's interested, I'll explain how I calculate the RAM. PNGs are compressed of course, but I believe they must be uncompressed into RAM, so each pixel takes up 4 bytes of information (RGB & Alpha). So to calculate this per frame, you multiply Width * Height * 4.
There's probably a way to read the width and height from the PNG's metadata, but I don't know how to do that. So during the fastloop that imports PNG files into an object one by one, I switch to that frame in the object so I can read the object's width and height. However, the object must have an unaltered scale and angle for that to be accurate. You can account for the scale by dividing by Xscale and Yscale as I have below (this may produce tiny rounding inaccuracies as Fusion supplies Xscale & Yscale only to 2 digits after the decimal place). There'd be a mathematical way to account for the angle too, but I just switch the angle to 0 then switch it back after the calculation.
Please login to see this picture.
Performance is pretty good too. I run code as infrequently as needed for things to still feel smooth. So:
- Every 20 ticks I check which worms are on-screen, and most of the code only runs on those worms.
- Every 10 ticks I check for things like distance and direction to Spryke and whether they need to play their leaning animation.
- Every 4 ticks, I adjust the Y scale for any worms that Spryke is currently squashing.
With a lot of worms in the level (about 800 objects - which is about 1600 worms, as each animation variant contains 1, 2, or 3 worms), I measured the average event-side performance of the worms at about 50 microseconds per frame. For my target framerate of 120fps the total budget is 833 microseconds, so 50 is not quite negligible, but pretty good.
Things are coming along. gameplay is very solid, 3 worlds are designed, and Spryke is fully animated. I'm about to spruce up my website with a bunch of new animated GIFs.
If you have a minute, please take this survey to let me know which GIFs you think are the best!
Please login to see this link.
"G"
Shows the speed, Gameplay and Graphics in one.
Nice, very cool 😎
Hey Vol, it's been a long time since I checked in. Your recent images look great. It looks like you've really honed your skills in the years since I've seen the project, and they were high before. The interaction with those puffworms is charming and full of life. I hope development continues to go well and look forward to seeing more.
"C" is for me the best one, it' s easy to see Spryke, and shows speed, actions, other "creatures" and the really nice parallax effect with diverses backgrounds.
I must admit, really impressive work , Volnaiskra ! If I only had 1% of your graphic-talent !!!
The puffworms are sooo sweet, they really seems to be alive !
I think you are on the right path to make a formidable game - keep on Volnaiskra !
Best regards,
Sergio
How do you keep motivated to keep working on Spryke after so many years, Vol? How do you defeat the 'doubt demons' (if there are any)?
Please login to see this link.
Reminds me of your game. How's Spryke doing?
Hey Vol, it's been a long time since I checked in. Your recent images look great. It looks like you've really honed your skills in the years since I've seen the project, and they were high before. The interaction with those puffworms is charming and full of life. I hope development continues to go well and look forward to seeing more.
Thanks, PBarwick. Great to see you here again, by the way!
How do you keep motivated to keep working on Spryke after so many years, Vol? How do you defeat the 'doubt demons' (if there are any)?
Well, I've made enough progress on it by now that I know it's going to be an excellent game. So that keeps me going. The doubt demons are still there, of course. But after all these years, the doubt demons and I are on a first-name basis, so I just politely say hello every morning and then try to ignore them as I get on with my work.
I must admit, really impressive work , Volnaiskra ! If I only had 1% of your graphic-talent !!!
The puffworms are sooo sweet, they really seems to be alive !
I think you are on the right path to make a formidable game - keep on Volnaiskra !
Thanks, semar.
I made an underwater geyser this week. I had fun animating the smoke, but It was quite tricky getting the physics to feel right.
Spryke has to bob up and down nicely when staying in it, and be able to get extra height by utilising the bubble. So when Spryke falls into the geyser, the smoke has to push her very strongly to stop her hitting the ground....yet also weakly enough that it only flings her a little bit over the geyser. In the end, I needed to make the geyser affect Spryke's Y speed differently depending on whether she's moving downwards or upwards.
When Spryke activates the bubble, the geyser's upward push must be amplified, to allow it to blow her much higher. But how much velocity Spryke inherits from the smoke must be based on how deep inside the geyser Spryke is, otherwise it feels wrong. So bubbling near the top needs to give very little lift, while bubbling deep inside enables a very high float.
If Spryke runs and jumps from the ground directly into the smoke, then some of that upward jump trajectory is also inherited by the geyser, and her existing momentum combines with the upward push of the smoke for an even higher float.
It took a lot of experimentation, and I needed to rethink how I managed the physics a couple of times, but think I got the balance right in the end. Spryke's motion physics is actually one of the facets of the game that I'm most proud of. I put as much nuance into the physics as I do the graphics so that, in my opinion, the movement feels very satisfying and organic.
Please login to see this picture.
One word: impressive 😀
Don’t have an account yet? Register yourself now and be a part of our community!
Almightyzentaco (Fusion 2.5 Tutorials)
Captain Quail (Firefly Tutorials)