Show HN: A puzzle game inspired by functional programming, written in PureScript
david-peter.de
david-peter.de
It find it by far the best AltJS implementation currently available.
Have a look at the code implementing the transformer functions, so clean!
https://github.com/sharkdp/cube-composer/blob/master/src/Tra...
Nice demo!
If I did not need that interop I go for PureScript in a heartbeat. CoffeeScript/TypeScript/ES6/Opal, they all don't come close to what PureScript delivers.
GitHub link: https://github.com/sharkdp/cube-composer
Is there a way to normalize the program into a text string and also convert text string back into the program. This would allow for easy cut/paste sharing between users (including HN comments).
This feedback is based on having completed up to 1.2 only.
There is no import/export available right now, but you can take a look at the developer console for an output line like
Program: ["rejectO","replaceYbyBY","replaceBbyOO"]
I definitely like the idea, however. It should be quite simple to implement it. Basically, the 'code' right now is just the compositions of different 'transformers'. In pseudo-PureScript:
rejectO >>> replaceYbyBY >>> replaceBbyOO
* On the right have the words "Goal" on top of the image, maybe put a box around it or something to separate it from the other images that appear.
* For the first level you need a "pit of success". Limit the available functions to only the one that works.
* The first few levels need to introduce and teach the user how to use each and every function separately. Say for 12 levels the first three teach/introduce a concept, the next 6 are actual simple/medium levels and the final 3 are the more difficult (but not impossible) levels before repeating and introducing a new concept.
* When you solve it don't put the message up top in little text, but next to the program and bigger bolder so the user knows. Ideally with some sort of css transition.
* When you solve it put a link to "Play next level" or automatically go to the next level after a short animation or something
* Only expose levels after you have beat them.
* After doing a function rather than instantly showing the next cube put a .5 second opacity transition (or something) so the user will notice what they did.
Lastly, but most importantly play test in person. Show someone your game, but don't say a single word. Write down everything they do wrong and debate how you can improve it and try again. Do not give them advice on what to do. If they can't figure it out neither will a ton of random people on the internet (I didn't the first time I saw the game and just closed it as I didn't realize I had to drag it over and I was on a tablet and saw the 'R' command and figure there was other keyboard only commands.)
Remember it is not fun to lose. Hard is fun, but you want to guild the user to have fun, be challenged, and build on the game concepts you have taught them. It isn't fun to give up because you have no clue what to do.
If you build in a way that users can create puzzles and share them (say by putting the user generated level in the url) the game would have more life as users spread the word by showing off their creations.
Please, no animation. Instantaneous feedback is perfect as it is. My 2cts.
Because you would rapidly move them around changing it to be 0.05 or something just slow enough so that your brain would notice movement above, but not slow enough to impede in trying new things.
▥ ↦ ▥ ▧
could instead be: ▧
▥ ↦ ▥
I hope that makes sense!Also, the dropdown menu for levels could be replaced by something more informational (perhaps a tree control?), that indicated e.g. by color which levels have already been solved.
I think I will first try to display the two R blocks on top of each other in the name of the functions. I will keep your suggestion in mind, though.
Otherwise cool/fun game concept, although like others have mentioned, stackEqual is a bit confusing as to what it does.
On the "Fort" level, the map [blue][white]->[blue] removes the [blue] block, rather than the [white]. This is a different behavior than the map [red][red]->[blue], which converts two [red] into one [blue].
Thanks for the feedback!
The interface is really fun though, and the blocks look nice. Only the "Solved!" text is quite small and not easy to spot.
The columns have to be the same pattern exactly (same height, same colours)
I should definitely add a better description somewhere!
Very very challenging