As part of my graduate research, I have used manual tracking games (based on the work of previous researchers) to test the control behavior of human operators, and how their behavior changes as the dynamics of the cursor change.
Programming these games in MATLAB is fun. I am posting a simple example game to serve as a reference in case anyone wants to make something similar.
There is a list of settings near the top of the function. Feel free to modify settings and observe their effect on the game. If things get messy, the default settings are given immediately after the NOTES section.
My code demonstrates a few techniques that I have found useful, including:
1) Enforcing a fixed frame rate with a MATLAB timer object
2) Using MATLAB's Control System Toolbox to get a discrete state-space model from a transfer function, and using the model to move the cursor based on joystick input (see "Other requirements" below)
3) Creating a seemingly-random signal from a sum of sine waves with random relative phase
4) Defining a small set of global structs that make it easy to share variables across functions, and make it obvious what kind of information is stored in each variable.
These techniques could be used for designing a variety of games, not just tracking games.
Pointed out that joystick mex files are free.
Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.