After the last change, when the game is run, there is a few seconds delay while the screen is being loaded.
At first, I was just going to add a simple “Please wait, loading” message, but I couldn’t help myself.
While adding more graphics, I realized that the initial screen was taking longer and longer to draw. It’s not fun waiting for a minute or more while the game “loads”. But there is a solution for that.
I moved the code that draws the graphics and intro screen to a separate program. Then, using the code from HSAVE, saved the screen and color palette into 3 files.Now, the main game file, FELINES.BAS loads those files to display the intro screen, and then captures the in-game graphics (HGET) from there.
Now it takes less than half the time to finish the intro screen than before, and I can add as many graphics as I want without affecting loading time. The only drawback is that the files that make up the screen, – FELINES.PAL, FELINES.SC1, FELINES.SC2 – are quite big, +32 KiB total. The whole game is now almost 38 KiB. quite big, but still fits comfortably in any floppy disk
With just a few days left before the Annual “Last” Chicago CoCoFEST!, I had to get in gear. I had submitted a preview version of “Furious Felines” for the CoCo Coding Contest, but it was far from what I wanted the game to be.
First, I had to discard the idea of playing music while drawing the introduction screen. I had hoped to play a recognizable tune, playing one note after drawing each line in the cat’s graphics, but it slowed everything too much, and the music did not work fine.
The biggest change came when I decided that the game will allow you to, once you have finished all the levels, replay them, with a higher level of difficulty. To do that, I moved the levels data outside the program, to a data file. In this FELINES.LVL file I could store as many levels as I wanted, and could load and reload it as many times as I wanted. This worked out fine, and will allow me to create a level editor at some point.
Also, I added a random factor to the wind in each level, to give a better replayability (is that a word? Or what?), and a wind speed indicator at the top left of the screen.
With this changes, and 6 playable levels that could be replayed until the mouse escapes, version 1.0 of “Furious Felines was ready for the public unveiling.
Interpreted BASIC, in a 25 year old computer, is not fast. That is a fact.
Trying to improve the animation speed and reduce flicker, I did something I have never tried before. A look-up table of sorts.
The idea is simple. Calculate all the points in the cat’s trajectory while it jumps, and store them in a matrix. Then, animate the jump reading the graphic’s position from that matrix instead of calculate it while drawing the animation.
But I found two not totally unexpected problems.
- The calculations took about 5 seconds. During that time, the game had an ugly pause in the action.
- I found out that most of the flicker is actually because of the time it takes for BASIC to draw the graphics in the screen. Having no delay between the command that deletes the cat’s old position, and the one that draws the new one did actually create a flicker that was in some aspects nastier than before.
So, back to the old code.
The good thing is that it was not hard to implement at all, and I’m sure I will find another chance to use it.
I’ve done a lot since my last post, but not as much as I should have.
First, I did make it “prettier” 🙂
I did change some of the game logic, and I have a scoring system.
Also, level creation should be pretty simple, it’s just a matter of creating them in a way that they are challenging, but not to much.
Now, I will make it fully playable with at least 5 levels. Once I reach that point, I will keep adding graphics and animations, fix some minor glitches, and clean up the code.
Most of what could be called the “game engine” is ready.
- Animate the cat that jumps from the top of the pile.
- Create new graphics for the cat while it is waiting to be launched, and while it is flying.
- Make up my mind about how score is going to be awarded.
- Create the levels.
- Make it pretty! 🙂 That is, ad some backgrounds, messages, and so on.
Here are some updated graphics, showing the 3 different cats.
The length of the jump depends on the one on top of the pile, and the one that is going to jump.
The Tabby is heavier, and the Siamese is the lighter one.
A few days ago, there were a couple of threads in the Color Computer mailing list regarding
a) The possibility of an “Angry Birds” like game for the CoCo and
b) A coding contest.
This emails gave me the idea for the game (I even took the name straight from one of the messages)
The cats want to catch the mouse, but the walls are to high to jump over, so they decide, in the best cartoon way, to use a seesaw and catapult one of them over the walls to get to the mouse.
On the left side of the screen, you pile up the cats. More cats, higher jump.
There are 3 different kinds of cats, some heavier than others, and that will affect how high and far the jumper will make it.
In a nutshell, that’s the idea. Let’s see how well can I implement it in old school BASIC