Jesse Lawson

buy me a coffee ☕ / home / blog / tutorials / portfolio / hire me! / contact

Sep 23, 2018 - Waystation Echo devlog

Waystation Echo Devlog 4: Big Decisions, Being a Solo Dev, learning Blender, and Biting Off More than I Can Chew

Buckle up! This one’s a big one.

No more third-person

TL;DR: Trying to do my own animations for a third-person game is ridiculous and one of the dumbest things I have ever done in game development.

An old Gamasutra article caught my eye this morning. In it, the author discusses the differences in player immersion between first and third-person games. While primarily focusing on shooters, I think the article speaks to a psychological phenomenon that all players experience regardless of the POV: a sense of empathy for the player.

I think empathy is the root of the immersive experience. It’s not that you have to bake in ways for the player to have to empathize with someone or something, but rather, that your connection to the player is a result of an inner need for us as humans to empathize with each other. In this way, it would seem that the decision to make a third-person game instead of a first-person game was ill-conceived from the start.

Yes, this is one of those posts. Due to the design decisions I have made and the lack of planning when it comes to player experience, I may be converting the story of Waystation Echo to a first-person one. In fact, I think I have just been waiting for the right push to do so.

For starters, most of my time has been spent getting animations to run and blend correctly, instead of scaffolding the elements of my game that I want to work on. Animation and meshes also bring in a huge graphics/art component to the requirements of the game–something that I can’t bring myself. Eventually I would like to bring in some 3D artists, but I want them to focus on props and environment, not character movements and decorations. From this perspective, it might be that third-person games are more suited for a team environment, and not for a solo dev like me.

Secondly, I really like first-person games. That’s the genre I’ve been playing since forever, and a lot of the inspiration for how I create a game comes from the FPSs that I grew up with: Half-Life, Quake, Fallout… I think the first-person genre is plagued with expensive cinematics and forced-choice gameplay (like having to follow someone, getting a penalty for “leaving the mission area,” etc), and it’s really only indie games that are trying to push the envelope back toward environments that you explore, situations that arise out of player choices and not necessary because the player did A,B,C as scripted. In this way, you might say that I miss those old exploration-based first-person shooters, and maybe Waystation Echo is a way for me to pay homage to the old days of story-driven, do-what-you-want first-person games.

Coming Full Circle

TL;DR: Waystation Echo started in Unreal, was abandoned while I worked on other things, was re-prototyped in Unity, then re-re-prototyped in Unreal.

Waystation Echo was first conceived as a first-person survival horror game, like if the folks from Id Software had to create a first-person shooter inspired by the movies Event Horizon and Sphere. I prototyped it a few years ago in Unreal Engine and that prototype was the permission my creativity needed to keep working on it. Eventually, as most of my pursuits go, I was working heavily in Unity and decided to re-prototype the game in Unity. I did that, then vicariously got back into game development by going back and really reconsidering what I was doing with my pursuits.

My roots are in C++. I don’t know how to explain it. From the early days of teaching myself ANSI C from a book I got at the local library, to my first foray into game developement with Andre Lamott’s book on OpenGL game programming, I’ve had a special place in my heart for C/C++ that I find myself always trying to get back to. It’s like there’s a gravity in my pursuits that is constantly trying to pull me back to my “roots.” I don’t know how else to explain it. I loved writing Gravity Grid in Java and LibGDX; I love writing in Unity with C# and scripting components very quickly and easily; there’s just something that pulls be back to Unreal and C++, though.

It was easy to sell myself on coming back when I got real with myself and admitted that Waystation Echo was more like a first-person shooter than it was not. Being able to admit this was a revealing moment to myself, since I really could just go all out and use the game engine designed for first-person shooters to make my first-person game. So in a way this game has come full circle twice–like Entertainment 720 (kudos if you get the reference)–in that I went from wanting a first-person game in Unreal, then moving to a third-person game in Unity, and finally growing up and admitting what it was I wanted to make: a first-person game in Unreal.

Redoing everything in Unreal as a first-person game wasn’t too crazy. I created a new project and just migrated over everything as best I could. It took a bit since I had to go through the Content folder by hand. This was the first run through:

Yikes! I had a lot of work to do. Mostly just migrating. I got it all complete and then said to myself, “Self, why not add some atmospherics!” So I did:

I added particle systems woven between my strung-up light system. Overall, here’s the final(ish) result:

It’s coming along!

Learning Blender

I decided early on that I would use Waystation Echo as an excuse to teach myself 3D modeling. I’ve been doing it for a few weeks now and I have to tell you that I am awful. Which is perfect, by the way: being awful at something and persisting through it is the hallmark of good work ethic and getting things done. I know it seems antithetical to productivity, but being productive is far less important than being creative. What I mean by that is this: give yourself permission to play, to screw around, to tinker, to experiment and learn, and you’ll find that things just get done. As long as you have a goal in mind and are working and tinkering toward that goal, you’ll get it accomplished–in one way or another.

Learning Blender has been frustrating because the keyboard controls are so different from what I am used to. Switching back and forth between Unreal Engine and Blender requires a few seconds of mindshifting for me, and I still end up trying to use Blender controls in Unreal most of the time.

After going through a crash course in modeling and texturing, I decided to take a stab at my first item: the Charge Tool that is the essential item in the game.

Here’s a shot of the basic outline of it. It’s a hand-held tool that either de-charges a power relay or charges a power relay:

With the basic shape done I added some subsurface smoothing:

Unwrapping this thing was fairly easy since I used common sense in marking the UV seams. I used photoshop and some stock brushes and eye-balled some colors. I added some pictures of a keypad I found online, and mocked up a dumb screen:

As you can see I am obviously very professional and take my work very seriously. (that was sarcasm, btw).

Anyway, after pulling it into Unreal, I added a point light on the screen to help with emission and ended up with this final product:

Here’s another shot:

I think it’s fine for one guy doing everything!

It’s important to not be a perfectionist. Be proud of your work, but be comfortable with good enough. If you have a great story and experience, your visuals wont be that important. It’s fiction, after all.

The next step from here is to learn animation in Blender so that I can start getting the first person arms done the way I want them done. There aren’t really any stock animations that I can use that come with the first person starter content, which is fine since I’d like the experience of making them all from scratch.

One thing to note is that you’ll want your settings correct when you export your skeleton out to fbx so that you can import it into Blender. Also the scaling in UE4 is different from Blender, so don’t forget to adjust your scaling:

So when you first open up an exported FBX (in my case, I exported an Idle animation), you might see some bone oddities like this:

This is your import settings gone awry. Make sure to select “Auto Orient Bones” in the Import FBX settings in Blender. That way you get something more like this:

You can see some left-over IK goodies there. Don’t worry: they wont affect your animations.

After creating some animations and exporting them, you can pull them into Unreal by importing them. Don’t forget to check the box that says “Import Animations.” Forgetting to do that frustrated me longer than I want to admit:

When you first pull it in, you’re going to get something like this:

Don’t worry–that’s normal! It’s because the mesh you are using is different than the mesh you exported, if that makes sense. Yes, you are using the same mesh–but not the same mesh asset.

The way I understand this is as follows:

I created some animations in blender that used a certain bone structure:

When I pulled it into Unreal, You can see that the weird bones are there (likely because I am an idiot), but the mesh is all screwed up–even though the bones LOOK like the mesh should be okay:

Well all you have to do is use the appropriate mesh. In my case, I had to switch it to the mesh that was exported along with the FBX animation I exported:

With the right mesh, I can update the skin as normal:

Then update my assets in the blueprint to use the correct Skeletal Mesh (see right-hand sidebar):

Today I’ll be working on arm animation assets that include the following:

  • Idle loop
  • Running loop
  • Interact animation
  • Charge animation
  • Uncharge animation

Hopefully those all go into another update that has some animated gifs.

Also, I’ve got a ton of concept art that I’ll be excited to mash up against their final rendered counterparts, too. Maybe in a few updates.

That’s all for now. Adios!