2nd Law [ Dev Log 4 | Artwork ]
This is part of a 5 part Dev Log where I will be talking about the process I took through implementing 2nd Law, a short, adventure-style game about cause and effect. https://ldjam.com/events/ludum-dare/49/2nd-law
0 - Lessons | 1 - Design | 2 - Development | 3 - Music | 4 - Artwork

Am I Qualified?
This is a topic that I've felt the least authoritative about but also the most excited to talk about--perhaps that is why I left it to last. While I have always felt artistic, I don't know that I've always felt successful. Or maybe I should say I don't practice it very often. I haven't truly created a lot of art assets for my prior games, so I was equal parts excited and fearful to try this time around.
I knew that wanted a pixel art style, maybe because I thought that was the easiest path to something looking decent without looking odd. Or perhaps I was already sensing a nostalgic feel to the game. After deciding the style, I had to think about the toolset and workflow--something that I have not established for myself. The design of the game also demanded a lot of assets--too many for being a solo developer--so that worry was in the back of my mind as well.
The Tools
I had tried making pixel art in the past, but tools like Gimp just didn't lend themselves to efficient art creating (nor did they seem to like my little Wacom Bamboo tablet). Instead, I decided to give Aseprite a try. I had seen amazing artists like AdamCYounis create fantastic works fairly easy. After downloading the program and watching Adam's getting started video, I felt like I knew enough of the tricks to get started.
Character Animation
I had originally imagined a fairly simple main character, so I sketched out a rough shape and worked on a short walk animation.

In the end, I wasn't happy with the result. I could have spent more time refining my own, but I felt like I could have wasted a day on a character spritesheet. And since I wasn't doing the Compo, I knew I had the freedom to take shortcuts where I needed to. I went to OpenGameArt.org for a player asset from MoikMellah. This ended up saving me quite a lot of time and allowed me to focus on the more important pieces: the backdrops. So that's where I moved to next and really solidified the style.
Backdrops
I started with a larger, blank canvas in Aseprite (640 x 360), and much like I do when I'm creating physical art, started to block out the composition. Generally, I wanted a large central area framed by an expansive background but focused by a low-detail foreground. Exporting layers allowed me to enforce perspective into the gameplay, such as having the character disappear behind the grasses or putting clouds in the sky (more on that later).
I followed this process for two scenes (the Meadow and the Forest). Some reviews have noted the "rough" style of pixel art, which I attribute more to my lack of experience than any direct decision; but I do agree that the final result was somehow appropriate, even harkening back to an older style of game.

Sometimes it felt like I was spending too much time painting the backdrops, but it was also cathartic and a nice break from debugging code. Especially when I got to the forest, shading all the grasses got to be quite a lot of work, but I was really pleased with the result. While I had originally envisioned 4 different areas, I knew I would not have time to fill that many environments with interactable elements.
Clouds
At first I painted static clouds as a layer in the Meadow, but I knew that having motion in the sky would really set the scene, even if it was subtle. For this, I made a 1280 x 180 canvas that "looped".

To achieve the loop, rather than have two sprites end-on-end that swapped positions, I decided to import the one as "tiled". What I realized is that when I adjusted the width at the same time as locking the trailing edge, it created the illusion of motion. When the left edge of the sprite equaled the total width (i.e., we've reached the end of the sprite), I reset both the position and width. I had to play with the math to get it work out just right, but the end result is effectively seamless.

If you're at all interested in the source code, it is available on gitlab.
Scenery
This was ultimately one-half of the downfall: the number of individual assets to create. (The other half was the coding behind each new interaction, which I discussed in my Development devlog). While each individual piece didn't take that long, in aggregate it would have been quite a lot of work if I wanted to achieve my original vision. I also used two more animated assets from OpenGameArt.org here (the rabbit and the fox), as I knew that animation was not something I wanted to put my time into.

I did end up fighting a bit more than I would have liked to with Unity's animation system for interaction results like the boulder and tree, especially making use of the Animator Override Controller, which has the potential to save a lot of time (or waste it if you need to specialize one of them, but end up ruining all the others). In the final hours of the challenge, I definitely turned to "hack mode", even naming some functions "MakeStuffHappen" when I couldn't think of a better one.
What's Next?
That's it! These were all the subjects I really wanted to discuss, and doing so helped me think through a lot of what went well or what could have gone better. Thank you for reading, and if you missed previous entries and would like to read more, the links are at the top!
I do hope to make an update release for the game, once I've worked in some feedback. Stay tuned!
- Hawkin