Greg Marsden * Encyclopedia Brown and the Case of the Missing Monkey * Runs on Linux x86 with glib, glut, and gcc Optional Compile Flags -DAWASH: atmospheric wash -DBUMP: camera motion to simulate walking Game Instructions The game is intended to be played with one hand on the mouse and the other on the keyboard. Look and turn functions are mostly controlled by the mouse, however there are keyboard analogs. Keyboard commands: e forward d s f leftturn back rightturn j: screenshot to out.ppm q: quit * esc: toggle overhead map! additionally, [esc] can be used to fast-forward through the intro graphics. Game Objective You are Encyclopedia Brown, hot on the pursuit of a monkey, who happens to be dropping bunches of bananas in his path... as you find each banana, the next clue-banana appears until you have collected all the bananas! Game content All textures and models were original by the author, with inspiration from public domain images. Advanced features Interactive game editor The interactive game editor can be found in editor/, compiled using the Makefile provided, and run as 'urban-editor' The editor outputs a file newmap.map, which can then replace city/city.map in the main directory. Support is provided for multiple undo of streets and objects, as well as interactive placement of streets, trees, lampposts and goals. All of the non-building objects in the game are billboards. Procedural City Generation The streets are interactively specified by the game editor; the buildings are randomly placed on the map-grid. Specifically, for each street, a random building-type is chosen and the building types for that street are normally distributed in a N(n, 1) manner around the chosen number. This provides for consistency in types of districts (commercial vs. residential). The algorithm chooses which streets to populate, and then attempts to fit the buildings around those streets in a random best-fit fashion. BSP based View Frustum Culling After the buildings have been generated, the BSP creation algorithm recursively subdivides the map down to the smallest axis-aligned box that contains a specifiable number of elements. This is then culled for view frustum before the city is displayed.