Friday, March 29, 2013

Interegnum and Continuation

DON'T PANIC

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.

Hic.

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. 

Sigh.

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.

Ahem.

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.

Okay.

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., www.lanica.co, 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
    end

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.

Forward Movement


This week (week 6) I finally added the forward movement in the accelerometer that I had meant to get to a while back. I also fixed the warnings that were being thrown when playing the game on a device (i.e., using the accelerometer). In addition, I was able to fix a few bugs that were appearing in Level 4: 1) a single collision no longer kills the player, 2) the healthbar now gets incremented when the player is hit, and 3) the pause button now pauses all elements on the screen (previously it was not pausing the enemy planes or the generation of enemy bullets).

In this week's Saturday group call, we talked about trying to find a Corona and/or Lua debugger. One of the tools discussed is a debugger called "Lua Glider". I downloaded it and installed it on my mac, but was running into problems when trying to run it. When I start it up it says "Background scanning of projects..." and, according to the display, the process is stuck on 92% and does not advance past that. So far, I have not gotten the software working on my mac. I will plan to download it on windows partition and see if it works better there.

Another thing we did this week was start putting together our PowerPoint presentation to prepare for the demo coming up next week. Going forward from now, we plan to focus mainly on what additional features we hope to be able to add to the game between now and then. We also have some bugs that still need to be fixed.

Monday, March 4, 2013

Short and simple

This update is short but simple.  As the class is winding down, we as a team are ramping up our effort towards bug fixes and putting more time into addressing the overall stability and quality of our game.  That's what I'm doing currently and as the "PM" I I've been keeping abreast of progress from the others as well.

Sunday, March 3, 2013

TBowers Week 8 Report

What I've liked about our team is we all come from diverse, yet similar, backgrounds. We mesh really well and I've come to really respect and appreciate the opinion of everyone on the team. Yet it still feels like we're nearing the end. At least so much as the class is concerned. We've already discussed how we can continue the work of the team beyond the scope of DePaul. Subsequently, I researched some alternative source hosting options and ultimately created a repository for us at BitBucket. When this course is over, we will migrate our source to them for private hosting and continued work (which will be nice).

I also have been working on being able to demo the final to the class. We need to be able to demo a native build on an Android device in order to show functionality that isn't available in the simulator - in particular  the method in which we've integrated Twitter and Facebook. I think I have a solution, whereby I use a desktop application to remote debug a Nexus 7 that allows me to pull screen images off at a decent frame rate.

First I had to download the driver for the Nexus 7 from Asus. Then, I had to enable USB Debugging on the device through a weird (though neat) little technique where you go into the Settings and About info and tap the build number 7 times; enabling a developer settings menu. Then, I ran Droid@Screen, to get this image.




Like I mentioned, the frame rate isn't stellar but it works. I've also been trying to get MyMobiler to work which seems to offer a better experience but I have yet to get it working.


Good stories need an ending

A number of things got added this week.

Option menu got changed again - added a button to the scenes that allows the player to click it.  And cleaned up a lot of code so as to use it!  Now a user can turn the auto fire on/off and change sides.  Once those picks are made they return to the start of the scene they were playing - and not go all the way back to the main menu.

I was looking for a new background map.  We were finding the farmland one I added a bit too dark - and I wanted to get some other backgrounds in the game anyway.

I had used a tool I found from Spiral Graphics called Genetica - they provide a viewer so you can do very minimal manipulation of their files.

So I grabbed two more - their croplands and one called Cherry Orchards.  It was their cropland file I ended up using and adding as a background to a couple of the scenes.  I still need to lighten or replace the farmland graphic.

Now for the fun stuff - I added an ending to the game.  There is a final battle with zeppelins:
Then just as our pilot thinks things are looking good - well he is in for a bit of a surprise...

Splash screens to give the sense of a serial:


And some kind of logo:






Some refactoring also took place.  I noticed that when playing enemies could get hit even before they were dislayed on the screen.  So I added code to the collision handler to ensure that the enemy object would have to cross a certain threshold before the collision with the bullet would actually do anything.  Now you have to see the enemy object on the screen before you get to shoot them.

Next up - enemies were showing up partially off screen.  Which wasn't so bad until I added the zeppelins in the final battle.  Half a zeppelin isn't as good as a full one - so I refactored the randomizer that set the initial x coordinate for the object as it was created.  Now when an object is created it gets fully displayed on the players screen.  That code is in the majority of the scenes and I need to continue moving it to the rest.

Last - we have a hit counter for a boss and for the player.  But nothing like that for the rest of the enemies.  And ran into a bit of a conundrum - the player is an unique object as is a boss.  But the rest of the enemies aren't.  And I couldn't quickly come up with a way to keep track of the hits done to a particular enemy object.  So I put in a hack.

In level 3 and the end level there are two different enemy types that get created for the screen.  In the event handler for a particular enemy type I added used the math.random library to give me an integer between a certain range.  So in level 3 you have a 50-50 chance to blow up the second enemy type with a shot.  In the final level you have a one in four chance to blow up a zeppelin with a shot.