Grim Defender is a classic castle defense game, targeting mobile (Android and iOS). The project is started and led by me. The game allows dozens of viable builds (5 weapon types, 4 support module types, 4 spell types, 4 trap types, 30+ upgrades). Level waves are procedurally generated and provide endless gameplay with unique enemies (19+) and challenging bosses (5+). A big issue was the balancing; manually crafting numbers that provide a fair but challenging experience for more than 1000 levels is cumbersome, especially due to the large number of possible builds. As solution, I implemented an AI agent that is able play the game (rule-based agent, k-Means for group detection) and test different parameters and builds; this helped extremely in detecting overpowered/underpowered builds as well as improve the general balance. I used the micro-framework Spark as backend and MongoDB for persistency.
ProcJump is a 2D platform game created as showcase for the 3-step generic framework for procedural game level generation that I proposed earlier. Levels are randomly generated and increase in difficulty as the player progresses. Due to the algorithm's structure, solvability is always guaranteed; this solution can even be shown to the player as an instant replay feature. All assets are free placeholders.
|Development||Java, libGDX, free graphics|
A 3-Step Generic Framework for Procedural Game Level Generation
As my master's thesis research at Ajou University in South Korea, I introduced a novel framework for procedurally generating game levels. Classic PCG for game level generation suffers from a lack of control over desired constraints, such as solvability or controllable difficulty. Thus, instead of going the classic way of generating level geometry that fits desired constraints (and as a consequence usually severely limits the generative expressivity), I focus on creating the player's experience (named playthrough) first and subsequently simulate this playthrough into playable content using the game's actual rules/controls/physics. In this way, as long as the playthrough is not destroyed anymore, solvability can always be guaranteed and the difficulty can be tuned without having to worry about making the level unplayable. Demonstrating the applicability of my framework, I developed a 2D platform game (Mario-like, reactive controls). Basic playthroughs are created using simple heuristics (a minimal set of blocks that form a possible path, alternatively a timeline of player actions), the playthrough simulation is done using an A* and rule-based AI agent that plays and solves the playthrough and thus concludes with a definite solution. Content is created in the last step using Perlin Noise and Cellular Automata as well as obstacles placed. I presented this work at the nucl.ai 2016 conference in Vienna.
|Team||Prof. Gyuhwan Oh (supervisor), Me|
|Development||Java, libGDX, free graphics|
I developed StaBlock (Android, iOS) as part of a small team at Ajou University (Suwon, South Korea) as well as the company Od (Seoul, South Korea). StaBlock is a typical physics-based (Box2D) puzzle game and the successor of Risky Blocks (developed by the same department); a destructible bead has to be protected from other gravity affected objects by smartly placing blocks, ropes or changing attributes out of a given sortiment. The game ships a fully functional level editor as well as an online browser that allows sharing levels with other players. Due to timely problems, we stopped working on the game - it never got released.
|Team||Prof. Gyuhwan Oh (director), Seokkyu-Kim (game design), Minjin Ko (game design), Od - Hana Lee (artist), Me (programmer)|
|Development||Java, libGDX, Box2D, Amazon Web Services|
Evaluation of Event Detection Systems in Twitter
The work done for my master's thesis in computer science at University of Wuerzburg, Germany. Event detection deals with the algorithmic detection of events (e.g., a terrorist attack) from a given set of input documents. I performed an in-depth evaluation of three state-of-the-art event detection algorithms using Twitter as input source. Twitter is especially challenging due to the immense scale of data generated (especially lots of meaningless data), typographical errors, bad grammar, abbreviations and mixed language. To this end, I self-crawled the biggest available and annotated Twitter corpus containing 120 million tweets. I implemented three event detection systems that seemed to be applicable on this scale and ran them against the corpus. Using typical evaluation measures in information retrieval, I was able to provide a detailed and objective comparison.
|Team||Prof. Dr. Andreas Hotho (supervisor), Dipl.-Inf. Martin Becker (supervisor), Me|
|Development||Java, Spring, MongoDB, Twitter4J|