Unstable Ball Game by caiustsm

[raw]
made by caiustsm for Ludum Dare 49 (COMPO)

game2.png

Peek 2021-10-04 01-56.gif

Peek 2021-10-04 02-03.gif

Main idea: Pinball, but the ball is unstable and can fly out of the course (normally under glass), and land in another course.

In this game the goal is to score points by hitting a ball with player controlled paddles (pinball-like), but the ball is unstable and will jump around. The ball has three states: blue, orange, and red. The ball changes states when hitting a bumper. When the ball is in the red (unstable) state, it will jump up the next time it bumps against a bumper.

How to run the game: - Windows: Extract the zip and find the executable "main.exe", run it. Maximize the window. - Linux: Extract the tar.gz and find the executable "main", execute it. Maximize the window.

Controls: - space - start game / launch ball - a or left arrow - move left paddles - l or right arrow - move right paddles - r - reset ball (if stuck)

Point scoring: - The ball falling outside of the stage or using the reset is -500 points. - Getting the ball into a goal is +1000 points. - Hitting a bumper is +10 points. - Activating a button after it was already primed is +2 multiplied by the number of primed buttons in total.

Errors: If the game is not opening or there is some other problem (crashes), please run the executable from the console/terminal and post the messages that were printed to it (I did not texture the map, it's not missing textures). If the messages contain file paths with your name/username in them (or other private information), replace them with something else.

Notes: - I recommend maximizing the window as the ball is small and may be hard to see. - This game was designed with a 16 by 9 aspect ratio in mind. If your display is not 16 by 9, I recommend resizing the window to match (the window does not need to be exactly 16 by 9, you just need to be able to see the score and the stage/level). - The Linux version was built and tested on Arch 64-bit. - The game has sound effects, if you can't hear them then it may be bugged. - The game does not have textures. - Panda3D is a good engine, but this is my first time using it to make something more than just a single object in a scene (I have used Ursina, but not Panda3D directly). I recommend it if you want a 3D engine that's easy to get into. - Lack of an editor to place objects makes most of the game's code about placing objects. It's very tedious and time consuming.

Building from source: You will need python (3.9 or above), panda3d (pip install panda3d), numpy (pip install numpy), pyinstaller (pip install pyinstaller). Create a new directory named dist. Change your current directory to it, then create a new python virtual environment and activate it. Copy paste the main.py and the sounds and models directories into the dist directory. In the virtual environment install the required packages (via pip, previously listed). Then run "pyinstaller main.py". This will create more files and directories. One of which is named "dist". So there should be a directory "dist/dist". In that directory there should be a directory named "main". That directory will contain the final end result. Copy all shared objects (.so) / DLLs (.dll) from dist/lib/python3.9/site-packages/panda3d into dist/dist/main (overwrite all). Then copy the models and sounds directories into dist/dist/main. The dist/dist/main directory is now complete and can be moved elsewhere or zipped. To run the game just run the executable dist/dist/main/main.

Ratings

Overall 523th 2.714⭐ 23🧑‍⚖️
Fun 483th 2.727⭐ 24🧑‍⚖️
Innovation 533th 2.318⭐ 24🧑‍⚖️
Theme 485th 2.727⭐ 24🧑‍⚖️
Graphics 526th 2.114⭐ 24🧑‍⚖️
Audio 393th 2.55⭐ 22🧑‍⚖️
Humor 400th 2.088⭐ 19🧑‍⚖️
Mood 483th 2.206⭐ 19🧑‍⚖️
Given 13🗳️ 11🗨️

Feedback

DevParty
04. Oct 2021 · 01:30 UTC
I would play the game, but I generally stay away from sketchy websites like that. If you upload the file to itch.io instead, you would get a lot more downloads!
🎤 caiustsm
04. Oct 2021 · 02:07 UTC
Added itch.io downloads.
Game_Coder28
04. Oct 2021 · 04:14 UTC
Hi, i would suggest adding screenshots to the game's page as it makes it nicer to read and gives a preview of what to expect
🎤 caiustsm
04. Oct 2021 · 05:05 UTC
Added some screenshots.
JoeRenglish
04. Oct 2021 · 05:45 UTC
I mean, it's pinball a clear as I can tell. Pretty fun though.
Recessive
04. Oct 2021 · 09:23 UTC
I played for 5 minutes but only got to hit the ball a single time unfortunately, it bounced around and all but never came near any of the paddles. If the ball was a bit faster and I felt like I had control over how it launched at the start this would be heaps more fun!
LDJam user 209292
05. Oct 2021 · 22:15 UTC
Nice relaxing game. Overall, I liked it. But I think that more colorful textures will make the game more attractive.
Brainloaf Studio
06. Oct 2021 · 22:59 UTC
Nice pinball game with a unique twist! I like how the ball can fly off of the main board, and I also liked finding a secret zone in the upper left that gave me tons of points. It does feel a bit too random at times, but that's sometimes the nature of pinball in general. I liked it, nice work!
fre
06. Oct 2021 · 23:06 UTC
Interesting choice of engine! I had never heard of Panda3D before, it's nice to see something different!

I think you did well considering the self-imposed constraints, and thanks for sharing the source code, I had a quick look!

I can see how lacking an editor makes it hard to generate and tweak the scene. Did you consider using a scene representation format and editing the scene in a different tool? I imagine it's a bit overkill to write a custom parser, but maybe something like that already exists?
🎤 caiustsm
06. Oct 2021 · 23:24 UTC
@fre Yes the lack of editor resulted in that code mess. Plus the lack of preparation. With some preparation I would have probably written a thin layer on top of Panda3D (the Entity class was the half-baked version of that). I would have turned Blender into my editor by using its ability to add custom user data / tags to objects and then using something like bpy (python blender module) to read through the scene and create entities from objects. I would also like to note that such a thin layer already exists and is called Ursina (I recommend it, rather than raw Panda3D), but I wanted to learn Panda3D itself (in part so that I can contribute to Ursina). With Ursina you don't need to know any Panda3D at all. It's very easy to learn (it just gives you some stuff like the Entity class and takes care of boilerplate code).

@brainloaf-studio Yeah I think the fix to the randomness is just to have more points of interaction with the ball. I was thinking about adding more flippers and/or other mechanics such as a plates on the ground which the player can have shoot up under the ball to make it jump manually (giving more control on which areas to get the ball to). This also fixes the issue of having long waiting periods between the ball bouncing around and actually getting to interact with it as mentioned by @recessive. Although you can still just have it bounce around by itself if you want to just sit back and relax and watch it do its thing (which is one of the things I really like about pinball, the simulation-y look at it go part). Another thing is the secret zones and such which could be expanded on, I really like the idea of having exploration in a pinball game, but not restricted to just one course / under glass (but could not add all that due to time).
fre
06. Oct 2021 · 23:48 UTC
It's a nice idea to be using Open Source software and work with what you have. It reminds me a bit of tinkering with Processing (see https://openprocessing.org/browse/#). Thanks for doing this and sharing :smile:

Where you missing other elements compared to using a special purpose game engine such as Unity? I imagine that the gameplay programming layer (camera, controls, behaviors, AI) is pretty barebones? I'll keep an eye on Ursina to see how it develops!
🎤 caiustsm
07. Oct 2021 · 02:45 UTC
@fre While I did not try it out, Panda3D has PandaAI. For controls / character controller Panda3D integrates the Bullet3D physics engine (used for this game), which has a character controller and a vehicle controller, I recommend using them (I have used Bullet3D outside of Panda3D, the integration is very good). The camera controller would have to be made, but I don't see that being much work unless you have some complex camera requirements. There is no asset store which comes with engines like UE, Unity and Godot, but on the other hand you have access to all of python and its libraries. Plus you can use any C/C++ library (the Panda3D C++ experience is very similar to the Python experience (the docs can toggle between the two)). Panda3D is very capable and other than an editor (and the size of the community that uses it), I don't see it being better or worse than something like Unity. But, it's open source (and free), and I found it less buggy than Godot (for now (v4 soon I hope)). Also being able to just "pip install panda3d" rather than have to go through a whole install and project setup process is very nice for things like game jams or other small projects.
JPGFG
09. Oct 2021 · 20:32 UTC
The game was definitely pinball! It was an interesting concept but felt pretty bare without atmosphere
Emkani
09. Oct 2021 · 20:34 UTC
enjoyed the game but felt like a bunch of smaller tweaks would make it a lot more enjoyable. Feels like physics should be 2-3x the current speed for more action. Ball also felt too floaty.
Frankey333
10. Oct 2021 · 08:49 UTC
Pretty interesting way to include 3rd dimension in a pinball game :D overall i quite like it, but i definetly dislike the single colored board (it was a little hard to orient, atleast color-coding the segments would definetly help a lot),
Lubek Enterprises
20. Oct 2021 · 01:53 UTC
Neutral:
- Building from source would land me in a psych ward, Write build script?

Bad:
- No quit functionality, have to use Alt+F4 or Ctrl+Shift+Esc to exit.
- Visually bland, needs some color added to it!
- As others have said, ball needs to move just a bit faster.
- Minimal UI.

Good:
- I like the take on the Unstable theme. The instability along with different states make me think you know a thing or two about quantum mechanics ;)
- It reminds me of the pinball game that came with Win 98-XP (I think).

Overall: I like the take on the theme. Despite all the bads I listed, I've never used Panda3D and since I haven't I can't really say what could be better or not as I have no idea. Decent game, just left me wanting a bit more. Good job though!!

Frank - Lubek Enterprises
VarunDevs
20. Oct 2021 · 13:39 UTC
Neat and good game
LDJam user 269161
20. Oct 2021 · 13:59 UTC
It reminded me of good old windows xp pinball game! Nice work for your first game in panda3d :D