Friday, April 3, 2026

CUPdate 97: Character Personality Quiz

So my friends and I were in a voice chat and we took some online personality quizzes for various fandoms for fun. Then we thought about the idea that it would be fun to make our own personality quizzes about our characters! And thus began this fun little mini project.

This is a personality quiz where you select different choices, and at the end, you can see which character you're most like and learn more about them. This was an iteration I made partway through development:

To take the quiz for yourself, check out my itch.io page here and let me know who you get: 

I started with a very bare bones project because it would really just need text to show up (and maybe some pictures) and would likely be brower-based. So this ended up being what my first text looked like where you can choose the answer to a question and it determines which character you are. I just wanted to start with one question:

So to start, I made a very basic show choices event that adds to specific character variables depending on what choices you make. I figured with numbers, I could also weigh some questions higher than others (e.g., if someone feels strongly about an answer, they could be worth 2 instead of 1). So I used a basic one that I figured the 6 Main M Nays would answer mostly differently for.

Then I had to figure out how to actually determine the top value out of a bunch of variables. I could nest a bunch of if statements that compare them, but I thought that wouldn't be very efficient. So I discovered the Math.max() function where I can essentially find the maximum value of the range, get its index, then find the ID based on that.

This also meant making an array of character names so that I could essentially call that ID and associate it with a character. I made it simple with associating the variable ID. I reserved the first 20 variables for anything I might need to figure this out, so just put those as empty strings in the array so they would line up.

And that was it for the basic functionality! At this point I had the system in place and it was just a matter of adding more characters/questions. I did this all in about an hour, so it was a fun little challenge.

And then... I decided I wanted to optimize. So why not make yet another plugin? I ended up spending the next 2 hours translating this into a plugin so it'd be easier for me to edit the character list instead of that array and list of variables. So I started by translating the list into string list that the developer could input in the Plugin Settings. I later added the instructions in the help area that you can see here too.

And from there, I made my very first Plugin Command! It essentially takes a string that they input and searches if it exists in that string list. If it does, then it adds (or subtracts) a set number of points, based on what the user puts in there. I have it set to add 1 by default, but they can change that.

So once I got the code working, I was able to actually see it in RPG Maker, which was exciting. 

Then I translated the last script block into a single line Plugin Command for the user. It stores the character's name in a variable that they can set in the Plugin Settings. And after some testing and optimizing, I updated my event to use these Plugin Commands instead and the results were the same in-game, but so much easier for the user to customize!

The next day, I added a reset function so you can essentially retake the quiz and it would reset your points each time.

I decided to rework how the parameters work and updated the character to be a struct instead of a single parameter so that they could have multiple values associated with them like name and description. I could add to this if I found anything else useful too.

Then I started to design the results page for my own project. I used a few other plugins to add additional windows, clickable pictures, and the character's image that appears based on the variable.

From there, Jinny and I started collaborating and coming up with questions and answers for the quiz. She was mostly working on writing the questions and I would help her brainstorm while setting up our sheets to track our data for inputting into RPG Maker. I filled out responses to the first question with about 30 of my characters to try and figure out what formatting would work best for us.

While working on the questions, we ended up having some questions a bit longer than others. So I made the buttons wider than they had been previously to help accommodate for that.

I also went on a little side track and thought it would be cool to track responses to see which characters are most popular. So I found a way to essentially send data from RPG Maker to Google Sheets! So I added a naming screen so they could write a name and then it would record which character they got. This opened so many doors for me in future projects. I'll have to add some disclaimers about allowing users to opt out of data sharing if they'd like, but I can already envision how much generic data I can gather to look through for analyzing my future projects and how players interact with the game!

 

Then I used the CGMZ_Screenshots plugin to create a share results button so the player can take a screenshot and share on social media if they wish. It saves to their screenshots folder or prompts them if it's a browser version. I also edited the plugin to allow escape characters in the filename so I could use variables to print their player name and the character's name.

We iterated on and wrote all of the questions, then updated our points system as well. We decided we could give points to multiple questions for the same character to make it varied a bit if they were leaning towards more than one option. We also updated the order of the questions a bit so they'd flow into each other better.

Then I went through and answered every question for all of my characters! I tried to stick with a point system of 2 if they really agreed, 1 if they slightly agreed, and then in rare cases if it was completely against what they'd say, I would do a negative point.

And from there, the questions were done! So I imported them into RPG Maker. I imported the questions, then the choices. And then I used my plugin to add all of the points per character. Adding the points was definitely the most time-consuming part.

I wrote all of the results text for the characters, then added a few more quality of life aspects like music, a credits scene, and showing the results at the bottom, compared to other players who have taken the quiz.

I did some final playtesting and decided to update my plugin a bit to help me track character variables in the console. This helped me understand if any characters were popping up more often than others. I also added a new feature where in a tie, it could randomize the results instead of always choosing the first character in the list.

Then after doing more playtesting and finalizing it, I uploaded the final version to itchio! I noticed that if you play it in the web, it will crop it if you don't enter full-screen mode though. So I added a note on the page to account for that.

And that was the end of this project for now! I still need to import all of Jinny's responses with her characters once she finishes those, but for now this project is complete. It turned into a bigger project than I anticipated, but it was a fun little break in between projects. Overall I spent about 40 hours on this project, which is about how long I spend on an Eventure Trailer. But I was able to cut back and not do every wishlist idea I had so I could practice scoping down and making a little finished project.

If you end up taking the personality quiz, I would love to see your results! Click the share button and share your results in the comments below. 

Sunday, March 22, 2026

CUPdate 96: Return to Mr Marcus World

To take a break between projects, my brother and I spent a day just doing random activities with our characters. One in particular that we call Return to Mr Marcus World. It's where we do various prompts with our characters in different mediums.

The first one we did was sculpting our characters in Donkey Kong Bananza! I started with Pigger.

Then I sculpted Cimc.

After that, we went back to our animation roots with Mario Paint. I made a little animated sequence of Doge and Ted eating a snack of Oreos together.

Then I used more of the copying frames features with the next animation. This is from Mikey's perspective where he thinks Gojo is his best friend.

The next activity was drawing pixel art versions of Hannah and Subeebia in the style of old Pokemon Red/Blue sprites with the same limited palettes.

Then continuing along with the Pokemon theme was Pokemon fusions between two characters. The first one was Mooth fused with Spectrier.

Then I drew Scott fused with Lombre.

So we did all of these on a Saturday after finishing Macca Masquerade, and it was fun to just do some little low-key drawings and things that didn't have to fit into anything. These kinds of projects always help rejuvenate me and keep me feeling creative.

Saturday, March 14, 2026

Macca Masquerade: Post-GGJ Devlog 2

After a couple of weeks of solo work on updates to our GGJ project, Macca Masquerade, we met up for 2 weekends to finalize the game and do some final polish. And then we individually worked on it a bit and did some final playtesting in a final session together.

We officially finished Macca Masquerade! We did a lot of debugging and adding new features, so in this post, I'm going to talk about the final polish and steps we took to wrap up this project.

💾 Download and play the game here:

 

At the start of the first weekend, my brother worked on getting ranged attacks set up for the player, so I helped get some of those events set up. Then I drew the art for Maester Beckon, as he seemed like the next most important character to the story.

Then I helped fix some minor bugs with the battles and mask equipment menus. I also updated the enemy's attacks that don't have a range to now display on the player's space, because it was previously not showing any.

I worked on some polish updates next. I added animations to all of the attacks, when the mask cabinet appears, and when you run out of MP. I just used the built-in ones for now, but I think it helps make the battle a bit more exciting.

Then I made some updates for controllers. My brother tried out his PS4 controller and it was working for displaying the buttons in our custom menus, but not the Options menu. So I made some updates to display that in there.

We also thought the button icons were a little small, so I went into the core files and updated the icon size just so it would be a bit bigger. I had to reposition everything because of it though.

Then I started to work on the individual stats for the masks. I wanted to make them more unique with different stats, so I came up with some base stats like Attack, Defense, and HP per mask, and then Attack multipliers per attack.

I linked these stats to elements in the database and was finding out which parameters were available for reference by typing objects into the console. I found that using class stats for the masks and then skill stats for the individual attacks made the most sense, so I set those up in the Database.

Then I set up the Common Event and streamlined it a bit more so it would set the target and then if there's nothing special that needs to happen and it's just an attack, I set it to move on. And then at the end of every attack, it calls a Common Event that generalizes the attack damage formula so it's easier to keep track of.

I spent a day working on movement ranges. I updated it to allow for you to move 1, 2, or 3 spaces depending on which mask is equipped. It took me awhile to figure out the right ranges and spawning tiles, and I even ended up redoing our movement code so it's more simplified and only checks for the horizontal or vertical axis instead of both.

This fixed the bug where you could move diagonally, and then I started to actually add the movement code update to the specific masks. I tested it out with Meushi's and got it working as intended.

This led me to realizing our base attack code was only really set up for Kali's mask, and that's why none of the code was applying for other masks, even if I added them. So I updated that to optimize it and scale up. I'm still working on getting individual attacks programmed in.

I had a long backtrack to getting the movement range working. For some reason it worked in my tests, but when I actually tested it in battle with the mask abilities, it didn't work. So I had to go back to the drawing board and essentially rewrite all of the code and logic. I finally got it working though after a long troubleshooting night.

I took a break from the programming to make some quick little images like the game over screen and then updates to the options and title screens. These were mostly to update with clearer controls or replace some of the quicker defaults in there.

After another day of working on the project, we tied up a lot of loose ends. I started by implementing many of the different mask attacks like the poison and healing ones. All of them were working for the player other than the traps, and I got most of them working for the player too.

Then I worked on the enemy movement system and trying to make the enemies smarter so they wouldn't always move towards the player. There were still some bugs, but they would at least use attacks sometimes before moving!

I also updated the enemy turn icons to use the specific enemy you're fighting against instead of them all using the default Snull ones.

And then while my brother was working on the traps, I was helping with troubleshooting, but also drawing all of the remaining characters. I finished all of the face drawings of the characters.

And from there, I finished the character select drawings too! I added all of them into the game so they're officially all there.

Then we decided we really just wanted to wrap this game up. We had so many wishlist things left and a lot of polish we still would've liked to do, but we had a lot of other projects we wanted to work on, so we really just decided to give ourselves a deadline and finish it.

So during that time, I finally added the defeat animations for all of the characters. Once you defeat an enemy, you unmask them and take their mask, which you can use in battle. I drew the faces previously, it was just a matter of saving assets out to use here.

I also fixed some of the abilities like Meushi and Orangin, where their movement range wasn't set up yet. I did a pretty rough string of events to basically detect if they're out of the grid or going to move onto the player. I probably could've made this code a little more efficient, but I didn't want to spend too much time on it while we were in our final days of wrapping up the project.

I worked quite a bit on trying to fix up the movement overall. I was able to figure out how to prevent the enemy from stepping on the Mask Cabinet space and I updated some of the AI to be a bit smarter with the mask abilities so they wouldn't necessarily always use the ability that costs 0.

Then I updated the battle UI. Some of the buttons were previously overlapping and I wanted to rearrange the buttons so they'd be arranged like you'd see on the keyboard or controller. So I ended up redesigning the buttons a bit to work with that.

When I was making the buttons, I came up with the idea that if you run out of Mask Points, it should gray out the mask abilities to further indicate that you can't use them until you refresh your MP. So it changes the color if that's the case.

I also wanted to update the challenger select screen's HUD to match the battle and the rest of the game. I originally made it before we had done any of the other UI and I wasn't really happy with it. So I updated it to meld it into our theme a little better.

Then I wrote the rest of the story in Ink! There were a few characters I hadn't written story parts for yet, so I wrapped all of those up and then tested the full story.

While doing this, I was fixing some bugs and things that came up with the story, since I wasn't fully testing that. I also added blur effects to the background during the character dialogue to further focus on the characters in the foreground.

Then I finally fixed the bug we were having with the movement squares not showing up on the left after the first battle. I ended up just adding it to call again with a wait and switch because I think it was the timing of how it was loading. This seemed to fix it.

I spent a lot of time working on the enemy AI to try and make it smarter. This involved a lot of condition checking. Essentially I didn't want them to just stop moving if they were backed into a wall. So now it checks if they can't move away from the player and if they're against a wall. If that's the case, then they move the other direction. For example, if they're up against the left wall, they can still move up or down. This helped make them move around and chase the player a bit more and prevent them from using their non-mask abilities.

I did a bit more balancing and updated the values to higher numbers to make the attacks feel more impactful and fun. I also updated the start positions of the enemies so they're different for each character to make the battles a little less predictable.

We did one last night of bug testing and got almost everything finalized and working! We ended up finishing the final tests offline in the next couple of days and then officially finished the game.

Because I had been doing so much testing and playing through the battles, I was also coming up with strategies and having fun with it. So I decided to make a little fun strategy guide here based on what I used to play through the game. I also added an easy mode for anyone who struggles.

So after about 200 hours, the game was officially done. So while we took about 4x as long as the typical GGJ weekend to finish it, this was the most ambitious GGJ project we ever created.

We're happy with what we ended up creating for this project, but we both agreed that we're looking forward to a more simplified project next so we can scope back down and scale it back next time.

I learned a lot while working on this project, and I'm really excited to using that knowledge going forward into my next projects. Thanks for reading through my extended GGJ26 journey this year!