Jump to content
IGNORED

Bouncy


Asmusr

Recommended Posts

Here is an early preview of a new game I'm working on. It's inspired by a game I had for my CPC 464 called Bounder (no need to post a video in this thread, I'm sure anyone can find it on YouTube :)), and it fits very well to the capabilities of the TI-99/4A. For now only the scrolling background and the basic jumping of the ball is working. The plan is that you should be able to pick up the spinning coins, while the question marks will give you a random 'power-up'. You will die if you land in water and if you try to jump over lava. The arrow will trigger a super long jump.

 

 

The key features are:

  • Smooth bitmap mode scrolling, but slow in order to save the CPU for gameplay and music.
  • Character patterns are uploaded from CPU RAM on the fly, but double buffered, allowing the screen to scroll every 6th frame.
  • A constant, slow scroll speed allows the patterns to be animated while they scroll.
  • Runs with 3 pattern tables and 1 color table to avoid problems with more than 8 sprites in half-bitmap mode.
  • Map is stored as meta-tiles (2x2 characters) to save space (the map in the preview only takes up 1KB as meta tiles).
  • Meta tiles also reduce the number of character transitions in the map, which is important for the scrolling. Any combination of the 7 meta tiles is possible using a maximum of 112 characters, but the preview actually only uses 64 characters.
  • Plan to include in-game music using Tursi's VGM player, enemies and power-ups.

The next thing is to make the movement of the ball just right. Currently you can only affect the movement at the moment the ball touches the ground, but that seems to restrictive. Perhaps you should be able to brake while in the air, but not change the direction?

BOUNCY.dsk

Rasmus-8in1-cart-8.bin

bouncy3.bin

Edited by Asmusr
  • Like 18
Link to comment
Share on other sites

Bounder was also released on the C64 and other systems. IIRC the original game lets you move the ball anytime, and that you had a limited number of forced jumps with the fire button besides the arrows that let you jump ahead for free.

 

The music in Bounder is Kajun Klog by Louis Ewens, by the way. Quite a simple but unique little ditty. I was in touch with Louis many years ago, as this song also is a demo song in Broderbund's program The Music Shop. If I recall correctly, he had no clue that someone at Gremlin Graphics had made a cover version of his demo song and used within the game.

Edited by carlsson
Link to comment
Share on other sites

Some of the best graphics I've ever seen on the 9918, hiding the chip's limitations really well!

 

Regarding movement: I think for you it will depend on how long the ball is consider to be on the floor, but in Alex Kidd I do the following each frame:

  • (consider that Alex has a position (x,y) and a speed (hvelocity, vvelocity))
  • When pushing the joystick right, I add a constant acceleration value to the hvelocity, pushing left will subtract that same.
  • When the joystick is in the neutral, we substract or add (when hvelocity is postive and negative respectively) a friction value. The friction value for me is half the acceleration value, but this can be tweaked depending on how 'slippery' the gameplay needs to be (friction is much lower in Mario games, for instance).
  • When Alex is airborne, the value for acceleration is halved, and friction is zero (although, again this can be tweaked and I would recommend to have at least always some friction for your game)
  • At the end of each frame, right before drawing the sprites, I add hvelocity to Alex's x position.

Usually full control when in the air will seem off, and as a rule of thumb I typically try to make it that a player is never be able to fully reverse his direction when airborne.

Link to comment
Share on other sites

I remember Bounder on the ZX Spectrum and found it to be a bit more "forgiving" than the CPC version, the respawning after losing a life is a complete ball ache on the Amstrad.

 

On a slightly more technical note, would it be possible to recreate the kind of multi layered effect employed in the C64 version?, I imagine it would be similar in effect to the star field/platform arrangement already used in Titanium.

Link to comment
Share on other sites

I remember Bounder on the ZX Spectrum and found it to be a bit more "forgiving" than the CPC version, the respawning after losing a life is a complete ball ache on the Amstrad.

 

On a slightly more technical note, would it be possible to recreate the kind of multi layered effect employed in the C64 version?, I imagine it would be similar in effect to the star field/platform arrangement already used in Titanium.

 

Interesting, never seen the C64 version before, but no, without hardware scroll that would require far to many characters.

Link to comment
Share on other sites

The graphics are beautiful! I can imagine why you're making games that are still 9918 compatible, but if you used F18A functionality, you could integrate the second layer like on the C64. Never the less, it's still good as it is now.

Link to comment
Share on other sites

  • 2 weeks later...

 

I added the side panel, but then my map was too wide, so I came up with the idea of scrolling the screen (in 8 pixel steps) when you reach the border. Unfortunately it doesn't look as nice as I thought it would, so I'm probably going to remove the horizontal scrolling again, and either make the map narrower or move the panel to the bottom. What do you think?

  • Like 3
Link to comment
Share on other sites

Damn, those animations are beautiful! You're really raising the bar with this one.

 

Regarding the horizontal scrolling: putting the panel at the bottom would impact gameplay more than just making the map narrower. One of the reasons it doesn't look very nice right now might be because you're forced to scroll relatively small distances in 8 pixel increments. It might look better if you could find a way to scroll less often, but 'further', if that makes sense...

 

The example below uses this technique (but the other way around: it does smooth horizontal pixel scrolling, and vertical character based scrolling). Every time the character lands after a jump, the engine rapidly scrolls to center the image around the player. If you don't know which trick he's using you'd be hard pressed to notice that it's not using smooth scrolling techniques. In your case, you might consider splitting your map into two halves and scroll whenever the player ball lands in another half from where it started, each time scrolling as far left or right as you can. To say it with a meme: you wouldn't scroll very often, but when you do scroll, you scroll 64 pixels at once (over 8 frames, for instance).

 

 

By the way, up until your Bouncy videos, these were some of the most impressive scrolling graphics I'd seen on the 9918a. Some very smart graphics design going on here.

Edited by TheMole
  • Like 2
Link to comment
Share on other sites

 

I added the side panel, but then my map was too wide, so I came up with the idea of scrolling the screen (in 8 pixel steps) when you reach the border. Unfortunately it doesn't look as nice as I thought it would, so I'm probably going to remove the horizontal scrolling again, and either make the map narrower or move the panel to the bottom. What do you think?

 

Yes, the horizontal jerking is bothersome at first, but one could get used to it. If I had to choose between that and having the panel at the bottom, I'd take the jerky scrolling. Having the panel at the bottom will reduce depth of view ahead of the ball, and will make gameplay planning more difficult.

  • Like 1
Link to comment
Share on other sites

I have parked the horizontal scrolling for now, but the code is there so it will be possible to introduce on later levels. I have settled for a 8 character wide right side panel.

 

I found an easy way to create an illusion of a bottom non-scrolling layer: just using animation to scroll a meta tile in the opposite direction of the general scrolling. I have tried different graphics, but a simple star background has worked the best so far.

 

  • Like 7
Link to comment
Share on other sites

That is very similar to what I had in mind with my previous post, I like it, gives the game an illusion of depth, you do realise I am probably going to have to buy another damn cartridge!!!! ;)

 

Yep, thanks for the suggestion. The implementation is different from Titanium and Scramble because in those games the stars were drawn after the main map if a "hole" in the map could be found, but this meant that a star disappeared when it approached another tile.

 

In Bouncy, however, the stars are part of the map. Having animated meta tiles gives you many options. :) To keep the stars steady all I have to do is to scroll the meta tile up whenever the screen is scrolling down. But I only have 8 frames to scroll a meta tiles of 16 pixels into itself, so the meta tile has to consist of the same 8 lines repeated twice.

 

Bouncy trivia: I have reserved 32 characters for the right side panel, but I'm using a different pattern table for each third of the screen, whereas the colors table is the same for the whole screen. This is why you see some colors repeated in each part of the screen while the patterns are different. The reason for using 3 pattern tables instead of one is to prevent problems with sprite duplication on real 9918A VDPs, but it slows down the transfer of characters to the VDP by a factor 2. This is less important in Bouncy where the scrolling speed is low.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...