3/17/18 – Quick update – Game Developers Conference (GDC) next week

This update is going to be much shorter than it deserves to be, but I’ll be updating this again more regularly after next week comes and goes. The very short of it is that everything has been going incredibly well! Big milestones have been:

  • Working at Mississippi State University’s incredible Entrepreneurship Center to both pay the bills and gain a ridiculous amount of experience working with a ton of different start ups. I could write pages about how fun, educational, and valuable this experience was, even though it only lasted 8 months.
  • Raising $250k for the company since the last blog update. This took a lot of time and effort, but everything worked out big time! What’s also incredible is that I seriously love my investors, they’ve all been wonderful sources of insight, advice, and connections.
  • Teaming up with two unbelievably talented artists (Antonio Stappaerts and Esther Smisdom) to design the first batch of characters. On top of being insanely skilled, they’re both also such a joy to work with. Every day is such a positive experience with them – I can’t get over how lucky I am to be working with them both right now. Words can’t capture how excited I am to show off the characters we’ve created, but for now I have to show restraint. Soon! In the meantime check out their ArtStations linked above. They’re great!
  • Going to the Game Developers Conference next week! I fly out tomorrow! It’s got me constantly excited about getting to meet all these talented, experienced people. Being in Mississippi, I haven’t met a ton of game developers in person. It’s an exciting time, and one of the many examples recently where I felt like I’ve “made it” as a real game developer. Not entirely, but it’s one more for the checklist.

I plan to make blog posts about most if not all of the above topics once I get back from GDC, but it’s a week long conference so I might still be recovering well into the week after I get back. Hope my excitement can carry me through an entire week of constant learning and networking.

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!

12/1/16 – Quick update – Only 3 animations left

Like the title says, there are only 3 animations left before all of the core animations are finished. There might be some animations I have to tweak or redo, but as best as I can tell the only thing left after this will be coding. Since the last update I’ve done, redone, or tweaked 15 animations, so this is really the final stretch for animating.

Here’s the parry animation I did, I’m pretty happy with it.

The last 3 animations are going to be a bit tricky, because they’re the character’s special attacks. The reason why I left these for last is because I’ve been waiting for ideas on what these attacks should be, but unfortunately the inspiration never hit me. Oh well, I’ll come up with something. Back to animating!

11/22/16 – Quick update – Animations almost done

Looking at what’s left to finish, there really isn’t much. There are four or five main features left to program, but I was looking at my animations to-do list and realized I could probably knock all of them out in a week or two. Since then all I’ve been doing is animating, which has been fun.

Here are a few of the animations I’ve done that are worth sharing:

The last one took a lot of work (especially proud of the footwork), but I’m super happy with how it came out. The whole thing is an homage to one of my favorite moments in Problem Sleuth, and you can see the source in the clip I provided. The hands are a little bit choppy, but I made a version where the hammer hand is more stationary and it just looked boring. Since the whole thing is an easter egg anyway, I’m not too worried about it looking 100% physics-accurate.

Anyway, out of the 84 animations I have planned for the character, I’m now done with 72 of them. Only 12 to go!

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!