Substance Designer foray

I'm pretty late to the whole substance craze, having spent three years in a mobile development environment where textures larger than 512x512 caused eyebrows to raise within the engineering team.

But I kept hearing things about it being amazing, so I thought I'd give it a shot. Here is my attempt at a "hand painted" look, based off of similar processes I'd use in Photoshop.

The texture is generated using an exported sbsar material and... well, thats it. I saw a nice example online of using a switch to swap out gradient maps in a material which allowed me to create a bunch of looks in the one material.

This tool makes me happy.

A Quick Checkin- Clion, Unreal and Mac

Super quick check-in. Hello world! For the last year or so, I've been working with Echtra Inc. on a great project as a Tools Engineer/Technical Artist guy.

The project is using the Unreal Engine, which I like more and more every day. On Windows, C++ plus Visual Studio Pro and Visual Assist is a great combo, and I happily churn through my daily tasks without fighting the tools too much.

Not so on my Mac at home. Programming in Unity on a Mac is great! Mono Develop isn't amazing, but it isn't terrible. But Unreal on a Mac. I want it to be fun, I want it to be possible, but I just can't get myself to like, let alone enjoy, XCode.

On that, for anyone thinking "well, you could just use blueprints..." etc, I feel it's too much of a shackle to not be able to just dive into the guts of it. C++ or bust.

So anyway, I recently adopted PyCharm at work and really enjoyed using it for my Python tools. I noticed that JetBrains also made an IDE called CLion, and they also had recently got it running with Unreal, so I thought, what the hell, why not.

Turns out their documentation is missing a couple of important notes, that maybe they take for granted, but after a couple of forum dives I managed to actually get it compiling, and running, my little test project.

So what was missing?

Something isn't set...

Once I run through their setup scripts, these were the things I needed to double check.

  • Make sure Mono is installed and up to date, and that the mono command is available in the terminal.
  • Once you generate your CLion project via the editor (make sure to follow the instructions here) you need to update the generated configs with paths to the editor executable. 
  • eg: /Users/Shared/Epic Games/UE_4.15/Engine/Binaries/Mac/
  • Finally, now that it's pointing to the editor correctly, add an absolute path to your project's .uproject file in the project arguments. 
If everything went well, you should now be able to build and run your project from within CLion. Bye bye XCode. I'll probably post some time in the future about how I'm finding CLion. Well, it compiles, and thats a start...

GDC 2016- San Francisco Coffee places

Wait, what? 2016 already? I have not been as pro-active in this whole blogging thing as I could have been, so for now let me make it up to you all by letting you know where to find the good stuff while you are perusing the talks at GDC 2016.

Near the Moscone Center:

Special Xtra

One of my favorite places. Great coffee to get your energy back after a long talk about rigging (try the New Orleans iced coffee for a real kick). If you get there in the morning, grab one of the croissants fresh out of the oven. The staff are great, and could probably give you a bunch of pointers on good places to check out in the area.

Elite Audio and Coffee Bar

Because what goes better together than coffee and high end audio systems? Sure. Anyway, this one is very close to the Moscone, but will probably be packed full of people, so keep that in mind. Cappuccinos here are great, and once again staffed by a good crew of people. They serve Neighbor Bakehouse pastries most days, and those alone are worth checking out.

Sightglass Coffee

Great coffee, and also a good opportunity to take home a San Francisco local roast. A little bit of a walk from the Moscone, and there will probably be a line either way, but well worth the walk. Once again, Neighbor Bakehouse pastries. Eat them!

Chrome Industries

Continuing the trend of a store that sells something (in this case high end cycling gear) but also serves a decent roast, Chrome Industries is a short walk from the Moscone down 4th st. It's also near the Hotel Utah, which serves a different type of brew (worth checking out for beers!).

Not so near the Moscone Center:

Contraband Coffee bar

If you find yourself for some reason near the Polk street area, Contraband Coffee is nearby on Larkin and California. It's got good coffee and hot chocolate. The snacks are good too, but it's worth checking out Flower and Co. nearby or MyMy for a real meal. I have seen Neighbor Bakehouse pastries here too. See a trend?

The Interval

If you find yourself near Fort Mason, the interval is a good place to stop by. Good coffee, provided there aren't too many people around. The crowd can occasionally be a bit of a downer.

Four Barrel Coffee 

If you find yourself in the mission, check out the four barrel coffee place down there. I've heard mixed opinions about the Four Barrel coffee, but I'm a fan. Delicious! Being on Valencia St, its also surrounded by a bunch of excellent places to go grab lunch or dinner.

The Mill

The Mill serves four barrel coffee, as well as that whole thick toast thing. The toast is good I guess, but I really go there for the coffee- that's really good. They sell bread too which is pretty damn good bread, although carrying that around the conference floor might not work out so well.

So that's some places to get you started- have you found any that you think should be on this list? Also, hit me up you you want to meet up for coffee and talk game dev stuff. As you can tell, I like coffee.

Scratch Pad Unity Utility.

One of my friends has made his Unity Asset Store debut with "Scratch Pad"- a handy little utility that lets you bookmark scenes, animations, scripts etc.

It always kinda bugged me that you can't put files into your favorites area of the Project panel, which is something this Utility does pretty well- being able to make 'working sets' of files is pretty useful, especially when debugging all the different components that might make up a single asset in game.

Check it out here. 

Do you want to play a game?

My Chrome browser split in half last night and asked me if I wanted to play a game. Saying yes turned my browser into a pseudo python console. Apparently Google has been tracking my search history and seen that, yeah, I like Python. Ok, having the browser window suddenly split open because someone is watching your search history is vaguely creepy, but what the hey, I do like Python!

Why do they want to play a game with me? I don't know, its Google. Why did they make Google maps into Pac Man? Its Google. They do stuff like that.

The first challenge was to take an equation as a string and parse it into reverse polish notation. After thinking about it today I was able to write a passable parser that will probably make any real mathematician twitch- but it works and the code doesn't make me twitch.

The challenge was, well, challenging, but fun! It reminds me a bit of the Project Euler challenges, except this one gives you a hopping bunny when you succeed. An animated ASCII hopping bunny.


Pac Man

Hop little bunny. Hop for joy!

GDC 2015- Coffee Places!

Because I assume almost every game company runs on coffee, and Technical Artists are surely no exception, here is a list of great coffee places in close proximity to the GDC.

SightGlass Coffee:
Short walk from the Moscone center down Folsom Street- not really many food options, but excellent coffee. 

Special Extra:
Small coffee cart. The staff are all cool, once again not much in the way of food beyond muffins, but I rate the coffee as some of the best in the bay area. Its down the alley next to the MOMA (building under construction across the street from Yerba Buena park), so its about a five minute walk from the Moscone center.

Epicenter Cafe:
Good food (lunch, breakfast), beers and good coffee. Also has a batman board game that looks like its from the '70s. I've always wanted to play it, but have never had the chance...

Elite Audio:
Another blue bottle cafe- a little hit and miss, but on the balance usually good coffee. They have the same pastries that Sightglass gets, but not as expansive a selection. This is also a five minute walk from Moscone.

Chrome Cafe:
This is a bit more of a walk, about on the same scale as Sightglass. Tiny cafe, but good, strong coffee. Serves four barrel coffee, which is pretty good.

There are a few others, but those are my go-tos. I've also got bars and places to eat if anyone wants suggestions. Give me a shout if you want to catch up and talk coffee/scripting during GDC week.

Google Spreadsheet: Script to Change Row Background Color on Cell Edit

Now for something a little different! Google Spreadsheets!

Here is a little script I cooked up today for changing a row color in Google Spreadsheet when you change the contents of a drop down menu.

When you change the contents of a cell in the designated "status" column the entire row will change it's background color to match whatever rule you have defined in the switch statement.

A useful addition to this would be the ability to automatically find the status column in whatever sheet you have open, but it was beyond the scope of what the script was meant for, so here is it in the raw!

Google Sheets Script to modify a row's color based on the 'Status' entry. 

This script uses the onEdit() method, which is called every time a cell is edited.

The statusColumn variable's cells are assumed to be a drop-down with the following options:
In Progress
Not Started
Revisions Req

The script modifies a row's color based on the contents- leaving the color white if it's not matched by an expected type.

function onEdit() {

    var sSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var statusColumn = 8; // Status column index

    // As this is called onEdit() we don't want to perform the entire script every time a cell is
    // edited- only when a status cell is mofified. 
    // To ensure this, before anything else we check to see if the modified cell is actually in the status column.
    if (sSheet.getActiveCell().getColumn() == statusColumn) {
        var row = sSheet.getActiveRange().getRow();
        var value = sSheet.getActiveCell().getValue();
        var col = "white"; // Default background color
        var colLimit = 15; // Number of columns across to affect

        switch (value) {
            case "Complete":
                col = "MediumSeaGreen";
            case "In Progress":
                col = "Orange";
            case "Not Started":
                col = "DarkGray";
            case "Revisions Req":
                col = "Gold";
            case "Blocked":
                col = "LightCoral";

        sSheet.getRange(row, 1, 1, colLimit).setBackground(col);