Sunday, 10 March 2013

HELL YEAH! (Blog Update 10/03/2013)

Yo! Welcome ladies, gentlemen and gamers to another long-awaited update here at Sonic Punch Line!

First things first; again very, very, VERY sorry about the lack of blog updates recently. It was a hectic couple of weeks trying to figure out how to fit the newest gameplay feature into the logic structure of  Bubble Virtuoso. Well, I'm proud to announce that the newest feature for Bubble Virtuoso is now finally implemented and fully working!

The Return of the Gauge

See that gauge up at the upper right corner? Yeah, the gauge which I once used to display time now makes its return for its new role as the feature that will make Bubble Virtuoso feel more competitive - enter, the Bubble Time gauge.

Stop - Bubble Time!

I won't be getting into specifics into what exactly Bubble Time does, but I can explain how I came up with the idea and the long road to actually making it part of the Bubble Virtuoso experience.

The Idea

I've came up with the idea of the Bubble Time gauge back when I was brewing up a concept image of what Bubble Virtuoso might look like during gameplay (read: "A Quickie (Blog Update 27/01/2013)"). At that time, Bubble Virtuoso - all things considered - is no longer a game about trying to get past as many waves as possible. From the original conception of Bubble Virtuoso to what it is now, the game is now a game where the player has to achieve the highest score possible. This is evidenced by the removal of wave indicator which would otherwise show how many waves has been completed by the player. What were left back then were the necessary things needed to calculate score - score keeping, formulas needed to award points and bonuses and a combo system that affects incoming scores.

However, I felt that if left the way it was, Bubble Virtuoso would not feel competitive. One thing I thought of was that the game needed something that rewards the player for performing combos as well as speedily completing waves. That was when I decided to create Bubble Time.

The Gauge

It took a bit of time for me to decide how the gauge itself would work, but in the end I decided for a Beatmania / Dance Dance Revolution styled gauge where there is a constant decay rate regardless of the percentage of fill.

So knowing what I want I started looking up some Playmaker examples that deals with something similar to health bars afflicted with damage-over-time. Some notable examples I've encountered included the stamina bar example found at this thread at the PlayMaker forums and the poison damage tutorial featured in this blog entry that I found whilst waiting for a bus. However, none of those examples really helped in what I was really looking for, so I ended up having to figure it out by myself.

What I've learnt whilst planning out the logic behind such a gauge is that although it may look simple it was actually a complex affair (at least at my level). The final logic behind the gauge's FSM was a mixture of the logic in the stamina bar example and other FSMs that I've created for the game's other components. The crux of the problem I've faced during the development of the basic gauge was the situation where the popping of the bubbles would add to the gauge's fill while the gauge still maintained a consistent decay rate. It took a couple of tries but I finally realized that the bubbles being popped needed to modify BOTH the gauge's fill AND the time needed for the gauge to decay from the current fill rate down to zero. Additionally, I also learnt that the gauge's FSM needed to perform tests to check for the "empty", "have fill" and "full" states of gauge's fill in order to behave properly in various circumstances.

Once the gauge is finally functional (right down to the method of activating Bubble Time after which the gauge would decay from full to nil at a set amount of time), it was time to move on to find out how to make the gauge perform its main function.

The Main Function

When I first started the development of the Bubble Time gauge, I thought it would be a simple case of modularly adding a FSM and then adding a FSM state here and there. However, for all intents and purposes of the original design of the Bubble Time gauge, it was a big humongous cluster-f***. Little did I know back then that the Bubble Time feature would actually affect almost every single aspect of the game, ranging from the score calculation formulas to the wave timer itself. As a result, I've spent a good part of a working week modifying and optimizing (a.k.a. - abusing the Send Event By Name - "Broadcast All" action) a lot of my existing FSMs to accommodate the Bubble Time feature. Well, while I was sidetracked a bit, at least one of my "to do" items was partially completed. After the optimizations I've noticed that the game was running a bit smoother than before (the game used to stutter terribly when running it on my laptop, making testing a huge pain in the ass), so I was glad that I took the time to do this.

After the optimization came the implementation of the Bubble Time functions. My original intent for Bubble Time was for the game to enter a different "mode" where the parameters of the score calculation formulas, various timers as well as FSMs dealing with sound and visual effects would be affected whilst Bubble Time was in effect. At this point I realized that I needed booleans to affect other FSM components. It was my first time using PlayMaker actions that deals with bools so I needed to experiment around a bit to get the hang of using those actions.

Having all of those FSMs that would be affected by the Bubble Time feature eventually turned implementing it into huge juggling act; again I had spent a huge amount of time having to keep an eye on multiple FSMs to make sure that I didn't break anything and didn't miss anything. One could only imagine how much hair I had ripped from my scalp during that time...

So after another lengthy amount of time, I've finally had the feature sort of working (there were a few outstanding issues that were yet to be resolved). While play testing, I began to notice that Bubble Time as it were at that time had a couple flaws which caused a few problems to the flow of gameplay. So in the end, I decided that Bubble time should only affect the calculation of incoming scores as well as audio and visuals and proceeded to revert the changes I've made on a lot of FSMs that were modified...

Bubble Time Mode activated
So yeah, after fixing up other lingering issues I've finally implemented the Bubble Time gauge successfully. All that's left now is to add some notifications as well as some visual flourishes to make Bubble Time something enjoyable to use - oh that and a proper gauge UI to replace that ugly place holder.


Phewy~! That was one long blog entry! Again, sorry for the lack of updates recently as I hope you'll understand from my writing above. Just one thing I would like to announce - since it's approaching crunch time for the development of Bubble Virtuoso, I might not be able to update the Sonic Punch Line on a weekly basis as promised; I'll update if I can but please do understand if I announce that there won't be any updates for that particular week.

I hope you guys find this blog update somewhat insightful; if I were to say something about the current state of Bubble Virtuoso, it will be that it had turned out to be more ambitious than what I had originally planned at the start of its development - something I need to look out for in future projects.

Okay guys, time for me to sign out here. See you guys next time in another Sonic Punch Line update!

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...