When Squidcake and I started making Pokémon Skyquake over two years ago, it started out as a few sketchpad doodles between a couple of amateur artists who met playing Pokémon Unite. Squidcake would draw some concepts he dreamt up for new Pokémon, and I’d take some of the digital art skills I’d casually picked up while teaching high school English remotely to a bunch of kids halfway around the world and try to make a digital rendering of it on my Surface Pro.
I’ll be honest: they were bad.
Don’t get me wrong, the ideas were pretty cool—at least cool enough for us to keep coming back to the table and turning paper and pencil into digital art. In terms of the execution, though, most of our doodles looked like exactly what they were: amateur doodles with a grain of inspiration.
I’ll spare you the story of how a few doodles turned into a full-blown Pokémon fan game (that’s a story for another day) because the only thing that matters is that over two years and literally hundreds of doodles, refinements, sprites, and thousands of lines of code later, we’re on the cusp of our first public beta. We thought that, in light of our launch, we’d lay it all out on the table: the good, the bad, and the ugly of our art journey, to help fan game developers at every stage of the creative process to learn from our mistakes.
Full disclaimer: two years of consistent spriting, and we’re still far, far from commercial-caliber artists. When I tell you that we’ve learned a lot over the last two years, please understand that we’re not claiming that we’ve arrived. In fact, if anything, I’ve learned that the more I know, the more I realize there is to learn. That said, we’ve learned a LOT over the last two years, and we’ve learned a few things about process that are worth sharing.
When I see aspiring game devs post their first questions about spriting on Reddit or fan game Discord servers, I can usually tell who will make their ideas into art and who will flame out like I’ve done a dozen times over the last decade based solely on the kinds of questions they ask about creating sprites. Honestly, you probably can too. Don’t believe me? Read these questions and tell me which person stands a better chance at making good sprites:
If you guessed that the second question is the better question, you’re right. At risk of sounding pedantic, let me clarify why. The person who asks the first question isn’t asking a process-oriented question. They’re asking a results-oriented question. They’re less concerned with cultivated their artistic skills and more concerned with having assets to use for their games. This person is usually not satisfied when you send them a link to a tutorial about which tools to use for spriting, understanding shape language, learning about perspective, color theory, or figure drawing. They want a template that doesn’t exist: a magic stencil that morphs to the shape of the ideas in their brain that they can just transpose to the canvas in 15 minutes or less.
Don’t get me wrong—I’m not passing judgment or calling anyone out. I’m mentioning this because I’ve been that person before. More often than not, I’ve been a results-oriented creator who gets too frustrated at the thought of not being able to instantly make what I want. I’ve made that fatal mistake enough times that I’ve begun countless projects only to abandon them after failing to capture the idea in my head on the canvas.
Don’t be like younger me. Accept that learning character design and spriting is a process, and commit to the enjoyment of turning your first iteration into a second and a third ad infinitem.
Believe me, if I hadn’t accepted that “perfect” is the enemy of “good,” I’d have abandoned this project after laying these rotten eggs:
These designs were among the very first attempts that we drew over two years ago, and they suffer from a lot of problems, from ill-conceived appendages to lazy shading, to simply not even coloring within the lines. And don’t even get me started on what these Pokémon are meant to be.
I honestly don’t even remember.
That said, we kept at it, got some feedback from community members, and came up with something better the next time around: