Libbet and the Magic Floor

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Libbet and the Magic Floor
by on (#227636)
After the character and balancing discussion, it's ready. This is a port of Martin Korth's game Magic Floor to the Game Boy compact video game system, introducing Libbet the boulder girl. It fits in 6502 bytes.

One day, Libbet was rearranging her basement when she discovered a passage to an empty hall whose floor had a peculiar pattern. She rolled in to investigate.

The floor tiles have four shades. Libbet can roll or jump between tiles of the same shade. She can also roll or jump onto the next brighter shade or from white to black, which leaves a track. Tiles with no exits contain a trap door that leads to the entrance. Leave 90 percent of possible tracks and roll to the exit to win.

Controls:

  • Control Pad: Roll
  • A + Control Pad: Jump

Not in quite yet: title screen, overall score, animation of entering dead end, a proper attract mode, audio

GitHub repository: pinobatch/libbet
Re: Libbet and the Magic Floor
by on (#227650)
Pretty! The animations are nice, and they don't slow down player movement, they are just a big advantage without any drawbacks.
The 90% idea is nice - especially as one is still allowed to continue playing and scoring 100% before leaving the room.
The walls and open/closed door are a nice extra. And having some end after 4-5 floors is nice, too.
And the story & instructions are nicely compacted, still containing all important info, but it's easier to read that way.

Two things that I've noticed are that door isn't visible in the long first room, and one could compact the intro even more by (re)moving the 3rd text page. How about this:
Code:
            _____________
           |\     .--.  /|
           | \____|__|_/ |
           | |         | |
           | |         | |
           | |         | |
           | |         | |
           | |         | |
           | |         | |
           | |         | |
  Controls | |         | |  ......
           | |         | |  :    :
  DPAD     | |         | |  :    :
  Move     | |         | |  :    :
           | |         | |  : 50%:
  A+DPAD   | |         | |  :    :
  Jump     |_|_________|_|  :8/16:

Ah, or is the corridor having a bigger exit that spans two floor cells? If you draw a bigger gate in there would like nice, too.
Anyways, I really like your gameboy version!
Re: Libbet and the Magic Floor
by on (#227668)
Hmmm, or would above be squeezed to tight?
Having the same horizontal status bar all the time would look decent, too.
You could also draw some gate/fence with 4 pixel height at the end of corridor without moving the status bar around.

Are you adding some boulder-rolling sound effect or music, too? A sound effect for scoring would be also somewhat important (for cases when you were just moving around, and didn't even notice that one of that moves had increased the score).
Re: Libbet and the Magic Floor
by on (#227669)
nocash wrote:
Hmmm, or would above be squeezed to tight?
Having the same horizontal status bar all the time would look decent, too.
You could also draw some gate/fence with 4 pixel height at the end of corridor without moving the status bar around.

Or I could move the status bar into the window layer and then, on a floor of height 8, do a subtle scrolling effect on the playfield once the exit opens.

nocash wrote:
Are you adding some boulder-rolling sound effect or music, too? A sound effect for scoring would be also somewhat important (for cases when you were just moving around, and didn't even notice that one of that moves had increased the score).

Yes, I plan to add audio sometime later. That's what I was trying to imply by "Not in quite yet". It's not quite so easy as on NES, where I have a ready-made audio driver that I can just drop in. That's one reason why I translated Pently into pseudocode: so I could have a blueprint for a driver on GB.
Re: Libbet and the Magic Floor
by on (#227698)
I tried it but I'm quite a klutz for puzzle games so I was able to reach the top but had no idea what to do next and stopped ^^;;;

edit:

Now I see the gif shows what to do so I should have looked at it :lol: Graphics are simple but look nice, that part I do like.
Re: Libbet and the Magic Floor
by on (#227943)
I've been adding stuff, such as an exit indicator for the 2x8-cell floor, fades from white when the score reaches 90% and 100%, and a self-playing demo with captions. Does this GIF explain it any better?
Re: Libbet and the Magic Floor
by on (#228247)
nocash wrote:
Are you adding some boulder-rolling sound effect or music, too? A sound effect for scoring would be also somewhat important

I've been working on sound effects. Most were cribbed from Wrecking Ball Boy and my Python port of FHBG and adapted to the piecewise-linear volume control of the Game Boy pulse and noise channels. But after I plugged sound into the demo and showed the video to members of a couple Discord servers, they called the rolling sound effect "obnoxious" and "a bit too extreme", and I ended up agreeing, though the rest were OK. In particular, that sound effect might be the first to go to leave room in the mix for music.

Is the rolling sound effect as obnoxious as claimed?
Re: Libbet and the Magic Floor
by on (#228250)
The jump sounds good. The rolling is a bit too much.

Try some shorter or quieter variations.
Re: Libbet and the Magic Floor
by on (#228251)
That sounds like an avalanche! The sound of a person rolling should be way more subtle.
Re: Libbet and the Magic Floor
by on (#228252)
I think it's probably realistic—compare the sound of a coin rolling—but I don't think it works here.
Re: Libbet and the Magic Floor
by on (#228256)
Coins are hard and full of ridges. People can even roll without making a sound if they're careful.
Re: Libbet and the Magic Floor
by on (#228258)
I was comparing both a US quarter (which yes, is reeded, and is noisier) and a US nickel (which isn't).
Re: Libbet and the Magic Floor
by on (#228276)
For rolling: "clonk-Donk-clonk"
The louder sound at the edge between the two floor fields, and the other sounds if Libbet is a bit edgy.
For jumping: Maybe "umph... bump" or "umph...Bong" instead of the higher pitched "feep"?
Gameboy can output digitized audio samples.
Re: Libbet and the Magic Floor
by on (#228279)
Libbet and the Magic Floor v0.02 is released. Highlights include a demo, more obvious indication of the exit, and sound effects. Size is 8848 bytes.

  • Combine identical strips, saving a few bytes
  • Fix head bob when rolling left
  • Draw track and score updates using Popslide, a VRAM transfer buffer
  • Draw exit arrows at top left and right of 8-cell-tall floors
  • Fade from white at 90% and 100% completion
  • Fade to white on exit
  • Tutorial demo (press Select)
  • Separate Libbet's elbows in push-off cel
  • Sound effects
  • Animate falling in a hole and being ejected

See the GitHub release or download the ROM and source package below.

@nocash
For rolling, much of it depends on exactly what she and each floor cell type are made of. I remember Super Mario 64 had a different sample for each floor material. It's too bad DuckTales went back behind a paywall, or I'd rewatch for inspiration. For jumping (lifted from PyFHBG), I think I took inspiration from Kirby and western cartoons. Playing digitized samples through channel 3 takes more ROM and might need a voice actress. For now, I just made the existing rolling sound quieter than it was in the video. I'll experiment with the exact sound sequence later.
Re: Libbet and the Magic Floor
by on (#228410)
I've hit a bit of writer's block. For the 0.03 release, I wanted to figure some of these out:

  1. Get the materials straight for sound effects
  2. Figure out what the title screen, any% ending, and 100% ending are supposed to look like
  3. Music
  4. Anything else you can think of

In order to make it easier for others to offer suggestions for sound effects, will I need to make a GB ROM that allows creating audio sequences, so that one can iterate directly on the hardware or in an emulator for immediate feedback? I'd assume that iterating on sound effects in FamiTracker, a widely used NES chiptune composition tool, isn't quite adequate because of how different the volume envelope paradigms are between FamiTracker and the Game Boy APU.
Re: Libbet and the Magic Floor
by on (#228420)
There already exists a GB ROM for creating sfx, but I forget its name. Should be fast to find if you go through the GB dev tool lists.
Re: Libbet and the Magic Floor
by on (#229567)
Sometimes it takes a month. After checking various inspirations, I've changed the landing and rolling sounds in the next version. Rolling is lower and quieter, and landing is based on the "not match" sound from Concentration Room.

To generate concepts for the title screen and especially the ending, it might prove helpful to understand what's past the exit of the last room. That might depend on who built the floor and why. I'd hope it isn't as dark as James Dashner's The Maze Runner books or Vincenzo Natali's Cube films, both of which involve mind-wipes and a prequel that spoils explains everything.
Re: Libbet and the Magic Floor
by on (#230049)
Continued notes to self about worldbuilding:

A boulder person has three gaits: rolling, scooting, or jumping. Scooting is seen in some of my other works but not here. Rolling is more energy efficient than scooting or jumping everywhere, and she can carry things in her hands while rolling, though (at least in cut scenes) she would have to stop and untuck her head to see where she's going.

As for the "why is the floor?" question, I'd like draw a parallel to Spencer Johnson's Who Moved My Cheese? and its fan sequels, particularly Mason Brown's Who Cut the Cheese? and Deepak Malhotra's I Moved Your Cheese. These novellas take place in a maze inhabited by laboratory rodents and Lilliputians. After reading them, I hypothesized that the maze is an offshoot of Rat Park, a late 1970s experiment at Simon Fraser University concluding that rats given enough room to live and a sufficiently interesting environment will have less tendency to use drugs recreationally. That answered "why is the maze?" to my satisfaction. I wish I could see how to extend them to "why is the floor?" in this case.

I'm also trying to leave open the option of a later world reminiscent of Hipster Whale's Crossy Road or Konami's Frogger, or possibly even an overhead adventure reminiscent of Nintendo's The Legend of Zelda or Square Enix's Secret of Mana. But the exact nature of the challenges Libbet is likely to encounter in this world still depends on "why is the floor?".
Re: Libbet and the Magic Floor
by on (#230197)
Libbet and the Magic Floor v0.03

This is a small release, as progress past the fifth floor is still behind writer's block.

Highlights:

  • Rolling and landing sound better fit the material
  • Reduce clicking when sound channel turns off
  • Show squash cel when landing (first of 12 principles of animation)
  • Make hands clearer in push-off cel
  • Dead code removal and other size optimizations
  • Rules research: Confirm that 100+ score for 8x6 is highly unlikely
  • Comparative testing: Add patch to make GBA version work on GBA Movie Player
  • 8611 bytes used

ROM and source zipfile is attached, or view the release on GitHub
Re: Libbet and the Magic Floor
by on (#230257)
tepples wrote:
That might depend on who built the floor and why.

I had always thought that it was just there for fun & bemusement. I hope it won't turn into a deadly trap or something!
Re: Libbet and the Magic Floor
by on (#234403)
For 2 months, an ending idea hasn't come to me. But now I'm wondering what achievements I can add. I'd like some of them to acknowledge player tics, like jumping into a Mega Man boss door or a Super Mario Bros. 3 Koopaling wand, or opening a Toad House box while sliding so it looks like Mario is sniffing his armpit. Are these any good? Can you think of others?

Completionist
As an anti-frustration feature, the player can exit in my port after completing 90 percent of the floor. But to reward skilled play, show the number of floors completed with 100% after the final floor is completed. If all floors are 100%, award Completionist and give the good ending.

Sink it
When you land on a dead end, it marks the dead end with a hole and moves you to the starting position at bottom center. But in the GBA and NES versions, when you get the last arrow by moving to a dead end, it stops the game right there and doesn't move you. So I propose an achievement that alludes to a tic that I developed when playing the NES version: if you reach 100% by landing on a dead end, this is considered sinking the ball in the hole as in golf.

Dash for the door
My port has an exit door at the top to give a sense of space to the floors. If a floor is 100% complete, and every move starting at the move from the cell where the last arrow was awarded decreases the Manhattan distance (|x - door_x| + |y - door_y|) to the exit door, and the player doesn't pause between rolls or jumps, award Dash for the door. Cannot be awarded on same floor as Sink it.
Re: Libbet and the Magic Floor
by on (#234459)
To assess the viability of "Sink it", I ran the stats for how many OK floors have at least one dead end. (A floor is OK if its maximum score is at least the area, the round trip reachable area is at least half the area, and at least two back row cells are reachable.)

  • 2x8: 17%
  • 4x4: 26%
  • 6x4: 40%
  • 6x6: 52%
  • 8x6: 58%
  • Chance of seeing at least one dead end in all 5 floors: 92%
Re: Libbet and the Magic Floor
by on (#234779)
v0.04 is released

Highlights:

  • A+B+Select+Start during gameplay to reset
  • Combo counter shows number of tracks laid without hesitation
  • Add achievements Completionist, Sink it, Dash for the door, No scope, No peeking, Restless
  • Display achievements in a window when they are earned
  • Display floor scores and achievements after completing all 5 floors
  • Popslide: Option to limit length of +32 runs and literals to save ROM size
  • "Debughex" option to display a variable at runtime even on hardware
  • Rules research: Confirm 92% chance of seeing a dead end in a game
  • Docs: Add guide to encoding video with bgb

9540 bytes used.

Feedback is appreciated:

  • See how big of a combo you can make. I want to know whether players find it unduly difficult to make large combos.
  • Come up with names for the floor sizes for use on the result screen. Currently I have "Corridor" for the 2x8 and "Anteroom" for the 4x4; the 6x4, 6x6, and 8x6 remain.
  • Title screen and ending concepts are still welcome.

Download ROM and source code below or from the release on GitHub
Re: Libbet and the Magic Floor
by on (#242769)
If I fear I may be copying something too closely, I try to find multiple antecedents. Other real and fictional lifeforms similar to Libbet's kind are pill bugs, armadillo, hedgehog, pangolin, Terra-Firmians from DuckTales, and Tumble Butts from Cyanide & Happiness.