Sunday, December 15, 2013

[HobbyRPG] Menus!

Progress seems slow for the past couple of months, with my weekends either packed to the brim with events, or just me falling sick. Either ways, progress must somehow be made so here goes:


As expected, this inventory system takes a pretty long time to develop behind the scenes, especially since we were busy these 2 months, with concerts, live viewing, fighting game events, forcing myself to clear my backlog of games and being sick during my free time. I did felt that it would take under 2 months to complete so thankfully it did.

Only that I am absolutely clueless about RPG UI design on touch screen.

It's annoying when I could probably whip out a non-touch-screen design easily but couldn't do the same for touch. There is just so many considerations to take note of and it is rather painful at this moment to shift elements around. So I just whipped up the basic functions and moved my elements so that it is at least usable to me. Making sense of it and catering to players will have to wait =(

Setting up the UI requires a lot more work at the background. XML loading, LUA, additional macros to my XLS and new CSVs started popping out as development progresses. It may not look like much but it's feels like more work done compared to the other components that are in place now. It even involves a rather retarded bug fix within cocos2d-x that should not have happened.

Well, at least I'm going to start moving on to other gameplay elements like transitioning to another map. 

L2P thoughts



So last week, L2P came and went mostly uneventfully thankfully.

I was there on Saturday signing up for Blazblue's 3v3 tournament mostly expecting to lose so that I can provide commentary alongside Yensen. I did play my best, though I feel that I am very out of sync with the game mechanics. Overall, I need to thank Doctor for being such a nice guy and letting go of his spot despite the screw ups within my team, allowing 1 new face and 1 oversea player to experience the tournament. Again, with every major Blazblue event, there seem to always have new people joining in.

Marvel tourney was surprising as well, reaching over 30 players AND running smoothly on top of all the other tournaments. Seriously where did all these Marvel players come from? It's great to play Marvel again despite our love-hate relationship. It's great that I can still do my combos without warming up! I didn't get very far though after failing to beat Zero May Cry. Yensen did pretty well, except for dying to Rx who never really played the game.

I spent most of my time hungry, thirsty and doing commentary. Looking back at the stream, I think I did fine except that I really need to cover my mike when I'm talking to others. I was really enjoying myself there too much. Blazblue really changed a lot. Long ago during CS1 days, I found Blazblue really difficult to commentate. The game was slow and the top tiers were running clinics and 'movies'. Heck the 'movies' weren't even fun to watch since chances of dropping it were close to none. Now the game is faster and characters have more flexibility to cater for player's creativity. Really fun to commentate.

Marvel is insane though. Seriously, commentating Marvel is an enjoyable experience. Yensen needs to stop giving up commentating because it was 'too hype' ^^; 

Overall it was a great week. I won't be there for the next event at The Gaming Entertainment E-sports Exhibition because I'm going to Japan!

Really appreciate everyone running and helping out in the event. Jjjjynx, Moca, Yongde, Xian, Farp, Edz and many many others. The event would be nothing without them.


And of course, our cosplayers!

Sunday, November 24, 2013

Totori+ Othogalaxen Boss guide (patch 1.02)

First of all, I am not sure at this time of post whether other versions outside the Japanese one received patch 1.02. If you have been following guides that promotes Dark Water, I am afraid to say that it no longer works. In 1.02, I think the bosses' resistances were increased to the point where Dark Water is impossible to land.

So obviously I have been following those guides (including Japanese ones) without considering that 1.02 screwed all of them. With the absence of Dark Water, this means that you cannot lame out bosses with Sleep/Poison effects. It also means that you other end game items need to be stronger.

For end game equipment, this guide still works.  The most important part is getting as high defense as possible, as well as at least 1 Shadow band on Totori. The Shadow Band is, of course, to be used in conjunction with a very good Dimension Egg. You will get 6 turns in total if your Egg is built right. Also, I find that on Totori, it does not matter if the Shadow Band has high quality (higher quality Bands drain more health per turn) since it does not kill. It's nice to have it as low quality as possible, but not THAT neccecery.

For characters, it does not really matter as long as they are well-equipped and around level 45-ish. I manage to beat the bosses with Sterk and Mimi, which shows that you don't really need Rorona and abuse her ability to use items. All you really need your party to do is to defend Totori as much as possible. If Totori dies, you will lose.
Now let's talk items. I won't go so much into details on how to transfer traits because that's the fun part of the game. All items list are more or less equally important so try not to compromise them.

Elixir
This item is what keeps your party alive and healthy. You cannot compromise this item at all in my opinion. Drache's guide's Elixir covers it perfectly so I'm just reiterating it. Effects needed are HP Recovery from having it made high quality (so that Shadow Band isn't that painful), HP Healing L from a high quality Nectar, and MP Recovery L from a LOW QUALITY Sage Herb. The MP Recovery is really important, I cannot stress that enough. I personally made one without it and it was hell wasting turns to drink Mind Waters and having my party members out of mana after using their skills a few times. MP Recovery ensures that your party will ALWAYS be able to use their skills, and ensures that Totori do not waste TONS OF TURNS drinking Mind Water JUST to duplicate stuff (especially Dimension Egg).

Traits are also the same as Drache's guide. Healing Essence from Forest Dew, so that it automatically revives your members should they randomly die for being unlucky (it happens). Cure-All will naturally be there with Sage Herb, so that it heals everyone. Also Source of Life from Bless Stone to restore LP. Having low LP is pretty much one of the causes of death due to the reduction of defense. And of course, what else to spend on the last two traits? Simply, Effect Boost L and Rank Boost L.

Totori Brunch
This item is especially useful if bosses hold the threat of one-shoting your characters. Most (if not all) the bosses notoriously tries to lower your characters' attack and defense by a good amount. Feeding them this Totori Brunch would mostly likely negate the effect. Again, not as essential as the other items, but still occasionally useful when all else fails.

Effects are:
Final Strike L
Rank Boost L
Beginners OK
Lone Slayer L
Boost Effect L

Dimension Egg
You probably heard this item tons of times. With Shadow Band, this essentially gives the user 6 turns (I confirm that it's 6) at the expense of depleting all available mana (this is where and should be the only time Mind Water comes in). It lasts for 2 rounds, so on the second round you don't have to waste 2 turns duplicating Dimension Egg and then drinking Mind Water. You might be able to compromise this by giving it lousier traits somewhat, ending up with less turns but still able to function. Keep in mind that less turns might give you more trouble against bosses that regen or heal. For the purpose of this guide, I'm using my 6 turns Dimension Egg.

Effects are:
Effect Boost L
Boost Effect L
Rank Boost L
Final Strike L
Lone Slayer L

Himmelstein
Othogalaxen bosses have retarded elemental resistances so N/A supposedly won't work on them (unless they changed their resistances this patch which I didn't check). Either ways, this bomb is non-elemental damage so patch or no patch, this is a reliable source of damage. I made 2 versions of this, one to debuff enemies (so that I don't really need to make Magic Chains like some guides do), the other for pure damage. The pure damage Himmelstein should be doing around 2000 damage after debuffing enemies and bugging yourself with Ether Ink. It can critical for even more!

For the damage Himmelstein, effects are:
Beginners OK
Rank Boost L
Effect Boost L
Lone Slayer L
Giant Slayer +

For the debuffing Himmelstein, effects are:
Soul Steal
Giant Slayer +
Rank Boost L
Effect Boost L
Strength Steal

Ether Ink
This item just boosts all your items when you use them! To top it off, it is relatively easy to make a good one.  You just have to get it to a quality where it has the Item Effect + trait. It's an easy to make item which you spend 1 turn using which increases your Himmelstein damage by around 400 (this of course depends on how good your Himmelstein is in the first place). You can live without it though.

Mind Water
Simple item. It's best, of course, to make it such that it has MP Recovery XL but as long as your Elixir is giving MP too, MP Recovery M is enough since you are going to use it only when you totally run out of MP (after using Dimension Egg, or if you miscalculated and don't have MP to use duplicate). Wholesale THIS. You are not going to duplicate this. Wholesale and buy. Bring a bunch to Orthogalaxen. You don't really have to give it crazy effects and stuff so don't waste too much resources working on it.


Strategy
With these items, the strategy for all bosses is pretty much the same, with only a few minor notes to take care of.

Basically your team members will keep using their most damaging skill on the boss(es). ALWAYS choose to protect Totori. If Totori dies, the team is as good as dead (unless the boss is down to a pixel). I repeat, ALWAYS protect Totori, if Totori dies, party dies.

So obviously the main focus of the fight is Totori herself. With Dimension Egg and Shadow Band, you will have 6 turns. The first turn goes something like this:
1) Ether Ink
2) Duplicate Dimension Egg (this will wipe your MP)
3) Mind Water (this will restore some MP)
4) Duplicate Elixir (this will heal the whole party, give them regen and give tons of MP)
5) Duplicate Debuffing Himmelstein (this will weaken your foes by a ton)
6) Duplicate Himmelstein

Then the second turn goes something like:
1) Duplicate Elixir
2) Duplicate Himmelstein
3) Duplicate Himmelstein
4) Duplicate Himmelstein
5) Duplicate Himmelstein
6) Duplicate Himmelstein

Then third turn goes something like:
1) Duplicate Dimension Egg (this will wipe your MP)
2) Mind Water (this will restore some MP)
3) Duplicate Elixir (this will heal the whole party, give them regen and give tons of MP)
4) Duplicate Himmelstein
5) Duplicate Himmelstein
6) Duplicate Himmelstein

After doing it awhile, you will get used to the strategy. Then you can start being flexible about the decisions like maybe throwing an extra Himmelstein, or using Totori Brunch, etc. BASICALLY the big picture is:

1) Debuff enemy (Debuff Himmelstein)
2) Buff with Ether Ink
3) Dimension Egg
4) Regain mana
5) Bomb the crap out of the boss
6) Go back to step 3 and repeat

This will more or less work for ALL the Orthogalaxen bosses. The only problem I had was Blood Element, where she has the potential to wipe my team easily. If I survived her first round, I did the following instead for my first turn:

1) Duplicate Totori Brunch (on first member)
2) Duplicate Dimension Egg (this will wipe your MP)
3) Mind Water (this will restore some MP)
4) Duplicate Elixir (this will heal the whole party, give them regen and give tons of MP)
5) Duplicate Debuffing Himmelstein (this will weaken your foes by a ton)
6) Duplicate Totori Brunch (on second member)

This will ensure that her attack will be reduced and your party member's defenses will be greatly increased to the point where her attack can potentially (for my case) deal 1 damage per hit. After doing so, it's pretty much smooth sailing.

Well that's all I have to share. Good luck!





Monday, November 11, 2013

Anisong 2013 Aftermath

Wow.

What can I say?

Anisong and AFA has grown so much since the first time it was held in 2008. This is by far possibly the most draining. I only went for Saturday's and Sunday's lineup, but I know friends who were overwhelmed with Friday's lineup. 

Friday was Egoist, Hachikoji P, livetune, motsu X DJ Kaya and Valerie. I can't comment much since I wasn't there but if you are a Vocaloid fan, Guilty Crown fan or a motsu fan (he was from the now defunct m.o.v.e group which I MISSED LAST YEAR BECAUSE I WAS OVERSEAS T_T), you are probably missing out on a lot. 

Saturday was crazy. LiSA is as cute as ever since she randomly turned me into a fan due to her awesome performance the first time she came over at 2011. And she got better. A lot better. She doesn't seem to tire out easily anymore. Eir Aoi; I was expecting a crazy godlike perf ormance because I know her singing voice is very powerful. I think she just blew everyone's ears and the sound system away, and also the main cause of my ears ringing that night. Then Milky Holmes randomly appeared on stage -_-; and I happen to know some of their songs without watching any of their animes (thanks animelo -_-;). May'n came out last. It was a really emotional moment as she brought us back to remember the first AFA which I still clearly remember because before that concert started back in 2008, there were images of the song "Don't be late" all over the stage and she was late. May'n also improved a lot. There were a couple of her new songs. Finishing the day with Diamond Crevasse was...epic.

But I think everyone knows that Sunday is going to be crazier. Angela, Elisa, TM Revolution and Nana Mizuki (!!!). It was Valvrave night. Now, if anything can be crazier than getting artists together, it's getting them together with a theme or even better and anime (like Macross Night in 2009 Sunday, or Super Robot Night on 2010 Saturday). Angela got off to a fantastic start, ending their performance with their trademark Shangri-la. Elisa came in next and showed us what a power singer she is, hitting all kinds of notes that sent me chills. Her singing 「愛、覚えてますか?」 really threw me off. My mouth was singing along and my mind was wondering where I heard that song (outside of Macross) and if Elisa really was the original singer.  Her reactions on stage were funny and cute, like her reaction to the people at the front shouting "Elisa-sama". 

Then there was TM Revolution. What a riduculously charismatic performer! He simply brought the roof down, espacially when the FIRST note of Invoke start playing. It felt like te convention hall will collapse.

Monday, October 21, 2013

[HobbyRPG] Dialogs!

Dialogs!

Anyway, the last week was basically trying to get the game running on the device since we wrote so much code since the last time we tested (which is like...the beginning of time when we had only like 2 files or something). The thing is that we code in Visual Studio because it's an awesome environment, but our android is setup to use GNU compiler (cocos2d-x has some script that sets up for us). The screwed up thing is that it relies on a Makefile, which means I have to manually indicate which files need to be compiled. Fortunately, after some googling, modifications and thanks to the linux 'find' function (big hint here!), we now that a script that searches for all .cpp files and include them into the Makefile!


Anyway, so far LUA was pretty much pain in the ass. I was constantly trying to convince myself what is the right way to this X and Y mostly because I have like zero experience working with scripting languages on top of a native language. I can potentially write my whole game in LUA if I really want to; that's how much power it has. The only thing that's stopping me is that C++ is still our native (hurhur) language it probably has better performance and memory management (well manual memory management). There are other minor reasons too like wanting to make full use of our IDE, increase performance, etc. This is still a game that runs frame-by-frame, so it just does not make sense to me to write update loops in LUA.

Still, as the game progresses, the stuff that needs to be data-driven starts coming in and that's causing a few decision problems. It comes to the point where attempting to create 'generic systems' need to have feasible and reasonable boundaries, which also means NOT making it too generic. It's normally not a problem, but because I have loads of RPGs to reference in my head, I keep trying to hit all their features. It's really hard. Just the inventory and item system (which I am currently working on next) is giving me a headache. I could easily write out a chain of inheritance in C++ like having a UsableItems derived from a base Items class and then chaining a Armor class out of UsableItems class, but this is really unproductive especially since I have LUA. I'm trying to derive some way to just use one nice Item class. There's just too many variables to consider if it works for the limited RAM in my head, so I'll just code it out and see how it turns out.

Once the inventory is done, hopefully we can get item shops and equipment in and we'll be ready to FINALLY get started on combat. This might take awhile though ^_^;;

Monday, September 23, 2013

[HobbyRPG] tolua++ and menus!

This is turning into some sort of development blog, but from my perspective. Anyway, since LUA and UI were pretty big stuff we intend to add for this sprint, progress was seemingly slow due to time needed to research. I almost went into a huge hole of creating our own UI system but Dom managed to save me by just looking up cocos2d documentation -_-. I think when I figured that I could reinvent the wheel, I would just go ahead and do it without consulting Google or look for existing implementations.
Anyway, a not-so-glamorous progress to motivate ourselves!


For those who can't see the changes, I have neatly boxed them in red, since they are all code-based changes. Dom already told me a bit on how he intends me to use the UI, so I'll work on it once I can find better art. I'll try to follow his idea lol. 

LUA binding is a bitch. Well, it isn't once you know what's happening, but when you have no idea wtf is LUA, it's a bitch. cocos2d-x comes with tolua++ support, and I had no idea what that meant until I spent a couple of hours reading its online reference before I sneezed myself to bed on Saturday night. I felt super terrible yesterday, so terrible that I gave up on implementing it. Today I sneezed less, so I managed to get it working with a few good guesses. 

The documentation online for tolua++ is pretty heavy read for those who don't understand what's going on. Examples and tutorials are almost non-existent; in fact, the best tutorials I found were in Chinese or in Japanese. I totally gave up on the Chinese one. The Japanese one is easier to understand thanks to the existence of katakana. After seeing a few code snippets here and there, I finally figured it out. 

In a gist, tolua++ basically takes in a .pkg or .h file and generate a .cpp file with a function for you to call in your program. Then you just grab the lua state in your program (by right from tolua++.h, cocos2d-x has a wrapper around it) and throw it into the function that tolua++ gave you. I'm too lazy to explain in detail, but here's some poorly made step by step screenshots on how to expose a class to LUA:

First, get tolua++ to run on command line! Download the tolua++ executable and let adjust your Environment Settings' PATH variable to point to it. You know it's working when you open your command line and type "tolua++". The help page will appear:


Go to your project's root and create a .pkg file like so. Note that it looks almost like your .h file. These are the functions you want to expose. 


I must emphasize that the file included in the $cfile line MUST be accessible from the .pkg file's location. If not, tolua++ will complain.  Finally, just run tolua++: 


And voila, if there's no errors, you should magically have a file that looks something like below. If there are errors, well, just try to resolve them. Remember to Google for help (when in doubt, just Google the whole error message).


Add this to your IDE and pray that it works. If it doesn't, you screwed up somewhere in the .pkg file. If you have trouble, remember to Google, ask stackoverflow.com, attempt to find the answer in tolua++'s online documentation and/or actually try to figure out and guess how tolua++ binds your C++ code (it's not THAT magical). 

Moving on, the red box is the function you should be interested in. Simply call this function in your program and pass the lua_state in. The next screenshot is a cocos2d-x example since they have a wrapper: 

And now, when I run my script it works! (script is in first screenshot).

After you have successfully done this, the entire online tolua++ documentation will suddenly make sense! *gasp*





Wednesday, September 11, 2013

[HobbyRPG] And it has began!

Remember the RPG game I wanted to make?


It took some time, but finally Dominic and I have something visible up ^_^.

This is using the awesome cocos2d-x and my native language C++.  This project is probably going to be very slow since we agreed not to think about monetizing or selling it, and use it as a side project to create the RPG we want to make, which is great since there is no pressure. We can't guarantee if we will get burnt out at some point, but so far progress has been really fun for us!

Honestly, coming out of Digipen showed me how much I really wanted to make an RPG. After over 5 years in studying game development, I have only managed to create a simple text-based RPG game, which was a fun experience. Unfortunately, RPGs are extremely tedious to get it right, so it was not exactly a viable option as a school project, or even for a game you want to sell. Over the past decade, we have only seen the RPG genre decline and decline, leaving only a handful 'good' ones which were mostly cult hits. Hmm, not exactly a good genre to throw money into.

With this, hopefully when we go into design, I can attempt to return to my daydreaming story-writing days. I used to write tons of stories and other crap for fun, but that was easily a decade ago before I picked up programming and pursued to have a sciences foundation, easily obliterating my story-telling abilities and also my English. I can also go back to using Fruity Loops (which is now a full fledged...thing!) and fall onto my rusty music background to create sounds though I have much less hope of that succeeding. 

This project has sooooo much to be done, but it's so fun making each component work. Right now we are still working on the overworld system and already have animations, input and collision done. We also went to excel and write a macro to export stats into .csv files to reading into the game. 


What I like about this project is that it keeps my game development skills sharp, since I am not really doing development as much in my company.  We are also able to put into place what we have learn in our companies into this project, so it is a good learning experience so far.