]> git.gir.st - VIper.git/blob - README.md
Bonus items: shorten/elongate snake, speed up/down
[VIper.git] / README.md
1 # VIIper - a Snake Clone for Unicode-compatible Terminals
2
3 TODO: find a better name
4
5 ## Dependencies
6
7 - A VTE based terminal (like GNOME Terminal and a whole bunch of others)
8 - Google Noto's Color Emoji Font (Fedora: `google-noto-emoji-color-fonts.noarch`)
9
10 ## Keybindings
11
12 hjkl or cursor keys move the snake.
13 r to restart, p to pause, q to quit.
14
15 ## TODO
16
17 - DONE base game: fixed field size, fixed speed
18 - DONE food (unicode)
19 - DONE put 'sprites' into `schemes.h`
20 - DONE snake elongates
21 - DONE unicode chars
22 - DONE input buffer (so fast 180° turns get executed)
23 - DONE only redraw changing parts of the screen
24 - DONE input out of whack when stopping (^Z) and resuming
25 - DONE keybindings for restart, pause, redraw
26 - DONE on dying: show end screen, allow restarting
27 - DONE score, increasing speed, ~~timer~~
28 - bonus/special items: slower snake, shorter snake, etc.
29 - decaying points? (more points the faster you get the food)
30 - wall-wrap-around mode?
31 - fix all `grep -n TODO viiper.c`
32
33 ## Notes
34
35 ### terminal compat
36
37 to display emojis, we need a terminal that can handle a color emoji font (no
38 shit, sherlock). mlterm, xterm and urxvt didn't work in my tests (mlterm might
39 work if compiled correctly, the other two use bitmap fonts and i don't think
40 there are any w/ emoji support).
41 i intend to put bonus items in the game that will only be visible for a short
42 time. when they get near the end of their life, SGI-5 (blink) will make them
43 blink. this is supported in gnome-term 3.28 (vte 0.52) which is supplied with
44 fedora 28. [bug report](https://bugzilla.gnome.org/show_bug.cgi?id=579964)
45 for KDE's konsole you'll need [this
46 fontconfig](https://gist.github.com/IgnoredAmbience/7c99b6cf9a8b73c9312a71d1209d9bbb)
47 and follow the steps inside.
48
49
50 ### strange behaviour of SIGALRM
51
52 I'm using SIGALRM to advance the snake's position. during some refactoring I
53 noticed that when the signal handler returns, a STX (ASCII 0x02) byte gets
54 pushed onto stdin.
Imprint / Impressum