WorkFlow
Tweaking and refining a workflow is a huge part of any repetitive task. I used to work in sign shops, where I would make, you know, signs. A lot of them. When you do any sort of assembly line or manufacturing work, refining your workflow is fundamental. The first one of anything will take you a very long time to build, each subsequent unit will be faster and more efficient, until you hit some sort of equilibrium. The trouble with signs is that you will almost never create the same sign twice. If you manufacture bearings you will make millions of the exact same bearing. The function of a bearing requires it to be as close to identical to other bearings of the same type as possible. A slightly different bearing, is probably a bearing that won’t work properly. Making 100 signs, in a run, all with slightly different design or copy, is the norm. Making ten thousand signs with a variety of dimensions, shapes, designs, and materials is what you can expect to do, if you take up making signs. Every time you pick up a work order, the sign you are making will be different. Making games is not like making bearings.
I am working on a game that is played in 2 dimensions, but operates within a 3d game engine, Unity. There are a lot of good reasons for making a game in a 3d engine, and once you come to grips with working in 3d space, not many down sides. There are some constraints though. I’m much better versed in making the art for games, than how the computer processes that art, but, through doing some reading and some tests, this is how I understand it. The way the computer processes artwork in a 3d engine means that typical drawings and paintings are not dealt with very efficiently. Stacking a bunch of semi-transparent layers to build a scene similar to traditional animation, causes a computer a lot of distress. If you don’t tell it otherwise, it will redraw the whole screen for each of those layers. The computer really likes solid objects, made of tightly defined triangles. It can parcel up all those discrete groups of triangles and process them into images on your screen very quickly. So I am making 2d art for a 2d game, but I’m using triangles in 3d space. This requires that I figure out a decent work flow.
I typically like to model 3d objects in maya or silo, but for this game I’m using photoshop. Photoshop is almost the worst tool you could use for 3d. I suppose a case could be made for Word being worse than photoshop for 3d, but still, not very good at 3d. It is really good at dealing with pixels, and more importantly for me, vector shapes. There are vector drawing programs that are better at dealing with vector art, but they typically suck at pixel, or raster, art. It’s also worth noting that I could do similar work with Gimp, but vector art in gimp is a little trickier to work with. I’m still refining it, and trying to automate as many of the tedious bits as I can, but this is the current workflow.
I create shape layers in Photoshop filled with flat colours, adjusting the vector shapes until I have the object silhouette I want, for this game a sword, shield, or other medieval fantasy weapon. I can then go in and paint within that silhouette to add detail. Now I can output all the shape layers to svg vector art. I also save the raster image of the details I added to the silhouette as a png file. Then I take that svg and open it in blender to create a polygon mesh from the paths. I tried going through maya and silo, but neither worked very well. Blender does the conversion perfectly in one or two steps. That mesh can then be passed into Unity, have the png file applied to it as a texture, and set up to be put into the game.
Flat colour filled vector shape vector curves imported into Blender | painted to add detail and converted to polygon meshes |
The other limitation, besides using triangle based geometry, is memory. I’ll try to use as little of it as I can. Making one texture sheet for each asset would be a terrible waste of memory. Before I dump the assets out to the game I will create a texture sheet that has as many of the items as I can pack into one image. The fewer images used, the smaller the memory footprint. Outputting the vector art from these packed positions on the texture sheet, will also create an instant UV map, something you typically have to do after you model the geometry.
So there you go. It’s not a complex workflow, but it’s a little unusual. Like making signs, there are some unique elements, but a lot of the workflow is similar enough to other things I’ve done that I can be somewhat efficient. I managed to tune the operation slightly while I was writing this. As I create more items, I will find other areas of the process that can be optimized, automated, or just dumped. Of course, no matter how refined, work is still work, and it will take some time. I’ll get back to it.