Month: June 2013
This thing doesn’t have Free Play yet. Got any quarters?
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.
Find out on the next exciting episode of Dragonba- err, I mean Quadolor Dev Blog.
So much to talk about, so little time to write about it.
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. |
- 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.
- 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 |
Title Screen
What? It didn’t say “Coin chute required” in the system requirements! I want my quarters back! |
Vector Stuff
Two down, four more to go. |
Shaders
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?)
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…
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. |
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) |
Baseline (no overlay) |
Scanlines only |
“LED billboard???” (Scanlines + High contrast RGB dots) |
“LCD???” (Scanlines + Low contrast RGB dots) |
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.
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.
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. |