Research, Software, Languages and Tools
Rascal. Metaprogramming. In my work, I often quickly need a software prototype or a proof of concept. Typically, I create programming languages, techniques and tools for developing, maintaining and improving source code. My solutions are metaprograms, programs that work on other programs, and that can analyze or generate parts of systems. I apply Rascal, a metaprogramming language and language workbench with a concise notation and specialized features. For me, Rascal is the ideal programming environment. To Rascal.
Languages of Games and Play. Survey. Digital games are a powerful means for creating enticing, beautiful, educational, and often highly addictive interactive experiences that impact the lives of billions of players worldwide. My work explores what informs the design and construction of good games to learn how to speed up game development. In particular, I study to what extent languages, notations, patterns, and tools, can offer experts theoretical foundations, systematic techniques, and practical solutions they need to raise their productivity and improve the quality of games and play. To find out, I have created a systematic map that provides an overview of the state of the art. Read more.
Lua AiR. Source code analysis – empirical studies. Lua is a general purpose script language created by Ierusalimschy, de Figueiredo and Celes. Powerful and easy to apply, its dynamic typing and embedding in C or C++ make its sources hard to analyze. To tackle this challenge, I have created a framework for static analysis called Lua Analysis in Rascal (Lua AiR). Read more.
Micro-Machinations. Automated game design, live programming. Machinations is a visual design aid by Dormans for simulating game econnomies that foregrounds elemental feedback loops. However, Machinations is not a programming language and it does not accurately predict the behavior of fully developed software. Micro-Machinations is a toolset that addresses this challenge. Read more.
Vie. Automated game design, live programming, game-based learning. Game designers improve player experiences by prototyping and playtesting a game’s mechanisms in rapid design iterations. However, during development this process slows down because the rules become fixed in source code. Vie is a visual live programming environment where every change to a running prototype has an immediate effect. As a result, Vie can also be used for teaching programming and game-based learning. Read more.
Procedual Level Generation. Automated Game Design. Procedural level generation empowers level designers with tools for generating game levels. However, generating levels comes at the cost of level quality. We investigate how to create better generators and debuggers based on rewrite rules and blueprints. We study Ludoscope, a generator that has been successfully applied in the Unexplored series. Read more.
CardScript. Automated game design. Card game creation is a powerful tool for game design. Using playing cards, game designers can rapidly prototype and iteratively playtest a game’s core mechanisms to explore alternatives and improve the gameplay. However, this process is time-consuming, imprecise and hard to steer and focus. CardScript is an initiative to tackle these challenges with unified game design language and toolset. Read more.
Analysis and Generation of PuzzleScript. Automated game design, empirical studies. PuzzleScript is a programming language and online game engine with an active user community. Created by Lavelle [1], this surprisingly concise and powerful notation expresses mechanisms using rewrite rules that work on tile maps. PuzzleScript has been used to recreate many classic games such as Sokoban. The availability of the soure code of these games provides an opportunity for empirical studies. Read more.
Cascade. Language technology, live programming. Live programming brings code to life with immediate and continuous feedback. To enjoy its benefits, programmers need powerful languages and live programming environments for understanding the effects of code modifications on running programs. I have created enabling technology for creating these languages. Cascade is a meta-language for expressing DSLs with input and feedback mechanisms that drive live programming. Read more.
Visual Programming Environments. Language technology, live programming. Programming grants individuals the capability to design, create, and bring ideas to life. To improve their skills, programmers require powerful languages and programming environments for understanding the impact of gradual code changes. We investigate how modern game engine technology, Godot in particular, can be leveraged for creating visual input and feedback mechanisms that drive exploratory and live programming. Read more.