A Look Back: Bank Heist Prototype

Part 1: Intro to Bank Heist

Here’s a post that is a long time in coming.

So many games wind up in development hell, and it’s not uncommon to work on things that never see the light of day. Many projects are cancelled in public failures that dishearten fans and tank stocks. But many more games are tripped up before they are even announced or experienced by the public at large.

As game developers we can learn a lot from these experiences, but many times we simply can’t talk openly about them. I wanted to start a series of posts covering my personal best example of the one that got away.

For me that game was called Bank Heist.

If you’re a game developer on a team with ambitious goals, maybe some of the points I’ll go over will help you and your games. I plan to cover quite a bit of material-

  • Part 1: Intro to Bank Heist [you are here]
  • Part 2: Our initial design talks and rapid prototype phase
  • Part 3: Envisioning our asymmetrical adversarial & co-op gameplay at scale
  • Part 4: The nitty gritty of developing a vertical slice prototype then pivoting before it’s done to turn it into a demo
  • Part 5: Our efforts in getting the game published
  • Part 6: The Joy of Getting Scooped – what to do and what not to do when someone makes such an eerily similar and ill-timed game to yours
  • Part 7: Indie PR and Marketing, Time Traveler edition.

The Setup

Bank Heist was a prototype made using the Source Engine. The game was to finally address the dearth of decent Cops and Robbers games in the market at the time (2009-2010). There was simply nothing like BH, and that excited us more than any project we had worked on in the industry before.

As Lead Designer at Controlled Chaos, it was my role to meld the original paper napkin vision CEO Hunter Woodlee brought to us into a tangible game design. Being a small independent developer, I was also the Level Designer on the project and designed player feedback, player and npc classes, UI, etc. I also created our various test sandboxes, and ultimately the main level seen in the few public videos of Bank Heist that are available out there.

Hunter’s initial idea was a cooperative Heist game – like Left4Dead in a bank. (If your mind is already going to Payday, I’ll cover that in part 6). Our team members jumped at the opportunity to create a game like this, but a key part of the Cops and Robbers feel was missing- we wanted to be either bad guys OR good guys.

Through several rounds of brainstorming and rough prototyping, the heist idea was expanded. Not only would robber players cooperatively complete heists amongst AI cops and civilians, cop players would battle against them, sometimes taking on hidden roles.

In the early stages we didn’t know if players should travel through a linear set of disconnected levels ala L4D, a more circular style of objective gameplay like CS or CoD, or a massive set of push sectors like in Battlefield.

We did know that the game we wanted to make would need a large quantity of feedback delivered to players, levels and player abilities that were dynamically customizable, multiple player modes and game stages within a round, and key attention paid to the moment to moment choices that players would be offered to make.

Overall the game would need to deliver on the promise of both pulling off a master heist, and thwarting the bad guys in a way that made the player feel more like John McClane than Paul Blart.

Example Gameplay

Here is a playthrough of our bank level, with a robber team that takes a no-holds-barred approach. As a reminder, this was a prototype made using Source, with Counterstrike assets such as the weapons, and some textures and models from other Source games. Much of the game assets are original, but low quality since we didn’t have a bar set for graphics or performance at that point.

It’s a live capture of a real multiplayer match, and none of the gameplay is faked except for the scripted moment with the tear gas. In Part 2 I’ll go into how and why this level was made.

I’m excited to share some of our design decisions with you in Parts 2-3, and if you stick around for Parts 4-7 you will get a taste of how your day to day decisions can make or break your game.


*Note: Astute readers will know Bank Heist morphed over time into a project called Vice and Virtue. I'm unable to talk about "VnV" and will only be covering semi-public details from the early Bank Heist days until it was put on ice.

Tuxxi recompiled propper against Source SDK Base 2013

Sweet! My workaround for streamlining propper is no longer needed. Now you can download a version of propper that works with the “modern” Source games, and you don’t have to install and switch between two development environments.

Get the new recompiled for source sdk 2013 propper here ↙


It does not work with CS:GO directly

For CS:GO, put propper.exe in another Source SDK 2013 game’s /bin/ folder. I put mine in Source SDK Base 2013 Singleplayer.

Back in CSGO Hammer, the compiler will search inside of /bin/ for propper.exe. In the “Command” field, this is normally where you put “propper”.

Instead, put the full path to where you installed propper.exe. In my case, here:

E:\programs\Steam\SteamApps\common\Source SDK Base 2013 Singleplayer\bin\propper



Set the Parameters to -game $gamedir $path\$file

Make sure the propper.fgd file is in the CSGO\bin folder, and link it using Tools->Options->Game Data files-> Add


Thanks Tuxxi!


Unity Pro Perpetual Licenses to end March 2017

May 2016 Update: Unity did end up announcing a subscription-only model (although it will be possible to buy a version outright as well). My numbers were a little off but Unity did add a middle tier. There is quite an uproar over the inflation of the pro cost and the inclusion of the Unity splash screen in the lowest paid tier. But I do think for most small teams, they simply don’t need the extra features. Compare the current free edition with the one from 5 or 6 years ago. There is great value in even the base version.


It’s now cheaper to subscribe, rather than buy a full priced copy of Unity 5 Pro. Same goes for any of platform licenses such as Android or iOS.

A subscription to Unity Pro costs $75/month. A Unity Pro iOS or Android add-on costs $75/month/add-on.

Running the numbers, it’s clearly cheaper to go subscription at this point.

  • Feb 2016 – March 2016 Unity Subscription Cost: $900
  • Perpetual License cost as of Feb 2016: $1500
  • Math Wins. A fresh team ramping up right now should save $600 by Subscribing.

This has surely already been noted elsewhere, but Unity’s store page has listed March 2017 as the drop dead date for support of perpetual licenses.



This could mean Unity 6 will launch and wipe the old perpetual licenses, or it could mean Unity is going subscription only.

Check this out. It’s the slightly hidden Perpetual License Page:


Even the hidden perpetual license shop page ends with…a gentle tug back towards the Subscription product!


I have a feeling we’ll be seeing a subscription-only Unity soon. But I really wouldn’t mind if Unity adopted a similar Rent-to-Own model like Allegorithmic’s Substance Indie. Maybe Unity can bring back an indie-centric SKU which is around $300, for $20/month?

Perhaps something like this:

  • Unity Personal: $0
  • Unity “Indie”: $20/month for 18 months, then it becomes perpetual
  • Unity Pro: $75/month

The key would be offering something like Team License or Cloud Build (which are currently Pro only). What do you think?

Source SDK Mapping: Automating the Propper Pipeline with SyncBack


Note: This isn’t a guide to setting up Propper. For that, check out the SourceSDK documentation and TopHatWaffle’s guide. This is a guide on automating your workflow so that you can spend more time iterating on meshes and your map, and not worrying about the locations of dozens of files.

A Propper Introduction

While getting into some nitty gritty model creation and map optimization on de_boardroom, one of my go-to tools is Propper. But for several years now, propper has only worked via a fairly simple yet annoying work-around. SyncBack is a dead simple tool you can use to automate part of the process.

With OLD propper, you would make an element of a map using bsp brushes, then decide it’s worthy of being a model instead. It could be that you planned for it to be a model from the start, and just used primitives to block it into your level. At this point, you might install propper, hit build, and use it like any other model.

But with “new propper” you couldn’t do this. You make an entirely separate mod, just for propper. You have to get all of your content into that mod, and mapped correctly. That part is pretty drawn out yet it’s simple. The problem I ran up against is in the actual using of the pipeline.

Take my map de_boardroom.  stats_de_boardroom_2015040102

I redefined the feel of the outside of the building, and at the same time proppering the new modular pieces so that I’m not wasting tons of detail brushes on exterior walls which won’t really be seen. So in CSGO, I prototype a few modular wall pieces that I’ll use. I even built out a basic version of the entire building in a side copy of the map, to see if it was really the direction I wanted to go. Once saved in my map, I usually copy and paste out individual pieces into their own vmf’s. Previously, this is where you’d just ‘propper’ the brushes into a model and be done. Now, I have to get my vmf’s into my Propper Mod first.

I’ve got dozens of models, which equals hundreds of files. My eyes glaze over at the sight.

Once in propper mod, I grab it, name it, and build to propper. Repeat dozens of times for little pieces. Now – grab all of those files, which are in proppermod/models/ and proppermod/materials/.. and move them to the corresponding location, back in CSGO.

This is the part that kills me.

  1. I’ve got dozens of models, which equals hundreds of files. My eyes glaze over at the sight.
  2. I’m iterating multiple times on each model- nothing is perfect the first time anyway.
  3. And now I’m in windows explorer, moving files around at 3am, between folders with names like source/prop mod/source sourceSDK/source, and materials/models/props.

This is time consuming, highly error prone, and annoying. 

So – automation.

The Proper Propper-Source in SourceSDK (say that 10 times fast)

I could write a batch file that would do the same thing I’m about to describe. It would copy anything in X folder and put it into Y. But then I don’t really know if it worked (paranoia), I can’t see it happening, I don’t have a record of what happened without writing even more junk into the batch file, and if I want to change the way I’m copying files, I’ve got to edit the batch file.

Instead, I chose SyncBackFree. This is a great little backup application that I have used personally and at a former employer to do the local back ups on various servers and repositories. It’s free, and stupidly powerful.

Here’s the steps to automation:

0. Grab SyncBackFree, and install it.

1. Set up a profile for your map’s model folder and a profile for the map’s materials folder. My profile names are Boardroom Propper Models and Boardroom Propper Materials. SyncBack will ask you if you want to Backup, Synchronize, or Mirror. For this task I chose Backup. I don’t want to complicate things by synchronizing or mirroring, since I’ll have other models that are totally unrelated to Propper. This is only about moving the latest files into a different directory, which is the definition of a backup.

2. Drill in and set up the full source and destination paths for the Propper Mods Models and the CSGO Models. Hit OK.models-rule


3. Now do the same for your Propper Mod Materials and the CSGO Materials paths. Hit OK.


4. Once finished, review your setup in SyncBack. Really awesome so far, right?


5. Now, go into SourceSDK 2007, in your Propper Mod. Make a model using propper. Hit F9 and build to the Propper target. Don’t even look in your directories for the vtf’s, vmt’s, vtx’s, etc. Just go straight to Syncback.

6. In SyncBack, Hit RUN on both of your tasks. You’ll see a nice GUI pop up with the files, press Continue Run to confirm it.


7. Now close Source SDK hammer, and open CSGO hammer (or whatever game you are mapping for).

8. Open a map and hit Shift+E, Enter. Select prop_static. Open the model viewer using the Browse button in the World Model field. Type a few characters of your model name – voila. You should see the model you created.

What if I don’t see the model? Pink checkerboard?

  • You typed in all of the source and destination paths correctly, right?
  • You made sure to set up syncback profiles for both models and materials?
  • You hit RUN and both profiles finished?

Most errors with the Source art pipeline end up being incorrectly typed path names and file names. Triple-dog-check them.

I’m not a dirty CounterStrike mapper, I make Portal maps! Cake!

Use SyncBackFree to set up any number of Profiles. Remember, a profile in SyncBack always consists of a point A and a point B. Any time you end up religiously copying files over and over, think about automating it.

Other Benefits to SyncBack

  • Note that since we set this up as Backup, it will only affect files that have changed. If your models share textures, you will end up overwriting certain materials multiple times, but that’s no biggie. It totally works fine.
  • SyncBack has Simulated Run, a feature that lets you see the changes that will happen when you actually run the current sync rules. The ultimate gut check!
  • SyncBack also has a log, so you can see the last action that happened. A couple of times I made naming mistakes in Propper that I didn’t catch. Rather than sift through hundreds of files, I checked the SyncBack log and noticed my mistake quickly, out of only the handful of files that were actually changed.
  • You can also create another SyncBack profile and set it on a daily timer, which will copy your entire mod, or specific files, over to another hard drive for backup. I also suggest something like CrashPlan for general PC backup.
  • While we’re at it, since I know that most mappers aren’t using version control – get a clue- be professional! Real gamedevs use version control. Start with SVN, or even better, GIT. I say to roll-your-own Git, but you can also use the popular GitHub.


SyncBack is a free, full featured backup tool which can make your life much easier. Hope this works for you too.

What other tools like SyncBack are out there? Is there a better way you’ve found to use Propper in a full scale level with dozens of props? Hit me up!

The Smoke has Cleared: Analyzing Workshop Stats for De_Boardroom

In early February, I posted my CS map, de_boardroom to the csgo workshop. Here’s the breakdown of how the map was received, and a brief outline for future versions of it.

Initial Fervor

The CSGO Workshop mimics other game marketplaces. You make all of your downloads in the first one to two weeks. Notably, within the first day the map sputtered to life, then picked up a steep- then steeper rate of downloads.

An interesting trend emerged: The number of New Visitors vastly outnumbers the actual Subscribers once the map hit the Front Page of the workshop. This ratio finally settled at about 50-50 which is actually a pretty amazing click-thru compared with some of the shipped titles I’ve worked on.





Competitive Scene

Ultimately, the feedback I received via comments was mostly positive (after filtering out the majority of the comments, which are spam). The experimental nature of the level design meant that I was never going to make it into any servers playing Competitive CS. But that was OK, my goal from the start was to explore a non-traditional CS map style.




Bugs & Revisions

Though I did release several new versions of the map, they were mostly bug fixes. One was a severely bad bug, which might’ve affected my downloads during the key time period. However I did fix it and engage with some users who had keyed me into the bug.

My Trello board for the map still lists several serious bugs, and a lot of additional tasks that I’ll go into in a minute. The bug fixes will have to wait, as I’m swamped and this is after all a “free time” project.

Community Testing

One thing that I will add to my process in the future is to facilitate playtesting with the community in a more open way. Mapcore has a dedicated testing time set up which I plan to use, and I’ll also run the map on my own server. I knew that I should be doing this but wanted to have an initial limited release – I didn’t expect to get so many downloads on this first go-round.


Future Development

The plan with de_boardroom:

1] There are a few gameplay tweaks that need to be made to the flow that will come now, and some will come later. In general, to make it into a great CS Demolition map worthy of a place in a CSGO map pack, the level would have to be largely broken up, and spread into the typical CS layout. That’s not happening, because-

2] The main plan as far as gameplay is considered is to create a new game mode, along the lines of Spies vs Mercs from Splinter Cell, or the Infiltration phase of Vice and Virtue. Features like extensive overlapping floors, multiple points of egress, and a single, gaping weakpoint for the Terrorists, will dovetail nicely with a slower-paced yet high stress style of play. More on this in a future post.

3] The art of the level got a lot of compliments. However there are zero custom models made outside of hammer. I went old-school and created bsp based geometry, and exported them via Propper. There’s nothing exactly wrong with this – but there is a lack of some certain architectural details on the exterior, and the large modern sculpture hanging in the atrium is literally a blurry, blocky set of detail brushes. All have planned models and textures that need to be created and inserted.

4] Character. I’m actually happy with a lot of the areas in the map, but much of it is like a broken bridge that has no rubble underneath it. By that I mean, there is a missing narrative element that can only come through additional models and textures. Where is the building, what company has this modern take on a stodgy style office, who sat at this boardroom table and why do terrorists want to destroy it? I have a detailed story to tell, and I know some players will really dig it.

I have had all of this in my head, docs, or in collections of reference, for 18 months, and I’d like to go on and get it out.

5] If you got this far – here’s another tidbit. There’s a secret plan to embed some secret content into this map. I can say no more.

Thanks for visiting. Check it out on the workshop if you haven’t yet:


de_boardroom 0.1 released on Steam Workshop




Version 0.1

A multi-tiered corporate boardroom in the penthouse atop a century-old skyscraper. Focus on tight quarters, verticality, and non-traditional CS.

*two-bomb DE gameplay at the moment
*multiple custom models

*Support more gametypes
*Soundscape/audio pass
*Bombsite B needs work
*Update radar image
*Clipping pass
*Replace more geometry with custom models, such as the white sculpture hanging in the atrium
*Add place names to navmesh
*Fix zfighting in a few lazy places
*Additional detail pass
*Environmental story telling
*Performance testing and optimization
The exterior of the building has been built out almost completely. I can’t promise that will all stay as it is unecessary to see during gameplay. It will be used in some promo shots and new assets for the level, but ultimately removed since it will improve performance for older pc’s.



New CSGO Map De_Boardroom: Major lighting pass, detail work, new building exterior.

I’m super happy to post this update.

Here’s what’s happened since I started re-skinning the level exterior, and detailing the interior. FYI still a lot of WIP art, most notably the large hanging sculpture in the center of the main atrium.

  • Created a dozen or so models for the exterior. Really would like more to match the architectural look I’m going for. Will need a seperate post to explain those.
  • Pieced the models together into the building exterior, after painstakingly removing the old geometry.
  • Brought in some portal2 assets, placed in level.
  • Major lighting and fx pass.
  • Detailed interior geometry and texturing.
  • A few semi-major flow changes which might get rolled back.
  • Not pictured – radar (minimap) texture is in, in a basic form.
  • Nav mesh work.
  • Fog/sky work. The building is shorter now, so the effect it has on the shadows from other buildings is bothering me, might raise the building back up.

de_boardroom level design work in progress – new architecture

After a lot of debating and hem-hawing, I’m switching the architectural skin of the building from a generic modern look to an older and move developed Neo Gothic (with a touch of Art Deco) style. The old floor to ceiling windows on most rooms will be gone, and the general feel of the level will be much more rich.

Originally, I started this level before the now-famous Agency was released. Agency is an amazing work, and though my original goal was to create a modern skyscraper with that sort of detail, I never solidified the exterior design and what exists on the outside (and parts of the inside) are too reminiscent of Agency. This is not to say I’m drastically changing the flow, but the level finally has a real theme, instead of what was essentially a generic modern building that could be backdrop material in GTA.boardroom_neogothic01


That said, here’s an early shot which shows the new direction. The work is still rough and I’m working mainly at this point to nullify horrible redo mistakes by completely implementing this change in a copy of the level, then doing it again it in the actual level. Like in programming, everything is easier the second or third time you do it. Since I can only work at most a few hours a week on this project, I have to go in like a surgeon, or I would simply destroy a lot of work that would have to be redone over a course of weeks. Measure twice, cut once.

The styling and structure will be based off of a number of images and actual buildings, namely the Fisher Building in Detroit.


Screenshot Update – de_boardroom map for CS:GO



New shots uploaded tonight. I’ve been able to peck out an hour here or there on this map over the last month, and I’m at the point where I require feedback. I’ll be uploading soon, very soon, for some initial testing. I won’t be doing any more work on the map itself before uploading, but I do need to create a basic radar image for the hud.

New bombsite for boardroom

Playing around this weekend with having two bombsites in this map instead of just one. So much verticality, I like the idea of giving the T’s a bombsite within a few seconds of the spawn. It is likely to spread players out more yet the silo-like vertical paths should let shifts/feints happen quickly in response to one team or another. Definitely not a conventional CS map.


new bombsite

Bombsite B