February 2, 2000
Pipe Dream is a classic arcade game that has more recently been adapted for PC, Macintosh, and other platforms by various authors. The implementations of the benchmark created using various toolkits should be very similar to the existing versions. In this game, the user (player) attempts to build a pipe system from pieces of pipe that become available randomly. Water begins to flow at the preset source and through the pipe system after a set amount of building time has elapsed. The player earns points depending on the length of piping the water flows through before reaching the end of a disconnected piece of pipe.
This game is representative of the Direct Manipulation/Graphical User Interface style which employs a visual display and visual representations of objects with which the user can directly interact through a main input device, typically the mouse pointer.
This should be a good benchmark for the GUI style because:
Unfortunately, it fails to address the following features of the GUI style:
The benchmark proposed will allow for small variations across platforms (e.g. size, color), but most features should be consistent across versions. There will be 7 pieces of pipe which can be used, four with a 90 degree bend, one vertical, one horizontal, and one with a horizontal and a vertical which are joined in a plus shape (see attached conceptual representation of pieces). The boards will consist of a rectangular grid layout, 9 x 7 squares, and an input pipe piece at a random location on the border of the grid. There will be a pull-down menu at some convenient corner of the display with such options as Start new game, Quit, and Set preferences. The preference selection will be a simple dialog box in which the user will select a value for the length of time to elapse before water begins to flow (default 30 seconds), and for the speed of the water flow (default normal). The water flow will consist in painting and lengthening a rectangle over the empty pipe (perhaps with some exceptions due to corner negotiation, or with the alteration of loading different GIF images to indicate the water flow, instead of painting). Normal speed will mean the rectangle grows by ¼ the length of a tile in 1 second (actually it will grow in increments approximately 1/8 the length of a tile, so 1 extension every half-second). The options slow, fast, and perhaps very fast will allow the user to halve, double, or triple this rate.
Each version should allow for snapping of the pipe pieces into the grid, depending on the position to which the piece is dragged. Semantic feedback will be provided in these actions by a color change of the destination cell in the grid, perhaps from gray to black. The play will allow for overtiling of pieces already placed, unless the piece already present has water flowing through it. The game will display up to 4 pieces at a time before needing to place them (perhaps add preference to display fewer, to make the game harder), and when the user clicks on the next piece to drag it on the board the following piece will replace that one, the others will advance in the waiting queue, and a new piece will be added at the end of the display of upcoming pieces. There will be points assigned thus: 50 points for each tile connected (each tile water flows through), 100 points for using a plus-shaped tile in both directions, 200 points for completing a board with a minimum of 15 tiles completed, and 75 points for overtiling any cell on the grid. A round/board will end when water flows out of the connected pipe system. If the minimum is met, the user will proceed to the next level, otherwise the game will end.
Toolkit features this benchmark should test: