Creativity Support Tools for Game Design
Controllable Procedural Content Generation for Level Design
Creative work is at a crossroads where increasingly sophisticated methods are being developed to automate design tasks. However, such efforts have thus far struggled with maintaining strong formal guarantees, operating in domains where little data is available, and appropriate accreditation of labor. Video games provide an interesting domain for creative artificial intelligence (AI) to tackle, as it exemplifies all the aforementioned challenges. It is a multi-discipline art-form that sits at the intersection of human creative expression and technological progress. As such, creative AI for games runs the gamut from writing, to music generation, to visual art. Moreover, the glue that ties it all together, game design, is an involved emerging practice which remains largely disconnected from the AI literature. Capturing the difficult task of game design in a computational manner is still out of reach. The quintessential example that is well trodden in academic research, level design, has yet to be fully captured by either data-driven AI techniques or strong computational formalisms. Current techniques still struggle to generate levels in a manner that resembles those made by a human designer.
This line of work in creativity support tool research is focused on providing designers the appropriate tools for engaging with creative AI systems in a manner that meets their needs. Specifically focusing on explainable and adjustable systems that permit the triadic interaction seen in Figure 1. In that designers ought to be able to specify the boundaries of the design space they wish to explore, have tools to do said exploration and be able to adjust the space of content they generate via declarative constraints or example selection. Thus far, we have explored controlling graph grammars via example selection, specifying the generative space of an AI content generation system via declarative constraints and compiling the generative space into an efficient data-structure known as tractable circuits.
EvolvingBehavior: Participatory Tool Development for Game NPC Behavior
In the EvolvingBehavior project, we are using participatory methods to develop a creativity support tool for game designers to iteratively build game non-player character (NPC) behavior. EvolvingBehavior is a plugin for Unreal Engine, a popular game engine. Using the tool, game developers can flexibly generate, explore, and adjust behavior in the form of "behavior trees," a common architecture for controlling NPCs in Unreal (as well as other game engines). This project asks: how can we enable game designers to control, provide goals to, and iteratively guide a creativity support tool for character behavior design? And how can a participatory research approach shift power to practitioners throughout this process?
This project shows how iterative, controllable, and interpretable methods are necessary for designers to guide creativity support tools towards their design goals, challenging current trends in machine learning which focus on black-box methods that do not have these properties. In an initial paper, published at Foundations of Digital Games (FDG) 2021, we explored how game designers talk about their requirements for controlling and working with this type of tool. In a follow-up paper at FDG 2022, we demonstrated that EvolvingBehavior, using a technique called genetic programming, is capable of generating interpretable behavior trees that are meaningfully closer to hand-designed behavior than to randomly-generated trees. Next, through a long-term co-design collaboration with an independent game designer and participatory design discussions with several other game designers, we are working to improve the tool to better meet the workflows and needs of devs making solo and small-team game projects.
You can learn more, read the papers, and download the open-source tool and code at https://evolvingbehavior.npc.codes.