gamedev

Source SDK Mapping: Automating the Propper Pipeline with SyncBack

sdk2007-syncback-csgosdk

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.

materials-rule

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

mainwindow

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.

modelwindow

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.

simulate-run

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!

de_boardroom 0.1 released on Steam Workshop

boardroom_iso_v0.1

http://steamcommunity.com/sharedfiles/filedetails/?id=388019891

 

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.

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

TODO:
*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.

350px-Steam_workshop

 

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.

fisher_building

Don’t Fill the Gaps

Last weekend I had a few hours to kill with my daughter. She’s probably too young, but nostalgia got the better of me, so I threw Never Ending Story into the ps3. It had been years since I watched it, and I enjoyed sitting there with a surprisingly quiet and enrapt 18-month old.

Artax
Later that day, she kept saying “Horsie – Oh NO!” so hopefully I haven’t scarred her for life.

While watching, especially the ending, I was reminded of some of the Assassin’s Creed storyline. If you haven’t played it, I’ll just leave it at that. Go play a few of the AC games. Anyway-

This got me googling, and I ran into this primo piece, which you should read! The crux:

The great temptation, the fatal temptation, of adult fans of fantastic fiction is the temptation of Law. We want the contents of our imagination taxonomied and classified, ordered and indexed, subject to rules and regulations. Gaps exist to be filled. Mysteries exist to be solved. Legends are just timelines that haven’t been formalized yet. Fantastic fiction becomes a code to crack.

 

Building Massive Worlds

With this, I was immediately struck by my recent endeavors on creating yet another new world and the story to make up the game. Yes – it’s very hard and time consuming. With games you’ve got narrative, characters, world, and you want it to relate to the gameplay as well, right?

And I had this nagging feeling the entire time Bungie described their new world: this is all too much. Cart before the horse, creating empty slots to be filled just because you “need another slot”. It’s all very disconcerting.

We need to be writing with the gaps in mind, and not afraid to have some holes. LOST got away with it, and only failed in the viewership’s eyes because they slowly filled everyone’s gaps. Once you set up a question in the player’s mind, they will fill it with some sort of answer. If the questions are wild enough, you’ll have millions of different answers, which your players will spend hours and hours arguing over. If you fill your story gaps with game content, you are removing the meta-story content from your world. And those hours spent discussing and arguing – players long for that experience. Leave the gaps, let players use their imaginations.

New indie game project: hatchlight

Other Pastures

Please check out my new project, hatchlight. We are focusing on rapid development of ios games. When I say rapid, I’m talking 2 week dev cycles. One level higher than a game jam, and with the same goal of creativity.

The games are complete, though lacking a ton of content or really expansive gameplay. But we are structuring them for a long slow build, where each game can get new gameplay and levels as needed.

RLR

Our first game is called Rescue Love Revenge, and is already out. The game is an “Episodic Retro Indie Three-Act Spaghetti Western Platformer for iOS”. We had a freaking blast making Chapter 1, and hope that we get enough support to really flesh out the story.

Indiana

Our second game has no title yet. Its code name is Indiana, and it’s an exploration and collection game. The vibe is similar to many puzzle and adventure games, though we are adding our own twist.

Building a Community

One thing we are doing with hatchlight that we did not do enough of at Controlled Chaos is talking. We actively blog and share development, and already have half a dozen web builds posted. We also plan to be active in the Dallas gamedev community, hopefully we can make it to the April GameDevDrinkUp!

We came so far..

For those interested, Controlled Chaos is still around, but had to lay everyone off. It was a great 4 and a half years for me, coming on at the very beginning as employee number 1. In my time at Controlled Chaos, I worked on so many projects and different types of projects, I can only say that I’m thankful for the experience.

We started cchaos when the app store was still in its infancy and people would look at you funny when you said that you were starting a studio “to make iPhone games”. In addition to our mobile work, we were busy:

  • prototyped a first person shooter (that’s a whole ‘nother blog post…)
  • developed a potentially ground-breaking location based Augmented Reality quest game that was heartbreaking-ly cancelled
  • created The Quest to Lava Mountain nutrition-oriented zelda / metroidvania

and so many other cool projects for clients. Plus, aside from some major ups and downs, working at and building Controlled Chaos was simply a lot of fun.

Now the task of starting over. As we say at hatchlight, “We won’t make the same mistakes. We’ll make new ones, and it will be spec-tac-u-lar.”

 

Visual Hierarchies & Game Development

Triangles of Power

Hierarchies are useful. They are meant to help us make decisions based on simple and definable categories.

I’m not really interested in hierarchies in an academic sense. I’m more interested in quick, well organized, rememberable “adages”. We can use these to help make better games, business decisions, or solve any number of problems; hierarchies are cheat sheets.

Ladders

A perennial favorite hierarchy in game development is Maslow’s, which I learned in College Psych, and the game community has been aware of in some way, probably since I was 12. I’m not bringing it up to discuss the merits of providing creature comforts within virtual worlds.

What I find interesting is the graphic representation of the Hierarchy of Needs. His hierarchy requires a step-by step ladder approach. Without a bottom rung to stand on, the body quickly tires and loses grasp of an upper rung. And being a triangle, it is smaller at the top, and wide at the bottom. This graphic characteristic automatically triggers our monkey-minds to assume that the base is most important, yet the peak is most desirable. You can innately understand the relationships between food and sleep, and make an informed assumption that it’s likely that most of the world will never reach the top of Maslow’s ladder (or at least stay there forever).

Hierarchies as Prioritization

I’m a big fan of crossfit (the fitness protocol you either love or hate). One thing I latched onto when I first started scouring the crossfit website was “A Theoretical Hierarchy of Development”.

Theoretical Hierarchy of Development
Crossfit’s Hierarchy of Development

 

A Theoretical Heirarchy of Development
A theoretical hierarchy exists for the development of an athlete. It
starts with nutrition and moves to metabolic conditioning, gymnastics, weightlifting, and finally sport. This hierarchy largely reflects
foundational dependence, skill, and to some degree, time ordering
of development. The logical flow is from molecular foundations,
cardiovascular sufficiency, body control, external object control,
and ultimately mastery and application. This model has greatest
utility in analyzing athletes’ shortcomings or difficulties.
We don’t deliberately order these components but nature will. If
you have a deficiency at any level of “the pyramid” the components above will suffer. (link)

Serious athletes may come crashing down on me with valid reasons why “The Hierarchy of Development” is wrong. Or maybe it’s the best and simplest expression of fitness yet. Either way, I think crossfit has basically posited this little pyramid as the “if all else fails, try this” lesson plan. Like Maslow’s, the Crossfit hierarchy is based on lower levels being the foundation. It’s obvious that without nutrition, the rest of our world is going to be a mess. But why order the rest of the items like they did? Why does Weight lifting lead to Sport instead of Cardio? I don’t know- I’m not a trainer, or scientist.

It doesn’t really matter. One strength of the triangle is how easy it is to see the orientation of its elements. Base: foundation. Peak: goal. In other words, as a cheat sheet, the abstracted message is clear: Though your goal might be to do well in a specific sport, most of what determines your success will happen outside of that sport. Most of your effort must go into the basics.

P.S. I’d add another wedge to the Crossfit cake. Sleep should be on bottom.

Defining Cohorts

One effective use of a hierarchy is for organizing the defining traits of things that you need to interact with. Your RPG characters should be graphed as pyramids in as many ways as necessary. Guns for your iOS Shooter-that-will-show-them-all-that-FPS-has-arrived-on-iOS can be sorted, or even defined in this manner as well. And then, there’s your co-workers:

A day in the life of a passionate game artist.

Use in Gamedev

So – what’s the actual use, what can you do with these buggers?

Post them on walls in the office

(Don’t go overboard with triangles on walls, this is not some ini-tech motivational poster I’m talking about.)

use them in your game design

This one would be good to tack next to the pc of your level designer.

Prioritize business goals:

How many of us even have goals, let alone prioritize them?

Not just Triangles!

Of course, not all relationships can use a Δ. I focused this note on triangles because of their overwhelming use with  classic hierarchies. But I won’t neglect other shapes. I’ll come back with later posts on Visual Design to cover more.

So this was a Valued Rug?

Hi-

This is somewhat of a stickynote. I started valued-rug.net so that I could get back into web development, and eventually do some html5 games. What will most likely happen is that this blog will be a scattershot hobby list of things that I find cool. At least until I decide on a focus.

Most of what the site is for is me messing around under the hood on various subdomains. I’m a game developer, but I also work at a teeny tiny company, so I need a site like this to expand my chops.

I taught myself most of the technical skills that I have- this is fun.

A Valued Rug
All the Dude ever wanted was his rug back.