Friday, March 29, 2013

Interegnum and Continuation


Do you have your towel?  Good.  Understand tho - since we can't card you, there simply won't be any serving of Pan Galactic Gargle Blaster's.  Sorry - but Management simply insists - no one, but no one, is served. 

On to our story.


Team C - good solid name that.  Not pretentious at all.  Not the uppity Team A, no sir.  Nope.  Too snobbish if you know what I mean.  Oh and not the social climber Team B - keep an eye out on those people...

No - we are Feet Of Clay - Solid Middle - Good Ole Team C. 


Guess we are gonna loose a lot of money over this decision.  Who wants to deal with a bunch of average SLAP!!!  Ouch!  Okay OKAY - yes I'm with the team all the way!  You betcha.  Team C all the way!

Where was I?  Oh yeah.


Flights of Fancy is going to continue.  Yes, we have decided - we really really need this on our resume's - oops, did I let out too much?  Anyway!  Yes - Flights of Fancy is going to be getting released as a playable Beta SOON!  Just don't ask me what SOON means okay?  I mean - you think we have the budget for a product lawyer?  Heck we can't even afford LegalZoom stuff.  Jeez.  Soon means as soon as we get it out is what SOON means.  Okay?  Got your towel?  Good.  Remember, don't panic.


So - I'm going to keep cronicling - I mean chronicling - I mean adding stuff - to this blog as we go along.  Maybe others in the team will too - maybe not.

Yes the professor posted our grades.  No you don't get to know how bad - uh - I mean - whatever.  Forget it!! Move On! No - we are NOT endorsing any kind of political hack - I mean - whatever...

Next Blog Post - Sprites!  Sounds!!  Music!!!!

Tuesday, March 19, 2013

Great Job Team C!

Looking back on this quarter of SE591 combined with SE491 last quarter, our group has come a long way to say the least! Each of us has gone from knowing very little about Lua (at most) to becoming quite adept with coding in it, particularly of course with how it is used in the Corona SDK. I believe I was the only team member who had some experience with Corona prior to this project, though I was still very much a beginner. Based on those humble beginnings, I am very impressed with how far we have come and the quality of the product we have created.

Overall, these 2 quarters combined have been a great learning experience. This has been an exciting and productive project to work on. I was very impressed with each of our team members and the effort they put into our project. Going forward, we plan to continue as a team to improve the game and continue with our original plan to release it to a wider audience on the Android Play store and hopefully onto the Apple App Store as well.

One other note for this last blog entry of the quarter is that one of the things I have noticed while working on the project is that the mobile application development ecosystem seems to be expanding quite a bit. There seem to be at least a few other platforms in various stages of development that seem to be preparing to give Corona some competition (e.g.,, to name just one, which according to the website, includes among its founders one of the co-founders of Corona). It will be very interesting to see how the various platforms come along as time goes on and how the development experience on other competing platforms compares with Corona.

Saturday, March 16, 2013

"...and that's a wrap."

Well, this week the team and I spent time wrapping up any final details and issues left in the product before our final presentation and demo.  We came to an agreement as to what issues should be addressed, what "low hanging fruit" could be fixed or implemented and what to leave alone.  Since we are under a hard deadline there are many issues that we simply have no time to fix. (for now).

Shortly after the quarter ends we plan to continue our collaboration with the goal of seeing this project reach completion.  We are quite simply too invested in it to just let it die.  We are all in agreement that we want to develop all the features that the original plan called for.  We want to take the time to polish the graphics, the gameplay, the level design and the story; we want to release it on somebody's app store (Google Play or Apple App Store or Kindle?  we are unsure right now. maybe all three.)

Above all else, we just want to be able to say, "Hey, you know that mobile game 'Flights of Fancy'?  WE did that!

Monday, March 11, 2013

JSON and the boolean medusa

John had provided blessed silence - added a mute button.  Just one thing tho - state was not being saved from scene to scene.

I figured since I had grasped that nettle before it would be a fairly straight forward task to add the mute state to the other options that were also being kept.

And as we all know, the road to hell is paved with good intentions...

It all started so simply.  I wasn't sure if the Corona SDK JSON module would save anything but a value inside quote marks - the typical "this is a string".  So I started out using "true" and "false" as values in the save state for muting a scene.

Uh oh - John was using the value as a boolean.  Snap.  That's when I thought to see if the JSON routine would save it as a value without the quote marks - and was happy to see that it would.  Awesome.

Except - when going thru the game - the file would get saved with quote marks and errors would get thrown.

Poor Medusa...

Several hours later I removed all the places where I was writing the value wrapped in quotes - and happy day it worked.  So - level one and two have the code that saves the state and sets the mute button based on the state value when the scene starts up.

A couple of housekeeping measures this week too.  Added boss ship movement and shooting to level 2.  The boss shooting had been in the code - just wasn't getting fired due to a small type in the function call.  Level 2 uses different planes from level 1 - and I randomized hits to the enemy planes, you have a 1 in 2 chance of making a fatal hit.

Oh - Professor Jia had suggested our team create a poster for the final presentation:

Sunday, March 10, 2013

TBowers Week 9 Report

This week felt like it was spent mostly buttoning up the final product. From a product standpoint, I spent the majority of my time testing our current offering in the simulator and on a Nexus 7 to see what bugs or UI issues I could find and fixing those. The good news is the number of issues discovered is significantly decreasing since we have unofficially frozen the introduction of new features and are focusing on quality and testing. From a process perspective, I created our weekly tag as well as experimented more with importing our code base to BitBucket. Hard to believe we've hit the 20th beta (averaging more than one a week).

Next will be preparing the final set of documentation for the project. This includes the group documentation as well our individual document enumerating our accomplishments. John has provided a great Visio diagram showcasing the interdependencies among modules throughout the game. It serves as a nice technical architecture diagram that will be a useful reference in the future.

Wednesday, March 6, 2013

Bug Fixes

In our usual Saturday group call this week (3/2), we discussed, among other things, our plan going forward. Since there are only a couple weeks left until our final demo, we plan at this point to work mainly on bug fixes. It was also mentioned that we should plan to do regression testing any time we make changes in order to monitor closely for any unintended repercussions of our bug fixing. We all agreed that we don't want to introduce any significant new features that could potentially cause issues.

A couple of the remaining bugs that we discussed which I hope to resolve this week are:

- The bullets rotate when the player ship rotates. I'll look through the code to see if I can pinpoint why (and where in the code) this is happening.
- On level 4, when an enemy bullet collides with an enemy ship, the bullet rotates. I plan to resolve this by adding a fix so that enemy bullets do not actually collide with enemy ships.
- Multiple healthbars appear, one on top of another.

Something else I would like to work on this week if time allows is to try to improve the explosion effects. However, depending on how long it takes for me to fix the bugs I have outlined, I may not have time to work on this task. I also will get started this week on my final individual write-up (the summary of my individual contributions).

Week 7 Accomplishments

One significant accomplishment this week was that Travis was able to get Twitter & Facebook posting functionality working. We can now accurately say that our app is 'social'. I ran builds to test them out on my device and both are working now! Great work, Travis!

What I did this week was focus some more on the bugs still appearing in Level 4. A couple of the fixes I added this week were:

- When the player is killed on Level 4, the enemy planes continue to fly across the screen. The cause of this problem was the fact that the "drawEnemyWave" event was not being removed. I added a removeEventListener function to resolve this.

- The enemy planes were still remaining on the screen when the end of Level 4 was reached. This was a simple fix. The problem was simply due to the planes not being removed. I added the following code to resolve this:

    for i = enemyGroup.numChildren,1,-1 do
            local child = enemyGroup[i]
            child.parent:remove( child )
            child = nil

Also, I was getting an error this week that points to the json.lua file. Specifically, the following error was appearing, which referred to line 309 of our json.lua file (in method decode_scanString):

base.assert(stringEval, 'Failed to load string [ ' .. stringValue .. '] in JSON4Lua.decode_scanString at position ' .. startPos .. ' : ' .. endPos)

This ended up being an issue with the Twitter code we had in the game.

One topic of discussion in our Saturday meeting this week was the question of whether an android package file (.apk) can be unpacked into the source code that was used to build it. I will do some research into this to see what I can find out.