Coding

Personal projects

Here's a list of code projects I created:

Remote TShock Manager

Language: C++
Licence: GNU GPLv3
Repository: williamjcm/wxRemoteTShockManager

Back when I played Terraria a lot, in 2016/2017, I had the idea to make this GUI app using wxWidgets to help manage TShock servers remotely using TShock's REST API. At first, I wanted to make a simple GUI frontend to the console app, but I didn't know how to use I/O redirection back then (and to be honest, I'm not much better at it today 😅), so I settled with the REST API way.

I stopped maintaining it, so it's probably broken in some way by now.

MAS Persistent Manager

Language: C++
Licence: GNU GPLv3
Repository: williamjcm/wxMASPersistentManager

In January of 2018, I discovered a visual novel called Doki Doki Literature Club!, and not long after, a mod for it called Monika After Story. This app is basically a save manager for Monika After Story.

This project is also unmaintained, so it will not be able to manage potential new save data introduced by the mod since the last commit I did.

2D engine and client for Project Monika

Languages: C++, Python
Licence: Proprietary

In June of 2018, I joined the Project Monika team as a coder. In September of that same year, I was assigned on the project's 2D engine/client.

During initial planning of the app, I discovered a C++ graphics library called Magnum, which allowed me to use OpenGL, GLSL, SDL2, and Dear ImGui in a mostly painless way.

The current iteration of the client doesn't use SDL2 and Dear ImGui for the windowing/GUI, but wxWidgets instead.

M.A.S.S. Builder Save Tool (formerly wxMASSManager)

Language: C++
Licence: GNU GPLv3
Repository: https://williamjcm.ovh/git/williamjcm/wxMASSManager

In May of 2019, I found out about a third-person mecha action game called M.A.S.S. Builder, and backed its Kickstarter campaign.

One of the most common things that were suggested on the official Discord guild after the beginning of the early access campaign in September of 2019, was a way to share builds with other players, so I decided to make an app that would allow players to import and export those builds.

Later on, it evolved into a save viewer and editor.

Rewrite of M.A.S.S. Builder Save Tool

Language: C++
Licence: GNU GPLv3
Download and basic documentation: here
Repository: https://williamjcm.ovh/git/williamjcm/MassBuilderSaveTool

As I worked on what would be version 2.4 of the previous project, I hit limitations in wxWidgets that were a pain to work around. As a result, I'm now working on a rewrite, powered by Magnum, SDL2, and ImGui.

jcm-pagination

Language: Python
Licence: MIT
Documentation: here
Repository: https://williamjcm.ovh/git/williamjcm/jcm-pagination

As I was working on this very website, I wanted to have a pagination system for certain pages, but without creating more overrides for the m.css blog templates.

The pages for my CM3D2 and Koikatsu poses are examples of such pages, but before the day I'm writing this (22/08/2020), I made the pagination by hand, which could quickly become maintenance Hell.

So, I decided to finally create an easy-to-use reST directive that would generate it automagically instead.

Like m.css itself, the plugin is available under the terms of the permissive MIT licence.

Projects I contributed to

Magnum

Language: C++
Licence: MIT
Official website: https://magnum.graphics

Magnum is a modular C++ library that can be used to, among others, create engines for use in games and dataviz. It can not only help create and manage OpenGL objects, but also handle audio through OpenAL, render text, manage scenes, import assets, and much more.

My contributions include making PKGBUILD files for MSYS2, adding some APIs to the audio, SDL2, GLFW, and ImGui modules, and creating a wxWidgets-based bootstrap project.