~akkartik/sokoban.love

Client for playing 300 publicly available Sokoban puzzles on a computer or phone.
7b87a036 — Kartik K. Agaram 29 days ago
Merge template-carousel-mobile
665e80f7 — Kartik K. Agaram 29 days ago
update list of forks
5ea87b85 — Kartik K. Agaram 29 days ago
stop using nativefs for file location

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~akkartik/sokoban.love
read/write
git@git.sr.ht:~akkartik/sokoban.love

You can also use your local clone with git send-email.

#Sokoban

screenshot

A cross-platform, hackable app for playing 300 publicly available Sokoban puzzles. Runs on Windows, Mac, Linux, Android and iOS. You can edit the game and UI right on your device.

To modify the editing environment itself or repurpose it for other apps, open it on a desktop environment. The environment itself can be modified as it runs.

In early release; please report issues, particularly with usability or accessibility.

This repo is an example of a Freewheeling App, designed above all to be easy to run, easy to modify and easy to share.

#Getting started

Install LÖVE. It's just a 5MB download, open-source and extremely well-behaved.

Run the app using LÖVE.

#Hacking

You can edit the game and UI right on your device. However, there are some gotchas to be aware of.

  • If you upgrade LÖVE you lose all your local apps and their saved settings. This includes code changes. It's hard to get code changes out due to mobile restrictions. I can't come up with an alternative to copy-paste. This imposes a strict limit on the number of changes I'm willing to make to a large app on my phone.

  • If you upgrade such apps after making local changes to them, you might see strange errors. Local changes are written to an overlay directory, whereas upgrades modify the app in place. The two locations create lots of opportunity for conflicts to arise.

    To mitigate this issue, such apps by default list local changes in the output editor every time they run. That will hopefully act as a reminder. There's also some helpers for deleting local changes in the 'scratch' page.

You can also modify the editing environment itself, or repurpose it for a different app entirely, live as it runs. This requires running it on a computer, but is much more reliable. Download the driver app. Here's an example session showing the driver (left window) editing a different app (right window containing yellow text):

making changes without restarting the app

Some reference documentation on how to create your own apps.

If the app being modified by the driver lives in a .love file, your changes will go into the save directory. If it lives in a directory (like this repo), your changes will go straight into the same directory.

#Keyboard shortcuts

Within the editor widget:

  • ctrl+f to find patterns within a file
  • ctrl+c to copy, ctrl+x to cut, ctrl+v to paste
  • ctrl+z to undo, ctrl+y to redo
  • ctrl+= to zoom in, ctrl+- to zoom out, ctrl+0 to reset zoom
  • alt+right/alt+left to jump to the next/previous word, respectively
  • mouse drag or shift + movement to select text, ctrl+a to select all

Exclusively tested so far with a US keyboard layout. If you use a different layout, please let me know if things worked, or if you found anything amiss: http://akkartik.name/contact

#Known issues

  • No support yet for Unicode graphemes spanning multiple codepoints.

  • No support yet for right-to-left languages.

  • Undo/redo may be sluggish in editor windows containing large files. Large files may grow sluggish in other ways.

  • If you kill the process, say by force-quitting because things things get sluggish, you can lose data.

  • Can't scroll while selecting text with mouse.

  • Some colors can't be customized yet.

#Contributors

Many thanks to Michal Zalewski for creating the sprites and curating all the puzzles.

#Mirrors and Forks

This repo is a fork of lines.love, an editor for plain text where you can also seamlessly insert line drawings. Its immediate upstream is the template repo for mobile freewheeling apps. Updates to it can be downloaded from the following mirrors:

Further forks are encouraged. If you show me your fork, I'll link to it here.

#Feedback

Most appreciated.