Chapter 30 - July 23th, 2016

On the Home Run!

The game is now 98% complete. It is fully playable.

Steve Strowbridge (The Original Gamer) and L. Curtis Boyle (CoCo Games Website) have been testing and have so far given it a thumbs up.

The difficulty level has been tuned to be challenging enough to keep one coming back to get further through the game but not too hard to render it impossible to complete.

Being familiar with all the zone layouts, I often make it right through to the end but this doesn't mean I've mastered the game and find it unchallenging. My ability to run through the entire game is dependant on how sharp I feel at the time. If I'm not mentally in top form (some say I never am!), I will run into difficulty and struggle to even get through Zone 2.

The launch rate and color of balloons is random and there are times when I may get favorable targets and times when the balloons just get in the way and force my plane back into confined and restrictive space. A sharp mind is needed to also look ahead and make fast decisions of manoervreabilty and positioning yourself optimally to obtain the best  rewards. There are some areas that need to be navigated more strategically in order to obtain needed supplies and highest points.

The game starts at Zone 1 which is designed for the beginner player and is ideal for younger children to play, popping colored balloons and taking in the scenary. It kicks into a higher gear at Zone 2 where you have to navigate within tighter underground airspace.

I will continue to test it to fine tune the scoring system, playing in what I call Lazy Mode where the sole goal is to simply get through all zones with minimal effort. This tactic though does not earn me enough qaulifications needed to enter Zone 5.

I also play it as an Arcade Pro trying to shoot everything that earns me reward. I compare my score and progress of each playing style and adjust the game balance based on these results.

I've tried to tailor the game so that the player only have themselves to blame for failure. This has proven to be an interesting aspect of the game where the player finds himself battling with his own inner demons of greed and desire. The game also taxes your ability to make quick decisions based on what you can see with your peripheral vision.

In summary, the game is not super hard and a dedicated player can achieve the goal of reaching the end.

Who Ya Gonna Call?  BUG BUSTERS!

I've also managed to nail most of the bugs.

There's one or two hard-to-pinpoint bugs because they occur very rarely but they are there. They are not bad enough to be a hindrance to the gameplay most of the time but one does involve your plane blowing up for no apparent reason. This can be quite annoying if it was your last life and you were close to completing the game!   :)

Without getting too technical, here is a list of some interesting bugs and enhancements I have done since the last chapter...

Balloon graphics distorted.

This one occassionally turned up in 1 of 3 games played. A rising balloon was distorted in a way that the left half of the balloon was one scanline offset from the right. It didn't hinder the gameplay at all but it didn't look very clean.

Turns out it was to do with the way the 256 byte horizontal virtually enabled (HVEN) screen works in the GIME. With HVEN enabled, a screen occupies 256 bytes but only 160 bytes is displayed. When the horizontal offset is set so that the 256 byte end boundary is displayed on the active display, the GIME display hardware merely wraps back to the beginning of the same scanline but actual memory continues to be mapped sequencially with the next byte down to the next scanline. This is required for hardware horizontal scrolling to work correctly.

My balloon drawing code did note compensate for this so the easy fix was to check if the balloon position was going to occupy this boundary. If it was, it didn't draw the balloon. Distortion gone!

Objects that don't explode.

Another intermittent bug was that sometimes an object didn't explode no matter how many times you fired upon it. This one was annoying and difficult to isolate. I added markers within my code to isolate the affected areas and finally tracked down the problem.

The way the objects are tracked is that when it's being drawn off the right edge of the screen, it's object number and position is stored in a list. This list was designed to hold 8 objects. When the list fills, it begins recording back at the start of the list. That means only 8 objects are ever tracked and then forgotten. This works because objects eventually scroll off to the left and are therefore not needed anymore anyway.

What I forgot was that the game screens are double buffered so what was happening is that each object was being recorded twice and therefore only 4 unique objects were actually being tracked. This meant that the program would forget the earlier objects which were now classed as a part of the landscape and un-blow-up-able.

Flying through the debris field.

This is not so much a bug as it is an enhacement.

The plane originally could collide with debris it encountered after an object exploded very close to it. This was realistic as I'm sure the same thing would happen in a real situation.

But this a game and reality's no fun!

I decided to make the plane unaffected by debris and allow your plane to explode an object right up against your nose if necessary and the plane would fly right through the debris field unaffected. This required a change in the way I handle the collision detection of the plane and I was loath to confront the added complexity.

Then I came up with an easy and elegant solution. Simply turn off plane collision detection for the period during an explosion then the plane flys straight through with the plane nicely superimposed over the explosion. The duration of the explosion is about half a second which doesn't leave enough time for it to become a problem.

Graphics glitch when balloon pops next to a white building.

I notice that occasionally the pixels from a balloon pop left their stamp on the buildings. This only happened on the white walls of buildings, nowhere else.

I eventually realized that these pixels were also white and what was happening was that the balloon pop routine was confusing the erasure of the balloon pop pixels with the white walls of the buildings.

Simple fix was to change the color of these pixels to yellow and the the code could differentiate better since yellow was rarely used on any of the background tiles.

A lot of the problems were caused by the use of the double buffering and short cuts I took to save CPU time.

As well as these fixes, I spent some time reviewing and optimising the Zone 2 and Zone 5 level designs as well as adjusting the Grand Finale presentation.

I have now reached the point where my source code buffer space is full and I don't want to break it down into two separate modules. This will be my cue to finish. The feature creep ends here!   :)

Once there are no other major bugs, I will begin a version that is tailored for the NTSC composite palette for those who only have access to a TV or composite color monitor.

In the next chapter, I hope to have some developments on the game packaging, distribution process and pricing.


Copyright 2013 by Nickolas Marentes