Applications in game development for programming language theory and AI
Modern game development is highly iterative. Iteration is usually discussed in terms of a team completing design iterations, but can also be considered at the level of an individual developer attempting to complete a task, or experimenting with some ideas. At this level, the feedback loop provided by the tool becomes critical. Programming environments in particular often have a very poor feedback loop.
Programming feedback can be thought of in terms of how quickly and seamlessly the user is able to observe the results of their work. This process is usually plagued with manual tasks and long pauses. It is common that a user will need to recompile, relaunch their program, and then manually recreate whatever state is required to observe the behaviour that they are working on. Frameworks like Elm, React and Vuejs are establishing a new norm of automatic hot-reloading with state preservation. These systems represent a branch of programming language research that is strongly focused on developer experience. In order to improve upon this work for game development, we must overcome the unique challenges that game development entails. Although the systems mentioned are all quite recent, there is a rich vein of research to draw on, which can be traced through dataflow programming, Smalltalk, Erlang, functional-reactive programming, Lisp and more.
Predictive completions are considered by many to be a natural next-step in the evolution of live programming environments. An AI programming assistant would propose program fragments as completions or alternatives. The agent may seek to anticipate the user’s intent, or to provide creative suggestions. There is much relevant research in the fields of program synthesis, inductive logic programming, machine learning and genetic programming. One significant problem is how to smoothly and safely integrate a system like this into the user’s workflow. Many of the properties useful for safely enabling live programming features, such as isolation of side-effects, will also permit an AI agent to safely generate and execute code.
Andy graduated from Imperial College London with an MEng in Computing in 2011. Following this he worked on game engine tools and technology at a startup called Fen Research, and then as a senior developer at a software consulting firm called LShift. In 2016 he spent six months working as a Research Associate in the Computational Creativity group at Goldsmiths, before starting his PhD.