Artist: If we do it that way, we’ll have to hard-code the information directly into our content and it will mean we have to create and maintain like four times as many files…
Programmer: If we don’t do it that way, we’ll have to code a whole new system to handle it dynamically and it will cost performance, memory, code maintenance, and bug tail…
Tech Artist: I could write a script that generates the files for us. Everybody wins, right?
I can’t count the times I have been party to a discussion between programmers and content creators that goes something like this:
Let’s ignore the Tech Artist for now. Both the Artist and the Programmer have valid arguments from their points of view. Each is staring at a potential pile of dirty laundry. If the artist has to maintain four times as many files, then imagine how much beautiful content they aren’t creating instead. If the programmer has to spend time coding and maintaining another system, then imagine how many other feature requests must be rejected…you get the idea.
The problem with this line of discussion is that it is too focused on how much work one has to do and how that work will reduce the potential cool stuff for players that could be done. An interesting thing happens when you are both the programmer and the artist for the project. Since it is you coding the system or maintaining the files either way, it starts to make very little sense to take either position above as a good reason to do one versus the other.
This image is what brought all of this to mind. To get some trees to show up, I wrote zero code and just added trees to the random list of tiles I’m populating the world with. It turns out that the trees have transparency around the edges. To get it to look right, I could composite the tree and the grass in photoshop and be done with it. But what if I want trees on top of dirt? Then I need two tree images instead of one. What if I want it on grass, dirt, and something else –now I need three. Okay, so what if I composite the tree on top of grass through code? I started thinking about how much work it would be to support tile layers and it was a decent amount of work. Again, one problem with these lines of thinking is that they are too focused on the cost. I started thinking instead about whether of these approaches had any bearing on the player experience. If I coded the tile layer solution, that could afford me the ability to remove the trees easily and have the grass remain. If the trees are easily removable, then the player can chop them down, or they can catch fire and burn away. If they are used for cover from projectiles, this could be interesting. Once I began thinking this way, I was much more comfortable thinking about the cost. If I know I never want any of those mechanics, and I am really only going to have 3 types of terrain + trees, then it is an easy choice to just combine them in photoshop.
Ultimately my point in all this is that it is important to consider any potential value adds for a player experience in cases where the discussion to take one approach over another is centered on the costs and the result would look the same either way. You might just discover a fun mechanic or maybe even a differentiating gameplay hook.