5/19/17 – Progress report – Pivot, problems, progress

I’m pretty sure this is the longest I’ve gone without an update here, and hopefully that record stands for a long time.

In the last two months I’ve been focusing almost exclusively on work outside of the game. Before now I’ve been hellbent on finishing the prototype, because I thought nothing could happen before that got completed. My whole Kickstarter plan hinged on having a playable demo.

Now that I have a playable demo and have started looking at successful Kickstarter campaigns, I realize that is not enough. There needs to be polish, and most importantly there has to be artistic talent present. My game feel is good, but how many people are even going to play it if the visuals are not compelling?

So at this point I realized I need an artist, which means I need a plan to get an artist. My two options for doing that are find one to work for free/cheap, which would be…not ideal in any way, or I scrounge up some money and pay one to work for me. The second is what I decided was best, but alas, I have no money.

That’s a solvable problem, though! And I’ve been solving it! I’ve very recently begun working part time at the Entrepreneurship Center that’s helped me so much to this point, and I’ve also been talking with investors. Specifically, I’ve been talking with Wade Patterson, who is starting an angel investment board here in Starkville.

Wade has been an unbelievable stroke of luck. He’s made millions starting companies (mostly software/hardware) and growing them into massive successes. He’s got a wealth of experience and insight for me to draw from, and draw I have. We’ve gone through expense reports, revenue projections, all kinds of documents and data that I’ll need if I’m going to pitch to investors. He’s even agreed to be a mentor officially for Meta Games. I’ve got pages of notes from my meetings with him, he’s a fount of knowledge. If you couldn’t tell, I’m very excited he’s taken such an interest in my company!

Something else I decided in this time is that I want to take the game in a somewhat different direction as far as backstory and characters go, but I don’t want to get too into it yet. I can’t wait to explain more, but things still need to be a bit more concrete before explaining too much. Just know that everyone I’ve talked to has been way more excited about this direction than the last one, so I definitely know pivoting on the theme was the right call.

Anyway, for now it’s time to get back to work. I have a doc full of notes from some very successful playtesting sessions I had with local players. I need to chug through those, but only once I have the rest of my documents ready to talk to investors. Shouldn’t take long, but this stuff I really can’t put off any longer. See you next update!

3/8/17 – Progress report – The prototype is finished! Version 0.1 achieved!!

It’s been a while since the last post, longer than I’ve ever gone without an update, but I’m so proud to say that the prototype is now finished!

At least, the first version of the prototype is finished. There are a lot of things left to polish before I release the playable demo, but as it stands this is the milestone I’ve been working towards for the last 20 months. Over a year and a half, full time, to get to this point! It feels so great to say!

So what’s been added since the last update? Here’s the shortlist:

  1. Ledges – You can grab onto ledges and do all sorts of stuff from them. I’m very happy with how they feel, especially since they’re such an integral part of the platform-fighter experience. Without them, recovering back onto the stage was much, much more difficult.
  2. Parrying – While blocking, if you press neutral special you’ll go into a parry animation. If you get hit during the first few frames, you and your opponent will go into hitlag and you can cancel the animation afterwards. If you miss your parry, you have to watch your character finish the animation helplessly. High risk, high reward.
  3. Special Attacks – These took a ton of effort to get working correctly. Each one felt like the culmination of all my learning on how to program in UE4, but they now all work as I imagined they would when I made their animations. What was especially tricky about them was that each one had to be coded individually of one another since each one behaves so differently. The only thing they all have in common is that you press the same button to start each of them.
  4. Death and Respawn – Similar to in Smash Bros., the way you die in my game is by falling out of bounds. That’s now working properly and there’s a life system in place to round it out. The game is now winnable.
  5. Stages – Not only did I create two stages, but I can also create many more very easily. I’d say it takes less than an hour to create a new stage from start to finish, so expect several playable stages in the final demo. I have some really cool ideas I can’t wait to try out!
  6. Menus – Now when you start the game, you don’t just launch immediately into the action. You can choose what stage you want to play on, you can quit out, etc. They’re not the most beautiful menus ever made, but I mainly just wanted them to work. The polish can come later once everything else is working (e.g. now). I have to say, I never really gave much thought to menus before this other than recognizing when a menu feels really good or bad, but after making my own I now realize there is a LOT that goes into a good menu. So many small details, and all of them are meticulously added in. It really makes me appreciate menus I see in other games and websites now, because even my hastily-made options took a lot of effort.
  7. Bug fixes and other optimizations – One bug in particular had been a thorn in my side for months, maybe even a year. Occasionally when you got hit by an attack, you would not move at all. You’d be frozen in space, but the game would also think you hit a wall and the ground at the same time. Once triggered, it could not be undone and the game had to be reset. It was really bizarre and game breaking, and it ended up being the very last thing I did before calling the prototype “finished.”
  8. Exporting the game – This might sound obvious or trivial, but I also exported the game as a stand-alone executable file for the first time. This actually took some work to get running properly! It’s a whopping 800MB somehow, but for my first try I’m mainly just happy to see it working at all. Polish and optimization can come later!

And that’s what it took to get from where I was 7 weeks ago to being “finished” with prototype v0.1. I’ll talk a bit more on next steps in an upcoming blog post, but for now I think this is already a lot of information.

Huge thanks to everyone who has supported me up to this point or just followed along. It took so much work to get to this point and there will be much more to come before all’s said and done. Still, thank you everyone!

1/18/17 – Progress report – Animations, rolls, grabs, and hand pains

It’s been a long time since the last update, longer than I’ve ever gone without a blog post, but at least I have a lot to show for it!

First off, I finished all the animations! In the last post I said there were only 3 left, but that ended up being wrong. Several of the special attacks required separate animations for if they hit or miss, if they’re on the ground or in the air, or any combination of the bunch. There have also been a few incidental animations for grabbing that I needed to do, which brings the total animations count for the first character at a whopping 98.

It’s pretty likely I’ll need to do a few more animations before I finish everything, but this is still a huge milestone! I made an excel sheet when I first started with all the animations I thought I would need for all the features I have in the game, and that list has been finished.

Next up, I finished blocking, rolling and spotdodging. There wasn’t too much to this except that I finally decided to code in invincibility and intangibility properly. The former means you can hit them but they won’t take damage, the second means that your attacks will go straight through them with no effect at all. Overall this part wasn’t too bad.

About as I was finishing up this section I started to feel serious tightness and pain in my right hand and wrist. This isn’t completely new, but it’s never felt that bad before. Part of it was using a desk setup I wasn’t as comfortable on while visiting family, but part of it was my own desk setup at home not being optimized for ergonomics. After taking a few days off to give my hand a break, I got home and set up a goofy but effective setup and now I am mostly pain-free.

Back to the game, I also imported the dance into the game as a taunt. It looks pretty nice, but I’ll probably use it as a victory animation instead once I get around to making a victory screen.

The final thing I have to report as finished is grabs and throws. Man, these were a huge pain! It felt like every step of the way I was up against both a technical and mental wall. Getting the characters to register the hitboxes as grab hitboxes instead of attack hitboxes, restricting the states you can grab someone out of, getting the victim to actually be held in the grabber’s hand… there were a lot of problems that took a while to solve. To compound the issue, each throw has different properties for what the attacker and victim have to do during the throw, as they get hit, etc. They were eventually all solved though, and today I’m happy to say every throw works exactly how I want them to.

In all likelihood, grabs and throws were probably the final difficult thing to animate and code. After this all that’s left is ledge stuff, parrying, special attacks (might be difficult), and a handful of small things like menus. The finish line approaches!

11/11/16 – Progress report – Teching is DONE!

Another month, another update. I meant to do this update earlier, but I kept putting it off until I could finally say that teching is 100% done. This ended up being a much more difficult process than I ever thought, but now it is completely done!

Before I dive into the explanation on why this took so long, here’s a list of some of the stuff I’ve done in the last month or two.

  1. Competed at another entrepreneurship pitch competition. I didn’t win, but the competition got me to sit down and really figure out some important business stuff, which I’m really grateful for. Stuff like realistic estimates of costs, timeline to completion, honestly looking beyond what happens if this game succeeds on Kickstarter and then again if it succeeds on Steam, etc. I got asked a lot of hard questions, and I’m happy to say I now feel good about my answers.
  2. Again, grounded teching (and grounded missed teching) is done. Here’s what grounded teching looks like, and as a bonus here’s a funny bug that came up when I was implementing tech rolling. Wait for it, it’ll be obvious. This was surprisingly hard to figure out how to fix, and took me a few days.
  3. Did a LOT of work getting bounced teching/missed teching working correctly, and generally made bouncing around the game look and feel better. Here’s a quick example.
  4. I added rotation changes during hitstun depending on knockback. Here’s an example of what I mean.

The biggest reason this was so tough was because of the way collision detection is handled in UE4. If you’ve kept up with this blog you might remember one of the early posts I made about how jumping into corners or sloped walls often made you bounce off in erratic ways. I’ve learned to expect trouble now pretty much any time collision detection is involved in a feature.

So first off, what is collision detection? If you want a character to not fall through the floor or be unable to walk through walls, you have to tell the game to make it impossible. In UE4 there are basically two types of collision detection: Hit collision and overlap collision. With hit collision, this fires off an event any time two objects touch each other. If you have hit collision turned on for both objects, the game will always try to keep them from overlapping. Overlapping collision is the opposite. In this case the game fires off an event whenever two objects overlap. For example, if you want the character to swim whenever he falls in water, you could use an overlap event for that.

md0un9z

As a refresher, almost all of the collision detection for the character is done with with this capsule pictured above. Whenever you walk or run into a wall, the game is actually only checking with this (normally) invisible capsule. Something I didn’t mention before is that this capsule can only use hit collision.

The information you get for overlapping and hit collision is somewhat different. With hit collision you get to find out exactly where a hit occurred, with what, what the normal angle was, and a handful of other nice things. One thing you notably cannot do is find out when you stop touching whatever you hit.

With overlap collision you don’t get nearly as much information about the thing you overlapped with, but you do get to find out exactly when the overlap ends.

The reason I say all this is that a problem kept coming up that took me 2 or 3 weeks to really chew through. Normally the way the code for teching works is that if you’re in hitstun and you hit a wall (hit collision), then it bounces you off of that wall based on the wall’s angle, your knockback, and some other information. What happens, then, if you are already touching a wall (or the floor) and you get hit into it? The game doesn’t register a hit event because you technically already hit it earlier, so you just end up gliding along the wall, not really going anywhere.

The very short version of how I fixed this is by creating a second capsule, very slightly bigger, that uses overlap collision. A careful combination of both collision data helps me to store information about any wall or floor you’re touching, just in case you get hit into it. This were a lot of fringe cases that took some serious work to get functional, such as if you walk over two different types of land (sloped or not) or if you’re touching a floor and wall at the same time.

Anyway, next up is polishing the movement during tech rolls as well as some of the animations. Afterwards is getting the falling state finished (easy, already mostly done), and then it’s onwards to blocking!

10/14/16 – Progress report – Looking forward and many thanks

Hey everyone! At the end of last month I gave a presentation to Mississippi State University’s Entrepreneurship Center Advisory Board (what a mouthful, normally we call just it ECAB). I mentioned in a very early post here that I came to MSU to get my MBA, and a big part of choosing MSU was because of my positive experiences as an undergrad with the university’s Entrepreneurship Center. Since coming back to Starkville they’ve been incredibly helpful in so many ways. I want to give huge thanks to Eric Hill in particular, the head of the E Center, for meeting with me several times to give me advice, helping me prioritize, and helping me organize my timeline to keep myself focused.

Anyway, I presented at the end of last month to get both advice and ask for one of the university’s start-up grants. They gave me both!

I’m extremely close to being done with the prototype version of the game (it’s currently playable for in-house playtesting), and so this grant money is the final financial aid I needed to get to Kickstarter. It’s the final push!

Obviously I’m not on Kickstarter yet so this may be premature, but I wanted to take a moment to thank all the people who have helped me get this far. Whether I end up succeeding or not, these people all deserve to know how much I appreciate their advice and support.

First and foremost, I have to thank both of my parents, Rick and Shelly Gilbrech, for their love and support. I doubt I would have even tried if both of my parents hadn’t encouraged me to pursue it. Thank you so, so much for your support then and every step of the way.

Brandon Gilbrech and Jeff Hsu for both of their help in brainstorming gameplay ideas, critiquing my work, and helping me stay motivated.

Eric Hill, for all the reasons I said above and much more.

Angelia Knight, for all her support throughout the MBA program and beyond.

Nick Thompson, for being my mentor as an indie game dev, for answering all of my scrubby programming questions, and for sharing my passion for indie games.

Nathan Bercaw, for always being there to give me advice, bounce ideas off of, and being just an all around great friend.

Rajiv Puvvada, for being the friend and mentor I don’t deserve. Haven’t heard from you in a while, but I always know I have your support whenever I need it. It means the world to me.

Starkville Melee for the best memes and Melee nights on the planet. You guys are all great, and you constantly remind me why I love the Smash Bros. community. You make me want to give back to the community I grew up with, and that’s what this whole project has been about from the start.

Thank you all.

9/22/16 – Progress report – HUD, Teching, and Missed Techs

Okay! It’s been a while since I updated last, but I have a lot to show off. First, the HUD:

474b2993929ac64df10197d7691e5e44

It’s pretty basic looking, but it took some work (and math) to get it to display properly on every type of display. No matter what resolution your screen is, the percents at the bottom will display properly at the right size and location, as will the markers above each character’s head.

The other thing is much cooler, and more fun! A month ago if you got hit into the wall or ground, you would just sort of stop there, which is boring. Now if you hit a wall or ceiling you bounce off of it. You can also bounce when you hit the ground, but only if you’ve been spiked into it. In that case even if you tech, you’ll still end up in the air, but you’ll be out of hitstun. It’s a neat mechanic I’ve been playing around with, and I’m looking forward to playtesting it further once the game has all its bells and whistles.

Oh, and teching is in the game as well. For anyone not familiar, that’s where you press block before hitting a wall, ceiling, or floor. If you time it properly, you’ll end up stopping your momentum, ending hitstun, and be able to get back into the fight as fast as possible. It’s one of the core mechanics in the Smash games, and it’s a very fun tool.

I’m not 100% done with teching/missed techs yet. There are still the grounded tech options I have yet to finish, but the really hard parts were getting the physics right for bouncing off of walls and slopes. There are still some kinks to work out, I’m sure, but after several weeks of work I’m happy with how consistently the character bounces off of walls correctly. It’s also really fun when playing around with it, so that’s exciting.

This weekend I’ll be busy helping with a move, but once I’m back home it’s back to finishing the rest of the tech options. After that, there really aren’t many more features to create! It’s the final stretch!

Oh, and as a bonus, my brother and I were playing around in the game for a bit. Here’s one of the clips we recorded. There are still things left to iron out, but it looks and feels like the game I imagined when I first set out on this journey.

8/17/16 – Progress report – Aerials done!

Finally, all of the aerials are completed and in the game! I had to redo two of them from scratch because I couldn’t figure out how to get the particle effect I was going for. I also touched up several other animations (mostly attacks) and spent a lot of time making particles since the last blog post. Most of that stuff is not really able to be showcased, but the attacks are! Here are the five aerials both in blender and in the game:

  1. NAir: Blender & in-game
  2. FAir: Blender & in-game
  3. BAir: Blender & in-game
  4. UAir: Blender (full speed, half speed) & in-game
  5. DAir: Blender (miss), blender (hit), & in-game (both)

I already know I’m going to have to go back and either fix or redo the FTilt animation since it looks…off right now, but for the moment I’m satisfied! The game actually feels playable, which is really amazing.

There’s still a lot of work to go. Tomorrow the first step is to finalize the knockback and damage formulas, after that I’ll probably get to work on the four special moves. I have an idea of what I want for two of them, but I’m not completely sure what I want to do for the others. Guess we’ll see!