Yes – you read that right.
This time I want to talk about what has literally been the most difficult part of my GameDev journey – fighting my own nagging desire for perfection.
Wait…don’t you WANT a perfect, bug-free game? I hate bugs!
I don’t mean imperfect in regards to functionality: please squish as many bugs as possible…as a gamer myself, I can tell you without a doubt that bugs are the most frustrating thing for your players. They are always bad.
I’m talking about prototyping.
YAWN. I used to think so, too. )When I started out, I heard all sorts of folks talk about the need to prototype levels, systems, graphics, and game mechanics. I always felt like it was a complete waste of time.
As an indie developer with a 10-12 hour average workday at my “day job,” I don’t have a lot of time to waste. Time spent redrawing something is time I could’ve spent adding another level or feature, right?
I was wrong – you are, too.
I was thinking about it the wrong way. I didn’t see the time sink that was wasting even more time: trying to get it right the first time.
Let me explain: I started working on the tilesets for our new Farm RPG about 6 months ago. I knew I wanted the ability to do convincing DIAGONAL shapes, so none of the typical 2D tileset templates would work. I also knew we were using the “painterly” style for our artwork. There aren’t a lot of references for top-down, painterly tilesets. Most games in this style paint the entire stage as one large asset, then place the character on that. It was my first try…and it didn’t give me the FPS or memory usage I was targeting.
I digress. I made my first tileset (including diagonals) – fully textured, since I was only going to do this once. It took me about a month to get the shapes the way I wanted and finish painting all of the textures. It looked GREAT in Clip Studio Paint, and worked perfectly in Aseprite. I imported into Unity, ready to knock out a few levels and make my game.
It looked like crap. The angles were wrong. the way the character moved across it was awkward, and was going to be difficult to manage scripted things like interactions, footstep sounds, and wall collisions. It wouldn’t work.
I spent all of my time painting and texturing the wrong shapes. I felt so stupid! Back to square one, I adopted a new tactic: I used my same colors, and created a “blueprint” for tiles. I imported it, built a small level, then refined it a few times.
I’m on my 8th version…and finally like the fit. Had I stuck with my original method, we’d be in month 11. Because I switched up my workflow to prototyping, I found the perfect fit in 2 weeks. I re-textured them and got the result I was looking for.
The struggle is real!
I wrestle with this all the time. I’m a pretty smart guy, and I pride myself on doing the job right the first time. Design and invention, however…these processes NEED iteration, refinement, and sometimes to be redone from the ground up. Don’t spend time and energy creating PERFECT code, art that you’re completely in love with, or the perfect level – only to find that it just won’t work. That’s how developers quit. Time, energy, and sweat wasted for a discouraging end.
Build it first, then work out the details.
My workflow, if you’re interested:
- Use primitives (basic colors, simple objects)
- Get a feel for what you want the end product to be. Live with it and play with it in-editor for a while.
- Refine! Unity makes it easy…drag and drop the “improved” versions straight into the ProjectName/Assets/FolderName where the prototype was. If you kept your resolution and size the same (keep tiles in the same spot for tilemaps!), you’ll lose NOTHING!
- Repeat 2+3….a lot!
Over time, you’ll have a better result, in less time – trust me!!