Posted On: 2018-12-17
Recently, I've been working on prototyping the visual aesthetics that will be used for my upcoming project. While I have a general idea of what I would like the game to feel like (narratively, visually, and mechanically) I know that my ability to deliver on that feeling will be limited both by my artistic skill and my familiarity with the tools I am using. To that end, I have been working to familiarize myself with the tools I have, as well as to gain an understanding of how I can use them to shore up/compensate for some of my artistic weaknesses. As I do so, I've been focused on how I can use them to emphasize my two goals, visual clarity and dynamic lighting.
Before anything else, gameplay elements must be visually clear. This sentence can mean several different things, so I will attempt to unpack it in more detail. This does not mean that I expect the visuals to instantly communicate to players what an object is, rather that players, upon understanding how a gameplay element works, should be able to discern instances of that element as distinct from other gameplay elements. As an example, consider a game that has two kinds of collectables: hearts (to heal) and strawberries (to gain points). If both collectables are similar shapes, sizes, and shades of red, a player will have difficulty determining which power-up will heal them, and that could have dire consequences in the heat of combat. On the other hand, if the strawberries are a desaturated red (or pink) with a tuft of green at the top, that would likely help a player more quickly distinguish them. Taken further, if the strawberry power-up were replaced altogether with an object with a completely different shape, such as a lemon or a rainbow, then it would be unmistakeably different from the heart, which should help with making quick decisions. Visual affordance (knowing what an object is for, even if you've never seen it before) is also important, but when I have to prioritize one of the two, I will aim to make objects differentiable as the primary goal. (One could say that affordances benefit new players, while visual clarity benefits everyone.)
Working almost in direct opposition to visual clarity, I want my game to make use of dynamic lighting - specifically, I want it to support moving objects in the game providing illumination on other objects in the game. Unlike clarity, which is primarily to serve certain mechanical goals, my goal of using dynamic lights is to reinforce the narrative and tonal feel of the game. As mentioned in an earlier post I am intending to have two largely contrasting feels to the game: calm, safe, and contemplative versus threatening and harsh. In keeping with that, I expect that I will need the same assets (character art, pickups, environments, etc) to support both types of feeling, and I am hopeful that dynamic lighting will provide a natural way to achieve that. Additionally, I intend to be able to support a wide range of feelings specific to certain moments, such as joy, wonder, and despair, and I think all of these will benefit from using dynamic lighting to communicate that emotional change.
To achieve visual clarity, I am creating 2d art at the desired resolution for the game (aka. pixel art). Unity, as a 3D engine repurposed for 2D, is notoriously finnicky when it comes to representing actual pixels, but I am optimistic that it will be worth the difficulties. Regarding dynamic lighting, I have been experimenting with using Unity's default shader (rather than it's sprite shader) combined with an unlit sprite, a normal map, and ambient occlusion so that dynamic light sources can correctly illuminate the object from any direction. At present, I am drawing the normal maps by hand, but this is still a work in progress, as it is not quite producing the desired behavior. (I am currently thinking this is due to a lack of skill on my part, rather than something wrong with the theory itself.)
Since things aren't quite coming together yet on the dynamic lighting front, I am also considering some of my available alternatives. Making 3d models that work at low resolution is likely not viable (both due to my lack of skill and due to the imprecision of 3D rendering at low resolution). Hand authoring the effect of lighting into the sprites themselves could work, but I expect that will pressure me to minimize the variety of characters, poses, environments, and lighting settings (since the amount of work will likely sky-rocket if I have to hand-author every possible combination.) Lastly, it is also possible to use dynamic lighting without normals, but I expect there will be a certain amount of incongruity I will need to work through (for example, if the sprite is drawn with a static light source from the top-right, then having a dynamic light illuminate it from the bottom-left will likely look completely wrong.) While none of these options are desirable, I find it is always helpful to have some alternatives available, just in case.