Skeletris
A downloadable game for Windows, macOS, and Linux
Download NowName your own price
The outpost has lost contact with Skeletris, the central skeleton city. And creatures in the wilderness are acting strangely. Make your way to the city, find out what's happened, and use your wits to defeat the unknown evil that now lurks there.
Puzzle-Based Equipment System
- Use procedurally generated "artifacts" and weapons to build your character.
- Arrange them in your 5x5 equipment grid like puzzle pieces!
- Some NPCs can re-roll stats, change the shape, or modify items in other ways.
Turn-Based Combat
- Take advantage of enemy positioning and timing to fight safely.
- Potions and certain weapons can be thrown at enemies.
- Tip: When "Zzz"s appear above an enemy, that indicates it won't act for a turn.
Full Story and Soundtrack
- Hand-built levels are interspersed with generated ones to tell a linear story.
- Each section ends with a unique boss encounter.
- Progress can be saved at checkpoints.
- Over 10+ songs!
Controls
Move* | W, A, S, D |
Attack & Interact* | Walk into the target or Click it |
Skip Turn | Space |
Open Equipment | E |
Open Map | M |
Pick up Item | Click it (while nearby) |
Use, Trade, or Throw Item* | While the item is on the cursor, click the target player, enemy, or NPC |
Rotate Item on Cursor | R |
Activate Weapon | 1-6 |
Toggle Fullscreen** | F4 |
Toggle Resolution | F5 |
Pause | Esc |
*Cardinal directions only.
**Fullscreen doesn't work very well with multiple monitors, sorry~
Most controls can be re-mapped in the pause menu.
Tips and Tricks
Go easy on the weapons! Their stats and abilities don't stack, so it's a waste of precious space. Equip just one or two, and support them with artifacts. | With multiple weapons equipped (like a sword and a whip, in this example), use the number keys to select between them. Only one may be used at a time. |
Kite enemies whenever possible! Attack while they're resting, and step away while they're not. You can do this repeatedly against anything slower than yourself. | Mouse over enemies to see their stats. Some have nasty abilities (like poison!) that will kill you if you aren't prepared. You can also see their speed and remaining HP. |
Throw potions at enemies and bosses! A well-placed debuff like slowness or confusion can make difficult battles easy. | Your own effects can be viewed at the bottom right. Note that you cannot stack the same effect more than once at a time, so drinking two regeneration potions in a row is unhelpful. |
Credits
Art, coding, music, design, and concept by:
- Ghast (twitter, soundcloud)
Made with PyGame and PyOpenGL
Status | Released |
Platforms | Windows, macOS, Linux |
Rating | Rated 4.4 out of 5 stars (46 total ratings) |
Author | Ghast |
Genre | Strategy |
Made with | pygame |
Tags | 2D, Difficult, Horror, Pixel Art, Procedural Generation, pygame, python, Roguelike, Singleplayer, Skeletons |
Average session | About an hour |
Languages | English |
Inputs | Keyboard |
Accessibility | Subtitles, Configurable controls, High-contrast |
Download
Download NowName your own price
Click download now to get access to the following files:
Skeletris for Mac (64-bit) 46 MB
Skeletris for Ubuntu/Mint (64-bit) 57 MB
Skeletris for Windows (64-bit) 49 MB
Development log
- Patch Notes for v1.0.5-betaJul 22, 2021
- Patch Notes for v1.0.3-betaFeb 08, 2020
- Patch Notes for v1.0.2-beta (macOS support)Feb 06, 2020
- Patch Notes for v1.0.1-betaJan 30, 2020
Comments
Log in with itch.io to leave a comment.
Hi!I have some questions about the game engine you use in this game https://github.com/davidpendergast/pyengine/issues/2
Getting audio device issues on Linux:
---
INFO: started Skeletris version: 1.0.3-BETA
INFO: development mode: False
INFO: pygame version: 1.9.3
INFO: initializing sounds...
ALSA lib pcm_dmix.c:999:(snd_pcm_dmix_open) unable to open slave
INFO: generating crash file crash_report--2023-06-15--21-47-12.txt
Traceback (most recent call last):
File "skeletris.py", line 68, in <module>
File "skeletris.py", line 48, in <module>
File "src/game/gameloop.py", line 17, in init
pygame.error: No available audio device
[5178] Failed to execute script skeletris
---
I'm using PipeWire and WirePlumber, if that's relevant.
DOES work on Steam Deck, BUT the linux distro does NOT. To play, use the Windows version and edit the launch options to "Force the use of a specific Compatability tool" and set it to "Proton: Experimental."
I got this crash report
o--------------------------o
| Skeletris Crash Report |
o--------------------------o
Version: 1.0.5-BETA
Traceback (most recent call last):
File "skeletris.py", line 48, in <module>
File "src\game\gameloop.py", line 36, in init
File "src\renderengine\engine.py", line 251, in create_instance
File "site-packages\OpenGL\error.py", line 232, in glCheckError
OpenGL.error.GLError: GLError(
err = 1280,
description = b'invalid enumerant',
baseOperation = glGetString,
cArguments = (GL_SHADING_LANGUAGE_VERSION,)
)
It's failing to call a basic OpenGL function (`glGetString`) with a parameter that I believe has existed since OpenGL 2.0 (`GL_SHADING_LANGUAGE_VERSION`) so I suspect there's a problem with OpenGL on your system. The game requires OpenGL 2.0 or greater to run, so I'd check that your computer supports this (you can usually check this in your graphics card's control panel or with 3rd party apps).
My OpenGL version is 3.1, please help more
So I did some digging - it seems like that driver (9.17.10.4459), and its associated graphics card ("Intel HD 3000" in Windows 10?) doesn't expose all of OpenGL's capabilities. This page sheds some light on the issue and provides a fix, although it seems fairly complicated: https://gist.github.com/rb-dahlb/26f316c5b6089807a139fc44ee69f0d1. And if you google "opengl 9.17.10.4459" you can find posts by other people having similar problems running Minecraft and such. My only advice is to try a different computer, update your drivers, or try the fix in the github link (at your own discretion), but ultimately I don't think this issue is related to my game so I won't provide tech support beyond this. Hope you're able to get it working though!
I downloaded this recently after a recommendation from a friend, but it doesn't work on my Windows 10 machine. It throws up a fatal error, and the logs say "no available audio device" which is patently untrue. Any assistance with this matter would be greatly appreciated.
Hmm. Can you give me some more information about how it crashes? Does it generate a logs/crash_report--DATE.txt file alongside the exe when you run it? If so, what is the Traceback? And if not, can you run the exe through the command line and post the error that gets printed? Does the "no available audio device" error message appear in a pop-up window or are you seeing it somewhere else?
When I disable all the audio devices on my Windows 10 computer, the game does indeed fail to start, giving a crash report that looks like this:
Which seems to be a situation that pygame doesn't handle well and I didn't catch, so sorry about that. Ideally you'd be able to play the game with no audio at least if no devices can be found.The root issue though is probably that pygame isn't compatible with any of your audio devices, or they're all inaccessible(?), which I'm not sure will be fixable on my end. I'll try to release an updated build sometime this week that at least lets you play with no sound though - and I'll post a reply here when that's ready. Thanks for letting me know about this issue.
I've uploaded a new Windows build that allows the game to run even when the sound module fails to initialize. This unfortunately won't make sounds work on your system but you'll at least be able to play the game. Hope this helps :)
Thanks a lot. Here's a link to the log file from the last time I tried to run it: https://pastebin.com/dTD26qK7
Thanks! I'll talk to some other developers and see if anyone has encountered this. It seems like this error usually occurs on Raspberry PIs or pygame running inside virtual environments (where there truly aren't any audio devices), so it's weird you'd be seeing it on a normal Windows machine. I'll post a reply if I find anything. Thanks again.
this can't be made in pygame, it does not have any files
https://www.pyinstaller.org/
Utterly fantastic little roguelike experience. You slot your inventory together to make for the most effective use of items and artefacts, which is a very pleasant puzzle, activate different abilities depending on your chosen setup (effectively deciding between higher stats or more flexibility in abilities) and then walk through this neatly arranged little world. Absolutely needs a fully realized game version.as the combination of relatively simple game mechanics to a more complex and cohesive whole works perfectly. Lovely, lovely game, that would deserve more content. 4/5
More Racial Justice Bundle impressions: http://bit.ly/itchbundle
Youtube Channel: http://bit.ly/YTPList
Thanks for playing and thanks for the kind words :) One day I may make a sequel or do a re-release with more content but no plans currently. Glad you enjoyed it!
Could not get this running on Debian testing. Here is my solution. Would not start saying it couldn't find /usr/lib/dri/iris_dri.so. I found it in /usr/lib/x86_64-linux-gnu/dri/ and linked /usr/lib/dri/ there. Now I get a bit further, but get this error.
INFO: started Skeletris version: 1.0.3-BETA
INFO: development mode: False
INFO: pygame version: 1.9.3
INFO: initializing sounds...
libGL error: MESA-LOADER: failed to open iris: /tmp/_MEIyt5EOV/./libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/dri/iris_dri.so) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: iris
libGL error: MESA-LOADER: failed to open swrast: /tmp/_MEIyt5EOV/./libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/dri/swrast_dri.so) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri)
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext
Major opcode of failed request: 150 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 35
Current serial number in output stream: 34
So I found libstdc++.so.6 in /usr/lib/x86_64-linux-gnu/libstdc++.so.6. Rather that creating another symlink, I started the game with LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./Skeletris and it worked. Seems like Debian puts things in /usr/lib/x86_64-linux-gnu/ that are expected to be in /usr/lib/ and I'm not sure why. I blame Debian. Looking forward to playing this game though.
Sorry about that but thanks for investigating and posting your findings. There was another player a while back running into similar issues with libstdc++ on ArchLinux, who was also able to get the game running using LD_PRELOAD, so I think that's the best workaround for this.
I think the real issue though is that I'm compiling the game on Linux Mint, which will bake in certain assumptions about system libraries that won't necessarily hold on other distros, and I'm not really sure how to avoid that besides making different builds on every distro I want to support (which is a pain).
And I assumed that since Mint is based on Ubuntu, and Ubuntu is sort of(?) based on Debian, I could at least assume those three would work but perhaps not - I'll remove "Debian" from the download link and sorry again that it didn't work.
I think Debian just does things differently as far as where it puts libraries. If these things are installed, they should be in the PATH for your application to find, and I'm not sure why they aren't. I'v had similar problems with other 3rd party software. I'll keep looking into it, and if I find anything out I'll certainly let you know.
Amazing game! Played on Linux Mint. Worked perfectly and I really enjoyed it. Thanks a lot! :)
I developed it on Linux Mint! Thanks for playing :)
Stumbled upon your game here by accident and I have to say I love it! I don't have no money to donate but I'll tell my friends about it.
really liked it, but the last boss was super easy? i killed one monster then walked out a door and it was the epilogue
I've never had anyone give that feedback before haha. It's designed to be pretty difficult~ I wonder if your gear or strategy was better than expected. Anyways, glad you liked it, and thanks for playing :)
Hope to see this expanded, such a wonderful game.
We just discussed your game on our podcast! Come check us out!
Episode 19: Games from the Bundle for Racial Justice and Equality
http://scrachingtheitch.libsyn.com/
Thanks so much for taking the time to play and review Skeletris!
And yes! The equipment system was directly inspired by the "inventory tetris" meme from games like Diablo and Resident Evil 4. I wanted to see if I could make it work as a core mechanic, haha.
Anyways, thanks again! Glad you liked it :)
Hi, I can't get the game to run on linux. I get the following error:
INFO: started Skeletris version: 1.0.3-BETA
INFO: development mode: False
INFO: pygame version: 1.9.3
INFO: initializing sounds...
libGL error: MESA-LOADER: failed to open radeonsi (search paths /usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open radeonsi (search paths /usr/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open swrast (search paths /usr/lib/dri)
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext
Major opcode of failed request: 152 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 43
Current serial number in output stream: 42
I'm running Arch Linux and have a Radeon RX 580 video card.
I'd be happy to provide any further info and/or debug this. The game looks awesome and I'd love to give it a try :)
Sorry about that and thanks for grabbing the logs - it looks like OpenGL is failing to start. Can you verify that your system supports OpenGL? An easy way to check is to run 'glxgears -info' in a command line, and it should create a window with some spinning gears and dump a bunch of info about your system's opengl setup. If that works, let me know what it says the GL_RENDERER, GL_VERSION, and GL_VENDORs are (no need to include any of GL_EXTENSIONS). For example, mine reports:
GL_RENDERER = Mesa DRI Intel(R) Ivybridge Mobile
GL_VERSION = 3.0 Mesa 10.5.9
GL_VENDOR = Intel Open Source Technology Center
If the gears benchmark works and your GL_VERSION is at least 2.1, I'd expect the game to run ok, so in that case maybe there's something on my end I need to update or fix. And your computer is definitely 64-bit, right?
I also encountered this issue. It seemed to be fixed by launching the game like: LD_PRELOAD=/usr/lib/libstdc++.so ./Skeletris
I'd encountered a similar bug where a game came with an older copy of that library.
GL_RENDERER = Radeon RX Vega (VEGA10, DRM 3.35.0, 5.4.43-1-MANJARO, LLVM 10.0.0)
GL_VERSION = 4.6 (Compatibility Profile) Mesa 20.0.7
GL_VENDOR = X.Org
Thanks for the quick response!
glxgears works, this is the output you requested:
GL_RENDERER = Radeon RX 580 Series (POLARIS10, DRM 3.37.0, 5.7.2-zen1-1-zen, LLVM 10.0.0)
GL_VERSION = 4.6 (Compatibility Profile) Mesa 20.1.1
GL_VENDOR = X.Org
Yes, my computer is 64-bit :) For completeness, the output of `uname -a`
Linux arch-desktop 5.7.2-zen1-1-zen #1 ZEN SMP PREEMPT Wed, 10 Jun 2020 20:36:27 +0000 x86_64 GNU/Linux
I also tried the suggestion from espr, `LD_PRELOAD=/usr/lib/libstdc++.so ./Skeletris` and that works.
Again for completeness, the output of `ls -l /usr/lib/libstdc++.so`
lrwxrwxrwx 1 root root 19 21 mei 19:20 /usr/lib/libstdc++.so -> libstdc++.so.6.0.28*
I hope this helps track down and solve the underlying issue. If you need any more info or any more tests, please let me know.
Thank you both for your help here! Based on this blog (section 3, "What if I need a (more) recent compiler?") it sounds like the problem is that the game is packaged with a version of libstdc++.so that's too old for your OpenGL instances to use - causing the program to crash.
I will try to upload a new Linux version today that doesn't include libstdc++.so, which should cause the game to use the system's version of that library instead and prevent this issue moving forward. (I think it's safe to assume there will always be a libstdc++ on people's systems if they have OpenGL...). In the meantime, the LD_PRELOAD workaround seems like the best option (thanks @espr, you're a lifesaver).
I've uploaded a new Linux build titled "Skeletris for Linux (experimental build, 64-bit)" that doesn't include the libstdc++.so.6 library, so I think the game will work properly if you try using that version instead. I may also move this thread into a dev log because it's so huge. Thanks again.
Thanks for the quick update. I've tested the experimental build and that works. I've also played a couple of rounds in the game, which is great :)
Just one remaining issue: I don't have any sound. The only line in the log that stood out to me as being related to sound is this one:
ALSA lib pcm.c:8545:(snd_pcm_recover) underrun occurred
Any thoughts on how to debug this? :)
Great concept! I would like to request for the dialogue(/all?) font to be as large as, or at least closer in size to, the font that appears when you dish out/receive damage.
Sorry about that, and thank you! If your monitor's resolution is at least 1200x900, then the text and UI should automatically expand when you go into fullscreen mode (press F4 to toggle) or increase the window's size past that point. Maybe that's sufficient?
as a guy that loves both tetris and skeletons i can say that youve done a great job
this game is soooo fun. wonderful!
thanks!
This Game is absolulty amazing. Using the Tetris pieces as items was a great spin i have never seen. I have never played a game liked this but I enjoyed a lot.
Thanks so much. Glad you liked it!
Can you please have a save system for progress?
There is. There are "cloning machines" scattered throughout the game that save your progress when you enter them. The first one is right after the town.
rippppppp thanks though!
BTW this is super fun!
Thanks! Glad you like it!
I did not know of this and quit midway while exploring the town. I wish there was a pre-quit warning about how progress isn't saved apart from such machines.
Yeah, it's not well explained, sorry. I'll make a note of that.
Interesting concept with mixing Tetris and Old-School Rogue-Like genere together.
I had a lot of fun with this! The idea of using Tetris pieces as items in your inventory and having to arrange them to maximize space is a great idea, and the presentation is beautiful as well, great looking art. Well done.
Thanks so much! And thanks for featuring Skeletris in your January video! I'm honored :)
Very cool game! The Tetris inventory system is a neat twist.
Looking original. Tetris/Pathos/Nethack mix?
Thanks! There are some roguelike elements for sure, but it's a lot simpler (and more linear) than games like Nethack and Pathos. And you can save your progress at checkpoints. Some of my main inspirations for this were Spelunky, Path of Exile, Pokemon, and Tetris, although it doesn't really *feel* much like any of those in my opinion.
Never played Spelunky yet but I heard the name and looking interesting
Well If you need an audio guy for a jam then check out my portfolio