We’re back on track, at least it’s safe to say that. Let’s jump right into the core.
Bug that plagues us for months
The first thing I really want to say is “Bug”. As cocos2d-x is an action-based framework in which case if you want to do something, you fire up new actions or cached ones. It goes like that not so similar to state-based or intensive update-loop approach that you need to keep track of the current state and act immediately upon that.
Things get complicate as there are several actions in both major types as follows.
- Translation & Misc
Those two are combined and packed up together in one final action (or CCAction) in which you use it as a parameter in runAction() of particular CCNode.
Consider this case when Kiki hits a target zombie with a hard punch, a zombie would then be bounced back for a reasonable distance due to punching force and at the same time it plays an underattack animation. When it hits the ground or says logically it finishes translating for that bouncing back distance then the animation should change into falling (or down) then after some short amount of time it wakes up and goes back into normal (or stand) animation.
That’s pretty much the concept of one such the whole chain of action trigger what’s behind the scene to start working. Let’s imagine if something in parallel or very close in proximity of time along with that executing action just starts and ready to roll in, then we have a chance to break the whole things going on if something won’t finish gracefully and completely. You know we have to stop previous action before start a new one, thus this leads to stop the whole thing as I mentioned previously.
This kind of situation might occur if that kind of action involves spinning in mid-air.
Dated back for some times, I’ve applied 4 approaches playing around with checking and setting some flags to prevent that thing to occur. I tested it mainly on iPod touch 5 and from time to time I switched to test it on iPad 2 as well, in front of me, I saw all systems work perfectly but when our internal team especially Ping having tested things out, that nasty stuff occurs as you may see above via 2 shots. This kind of bug won’t happen frequently, and rarely to occur and more importantly with no evidence or solid hints. If you find something similar to this type of bug, suspect it to be about timing issue. It’s only the right time that can trigger its effect to happen. Take our previous major bug of everything get disappeared suddenly. It occurs because of dividing by zero in which case only the right combination of calculation would cause it to happen. Exactly is this case.
So the clean solution would be to separate those two major actions I listed them above. Animation stay in one side, and Translation & Misc stay in another side. We should not pack them together and execute (via runAction()) it as one. So I planned and sketched things out, it was about time to fight it back.
Nevertheless, it’s too painful and require really complex set up to separate it completely and handle it properly after that. Our current stage consists of interleave animation action mingled with translation & misc action. A next in line or consecutive action depends on time in which it must need for the former animation action or normal action to finish first, thus no simple way to separate both of them into 2 chains.
Not to mention that even if we separate the two categories apart, we then have to top it up with locking system (or sort of) to manage and maintain a good order of executions from both type of actions with no intervene from another set of actions. #that’scomplicate
Right now, I applied a workaround approach to detect whether if such a situation ever occurs (no running actions but it needs to be gotten rid of or continue) in which all of the time it originates from being-hit action or when zombies get hit by Kiki, then I will simulate a being-hit action again with no additional effect on zombies’ HP. This results in a somewhat restarting but merely seamless transition from a stopped action. So that’s basically is the 5th version of approach I’ve applied to resolve this bug that has plagued us for several months. Right now, it works great!
Combos, Combos, Combos
We’ve worked on combos and combos during these weeks. Initially we aimed to have 8 combos + 1 ultimate attack (with 3 upgradable styles). That’s plenty of choices players can have while playing the game. Actually from the feedback we got from our own team play testing the game, the first thing comes to mind is which combo we should use next as there’s plenty of it? Right now, we have all combos implemented both in terms of asset and code. Only one combo that I need to work on it more as it requires complicate connecting between zombies and Kiki while performing combo itself, and not to mention additional of 2 upgradable styles for ultimate attack we currently have at the moment.
Honestly, at this stage, our team should not expose or even hint you guys about what’re those combos we have in hands. This will spoil things out and lower down the excitement when the game releases despite the fact that I really want to let you guys know in every step. Yeah, we should hold them off with ourselves for some content, hope you guys understand this
Anyway, I do believe that we might expose more information after we got back from TGS (Tokyo Game Show) on 25th September as we will have more ground up and ready to let audience and press know more about the game. Although it won’t be that much information, but something that we need to roll it out to adhere to our initial approach of open development.
So here below, a little hint on a couple of combos that will appear in the game (it won’t represent the final graphic or expected gameplay though, but it’s as of now).
And yes, not only combos and ultimate attack, we also have some misc actions that will help players fighting with horde of zombies a little bit more easier. Those are ready in term of asset now, a great work by Kum, I just need to finish it in terms of code.
So what does the game offers in TGS? and what’s next for TGS?
In term of TGS, not all features will be ready at booth but we will have a short burst experience towards the single gameplay in 1 single level that all combos are unlocked to fight with initially ~10 types of zombies including boss. Things won’t be too much deviated from that line. The level might be other one we have in hands in which we will decide later in time.
During the past weeks, we also have to do things about document work communicating with Tokyo Game Show Oversees Management Office to prepare information and submit it in time. There’s a lot of information you need to submit in terms of various things that related to the booth, games, our staffs and team, badges, etc. Fortunately that I decided to finish this stuff once and for all after realized that I didn’t have much time to go back and forth to their main website to submit and keep track of deadline. So this things are no worry now. We’re ready to go.
We will be accompanying with our Japanese friend, Kubota Ken (窪田 元), who will be helping us in communicating in Japanese and translating. He will be as part of our team, and will be with us while we’re exhibiting at our booth. In additional to 2 additional guests Tan Chaichanavong (Transair Cargo) and Ryusuke Yamanaka (Fujitsu) which are our very special guest at the booth. Also Miao Ling Yee (Amway) which I met her in Networking Game Asia, also planned to visit us at the booth as well.
I started to apply a new behavior as to prevent me from boredom or even fall asleep without realization. That is a stand-up coding.
Once in a couple of days, I stand up and do coding stuff in front of my machine for hours (measured it to be far beyond 5 hours). In fact, at least 10 or 30 minutes is enough to get you pumped up and refresh for the day. Anyway I love the style, this set up and behavior in coding. Those things help me focus on things at hand more than ever.
In additional to a place to work, as you already knew that we’re remote team working together, I have changed my static atmosphere and environment during these times by going out and work in coffee shop or co-working space at least 2 weeks a time. This helps me a lot as I can discuss things with my gathering mobile developers, my folks, even they’re outside of the team to share ideas and give them our game to play and have valuable feedback back. The main reason is to always keep focus. See my favorite place below.
So now we’re back on track, and really focus on making combo-ing and gameplay experience the best from what we can push our effort into during these times. It will be great for TGS as well.
We will keep you guys updated while we’re staying in Japan during the post-day event (hope we will have some times).
Have a good day and stay tune for more!
SC – Wasin