This page lists the core pieces of software that I have substantially contributed to, as well as other (often smaller) contributions to other open-source projects.
Core Software (Research)
I am one of the main developers of the Ludii general game system, alongside several other Ludii team members. I worked on this during my PhD.
- Wrote most AI (search and learning) code.
- Substantial contributions to the core of Ludii’s engine.
- Profiling and optimising for speed and memory across the complete codebase.
- Set up and maintaining Travis CI.
- Set up and maintaining build scripts (Ant).
- Set up automated generation of Ludii Language Reference.
- Tech stack: Java, Python, Git, Travis CI, Ant, Slurm.
- Source code: https://github.com/Ludeme/Ludii/
- Main/sole developer for several subprojects:
- Ludii Example AI (Java)
- Ludii Python AI (Python, Java)
- Ludii C++ AI (C++, Java, Java Native Interface)
- Ludii Tutorials (ReadTheDocs) (source code)
Ludii + Polygames Bridge
I developed a bridge between the Java-based Ludii general game system and the C++/Python-based Polygames framework for deep learning in games.
- Main developer for the bridge.
- Tech stack: Java Native Interface (JNI), C++, CMake, Python, Java, Git, CircleCI.
- Source code: https://github.com/facebookarchive/Polygames/tree/main/src/games/ludii
MaastCTS2 (GVGAI Agent)
I developed the MaastCTS2 agent for General Video Game playing, based on the GVGAI framework. I worked on this for my M.Sc. thesis.
- First place in the 2016 Single-Player GVGAI competition track.
- Second place in the 2016 Two-Player GVGAI competition track.
- Tech stack: Java, Git.
- Source code: https://github.com/dennisSoemers/maastcts2
HTN Planner in Unreal Engine 4
I developed a Hierarchical Task Network (HTN) Planner in Unreal Engine 4. I worked on this for my research internship as a part of my Master in AI.
- Tech stack: Unreal Engine 4, C++, Git
- Source code: https://github.com/DennisSoemers/HTN-Planner/
Other Software (Non-research)
I developed a DLL plugin for The Elder Scrolls V: Skyrim, which exposes additional functionality to the game’s scripting language. This can be used by third-party modders for scripts in their mods. It is built on top of the Skyrim Script Extender and CommonLibSSE-NG, which have reverse-engineered substantial portions of the game’s executable.
- Tech stack: C++, CMake, vcpkg, Git
- Source code: https://github.com/DennisSoemers/PAPER
I developed a DLL plugin for The Elder Scrolls V: Skyrim, which lets users profile scripts written in the game’s Papyrus scripting language by collecting data on all Papyrus function calls in the game. It is built on top of the Skyrim Script Extender and CommonLibSSE-NG, which have reverse-engineered substantial portions of the game’s executable.
- Tech stack: C++, CMake, vcpkg, Git
- Source code: https://github.com/DennisSoemers/PapyrusProfiler
- Used by myself and numerous other people to identify and fix bugs and performance issues in scripts from the official game as well as third-party mods. Examples include:
Other Open-Source Contributions
- Contributed a small change to the performance profile plotting code of rliable (Google Research) to add support for linestyles. (PR#8)
- Contributed a change to how entries are sorted in the legend of alpha-rank plots in OpenSpiel (DeepMind). (PR#112)
HuggingFace Deep RL Class
- Contributed minor clarifications, fixes, and suggestions to the HuggingFace Deep RL Class. (PR#62, Issue#66)
- Jupyter Notebook, Python
- Several contributions to the Multi-MAuS multi-modal authentication simulator.
- My contributions were primarily optimisations and feature engineering.
- Contributed several substantial optimisations to the GVGAI (general video game AI) framework. (PR#18, PR#40, PR#42)