For the past month, I've been working on a game for the RPG Maker 2025 Game Jam. I finished it 2 days before the deadline!
The game is called #No_Hacks. Join Murou on his journey through various console-based puzzles as he strives to reunite with his best friend Zandra in the virtual reality world known as ComplexNet.
💾 Download and play the game here!
While I've been documenting my game dev journey through blog posts, I wanted to create this final post to mention some of my final thoughts on the project and showcase some final screenshots. I also took a video of myself playing through the game.
Overall, I'm happy with how the project turned out. My pacing went fairly well on this project, and it was a lot more relaxed of a timeline without any crunch really. I spent ~140 hours on the project over a month, which honestly wasn't a lot of time. Compared to the GGJ project which was a weekend and only a week or so of fixing up the week after, that one was around ~102 hours. So it evened out.
Going into this project, I knew I would be out of town for a week during that and that it was during a fairly busy time. So I scoped fairly small and made a game that was fairly easy to make in terms of mechanics being mostly puzzles and dialogue. While I had some brand new things I had never done before, it all was fairly familiar and smaller scope than some of my other games, which made it fairly easy to manage with the time I had.
Speaking of new mechanics, the entire console and saving to files was really new for me. I focused a lot on diving into JavaScript with the new things that I did on this project. I really learned a lot about node.js and how much of it is available to use in RPG Maker. It was fun implementing more of this as I made the game. Almost every puzzle I made ended up having script blocks of code where I wrote pure JavaScript to accomplish some of the more complex puzzles and mechanics. I learned a lot during this.
This was also one of the projects where I felt the most organized with my events, code, and Notion page in general. Using what I had learned from previous projects, I organized my Common Events a lot better. This included grouping HUD events together and using emojis in the titles of the Common Events I was referencing the most so I could come back to them. I also used the VisuStella Events plugin for some of the interactions with terrains, so I reserved some of the earlier Common Events to associate the same numbers with those.
With the HUD, I do want to look into organizing those Common Events a bit more in future projects though. There were sometimes when I would make additional switches or variables when I needed them to show or hide in specific situations, and it did make it a bit harder to manage. Usually this happens during playtesting and after the game is complete to stitch some things together, so I wished I had solidified that a bit more earlier on. With my next game, I want to create a smoother system for this.
That also goes for the character portraits. In this game, because I only had a few character portraits, I dimmed characters in the same image file with who they were talking to. It wasn't really scalable for a larger game, but in the future, I'd like to look into a system to just dim whichever other character is on the screen without having to save out so many different files. It wasn't a priority for this project due to the small cast, but it's something I'd be interested in learning more about for next time!
With the dialogue though, I was able to finally solve an issue I had with dialogue in previous projects where it would flash between characters. This was because I would essentially be erasing all of the pictures between each character talking. I updated the Ink plugin to include a method for erasing pictures just at the end of the stitch and not between each line of dialogue, and it worked out fairly well!
I also made use of tracking variables for story progression instead of switches, to help keep the progression streamlined. Learning from the World Bub GGJ game from this year, I set up all of the dialogue to use debug switches to show temporary dialogue until I had the Ink scripts set up. This way, I could set those to show during playtests but not the final version. I learned this when we had forgotten to unskip a dialogue scene towards the start of the game when last-minute playtesting our GGJ project.
My Notion page was also fairly organized this time around. I was archiving tasks that I didn't end up doing and also keeping bugs in a database and setting their status as I tested. This was the most organized I felt in playtesting and tracking those bugs.
I also made use of GitHub a lot on this project. Usually I use GitHub for collaboration and sharing projects, but this was my first mostly solo project that I used GitHub a lot and I'm so grateful I did. I had a few instances where I had to roll back to compare what I changed in versions of the project, and GitHub really helped me do that easier. I also learned a bit about branches and their usage during this project when I was troubleshooting.
This all goes hand-in-hand with the more efficient decisions I made to optimize and reuse code throughout the project. I've really enjoyed using more Common Events for code I want to reuse instead of copying events on the map. It makes updating them a lot easier overall.
And with this, I used the VisuStella Event Core plugin to create event templates that I could spawn onto other maps, to only have to make them once. I combined this with a lot of loops to loop through and spawn or apply code to multiple events to make it more efficient and overall just easier to edit in the end. This saved me a lot of time and made my code more consistent.
I learned more about some of the other plugins I had been using as well. This included the keyboard commands plugin. I've had issues where every time you press a key, it repeats the Common Event even if you're in a dialogue message or some other event. I finally figured out how to fix that and only fire it once if you're in the middle of seeing dialogue from that event. This is something that will make my games run a lot better!
I also had been trying to make custom options in the Options menu in previous games and never quite got there. This time, with the Kick Assist option, I really researched for a day to get a switch that the player can set in the menu. I still have a bit to learn and it's not perfect, but I was able to set up an event that detects if the Options menu is closed, and then call that switch's status and have it match what's in the menu. So that's something I was proud to make more progress on and can carry over into other projects!
A then a few of the areas I'm looking to improve for future projects is just more polish, which comes with more time! I really want to look into ways to make still dialogue feel more "alive" and animated. Maybe that means character idle animations, animations on text boxes, etc. I'm not sure what it'll be, but I think more effects like that is where I can take my games next. More of those "juice" special effects too, like more sound effects. Just more of those little polish things can make it go a long way!
Lastly, I'm looking to expand into more unique art styles in the future. I was really happy with the overall look of this game where everything was in one coherent theme, but I do feel like this game and my previous one had a feeling of being very "zoomed out". It works really well for these games and the style, but next time I want to make something that looks completely different! I was playing around with a zoom script at first that showed the details of the art a bit more, but it just didn't work with the text labels that I wanted for this game, so that's why I didn't go with it. I might look into drawing small sprites again but using zoom next time to add more focus on the character sprites.
So overall, I learned a lot from creating this game and I had a lot of fun with it! These are just some of the big areas that I learned and am planning to take with me into my future games. But those ~140 hours really taught me a lot and were just a lot of fun overall. I don't know which project I'll be working on next, but I already can't wait to apply some of this to the next one!
No comments:
Post a Comment