layout | title | author | permalink | menu | item |
---|---|---|---|---|---|
page |
Research, Software, Languages and Tools |
Riemer van Rozen |
/Research/ |
main |
Research and Development |
**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.