Doki Ban Hammer Postmortem


This log explains my various successes and failures in this project, as well as providing a bit more in depth information about the game mechanics. It is fairly long, so feel free to skip around to the part you want to read. If you haven't played yet, I'd strongly recommend trying the game before reading this devlog.
Disclaimer: The game isn't intended to be a serious commentary on Doki's or Mint's chat environments, their mods, their management, etc. It's all just for fun! I think that's probably pretty obvious, but I want to make sure it's clear.
Background: I developed this game solo. I used Unreal Engine's blueprint system and I used Procreate for art assets.
I decided to join this game jam because I watch a handful of vtubers, including Doki, Mint, and some of their friends. When I saw the Doki Jam announcement, I figured it'd be a good time to try some stuff out. I haven't made a full game in awhile.
Time Note: I knowingly started this project a few days late because of unrelated IRL events. This was something I knew I would be dealing with ahead of time and it was something fun, so no complaints there. If I talk about "not having time," that's mostly about my own time management and planning around my other events, not about the game jam's time period. I think two weeks is reasonable for something like this. Also, I want to point out that "not having time" isn't something I'm bringing up for pity points or anything. Everyone has their own life beyond the game jam. I just want to talk about how, realistically, this may have affected any part of the project for me.
Game mechanics explained:
- Each gray circle can hold a chatter. There are good chatters (may be referred to as "friends") and bad chatters (or "enemies"). The player is meant to hit the bad chatters (which are on a red background, upside down, and have angry eyebrows). The player should NOT hit the good chatters (on a blue background, looking relatively "normal") and is penalized for doing so.
- Every X seconds (randomized within a certain range, in tenths of a second), a random circle is chosen. If it is empty, it will spawn a chatter. The chatter is good or bad at random, which is chosen by a random Boolean. If there is already a chatter in the circle, nothing is spawned.
- If a chatter is on the screen for a certain amount of time without being hit, it will disappear. The time is randomized at a few seconds long.
- Each time an enemy is hit, the player gains 500 points. There is also a random chance for the on-screen Doki model to do a laughing animation. This does not affect gameplay or points.
- Each time a friend is hit, the player loses 500 points. When the friend leaves screen without being hit, the player will gain 100 points for sparing them.
- At 9000 points, a "collab" is earned. Mint is added onto the screen. There used to be a mechanic to remove her if the player dipped below the "collab" threshold, but I decided to change it. I thought it was awkward to just remove her from the screen. It felt unceremonious, so I just made the threshold for earning the collab a bit higher.
- If the player does badly enough (not getting enough points as time progresses), the chat messages start to turn negative. The exact threshold for this is calculated based off of the current score and the amount of time that's passed in game. There is a middle ground threshold where the messages can be both positive and negative and a lower threshold where they're all negative.
Planning: I wanted to join this game jam as a solo dev because I do enjoy solo dev work. I like looking at a game and knowing that I made everything in it. Also, a lot of my skills aren't necessarily at a "marketable" level. I can make a playable game, but my programming skills aren't really great. I use the blueprint system in Unreal and I don't really have good enough coding skills to use anything else. I think I could probably contribute art to a project, but I definitely do have a distinct style and some limitations. I've never opened commissions or anything like that, so I feel like that's a better first step for working with others on art, though. I have skills in audio (ironically, yes), but it's not something I'm currently interested in contributing to a team. All of that said, solo dev work is usually best for me.
When the game jam theme released, I figured I could do something with the chain reaction of people getting into a game. Something common to the vtuber space is everyone suddenly playing a game, and there's a lot of chain reactions there. A lot of times, streamers will get into a game, then their audience will play, then more streamers play it because it's popular, etc. It's especially funny when streamers get so into a game that they annoy their audience or their friends and collab partners. I thought of Doki playing Marvel Rivals, particularly the clips where the stream title and thumbnail were something else, but the stream content was
Doki in Marvel Rivals. I didn't just want to have the game BE Marvel Rivals though. I didn't want to face the off chance of any copyright issues and I thought it might be less creative.
I also knew from relatively early on that I wanted the game to take place during a Doki stream in some way, so I could start working on Doki assets right away.
I used this opportunity to create most of the game in Unreal Engine's widgets. I wanted to try doing something like this because I often use 2D assets in Unreal. I thought this would help with some of the lighting annoyances I've had in the past. I thought it would be helpful for making games that use a lot of menus, like strategy games or certain puzzle games.
Challenges:
Overall, I had some commitment struggles. I knew I would have the time restrictions detailed above. I always wanted to have a way out of the game dev just in case I couldn't quite make it. While two weeks is plenty, I wasn't sure how much time I would actually end up with and I didn't want to do something that would be too stressful instead of fun. I reached a point where I definitely developed enough assets to create something, but I still wasn't fully committed. I'm glad I didn't feel too much pressure in general, but I wish I would have fully committed to the project idea a bit earlier.
I struggled to fully develop the game's concept in a couple ways. I had the story ideas planned out before I really knew what I wanted the gameplay to look like. Specifically, I knew that I wanted the "chain reaction" concept to be that everyone got really obsessed with a game. I didn't know how I would make this correspond with gameplay, though. I didn't necessarily want to make the game that everyone was obsessed with. It would be harder to make that Dokibird themed. Also, even if I made a really good game, it would be a bit much to claim that my game is something that everyone really likes. The chat moderator idea came later as what I figured would be a natural consequence of the "chain reaction." This meant that naming the game and subsequently making the logo came fairly late into development, which is not ideal for planning purposes. I also wanted to make it so that the player could see Doki playing the game everyone's playing, but that got scrapped due to time.
I also generally struggled with making a game for the right target audience. I thought it would be a good idea to have a shorter game. I know sometimes in game jams, people don't want to spend a long time with each individual game. I also knew that there would be a chance that my game would be streamed. I didn't want something that overstayed its welcome during a game jam, whether that was for playtesters or streamers. I also didn't want people to play the first bit of my game and judge it based off of that and miss half the story. This lead to me writing some story and then deciding not to implement it. Initially, I really wanted to do something for each step of people getting into the game. I wanted to show the devs releasing the game, then the general audience playing it, then Doki, then her manager, then Mint, then maybe something dramatic like "the entire world," but I figured people would probably quit fairly early on unless the gameplay was REALLY engaging.
The issues with creating the game concept were part of what lead to me not being able to implement the story in the best way. Initially, I wanted to have the story and gameplay be integrated better somehow. Maybe I'd have pop-up dialogues during gameplay or something. When I finally got the "whack-a-mole" style gameplay going, I figured maybe a better way to integrate the story would be to do it in some sort of chapters or levels. I thought about having the player read some story, then play a level, then read some story and so on. I ended up scrapping this because I didn't have enough difficulty modifiers for the whack-a-mole segments. Initially, I wanted to have two sets of buttons: one that was on WASD and one that was on IJKL. I scrapped the second set because I had them set up in an awkward way and troubleshooting took me a bit longer than anticipated. I didn't think it would be a good idea to force players to just play the same level five times to get all the story. It also didn't help that there was no save system, so a person would have had to play it all in one sitting. I didn't feel like I had time to add a save system. Ultimately, this made the story really weak. I only felt like I could put in a few screens worth of story, and they didn't end up being a part of the main game, which was frustrating. I realized later that I could have done a chapter select of some sort to put in multiple bits of story and levels. Initially, I didn't want to do this because I didn't want people to "cheat" and just select chapters without playing the game. I realized later that it didn't matter, and that this would have been a way to let people experience the story however they wanted. I made this realization too late to put it in the game that way, though.
I ended up wasting time creating some assets that weren't used. For example, Doki had some simple frames for speaking, but I didn't end up having time to give her some sort of natural looking speech pattern (especially when trying to include the blink). I wish I had spent less time on these. I also wrote out some story and created story widgets in the game, but then decided that I didn't want to use all of those. I thought they would make the story too long, and I didn't think they looked very good. I wish my planning worked a bit better on that. I think I need to work on how I plan for game development. Additionally, better time management in general would have helped me. If I had planned more time for game development, then the time that I wasted wouldn't have caused problems in the game.
I dealt with some crunch. I ended up leaving a lot for last minute, then spent a LONG time on the last day finishing things up. This comes back to time management. For a solo dev, this was acceptable, but it's less so if it was group work. I can only blame my lack of time so much for my time management issues. I think it would have helped if I did SOMETHING to intercept time management issues. This likely would have been planning my game in the actual game engine, rather than in notes that were elsewhere.
I didn't know what to do for the music... I wanted to find something that could be related to Doki, but when I was thinking of iconic themes (that weren't obviously going to cause copyright issues), all I could think about was her stream opening theme. Ultimately, I ended up not adding any music, which caused some problems with the overall game quality.
What worked:
Art style (best thing)
I was really pleased with how the art came out in general. For this game, I wanted to draw in a fairly simple, non-pixel art style. I've done pixel art in games before, so I wanted to try something else. I chose a simple style so I could easily make similar looking art for as many assets as necessary. For example, I drew Doki and Mint first, then I added in D.A.D. much later. It was easy to replicate the style since it was relatively simple. This made all the assets match each other for a more cohesive look. Another thing that I did for cohesion is that MOST assets use colors from the same general pallet. Doki and Mint have some similar colors on them, and you can color pick them to see the similarities.
The background was partially traced off of an old picture I took, but I made some changes. I mostly used it to get a sense of perspective and space. I felt pretty good about it in general. It's fairly basic, but I could use this style again in the future for a "simple" background. I felt satisfied enough that I'd made a "new" work rather than only replicating the photograph exactly. It also still felt like my creation since it was my photograph.
I was pleased with the animation. It was quick and simple so it's definitely not perfect, but I liked the way it looked. I will say that animations are where the art starts to get weaker. I wish I'd been able to make and implement a few more animations, especially for Mint. All she does is blink, but I feel like I could have maybe made her talk or laugh. Doki had more sprites that weren't fully implemented, as stated above. However, the animations that were in there felt fine for the amount of time I spent on them.
The widget only system worked fairly well. I was able to update widgets on player button presses and during events that happened in the level without having to have player input on the widgets themselves.
I liked the chat system. I'm glad I got it to work. However, I was frustrated because I put in a system that was supposed to stop duplicate messages, but sometimes they still came through anyway. Additionally, I feel like the bar was a little too low for seeing negative messages. They're in there, but you have to get a pretty bad score to see them. I went for fairly lighthearted insults because I wanted it to be funny rather than genuinely being harmful. Overall, though, I was happy that I got randomized usernames (numbers, at least) and messages in there and that the chat moves in the right direction.
I felt good about how quickly I was able to put together the hammer sound effects. I didn't record them, but there are multiple sound effects layered together. There are three SLIGHTLY different sound effects: one for empty circles, one for accidentally hitting a friend, and one for hitting an enemy. The one for hitting an empty circle is fairly neutral. The enemy sounds are slightly lower and have a different wooden sound effect in them. The ones for hitting a friend are slightly higher and have a squeaky sound effect in them. I do wish that I'd had the chance to check them on multiple speaker types, but I thought it was good enough for the jam.
Finally, I'm just excited that I created some sort of functional, cohesive game. Game development is hard, but almost everything in here is something that I made, and I think that's worth being proud of. It's not the best game, but it's one that I made myself in a relatively short time period. Doing game development really makes you appreciate just how hard it can be.
What didn't work:
No music (worst thing)
I wanted to make my own music for this project but I just straight up ran out of time. My background is in audio, so it feels pretty bad for the audio to be missing. I didn't use other music because even that would have taken too much time by the time I got around to it. I was really afraid of stock music making it sound too basic/generic, but I played through a lot of other projects that used stock music and didn't feel that way at all. I felt like it would be better to have no music than bad music (music that was ill-fitting or didn't loop properly), but I just really regret running out of time.
After my submission, I wondered if I should have spent less time troubleshooting so that I could put more content, like music or animations, in there. That way, I'd have more of an "excuse" to fix my game during the playtesting week. I think it would feel bad to try and "cheese" the submission window like that, though... I still probably could have dropped some of my troubleshooting if it made the game look and feel a bit better. I was, however, happy about the final results of the troubleshooting. I solved an issue where one of the buttons wasn't updating its image properly (I had nodes connected wrong...), which was causing the score to look like it was changing randomly. I also think I solved an issue where enemies would randomly appear for a very short amount of time instead of the several seconds that they were supposed to appear. While the troubleshooting felt worth it, I wish I could have found a better solution to do it all.
I mentioned that I had issues with developing story. I think in the final product, the story does NOT come across during gameplay. There's a secondary menu button for story, but you don't get a sense of that while playing. I feel like I shouldn't have landed on a gameplay idea that was so far away from the story. Or, I should have molded the story to fit the gameplay more.
I'm on the fence about it a bit, but I don't really know how "fun" the game ended up being. I think for a short experience you play during a game jam, it's fine. I think it's much more in the category of "oh that's neat" rather than being a game people would want to spend a lot of time with. I'm mostly okay with that, since a lot of game jam games can feel that way, but I've also played several that are fun in their own right. I will say that I think my game suffered a bit because I didn't have a lot of time for play testing that wasn't just bug fixing. Normally, I'd see if I could get some friends to try it out as well, but I didn't have time before the submission window. The timer was added because I wanted there to be a clear cutoff. I didn't really want to add game over conditions or anything else "negative" because I felt like making the game longer through losing conditions might be annoying. I didn't get a good chance to play for an extended period to check out different potential timer lengths. It probably would have helped if I'd at least made an "infinite" mode of some sort so that people could play as long as they wanted. I think the overall concept just wasn't that interesting to begin with, but it's also just not the type of game that I'm playing right now. It's much more "arcade" like than my current interests. Overall, I'm fine with the gameplay being just okay, since I had other things I wanted to work on more.
There were a few miscellaneous things that I think I could have made better if I had the time. If I'd had more time to add a save system, I might have had more confidence in including more story elements. The scoring system is uneven. Technically, an unlucky player could get all good chatters. Even if they did everything exactly right, they'd get a lower score than someone who got all bad chatters. There were a few ways I could have fixed this, such as having set amounts of good/bad chatters that could spawn or making the game based off of seeing a certain number of chatters rather than time based. I figured the average person would have a decent experience with it, and that some people might not even think about the score at all. There were no settings for audio, but there was also no music to begin with. I didn't get out a web build, and I really think that hurt playability. That's on me for just not paying attention to that part of the jam guidelines. I was focused on the theme and some of the other rules and just didn't realize that they were mostly going to be browser games. I did technically get a build working, but none of the text was legible and the game ran terribly. I probably should have made a build of my game early on to test for those sorts of issues. While none of these issues were terrible, they did contribute to the game being slightly worse quality overall.
I don't think this is the worst thing I've ever made, but I don't feel like it fully shows off my skills. I think I could have done better in the same amount of time if I had just started with a clearer idea and fixed some time management issues. I think I also went a bit too ambitious with the ideas. I wanted to do all the art, the audio, the story, the gameplay, AND have something that's good on all of these... but I think for this project, I should have made the gameplay more simple for me to implement so that I could put more into the audio and the story.
What's next?
I probably won't work on this much more. I could see adding some sort of music, as this would make the game feel more "complete" as is. I don't think adding new features would help. At this point, I don't think new people will play the game since it was specifically for a game jam. I definitely intended the lifespan of this game to be more "a fun short game people play during the jam" rather than something people revisit or spend hours on. I feel like getting the game to its ideal state still wouldn't make the BEST game, and if people aren't really playing it, then there's not much of a point. I don't think continuing to work on it will help me develop any skills, either. I think the best thing for me is to develop more games in the future instead, whether for game jams or just because.
I should take note of what this project taught me. There were clear time management issues. The takeaway is that I probably need to actually start the development process earlier, rather than working on finalizing art and other assets. It would have been easier to troubleshoot issues if I was aware of them earlier. I also could have gauged difficulty on my game ideas and decided which ones would work with the time constraint. I think part of this problem will fix itself if I can make more of an effort to do game dev more often and therefore not lose any familiarity with the game engine. I ended up being okay, but I hesitated to open Unreal for a long time because I feared that I might have forgotten something and it would be harder to use. I think this type of art style might be useful for further games. It would probably be helpful to simplify it a bit more and use it for other work with time constraints in the future. I also think I should try using assets more. There are a lot of cool assets that exist out there and some of them are even free. I've always been worried that they'll take away the "uniqueness" of my game, but while I was checking out other Dokijam games, I noticed that there were definitely some projects that used them without me even noticing until I read the credits. Beyond anything else, I need to just keep making games.
If you've read this far, thanks for reading! I hope you had fun during the jam.