Submission Text Full Submission Page
The Bouncing Ball is a homebrew Gameboy game made by HuCABBAGE for the 4th annual GBJam (2015).
In this neat little platformer with no music, thus only sound effects, you are in control of a little ball, which is constantly bouncing around.
Your goal is to bounce through all the 50 unique levels by collecting every heart you can find on your way.
Note: Thanks to brunovalads, I was able to improve the submited movie by 105 frames. I uploaded it in the userfiles. You can find the faster movie here.

About the game:

The Bouncing Ball is a homebrew Gameboy game made by HuCABBAGE for the 4th annual GBJam (2015). In this game you play as a small little ball and your goal is to collect all hearts throughout the 50 different levels featured in the game.

Game objectives:

  • Emulator used: BizHawk 2.4
  • Unofficial game
  • Aims for fastest completion (real time)
  • Genre: Platform

Making of the TAS:

I only recently found out about this game while searching for new Gameboy titles for me to play. I had a lot of fun playing it and eventually decided to make a TAS for it. Although this was the my first time creating a TAS, I got used to it very quickly. Due to finding many new tricks and glitches rather late in the process, I had to redo and reroute a lot of the levels I previously had already finished. After checking every level multiple times, this is what I could come up with.

Game mechanics:

  • Controlling the ball
    • D-pad left: move left
    • D-pad right: move right
  • Platforms
    • Unbreakable blocks
    • Breakable blocks
    • Moving platforms
    • Arrow blocks
      • Up-arrow: boosts your bounce
      • Sideway-arrow: shoots your ball in the arrows direction. You can stop your flight by either pressing a button (any button will do) or by flying into something else.
  • Spikes: If the ball touches them, the level restarts
  • Hearts: If the ball touches a heart, the heart is collected. If all hearts are collected, you proceed to the next level. (After collecting a heart, the balls momentum is being preserved)
  • Pause: You can pause the game by pressing Start

Strategy:

After one levels last heart is collected, the ball flies upwards until it reaches the top of the screen. Only after that you can transition to the next level. So, when going for fastest completion in real time, the strategy is not necessarily to collect all hearts as fast as possible, but to transition the fastest. What this essentially means, is that the ball should have as much upwards momentum as possible, when collecting the last heart.

Tricks and glitches:

  • When it comes to moving platforms, the ball is actually able to bounce off of their bottom part as well, which is a few frames faster than a regular bounce (usually 1-2).
  • Corner bounce: When doing a corner bounce, the ball kind of falls one pixel further before it then suddenly clips up onto the block again. Therefore, the corner bounce is usually 2 frames slower than a regular bounce (two frames, because of the one more frame of free fall and the one frame needed to clip up). Usually the ball then proceeds to bounce off with a high horizontal speed. There are some more things that can happen depending on the platform the corner bounce is used on.
    • Breakable blocks: Instead of destroying the block itself, it turns whatever is underneath the block into a breakable block, which then is destroyed.
    • Arrow blocks:
      • Up-arrow: Can destroy the arrow block (not always the case).
      • Sideway-arrow: Corner bounce doesn’t work on sideway-arrow-blocks (which makes sense, since the ball simply can’t bounce off those)
    • Solid blocks and moving platforms: Nothing special. It’s just slower than a usual bounce (which sometimes actually comes in handy).
  • Clipping through blocks: When the ball bounces towards a block in a way, that it barley misses to get on top of that block (this is a matter of subpixels), the ball would normally just fall down. But when pressing in the opposite direction of where the block is relatively to the ball at just the right frames, the ball clips into the block and teleports right below it. In case there is another block, the ball will clip through it as well etc. After successfully clipping out of the last block, the ball is left with zero vertical speed. This means, until the ball starts falling again, you will have to wait for roughly 7 frames. So clipping is only faster, when clipping through many blocks at once (when clipping through only one block, it’s actually around 10 frames slower). Because the ball can still move horizontally during clipping, it can sometimes clip out of walls midways (hard to control, doesn’t always work), or even move to an adjacent block and continue clipping through it. As with the corner bounce, some special things happen, when clipping through different blocks:
    • Breakable blocks: The block underneath can get destroyed (not always the case)
    • Arrow blocks:
      • Up-Arrow: Destroys the arrow-block
      • Sideway-arrow: Doesn’t work
    • Unbreakable block: Just clips through it
    • Movable platforms: Doesn’t work
  • Clip bounce: When coming from beneath, the ball can kind of clip upwards to instantly bounce off the platform. On different platforms:
    • Breakable blocks: Either the block itself or the block underneath gets destroyed
    • Arrow blocks:
      • Up-Arrow: Can destroy the arrow block (not always the case)
      • Sideway-arrow: Doesn’t work
    • Unbreakable block: Just a simple clip bounce, nothing special happens
    • Movable platforms: Doesn’t work
  • Sometimes you are able to stop the balls vertical speed just like in the corner clip, but without the clip (it looks like the ball kind of slides down the wall) (this doesn’t always work). Obviously this technique is much slower than the corner clipping, but, as with all tricks and glitches, given the right circumstances it can be advantageous.
  • Thanks to brunowalads, we know about another trick. Quote: the top x speed to the right is 8 pixels/frame, but to the left it's 9 pixels/frame, and when you hit a wall your speed value is negated, combining these 2 properties, you negate the left top speed into the right speed by simply hitting a wall to the left and immediately holding right.

Possible improvements?

(I tried these so many times, but it would never work. I'm not even sure if they are possible at all)
  • Level 9: If you find a way to clip out of the wall directly into the heart, you’ll probably save 20-25 frames
  • Level 10: You’d save around 30 frames if you found a way to clip through the wall.
  • Level 17: If it’s possible to clip through the blocks instead of having to slide down, and then still be able to collect the heart in the same go, it would save 10-15 frames.
  • Level 23: If you clip into the box, collect the heart and then find a way to clip out again, there would be no need to destroy all boxes as well as no need to fly all the way to the other side. All in all, a timesave of probably 200-300 frames.
  • Level 45: I wonder if it’s possible to collect the last heart without the need of an extra bounce at the end (it’s certainly very close!). Would save around 35 frames.
  • Level 47: If possible, lag reduction
  • (Level 50: I did the real time strat in this level, because my goal was to reach the end screen as fast as possible. However, if your goal is to make the movie file as short as possible, your last input can end 2 frames earlier if you keep holding right at the end without shortly releasing it.)

Screenshot suggestion:

Frame 22459
Frame 22124 from the improved movie.

Ps:

Feel free to ask me anything about this movie! I’ll try to answer your question as good as I can.


TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 15580
Location: 127.0.0.1
This topic is for the purpose of discussing #6731: KiwiCracker's GB The Bouncing Ball in 09:50.73
Spikestuff
They/Them
Editor, Publisher, Expert player (2642)
Joined: 10/12/2011
Posts: 6438
Location: The land down under.
This is an intersting game to show off your TASing for a first TAS. Unfortunately this wasn't entertaining for me, so I'll be voting Meh. Also provided an encode on the submission text. Going from your detailed submission text, it's great that you pointed out everything including what you're unable to accomplish. The possible improvements sound as if this game seems friendly enough to go into those levels, fix them and do what you were unable to do and provide an update to your input and changes it into a coauth TAS.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
You are right, I also found it to be repetitive at times and the ball movement overall is not the fastest. I can understand your decision very well! Thank you very much for providing an encode! :D Of course, if anybody came up with a solution to the possible improvements, I'd be really happy. Maybe I should note that I didn't use Lua scripting for this TAS, due to my too little knowledge about it. So surely the option exists that I may have missed something. I can not deny this fact.
Editor, Player (175)
Joined: 4/7/2015
Posts: 331
Location: Porto Alegre, RS, Brazil
Wow amazing that someone made a TAS of this game, i was doing it too! I got demotivated still in level 16, but i did a lot of research and I made a Lua script that could help you a lot. In order to display extra info i used the ball image and the tilemap image, make sure to get these and put in the same folder of the script. I have a RAM map too, i could paste here if you want. Some things i noticed while watching the run: • In level 42, you could reach the last heart early by going Out Of Bounds, which is simply done by clipping into the right side of the screen, the "barrier" is simply a wall of breakable blocks! And it's easy to get back, I'll make a better explanation of Out of Bounds later. • It seems that you didn't find out that you can get an extra speed if you bounce on a wall going left: the top x speed to the right is 8 pixels/frame, but to the left it's 9 pixels/frame, and when you hit a wall your speed value is negated, combining these 2 properties, you negate the left top speed into the right speed by simply hitting a wall to the left and immediately holding right. Knowing changed the way i did some levels, so i guess there's plenty of room for this trick. Great run, i loved this game, sad that it doesn't have music (hard to make soundtrack while making so many levels in a Jam). I'm sure we could improve this run.
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter
CoolHandMike
He/Him
Editor, Judge, Experienced player (895)
Joined: 3/9/2019
Posts: 696
I liked the strange ball movement at times. I was entertained by the ball zipping through blocks and bouncing off the bottom of thick platforms. My one gripe is I wish the game had music. Yes vote.
discord: CoolHandMike#0352
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
brunovalads wrote:
[...]i did a lot of research and I made a Lua script that could help you a lot. In order to display extra info i used the ball image and the tilemap image, make sure to get these and put in the same folder of the script. I have a RAM map too, i could paste here if you want.
Wow! That's awesome! I will definitely try it out asap!
brunovalads wrote:
• In level 42, you could reach the last heart early by going Out Of Bounds, which is simply done by clipping into the right side of the screen, the "barrier" is simply a wall of breakable blocks! And it's easy to get back, I'll make a better explanation of Out of Bounds later.
Hmmm, very good idea. The only problem I see here is that, as far as I know, in order to clip into walls, I need a corner. I could not find a way to clip into walls without first cliping through a corner. So trying to clip through the wall outside the screen was never an option for me. On the other hand, I am not very familar with the concept of "Out of Bounds". So maybe there is a way of clipping into walls, I am unaware of. I will definitely try it again, now that I can use your Lua script!
brunovalads wrote:
• It seems that you didn't find out that you can get an extra speed if you bounce on a wall going left: the top x speed to the right is 8 pixels/frame, but to the left it's 9 pixels/frame, and when you hit a wall your speed value is negated, combining these 2 properties, you negate the left top speed into the right speed by simply hitting a wall to the left and immediately holding right. Knowing changed the way i did some levels, so i guess there's plenty of room for this trick.
I indeed didn't know about that! I'll se what I can do with that.
brunovalads wrote:
I'm sure we could improve this run.
If you are intrested in improving it, it would be a pleasure for me to work with you :)
Personman
Other
Joined: 4/20/2008
Posts: 465
This is an awesome first TAS, I was definitely entertained, and I'm looking forward to this possible collaboration!
A warb degombs the brangy. Your gitch zanks and leils the warb.
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
Thank you Personman! Thank you CoolHandMike! I'm very happy, that you liked it :) CoolHandMike, I agree, It's very sad there is no music in this game. Would suit it well I guess. Personman, sure, I'm looking forward to it as well!
Post subject: Improvement by 105 frames
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
brunovalads wrote:
the top x speed to the right is 8 pixels/frame, but to the left it's 9 pixels/frame, and when you hit a wall your speed value is negated, combining these 2 properties, you negate the left top speed into the right speed by simply hitting a wall to the left and immediately holding right.
Thanks to brunovalads, I was able to improve the original movie by a total of 105 frames. Here is the new file: User movie #62910083459768929 The improvements I made thanks to brunovalads: - Level 9: 53 frames - Level 14: 2 frames - Level 18: 51 frames - Level 20: 9 frames Unfortunately, I couldn't find a way to successfully implement brunovalads trick in the later levels; that's why the improvement seems to suddenly stop after level 20. Other changes to the movie: - Level 46: Saved 5 frames, due to better optimisation - Level 47: Lost 15 frames, due to the random lag behavior => Total: 105 frames faster brunovalads, as for the other trick you pointed out. I tried to make it work multiple times, but sadly couldn't. Maybe you can somehow manage to do it.
Post subject: Re: Improvement by 105 frames
Editor, Player (175)
Joined: 4/7/2015
Posts: 331
Location: Porto Alegre, RS, Brazil
Nice updates!
KiwiCracker wrote:
Maybe you can somehow manage to do it.
So, let's collab, hit me on Discord BrunoValads#6714
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
brunovalads wrote:
So, let's collab, hit me on Discord BrunoValads#6714
Perfect, let's see what we can do with it :)
Joined: 6/22/2012
Posts: 81
The game remind me an old pc game named bumpy
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
Haha thats funny, I looked it up and it really does have similarities!
Post subject: The bouncing ball bounces back from the submission list.
Editor, Active player (268)
Joined: 3/29/2020
Posts: 51
Location: Europe
Decision: Canceled Improvements to be made!
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2785
Location: The dark corners of the TASVideos server
om, nom, nom... blech, salty!
Editor, Player (175)
Joined: 4/7/2015
Posts: 331
Location: Porto Alegre, RS, Brazil
I'm already in talks with KiwiCraker about improving this run, there's a lot to do. One thing is an exploit of OOB that i found: clearing the level by taking the pause menu heart. Link to video Unfortunatelly, in this particular level 44 i used as example, this strat is 20 frames slower than the current he used in the TAS, so will not be used in this level. But any other level that has 1 heart and takes more than 600 frames to complete should be analyzed.
Games are basically math with a visual representation of this math, that's why I make the scripts, to re-see games as math. My things: YouTube, GitHub, Pastebin, Twitter