I love when I can make a comparison between coding and art, because it gives me an excuse to post my latest piece and not feel guilty about “just” having the art there. I just finished this last night, inspired to create this from the vinyl toys scene. Specifically, designer/do-it-yourself forms like the Munny/Dunny craze. I wanted to see if I could make a form that was appealing based on the possibilities of “decorating” the form in different ways. This meant making a form that, although distinct, was not detailed in a way that would force people down a “paint by numbers” path.
So I created my little amorphous quadruped, planned how I would paint him up, and began the painting process… and then reality started to set in. Now, probably the more ideal way to color this piece for me would have been to use an airbrush to paint on masked sections of the piece to get a smooth, even coating with sharp, clean lines. But I’m not a professional painter. I don’t own an airbrush, and of the acrylic paints I had I didn’t even have orange for the body. Now, mixing my own orange using normal paints wouldn’t usually be a problem, except that my yellow paint was a bad bottle, and had a lot of solid “chunks” in it. Throughout the body’s paint there are little uneven patches and tiny dried bumps of paint. It’s not horrible, but it’s frustrating. In fact, none of the paint is perfect. everything takes on a bit of a layered effect and the texture of the brushes I used, and the “matte” varnish was shinier than I expected. I completed my goal with this project, but didn’t quite get the results I hoped for.
Now how does this apply to coding and game development? Think about the last project you made, and what limitations you had imposed. Either due to time, libraries, or tools used to create your game. If you were told about a new development tool which you hadn’t used before (whether it be a physics/graphics library, or a development environment such as Torque or 3d Game Studio) you start to think what great things you could make using the tool with such ease. Excitement for your opportunities starts to grasp at you as you leap at the opportunity to use a tool that will help you do your work easier and faster… and then reality starts to set in. There is an advantage in using the tools, but they are definitely not limitless. There are learning curves and new limitations. Maybe you hoped that your library would have an easy, intuitive particle-system that allowed for complex particle interaction. Maybe you believed your physics engine could handle soft body deformations. Whatever the case, your hopes didn’t match what you had to work with, and compromises had to be made. Maybe you had to define your own system for particle effects, or had to fake deformations using sets of spring constraints. Either way it wasn’t what you initially wanted, but it worked for your end goals. Maybe you even got the chance to learn more on the subject matter in the process.
And I think, at least to me, that’s the moral of the process. I get an opportunity to learn more about my tasks by not having that perfect solution delivered to me. I get to experiment, learn about the strengths and weaknesses of other people’s work, and learn the implementations needed to do these things myself. It’s an application of problem solving skills. I’m not going to aim purposefully for inferior tools to have this experience, but if I have no choice, I’ll learn from the weaknesses of my tools. Perhaps I’ll be able to take something away to make a more informed analysis’ in the future on what tools I use.