In the last few days I’ve been working on a market place for citizens in the game to gather things they need – something that can be placed closer to the city center so the citizens don’t have to walk a long distance to the various storage barns placed on the map. This really just makes the city run a little more efficiently. Before I can code this, there needs to be artwork.
Creating artwork for Banished has probably been one of the biggest challenges for me. For ten years I worked as a programmer writing tools for level designers and artists, as well as writing graphics engines and physics solvers. When I struck out on my own, artwork was a unknown. I had worked with a lot of artists solving technical problems, so I saw how they worked to create art, but art requires something more than being able to use tools. Luckily I quite know a bit about lighting and coloring pixels to get the most out of artwork I’m capable of. Still it took me a week to make the first tree and house in the game. Things have sped up since then and I have a process that I follow loosely.
The first step I take when making a new piece artwork is to decide what it will look like. I’m a very poor 2D artist. Anything I draw looks quite awful, so I don’t even do it anymore. Having a concept artist would be great! But I can’t afford that. Instead, I block out the space with simple shapes, import it into the game and tweak it until I get a size and basic layout that matches other artwork. It looks like the image below.
It’s really important to import the artwork into the game, even at this early stage. I usually trash the first iteration of the blocking I make once I see it in game, and work toward something that feels like it belongs. Then I start adding details to the shapes and work it into it’s final shape. This is also an iterative process. The blocking also tends to change when I do this once better shapes are made. Once I’m happy with the mesh I bake an ambient occlusion map to give the model decent shading.
Being happy with the model, I begin the process that is the slowest part of the process for me. The model needs to be unwrapped – all the faces are placed on a 2D plane and then I paint whatever images I want on top of it to give the model texture. I use the same roof and wall styles as most of the rest of the town to keep the artwork consistent. However I wanted the market place to be a bit more colorful and stand out. The texture could be optimized somewhat more to share space, however I tend to go back and add details to areas and it’s easier if they’re mostly separate. These images end up looking like this (but much higher resolution).
Next I make an image that gets splatted onto the terrain. This image is matched to the size of the model. This allows me to hide the normal grass and dirt of the terrain. It’s not part of the model so that it can be placed on non-flat ground. I also can paint an alpha channel that occludes the snow in winter – showing paths of where citizens walk or where snow wouldn’t collect. In this case the image is painted to match the look of roads. Roads placed against the market place edges will blend perfectly with no seams.
When the model, ambient occlusion, ground texture, and model texture are put together and some citizens start walking around, it looks like this:
However at this point my work isn’t done. When you first place a building in the game the citizens have to clear the trees and other objects on the terrain, then they collect resources for the construction. The construction is shown in several steps so I have to model these as well. Generally I take the finished model, cut it up and add a few new polygons. I don’t bother painting new textures for the construction models, I just reused the finished one for the full model. However I always leave a little space in the image in case I need to paint something new.
That’s it for the art. I think it took about two days to make the market place. Usually I do a new building in one day, but this one was fairly large, and I played a lot with the layout and colors of the tents. Now I have to write a bunch of new code that makes the market place work. All the basic behaviors, like construction, storage, user interface and destruction can be shared since they already exist for other buildings. It’s the citizen AI that has to be updated so that they’ll visit the market place over storage barns.