Pixels in Praxis Archives - Can't Stop the Movies
Can't Stop the Movies
16Oct/170

The Boy Who Stole The Sun: Devlog #6

New features! Whenever I get a new piece of the game implemented with minimal fuss, I have to celebrate and thank the central processor. On this update: there is a functional health system! The flurry critters have the ability to dash at the player and take his health away on collision. And casual non-dashing bumps between the flurries and player result in freezing up the player's hearts. The flurry also now goes into its "hurt" animation whenever it collides with the player, regardless of whether it's from a dash or a casual bump.

A friend also recommended I put in a screen flash to indicate when a heart is totally frozen. So I whipped that up this morning and got it into a functional state. Most of these features are in a testing state, not the final version by any means. But sometimes you gotta load up on features just to make sure they work.

Flurries are meant to be a low-level, easy-to-avoid critter that will probably only freeze the player a bit, and not be able to damage health directly. It's actually totally confusing to have it be able to do different kinds of damage with the same general action. Screen flashes are currently set to cyan for regular hits, and white for when a heart gets completely frozen. I will probably take out the cyan flashes later, but it's helpful to have things happen often when testing. And when you're coding solo, nobody can tell you not to make temporary features.

Hearts currently take 4 hits to deplete them, and 4 freezes to freeze them completely. And the player starts with 4 hearts, which means there's 16 total health points, and 16 temperature points. Remains to be seen whether all those values will be appropriately balanced.

Coming up next: Gotta get some particle effects in there for taking health damage. I think I'll probably do general impact effect for general hits, and a blood effect for when a heart is totally depleted. I want to be able to toss flurries into the water and freeze that square into ice. The game already tracks the drop-position in front of the player to make sure you can't drop something out of bounds. I can use that position to check the tile beneath and see if it's marked as a water tile. If so, I can do a freezing animation on it and re-build some data. In theory, this will allow for delightful puzzle solving and navigation options. I just have to make sure to constrain the possibilities such that the player doesn't have enough resources to build an bridge right off the edge of the map. Not sure if this'll be in the next update, but I may need to introduce the first tool to this game, and the give the player more than just bare hands to pick things up and mess around.

In the mean time, enjoy a little gameplay-in-progress video! Thanks for reading (and watching).


10Oct/170

Cuphead (2017)

If this is your first time reading Pixels in Praxis or are averse to spoilers, check out our FAQ before proceeding.

My education in animation started early in the morning and late at night.  Syndicated re-runs of what would become my favorite cartoon, The Adventures of Rocky and Bullwinkle, introduced me to the joys of silly scenarios and groan-worthy puns tied together with good cheer.  It's those late nights that felt foreign when networks would show cartoons from the early 20th century featuring caricatures of then-popular stars colliding with one another in dive bars and smoky jazz clubs.  It was the perfect way to teach young me that animation wasn't just silly scenarios and chipper characters, there was an undercurrent of danger complete with firearms and cigarettes.

Enter Cuphead, a long time coming labor of love from Studio MDHR, and to its bones understands the giddy thrill of watching late-night cartoons while not fully understanding what they're about.  Studio MDHR takes familiar building blocks of the more family friendly, if still threatening, early 20th century cartoons into fights that border on the sort of hallucinatory nightmare children might have after watching those old cartoons.

The enemies fit into this mold perfectly, and when I was fighting a carrot beast who clearly imbibed a few too many psychedelic drugs (which for kids could easily be translated as psychic powers) I knew I was in good hands.  Aside from the boss battles, which form their own stages with multiple phases of attack patterns, all the enemies have a rubbery sense of menace about them.  Fish flying through the air have an oblivious look to their path of destruction, then seemingly friendly platforms suddenly spring to life as angry crabs, all while grumpy spiked urchins get an annoyed look as they come to life to try and hinder Cuphead (or his pal Mugman.)

9Oct/170

Mario + Rabbids Kingdom Battle (2017)

If this is your first time reading Pixels in Praxis or are averse to spoilers, check out our FAQ before proceeding.

Before I get into the meat of Mario + Rabbids Kingdom Battle (just Kingdom Battle moving forward) - let's marvel at the plasticity of the Mario world in game systems.  What started as a deceptively simple man versus turtle arcade game evolved into one of the few genre-defining side-scrolling platformers of all videogame history.  Since then, and to varying degrees of success, those core platforming philosophies have found their way into kart racing, sports, and role-playing games.  Now Kingdom Battle, a title I knew almost nothing about until a week or so before its release, pushes the core platforming of Mario into the realm of turn-based tactical overhead skirmishes against an insane conglomeration of chaotic Rabbids - and it's one of the best games of 2017.

Core to Kingdom Battle's success is its successful translation of Mario's defining feature - his iconic jump - into a system that limits his ability to leap in fascinating restrictions.  There's no traditional platforming in Kingdom Battle and when I was traversing the overworld between each of the missions the secrets I could uncover were more based on simple puzzle solving and accumulated abilities instead of leaping around.  For those who want to hear that sound as Mario's feet leave the ground you'll have to wait until the battles start.  That's when Kingdom Battle shows it understands the joys of platforming even more than this year's Sonic Mania.

25Sep/170

Sonic Mania (2017)

If this is your first time reading Pixels in Praxis or are averse to spoilers, check out our FAQ before proceeding.

"Have I ever actually enjoyed Sonic?"

Weird that this question popped into my head about halfway through Sonic Mania as there's cartoon evidence that I did, at some point in my life, have an affection for both the character and his games.  It seems so far away now.  Nostalgia obviously has a bit to do with it, but that's because Sonic games were the mysterious property of my friends and not of my family.  We were a Nintendo family, so while I was whittling away on 100% completion of Yoshi's Island my friends were zipping around with a blue hedgehog.  I'd visit, pop whatever Sonic game was available, and have a grand old-time before heading home.

Which I think gets to the core of why Sonic, as a whole, is tiring and specifics about why Sonic Mania is underwhelming.  Sonic games are best played in bursts of one or two levels at a time.  Whenever I sit down and go for a longer session the cracks in the basic design philosophy of Sonic begin to spiderweb out.  About an hour and a half in, my enjoyment breaks, and it's back to something else.  There are only so many times I can revisit Green Hill Zone or a barely concealed reskin/rename of the same without feeling diminishing returns.

22Sep/170

The Boy Who Stole The Sun: Devlog #5

Continuing on the path of the Vertical Slice, I have the first object scripted up that was on my list from last time: Snow Piles! One of the big benefits of coding up all the basic objects of the game quickly is that poor assumptions get weeded out.

For instance, I imagined the snow piles as sneaky ninja-containers. I wanted critters to pop out when the player least expected it. This turned out to be laughable in practice. As soon as I had the objects in the world, it became apparently that a pile of snow is in no way stealthy. It would have to be surrounded lots of other deep snow, and perhaps just be a pronounced drift instead of a pile. Even then, to be fair to the player, there would have to be some small announcement that a critter is going to emerge, to give time to react. Something like the Leever from the Legend of Zelda franchise fills this role nicely. But there was a more interesting choice to make here.

I decided to make the snow piles immobile and place them to block the path of the player. I made them punchable, which decreases the amount of snow in the pile. If the snow was reduced to minimum level, collision shuts off and the player can pass over it. But if the pile stacks up to the max height... punching it will unleash a Flurry critter. So, I got all that coded up, but not without unleashing some bugs in the animation and script command-handling systems.

Punching Snow!

One of the first bugs was with punching the snow piles. At one point, the animations were triggering the wrong frames, which made the whole thing look broken. After that, punching only triggered when a snow pile had reached a new personal best height. Anything less was un-punchable. That had to do with poor logic flow in the script. I looked a ton of code in the engine before realizing I had just written the script poorly, not turning collision back on in the proper places. There was also a segment where punching the snow only triggered properly on every second punch. That was also a collision toggling bug. After I got all these things fixed, there was a brief time where everything was suddenly broken. Program crashes... player starting the map in the middle of the water instead of the spawn point. Madness! I had to take the rest of the day off in order to return with a clear head.

All that being said... the basics of the snow pile are complete enough to play with them.

Future considerations: Need to determine spawning frequency. Right now the snow piles build up pretty fast, which is convenient for testing. After unleashing a critter, the object resets and can therefore spawn infinite critters. Will need to possibly make snow piles aware of the numbers of critters on the map. Perhaps they'll refuse to spawn more if the map is crowded. Also need to verify that snow pile collision is off during the frame where the critters are spawned. Right now it looks they're being shoved to the side, sometimes into the water, which is bad.

I had hoped to code up more of the Flurry behavior, but since I didn't get that... I made a video for you. Enjoy!