|
Exploring the linked site a little deeper, there's this gem on making applications more game-like: http://lostgarden.com/Mixing_Games_and_Applications.pdf From what the author explains in the presentation, vim violates the tried-and-true video game mechanics of starting the user with only the most basic functionality. To teach vim using the author's method, one could start by removing all but the most basic commands. Then, these missing commands could be introduced to the user one at a time, in a controlled environment where there is a clear task (eg. jump the cursor to a particular point in the text) that can be measured as success or failure. In the linked presentation, the author draws a comparison to the game Metroid. In the game, the player falls into a deep pit and has to find a way to climb out before being able to continue on. Failure to perform the new skill (accurately timing the character's wall-jumping) is immediately clear because the player will fall back down into the pit. When the user finally times it correctly, he's free from the pit and the brain rewards him with a sense of accomplishment. Back to vim, if you wanted to create such an environment for learning a new command to move the cursor around, you wouldn't want the user to fall back on basic navigation with h, j, k, and l. You could disable these keys temporarily, or leave them but only reward the user if they accomplish the goal using the fewest key-presses possible. Once they "win" this "level" you've designed, those new navigation keys should be considered part of their arsenal of skills for solving future problems. Each skill mastery could be further rewarded by filling in parts of a cheat-sheet (like this one: http://www.viemu.com/vi-vim-cheat-sheet.gif). This can be seen in the section where the author talks about Link to the Past and the picture of the player's item inventory. The vim player's goal could be to "unlock" and master these keyboard skills and ultimately fill in the complete chart. |
http://www2.geog.ucl.ac.uk/~mdisney/teaching/unix/vimtutor