In this fifth edition of The Brick Dead Project, an exercise to see how many times I can write the same introduction without repeating myself, we travel onwards from the comforting confines of the first prototype and into strange, new territory. To catch up on previous posts in this series please click here.
They say the best way to learn a foreign language is to immerse yourself in it and I had become so very immersed in learning Unity. I no longer played games, I attempted to make them. I no longer watched movies, television, or viral videos, I watched classes on Euclidian geometry. I no longer browsed my RSS reader packed full of the latest happenings of the day, I read message forums dedicated to users of the Unity engine.
And yet, I still wasn’t altogether sure I was learning anything. I continued to struggle with understanding the scripting reference manual. Every idea I had left me cluelessly blinking at the screen until I broke down and fired up a search engine. Every command I cobbled together still erupted into a series of red compiler errors the first time it ran. Sure, things had gotten slightly easier by virtue of knowing how to properly ask a question to the Google God, but true knowledge still eluded me.
Well, I have learned to add a comment to the damnedable curly brackets to save time in counting ‘em later when I inevitably forgot one.
The lack of knowledge, while concerning, wasn’t enough to dampen my drive. I mean, I had just created a game! A rough game, a short game, but a game none the less. And quite a handsome one to boot. I mean, in three weeks I had gone from this:
Wait… Three weeks? Was that right? It felt much, MUCH longer. Well then, what am I so worried about? I mean, who could be expected to retain much in three weeks, right? [Insert nervous chuckle here].
Alight, there’ll be plenty of time to feel inadequate later. We’ve got bigger fish to poach. Case in point: The three most important players in a Breakout-style game are the brick, the ball, and the paddle. One of those is lagging woefully behind in the looks department. That shield’s gotta go!
There are 387.44 million miles of printed circuits in wafer thin layers that fill my complex. If the word HATE was engraved on each nanoangstrom of those hundreds of millions of miles, it would not equal one one-billionth of the hate I feel for humans at this micro-instant – AM, I Have No Mouth, and I Must Scream
Have you seen Star Wars: The Phantom Menace. Crap move. AMAZING force fields! It was exactly what I wanted. And there was a zero-percent chance of me finding one on the web that would be suitable. I needed half of a hollowed out capsule. Shouldn’t be too hard right? Pfft, you don’t know 3D modeling software (Unless you do. In which case, dude, we gotta talk ;) ).
This wasn’t the first time I had taken a stab at creating a model for the shield. My previous attempts had led me to dabble in a variety of free 3D modeling software like SketchUp and 123D Design. These half-hearted earlier attempt had left me empty-handed. All roads pointed to one app: Blender.
Blender had first come to my attention way back in 2006 when The Blender Foundation launched their innovative Open Movie project. Here was a free, open source 3D modeling software that was being used to create professional 3D featurettes where all the assets from the film were contributed to the public domain. I immediately dove into everything Blender Foundation had to offer. While I don’t precisely recall that original experience, the program icon stayed on my desktop for years afterwards. All I remembered was that it was too precious to delete and too dangerous to open. I was about to rediscover why.
Now, to fully grasp the scope of what comes next, I feel it necessary to fill in a bit more of my background. I am no stranger to dancing with the design devils of digital domains. I had taught myself Novel Netware, learned SCO Unix from a book, conquered Adobe's suite of products from After Effects to Premiere, and done things in WordPerfect 5.1 you people would believe. Heck, I used to build Access databases for fun! In short, I grew up eating technobabble and crapping networking. I say all this not to brag, but to frame the following description of Blender with some context.
In short, Blender is why artists should NEVER be allowed to design software!
In length, Blender’s UI is THE (Redacted) most (Redacted) sorry excuse for a lump of (Redacted) (Redacted) (So very redacted) I have EVAAAAR had the (Redacted) displeasure of (Redacting)! I would rather cover my (Redacted) with (Redacted)-stained honey and (Redacted) (Really?!)(Redacted) an anthill in the (Redacted) God-forsaken (Redacted) of Iraq until (Redacted) spurts from my eyes and then I would (REALLY?!?) the goo from the (Redacted) sand than (You know…) this program ever again! (Redacted)! And and and AND it’s got, like, FIFTEEN (Redacting) (Redacted) UIs that change at, seemingly, random times! I swear! I do the same (Redacted) thing twice and end up in TWO TOTALLY DIFFERENT interfaces! Pop quiz: How do you select all? Bzzt! Ctrl-A only works in EVERY OTHER modern application. Ya know, like using the RIGHT (Redacted) mouse button to (Redacting) select something! This is Blen-(Redacting)-der! At least there’s searchable quick menu. Of course, it only features a fraction of functions and opens by hitting the (Redacted) space bar because (Redact) Blender. Honestly, this is THE most (Redacted) bit of (I’m just gonna redact all that at once) code I have ever had the displeasure of encountering.
Look at their splash screen! They know!
That said, Blender is absurdly powerful, free, and the right tool for this job.
I had prepared. I knew it would inevitably come to this someday. I had already taken sorties into the domain of this digital despoiler to repair, rework, or reimagine 3D assets. Sometimes I walked away with some semblance of success. Sometimes I ran away in tears. Every mouse-click, every keystroke needed to be verified with a FAQ or forum or Google query. Failure to do so inevitably results in madness inflicted by the Blender Beast. Learning this monster was the last thing I needed on top of all the other crap I was learning. Still, this needed to be done.
It was the first time I realized just how lonely it was to make a game alone. Lonely and scary with only sanity shreading monsters for company and seemingly impossible tasks to complete. Like going to the DMV. Or working graveyard shift on a help desk.
While I shall not relate the details of that long, dark night, nor how many times I had to start over, nor how many times I had to return the shield to Blender to correct some dumb scaling or rotation problem, know that it was brutal battle that gave birth to two grand items: The magical shield I sought and a dictionary full of homespun profanity so vulgar it would make the creators of South Park blush.
It was so very, very beautiful. I spent the next several days lavishing attention and code upon my new creation. Sprite sheet animation cause it to shimmer under its own self-illuminated, transparent texture. An infrequent arc of lightning was added at random vertices to add a touch of unstable personality. I created a color shifting script that allowed the shield to cycle from blue to yellow and back again when collecting mana ups. Finally, bounce and ripple effects were created and coded to added a whole new level of physicality to bouncing the ball, the most important interaction of the game.
As an aside, let me tell ya, the simple act of moving an object briefly back and forth while said object is speeding along two axes while twisting to and fro: Not the most obvious of things to code for. Still what started as an idea for flash proved to be essential to the experience. Video games are a series of interactions with a toy on the part of the player. When you perform those interactions, the results should be interesting. Bouncing the ball off the shield was the most common interaction in the whole bloody game and the ‘ShieldBump’ effect proved to be every bit as important to the entertainment value as the charge trigger for casting spells.
It was worth it. All of it. The Battle of Blender, the frustrating ShieldBump technicalities, the mysterious color shifter that worked one second and failed the next, all of it, done and done. The last major piece of programmer art removed, Brick Dead truly looked less of a hobby project and more of a ‘real’ video game.
The shield is the player and the player should be glorious.