City 17: Episode One

A modification for Valve Software’s Source Engine and a love letter to the modding community

Origins & Teamwork

City 17 had humble beginnings. For me, it started as a conversation among friends about individual projects we had been working on and our sorrow over the then recently cancelled NightFall: Initiation, and quickly evolved into us forming a small but capable team. I had only begun toying with Valve’s Source Engine and SourceMods in general, but we were ready to jump in head first.

Besides a few key members, our team size changed often. At our height we had eighteen people on the project including mappers, modelers, animators, voice actors, and a musician. At our lowest we had only myself and our project lead and head mapper, Cory De La Torre.

“Work hours” on a community game project are always an interesting proposition. Cory and myself had the spare time to treat our project like a full time job. Others had understandably far more limited time, and others still were in completely different time zones. Very few of the people in our team were based out of the United States. Learning to get around these limitations and still make reasonable progress each week took a lot of trial and error, but we eventually found a workflow and task management solution that kept us all in sync.

We formed our group known then as GearDev Studios and spent our first 8 months working solely on gameplay, storyboarding, play testing, and polishing maps we already had working. Afterwards, we were ready to show what we had done to the public and the next chapter of our project began.

"This is without doubt one of the best mods I have ever played, even in its unfinished state."

Planet Phillip, 2008

Expanding the Source Engine

At the time we began this project, the Source Engine was already beginning to show its age. We had spent a solid year working on gameplay, levels, and AI adjustments; all the while watching the game industry move ever forward, delivering beautiful and cinematic experiences that we could only hope to emulate. It was at this time we decided to take City 17 in a new direction and focus for a while on just what kind of life we could pump into the Source Engine.

At first we focused on things that Valve Software had already done in their other games but hadn’t released to the public; such as cinematic physics, improved particle effects, use of real-time shadows in more locations, and improved textures with phong lighting and SSbumps. Eventually, we reached the point that any other improvement we wanted to do couldn’t be done with the tools we had in front of us and we set out to add new shaders and effects to the game.

In many ways, this was trial by fire for me. The documentation for the shader system in the Source Engine was nearly non-existent, and very few people in the community had even dabbled in it. Most of my nights were spent looking at old comments, broken links, and the ever-present years old “I fixed it!” post with no explanation or replies.

My first breakthrough was getting a modified copy of Valve’s VertexLitGeneric shader to compile. After that, the sky was the limit.

Added & Modified Shaders

  • Crepuscular Rays
  • Dynamic Skydomes
  • Phong shading on lightmapped surfaces
  • Chromatic Aberration
  • Static/Noise & Vignetting
  • Bloom Buffer Lens Flares
  • Approximated Subsurface Scattered Skin
  • Minnaert Cloth Shader
  • Unsharp Blur
  • Improved PCF shadow filtering
  • Bokeh DOF
  • Vertex Animated Trees
  • FXAA & SMAA
  • 4-Way Blend Lightmapped Surfaces
  • And various other object and screenspace shaders

``Is it playable?`` & ModDB MOTY 2011

At the beginning of 2011 we finally began winding down on our engine enhancements, and once again turned our focus on City 17 as a game. We had spent over a year and a half focusing on expanding nearly everything we could; partly for City 17, and partly for the prospects of releasing our complete Source Code along with our game to hopefully serve as a new base for SourceMods and help the modding community.

By this point many of our maps had changed to be unrecognizable from what they once were, and a number of them had completely different order in the level progression. Most of these changes were made to directly improve gameplay; but they had created a greater need for us to finalize the story, complete voice acting for our characters and their accompanying animations and scenes, and finish our (admittedly) over-ambitious ending battle.

The Crabsynth
The Crabsynth

We immediately asked our closest friends if they would be willing to help with voice acting and put out a casting call on ModDB for anyone else we could get. Meanwhile, we had an ending to finalize. We looked toward Valve Software, as we often did while building anything for our game, and found our ending battle in the unused Crabsyth enemy shown during the ending portion of Half-Life 2. Our weapon of choice to fight this monster came naturally from the concept of the Super Gravity Gun in Half-Life 2, and a left over weapon in Half-Life 2: Episode One. During the ending stages of City 17 you were meant to run into a forcefield stopping your railroad escape from the city, forcing you to shut off a power station resembling a very downscaled Citadel core. Doing so would upgrade your AR2 rifle to an incredibly unstable variant, and attract the Crabsynth to your location. This enemy would serve as a bulletproof tank, forcing you to kill it using your new weapon and hazards in the environment. Eventually your attacks would cause the enemy to flip over and give you a chance to deal the final blow, allowing you to board your train and ride out of City 17.

ModDB Mod Of The Year 2011

In the middle of all of this we had ModDB’s mod of the year competition to plan for. In the past we had released small updates or videos during this time. This year we decided would be different. We had enough content complete that a trailer showing areas from the first 3 chapters of our 6 chapter game was feasible. This allowed us to create a full week-long media release culminating in that trailer.

It was this year that we were voted by the community to be in the top 5 upcoming mods of the year.

It’s something we’re all proud of to this day, and we can’t thank the people that voted for us enough for this honor. We came out of 2011 with the motivation we needed to complete the year of work we knew we still had ahead of us as we planned for a Q4 2012 release.

The End & Lessons Learned

In the months after our mod of the year victory things began to get tough for our team. We had found that our casting calls for voice actors simply didn’t produce enough of them, and at the rate we were going the mod would need to be delayed at least an additional year to finish the scenes and random bits of dialog we had planned. Worst of all, the classic problems with money and growing up had begun to occur. Many of us were young and still in high school when City 17 was first conceived, and we had worked on our project for upwards of 5 years purely out of passion without accepting donations of any kind. I was dedicating a majority of my free time to helping my father battle through complications of his brittle diabetes, and all of us were growing older and taking on new responsibilities. Our free time collectively dwindled. Parts of our team would join and leave various different indie projects while others would simply disappear as the year went on.

City 17 was done, and it would go quietly.

Unfortunately problems like these are a fact of life for those in the modding community. Sometimes the more passion you have for something the more likely you are to cause its downfall.

Here are a couple of the lessons we learned while building City 17:

Feature Creep

Any project of considerable size has the opportunity for feature creep. Worse, doing a project for free and out of passion with no real leadership above you makes this problem into a daily battle. When our team decided to use our work to help the modding community as a whole we fell deep into that trap. We would regularly add features to our game if we felt they could be of use to someone, even if our game would never actually make use of them. We similarly had the same problem during regular development. The ending of City 17 changed on four separate occasions, each time growing larger in scale.
Avoiding the trap of feature creep can be done with the right leadership and discipline. Even if you’re making a game for free in your spare time you can’t lose sight of the finish line. Start small doing what you know you and your team can. If you grow beyond your original plans, focus instead on finishing what you originally started before moving on to polishing or adding new features. This way even if you burn out later in development you still have an entire game start to finish to show for your work.

Setting Goals

One of the best things you can do for yourself and anyone you’re working with is to be thorough in your plans. Figuring out everything you need to do to get from point A to point B and having your goals, time frames, and potential challenges outlined ahead of time not only makes your daily work easier, it also helps to keep you on the right track to have your project completed on-time.

Invest in a project management system straight away. Some great ones to note are JIRA by Atlassian and Trello. These tools are immensely useful for both single and group projects.

Finally, I personally want to say thank you to everyone who supported us and this project over the years, and thank you to everyone who considered themselves a part of GearDev Studios. None of this could have been done without each and every single one of you, and I'm proud of what we were able to build with the time that we had together.

Get the Source Code

The complete source code is now available. Feel free to check it out, or use it to better your own free Source Engine modifications.

Did this help your SourceMod project? Email me if you’d like your mod mentioned here.