Job Title: Research programmer
Purpose: For an NSF-funded project, we are developing a software platform, based on a video game engine, to support both human experiments in visual attention, cognition, and navigation, and allow a virtual animal, or animat, to replicate human performance through neural simulations. We are seeking someone with excellent programming skills, specifically including OpenGL experience. Ideally, this person will also have an interest in human cognitive experimental methods and/or computational modeling.
The “game” we are developing is a first-person 3D exploration game. The player will be placed in a rendered 3D environment (which can be fairly simple, e.g. a plane covered in small objects or a simulated grocery store). The player will navigate through the environment and perform a task such as walking to a goal location, or finding a goal object. Throughout the game, state information such as player location and camera orientation will be recorded and saved to a file. We may also want the game to output specific screenshots for experiments outside the game framework, and collect a variety of data from the environment for subsequent analysis. We will want the ability to interface with eyetracking equipment. We will need to be able to easily manipulate game settings (such as the location of the “goal”, or the identity of the “goal” object) for each playthrough.
In addition to the game itself, we will also need a set of functions to design environments for the game. These functions should allow the user to create a simple space, such as an empty plane or large room, populate it with objects, and assign specific consequences or events to objects. Objects should be placed in random locations which obey certain rules. For example, we might want to populate an environment with blue cubes that appear only on the ground (but in random locations), red cubes which only float in the sky, and green cubes, which only appear on the ground within 5 feet of a blue cube. The environment design interface should allow us to specify these types of rules and swap in different types of objects for different environments (eg, chairs and tables instead of cubes).
This needs to run on multiple platforms (Including, ideally, as a web app).
It should be fun (well…maybe not World of Warcraft) but appealing.
It should look good!
Duties: The following includes a partial list of duties for the position:
- Extend existing JMonkeyEngine3-based 3D environment to support more realistic worlds.
- Build a user interface functions that would allow for complete control over the world and parameters.
- Assist in the design of 3D worlds that serve the functions required both by computational simulation and psychophysical experiments.
- Design data collection from experiments and simulations.
Skills/Qualifications: The ideal candidate should hold at least a Bachelor’s degree in computer science or other relevant field. The candidate should have good familiarity with OpenGL programming, JAVA coding experience beyond introductory coursework, and the ability to work in a team. Previous JMonkeyEngine3 experience is desirable and experience with any other game engine is a plus. The candidate should have excellent communication skills and be able to work in a team that includes both scientific researchers, professors, and other technical programmers. An interest in human cognitive experimental methods and/or computational modeling is also a plus.