Playscii
A downloadable tool for Windows, macOS, and Linux
Playscii is an open source ASCII art and animation program. It runs on Windows, Linux, and macOS.
Website: http://vectorpoem.com/playscii
Documentation: http://vectorpoem.com/playscii/howto_main.html
Hardware requirements:
- OpenGL 2.1-capable video card with GLSL 1.30* support.
In other words: if your computer was made after 2008, there's a good chance it can run Playscii.
Windows build requires Windows 7 or 10, 32-bit or 64-bit. macOS build requires version 10.10 aka Yosemite or later.
The macOS build is 32-bit and not notarized, so Playscii will not run on versions of that OS that have removed 32-bit support entirely and/or refuse to run non-notarized software. I do not plan on offering support for notarization-required versions of macOS. See the readme for instructions on running from source on macOS, or check out Michael Lazar's fork on Github.
Please note that Playscii is open source, still in development, and is offered as a free download here on itch. Testing and bug reports are appreciated; you can file bugs on the code project's page.
Some users have reported Windows Defender incorrectly flagging random versions of the Windows build as malware. Any future builds where you see this are random and I can't really do much about them other than create a new build with a few bytes changed, which seems to evade the rather aggressive signature detection that some antivirus suites use. If anyone has more info on this, I'd love to hear it; lots of peoples' games and tools seem to get flagged like this.
* Playscii will detect your GLSL version on startup and quit with an error message if version 1.30 or higher is not found.
Status | In development |
Category | Tool |
Platforms | Windows, macOS, Linux |
Rating | Rated 4.8 out of 5 stars (110 total ratings) |
Author | JP LeBreton |
Tags | ascii, Retro, tool |
Code license | MIT License |
Average session | Days or more |
Languages | English |
Inputs | Keyboard, Mouse |
Links | Homepage, Source code, Twitter/X |
Mentions | Get ready for Ludum Dare: Game developme... |
Download
Install instructions
Windows: unzip the build and double-click the EXE from its folder.
Mac: open the DMG and drag the .app bundle into your Applications folder.
Source: You'll need to have Python 3 installed along with the other dependencies described in the readme.
Development log
- Playscii 9.17.1b - Windows 7 compatibility restoredMay 11, 2021
- Playscii 9.17.1Jan 22, 2021
- Playscii 9.17Nov 02, 2020
- Playscii 9.16.3Sep 14, 2020
- Playscii 9.16.2 - hotfix for image exportFeb 13, 2020
- Playscii 9.16.1 - Wildflowers hotfixesFeb 05, 2020
- Playscii 9.16 - WildflowersFeb 02, 2020
- Playscii 9.15Jan 12, 2020
Comments
Log in with itch.io to leave a comment.
Just want to say thank you, I love this program, it's so much fun it's so versatile it's amaaaaaazing!
Became interested in this as MrmoTarius mentioned he uses it in his work. The documentation says “Check out @Playscii”, but its been a few months since I clicked to follow you on the SoMe formerly known as twitter and the request is still pending. Is the account no longer active?
Correct, I'm no longer active on Twitter. Thanks for pointing out that link in the docs, I'll amend that part to no longer mention twitter. Development has been very dormant for the past few years, but any announcements or updates will be posted on https://cohost.org/playscii
Hi, i was having trouble running this from source (using Debian 11 "bullseye"). I have installed all of the relevant dependencies, but when i try to run "python3 playscii.py" it throws back this error,
Traceback (most recent call last):
File "/home/USERNAME/playscii/playscii/playscii.py", line 25, in <module>
import sdl2
ModuleNotFoundError: No module named 'sdl2'
I was wondering if you could possibly assist? Thank you for reading!
Hm, if you have all the dependencies installed, see if you can run "import sdl2" from the python REPL environment (ie run python3 from the command line). Do you get the same error from there?
i've now solved the issue [had to reinstall pysdl2 and pysdl2-dll, also installed pillow 9.5 (as opposed to 10.0) for the ANTIALIAS error i got.] but now when i run python3 playscii.py it throws back this
File "/home/USERNAME/.local/lib/python3.9/site-packages/OpenGL/contextdata.py", line 40, in getContext
raise error.Error(
OpenGL.error.Error: Attempt to retrieve context when no valid context
Depending on what type of GPU you have, there's a billion reasons the GL context creation could be failing. Does the log print anything before it hits that error? My code tries to output what it's doing as it goes but IIRC that's pretty early in the process.
CPU: x86_64
GPU: Mesa/X.org - virgl
OpenGL detected: 3.1 Mesa 20.3.5
GLSL detected: 1.40
Vertex Array Object support found.
Maximum supported texture size: 16384 x 16384
Detected screen resolution: 1366 x 688, window: 1092 x 550
Detecting software environment...
OS: Linux-5.10.114-16025-ge75506b9d98e-x86_64-with-glibc2.31
Python: 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] (64bit)
Modules: PySDL2 0.9.16, numpy 1.26.4, PyOpenGL 3.1.7, appdirs 1.4.4, PIL 9.5.0
SDL: 2.28.0 SDL-release-2.30.0-0-g859844eae, SDLmixer: 2.6.1
/home/USERNAME/playscii/playscii/playscii.py:429: DeprecationWarning: ANTIALIAS is deprecated and will be removed in Pillow 10 (2023-07-01). Use LANCZOS or Resampling.LANCZOS instead.
img = img.resize((32, 32), Image.ANTIALIAS)
Traceback (most recent call last):
File "/home/USERNAME/playscii/playscii/playscii.py", line 1170, in <module>
app = Application(config_dir, documents_dir, cache_dir, logger,
File "/home/USERNAME/playscii/playscii/playscii.py", line 315, in __init__
self.gw = GameWorld(self)
File "/home/USERNAME/playscii/playscii/game_world.py", line 118, in __init__
self.grid = GameGrid(self.app)
File "/home/USERNAME/playscii/playscii/renderable_line.py", line 60, in __init__
GL.glVertexAttribPointer(self.pos_attrib, self.vert_items,
File "/home/USERNAME/.local/lib/python3.9/site-packages/OpenGL/latebind.py", line 63, in __call__
return self.wrapperFunction( self.baseFunction, *args, **named )
File "/home/USERNAME/.local/lib/python3.9/site-packages/OpenGL/GL/VERSION/GL_2_0.py", line 469, in glVertexAttribPointer
contextdata.setValue( key, array )
File "/home/USERNAME/.local/lib/python3.9/site-packages/OpenGL/contextdata.py", line 58, in setValue
context = getContext( context )
hopes this helps! i really appreciate you assisting with all of this lol, thank you.
Wild guess, but is your desktop using X11 or Wayland? PyOpenGL is pretty ancient and creaky at this point, and I recall Wayland making it trickier in various ways for it to get a context it considered valid.
If you are indeed running Wayland, I'd say try to run from the latest Playscii source (last public commit was August 2022) as I did add a few things after 9.17.1 for working on newer Linux desktops.
I have a bug where the screen looks like this. does someone know how to fix it?
Been messing around with this for a little bit and I'm absolutely loving it! Excellent work! :>
Although I do have to ask, is there a way to change the default Save folder location? I looked through the documentation and the config file and didn't see any way to change it..
Hm, looking at the source code it looks like the save dialog defaults to the user Documents/Playscii/ folder, but will change to whatever directory you last successfully saved something to, within the same session. Not the same as being able to set something that's persistent across sessions, but maybe that help? I'd have to think carefully about how to let users override some of the default paths it uses.
Sorry, I can't figure out how to make a clevercloud account for the following issue report. It keeps giving me an OAuth error of some kind.
Anyway, for some reason I can't get playscii to list files except for the folders art, artscripts, charsets, formats, games, palettes, screenshots, Documents, My Games, My Music, My Pictures, My Videos, and its own - Playscii. Also, any file it creates itself while I am using it seems to be visible, but not the pre-packaged psci files. This makes importing anything impossible.
I am running Microsoft Windows 11 Pro, Version: 10.0.22621 Build 22621 . My system is x64. If there's any other information you'd need, please let me know and I'll find it for you.
This is almost certainly a permissions issue, eg which directories an application is allowed to access. I don't have a Windows 11 system to test on, but I wouldn't be surprised if they changed a bunch of stuff in the name of security.
Do you know of any other 3rd party applications, particularly open source ones with public bug trackers, that have had this kind of issue? If so I could refer to what they did and maybe that'd help us fix this issue.
No idea if it's open source, but I think I remember Your Only Move Is Hustle having adjacent issues at first - but that was made in godot, so the solution was probably something that doesn't really help. As a last ditch effort, I've tried running it as administrator but there was no change.
Actually, as I was writing this I realized that godot engine itself is open source and has public bug trackers... Maybe you could take a look at how it exports executables which mostly avoid being flagged?
What do you mean by "being flagged"? My understanding is that permission issues aren't a result of some "malicious software" detection heuristic, just a set of rules that applications have to follow to be able to do things like access different parts of the file system. Not knowing anything about how those rules might have changed for Win11, I could be wrong but that's my guess as to why you can't get a file listing for certain directories on your system from within Playscii.
You probably understand that better than I would, yeah. I don't know much about permission architecture. Most of my experience in programming is in the aforementioned engine which handles this part for me, as well as some early-life python doodling. Do let me know if you figure this out, but I myself don't have the experience required to help fix the bug; I was just affected by it.
Hi, I'm just wondering whether you'd consider it possible to run Playscii on ChromeOS' Linux terminal; or, specifically, ChromeOS v116.0.5845.168, and Debian Linux 11.0 (Bullseye). Because, apart from my PC, that's the platform it'd be fun for me to use it on.
I've downloaded your Linux ZIP file and made substantial progress in implementing it, but have encountered the following error, outputted to the Linux terminal:
"OpenGL.error.Error: Attempt to retrieve context when no valid context"
Also, I'm actually inept with this sort of thing, so it's my assumption that in order to use Playscii, I've got to run the "playscii.py" file, because attempting to run which has been the cause of this error.
Thank you!
I've never used ChromeOS and can't offer any support for it. That error message suggests that Playscii failed to create an OpenGL draw context, which is the most basic initialization step after the window itself is created. I don't have a clear understanding of what the OpenGL/driver environment is like in ChromeOS and thus don't know why it would fail. If you're running "python playscii.py" from a terminal (which would be the correct way to run from source), are you seeing any logged lines prior to that error? Playscii logs every step of its initialization and it would be good to know how what it reports up to that point.
Thank you for replying so quickly! Here's the full terminal log, following my inputting of "python3 playscii.py":
UserWarning: Using SDL2 binaries from pysdl2-dll 2.28.2
Playscii v9.17.1
Loading config from /home/spak0002/.config/Playscii/playscii.cfg...
Config loaded.
Detecting hardware...
CPU: x86_64
GPU: Mesa/X.org - virgl (Mesa DRI Intel(R) UHD Graphics 600 (GLK 2))
OpenGL detected: 3.1 Mesa 21.2.6
GLSL detected: 1.40
Vertex Array Object support found.
Maximum supported texture size: 16384 x 16384
Detected screen resolution: 128 x 128, window: 102 x 102
Detecting software environment...
OS: Linux-5.15.117-19680-g54e910f94133-x86_64-with-glibc2.31
Python: 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] (64bit)
Modules: PySDL2 0.9.16, numpy 1.25.2, PyOpenGL 3.1.7, appdirs 1.4.4, PIL 9.5.0
SDL: 2.28.0 SDL-release-2.28.2-0-g031912c4b, SDLmixer: 2.6.1
/home/spak0002/Organised/playscii/playscii.py:429: DeprecationWarning: ANTIALIAS is deprecated and will be removed in Pillow 10 (2023-07-01). Use LANCZOS or Resampling.LANCZOS instead.
img = img.resize((32, 32), Image.ANTIALIAS)
Traceback (most recent call last):
File "/home/spak0002/Organised/playscii/playscii.py", line 1170, in <module>
app = Application(config_dir, documents_dir, cache_dir, logger,
File "/home/spak0002/Organised/playscii/playscii.py", line 315, in __init__
self.gw = GameWorld(self)
File "/home/spak0002/Organised/playscii/game_world.py", line 118, in __init__
self.grid = GameGrid(self.app)
File "/home/spak0002/Organised/playscii/renderable_line.py", line 60, in __init__
GL.glVertexAttribPointer(self.pos_attrib, self.vert_items,
File "/home/spak0002/.local/lib/python3.9/site-packages/OpenGL/latebind.py", line 63, in __call__
return self.wrapperFunction( self.baseFunction, *args, **named )
File "/home/spak0002/.local/lib/python3.9/site-packages/OpenGL/GL/VERSION/GL_2_0.py", line 469, in glVertexAttribPointer
contextdata.setValue( key, array )
File "/home/spak0002/.local/lib/python3.9/site-packages/OpenGL/contextdata.py", line 58, in setValue
context = getContext( context )
File "/home/spak0002/.local/lib/python3.9/site-packages/OpenGL/contextdata.py", line 40, in getContext
raise error.Error(
OpenGL.error.Error: Attempt to retrieve context when no valid context
Hmm, I'm not sure what to make of that error. So this crash occurs as you're launching the program? It looks like you're meeting the minimum required version #s for OpenGL and GLSL support. The only thing odd from that log output is your "detected screen resolution" of 128x128 and window size of 102x102 - Playscii tries to enforce a minimum window size of 320x240, as various things get weird below that. I'm not sure that that's the cause of this crash though. Without a ChromeOS device handy I'm really not sure how to go about troubleshooting it. I searched for ChromeOS (and Chrome, and "virgl") on the PyOpenGL mailing list to see if anyone had ever confirmed it even ran on that system, and didn't find anything... but PyOpenGL is also an old and very quiet project at this point.
Sorry I can't do more to help! If you're an experienced Python programmer you might try running some of the PySDL2 (the library that creates the window, handles input, and does other stuff) and PyOpenGL (the library that issues commands to the OpenGL context) examples (or write your own if they don't exist), just to see if those respective modules can even run on your hardware.
Sure, I’ll try running some of those, and do some Googling in that respect, as well.
But, if that isn’t fruitful, I’m just gonna have to settle for using Playscii exclusively on my PC, is my feeling. Which is perfectly fine, of course; Playscii’s super interesting, and having it only on one device isn’t going to remotely discourage me from using it.
Thank you for the help!
Hi, I have a bit of a problem: for some reason I can't use left-click to interact with things. I need to hold down lmb and then move my mouse like a pixel to make the click actually count. My mouse works perfectly in everything else and right-click works fine. I haven't changed anything in the settings (at least I think so). If anyone knows how to fix this please tell me. I don't want to reinstall playscii, because I don't know if that will fix the problem. Thanks
Has this always happened? What OS are you running?
"binds.cfg" in your config dir is where the key bindings are defined, you could have a look at that file and see if anything looks out of the ordinary. i think the behavior of the mouse buttons might be hardcoded though.
Just found a fix: I just had to replace the binds.cfg (and maybe playscii.cfg) with the default ones. I think the reason that happened was because I was trying to run endless ladder climbing 2 and was messing around with the confing to try and make it work. Still thanks for replying!
Also, I wanted to ask: Is there a possibility of a better, standalone version of the playscii import feature? I'd love to see, or even make, something like that (with the custom palettes/colors from image and select a charset). But I have no idea how to code in anything :/
I've thought about this a lot over the years since it's such an obviously slow process, would lend itself extremely well to a multi-core and/or GPU accelerated approach, but it's never quite been clear how I'd pull it off - I'm not a particularly knowledgeable or powerful programmer in the directions that would make it easy to try those approaches. I'll let you know if I ever figure anything out.
Some of my old notes about it are on the playscii trello board, which I haven't touched in some time:
https://trello.com/b/BLQBXn5H/playscii
Hi! When I run playscii.py I get
"AttributeError: module 'PIL' has no attribute '__version__'". Is there any way to fix this?
What's the full output text when you try to run? Are you running from the command line? Which OS are you running from?
Hi there!
I love the stylised look you could get by using MRMOTEXT by Mrmo (https://mrmotarius.itch.io/mrmotext) and Playscii - I was wondering if there was any chance of porting the image-to-tile conversion to Unity, maybe as a postFX - as a paid asset?
I've barely scratched the surface of the program and I understand you may not have time for this - if so, could you please point me in the right direction to where in the source code you're doing the conversion? Thanks :)
I definitely don't have any time or energy for doing any Playscii support right now, but here's the code that does the image conversion:
https://heptapod.host/jp-lebreton/playscii/-/blob/branch/default/image_convert.p...
Hey JP. I've only ever used Playscii for image conversion, which has provided endless enjoyment. I knew it was also a powerful drawing tool, and I'm super jazzed to learn today (after randomly catching your talk at Roguelike Celebration) that it's also a game engine (though puzzled to see there aren't more creations floating around made with it). After sketching out a game concept I've had stewing in my head for a bit, I think this is going to be a great fit.
I wanted to know if you'd consider a few QoL type thoughts I had after poking around a bit & looking through the manual. I do have "Learn Python" as a longish-term goal, so perhaps there's a way I can kludge it myself someday, but:
• Is it programmatically possible to pan an Art while the char/color picker's open?
• I'm sure this will improve with time, but a shortcut I could see using a lot is the ability to cycle through tiles. Going back to the picker to find the exact right tile takes a moment like a medium size speed bump. Holding a modifier and scrolling through active tiles to paint would rock hard. I actually hope this is a low-key feature I'm missing.
• Last one, because threes — perhaps a toggle to lock zoom on Art center? Could be a nice default to keep Art in frame at multiple zoom levels.
With news that Adobe's buying Figma, which is neither here nor there, it's real nice to have creative software that works and is fun and good and not terrible in every way. Thanks for your hard work. 👋
Funnily enough, most of this was corrected or worked-around by switching to PC (and a day getting up to speed with the toolset)! Feels like a native app here. :)
Hi! first of all, I love Playscii! it's an amazing piece of software and I'd like to thank you for releasing it for free.
Recently after long use I've hit a roadblock:
When importing folders with images, playscii stops at random images, however the amount of frames corresponding to the number of images that were supposed to be imported are created.
The error is "bad frame" but the problem is that I had imported successfully that folder with images before, and suddenly when trying again, it stops. So if there were a problem with indexing it wouldn't have imported it the first times.
I'm on a Mac running Catalina 10.15.5 using a Intel i9 9900k and an AMD RX580 graphics card.
I just want to emphasise that previously i was able to import hundreds of images on a single folder, and now when I try to import the same folders, it shows the error I mentioned above.
Included is a screenshot of the log.
Tried reinstalled, uninstalling to no avail.
Sadly I'm not code savvy to deploy one of the forks cos they lack of an installer.
Hopefully you could help me out because I'm in the middle of a project that needs to be finished pretty soon.
Thank you once again!
I'd like to see if I can reproduce this on my system. If you feel comfortable sending me the source file(s) you're trying to convert, email me at the address on this page: http://vectorpoem.com/contact.html
I will email you now. I must say it happens with every folder I have with different images. I think it started happening when i upgraded to python 3.11 but I'm not 100% sure.
Before that, the same problem used to happen but the error was differemt: "IndexError: list index out of range"
Oh hey, it looks like you can't read:
You will get zero further support from me.
Fatal error detected: Failed to open script playscii
Please help. I've reinstalled, etc.
i am trying to play this on my macbook, but it wont even open. I dont even get an error, the app just shows up in my doc for 1 second then disappears. i'd like to know how to fix this because the app seems fun :( ?
Mac has become increasingly hard to support given their ongoing efforts to lock down their platform. First question, are you running on one of the new M1/M2 Macs? The build on itch here will definitely not run on those.
I had the same problem on my mac, I'm using Big Sur 11.6. I got it starting with JP's instructions at http://vectorpoem.com/playscii/howto_main.html#runfromsource
I did have to use pip3 instead of pip, like this.
pip3 install pysdl2 pyopengl numpy pillow appdirs pdoc
When I ran this code in terminal, the only library that had a problem was the psydl2. Something about a legacy version and building a wheel. Kinda over my head tbh. Running playscii.py tells me it cant find the mixer.
So I had to download the .dmg file from https://github.com/libsdl-org/SDL_mixer/releases and run it to get the SDL2_mixer.framework folder. I moved this folder to my Macintosh HD / Library / Frameworks.
Now playscii tells me it cant find a document named version. This is what I did to get around it, I don't really know why it works
1 Install Visual Studio Code https://code.visualstudio.com/ and its extension for python at https://marketplace.visualstudio.com/items?itemName=ms-python.python for some reason, using terminal with this process didnt get the same result as VSC
2. find the file named "version" in the playscii source folder.
3. rename it to something else, I renamed mine to version_ so I wound't lose it.
4. select the playscii.py, open with > visual studio code 2. It might tell you not to trust the file, so click manage, then trust. click the run and debug button on the left side bar, then the blue run and debug button. Again it says theres an error, at lines 1080 and 1111. You can press the red square at the top to stop the debug mode.
5. I changed the file I renamed "version_" back to its original name "version"
6 run the playscii.py with visual studio code again, and this time it finds the version file and playscii opens!
Sometimes the version issue returns and I'll have to redo steps 3-5 again before playscii will run.
Hopefully this works for someone else with a mac too!
Hi there, just wondering if you know why I can't save or export anything. The software says that the file has been saved successfully, but there nothing in the art folder. Thanks
Detecting hardware...
CPU: x86_64
GPU: Intel - Mesa Intel(R) HD Graphics 4000 (IVB GT2)
OpenGL detected: 3.1 Mesa 22.0.5
GLSL detected: 1.40
Vertex Array Object support found.
Maximum supported texture size: 16384 x 16384
Detected screen resolution: 128 x 128, window: 102 x 102
Detecting software environment...
OS: Linux-5.18.0-2-amd64-x86_64-with-glibc2.33
Python: 3.10.5 (main, Jun 8 2022, 09:26:22) [GCC 11.3.0] (64bit)
Modules: PySDL2 0.9.11, numpy 1.21.5, PyOpenGL 3.1.6, appdirs 1.4.4, PIL 9.1.1
SDL: 2.0.20 https://github.com/libsdl-org/SDL.git@53dea9830964eee8b5c2a7ee0a65d6e268dc78a1, SDLmixer: 2.0.4
/home/fracshun/Downloads/playscii_source-9.17.1/playscii/playscii.py:429: DeprecationWarning: ANTIALIAS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead.
img = img.resize((32, 32), Image.ANTIALIAS)
I can't reproduce this on my Arch-based system. That warning at the end there shouldn't have anything to do with file saving or exporting, but I did fix it recently, as well as changing how the desktop resolution is detected on Linux so that it doesn't launch (since a recent SDL2 update, maybe?) as a tiny 128x128 window in this commit a few days ago: https://heptapod.host/jp-lebreton/playscii/-/commit/a1e0fae59d0a8c06d045709da109...
If you're running from source you should be able to download the version of playscii.py there on the code repo and just replace your local file with it. But like I said, I'm guessing those fixes are unrelated to the problem you're seeing.
Two questions that might be relevant:
Thanks for getting back to me, just realised I was looking in the wrong folder (I was looking in the downloaded Playscii folder rather than the Home/Documents) lol. I'm running Debian Testing and everything is working fine now. Great program btw!
hi, can i know is there a way to change my save folder to another drive?
Hmm, I don't think so. I'll add that to the feature wishlist.
If you save a file to the normal location and then move it somewhere with your file manager, and then open it from that location, you should be able to work with it as normal.
okay i will try that, thank u for the prompt reply! this program is really cool :)
I need help in using the grab tool it’s pretty, hard to use
The Grab tool doesn't modify the art when you click with it, it just sets the Paint tool's current character, foreground color, and background color to that of the tile you click on. You can get the same effect by having the Paint tool active and simply right-clicking on a tile; the Grab tool is included in the Tool menu more for completeness than anything.
amazing stuff. is there a discord or community? are there tutorials?
Really love this as a game engine.
No discord. The documentation is available from the Help menu as well as on the website: http://vectorpoem.com/playscii/howto_main.html
That documentation covers both Art mode and Game mode. The latter includes writeups of how the example games work, which are included with the program and you can try out on your own.
Aside from one old image -> ASCII conversion howto video, I haven't done any tutorials. What sorts of things would you find a tutorial useful for?
I have some experience designing game systems in a much simpler language, so I think I could knock out some prototypes or demos in Playscii once I get the hang of it.
so far I've been playing around (trial and error), and I watched the youtube video for roguelike celebration
I'm new-ish to python and its conventions, so there's quite a lot I don't know, and a lot that I want to know (I tried Godot with scripting based on Python, and tried my hand at a roguelike and text games in terminal using a python script)
I had a look at the docs and example scripts of the included games, and there's a lot I still don't understand, sadly. The program keeps closing when I try to load a faulty script :P
I saw there are a lot of commands in the docs, but I have no idea how to go about using them, looking them up, etc.,
quite a lot text incoming:For example,
# CAMERA #
How can I handle the camera? How could I script a cutscene? Or if I wanted to swap the camera between multiple targets? Can I see some examples?
- I can use camera_follows_player but don't know how to change camera properties like pan speed or zoom level. Do I need a camera instance?
- I don't understand how i should call focus_object, Actually I didnt see focus_object in the generated docs, but in the "game mode" docs.
# CONROLS#
What is the advantage of Player Class? is there a way to toggle the player behaviour like moving with wasd/arrow keys? I am trying to use a Character to represent player objects instead so I can control multiple objects. Or should I use multiple Player objects?
what If the player has multiple controllable units and can swap between them, or for co-op with 2 sets of controls?
I figured out how to add my own input/ controls to control a Character rather than a player, and experimented with some HUD things okayish. That was a bit simpler.
Orthogonal/Diagonal movement is such that you move faster overall when travelling diagonally. This always bothered me about roguelikes. I like that Dwarf Fortress addressed this. I added my own function to scale x/y values appropriately. Is there an in-built way to handle this? For example, handling radial movement? I should just use trig or pythagorean theorem I guess?
How would I shoot fireballs in 8(etc.,) directions all around the player? How could I shoot a fireball towards the mouse cursor?I assume I would have some class fireball, then in the actor, they would have their own fireball shooting function? or i could create a function outside of the actor that multiple actors could access?
# COLLISION #
I got some basic collision stuff working by looking at the shoot em up. I got it so that I can detect when hitboxes overlap, and to add non-colliding classes to hitboxes. Very useful! I'd also like to wrangle something like Line-Of-Sight and (basic) pathfinding.
How can I attach multiple separate types of hitbox to an actor? I want to use hitboxes to represent ranges like detection, fields, or ranges for various actions, so a single actor might have several distinct hitboxes.
I thought I could use "attach_to" or "attachment_classes" for example, and attached a GameObjectAttachment, and set its collision data, but its hitbox doesnt seem to appear when I view hitboxes. Is this just a definition that I need an instance of? How would I do that?
# SCOPE #
It might be useful to know what the main intended structural paradigms are. I don't know which scope I should be working in for each task.
Main question is: Do I need an instance? for the world, camera, etc., and many other things, and if so how? sorry for noob questions.
What is the purpose of the syntax like this "self.world.HUD" in a Player (from maze)? I can access the HUD (or other things through this)? is this the world class? it can be accessed from anywhere? or for that matter "self.world.app"? what scope or space does this represent? how does it relate to other objects? This is more like the project scope which manages resources?
How would I attach an instance to another instance? Is that impossible? How can I structure my instances with respect to each other to accomplish this? Can I do that from within one of the instances, or should I do this in a room or world or at init or whatever?
# DOCS/DICT #
Is there a listing of every single command in one place? Or a way to search all of them? Where would I look to find focus_object in the docs for example?
I tried to get the __dict__ of members of a class a few times, but I dont know if this will show me all the relevant members/methods and other things, except by trying it on each object.
I think I'm learning slowly and getting ideas for how I might approach things. I might create a special object to initialise the game objects using its update function, and then have it delete itself when it's done, for example?
Or create some projectiles with a lifespan, which is how I've tried to handle particle systems and projectiles previously.
I'd like to eventually get around to programatically creating "sprites" which seems extremely promising! for example visual representations of state changes to tiles or actors. and of course programatically creating maps would be cool.
I like Playscii for its versatility :P you can go from simple micro projects or have something that will scale well as a custom engine for basically ANY type of game, from management sims, to RPGs, to strategy games, to action games. Really incredible stuff.
Maybe I am a bit too ambitious, but Playscii honestly seems like it could handle any concept I can think of, and that's very exciting.
I have a little experience designing game systems in a much simpler game-engine language which doesn't have classes, so a lot of things are new to me while I'm trying to learn Python in general.
Apologies for the very long post and many questions. I also considered messaging you on twitter.
This doesn't cover everything, but Playscii's documentation folder includes docs auto-generated from its own source code, which can also be found online here:
http://vectorpoem.com/playscii/generated/pdoc_toc.html
However it looks like Camera isn't one of the classes I marked for doc generation for this process. If you're wondering about properties like Camera.focus_object, I would say get the project's code by cloning the repo (unless that's already what you did to get Playscii running, ie you're not running the Windows build) so you can search the code and see where all something is referenced. For example, it looks like Camera.focus_object is mainly used in Camera.update to set the camera's position. If you wanted to do custom logic, I'd say leave the camera's focus_object as None and have some other code elsewhere that drives its position every frame, eg from one of your object's update() functions.
GameWorld and Camera are singletons that are intended to live firmly in the "engine" layer, you shouldn't need to subclass either. Though I'll admit now (7 years since I made some of these architectural decisions) that a Camera could arguably be something you create several classes of to drive different behaviors.
There are probably several places in the game mode code that assume a single player character, I have no idea how difficult it would be to add support for multiple players.
GameObjectAttachment was made for things like shadows and effects, so there's probably something about it that doesn't behave well if you try to make it collide with stuff. I would say just make a GameObject subclass, sync its position with the player's (or whatever it's attached to) every update, and then do your custom logic in its started_overlapping() function.
But yeah I would say your main source of truth is going to be the code, and the (hopefully adequate) comments I left in it when I wrote it. Secondary to that, the documentation (included and on the website, same docs) I wrote not too long after writing the code. And tertiarily, me in 2022 when my memory's faded a bit and my brain is occupied with other projects.
Good luck! You're not the first person to make a game with Playscii's game mode but you're probably before the 10th person or so. I apologize in advance for anything that's non-obvious, broken, poorly designed, or annoying for any other reason. :]
thanks for the great reply. i am just someone on my own journey. Playscii seems like such a brilliant tool, to me. I hope I could do it justice, in some way, and not let it down...
It's quite difficult for me to think beyond the paradigm of a main loop, i find, but also quite liberating. The design is so unique.
It really inspires me to think in different ways, whatever they may be.
i think i'm understanding a bit more about the paradigm from looking at the source, but it's rather incomprehensible to me.
what if the player object was driving gameplay by moving through rooms, something like that?
then rooms become more like discretised game segments, whatever that may be, including cut-scenes, controller set-up, whatever...
the player moves from room (game-state) to room... but i still don't know what i'm looking at anywhere i admit.
I'm just going to comb through examples until I grasp it better.
getting an error when launching "failed to execute script playscii" with no other info, currently trying to fix this myself
I've tried reinstalling, restarting and updating windows 10
also tried cloning source, but for some reason it doesn't let me
doesn't look like there's anything of note in the console.log either, Idk if there's any other crash logs or where to find them
```
Playscii v9.17.1
Loading config from C:\Users\theco\AppData\Local\Playscii/playscii.cfg...
Config loaded.
Detecting hardware...
CPU: Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
GPU: NVIDIA Corporation - GeForce GTX 1060 3GB/PCIe/SSE2
OpenGL detected: 4.6.0 NVIDIA 431.07
GLSL detected: 4.60 NVIDIA
Vertex Array Object support found.
Maximum supported texture size: 32768 x 32768
Detected screen resolution: 1920 x 1080, window: 1280 x 720
Detecting software environment...
OS: Windows-10-10.0.19041-SP0
Python: 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:34:34) [MSC v.1928 32 bit (Intel)] (32bit)
Modules: PySDL2 0.9.7, numpy 1.20.3, PyOpenGL 3.1.5, appdirs 1.4.4, PIL 8.2.0
SDL: 2.0.10 hg-12952:bc90ce38f1e2, SDLmixer: 2.0.4
Loaded key binds from C:\Users\theco\AppData\Local\Playscii/binds.cfg
```
oh the code snippet didn't work like I expected, idk how to do that on itch
That "failed to execute script" error is odd, because according to your log Playscii is running, those messages are printed by the program's initialization.
How exactly are you launching Playscii? Are you double clicking playscii.exe, running the exe from the command line, launching it from a shortcut, launching it from the itch.io client app, or something else?
I've done those, but did it again to test: Double click on it, run as administrator, cmd > playscii.exe, clicked taskbar shortcut, tho I don't have it on itch client
none of these seemed to produce a different log
another weird thing is this wasn't my first time using it, in fact I had just about finished a commission using it lol, I'm glad it didn't interfere with that. I didn't even restart my computer in between the crash and the last use, so I have no idea what could have broken it, I even tried clearing the files in appdata, and reinstalling.
Maybe try checking your Windows Defender threat detection history and see if it's preventing or quarantining something the program needs? I'm pretty sure 9.17.1b should be in the clear detection-wise, but sometimes when Defender snipes a program it thinks is bad, it results in weird errors. That's a not-quite-wild guess though.
I'm actually going to release 9.18 tomorrow, which is built with a totally different version of Python, so you could try that:
http://vectorpoem.com/playscii/playscii_win32-9.18.zip
(windows might complain that you're downloading a file from a non-HTTPS site)
sorry i completely forgot to respond, but I tried this some days ago
I was able to get the version you linked running after going through some menus on windows defender, and it worked like normal after that. Weird thing is that the previous one didn't show up for any viruses when i tried it. Even weirder is that today I tried to recheck my findings, and it started working again.
So it's definitely not a problem with the program, and if I had to guess, I would say it had something to do with windows defender, and maybe the machine learning virus detection that originally flagged your new build, but idk.
anyways thanks for the help, I guess virus detection isn't too easy on indie software
Thanks for following up, I'm glad it's working in at least some form. As far as I know Windows Defender doesn't use any ML for virus detection, it relies on signature database files the way most AV programs have for years. But the UI around when it has and hasn't flagged something has always been a bit opaque and not predictable from system to system.
(For anyone else coming across this comment, I didn't end up doing the official 9.18 release then obviously. Still gotta work out some stuff with the mac build.)
Hi JP, thanks for this awesome creation. I just came across this today and was keen to experiment. Downloaded Windows 11 two days ago and am experiencing an issue where the main screen seems to be glitching. Would this be caused by Windows 11, and other than installing Windows 10, are you aware of any way to resolve the issue? Thanks in advance.
Hmm, I've never seen that before. My first guess would be a GPU/driver issue, what kind of GPU are you using? (Nvidia, AMD, or Intel?)
Great software! Q: When I try to import a bitmap image, the browser doesn't show me any image file. I couldn't find a solution for it. (I'm using Win10)
Which format is the bitmap image in? JPG and PNG are the most widely supported ones.
I've tried with both file types. But the images doesn't show up on the select window. I've even tried it in two different PCs, same issue.
Is the image file in a protected system location? Try moving it to a directory where you have full read/write privileges, like your Documents dir.
Moving the files to the Documents system folder solved it. Many thanks for your help. Love your software!
You are awesome! I love this software! Thanks :)
I'm on a MacBook and the app immediately closes when I try to open it. No errors are given. I held control to allow the app to bypass the security warning, but it still doesn't work.
Apologies, I build and test the Mac version on an old 2013 MacBook that's still on like El Capitan or something, so my ability to test different setups is limited.
This person forked Playscii on github at some point and doesn't seem to have made any major changes other than making sure it builds on their system, so you might want to try that version: https://github.com/michael-lazar/playscii
Thank for the reply. I thought it was because I'm using the latest OS. I'll look into the fork.
This one works on the newest version of macOS! Would you consider putting it in the description so that it has easier discoverability? Thanks!
Good call, I'll try to get a note up about that soon.
can animation be exported with the crt filter on?
Is there any possible way to setup a keyboard shortcut up to flip current char horizontal/vertical rather than having to go into the menu each time?
You can toggle off the Paint tool affecting different tile attributes like character and fg/bg color by clicking those labels in the bottom bar, so that it just affects the transform (xform). Set that to Flip X or whatever you like and painting will only flip the characters with no changes to character or color.
Hey, I bought the app believing it would run on macos and it's not the case :P I should have read all the doc before...
So I've tried cloning the repo at heptapod to try and fix the code and it's not working (the clone). I also tried downloading the archives of the repo directly and it did not work either... :'(
Of course, I finished up by finding the source link here!...
Playscii.exe is flagged as a virus
SecureAge APEX Malicious Unsafe
DrWeb Trojan.MulDrop17.8250 FireEye Generic.mg.e89f9c6b51d00cad
Trojan. Muldrop is a harmful Trojan that infects systems via network shares or it comes bundled with downloadable files. ... Muldrop will modify the Windows registry and system settings causing the system to deteriorate in performance. Trojan. Muldrop may also download additional malware and display fake security alerts.
Malwarebytes Malware.AI.4243068513 McAfee Artemis!E89F9C6B51D0
McAfee-GW-Edition Artemis Palo Alto Networks Generic.ml
VBA32 TrojanPSW.Python Zillya Trojan.Agent.Script.1086024
https://itch.io/post/3527522
Describe the steps you're using to run Playscii.
the character set named as speccy.char is from zx80 and zx81, not zx-spectrum - zx-spectrum is ascii7 based (undercase and everything)
Thanks for pointing this out, that character set image is from 8 years ago and I just never checked it. The next release will have an updated version that properly reflects the Spectrum character set, in the meantime you can download the two files here:
https://heptapod.host/jp-lebreton/playscii/-/commit/1bfc3f60f3b91a9f41d13fefaa14...
thanks! :)
Thank you for restoring Windows 7 support in 9.17.1b!
there was a malware packaged within it.........
This is almost certainly a false positive. Can you please be more specific? Which antimalware software are you running, which version of it, and which malware did it report?
malwarebytes, it reported simply as "malware"
BitDefender picked up the false positive, too. Newest version, detected that playscii.exe was infected with Gen:Varient.Mikey.123106.
Malwarebytes still detects the .exe as malware. I have Playscii installed via the itch app (C:\Users\Me\AppData\Roaming\itch\apps\playscii\playscii\playscii.exe). My Malwarebytes version is 4.4.0.
Hey JB, thanks so much for making Playscii - I know it must've taken a huge amount of work to get it to where it is today!
I recently upgraded my Mac to macOS 11 (Big Sur) and Playscii will no longer launch for me :( running from the commandline yields;
Looks like there might be some clues here: https://github.com/pyinstaller/pyinstaller/issues/5107, appears macOS changed how loading dylibs works slightly in Big Sur?
Would be eternally grateful if you could patch this, currently I'm using another computer just for Playscii haha
There might be multiple issues at work there, but one reason I can think of is that I still do Playscii Mac builds with 32-bit Python on macOS Yosemite, and 32-bit stuff stopped being supported with Catalina. I need to research what options are available to me to support newer macOSes.
Will there possibly be any work on this? I'm on m1/big sur and would love to be able use this!
Same. Hand up for M1 Mac version over here.
Hey, did you get a chance to look into this? I'd really love to be able to use this but I'm getting the same error.
Update: no actual progress on this, but here's an issue I have open with the PyInstaller project, which I use to create the Mac builds: https://twitter.com/playscii/status/1470155468395847683
I will let people know in this thread when I get it resolved - no ETA on when that will be unfortunately.
hi JB, you've done an amazing job, really extraordinary.
I work with to Amstrad cpc, and some things went wrong, as the color palette, export file, i've done some output format modifications, and palette too, to had the 3 stranges text modes on cpc.
but my question is :
it's possible to put and image on a layer to draw on other layer, because import converts image to ascii allways. thanks again for your good job
Hi! is there some prerequisite that I should have installed before I can run this? I am on Windows 10, 64bit and I double click the .exe a program opens for a split second and then closes. I have pyhton 2.7 installed on my machine (if this is relevant). Is there any log or something I can provide?
Edit: I run my windows with an external GPU sometimes, I was currently not connected to that external GPU. For some reason I think that windows wanted to run the thing on the external GPU regardless of what I told it. If I uninstalled the drivers for the eGPU it started working. Sorry for the bother.
Edit 2: While I got it running now, egpu being out of the equasion, the same happens when I try to open the preferences window - just a crash. I wanted to change the location where the files are being saved and was searching for a way to do that.
Woop, ok I found the log files:
I'm running this on a i7-8550U processor. Does playscii not support igpus?
There are several kinds of Intel GPU that Playscii definitely supports, but it needs to be capable of at least OpenGL 2.1 and GLSL 1.30.
A reported GL version of 1.1 is extremely old, that possibly implies that it's not even finding your GPU, or that you don't have the right drivers installed. "GDI Generic" reported for the GPU further suggests that there are no GPU drivers installed on the system. I don't have your hardware obviously and I don't know how one would go about getting the right drivers, but that's a starting point if you investigate.
Hey hey! I tried to play with parallax/3d using multiple layers, but I can't seem to export them properly- all exported layer .pngs are the same (flattened document). Maybe I'm doing something wrong :D
Ah, I see. Something must have broken with the way layers are rendered for export. I'll look into this, sorry for the trouble!
No problem and thanks! I've managed to export stuff manually by copying and pasting layers into a new document, a bit tedious but worked fine :)
i have problem, i recently downloaded this tool and when i unzipped it and launched the playcii.exe my computer sayed the api-ms-win-core-pathl1-1-0.dll and c:/win/temp/mei*****/python is missing. how to fix it?
I'm having the same issue. Running Win7 64bit
im running widows 7 ultimate 32 bit
Hi, I'm looking into this. I'm guessing it's because the last Windows build of Playscii was built from my Windows 10 desktop with a version of PyInstaller (the program I use to turn my Python into a runnable Windows EXE) that changed something about its compat status. I no longer have access to any machines running Windows 7. I'm going to search PyInstaller's issue tracker thoroughly and file a ticket with them if I don't find anything.
Obviously Windows 7 is no longer an officially supported-by-MS OS but I'd like to exhaust every other option before I tell everyone Playscii for Windows requires win10.
thnx that you told us, bcuz i thought i will have to download some unknown stuff that may be viruses
i have to ask, can you import custom palettes and fonts?
Sure, see these two sections from the documentation, which is also accessible from within Playscii if you press F1: http://vectorpoem.com/playscii/howto_art.html#customcharsets
Creating a custom character set is a bit trickier than creating a custom palette, but that should explain what's needed.
Could you provide some text info for me? Try running the program so you get that api-ms-win-blahblah.dll error, and when the dialog window is up, press Ctrl-C and Ctrl-V it into notepad and/or a text field post here.
If the error text doesn't appear in a window and you're running from a command line, pasting the same text from there here would do the same.
Thanks!
---------------------------
playscii.exe - System Error
---------------------------
The program can't start because api-ms-win-core-path-l1-1-0.dll is missing from your computer. Try reinstalling the program to fix this problem.
---------------------------
OK
---------------------------
This is from Windows 7 Ultimate 64-bit.
Oh, and a second error after I hit okay on the first one.
---------------------------
Fatal error detected
---------------------------
Error loading Python DLL 'C:\Users\Joe\AppData\Local\Temp\_MEI365282\python39.dll'.
LoadLibrary: The specified module could not be found.
---------------------------
OK
---------------------------
Okay, I'm not sure this will fix the issue, but try this build:
http://vectorpoem.com/playscii/playscii_win32-9.17.1_20210419.zip
It's using the latest version of Python, PyInstaller, etc; I want to make sure I'm using the latest before I file a bug with the PyInstaller project.
If it gives you an error and the error is any different, let me know.
You might also try running playscii.exe from the Windows command line, and see if any meaningful error text results.
Thanks for your patience!
I got the same set of errors. Nothing new from running in the command line either.
FWIW I have both version 9.16.1 AND 9.17.1, and this error only occurs when I try to run 9.17.1. The older version still runs fine.
Error text same as that posted by EspritDeCorpse38.
Running win7 ultimate 64 bit
What happens when you try to export? Any errors in the console? If you're running from Windows, make sure it's to a directory you are allowed to write files to.
Press the tilde key, which on US keyboard layouts has the ` and ~ symbols on it.
Hey, thanks so much for developing such an awesome tool!!!!
Quick question: I somehow seem to have interrupted the importation process on an bitmap image folder.
Seeing as how it takes some time to import, I was wondering if their is some way to resume the process. Or do i have to start over?
Hmm, sorry I don't think there is. However, if you want to only process the images that haven't been done yet, you could maybe move / cut-paste the source files that have already been converted to another folder?
All right, I'll do that next time. Thanks for the quick response. Cheers.
Just tried this for the first time and its rendering with crazy flashing lines and visual issues. I'm on Windows 10, a 64 bit processor which might be the issue.
Running 32 bit from 64 bit Windows shouldn't be an issue. What's your hardware, as reported by Playscii's startup log?
where can i find that?
On Windows, it'll be in a subfolder of your user folder, such as:
c:\Users\[myusername]\AppData\Local\Playscii\
(where [myusername] is your windows user name)
The file is called console.log. I'm specifically interested in the sections that read "Detecting hardware..." and "Detecting software environment...
Here you go!
Detecting hardware...
CPU: Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
GPU: Intel - Intel(R) UHD Graphics 620
OpenGL detected: 4.6.0 - Build 27.20.100.8337
GLSL detected: 4.60 - Build 27.20.100.8337
Vertex Array Object support found.
Maximum supported texture size: 16384 x 16384
Detected screen resolution: 1920 x 1080, window: 1280 x 720
Detecting software environment...
OS: Windows-10-10.0.19041
Python: 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:01:55) [MSC v.1900 32 bit (Intel)] (32bit)
Modules: PySDL2 0.9.7, numpy 1.19.3, PyOpenGL 3.1.5, appdirs 1.4.4, PIL 8.0.1
SDL: 2.0.10 hg-12952:bc90ce38f1e2, SDLmixer: 2.0.4
Thanks for the info. I'm not seeing any obvious problems with that... the Intel UHD 620 GPU seems like fairly recent hardware, and the driver version number seems pretty up to date (from over the summer?) Are any other 3D applications giving you rendering glitches? If you feel comfortable doing so, you might try upgrading your video drivers to the very latest version: https://downloadcenter.intel.com/product/96551/Intel-HD-Graphics-620
did you ever work around this problem?
No, I never got answers to my questions above, and don't have that specific Intel GPU to test on, and haven't seen it on any hardware I own.
I was having the same issue(gtx 1650) i fixed it with this method nvidia control panel>3d settings>manage 3d settings>program settings>playscii(i had to add the program)>vsynch off
hope it helps someone else.
Thanks for your work JP great program!
Oh interesting, thanks for sharing that info, I hope it's useful to others!