Full Circle


Last night I added a mechanic where the longer you spin around, the larger you start to grow. If you execute a combo finisher, your growth drops back to normal, but you execute a powerful attack that transfers your growth to damage.

I had a vision last night, that instead of just growing in scale for various game mechanics, there was an additional visual modifier brought about by a new "growth bone". 


I've been working on SeaCrit for a very long time. Many, many years ago in the first incarnation of the game, I had much more potent size mechanics to the game, size = health, and you could beat the mightiest shark to a small size. But they always felt weird, because if a killer, lithe, powerful shark was smaller than a cute coral fish, things felt "off", the animation speeds didn't match their speed, and gameplay fell apart, it didn't work for a multitude of reasons. 

Scale has to matter, if you just start scaling things up to huge proportions and big things to small proportions, nothing means anything any more and the reality of your game feels weird. There are a lot of visual elements that need to come together for something to look right in  a game. You need the right surface for the normal maps, textures and lightings to work, you can't condense objects with lots of geometric detailing too small or they start to look very jagged. The harmony of the visuals just start to break.

So I'm going to keep this system measured and use it sparingly, only the baby shark will be a fish that varies greatly in size, and it will be tied to the hefty bone. I won't be going down huge rabbit holes making large versions of other fish spreading myself thin. I need to focus on what I can affect change on alone and I can't be doing art every day with the mountain of things that need doing.

In the above shot is a hefty version of the baby shark I created a week ago by straight adjusting the mesh and using a spherify mod to a degree at the start and weighting it to the body. Putting these guys side by side I'm feeling pretty confident I'll get a passable result, the bulk of the adjustments need to happen to relatively simple edge loops in the body, with just a bit blending into the face.

After years of modeling and rigging, I think I have a pipeline in mind that should allow for this to happen. I will add a new bone to the rig "growth bone", and I will scale this bone up to a huge amount, about 20x in the X by Y directions, and the forward direction Z will be about 1/20th this amount. This will cause the fish to grow in girth in every area painted to this bone, but not length to any huge degree, it will essentially "Spherify" the fish. I really hope this doesn't end up being a waste of time.

It's going to be a bit annoying as the paint tools for vertex weights aren't very good, and there is no tool to mirror these values so I will have to paint the mesh in an arduous, technical manner using area selections and blends. This might end up being a waste of time, but I'm optimistic.

Some neat visual ideas:

Maybe a "bubbly effect" for when there is a sudden change in growth bone size, I can turn on a sin time modifier affect on the growth bone to get a sort of "jiggle" and likewise mod the frequency which will decrease gradually, sort of like a ripple when you throw a stone in the water.

Tie detail material tiling's to fish scale, so a fish that takes up half the screen will have spots on their backs and stripes at the same scale of smaller fish, this will help to keep the illusion of realistic scales.

Gameplay/ Upgrade thoughts:

Just being above 100% health will give you something around 50% of the total size bonus and growth bone weight, I want this to feel like a "toggle on" you're in big boy mode, healing more behind this can increase you to 100% increased size and girth.

Sharks now scale when you tap back life above full health, and an "over-heal" bar overlaps the health bar. I already have this I'm going to change the color for blue and revert it from shields to just "blubber" or something. You tap health past your max as a shark, and you start to grow and you get a little pudgy. While pudgy you have the same max speed, but your momentum causes you to float about a bit more, and your bites hit harder but are slower, it may disable "berserk" mechanics. While larger you gain innate damage resistance, and it's easier to hit foes as you're now a big boy.

Chungus: It's going to get harder and harder to top off the health bar. I already have the mechanics in, but once you hit 100% oversize, you can transform into a big killer great white with brooding evil sounds and ravenous attacks. It's pretty cool but never really fit, I'm hoping once this system is incorporated it will work a bit better.

Technical thoughts:

This will come at a little bit of a performance and portability hit, lower end systems like to work with just 2 bones for vertices. This will increase that # to 3.

I'll be diluting all other animations by 5%. In order to give this bone 5% weight I'm going to be reducing all other weights by 5%, so actions will feel a little bit muted, but that's ok. I suppose I could try to get by on 2% or something, but I want to be sure that there's enough variance imbedded in these values that I can get a smooth weight paint over the mesh.

Collider volumes: I'm going to have to instantiate the collider radius, height, and maybe x position, and as the player becomes "hefty", I'll interpolate across these values to ones tuned for a larger fish. I don't foresee having to do this for the attack colliders, but we'll see.

These systems will be isolated and work without any outside input. The growth system will detect a major adjustment to size, and if it detects one, it will engage the size ripple mechanics. lerps will fade in faster than going out, in fact I think i'll add this to my custom lerp functions that I created for seacrit since I tend to use this function of blending into something faster than blending out of it:


I've found that .03 is a nice runtime value for a lerp that will transition a value to another, so if I ever need to do a runtime lerp instead of having to write:

someValue = mathf.Lerp(someValue, someOtherValue, someGoodRuntimeTransitionValue);

I can simply write:

someValue = customF.LerpTowards(someValue, someOtherValue);

If I were better at code I could probably figure out a way to simple do:

LerpTowards(someValue, someOtherValue); //I'm not sure how to make the function "LerpTowards" global and I'm not sure how to alter the value of some value without direction calling it with "someValue =" at the start.

But it is what it is, it works and it gets the job done. Can't sweat perfect code and hound random strangers on the internet for advice or I'd never finish the project.

General thoughts: 

This is going to be a solid amount of work, I see this taking a very solid 2 days if I can get full 8+ hour days, but I think it will be worth it. When inspirations strikes and you're feeling something hard, you gotta go for it. I think this pudgy form will add a LOT of variety to the play in SeaCrit, and give the shark some needed complexity to make it as fun as the ranged fish. Now player will be balancing size and speed and segueing between the two. I want them to play off each other, I want the player to "fatten up" and view that as a resource to be spent depending on their build. They can either execute heavy hitting attacks on bosses, or they can tank them more reliably and defeat them by face tanking attacks after living off the fat of the sea around them preparing for a big fight. Most importantly, I just think this is going to be lots of fun, and I believe it adds some warranted complexity to lifetap mechanics. Most games you just get insane lifetap and you're always at full health. I want to balance the system and add ebbs and flows and strategy to it. At low life you'll be agile and able to tap life fast, but you'll be fragile and easier to kill. While big and hefty you're powerful and tanky, but not quite as quick. It's a trade off, one can move about the ocean and farm and get places faster, the other is a big powerful tanky boy that can face off against tougher enemies without fear of death. This also allows for multiple playstyles. I could see daredevil players going builds that forgo hefty properties and mechanics in favor of perpetual raw damage and movement speed.

It's going to take a LOT of iteration getting this all to come together. The right over-heal values so the player can't just over-heal forever and stay ginormous. Should I add a falloff where the player needs to keep eating to stay hefty after X seconds? How much bonus health should the player be able to chomp beyond full health? Does this extra health just poof away after changing to ranged? Will the player be able to be hefty when wielding other weapons like swords and axes? It's simultaneously both exciting and daunting how interconnected this system is with everything else.

I told myself no new huge things, but this is too good, and it just ties together all the systems I've been working on thus far. It's going to be worth it, as much of a pain as it's going to be, but this is what we've been building towards, interconnected systems that affect play that are interconnected and bring about wild builds that are also lots of fun... 

TOO MUCH POTENTIAL TO THINK ABOUT! I'm excited to start getting this in, much like getting items in before it brought in old ideas with better execution, as if all these years of tinkering and getting better paid off with the skills and execution to implement old ideas that were ill formed properly. Now I'm using some code things and animation tricks to do some pretty nifty mechanics that will tie in the breadth of upgrades, diverse play mechanics, and fun.

I really feel like the work I'm about to get to in the coming days is going to bring this whole show together in a really fun way. Kinda just feel like I need a nap though. We'll see, was feeling off hopefully feeling better soon. Have some faith this is all going to come together and be worth all the hard work.

Edit: This kind of feels like feature creep, I'm on the verge of everything coming together and suddenly I'm gearing up to get some core new system. But I take solace in that this is going to empower the player and make their core fish a fun little toy with more features. I've said it before, but we so often as game creators get sidetracked by building the things that are meant to challenge the player. We build massive Universes, we build ultra complex and buggy enemies, we create one and done puzzles, we build these huge monuments to our design skills and aspirations...

Chess, Checkers, LOL, DOTA, Minecraft, Street Fighter, Mario 64, Terraria, TF2, Counter Strike, what do these all timers have in common? They're games. They're friggin' GREAT games. They're tiny, compact, challenging, with near infinite challenge and growth, with a core, fun experience that isn't built on the notion of unlimited content, or excessive top tier art. Great games are nothing but an array of systems humming in tune, they are fun to discover and engage with and welcome evolving stategy and play over a breadth of experience. These games do more with less, and they engage the player not by crushing them over the head with frustrating situations, but by giving them a wealth of cool things to do. An absolutely polished and fluid core experience that bleeds usability and fun. That's what the next few dev sessions of SeaCrit will be, excited to be working to make seacrit fun. Won't be easy, but shouldn't be terribly difficult either.

All these systems that seem to require endless tuning... there does come a point where they feel right. And you can rely on the system to "Just work" to "just be fun". And the coming weeks will be about achieving this across a throng of systems. There are no shortcuts, will just have to get to it.

Never before have I had such a fire under my arse to push this forward so something can become of this project, but I'm simply not feeling well. Hoping it's just a temporary thing, eager to push this forward and finally have seacrit realize its potential. Sometimes it feels like no progress is being made as I adjust the same things for the 5000th time and the giant ball of tangled code gets bigger and bigger and the tiny little things that need tuning spirals out of control. But I feel like it's going in the right direction, and the potential will be obvious soon. Painful to not be able to get to work just yet as the days fly by, but hoping this is just a bug that'll be gone in a day or two. I have been so damned happy the past month to be back in the thick of it whoopin' ass and makin' games. Later in the day now, feelin' a bit better, blood sugar is stabilizing, I sound like a grumpy old man typing this crap. 

Hit a wall a couple months back, thought maybe this dream was dead. But we've been back full steam ahead for some time now. Hit some speed bumps, that's gamedev. If you don't hit some pit falls you're not trying hard enough. We put our head down and plowed through the damned wall and we're full steam ahead now. Back at this b*tch soon, likely tomorrow. Sh*ts gonna be tight.

I know it's silly to be this pumped to work on genocidal, smarmy, murderfish. But I'm counting my blessings. And it's comforting to know that even after all this time, after all this decay, after hitting wall after wall, I still believe in this project, and I'm still excited to push it forward. That's f*cking rare, and though it's been more tribulation than anything, I am very grateful to still hold onto a thread of purpose in this crazy world.














































FULL CIRCLE F*(KERS

Get SeaCrit

Leave a comment

Log in with itch.io to leave a comment.