culture

Building an FPS #4: Catching a Second Wind

Jul 11th 2017

It's been 3 months since we last posted about our first person shooter game, The Range (working title). As I sit down to write this, I realize that while a lot has happened in that time, the project also suffered a bit of a lull. But we've caught a second wind in recent weeks and the project is gaining ground.

A Word about Lulls

In my career, lulls and uninspired seasons of production are extremely threatening to a project. Whether it's a feature film with millions of dollars behind it or a passion project with friends, I've seen distracted, unproductive stretches absolutely kill projects. Maybe it doesn't bother some people as much as it bothers me. Perhaps some see it as a natural way of weeding out "unworthy" projects from the "worthy" ones. For me it's pretty upsetting when a creative idea, birthed by such excitement and passion, dies. They inevitably live on in my head as milestones of missed opportunity. (Sheesh, my work music today must be particularly emotional or something...)

My point is to nurture the passion that inspires your projects. Beware of the lulls that will come and do what you can to maintain momentum. "How," you ask? That's the trick to figure out; there isn't a formula. In my experience it's been a combination of a few things:

  • Small victories during production; stuff to mark off the list that definitively proves progress.
  • Collectively reminiscing and expressing as a team about what was and is exciting about the project.
  • Brute-force discipline. Passion projects are always a daunting amount of work. Work that every team member needs to DO, plain and simple. Be inspired and challenged by this profanity-laced advice from Beeple: An artistic juggernaut that has done more digital art by himself than most digital artists combined.

So what has happened with the FPS project?

First Courses Recorded

Being CG Cookie, our passion projects are two-fold: 1) To create something awesome and 2) to share great education about that awesome thing we created. The latter extends the project's production timeline and can cause lulls, so we've learned. But that's what we've been doing the past few months and some excellent courses have come and are coming from the project!

Courses directly inspired by the project:

Courses directly teaching aspects of the project:

  • Designing a Robot Character: Tim's course about his workflow for concepting the robotic protagonist of our FPS. It's recorded and almost ready for release!
  • Modeling a Robot Game Character: My course about modeling the robot Tim designed is complete and releasing this week! It evolved into a comprehensive 37 lessons and covers one of my most intricate modeling workflows to date. Check out the trailer:

Game Asset Progress

Lampel has continued his work with the game's weapons and they're turning out really well! He's finished PBR-based textures and shaders that he painted with Substance - So you can expect some more Blender + Substance education coming down the pike.

In addition to building the weapons, Lampel has rigged and begun first-person animation. Like most of this project, first-person design is a first for us and we're learning really cool things about it. All of which will be shared with you in time.

Gameplay Development

Most of Gonzo's dev effort lately has been focused on the third-person character controller. Despite this game primarily being a first-person game, third person animation is necessary as the player will see other players running around. So we decided to start here with hopes of working out the kinks of a Blender-to-Unity pipeline so that we could approach the first-person animation (arguably more important) with a refined workflow. Accomplishing a high-quality third-person controller has proved trickier than anticipated. Having no game dev experience myself, everyday I'm realizing the crazy problems dev have to solve behind the curtain. Devs are magicians!

It has been quite tough to nail down the proper feel [of the third person controller]. Currently we have what feels like a smooth controller while on the ground, but airborne states are still a work in progress. Getting animations to sync properly with the controller or vice versa can be quite challenging but we're learning a ton along the way and we know it will only benefit our members when we teach what we've learned.   -Gonzo

We embedded a WebGL version of our 3rd-person testing stage. It's simple, just the ability to walk/run the character around and jump. It's not perfect yet, especially jumping and falling big distances, but please poke around and comment with feedback if you have any! Also let us know in the comments if the build runs smoothly or choppy on your computer. Keyboard controls: Mouse to look AWSD keys to move and SPACE to jump.

If buttons do nothing, click in the window. ESC key to exit (make mouse cursor re-appear). 

Project Management

Another thing the team has realized is the importance of organized project management. Until last week, we had primarily been sharing files via Dropbox and posting updates/communicating about the project via Slack. We had zero granular asset tracking and no Unity project versioning systems in place. We know now that this cannot fly. We instituted Unity's built-in "Collaborate" feature for syncing Unity project files among team members - which is separate from file storage on Dropbox.

We also found a site called "HacknPlan"that's designed specifically for game development task management, and it has a free basic membership. Both are still new to us but they've been hugely helpful so far. Admittedly, project management wasn't something we expected to learn and eventually teach, but it's a pretty clear necessity at this point, even for small teams.

That's all for now. Till Next time!



See previous Dev Logs for more info about our FPS project: Building an FPS #1 / Building an FPS #2 / Building an FPS #3


Author

Kent Trammell
18 Comments
Add a Comment

Get the latest

Sign up with your email address and get the latest, straight to your inbox.