Bento - an action/platform/love letter prototype

Show off your games, demos and other (playable) creations.
Post Reply
User avatar
oilyeye
Prole
Posts: 5
Joined: Sun Mar 31, 2013 6:05 pm

Bento - an action/platform/love letter prototype

Post by oilyeye »

Hello All,

I decided to post a prototype of the game I've been working on for feedback. This is my first game, and the whole thing started from an experiment playing around with a demo included in an earlier version of Kikito's bump library. It makes use of some excellent ideas there (including the camera used in that demo), as well as cron, middleclass, and obviously bump itself.

The main character's name is Bento, a small box that enjoys sushi. He is very skilled for a small box.

What I was initially trying to achieve was a simple and fun but replayable game that allowed you to jump around and hit things. The gameplay (movement and combat) borrows from metroidvania-style games, which I've always loved. I'd like to eventually develop the story and world to those levels, but I haven't invested nearly enough time to come anywhere close to that. Instead, I modified some procedural platform generation algorithms (again from the bump demo) to create a few maps for different player experiences. I borrowed the ability to reset any level and generate a fresh set of blocks from the demo, so you will get a slightly different experience each time you load any map. The game is fully playable at this stage, and the game modes let you use all of the features that I've developed thus far, but it's nowhere close to being finished.

Controls:
E/S/D/F: movement
J: jump
K: attack
L: grapple
I: special
Shift: pause
Return: reset map

The grapple physics are definitely the most entertaining movement feature. I designed it so you can add velocity while swinging by moving right/left, and you can extend/retract the grapple line by moving up/down. Due to the way the velocity adjustments work, it's possible to slingshot yourself upward by retracting the grapple and jumping off of it at the right time (this wasn't intentional when I was building it but it's a nice feature, so I'm keeping it in).

Modes:
Blank: this is a practice mode more than anything, just to get used to the interface.
Normal: similar to blank but with enemies.
Climb: this was an experiment in wrapping, basically a long vertical level that sends you back to the top when you fall through the floor.
Lava: a pure platforming mode. Fine-tune your movement and avoid the floor hazard. Reach the other end to advance.
Death Match: a small stage and one stronger/faster enemy to fight.

Currently all modes other than blank have a "level-up" feature that lets you advance to another board with stronger enemies when you complete the objective.

Other features of note:
  • I tried to make available attacks fairly flexible. You can attack forward or up while standing, forward while crouching, and forward, up or down while in mid-air (or on your grapple). I added in a dive-kick attack (down + jump in the air) and a slide attack (down + jump on the ground), and made the dive-kick bounce off of enemies to avoid turning it into a suicide attack.
  • To make the platforming aspect more interesting, I've created three different types of blocks. The regular (blue-green) blocks behave normally, and you can both stand on and grapple them. Red blocks are lava, so you can grapple on them but you take damage if you stand on them. Gray blocks are safe to stand on but you can't attach a grapple to them. One feature of "boss" enemies is that they have a chance to cause a block to switch its type when they bounce on it.
  • The special attacks are mostly just invulnerable air-dashes at this point, but I've been trying to develop these a little further. Different special attacks are performed by holding one or more directions while hitting the special button.
  • All of the enemies drop food when killed, which recovers both life and power when picked up. It also powers Bento up for 10 seconds, during which time his attacks all do double damage and he can perform unlimited special attacks. Different types of food also enable elemental attacks (see below).
  • I built an elemental system for both Bento and the enemies. It's a five element system where each element is strong (does extra damage) against two other elements and weak (takes extra damage) against the other two. There are lots of things that are still to be done with this but I made a way for the player to change the element of Bento's attacks by using the number keys 1-5. I've tied the ability to toggle these on to different types of food dropped by each monster. Once you pick up that food type, you gain the ability to toggle on the element associated with that food for the rest of the stage. While toggled on, all your attacks are that element until you switch or turn it off. Turn it off with 0. Enemies are randomly assigned an element (or none) at generation, and will either deal or take extra damage accordingly.
Caveats:
  • The code is really messy. Given that I've abandoned it and then come back to it again several times over the last year and a half, it's littered with different formatting as well as sections of code commented out due to crashes or other testing. The working sections are generally not commented particularly well. It ignores many best practices. I also still have a lot to learn about development in general.
  • The menu system is very sparse. I tried to put enough information in the Start and Pause menus to give players basic instruction on gameplay, but most of that is just there so I didn't have to explain to people how to do things when introducing them to the game.
  • It uses wasd-like controls. I know many users prefer arrow keys, but I have spent most of my time on gameplay mechanics and there aren't any control customization options at this stage. The controls are all based on hands at "home position" on a standard keyboard, which uses esdf rather than wasd, so azerty keyboard users can still play normally.
  • I haven't decided how to license this just yet. I'm obviously using a few MIT-licensed libraries, but the overall licensing decision probably isn't going to be determined until much later in the process.
Thanks in advance for looking, and feedback/ideas are always welcome.

Edit: I made some minor playability updates, so I uploaded a new .love. Changes as follows:
- The grapple no longer breaks if you extend it too far (I did this mostly because you can't see the other end at max length, so there's no way to tell when you're getting close). Instead it just stops extending.
- You can no longer divekick while you have a grapple active. You now have to jump off of or cancel the grapple first. This removes a tendency to get unintentional divekicks when you try to jump while extending your grapple.
- Lava blocks are now more hazardous and damage you whenever you touch them instead of just when you stand on them. This made lava mode a little more interesting.

Here are some screenshots:
SS1.png
SS1.png (44.87 KiB) Viewed 2915 times
SS2.png
SS2.png (50.79 KiB) Viewed 2915 times
Edit: I made another round of updates. In particular, I've done some work on the way monsters drop objects. Monsters that are aligned to a specific element now drop a specific food that enables you to use that element as an attack. The previous behavior of using number keys 1-5 to activate elemental attacks still works, but it's disabled until you pick up that specific type of food (this is more in line with the originally intended behavior, I just hadn't built it in yet). 0 still resets you to neutral attacks as before. To make things a little more transparent, I've added floating text above the food to tell you what type it is.

Edit again: Things are starting to feel a little more polished now. The following are the latest updates:
- There is now a completable objective on the lava map. Getting the map level token advances you to the next lava stage. Lava blocks also now do more damage the higher map level you're in (true in all modes). I also added a high-powered food at the beginning of the level to restore life and power, and this food places Bento into a sushi coma (prevents voluntary movement for 2 seconds or until hit, whichever comes first).
- I've started moving damage values into their own table. The lava is the only thing there right now, but eventually I want all of those values there so it's easy to adjust game balance in just one place.
- I decoupled player level from map level. You can now advance maps by completing the map's objective (usually just killing the boss mob or getting to the end of the stage) everywhere except the practice map. I've also added a rudimentary experience system for Bento to gain levels. Right now this is based purely on kill count, and the number of kills required to gain the next level increases each time you go up. This will hopefully give the game a slightly more metroidvania-style leveling feel once it's more refined.
- I fixed a bug whereby a map reset (either via forced reset or map completion) that takes place while Bento has an active grapple caused the game to crash the next time a grapple was used.

Update: Added a few more things over the weekend.
- I did some more work on damage formulae. As it sits right now, all damage calcs are based on Bento's current level, but I added in a multiplier at certain (increasingly infrequent) levels to Bento's damage. Monsters will always level faster than Bento, so it should still be increasingly difficult to get to the next stage.
- I also added rudimentary joystick support. This isn't very far developed yet, but if your joystick is recognized as joystick 1, has l/r on axis 1, up/down on axis 2, and buttons 1-4 as your normal buttons, then it will work immediately. This game was always intended to have a more console-like feel to it, and this helps me playtest for that.
- I moved the sushi coma notification into a generic status notification that I can use to display other information. I added a message on level up to this notification as well. It just prints status info above Bento's head at present, but these are things I would normally expect to be represented graphically rather than textually in the long run so I think it will stay this way for now.
- I also added a boss pointer. I'm still trying to determine how I want to do this, but it draws a little 4-segment circle to represent the position of the boss on any stage in relation to Bento's position. I tried to make this as unobtrusive as possible so as not to create a distraction.

Update: more new stuff.
- Moved the game to default to a fullscreen mode for testing on some larger monitors.
- Made The Climb stage slightly wider and significantly shorter to increase playability. Also added a block on the right side to prevent perpetual falls.
- Added a bit more detail to the start and pause menus (still very sparse, but basic game info is a little more complete).

As always, see below for a fresh .love.
Attachments
bento.love
(35.75 KiB) Downloaded 201 times
Last edited by oilyeye on Sun Feb 01, 2015 3:12 pm, edited 1 time in total.
User avatar
oilyeye
Prole
Posts: 5
Joined: Sun Mar 31, 2013 6:05 pm

Re: Bento - an action/platform/love letter prototype

Post by oilyeye »

Bumping due to the relatively large amount of changes since original post (see above and below) and time since original post to collect gameplay feedback. Additionally, the following changes were made in the most recently uploaded .love:

- I removed calculations for max grapple distance based on window height. Instead this is calculated based on a variable in the player score table like other player parameters.
- I added a combo counter. This has no mechanical function at present, but I'm considering building an XP bonus based on uninterrupted combos that will enable Bento to level faster with more precise gameplay. Right now this counter increments whenever you successfully hit or grapple, and resets whenever you get hit or touch the ground.
- I adjusted the sushi coma behavior to be more in line with other negative status conditions (same immobilization routine).
- I increased the display time on the level up message to make it more noticeable.
- I fixed a bug where all of the affects of sushi coma were not wearing off at the same time under some circumstances.
- I adjusted the joystick controls to be compatible with a Logitech gamepad to enable some people to playtest (thanks, guys!)
- I added a ground-splash special move. You can perform this using down and special. It triggers whenever you hit the ground off of a downward airdash. I added a behavior to this attack that pushes enemies away from you (sort of) when they're hit by it. Needs a little refinement.
- I added a rudimentary experience system. Eventually this will be variable XP per kill, but right now it's just 1 * map level per kill.
- I adjusted enemy behavior by normalizing movement velocity. The previous random velocity code wasn't behaving predictably.

Thanks again to everyone who has downloaded! Fresh update attached to original post. As always, feedback is welcome.
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest