So I worked on the Volley part of the game, inspired by Blobby Volley mostly.
I spent some time on the (totally accurate) Physics Engine!
Seeing all the amazing games all around here, it looks like I’m aiming for the last place again you guys are too good for my poor skills in everything
Gameplay
Currently it’s barely a physics sandbox without sandbox tools
2-players controls were smoothed out for the second player (A then B will jump AND keep moving to the right, B then A will do the same for the right direction).
UI
Added a simple menu ( Escarmouche just to have a main menu.
Engine
Draft of a 2D Physics Engine.
Handles collisions so it doesn’t feel too “unnatural” but doesn’t aim for the perfect accuracy.
Relies on Fixed Point Numbers.
Not intended for too many objects.
Currently supports the Box shape.
Missing the notion of material to deduce the bounciness (e.g. the bunnies and the ball shouldn’t bounce that much on the sand)
Rough debug mode where the hitbox of some objects is shown on the screen.
Aesthetics
Reworked a bit the Bunny and the Volleyball’s sprite.
Added a quick’n’dirty background for the Volley game, with moving decorations such as Clouds and Boats.
Originally a bug, but I think it’d make a great intro to the volley game since that’s probably how you install a net
Bouncing tests aka “Ball pit Simulator 2021”. The bunnies are bouncing themselves too much on the sand, so it’s too hard to control them.
Upcoming
Gameplay - Volley
Adjusting the Volley’s Physics after the Engine is ready for this, in order to have the right feel.
Have some basic AI trying to intercept the ball the best it can (will ease my own tests).
Have the basic Game Phases (Launching the Ball, Playing, Point Taken, Victory/Defeat) with the necessary transitions between them (like detecting the ball touching the ground, resetting the player/ball positions after a while, declaring a victor, etc).
UI - Volley
Simple counters for the number of points for each Players.
Engine
Disk/Disk and Disk/Box collisions so you can actually angle using your bunny.
Collider’s Material to deduce the right bounciness.
Sand and Bunny or Rubber (Ball) - Low bounciness.
Bunny and Rubber (ball) - High bounciness.
Proper velocity reflections based on the Collision’ Normal.
Showing all the colliders’ hitboxes on the screen.
Aesthetics - Volley
Probably a bit of “dust” (sand actually) particles when the Sand gets touched with “high” velocity objects.
Maybe some crabs traversing the sands and others decorations.
Side notes:
@FManga thought it was a cannon to bombard the faraway ship, and it’s a pretty cool idea. If I still got some time after the Jump’n’Bump gameplay, I’ll try making a coop game!
From my experiments with the pinball engine you only need a dampening factor to get good looking results. Basically you calculate the resulting trajectories from the velocities, collisions, and mass then multiply the resulting velocities by the dampening factors of the other object. A dampening factor less than 1 will more quickly decay the bounce and greater than 1 will increase the bounce (like a bumper in pinball).
Let’s say the balls have a factor of 0.9, the bunnies a 1.25 (they hit the ball causing it to bounce further), and the sand could have something like 0.25. So when two balls collide they bounce off each other loosing only 10% of their velocity, if a ball hits a bunny then they get hit and bounce further, but if they hit the sand then they very quickly loose their velocity due to the dampening of the sand.
More Volley! Still barely more than a sandbox, but the things are coming together and it started playing like a volley game.
Gameplay
Volley
Tuned some physics stuff.
Balls and Bunnies now use a Disk Shape, physics wise.
I might try using Capsule Shape later for Bunnies, if I got the time. It might improve the control!
Added some damping (aka static air friction) for the Ball to avoid extreme speeds.
Hit box for the Bunnies is slightly bigger, and controlling them in the air was made easier.
I considered forbidding the players invading the other player’s area, but it’s kind of a tricky move and it adds to the chaos .
On the simulator only, A and B are reversed to reflect their position on a PC keyboard.
UI
Volley - Added an indicator to tell where the Ball is.
It’s useful when the Ball is flying very high -which is bound to happen
@HomineLudens suggested to use Shadows to reflect that. That’s a good idea, I’ll have a look at it later!
Engine
Collisions are now handled using a Normal vector.
Allows non-axes aligned collisions!
Added Disk shape
Disk/Disk collisions are fully supported.
Disk/Box collisions are supported as if Disk were Box, which isn’t correct for corners. Not that useful to support right now, but would be nicer for the collisions involving the Net.
Added Materials
@tuxinator2009 suggested above to use some calculation for this, but I opted for a more “brute force” approach instead (sorry I know you meant well).
This is a simple MaterialID-based system, with a matrix telling “how much bounciness do you get when you hit an object of material X against an object of material Y”.
Screenshots / GIFs
The indicator is helpful when shooting the ball very high.
Some exchanges between both players. It’s hard to play both players at the same time
Upcoming
Gameplay - Volley
The Rules!
You serve when you land the Ball on the Opponent’s ground.
The Opponent serves if they land the Ball on your ground.
Only the Player who serves can score Points.
So if you lose the Serve, the Opponent doesn’t get immediately some Points!
Some more tuning.
Aesthetics
Have a different appearance for both players.
Ideally, I’d like for the players to choose their appearance and to stick with that for every game launched after that.
I made some sprites for alternate Bunny colors, and also a Dog and a Cat set of sprites. I’ll stick to the bunny for now, since I need a bit more of sprites for the Dog and the Cat, but that’d be very nice to have them as well!
It got a lot of quirks, but is good enough to return most balls, and … I actually struggle to beat it!
It’s actually mostly a “chaser”-type AI, with a bit of anticipation.
If I update the physics, the AI will have to be adjusted for sure.
Importantly, this AI doesn’t have any kind of gameplay advantage. It’s actually controlling the Bunny with its own LEFT/RIGHT/JUMP controls, decided depending on the position of both the ball and the bunny. No improved movement/jump or anything.
Trying to go on the other side is risky with this AI, as it’s fighting back curiously well and might often end up sending the ball at your undefended side!
UI
Volley
Added 2 counters for the points of each players.
Players Controls Page
Allows choosing between the Input Mode - 1 Player on a Pokitto, and 2 Players on the same Pokitto.
Also allows testing the controls.
Engine
Fixed a bug involving pure-x or pure-y normals when reflecting velocities
Screenshots / GIFs
The Ball now is immobile until a Player touches it. It’s also possible to keep it on your head in this state. Doesn’t serve much however!
Points counting. You need to be serving in order to score!
The players screen. Ideally it’ll persist the preferred way of controlling in a cookie or in a file. The Test screen is for later, when I’ll allow PEX buttons for easier controls. Also, choosing 1 Player will enable the AI in Volley!
Said AI. It’s plenty of quirks but good enough to not let too many balls pass through. Does a few (involuntary) trick shots!
Upcoming
I’ll let this game rest for a while as it is right now. The core is working, and the AI is challenging enough.
There are some things to do of course - adding an ending rule, some SFX, some particles, maybe a victory dance. That’ll be for the polishing part for the last days.
Supporting different kind of animals would be nice, but it’ll be for the polish part as well.
I want to start implementing the other game - a demake of Jump’n’Bump (with less gore)!
AI improvement for volley, AI vs AI (take your bets!), and the beginning of Arena (aka Jump’n’Bump demake)!
Also, I’ve been spending a lot of my time playing against the AI because it’s just the right amount of challenge for me
Gameplay
Volley
Improved AI!
Introduced some randomization
Since the AI is actually having a “controller”, this was done by, on a chance of 1/256, switching the left or right state (from pressed to released or from released to pressed).
This is essentially input dithering.
But it does allow some variations in its behavior, including really weird trick shots or just some errors.
Since it doesn’t happen too often, most of the behavior is still the same!
Things could be spiced up by influencing the rate of mutation depending on the circumstances:
If the AI is winning too many points (aka the “Overconfident Debuff”) (this is some sort of “rubberband” mechanism);
If the current round has been taking too long, or if the AI did a lot of actions (aka the “Fatigue Debuff”).
Fixed some stuck issues:
The AI could land on the other side (which is allowed for fun reasons ), but then wouldn’t jump to get back to its side.
The AI could have the ball on its bunny’s head, at the extreme of its side, but would stop acting.
The AI would wait for the player to smash the ball if this ball was bouncing perfectly on the net.
Now supporting the 0-players mode, by having two AIs fight each others!
@lucentbeam suggested that could be a demo mode. Later as I joked about making it a betting game, he also added something like “clap[ping] to cheer up the one you’ve bet on” or “shoot[ing] tranquilizers at the opponent”
Arena
Added “Lake” map:
I struggled a lot on this one, not sure on what direction to go.
I took the bruteforce way, by drawing a fullscreen image hosted in the Flash (38720 bytes, could be reduced to half less since I’m using Pico-8, but that’s unnecessary for now).
The map itself, named “Lake”, is a one-screen map and features trees, a boat, some platforms and water.
I’d love to make it more lively, but that’s not the priority right now - I need to make it fun before!
Here, bunnies have different physics from Volley! They jump less, are smaller in their hitbox and so on.
It’s pretty much a sandbox of “let’s walk through the level for 20s and do nothing” at this stage.
The smartphone was in a precarious balance on the ruler + tape. No comic books were harmed while filming this.
Upcoming
Well the core is finished for both minigames. Things are still unpolished, it’s missing audio, and the input/players system could be using something more user-friendly! However I’m quite happy of the current result.
Originally I was to stop at this point, but there is still a few days!
I don’t think I got enough time to implement a third mini-game unfortunately, even with the extended time, so instead I’ll polish these two games - Volley and Arena.
Hopefully, most of these should be finished by sunday:
All games
Add an outline to the various Characters (bunnies, cats and dogs later).
So they can be easier to spot.
Before starting a game:
Let the Player(s) choose their avatar (basically variation of bunnies, cats and dogs)
Configure (when applicable) if a Player should be controlled by an AI or not.
Arena:
Doors to access the upper part.
Kill Hug counter + end after a given score was reached.
Spawn a few Water particles when inside the water part.
Add some Audio:
Jumping (shared with Volley)
Bumping (shared with Volley)
Splashing a bunny.
Water splash maybe?
Volley:
Add some Dust particles when anything touches the sand.
Add Winning Conditions - 7 at least and at least 2 points of difference.
e.g. 9-10 isn’t the end, 10-12 is.
Freeze the players for a second before serving.
So the first player doesn’t end up jumping at the ball because they pressed A
Add some Audio:
Jumping (shared with Arena)
Bumping ball (shared with Arena)
Whistle when the ball hits the ground
Maybe the sea’s noise?
Menu
Add some Audio:
Move cursor
Select an option
Going back
Add some cool graphics!
Most likely won’t be done until after the jam, but not exactly:
Arena - Some power-ups/debuffs (temporary invincibilty, shield, double-jump, speed up/down, unrelenting force, these kind of things).
My brain keeps reading that as “EXP bonus” and is happy for that reason
I don’t know if it’s worth for that bonus -it’s merely using IN pins.
Seeing people actually play this game with other people would be much more rewarding -and hopefully bring back the PEX-style multiplayer back to the Pokitto. I know seeing the pics with kids playing together at a snake game was one of the incentive that made me get a pokitto, but I didn’t saw many games relying on this afterward!
Maybe also electrical parts should be sold in the Pokitto Shop so people who do not usually buy them can be sure they get the correct parts which work for the use case.