Thursday, February 9, 2023

Tag World Roots: Global Game Jam 2023 Devlog

As the yearly tradition goes, my brother and I created a game for the Global Game Jam! This year was a little different than usual though.

Tag World Roots is a game where you play as a bird who raises children to level up skills, socialize, and ultimately compete in a tournament.

🎮 Download and play the game here:

This was definitely a crazy GGJ. We did a little bit of both but I mostly focused on the programming, game design, and writing of the game while my brother worked on most of the art and UI.

I'm still recovering from my surgery so we thought we'd take this one slow and not do quite as much. Though because of that, we ended up being pretty rushed toward the end. Due to my health conditions, I actually worked on this project laying down throughout the entire weekend (including while I was doing some drawings, and all of the game design, writing, and programming). It was definitely weird to be doing it this way, but I can't really sit up for longer than maybe 20 minutes at a time, so it was really the only way.

But now I'm going to go through the process of what we did each day.


Monday - Wednesday: Brainstorming

We started out by brainstorming ideas for the game. We had a few various ideas for the types of games we'd like to make. We first were thinking about a monster-catching RPG and then thought of the idea for a tycoon/simulation type of game; both game types that we hadn't really made before. The tycoon type of game fit a lot better into the theme of roots, though, so we decided to go with that one. It was also a lower effort, which is what we wanted to do for this one.

We figured Tag World is a World where all of the buildings and structures are made of trees. Then we started to think about roots in the metaphorical sense, like ancestry. So we wanted to focus on the idea of how Tag World's roots are based around the birds mentoring students to foster them into Nays or eventually World Leaders. So the title came pretty naturally: Tag World Roots.

Thursday: Menu Concepts & Project Base

On Thursday, I started to set up the project with all of the plugins and everything that we needed. This is the first project we've worked on in a while where we could actually use the VisuStella Message Core plugin, which is nice, because it has a great integrated word wrap feature and a bunch of other things.

We also decided this game would be very dialogue-heavy, so made the choice to use the Ink Integration plugin so we could type all of our dialogue externally and not be tied to the project. So one person could be coding while the other could be writing. It ended up saving us hours down the line, so I'm glad we made this choice!


Then I started to concept some menus. We talked a bit about some of the menus we wanted, so I just got my sketchbook out and did some really rough ideas.


The first concepts I came up with ideas for were the main dialogue screen. We were getting inspiration from games like Japanese Life and Growing Up where there was a small picture in the center and a border around it, so that's where I started. I started to add interface elements that I thought would be helpful for the player to be able to see at all times of the game, like relationship points with the characters and skill points.


Then I made some sketches for the day summary screen. My first concept looked way too busy with everything on it, so instead, I came up with the idea that this screen could be a landing page where the player could click UI to navigate between screens with more details. I ended up going with this approach in the end, and I'm glad I did.


I made a concept for the skill tree (which we later renamed the Perk Tree), making it tree-shaped with branches coming out to act as the pathway for the tree (to make it a literal skill tree). The idea was to have different pathways for different types of perks like skills, events, and dialogue. This idea kind of made it partway into the final, but was a little different.


And the last concept was for the relations tree. For this one, I decided it would be fun to turn it into a family tree, because the Bird-in-Trainings in Tag World are really adamant about calling their Wings family, so I thought it'd fit really well into that, and it could further incorporate the theme. When you click on a character, it would pop up with another box with more details so the family tree could be limited to just the points you have with them.


And lastly, I started to convert that main dialogue menu sketch into a functioning layout in RPG Maker. I started by just using an old Tag World sketch that I did as a placeholder so I could get some of the layout figured out.

Friday: Character Art

I started earlier on Friday because I knew I would be going slower, as I'm still in post-surgery recovery. So I wanted to give myself more time! I started by making a quick sketch of the hot springs so I could replace the drawing I did prior with one from this week. This was mostly just to figure out how many characters could fit on the screen, because we planned to have a lot in this game.


Then I drew all of the character sketches! These took me pretty much all day because I was laying down, taking more breaks, and I also tried to clean them up a little bit just in case they got used in the final (and guess what? They totally did, so it's a good thing I did that, haha).


I then spent pretty much the whole night programming the game loop in RPG Maker. With the events all setup, it starts with training where you can get two skill points. Then there's the perk tree where you can spend those skill points. After that, there's a random event. Then you get to spend time with wings in a social event and see the relations tree after that. The day ends with a custom activity. Then there's the day summary page where you can see your stats. I made a quick mockup of the day summary page just so I could start to get buttons clickable and things working.


We decided to make a Character Creator at the start of our project, so I set up all of the options and variables. One of our stretch goals was to develop a full menu for this part, but that didn't end up happening, so it stayed as a series of choices.


And then I ended the night by making a mockup of the relations tree. The layouts were there, but the art was still a little rough. It was mostly so that I could start to get the functionality working. And so I got it to be completely functional by the end of the night!


Throughout the night, my brother focused on coloring the character sketches I made. He spent the most time on our protagonist, Noibert, and all of their variations, but also did Pidgebeetle. The coloring was really detailed so he decided we might not end up having time for all of them to be in this style, but they looked great for our main two!


Saturday: Game Loop, Menus, and Writing

I started out by finding some music that would play in our game. Then I went into planning out the sequence of events in more detail, including the specific story moments and events that would happen. This included the whole Master Bird Tournament. I decided to make 3 Wings participate in each of the 3 events, so you would win each round depending on if you had at least 3 points across the three of them, plus the 2 skill points associated (so 5 points total). I also programmed that part out with variables.


Then I made our GGJ page on the Global Game Jam website. We didn't really have any screenshots to post yet, so it was mostly our team photo and some concepts. The site always had weird cropping that happens, so we didn't really want to spend much time on that site, as we would focus mostly on our itchio page at the end.


During this time, my brother was concepting out the layout and some text boxes. He made the UI for the dialogue boxes and the border. It came out really integrated with trees, branches, and cliffs! So he put together what he had so far with the two colored characters too. And then he fleshed it out to add the icons as well.


After lunch, I worked on the game loop some more. I created a training menu where you select the workout type that you want to do. This was going to be a rough concept, but I ended up spending more time on it and it didn't look bad, so we ended up using it in the final version.


Then I worked more on the game loop to flesh things out more. I created a selection screen before you hang out with the Wing, using my rough character sketches as placeholders. I also decided to have 2 time slots a day where the player can spend time with Wings. There are so many of them (9 including the secret character) and we're not planning to have more than 5-6 days, so I wanted to make sure there'd be time to hang out with all of them.


My brother made the concept for the Perk Tree in Photoshop and started to save those out so that he could then take the project and start to program those mechanics. I helped him out a bit with using the Eli Enhanced Pictures plugin and using variables as the picture names and in the script calls to make things go a little faster and to be more efficient throughout.


I spent many hours from there writing out the entire script of the game in Inky! It definitely saved me a lot of time and was way faster than eventing it all in RPG Maker. This was also great timing because my brother had to spend a long time in the project on that Perk Tree because it was really complex. Before this, I had already set up the project so it would auto-import the knots from Inky, I just needed to dedicate a bunch of hours to writing what would go in there. It ended up equalling out to around 29 pages in a Word document!


Then I made the title screen and logo for the game. I mostly used art my brother had made for various UI elements, but I arranged it all to work for our title.


Sunday: Finishing the Game

Though we didn't actually sleep Saturday night into Sunday, I'm chunking it off into Sunday here because this is the time when we were really under pressure and a little stressed about getting it done. It was already around 10am and we had many features working, but we didn't have any colored art for the Wing characters, and had no actual character sprites in the game. It was all menus and UI (which is definitely needed for this game, but still a little concerning). At this point, I was under the impression that we were not going to do it and this was going to be the first GGJ since the first one where we really didn't have a finished project, because there wasn't much time left. The timing on parts of this day is honestly kind of a blur because we were so intensely working on this project with no sense of time. We just needed to finish things and quickly.

I started with programming the tutorial because we hadn't even really shown the players how to play yet. While I was doing that, my brother quickly threw base colors onto my sketches so we could at least have some colored characters.


He also made some background art for our scenes. As he was doing this, I was frantically downloading them and adding them to the project so we would have something in there. I was also working on importing all of the HUD elements and setting up the on-screen numbers that correspond to the variables.


Once he had a good amount of backgrounds and the characters colored, I handed the game back to him to work on importing the art. A big portion of that was setting up Noibert to show up, depending on the character creator's options. And from there, since he already had the game, I also guided him on where to put the backgrounds with characters on them, which I had been making during that time. So he imported the backgrounds for all of the scenes as I was sending them his way.


I was also importing the colored character art into all of the menus I had made so that those could be current. 


Since we still had some placeholder UI that I made for testing purposes in there, I also took this time to quickly throw some of the window frames and gradient backgrounds onto my existing UI so that it would look somewhat presentable. They came out looking better than I was expecting, all things considered.



At this point, it was pretty much all in there and already Sunday afternoon. We hadn't even playtested our game yet though. We were really working up to the wire. So my brother started to playtest it and leave notes in our document for big things that looked broken and if there was any instance where he could not progress. It was mostly beatable to the end of the game surprisingly with nothing truly game-breaking (just some jarring graphical errors). So I guess spending so much time on making that thorough game loop at the start really paid off! While he was playtesting, I was putting together our credits image.


It was around 4pm when we finally exported the game and uploaded it. We made our itchio page and officially submitted it. I still had not played the game at all. I had trusted that it would be okay because he played it and was able to get to the end.

By now, it's been about 30 hours straight that we had been awake and working on it, so I didn't have the energy to test it or work on it anymore that day. I just went to sleep for the night and really was not feeling great about the project if I'm honest.

Monday: Bug Fixing

I woke up on Monday around 3am because I had gone to bed around 5pm the previous day. I couldn't sleep any longer so I decided to use this time to actually play through our game for the first time. I made a long list in our document of all of the bugs I found and what needed to be fixed. It was a pretty big list, so much so, that I was prioritizing with a lower priority list and a higher priority list of what really needed to happen before I would be okay sharing this with anyone I knew.

Last night I was embarrassed to even upload what we had because I wasn't proud of it. So I dedicated all of Monday morning to debugging the project and going through every single checklist item to make sure it could be as close to bug-free as I could get it in a day.

I added a functioning save system because our previous one was broken and you couldn't actually load the game back up if you exited it. This was a huge issue. So I found Galv's MZ Auto Common Event plugin and implemented that to fix our save system.


Then I also fixed our tutorial scenes that were graphically jarring with elements overlapping on top of each other. It ended up being that we tried to control too much with a single switch so I split a few of those out and changed the timing of some of the tutorials. I made some new mini-boxes to show menu elements while being able to talk about them so it was easier to read and follow.


Finally, by around noon, I was able to play through it entirely without running into any big bugs. There were a few wishlist things that I could've fixed, but it had been about 10 hours already on the day after that I worked on this, so I decided to call it there.

If we decide to work on it again in a few weeks, maybe we'll add to it. But for now, I'm happy with the game and honestly, I really like it. I'd say it's probably my 3rd favorite GGJ that I created (out of 8), so that's pretty good! Especially considering how I felt about it just one night prior to that.

When I played through the game, I had a lot of fun. The Perk Tree was really fun to plan the schedule around and to strategize on how I would plan my days. It was even a fun challenge to see if I could figure out the earliest possible day that you could unlock the secret Wing, Zapper (which I found out is day 5). And I'm really proud of the writing I did for this game too. I was able to flesh out a lot of background characters through this, and I think they all worked really well for the game as a whole.


So even though I went through a lot of stress and emotions, in the end, I had fun with this and I really like the game that we created. I hope that you'll have as much fun playing it as we had making it (and playing it ourselves)! It also helped motivate me and make me want to work on some more projects soon, which is always one of my favorite parts of the GGJs.

If you can't play it for some reason, or you just want to watch a video playthrough of it instead, I recorded this video of me playing it on Monday:


Thanks for reading this post! I know it was another long one, but these GGJ posts always are, because there's just so much that happens in such a short amount of time.

This is obviously my CUPdate for this week, and really the only project I've worked on since last time due to surgery and recovery. Maybe next time I'll have something, but I think for now I'll probably need to do a bit of resting.