Dev Blog: Art Tools

As a game dev topic, tools development might not be as exciting as gameplay or graphics programming.  However, as a small studio, specialized tools are essential for ensuring we make the best use of our limited resources.  And as a side note, I find that they can provide some really interesting problems to solve early in the development cycle … while also offering an opportunity to build strong relationships with the art and design teams.

In this blog post I’ll talk a little about the process for creating development tools, followed by a few examples of the art tools we’ve created over the last few weeks for our current project.

What is a Dev Tool?

As game developers, we all rely on a variety of software tools (think Maya, Photoshop, Perforce, Unity3D, Google Docs, and Visual Studio).  When the software doesn’t do everything we want it to (or when a particular task is repetitive) a programmer can author additional software on-top or between the off-the-shelf applications.

As an example, when I arrived at AtomJack, the first tool requested by our Animation Lead was a process to automate the conversion of a dozen robot animations into a format compatible with our game engine.  As a manual process, it was taking him more than four hours to complete.

So, working with Floyd to understand his workflow, I used a combination of MEL, Python, and C# to build a robust tool that would ensure any future Maya files (animated or not) could easily be converted, renamed, and transferred into our game engine.

Although it may have taken a few days of programmer time, it is expected that through the length of this project, this tool will save weeksworth of the animator’s time (and perhaps more importantly, limit the animator’s frustration).

Development Environments:

Most software used by content-creators already anticipates the need to extend or automate their functionality and will offer an Application Programming Interface (API) or language extension for doing just that.  Autodesk’s Maya offers the ability to run commands in their own Maya Embedded Language (MEL) and better yet, through their Python API. Both of these are even available in “headless” mode .. that is, without the graphic interface … improving performance. Adobe’s Photoshop allows developers a robust scripting API in a variety of languages: AppleScript, JavaScript, and Visual Basic.

In other cases, it can be a matter of exporting data from one application (using their proprietary file formats), processing the exported file, then importing the processed data into the other program. For these tools, I believe it is important to make the experience as seamless as possible. While it might be more common to find technical artists than previously, my experience is that most artists prefer simplicity over extensive features when getting data from one application to another.

However, if you are making a feature-rich application, you’ll frustrate your team if you haven’t included the expected functionality of modern applications (copy/paste, undo, file-selection, etc).  In these cases, I highly recommend using a language with a robust and simple implementation (like C#/.NET) for your Windowing applications. 

Unique Challenges:

A significant challenge when building tools that will bridge off-the-shelf applications, is that those programs are in constant flux.  New releases may change the definition of proprietary file-types, API libraries, or even folder paths.

As a simple example, Maya stores FBX export presets in the user’s folder:

\Documents\maya\FBX\Presets\2015.0\export\

If the artist automatically updates to the new version of Maya, the directory changes:

\Documents\maya\FBX\Presets\2015.1\export\

So, even in a highly controlled studio environment, hard-coded paths will cause problems.

Whenever working with directory paths I try to ensure that I automatically save the user’s last-used directories in a configuration file, then make that directory the default the next time the tool loads.  This ensures users are not required to repeatedly search through an extended folder hierarchy (a common result of combining large projects with version-control software).  Like good audio design, you know your tools are successful when the users don’t even realize they are there.

Another challenge for a small studio is knowing when to build a tool .. and when not to.  You may hear the statement, “At my last company we had a tool that could do XYZ”. But engineering resources vary significantly from studio to studio.  There is an old XKCD comic that does a great job of illustrating the limitations of automating a given routine task versus the time taken to automate it.

In the end, it will be scope, performance, reusability, available engineering resources, and the possibility of releasing tools publicly (through something like Unity’s Asset Store) that should factor into the decision on whether or not to develop a particular tool.

More Sample Tools

Export and Import Level Data:

For our current project, we want the artists to be be able to hand-paint the environmental art. However, the levels are built by our design team inside the game engine.  So, I wrote a set of tools to transfer that level information from Unity3D to Photoshop.  The tool moves a variety of context-rich level data and encodes it into individual Art Layers as part of a single Photoshop file. The information is then available for reference when painting environmental art.

Both of the animated gifs shown here demonstrate the scripts running in real time.

Slice, Save, and Reassemble

With the high pixel-density of modern consoles, it is important that the artists are able to paint at an extremely high resolution. And when the artists are painting across an entire room at a time (stretching across multiple screens as the game camera pans around) this can result in a lot of pixels. Unfortunately, even on high-end development PCs, Photoshop isn’t very responsive when working on images that can be up to 100,000 pixels wide.  To solve this issue, I’ve written a set of scripts that slice the PSD files into smaller pieces and then reassemble them when opened for edit.  The script will automatically find neighboring images and assemble them into a single PSD.  In this example, each square represents 4096^2 pixels for a total 3×3 authoring size of 12,288 x 12,288 pixels.

Export into Engine

As a final step in the environmental art authoring tool chain, the various Photoshop files must be exported into the correct size and format that are required by  the game-engine.  In this case, I’ve created scripts that will automatically subdivide the single 4096×4096 PSD along with its associated layers into 112 individual 1024×1024 PNGs spread across both orthographic and parallaxed backgrounds, as well as another set of lower-resolution thumbnails.  For performance considerations, any texture patches that contain only transparent pixels are automatically removed.

More details on our orthographic and parallaxing system will be provided in a later post.

Unexpected Advantages

Tools development is not only an important task during pre-production, it can be a lot of fun. While you are solving interesting problems that will benefit the entire game, you also have the advantage of knowing the users of the software are your colleagues.  If you’re open to the possibility, you can iterate quickly from immediate feedback, potentially resulting in really useful tools.  You’ll get to learn about the needs and work of the other disciplines, and through building strong relationships with those art and design teams, you’re more likely to anticipate their needs and provide tools they may have never imagined possible.

At least, that has been my philosophy.

Read more about tips and tricks for Scripting in Photoshop on my blog.


The A-Team

It seems like only a month ago we were writing about how the team at AtomJack is growing. Since then we’ve been heads down, nose to the grindstone, working on systems, fleshing out ideas, and putting controllers in hands to test our theories and find the fun. We will have more to share on the game itself in the coming year, so we thank you for your patience.

2000px-A-Team-Logo (1).png

Since our last update we’ve added not one, not two, but three more fantastic people to the team and filling out our new space quite nicely. So without further ado, we’d like to introduce you to the new team members.

Dan Rosas

Dan’s entire life has lead up to designing games, he just didn’t know it. Throughout college, he studied a wide array of seemingly disconnected majors – psychology, audio, and business management to name a few. After accidentally taking a computer programming course, he had stumbled upon the missing ingredient that tied together all of his passions. Dan attended DigiPen Institute of Technology where he worked with friends to create the award winning music shoot ‘em up, Solace. After graduating in 2012 with a BS in “Real Time Interactive Simulation” (which is just a fancy term for “Computer Science”), he began his professional game design career at 5th Cell, making puzzles for the Scribblenauts franchise. When Dan isn’t making games at work, he’s making games at home, constantly posting new projects on his website, CoffeeShopGameDev.

You may know Dan from such games as Interactive Cave Shooting Simulator

You may know Dan from such games as Interactive Cave Shooting Simulator

Kari Toyama

Originally from O’ahu, Hawaii, Kari settled in the Pacific Northwest 12 years ago. She’s been playing games since she could reach a keyboard and spent a lot of time with her brother playing anything they could get their hands on. While studying Psychology in college, she started to play online multiplayer games and fell in love with Halo 2. Determined to have a career doing something she loved, Kari started her new path as a tester on Halo 3 and spent six years working at Microsoft Studios on several AAA titles. Kari comes to AtomJack from PopCap Games where she most recently worked as a QA Project Manager on Peggle 2. When Kari isn’t playing games, she’s usually working on a crochet project or traveling.

Kari at HaloFest

Kari at HaloFest

Last, but not least, we are very excited to be working with C Andrew Rohrmann, also known as scntfc, as our Audio Design Lead, to bring our game to life through your ears and hearts.

SCNTFC

C Andrew Rohrmann – aka scntfc – has a long and diverse list of sound design and music projects on his resume. Scoring zombie filled genre flicks? Check. Large scale multi-channel sound installations? Check. The sounds coming from your Xbox Dashboard? He made some of those. Has he made music for ads for cars (Volkswagen), shoes (Adidas), and candy bars (Cadbury)? Yup, those too. He’s done a lot of stuff. He’s also only the second person in history to legitimately remix the music of Bob Dylan (for the soundtrack to Crackdown 2). He’s worked with such esteemed game creators as Superbrothers, DeNA, Funktronic Labs, 17-Bit, PopCap… and now Atomjack. That’s some good company!

He really does look like this.

He really does look like this.

Interested in being included in a future team update? Then come work with us! We are still hiring and you can find our open positions on the jobs page. We look forward to hearing from you!


Happy Halloween!

We hope you’ve enjoyed our week of Halloween shenanigans! Here is the entire collection of Halloween themed art featuring our Robot.

First, we made it festive in our studio with an AtomJack-o-Lantern.

Our Art Director, DRP, kicked things off with a quick stylized sketch.

Then our Animator, Floyd Bishop, did a nod to Scooby Doo with the Robot’s run cycle.

Finally, our Character Artist, Kieran Lampert, took the Robot trick or treating.

Thanks to our Art Team the Robot celebrated his first Halloween!


Team AtomJack is Growing!

A lot has been happening behind the scenes at AtomJack these past few months. As we’ve been explaining about jumps and the evolution of our Robot we’ve also been steadily adding to the team, so much so that we outgrew our first little office.

Last day in the old office

If you remember ESandra Hollman from our last staff update, she is now also taking on Community Management responsibilities and overseeing all things AtomJack on this website, Twitter, Facebook and Instagram. She’ll be sharing more information about our new space and the game we’re working on, so keep on checking in.

We’ve been growing the team at AtomJack adding programmers and animators to the fold, so we wanted to share some info about the new members in their own words:

John Pile Jr

John is our second engineer to join the AtomJack team. Alaska raised, John gained his game-industry battle scars at Proper Games in Scotland after receiving an MS in Computer Games Technology at the University of Abertay Dundee. In 2010 he returned to the States as a professor of game development, wrote a book on 2D Graphics Programming for Games, and tackled a couple indie games … but AtomJack lured him back to the west coast and full time development with promises of adventure, glory, and plenty of Seattle’s finest coffee. When not coding, John can be found tinkering with vehicles, riding his Harley, or driving around North America with his wife, Helen and dog, Dakota.

John authored a book on 2D Game Programming

Floyd Bishop

After playing a lot of Odyssey, then Nintendo, then later Playstation, Floyd Bishop began animating. It’s his job to make sure all the cool art and awesome models move in a fun and entertaining way. He has had a varied career so far, with character animation on Ice Age, talking bottles in antacid commercials, creating animated pilots for television shows, and working on lots and lots of video games. Floyd came to AtomJack from Sony Online Entertainment, where he worked on Free Realms and some other titles. He is interested in all things animation, and has blogged and reported on animation all over the internet. Floyd also enjoys teaching. Showing other people how to make cool things move around with computers is super fun!

Floyd teaching a class on animation

Welcome to AtomJack, John and Floyd! Expect to hear more information on our new space as well as well as future members very soon – and hopefully some game news too. If you are interested in joining AtomJack, check out our Jobs page and if you don’t see something there we are always interested in talking to smart, creative and motivated game developers – so give us a shout!