Planet Tech Art
Last update: February 27, 2015 11:00 AM
February 25, 2015

Trusted Gear

Yay! GDC is next week! Will I see you there?

Ahem. Straying a bit from my usual theme here of writing about whatever little snippet or gadget I’ve come up with, for this post I will in stead share some detail on recent changes to my tool-chain of choice, which I’m quite happy about.

Every craftsman has his or her opinion on tooling, but just about everyone share the desire to tune their toolbox. Even if your opinion / taste / whatever does not align with mine, I hope that you find something useful in here.

If you really had your sights on getting some funky code snippet out of this post, here’s an unholy perl module for firing off native prompt dialogs on OS X and Windows:

And with that out of the way, let’s get something else sorted: This post will likely come off as an ad for a bunch of different software. Other than mentioning it here, I do not intend to do anything about that.

Note that I primarily work on OS X and some of the tools mentioned in this post are only available on that platform. You might still find at least inspiration in those areas though – likely very nice Windows and Linux alternatives exist. I did not look.

However if you are not on OS X, but on a tight schedule, just skip all sections other than the “Typing” section (which is probably where you’ll find the best stuff anyway).


Everyone has a system for remembering projects and TODOs. If you in stead keep it all in your head, I am glad that you’re not a very busy person – if you are busy, I would worry.

Over time I have tried many different systems for keeping track of it all – having had it as a focus of mine ever since severe physical stress symptoms reminded me that my methods were entirely inadequate.

One tool that I kept coming back to and which I have recently re-focused on is OmniFocus.

While OmniFocus is by no means perfect (I have my fair share of open suggestion posts with the developers), it does provide me with the best feature combination I have seen in this type of tool. Important to me are:

  • No restrictions or requirements on nesting/indentation depth of items.
    • The system has the notion of “tasks” existing in “projects”, but aside from this I can use folder nesting of projects and nesting of tasks as much as I like – assigning whatever meaning I want to that.
  • Everything is synchronised painlessly between fully-featured clients on my laptop, my phone, and my tablet. And it remains accessible when offline.
  • Easy, fast, unintrusive task entry.
    • The mobile clients have an always accessible “add to inbox” button and the OS X client a global task-entry shortcut.
    • The shortcut fires up a little window over whatever you are currently working, allowing you to quickly type in what you need to remember to do, hitting enter when you’re done. Optionally you can add more task details before hitting enter and continuing with whatever you were doing.
      • This is absolutely perfect when you remember a TODO unrelated to your current task or someone comes by your desk with a request.
      • My shortcut for task entry is ctrl+alt+space. I do not recall if this is the default.
    • The OS X client also comes with a “service” integration, allowing you to easily create new tasks from other applications – like one based on a file or a snippet of text or perhaps an email.
  • Optional additional classification and data collection.
    • Putting tasks in projects is your absolutely minimum flow. Even that I suppose is optional, as you could simply put all your tasks in your inbox. On top of this, you can scale it as little or as much as makes sense for your particular case. I use everything from no additionals to everything – all dependent on the nature of the task.
      • Aside from putting tasks in optional projects in optional folders, each task can also have an associated context. Different tasks in the same project can have different contexts and contexts can have additional information associated with them – like a location.
      • Assigning a due date to a task will put it in your Forecast view – allowing you to easily view what needs to get done today. This view can also show a quick overview of todays calendar and you can get notifications as the due time of a task is reached.
      • Each task can have an associated attachment. Anything from a snippet of text to a file / an email / whatever.

I use OmniFocus for all project and task tracking. However I do not try to replace my calendar with it. Scheduled events still go in my calendar (I just use iCal) and I also use my calendar to keep track of what I do with my time when on a contract.

This allows me to easily summarize for client reports when needed and I have a little Automator workflow calculate the total number of hours spent contracting this week – allowing me to easily balance the hours.


Once I am done dreaming up ideas and tasks, like so many others, the majority of my time is spent as a typist – translating those tasks into computer-friendly gibberish of one kind or another. Most of the time I find myself typing C#.

For quite a while I would bounce around between different editors for this task.

  • VisualStudio with resharper for maximum efficiency – at the cost of either rebooting into Windows or running around in the strange parallel universe of virtualisation.
  • MonoDevelop for an approximation of the tools provided by VisualStudio, feeling not quite native anywhere, but very beta.
  • Sublime Text for beautiful, responsive, unintrusive text rendering, with a wonderland of user-configurable keyboard shortcuts and extensions. And absolutely nothing in terms of VS- and MD-like project-wide assistance.

Then a while ago I added a bookmark to the “check this out” pile, for a project called OmniSharp. The promise was simple:

  1. Get full Intellisense-like completion and resharper-like code analysis.
  2. Use it in your text editor of choice.

Ha! Madness.

That was probably at least a half year ago – until I finally found some time to put aside my scepticism for a bit and try to set it up with Sublime.

You know what? It works!

This is what I currently use of the OmniSharp + Sublime Text feature set:

  • Compile check on save – with errors, warnings, and resharper-like code suggestions.
    • Some suggestions I do not agree with and luckily, as with resharper, configuration lets you easily filter those out. Unity also suppresses some warnings when compiling, so I elected to filter those out as well.
  • File auto-format when triggered by shortcut.
  • Intellisense-like auto-complete – file, project and library-wide.
  • Jump to definition / list reference points.
  • Rename.

I am probably forgetting something, but suffice to say, I no longer feel the need to switch away from Sublime Text to boost efficiency on an unfamiliar codebase.

With regards to shortcuts and configuration, there are a bunch of little tweaks you can set up for Sublime, so of-course I have done exactly that. The good part is that Sublime preferences are all JSON formatted text files, so they are easily shared in a gist:

For text editing, that produces a lovely fullscreen view like the one on the right (click for full size). Tasty, right?


After lolcat searches and menacingly typing at people who are wrong, I probably spend the majority of my browser time doing reference manual lookups. Extensions like Safari Keyword Search in combination with embedded search engines or Google site search have somewhat streamlined this task, but it never really worked solidly and of-course required that I be online while working.

Enter Dash. I can’t remember who brought it up on twitter, but that’s where I came across it and bookmarked it for later study. The idea is quite simple: It provides an offline search engine for docsets of your choosing – much like man pages.

You get to specify which docsets to download, associate a search key with each docset (IE “cpp:” and “.net:”), and specify a global shortcut for launching the search window – as you would Spotlight on OS X. But wait: There’s more!

Downloadable docsets include topic-specific downloads of wiki-fied Stackoverflow questions and answers. And since you can associate multiple docsets with the same search key, these are easily accessed when you search.

On top of all of this, Dash also comes with an iPad and iPhone client and integration for a bunch of different editors, environments and other tools – including Sublime Text.

You can find my Dash integration settings in the Sublime settings linked above. For global launch shortcut I chose ctrl+shift+space – I do not recall if this is the default.


If you, like me, grow a tad too accustomed to the default Sublime Text shortcut of alt+cmd+left/right for tab switching, I would recommend giving it a go as a global shortcut across applications. Configuring System Preferences – Keyboard as shown below did the trick for me. I primarily use it in Terminal and Safari.

And that is about all I have for now. I hope that this is useful to you and do let me know if something in here is off or if you’re more curious about something. If you are at GDC in San Francisco next week, you could even do it in person.

by at February 25, 2015 11:00 PM

February Rigging Dojo’s Artist in Residence (A.I.R) : Robbert-Jan Brems

February 2015 (A.I.R) this Thursday 26th – 9pm EST With Robbert-Jan Brems from Eidos-Montreal We would love to have you join the conversation by subscribing here. Robbert-Jan Brems @Nysuatro Technical Artist – Xoliul Shader 2 Co-Creator We have followed his work and his talks for a few years and are very happy he can share his […]

The post February Rigging Dojo’s Artist in Residence (A.I.R) : Robbert-Jan Brems appeared first on Rigging Dojo.

by Rigging Dojo at February 25, 2015 05:55 PM

Mapping a texture to world coordinates. Part 4.

Example 3: Starry night

Now, this is a little experiment I run over a year ago as I got started with UE4 vector fields. I wanted to create an animated version of Van Gogh's famous painting ‘Starry Night’ with GPU particles.
I hand painted the vector field in maya, created a flat initial location box (same ratio as the painting's), and thousands of small rectangular particles followed the vector field. As they moved, they would pick the colour of the painting used as a texture mapped in world space.

I was really quite happy with this idea but it turned out that someone had already created this as an app and they'd done a good job of it. Once I found out it seemed pointless to complete the project. Great minds think alike, they say. Fair enough but really, you wanna be the first of those minds.
Oh well, nevermind. I still had some good fun doing the tests plus it gives me an example for you people to enjoy.

So. We have the dimensions we want the painting to be displayed at, and we want them to be translated to texture coordinates. I've decided I'd keep the centre of the painting in the middle; I could have decided for it to be in a corner, I would just have had to use different values for the min and max.

Here's what's happening in the material: I'm ‘projecting’ the texture in world space (as seen in the first part) and making its coordinates local (as seen previously), and then I use my favourite little snippet (described here) to remap the 0 to 1 texture coordinates to the size I want the texture to appear in world units.

Then in cascade I create a box with an initial location that matches my min and max and as the sprites move, they pick the colour of the painting underneath.
It's rather basic, close up you can see it is a cut out and it doesn't feel like moving paint strokes. I was thinking of trying to see if I could use the ParticleSpeed to offset the texture but as I said I gave up on the project quite early on.
Painting this vector field again in maya has actually been very interesting, it's going to be helpful for my personal project. I've found out a few things about how to get a vector field UE4 ready. I'll keep that for a later post, still lots I don't know about.

This is a capture of the animated particles in cascade preview: (for those who don't know, cascade is the name of unreal's particle editor)

If I place this emitter in the world, and I add more particles around my initial location area, you can see how the last pixels are stretched. It shows that the texture is mapped to a precise area in space (centered around the emitter position).

Same thing from the side, the pixels are stretched because we only projected along one axis.

Hope you enjoyed this, folks. The next and last example will actually be my favourite one, so stay tuned.

by mkalt0235 ( at February 25, 2015 06:54 AM

GDC on the horizon

For folks who'll be attending GDC this year, I'll be doing a talk on Technical Art for Art Directors  at the Art Director's bootcamp on Monday at 2:15.  Hope to see some of you there!

by Steve Theodore ( at February 25, 2015 06:49 AM

The largest piece I’ve made so far. #Shino glaze, and it...

The largest piece I’ve made so far. #Shino glaze, and it started off as 9 pounds of clay! #pottery

by at February 25, 2015 06:46 AM

February 24, 2015

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.

by Peter Hanshaw ( at February 24, 2015 09:59 PM

What do you want next?

We are focusing on A and B, and in a month or so we’ll start focusing on C, while also keeping focus on A and B.

Sound familiar?

When we do prioritization at work, I insist we have a single column of priorities or coarse features. In other words, “what do you want delivered next?”*

If a team or person isn’t working on one of the top two or three priorities, they’re doing unimportant, and possibly counter-productive, work. You’d be amazed how many people are working on things someone arbitrarily said was important, which aren’t inline with actual priorities.

You’d be even more amazed how unimportant most “high priority” work is when it needs to be stacked along with everything else. A feature can easily sit at the number 4 spot for months. Just be careful work doesn’t move up the queue just because it’s been in the queue. I don’t think this is a problem, though, because when you tell a product person “we are only executing on the next 2 things to deliver” they are going to have to make hard decisions.

I’ve worked on projects from 10 to 500 people, and generally the times we were humming along was when we had one or two priorities. We ended up producing crap when we had n priorities (where n is often the number of people or teams). Big teams don’t mean more priorities. It is just the granularity of the priorities that changes.

This sort of rigid, columnar prioritization communicates to product people that work only gets done when it’s at the top of the column. I’ve run across countless people, both managers and developers, who just sort of, well, expect that stuff just sort of, well, gets done, somehow. And generally it appears as if things are getting done, until everyone finds out they weren’t really. Are there significant bugs in some old system? It’s not fixed until it’s a priority. Is that new system still unpolished? It’s not improved until it’s a priority. Want to build something that requires some serious infrastructure? Well, that infrastructure stays at the top of the column until it’s done, to the exclusion of other work. Do you want good tools? Well, it means you aren’t going to get features.

It’s an extremely simple and powerful technique, and I highly recommend it if you are having trouble coordinating a product group.

* This doesn’t include ongoing product support, small fixes, and improvements. I think you need a way to handle this outside of normal feature development teams, with some sort of “live support” that can react quickly. A topic for another post.

by Rob Galanakis at February 24, 2015 12:15 PM

February 19, 2015

Shameless plug.

If you happen to have a Threadless account, would you be so kind as to throw a vote or me?

Otherwise please ignore.

A new post it on it way, give it a week at most :)

by mkalt0235 ( at February 19, 2015 09:04 AM

February 18, 2015

Short Film : Wildlife Crossing full film online now

Now that the Wildlife Crossing full film is online we wanted to share it and tell you more about the cool work done on the project. We are so proud of all hard work of both mentors and students that went it to this amazing collaboration between Anomalia and Rigging Dojo. Not only did Josh […]

The post Short Film : Wildlife Crossing full film online now appeared first on Rigging Dojo.

by Rigging Dojo at February 18, 2015 06:53 AM

February 17, 2015

Anxiety causes selfish behavior

BPS Research Digest is a great site, highly recommended for anyone interested in why people behave the way that they do. A little while ago, they reported on a study where anxious participants were more likely to cheat and excuse their own unethical behavior than the control group.

When we’re stressed out and feeling threatened, our priority becomes self-preservation. According to new research, this defensive mode even affects our morality, making us more likely to cheat and excuse our own unethical behaviour.

What’s striking is the cause of the anxiety: they listened to Bernard Herrmann’s Psycho score. Compare this to the stress of micromanagement, yearly review season, project bonuses and deadlines, or even general water cooler politics, and it’s no surprise what goes on in most corporate offices.

I’ve written before about how a manager’s primary job is to build trust and this is a good, concrete example why.

It’s also a good example of why it’s a company’s job to remove anxiety-causing policies. The less anxiety you cause your employees, the healthier they are and the healthier your culture and company is (we want people working together, not behaving selfishly). These policies include:

  • Annual performance reviews. Much has been written about this.
  • Individual performance-based bonuses. They have been proven to be counter-productive, without a single shred of evidence supporting their utility.
  • Limiting career and salary growth based on positions. People should not compete for a single “senior” spot.
  • Limiting PTO and not having separate sick days. Being sick is not a vacation.
  • Not forcing/encouraging people to take a vacation. This causes paranoia, burnout, and envy.
  • Limiting the flow of information. People will worry if they know what they need to know.

The list goes on and on. And the lesson is very simple:

When you reduce anxiety, you get better work.

by Rob Galanakis at February 17, 2015 01:32 PM

February 14, 2015

Poll tax

I'm experimenting with Blogger's (not super impressive) poll support. So please check out the poll on ScriptCtx on the right hand side of the page. If the survey produces good results I'll do more as way of getting more sense of what the community is doing out there....

by Steve Theodore ( at February 14, 2015 09:06 PM