Home stretch to the playable demo!

The last gameplay video I showed of Gonna Catcha was kind of boring since it only showed the game at it’s easiest (since I only wrote the round data for the first few rounds). Yesterday, I uploaded a new video showing the latest version of the game played at a moderate level of difficulty, moderate-hard for the bonus rounds: 
Some changes since the last video:
  • All the pretas (“ghosts”) are now in action, each with their own unique behaviours:
The Hungry Ghost will seek out and consume any items it finds.  If not, then it will just wander around the maze aimlessly.
The Vagrant Ghost prioritizes shelter over hunger.  It slowly drags itself towards the shelter or jail.  Once it gets there, it will enter the shelter/jail and scare away/release two spirits (who go back into reserve), disappear for a while, then respawn to repeat the process.  The player can shoot the Vagrant Ghost to temporarily chase it away from the shelter/jail.
This guy, the Vile Ghost, is new.  Like the Hungry Ghost, it will seek out items and consume them. However, unlike its gluttonous cousin, it will chase after the player if it can’t find any items.  They are mainly found in Pohena rounds as an implacable danger much like evil spirits are to Donum.  The good spirits’ slowing effect on Pohena makes it easier for the Vile Ghost to catch up with her, so better stay away from all of them.

  • Re-evaluated the point system.
  • Implemented a “three strikes” system in regards to shooting good spirits.  If the player (as either character) shoots a good spirit, they will be penalized:  -500 points for the first offence, -1000 for the second and one life for the third.  The strikes reset whenever the player loses a life.

The only thing the game needs before I release it as a demo are additional mazes and data dictating what spirits and preta spawn for each round. The end is in sight!

In other, related news, I made a few updates to the Gonna Catcha and related info pages…

…and here’s a black wolf staring into your soul…

“You should be drawing more.”
… and a white wolf who somehow managed to clone himself accidentally:
Copyright © Quadolor Games. All rights reserved.

Congratulations! Your game has evolved into Alpha!

Up until today, Gonna Catcha was nothing more than a collection of protoypes, loosely connected together and couldn’t work together as a whole game without changes to the hard code. 
Well that ends today. 
I’ve taken care of all the little things and filled up the holes to make Gonna Catcha a playable alpha (yes, I know I’ve called the previous versions of the game “alpha builds”; in hindsight I think that was jumping the gun a bit). It still has some game-breaking bugs, but at least the game progression is there now:

And just in time for Ghost Month, the 7th month of the lunar calendar, which starts tomorrow I believe. According to the various superstitions surrounding Ghost Month, I shouldn’t be working on Gonna Catcha at all for the next 30 or so days, unless I want to be pestered by evil spirits.  Well, if anything goes wrong in the coming month, such as me losing all my work or my computer catching on fire, then I’ll have a convenient scapegoat:

lolololol
On the 15th day of Ghost Month is the Ghost Festival. During the festival, the Heibai Wuchang 黑白無常, the Black and White Guards of Impermanance, supposedly appear and give people free money.  Depending on your cultural background, you may know them by different names:

  • Fan Wujiu and Xie Bi’an, 范無救  謝必安
  • Qiye and Baye, 七爺 八爺
  • Da Boye and Er Boye, 大伯爺  二伯爺
  • Pohena Das and Donum Dono 魄伊娜・達斯  當納睦・當儺
OK, I made that last one up. 😛
There’s more to Ghost Month and the Ghost Festival than that, but I’ll save it for another day. Also, the ROM Game Jam is next weekend; I need to brush up on my HTML5 GameMaker skills.

P.S.  I updated Gonna Catcha’s info page with a new screenshot and the video above.

Copyright © Quadolor Games. All rights reserved.

140 character limit exceeded

This post was too big for Twitter, so I’m posting it here.
The first step towards creating a CRT display shader is complete.  Gonna Catcha can (optionally) draw the game window with barrel distortion:
Babby’s first shader
I know there are already CRT display shaders out there on the internet, but I do want to learn how to do it myself.
In other news, it hasn’t been a week yet and already amusing bugs have been making a comeback.
The video also revealed the new time bonus tally at the end of each round.

Copyright © Quadolor Games. All rights reserved.

Well isn’t this a motley crew of small updates.

In the past two weeks I’ve been mainly doing a little work here, some more over there and a tiny bit all the way over there.  The updates are a bit difficult to stitch together into a coherent theme for a post, so I’m just going to list and itemize everything.

Item #1

Implemented the Hungry Ghost enemy into Gonna Catcha:

It’s current behaviour has it wander aimlessly in the maze like the Wandering and Straying Spirits.  However, if there is an item in the maze, it will move towards, consume it and then resume wandering and feeling remorse.  Also, you might kick yourself for not grabbing the item first. The Hungry Ghosts are harmful to touch at all times; they can be stunned or knocked out for a short period of time, but they cannot be captured, so they remain a permanent fixture in some rounds.
Item #2
Modified some of the rules for Pohena rounds:  if Pohena comes into contact with a good spirit, her movement speed will be reduced until she is no longer touching one.  They will slow her down enough for evil spirits or preta to catch up with and kill her.  Hopefully (or disappointingly for Pohena) this will make good spirits more of an obstacle as evil spirits are for Donum.
Item #3
New music for Gonna Catcha: Bonus Round!

Item #4
Rewrote some of the graphical and garbage-collecting backend code. The new graphics code fixes some minor graphical glitches that occur when upscaling the game window.
Item #5
Updated various parts of the blog:
  • The rules section on the Gonna Catcha info page has been updated with the info in Item #2.
  • The descriptions of the non-player characters from this post are now on their own page, with the addition of the two new spirit types and slightly updated artwork for the spirits.
  • Rearranged some stuff on the sidebar on the right.
THE END
Copyright © Quadolor Games. All rights reserved.

Here comes a new challenger, and another one.

In my previous post, I talked about a test play of Gonna Catcha; when I played as Donum, chasing down fleeing Bashful Spirits (left) while evading pursuing Vengeful Spirits (right) provided a decent challenge, but when I played as Pohena, things became far too easy. What can I do to try and fix this?  Why not just swap their behaviours?

Today, I introduce to you two new spirit types:  Bothersome Spirits (left), who follow Pohena around and get in her way (increasing the chances of friendly fire), and Anxious Spirits (right), who, fearing what punishments await them if they’re caught, flee from Pohena.
Also, the addition of these two spirits also rounds out the rogues gallery pretty well:
I added the two new spirits to the latest build of Gonna Catcha, along with some changes to the spirits’ movement code to make them spread out more and less likely to move together in groups.  This is the result:
Pohena rounds now feel a bit more challenging, but they still lack a certain something.  I think the good spirits need to be even more detrimental to Pohena’s goal than just taking points away in order to make her levels more interesting.
Copyright © Quadolor Games. All rights reserved.

This thing doesn’t have Free Play yet. Got any quarters?

Alright, it’s the moment you’ve all been waiting for. …Okay, some of you. …Okay, mostly me.

Here’s a video update of Gonna Catcha, showing the game in it’s current glory:

After playtesting the game for a bit, I’ve come to realize that the Pohena rounds are too easy.

Chasing around the fleeing Bashful Spirits (above left) while avoiding Vengeful Spirits (above right) provides a good challenge in Donum rounds, however the behaviours of the same two spirits make Pohena rounds a breeze. Bashful Spirits generally stay out of your way, reducing chances of friendly fire, while Vengeful Spirits home in on Pohena like lambs to the slaughter.  I haven’t put in the Hungry and Vagrant Ghosts in the game yet, but I don’t imagine them making Pohena rounds that much more difficult (they are designed more to be nuisances than threats).  In light of this, I made have to add additional types of spirits, one for good and one for evil, to balance out the gameplay.

Find out on the next exciting episode of Dragonba-  err, I mean Quadolor Dev Blog.

Copyright © Quadolor Games. All rights reserved.

So much to talk about, so little time to write about it.

I seem to be falling behind on my plans to update this blog once a week.  Every time I implement an idea and am in the middle of writing about it, another idea comes to mind.  I end up holding off writing my post to execute the new idea so that I can put that into the post too.  I need to a way to synchronize my blog cycle and ideas cycle together…
Yeah, I  don’t think that would work very well with only one person.

For the same reasons, this update is just another text + screenshots update instead of the video update I had planned earlier, which would have shown the game as it is now in action and demonstrated the audio as well (mostly the newly added sound effects).  I guess that will have to wait for another time.

Anyways, there are four things I would like to talk about today:  New HUD, Title Screen, Vector Stuff and Shaders.

New HUD

First up, I’ve made some changes to the gameplay and HUD (the two are related).  Below is a screenshot of the current in-game display:

HUD 3.0

You will see that the HUD now takes up both the topmost and bottommost portions of the display, making the levels themselves slightly shorter.  First, let’s have a closer look at the top HUD:

New top HUD

And for comparison, let’s throw up the old HUD here as well:

Old HUD is old.
Aside from the different colours and the fact the second player isn’t active, there two main changes to the new HUD, which also reflect changes to the gameplay:
  1. A score counter is now where the life counter used to be in the top-left.  Previously I wanted the score to be tallied at the end of each level (in the style of games such as Battle City and Ice Climber).  However, I’m making some changes to the scoring system that would make that tally system impractical, such as rewarding more points per spirit returned to the shelter/jail in a single trip (think along the lines of Pac-Man‘s scoring system when you eat multiple ghosts in a row).  I may still have an end-of-level score tally for bonus levels.
  2. Remaing spirit counters are now where the round counter used to be in the top-center (not to be confused with the in-hand spirit counter just below the score).  In the original round flow, all the “target” spirits you needed to capture for a particular round appeared at the beginning of that round.  There was a maximum of 5 spirits you needed to capture per round; I felt that this number was too low and made each round too short.  Increasing the maximum number made the level too crowded when you also take the “nuisance” spirits (i.e. the ones that you don’t need to capture) and hungry/vagrant ghosts into account. Also, it was also balanced out by the spirits clumping together, making it easier to capture more in a single “trip”. My solution for this is to have a 4-5 on-screen spirit limit and then spawn more when the number on-screen falls below the limit (much like Pengo and Battle City, again).  The remaining spirit counters show how many spirits have yet to be spawned.  

Now let’s look at the bottom HUD:

New bottom HUD
This is the new home of both the lives and round counters.  Also, the lives counter uses character icons now rather than hearts.

Title Screen

Next up, I’ll briefly show and describe the title screen, which is still under development:

What? It didn’t say “Coin chute required” in the system requirements!
I want my quarters back!
There are still a few things I need to add to it:

  1. A graphical title to put up top rather than just having “G O N N A   C A T C H A”
  2. in plain text.

  3. a score table (so player will know what is worth what in the game).

Vector Stuff

Next, have a few vectorized spirits:
Two down, four more to go.

Shaders

Finally, if you haven’t figured it out already,

Shaders are coming coming to GameMaker: Studio 1.2, which is just around the corner.  I can wait to see what kind of 2D graphical hijinks I’ll get into when it does, such as better CRT monitor simulation. (Maybe?)

Well, so long. See ya next time.
Copyright © Quadolor Games. All rights reserved.

Come gather ’round people, and listen to two tales of programming lore…

The time between the last post and this one was longer than I expected.  I wanted to make a post earlier, but then I started on something neat and decided to hold off posting until I gathered my thoughts about it.  The result is a very long post about two topics: old display simulation and an audio engine update, complete with anecdotes of projects I did in the days of yore.  Brace yourself.  At least there are lots of pictures to look at.

Old Display Simulation

I’ve experimented with a few graphical overlays that will make the game window of Gonna Catcha look like an old CRT display.  As with the audio capabilities of Gonna Catcha, this is something new to me, so it will require some research.  I’ve already found some blog posts that talk about it, but the methods shown used pixel shaders, which GameMaker: Studio doesn’t support (well, at least not yet).

To get technical, you could code up your own pixel shader functionality into a GameMaker application using the draw and get pixel functions, but it will be very, very computationally expensive (i.e. it will make the game run very slowly).  I’ve done something similar with GameMaker before…

*flashback*

I’ve created a raytracer that renders several spheres on the screen in real-time without using GameMaker‘s 3D functions, just the 2D functions and mighty 3D geometry and trigonometry powers.  It could render at low resolutions fine (like less than 50×50), but once it goes beyond that point, it slows to a crawl:

This 50×50 scene runs at 8 frames per second…

…and this full-resolution frame takes about 18 seconds to render.
Yeeeah, I think I’ll stick with the built-in 3D functions for now.

*flash forward*

As interesting and colourful as my raytracer is, we should be going back to Gonna Catcha now.  Since I currently can’t use shaders, I’ll just have to make due with using foreground overlays and GameMaker‘s blending modes.  Below are some screenshots of the game with and without the various experimental overlays.  Click to magnify the screenshots, as the effects can’t be seen in the thumbnails.

Baseline (no overlay)
Scanlines only 
“LED billboard???” (Scanlines +   High contrast RGB dots)
“LCD???” (Scanlines + Low contrast RGB dots)
And here are some close-ups:
Baseline (no overlay)
Scanlines only 
“LED billboard???” (Scanlines +   High contrast RGB dots)
“LCD???” (Scanlines + Low contrast RGB dots)
So far, I like “LCD???” the best, followed by having scanlines only, but both are still not quite the CRT look I’m looking for.  Nevertheless, I’ll continue to soldier on.

Audio Engine Update

In other news, BASS, the audio library I’m using for both Gonna Catcha and That Which Binds Us, has been updated to version 2.4.10, and I’m three and a half months late to the party.  This meant that I needed to update BASSGMS, my wrapper library that makes BASS and GameMaker understand each other, as well.  Oh, and I know very well the troubles that can occur with incompatible libraries due to version differences.  Yes… very well.

*flashback*

When I was doing my Master’s at UOIT, I used BASS and a precursor version of BASSGMS for one of my projects.  One day, my project kept crashing on my lab machine, yet it ran perfectly fine on my home computer.  I spent a long time looking over my code and even inserted test and debug functions into it to make sure the outputs were correct, but no matter what I did, the program still kept crashing in the lab but not at home.  I forgot what gave me the idea, but after several hours I decided to look at the version numbers on the BASS DLL on both the lab and home computers.  It turned out that the DLL on the lab machine was a few revisions behind, so I downloaded the latest version of it and, lo and behold, the program stopped crashing.  And then I was enlightened.

*flash forward*

So anyway, I fired up Visual C++ and recompiled BASSGMS, no problem here.  I also took the opportunity to give GameMaker more control over BASS by add more functionality to BASSGMS.  In the end, I created a GameMaker:Studio application to test out the new and improved BASSGMS 0.3, which does things that are probably not even needed in my current game projects, like tempo control and monitoring CPU usage, but it’s still nice to have them there for future projects.

Not captured in picture:  animated, cycling rainbow effect.
Most likely not need in either project.
Copyright © Quadolor Games. All rights reserved.

Update Double Feature!

Gonna Catcha

Most of the work I’ve done on Gonna Catcha are behind-the-scenes coding stuff that won’t show up in screenshots.  I need to fill in all the gaps (so to speak) so that I can release a proper demo version of the game as soon as possible.

The one thing I did that I can take a screenshot of is this:

All arcade games I’ve encountered run a self test to check their own hardware when switched on.  To give my game a bit of authenticity, why not put one of these into it too, even if it is completely bogus and ironic.  In fact, I might have a little fun with it. (twiddles fingers) >:)

That Which Binds Us

Our team still hammering out the details of the design document for That Which Binds Us.  We have some concept art for some of the levels in the game, which I may put up here later.

One thing I can show right now is the main gameplay theme for the game.  It’s pretty much what you’ll hear in the final game, barring any minor adjustments:

Next, I would like to take you back to that mystical time period known as the early 90s, when sound cards had synthesizers so bad that it turned the MIDI file into the scapegoat it is known as today. This is the same theme played using the Sound Blaster 16’s FM MIDI synthesizer. I actually started composing using this sound card (Sound Blaster 16) in the late 90s, so it holds a special place in my heart, even if it does sound bad.  This track may or may not be in the final game; I just made it for fun.

Copyright © Quadolor Games. All rights reserved.

He jests at time that never felt good use. But, software! What game doth yonder team projects?

It’s been another slow week or so.

Yes, I know things are moving a bit slow for Gonna Catcha, but fret not as I did make some improvements to the spirit sprites. (Hmm, I’m getting déjà vu here.)  I added some animation to them to make them more lively. *BA-DUM TSSH*

(hold for groans and boos)

No one suspects the spirits with the shifty eyes!

If I get the scoring system done and add a a title screen, I can release a demo version of the game.  And that would be just super.  🙂

In other news, it turned out I did make it into the Toronto Game Jam 2013, about 15 hours before the event started.  Some people had cancelled their confirmations, so there were spots open for my team.  Unfortunately, my team members had already made other plans for the weekend since when the initial rejection email was sent out, so we had to decline as well.  Hopefully things will turn out better next year.

Despite all that, we’re still have our game idea; might as well not let it go to waste.  We decided to go ahead and make the game anyway in the near future.  I’ll write about our experiences here.  Also, it shouldn’t take too much time away from Gonna Catcha, so I’ll still be working on that concurrently.

Copyright © Quadolor Games. All rights reserved.