Table of Contents
Day Twenty-Nine & Thirty
I’ve basically come to the conclusion that I’m going to need to purchase animation asset packs from the Unity Asset Store to use as my game’s animations. I purchase the Fighting Animset Pro package I had flagged. There’s so much stuff in it that I think it will cover the basic attack sets for most of my fighters. I purchase one of WeMakeTheGame‘s fighting style packages to see how well animations from their sets will work in my game. I also purchase a small pack of male emotes that I can use for some character selection and victory animations.
Unfortunately for me, adding moves to my game is not as simple as just finding the animation assets for them. The engine needs a bunch of move meta data to be generated for all those animations. I go through the move making tutorial again to refresh my memory on what’s involved in creating the engine data for my characters and their move-sets.
The tooling UFE 2 provides for generating move action meta data is pretty straight forward and easy to work with. It is a little time consuming however. There are lots of fields to set and values that need to be set based on the animation. I use some of the animation assets from the free asset packs I’ve added to the project to create my first unique attacks in the game.
As I’m starting to add my first punches and kicks to the game, I’m beginning to reconsider the perspective that I’m using. In my original vision of a fighting game involving my friends, I always pictured making a game using something like early Mortal Kombat style technologies: a series of digitized images being used as sprites. I wasn’t exactly sure how I was going to make that work, but the key thing is that I always pictured the game being 2D.
But the game I’m currently building is using 3D models, and I’m beginning to wonder if I should be trying to make a full 3D fighter. Part of me thinks it might be easier to balance the gameplay of a 3D, Tekken-style fighter. The animation assets that I’ve managed to source feel like they’re better designed for 3D than 2D. I used to play a ton of Tekken with some of the people I’m planning on giving the game to, so it feels like the right style of game for nostalgic reasons as well.
The only downside is that it means I’d have to upgrade my version of UFE 2 to a version that supports 3D gameplay. I’d have to upgrade to at least the Standard version of the engine. I’m under a bit of time pressure to make this decision as well. I’m going to need to pick a dimension before I start making the engine move data for all these animation assets I’m gathering.
Day Thirty-One
I can’t shake the voice inside of me that keeps telling me that it will be easier to implement moves and balance the gameplay for a Tekken style fighting game. If I’m being completely honest, the source of that voice might just be ignorance. I know a bit about how 2D fighting games work from a mechanical viewpoint. I have just enough knowledge to know what kinds of problems you need to solve to have a well balanced 2D fighting game, but not enough knowledge or experience to know how to solve those problems yet. I’m worried I’m going to create a badly balanced mess of a game if I stick to 2D.
For 3D fighting games, I have experience playing a bunch of Tekken, Soulcalibur, and Virtua Fighter, but I have less mechanical knowledge of the dynamics of well balanced combat. So it could just be that I think it will be easier to create and balance moves for a 3D game because I know less about the challenges involved.
Regardless of the nagging voice’s source, I can’t shake it and I eventually give in to it. I purchase the upgrade to the Standard version of UFE 2, giving me access to the 3D gameplay. In addition to unlocking 3D gameplay, the upgrade also unlocks the ability to craft custom fuzzy AI logic for my computer controlled characters. That will be a major improvement to the quality of the game. Since I’m only doing local multiplayer, most of my friends will likely try this by themselves, playing against the computer. The default AI the engine provides works, but it just attacks randomly. There is no room for adding variety or strategy in how the computer played as the different fighters. I’m not sure how much my friends will play the game once they’re past the initial “Oh wow! Look it’s us!” excitement, but my pride demands I create the best possible experience playing it, even it it’s only for 5 minutes.
As I was experimenting with adding some move assets, I discovered a visual issue with my models. Earlier I was feeling that the model’s heads were slightly to large for their bodies. It wasn’t noticeable with the Santa model I was originally testing with, but as I start adding the models of me and my friends, it looked like the game had a ‘big head mode’ cheat triggered. So I have already scaled down everyone’s head slightly. Now as I’m testing early punch moves I’ve created, the model’s hands are looking way too large. They’re like large flippers and I’m finding them very distracting. So I start to play around with editing the meshes and the scale of my model’s hands to try and find a hand size and shape that I don’t find as distracting.
Day Thirty-Two
Today is the second last day of the Black Friday sales that have been happening on the Unity Asset Store. After tomorrow, a bunch of the animation asset packs that I’ve been looking at are going to double in price. It’s time to make a decision if I’m planning on buying them. I realize that sales happen frequently on the store, but this will likely be the last opportunity to get them at this price until after Christmas.
Before I make any purchases, I begin the looting of Mixamo for animations I can use. Mixamo is an amazing resource. With a free Adobe account, you have access to tons of free 3D animations. Unfortunately, it’s only sort of organized and picking through all the files to find everything I can use takes a while. Then once I find an animation I think might be useful, Mixamo provides you with a bunch of sliders you can use to tweak the animation. With the sliders you can sometimes get two or three different feeling animation clips from the same punch, kick, or hit reaction.
After looting Mixamo for everything I could potentially use, I decide I need to purchase a bunch of the WeMakeTheGame fighting style animation packs before they go off sale. Between the new asset packs I buy, what I just pulled from Mixamo, and the asset packs I bought earlier this week, I think I finally have all the animations I need to create my game. This is a huge issue solved!
With the upgraded version of UFE 2, I’ve unlocked access to 3D gameplay. I give the demo scene a try, and just as I had hoped, the engine works as a descent Tekken clone. It doesn’t take long to recreate the 2D test characters as 3D characters and get them running in the demo scene.
I’m planning to model my game off of Tekken, and one of the key gameplay elements that makes Tekken feel like Tekken is the combo system. Skill in Tekken doesn’t come from having to execute complex input sequences at the right moment to execute special attacks. In Tekken, the complexity comes from how the inputs will trigger different attack animations depending on their context within a combo or the player’s stance.
I experiment a bit with the combo meta data on the some of the pre-existing attacks and I’m able to create my first basic combo: a simple left jab, left jab, right cross. I’m not sure if they way I’ve made my combo is optimal. I created the two left jabs using the same animation clip, but in order to get the combo to work the way I wanted it to, I needed to make two separate sets of attack metadata: one for the starting jab that can combo into the second jab, and one for the second jab that can only be triggered off of the first jab, and can combo into the right cross.
Using this approach feels like I’ll end up needing to have a lot of duplicate versions of moves just to satisfy different combo potentials. Which is lots of work to create and maintain, but it also will start to really bloat the move lists of my characters. Despite my concerns that I might be doing things sub-optimally, this test at least proves that with the engine’s tools I can create and edit the kinds of combos I want to make a Tekken clone.
Day Thirty-Three
Today I have to do some housekeeping on the project. UFE 2 games are a built around a series of settings objects that dictate how they function. Instead of starting from scratch with empty settings files that need a ton of references filled, the best way to start building my game is to take the 3D gameplay demo project and start building my game in place around it. To start I clean all the unnecessary UFE 2 demo data from the project. Things like the 2D demo scenes and assets all get tossed. The only demo data I hold onto is the 3D animations and attack data, which I’m adding to my stockpile of animation resources. I also create a separate empty Unity project and install the UFE 2 package into it as a clean reference of all the demo stuff I trashed, just in case I run into any issues with my project and want to refer to how things were done original demo.
I start looking at the large amount of packages I’ve added to the project over the past couple days. I’ve added lots of animation resources to the project. I have to figure out how I’m going to organize and distribute them to my player characters. I start by making a spreadsheet to track and assign animations.
I have a general idea of what animations I’ll need in order to have a complete set for one of my characters. There’s all the different attack animations, but there’s also movement, idle, crouching, jumping, falling, blocking, getting hit, getting up, etc… For some of those categories I have enough animation options that everyone will get a unique animation assigned. But for other categories I have less animation options than I do characters who need animations, so I’m going to need to be clever with how I share the assets in those limited categories, so that all the characters still feel unique even though they’re sharing animations.
I start making lists of what animation clips I need in my spreadsheet. Jumping between all the animation packages in the Unity explorer to see what I have available in each category is difficult. I need a better way to approach this. The amount of assets I have to organize quickly becomes overwhelming and disheartening, so I decide to tackle it another day.
Instead of cleaning up the huge mess of animations I have, I decide to go through the straight forward, if slightly tedious process of exporting each character model from Blender and running them through Mixamo one by one to rig them. I suspect there’s probably a smarter way to use a single rig for all my models, but I’d have to invest more time than it’s worth to figure it out. I found this way that works for me, and I’m happy with the results. It doesn’t take too long to get everyone rigged.
I’ve also been thinking about levels. I’ve started brainstorming ideas for different levels for everyone. Between all the Synty asset packs I have, I have assets to create some stages I have in mind. But there’s a bunch of ideas I have for stages that I currently don’t have any assets for. It’s the final day of the Black Friday sale, and so I pick up a Simpligon Universe low poly asset set that would fit in perfectly with my existing low poly assets. It will give me the basic resources I need for at least a handful of the stages I had in mind.
Day Thirty-Four
Today I imported all the rigged models, and created the 3D character assets for all my characters. It was a lot of setting up folder structures, copying scriptable objects, and modifying key fields. It also involved making the UI elements for each of my characters. I hope to eventually import some animations into Blender and do some proper posed images with my characters for their UI images, but for now I’m just take simple screencaps of their models from the assembly project in Blender. I crop the image close enough so you can’t tell they’re all T-posed. It doesn’t take too long even though I have to redo some of them when I forget to deselect the model in object mode and the model has a bright orange highlight in the screencap.
I also did some work on this blog. I need to find a better way to do this. I’ve been attempting to update the blog once a week, but that means by the time I sit down to write it, a week’s worth of stuff has piled up to write about, and that takes longer than a day to write. I need to be inputting the content as I’m doing it to spread out the work, because sitting down and having to go through a week’s of catching up at a time isn’t a sustainable practice.
Day Thirty-Five
Today was the big day I finally tackled the re-organization all my animation assets. My plan is to sort the animations into the character folders so that each character has their own collection of animations they reference. This is the how it is structured in the demo project, so I’m going to follow that pattern. I start the organizing by assigning animations for all the miscellaneous emote style actions (selection animation, win animation, etc.), and the standing idle animations. I have enough of those animations to give everyone unique clips, so I just distributed the files to the character’s animation folders. I try to make notes of who was getting what animation in case I ever needed to refer back to the original. Tracking that information in a spreadsheet makes it easy to look up and reference, but it adds time consuming requirements to enter the data as I’m trying to sort everything.
The rest of the animations are going to be potentially shared between people, so I decide before I start handing them out, I want to sort them all together so I can get a better survey of what I have available. As I pull the animations out of their packages, I prefix them with a letter code that references the package the animation came from. Organizing all the animations was a huge challenge, but now I’ve got all the move animations from the separate packages combined into common folders, so I can clearly see how many of each animation element I have.
Wrap Up of the Week
There’s still a ton of sorting and to do with the attack animations, and I have to create the attack metadata for the engine. Even though today was a full focus day and I got a lot of work done, I still feel like I didn’t make a ton of progress on the gameplay itself. I can’t playtest matches yet, and I think it’s going to be a while until I can start to iterate on that. I’m realizing I may have underestimated just how long this process is going to take. I hope that the groundwork I’ve laid down organizing the animations will help me pick up momentum going forward next week.
