Pipe Nightmare by sterco_raro

[raw]
made by sterco_raro for Ludum Dare 51 (JAM)

A hell of a ride (very broken but WE DID IT)

The plumber's life is often damp and full of pitfalls...

Connect the pipes on the top of the screen to those on the bottom in this almost-non-crashing prototype of a game!

screenshot-1.png

Controls:

  • Mouse left click: pick and place a pipe or swipe two pipes
  • Mouse right click: rotate pipes
  • Escape: quit to menu

For linux users:

The game was developed on Arch Linux and it could crash on distros with a less recent glibc, if you're in trouble you can alwasy run the game from source like this:

git clone https://github.com/sterco-raro/ld51.git cd ld51 pip install -r requirements.txt python launcher.py

To remove the installed dependencies, do this:

pip uninstall esper pip uninstall pygame pip uninstall pyinstaller

Note: you need python >= 3.10

Tools: - custom engine using Pygame - coded with Sublime Text - graphics made with Adobe Photoshop - FL Studio for audio editing - sounds at home with professional devices

Changelog: - Added the main menu background and logo, made during the jam but forgot to put them in the game - Startup crashes (hopefully) fixed! Let us know if you find other issues - Post jam release: fixed all the major bugs, now there are only the less annoying ones :wink:

Ratings

Overall 1151th 2.8⭐ 32🧑‍⚖️
Fun 1157th 2.55⭐ 32🧑‍⚖️
Innovation 1126th 2.55⭐ 32🧑‍⚖️
Theme 1144th 2.7⭐ 32🧑‍⚖️
Graphics 898th 3.083⭐ 32🧑‍⚖️
Audio 629th 3.017⭐ 31🧑‍⚖️
Humor 612th 2.786⭐ 30🧑‍⚖️
Mood 1024th 2.87⭐ 29🧑‍⚖️
Given 26🗳️ 38🗨️

Feedback

ChrisDeDev
04. Oct 2022 · 00:03 UTC
when trying to run on linux I get this error:

Traceback (most recent call last):
File "PyInstaller/hooks/rthooks/pyi_rth_pkgres.py", line 16, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 499, in exec_module
File "pkg_resources/__init__.py", line 32, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 499, in exec_module
File "plistlib.py", line 61, in <module>
File "PyInstaller/loader/pyimod02_importers.py", line 499, in exec_module
File "xml/parsers/expat.py", line 4, in <module>
ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found (required by /tmp/_MEIhA2B02/libexpat.so.1)
[114528] Failed to execute script 'pyi_rth_pkgres' due to unhandled exception!
Gryph0n
04. Oct 2022 · 00:10 UTC
Unfortunately it gives me a "BAD AT WORK" error on the exe and I cannot play it.
tlatitude
04. Oct 2022 · 00:22 UTC
"Birds aren't real, I promise"
tlatitude
04. Oct 2022 · 00:44 UTC
On windows 10 got it to run.

I made a folder sounds\ and added the following sounds
button_down.wav
button_downup.wav
button_up.wav
fart.wav
flush.wav
ld51fuckmeonmydeathbed.mp3
pipe_drop.wav
pipe_pick.wav
pipe_plop.wav
pipe_rotate.wav
rattle.wav
rattleflush.wav
snap.wav
weird.wav

https://www.soundjay.com/ is where I got sounds from
TheButterApple24
04. Oct 2022 · 03:21 UTC
Got the “BAD AT WORK” error :(
tlatitude
04. Oct 2022 · 03:27 UTC
@sterco-raro the game needs to be zipped up with the sounds folder and possibly some other files too. The executable relies on external files to work.
🎤 sterco_raro
04. Oct 2022 · 09:40 UTC
Thank you all for your comments :heart: we're working on fixing these bugs! Unfortunately we exported the binaries with missing assets folder.

As for @chrisdedev I'll try it on another linux box and see what I can do, on my box it's working so I need to reproduce that error somehow.

P.S. The "BAD AT WORK" is actually a simple string left there by accident :sweat_smile:
Rekko
04. Oct 2022 · 15:33 UTC
I'm mad that the right side of the game is just unplayable because we can't bring pieces in here, but over that that's a great game, nice audio and graphics !
Too bad there is no consequences when the liquid spread all over the pipes.
Wouter52
04. Oct 2022 · 15:38 UTC
Congrtz on your first LudumDare entry! I like the music very much, the sound effects and graphics are awesome too! The controls though, they seem to be a bit broken. I can't reliably drag them on the playingfield / change their positions. So I was unable to connect all the pipes at the end.
Still very impressive for a first LD-entry!

View questions out of curiosity :-)
- Is there any screen when the player wins?
- And what program did you use to make this?
- What does the 'Boh?' button do? I could not figure that one out :-)




=====
Edit, I figured it out. I see that the selecting of the pipes is toggled on-and-off while holding the mousebutton. I suspect that you used somekind of 'mousedown' event for that. If so, a bugfix could be to trigger the selecting of a pipe with the 'mouseup' event.

I think that in this case the mousedown is triggered every frame while holding down the mousebutton. Where the mouseup event is usually triggered once.

I finished the level now :-)

![finished.png](///raw/fd4/43/z/52024.png)
🎤 sterco_raro
05. Oct 2022 · 11:07 UTC
@rekko thanks a lot! I'm mad too and working to fix that issue every time I have a moment to spare :disappointed: The last two columns of the grid **were** interactable a couple of versions ago but I still can't locate what introduced this issue :/

We were thinking about a health bar or something to lose when there's too much spilling but couldn't make it in time :smile:

@wouter52 thank you so much for your kindness during the jam! About the dragging issue you're right, there's actually no drag n drop. I noticed that on windows the mouse events timings are a bit different than linux so I'm trying to fix it and make it feel the same on both platforms. (see below for a hopefully clearer explanation :laughing:)

To answer your questions:

- No, unfortunately we didn't have time to put a winning/losing screen in the game
- It's basically a wobbly custom engine built using [pygame](https://www.pygame.org) and [esper](https://github.com/benmoran56/esper)! The backbone of the code was made during a three days "personal/fake game jam" we made a couple of months ago to test our skills
- The "Boh?" does nothing, it's a placeholder that didn't grow wings, boh in italian means "dunno" :grin:

To clarify, the mouse events are totally handmade :D there's no separation for up, down events. we basically check each time the mouse is being pressed what's the status of different variables (an active selection, last selection comes from the grid or from the inventory, etc).

To avoid millions of clicks per frame there's an "action cooldown" timer in place that needs more testing and balancing (I need to at least increase its duration).

Congratulations for completing the pipe system! And as already said, thanks all for your comments :violin:
Heremeus
05. Oct 2022 · 11:42 UTC
Same issue here as @chrisdedev, I can't run the game on Ubuntu 2022.
Zyger
05. Oct 2022 · 11:46 UTC
I really like the art and the idea of the game. but after playing it for a minute or two it crashes. other than that its pretty cool :)
🎤 sterco_raro
05. Oct 2022 · 11:59 UTC
@heremeus and @chrisdedev sorry to hear that :/ I thought we fixed the launch issues but I didn't think about compiling on different distros for compatibility

If you'd still like to try it out you can get the source code on [github](https://github.com/sterco-raro/ld51) and run the development version like this:
```
git clone https://github.com/sterco-raro/ld51.git
cd ld51
pip install -r requirements.txt
python launcher.py
```
To clean up the dependencies installed by pip run:
```
pip uninstall esper
pip uninstall pygame
pip uninstall pyinstaller
```


Note: you need python 3.10
🎤 sterco_raro
05. Oct 2022 · 12:02 UTC
@zyger Thanks! :D we're still figuring out why it crashes after a couple of minutes though :sweat_smile:
scifi6546
05. Oct 2022 · 14:43 UTC
cant really get the controls to work but the art looks nice. The game feels somehow really laggy, I am on windows 10.
frigusterio
05. Oct 2022 · 14:56 UTC
When I connect any pipe to the ones above and they start spitting liquid, the game crashes
Otherwise pretty cool
Heremeus
05. Oct 2022 · 14:58 UTC
@sterco-raro thanks, running it directly worked (well, it started at least :smile: ). After a while it crashes with "maximum recursion depth exceeded in comparison" when the 10s timer hits. Seems to happen anytime I build a pipe with the open end into a pipe segment that does not fit. But also sometimes on a perfectly fine build.

Console log:
```
File "/home/user/ldjam/ld51/launcher.py", line 24, in <module>
manager.run()
File "/home/user/ldjam/ld51/code/game_manager.py", line 165, in run
self.world.update()
File "/home/user/ldjam/ld51/code/world_manager.py", line 96, in update
self.worlds[self.current].process()
File "/home/user/.local/lib/python3.10/site-packages/esper/__init__.py", line 424, in process
self._process(*args, **kwargs)
File "/home/user/.local/lib/python3.10/site-packages/esper/__init__.py", line 405, in _process
processor.process(*args, **kwargs)
File "/home/user/ldjam/ld51/code/systems/timer.py", line 115, in process
self.grid_healthcheck()
File "/home/user/ldjam/ld51/code/systems/timer.py", line 78, in grid_healthcheck
self._healthcheck( ( self.grid.active_inputs[i][0] + 1, self.grid.active_inputs[i][1] ), "up" )
File "/home/user/ldjam/ld51/code/systems/timer.py", line 69, in _healthcheck
self._healthcheck( ( grid_pos[0] + 1, grid_pos[1] ), "down" )
// (...)
File "/home/user/ldjam/ld51/code/systems/timer.py", line 51, in _healthcheck
self._healthcheck( ( grid_pos[0], grid_pos[1] - 1 ), "left" )
File "/home/user/ldjam/ld51/code/systems/timer.py", line 63, in _healthcheck
self._healthcheck( ( grid_pos[0], grid_pos[1] + 1 ), "right" )
File "/home/user/ldjam/ld51/code/systems/timer.py", line 51, in _healthcheck
self._healthcheck( ( grid_pos[0], grid_pos[1] - 1 ), "left" )
File "/home/user/ldjam/ld51/code/systems/timer.py", line 63, in _healthcheck
self._healthcheck( ( grid_pos[0], grid_pos[1] + 1 ), "right" )
File "/home/user/ldjam/ld51/code/systems/timer.py", line 37, in _healthcheck
value = self.grid._get_at(grid_pos[1], grid_pos[0])
File "/home/user/ldjam/ld51/code/components/map.py", line 120, in _get_at
if col < 0 or col > self.map_width: return
RecursionError: maximum recursion depth exceeded in comparison
```
fabula_rasa
05. Oct 2022 · 15:58 UTC
It's an enjoyable puzzle concept. I think it can be very fun when finished :smile_cat:

At the moment, it does indeed feel unfinished. You probably know all this already :wink:, but:
- the game crashes quite a lot;
- "buh?" button does nothing;
- for some reason, you can't place pipes on the right side of the screen (even though pipes spawn there);
- there is no end (even when you connect all the pipes, nothing happens);
- there is no real setup to the game - what are the pipes for?, where are they going?, what is the slime they are transporting?, and what is the meaning of life and existence as we know it ;)?

On the definite plus side: I like the graphics and the sounds are good as well!

Here is a screen of the crash error I got the most often:

![Screenshot_4.jpg](///raw/732/a2/z/5258b.jpg)
frozenfire92
05. Oct 2022 · 18:08 UTC
Hey, great game name :joy: Even though it was very broken, you did it and that is the main thing in a game jam :smile: Keep on making games!
🎤 sterco_raro
05. Oct 2022 · 23:18 UTC
Thanks for your support even if the grame crashes like crazy :grin:

@scifi6546 @frigusterio @heremeus @frozenfire92 @fabula-rasa

We finally fixed the main bugs!!! It's 1 AM where I live so I think we'll upload the working versions tomorrow morning.

@heremeus thank you for your determination! Hopefully this fix will solve your problems (not the glibc ones though :eyes:)

@fabula-rasa the remaining questions are pretty simple:
- the "boh?" button is a feature ;) it keeps us safe from life's dangers
- unfortunately we didn't put an ending screen in the game aside from a small sfx when the pipes are connected correctly :cry:
- what if the slime is actually transporting those pipes? (42, the main answer is 42 of course)

Oh and thank you **so** much, now I need to rewatch the whole series to satisfy my hunger! All glory to the Hypnotoad!!
fabula_rasa
06. Oct 2022 · 00:20 UTC
@sterco-raro Then I shall ponder the validity of the Boh? button no longer, and I will just be grateful for its protection.

42 is indeed the one and proper answer! As is obeying the Hypnotoad. And your welcome - rewatching Futurama is never a bad thing. I can basically play the first 5 seasons in my head in my sleep by now :laughing:
ChrisDeDev
06. Oct 2022 · 12:07 UTC
@sterco-raro yea got it working. I think the issue is your binary was not installing the required packages. When looking at the source code instructions it did install packages that I did not already have installed.
Wouter52
06. Oct 2022 · 20:48 UTC
The fixes worked, it is much more fun to play now! Good work!
cannibalgirl
06. Oct 2022 · 20:56 UTC
10/10 for sounds, very immersive
i'm imagining in my mind the scene when you were acquiring the sounds using professional devices
at 4 am during the jam somewhere :heart:

maybe i'm not very smart but it took me 5 minutes to figure out that you can rotate pieces with right mouse button
(should've read the instructions with more attention...)

all written in python? sweet! good job at pushing trough
sometimes I would get double pipes in the drawer, not sure why
no crashes here!
🎤 sterco_raro
07. Oct 2022 · 00:10 UTC
@chrisdedev the binary should be self-contained so I don't know how to handle cases like yours :confused: apart from suggesting to run from source

@wouter52 Thanks!! Next time I want to try something simpler and hopefully submit a working build at the end of the jam XD A smaller scope can surely help us

(btw I think I sounded a bit rude while commenting your game, just wanted to say that it wasn't my goal :grin:)

@cannibalgirl sounds, graphics and the late night professional recordings all come from @taxiservice's own hands (and mouth) :copyright: The extra python topping is my doing, so are the random bugs still lingering around :grin: Thank you for your feedback :D (oh and I'm so happy to know the game didn't crash)
Wouter52
07. Oct 2022 · 05:45 UTC
@sterco-raro don't worry ;-) I like honest comments like that! And it did ot come across as rude at all :smile:

The scope of your game looked fine to me, there were just some technical difficlties you needed to overcome. It is common for jam-games to have so-called 'spagetticode' or 'very dirty solutions' to save time. For instance, I could not bother coming up with code that could rotate a tile 90, 180 and 270 degrees (ours works with tiles too), so I asked the artist to make 4 versions of each possible tile and then I used those ^^'
That solution is not 'very nice', but it gets the job done so to speak :-)

I don't know how your game is programmed, but what I wanted to say is: don't be scared to write very veeery dirty ccode to get the job done :-)
MorePixels
07. Oct 2022 · 09:40 UTC
Fun game! Didn't realise the draw button actually gave you more pipes, I thought it would Draw the game. But other than that, very fun game!
🎤 sterco_raro
07. Oct 2022 · 09:50 UTC
@wouter52 I'm happy to hear that ;)

Our code is very dirty :laughing: aside from that, I think you're right indeed. Maybe the scope was fine, probably the major problems were complicated maps management and the pipes system integrity check function.

The "inventory" area and the grid area share a LOT of common code but I lost myself in offsets and array referencing because I rushed that part :')

The pipes integrity check is basically a recursive function written a couple of hours before the deadline :D fun fact: I ended up rewriting that function from scratch three times, each one with a similar structure, each time without noticing that the main issue was the grid access :sweat_smile:
🎤 sterco_raro
07. Oct 2022 · 09:55 UTC
@morepixels Thanks! We were going for a more "draft your deck" like mechanic during the first hours where the draw button should have been more straightforward :grin:
Sk Katea
08. Oct 2022 · 20:12 UTC
I like the Game and the graphics... the idea of it hit my weak Spot, cause i really liked this kind of games when i was young
Hora-Timer
09. Oct 2022 · 10:44 UTC
Wow Show!
reinhpash
10. Oct 2022 · 08:55 UTC
i enjoyed a lot
khaotom
11. Oct 2022 · 07:37 UTC
I think it's fun as a sandbox with no losing state. It was fun to just click around the parts and connect them. Maybe there is an idea for something there. I actually think the stress of trying to solve it with a time pressure would be a nightmare... in fact the original Pipe dream game should be called Pipe Nightmare and this one should be called Pipe Dream :clown:

I also dug the chill vibe of the music, and the low fi grit of the sound effects. I felt it captured the spirit of windows 95 days.

I took a look at esper, it looks interesting, might have to try it out.
BayLock
12. Oct 2022 · 05:11 UTC
Amazing game. Really catchy graphics. Some work can be done from the gameplay side and can be a made a bit more complex. I think the 10 second rule did redistricted a lot of possibilities. Please do check out my submission as well.
Sarah
20. Oct 2022 · 02:34 UTC
We basically DID make the same game, that's great haha. Overall it's a bit buggy but still a completed entry, so well done on that front! It looks nice as well :3