Last weekend, my brother and I participated in our 11th Global Game Jam together and created a game called Macca Masquerade! In this strategy RPG, Kali the assassin is sent on a mission to infiltrate the Macca Masquerade and find the elusive cult leader: Maester Beckon. While at the masquerade, she must challenge the attendees to duels so she can unmask them and find their true identities.
This GGJ was a little bit different than normal. On Thursday, I found out there were some complications with a previous medical procedure I had done, so I had to have an unexpected surgery on Friday. Luckily recovery went well and didn't interfere quite as much as I originally anticipated, but it did mean that I wasn't able to contribute quite as much to this project as I usually do. I mostly focused on the art and some of the lighter weight programming aspects while my brother worked on the bulk of the more complex programming portions.
But with that, we did create a finished demo of the project!
💾 Download and play the game here:
Sunday - Monday: Project Setup, Plugin Research, & Concepts
So I started by setting up the GitHub project, making the Google Doc, and making a blank RPG Maker project file using last year's plugins.
I'm part of Archeia's beta test group for a new tool she's working on, so I was planning to use this GGJ as an opportunity to test some of the menu features out. I spent a little time beforehand just playing around in a debug map and using some of last year's GGJ assets so I could get a feel for what was available before actually implementing anything into this GGJ project. I decided to just use this test project as our RPG Maker project file for the final version since the plugins were already setup.
Then I was thinking about if we wanted to make this into a multiplayer game or have any multiplayer features at all. So I started to look into some plugins that could allow you to use multiple controllers because my previous solution from when I was looking into it for The Note Competition Remake was keyboard-specific. So I looked back to see if the paid commercial use one would work. It mostly did, other than some issues getting the player 2 to be able to interact with dialogue boxes. It also wasn't compatible with the controller rebinding screen in VisuStella.
So I ended up trying out a much lighter weight option, the MultiPad plugin by szatkus, and it was having a weird drifting issue that would move events without me pressing any buttons. I found out it was the Z Control feature, so once I turned that off, it worked really well! I also added some events that could use regions to check if the event overlapped and is facing the direction of the event to interact with, and if they are, then it plays a common event (e.g., dialogue). So I had a lot of success with this one! We later found out during development that it was interfering with spawning events for the VisuStella EventsMoveCore though, so we didn't actually integrate it in the end.
Also, when the theme was announced (mask), I brainstormed some ideas. We were leaning towards either a game about Ya Cipo doing super hero styled missions/mini-games to save people or Kali attending a masquerade and having to challenge the other attendees to collect their masks. So after brainstorming these ideas, I sketched out some thumbnails for both of these ideas.
Then we were thinking about what the battle/challenges would be and thought a Tactics battle system could be good. We almost did that last year but then it turned into its own kind of card battler, so we thought this might be the time to actually do it. I was also thinking it might be fun to include the second player in this so that each player could control one character, and you could have 2 characters on your team. So I sketched a few more thumbnails of some ideas for Tactics style battles.
Then I was figuring out what a battle layout could look like and thinking about whether we wanted this to be a classic Tactics style battle system, or something different like last year was. I decided to measure it out in Photoshop and use similar ideas from last year's GGJ project. I wasn't sure if it was starting to look too similar though since I did want this to be something different.
We were thinking of probably avoiding isometric style too much because it wouldn't fit the grid system as smoothly in RPG Maker and might make the art a little more involved than we would have time for in the short GGJ time.
Tuesday: Brainstorming Session
This year, we ended up doing our brainstorming session a day earlier, due to how our schedules lined up. We mostly made sure everything was set up and ready to start for the weekend and bounced some ideas around. We decided to go with the masquerade idea, but we had a lot of different directions for where the ideas would go. There were a few ideas we had pretty clear visions on, but for the overall art direction, we didn't quite know what we wanted to go with yet.
So I decided to do some digital concepts to try and figure some things out. I started with the title concept idea I wanted to make it look a little different than the usual where we wait until the end to think about it.
Then I brought some of the stat ideas we were having about the battles into this mask menu concept.
I also quickly sketched the defeated screen for the characters with a visual I had.
We were talking about making some kind of character select screen with the characters you could battle against. So I started by drawing the characters that we decided upon and arranged in a way that they could all be on the screen at once. I made the quick little UI at the bottom too for how to access the different menus.
And then I edited this screen to fit the character dialogue in. I'm not sure if the back characters would be too distracting if they show up in the front, but this is an idea. Maybe we'll make a different background scene, but we'll see!
And then I also started a battle stats sheet just to figure out some of the options for some of the attacks that the characters could do. Mainly just some basic attacks and actions that I thought of.
So that was it for the initial brainstorming night! I wasn't too sure about the idea at this point because there were still a lot of unknown pieces in terms of art direction. That's usually an area we solidify on this night, so I was a little worried about having enough time to get all of the art done that we wanted, on top of some of the ambitious ideas we had for the gameplay.
Wednesday - Friday: Resources & Art
After brainstorming, I started by finding some royalty free music for some of the main parts we would need music for. This was a pretty low-key task that I kinda wanted to do upfront so I could listen to the music while working on the game to get inspired to work on it during the weekend.
On Thursday, I found out about my unexpected surgery that I'd need to have done on Friday. I was really upset about the timing of it all because I was really worried it would affect how much time I could dedicate to GGJ because it would mean recovery time dipping into it.
So to make up for it, I decided to just dive in and start the art Thursday night, because I wouldn't have much time on Friday really to dedicate to this project. So I started by drawing our main character Kali and her mask. Then I drew all of the masks to fit onto her face because she can switch between them.
Then I drew a few of the other characters, fitting them behind the masks that they'll wear. I started with the ones who were more important to the game first.
Then I made a dialogue box, exported all of them as usable images, and made a little progression animation for the dialogue. I imported them into RPG Maker to make sure it all worked.
Then I got some of the other visual elements that I usually save for the end, including the save and options screen backgrounds and the game icon.
During all of this, my brother was working on the battle system and the overall movements. I ended up sleeping a lot of the day on Friday, so anything that happened on Friday was really just at night.Saturday: Game Dev & Final Art
I started the day on Saturday in RPG Maker with the challenger selection screen. I made the characters and menu icons clickable and then set them up for battles.
When you defeat a character, I wanted to make an animation so it shows their mask breaking. So I started with Snull and then streamlined the code so it would work with any character, after I exported the assets.
Then I finalized lining up the dialogue properly with all of the plugins. I had to remove Archeia's GSAP plugin unfortunately because it was just causing some loading issues that I didn't want in the final game. So that meant manually lining everything up without the nice drag-and-drop visuals anymore. Then I also streamlined it to show the mask you currently have equipped on Kali, and it would show the character with or without a mask, depending on their current state.
I finished the art for the challenger select screen. We decided to start with just figuring out 2-3 of the characters and the other 3 were planned to not make it into the game until the full version. We ended up really only having time for the first character, Snull, in the end, but their visuals at least showed up for a bit in this demo.
Then I added health bars over the characters' heads in the battles, reusing some code from my previous GGJ projects. I had to update the code so it would use the player's position instead of an event, because of how we set up the battles.
Then I wrote all of the dialogue in Inky. I decided to leave out a few characters that wouldn't make it into the first demo for now, but I even wrote a few scenes we didn't end up getting to show in the end for this first demo.
And though I didn't exactly sleep Saturday night, this was around the time that it was "Sunday morning", so that's where I'll transition into the final ~10 hours of the jam.
Sunday: Wrap-Up
I started by just throwing together some last-minute assets like some kind of intro image and a placeholder for Gold Mask's face. These were some areas I thought would be important to the story parts I wrote, so I wanted something there on the screen while those parts are happening so it could be more of a complete experience.
Then I made the itchio page to prep for uploading so we wouldn't have to wait until the very end to get it up and running, while waiting to get the project back to do some of my last higher priority tasks.
Then I imported all of the dialogue and put together the game progression. After some bug testing, I was able to get the whole opening sequence in there. I also wrote the later parts, but because I ran out of time on the first upload, we decided to end it after the first battle instead and save the rest for a later upload once we had the actual battles functioning. I was a little sad that I spent the time writing those parts and drawing those characters and they didn't make it in, but knowing that we'll come back to this and add them back made it okay.Then I updated the layout of our UI on the battle scene. I repurposed a few of our files and ended up making a few new assets to represent elements like the Mask Points and dialogue box.
When testing, I realized it was a little confusing to know that you would use the keyboard to move the player if the previous scene used the mouse, so I decided to add a little picture indicator that shows the arrow keys and a tutorial to make sure the player knows how to control her.
We also spent some time trying to figure out how to make text show up if you hover over the buttons so that you'd know what the abilities were. We were running into some bugs, so we resorted to just having you click the button, then the text and confirmation text would appear instead.
And with that, the last hours were mostly bug fixing! We had to scope down a lot, but we had one finished battle and a little story around it, so we did it!
Sunday night I got over 12 hours of sleep to make up for how our GGJ weekends usually are, but from there, I went into bug fixing mode where I made a Notion page and expanded upon our Google Doc of bugs listed. We were lucky to have our game streamed on the COGG YouTube page, and with that, it illuminated a few bugs that we wanted to fix even just for this first demo. So that leads me into Monday.
Monday-Wednesday: Bug Fixing & Minor Updates
I started out by going through our bug list and making minor updates here and there. I wrote some post-mortem notes in our various Google Docs to remember for future game dev and reminders about certain plugins. Then, I created a Google Sheets document to track every image file we showed throughout the game, where it was being shown, and whether it's clickable or not. We had a lot of issues with using the same picture ID or not removing click listeners during our last hours of debugging, so I wanted to create this to track everything down. I'd really like to use this from the start next time for our project so we're not constantly asking "did you use this ID?" and not remembering.
Then I went to clean up some of our code and overall references to make the code easier to scale up. The main undertaking I did was changing all of our Masks to use Classes and the attacks within the masks to Skills in the Database.
This way, I could just reference the first or second ability of the current mask instead of hard coding the name/description every time it's referenced. I also updated the enemy name/general references to be your enemy's name.
The next big task was to understand the code that my brother wrote for attacks and movement in the battles. I started with attacks. I reverse engineered his code and the values printed to understand the overall grid system.
Then I was able to update the code he started with the absolute value math to make it work only with spaces within the grid horizontally and vertically. Previously it allowed diagonal attacks, but this new code prevents that.
I updated the Mask Cabinet code to set it to an exact location on the very first time that you're in the tutorial so that it could be more controlled. I also added tutorial text so the player knows where to go when they run out of Mask Points. This appears the first time you run out.
Our biggest bug dealt with swapping between "Move Mode" and "Attack Mode" multiple times on the same turn, where it caused the movement range to change unexpectedly. I dug into the code and used some of the logic for spawning the tiles to mirror that of the Mask Cabinet. From there, I added a new switch that turns off the graphic of the walkable tiles, but doesn't actually despawn them until the turn is over. This locked them in place for a full turn and fixed it!
Then I fixed our last high-priority bug! The player was able to walk on top of the enemy due to how we had the movement set up, so I added a bunch more checks for the ranges and inputs to prevent that from happening.
Then I used similar logic of showing the walkable squares to show the attack squares for the range that the character can attack in. I added a few more tutorials that pop up to prompt the player on the controls and did a few quality of life updates and minor bug fixes (e.g., making the enemy face you when they attack).
Then once the main bugs were fixed, I spent a day just adding a few of our wishlist/nice to have features that were more in the added features section of our notes and not in the bugs section. This included adding more color to the attacks and updating the battle textboxes to look less like dialogue and include the attack name separate from the rest of the box. I also added some extra sound effects.
Then I updated the save screen a bit. I wanted to update each of the file slots to have a bit more padding and move some of the elements around. I rearranged some of the elements and created facesets for the masks.
To display the masks as face images in the save menu, I had to attach them to the actors in the database. You can only display 4 and we have 7+ masks. So I decided to keep Kali as the first actor because we use her data for the battles, but then essentially show your 3 most recently obtained masks in the save menu. To do this, I had to check if there are 4 or more members of the party. If there are, then it takes the second party member and removes them before adding the new party member. This would rotate the oldest one out.
And those were really the main bug fixes and updates I focused on for the week after. I finished a few other various fixes and additions, but wanted to really focus on just proofing the demo for now.
Post-Mortems
Overall, I'd say this game was definitely one of our "bite-sized" demos rather than a full game that we usually make for GGJ, but that was mostly due to the fact that I had some medical complications leading up to it, and because we were really ambitious with the gameplay, which was super complicated. I'm happy with what we did get done though!
I'm really proud of how much we scoped down for this project though. It's a challenge year-over-year for us, because we're really excited about our ideas, and we want to add everything from our initial ideas in there. We kept planning a lot of characters, but we stopped ourselves from putting too much into making them all as part of this game, and really decided early in development that the plan was to make this a small demo of the bigger idea. This helped us scope down, because we were planning for a bigger project, but kept the MVP clear so we could have something "finished" in a demo format for this weekend.
We worked fairly independently on our parts of the game for this project, which had its benefits and downsides. The benefits were that we were experts at our portions of the game and we could playtest the other parts a bit more as an outsider to find areas that might be confusing to someone unfamiliar with it. The downsides though were that debugging each other's parts and helping each other debug was a little more difficult.
Because my brother was working on the mode complicated code, it gave me more opportunities to really polish the art more than we usually do though. I didn't really have a lot of time in RPG Maker and it was mostly in Photoshop drawing. It was a change of pace and an interesting GGJ.
But then after the jam, I did end up spending a lot of time just looking through the code and understanding how it all worked, so with the updates I made, I felt like I really had a hand in the code and was contributing a lot to updating and help make it as efficient and functional as we could.
Overall, I had a lot of fun and I'm glad I was able to still participate in GGJ this year, regardless of everything going on in my life. I was really worried that I wouldn't be able to, but I made it work. GGJ continues to be one of my favorite weeks of the entire year, and I really love this tradition. It's so inspiring and fun!





































































