Congratulations, you’ve made it to the fourth installment of The Brick Dead Project, a series of articles chronicling my experiences while trying to make a video game without so much as two clues to rub together. It’s a good thing you stuck with me this far because today there will be presents! To catch up on previous posts in this series please click here.
I exhaled in exhaustion and slumped back in my chair. I had to admit, it looked good. And it worked!
I had just finished a six-hour marathon of recreating and decorating my first little test scene. Rebuilding the game in a world where up was up gave a chance to rebuild the map on Unity’s Terrain editor, a tool that allowed click-n-drag creation of maps that could simply be painted on with textures and populated with trees with the flick of a mouse. Ironically, it was the map editor functionality I expected when I first set eyes on Unity and mistakenly assumed it to be more of a toy than a tool.
I clicked play and cracked a wry smile as I heard my video card’s fan crank up a notch for the first time since I had started this asinine project. For a plebe aspiring to be a noob, it was a magical moment. The greenish light of a night sky tinged with undeath drew long, ominous shadows through the graveyard fence and across the playfield. The old, neglected cobblestone path that led here petered out amongst the overturned earth of the graves and the inexorable encroachment of nature. On the right, a large willow leaned over the fence, cementing a connection from the meaningless yet picturesque environment to the artificially constrained play area. On the left, a dying tree nestled a clutch of fireflies in its branches as it both added some much needed environmental variation and blocked and easily exploited side shot. The mana-dispensing statue in the back shown brightly under the blue hue of some cleverly faked God-rays.
More importantly, she was mechanically sound. Huge, invisible cubes reinforced the delicate fence that would prove prone to allowing a fast moving Force Ball to escape the map. Another invisible cube lurked behind the play area, ready to gobble up wayward objects and penalize the player for losing them. The dimensionless Game Manager watched with with it’s outstretched arms made of ones and zeros, silently weighing every action and ready to judge “Game Over!” at moment’s notice.
Our wizard hero was finally animated, brandishing one hand forward to maintain the magical shield while darting back and forth across the field, a blending of what was once two separate animation cycles. With a touch of a button, he would lower both arms, dropping the only defense you have, to conjure up another of your brick breaking allies.
Ah, the ‘charge trigger’. What was once the idle speculation about what an interesting mechanic for a Breakout clone could be became the lynchpin of the entire Brick Dead Project. That beautifully ugly leaning tower of if statements and boolean variables was the one shining spot in this whole amateurish mess. While there were a number of features to separate this experiment from its Atari 2600 ancestor, the defenseless charging of a new ball was the single biggest achievement that made Brick Dead something different. It was totally worth the brutal coding marathon that left me swearing and bleary eyed in font of the monitor until 5:30AM because I had used a single equal sign instead of a double.
It was also but a fraction of my vision. A good, important piece of the foundation, but far from complete. The ball physics needed a do-over. I still has some ugly pieces of “Programmer Art,” primitive objects used as placeholders, such as the all-important shield/paddle and mana capsules. I had not even begun to play with sound. I wanted to add more spell ball types, more enemy types, more options, more paths, to add this, to retouch that, to reach for the sun on my homemade wings of wax!
When people throw stones at you, you turn them into milestones – Sachin Tendulkar
Yeah, I just quoted and Indian cricket player. You should get out more, America.
So much to add. So much yet to do. But first, I needed to make the game a game. For my own sake.
I had a health system, but your couldn’t tell by looking at it. I had a mana system. It just wasn’t actually viewable anywhere. I had fail states, but they didn’t do anything. Before we go any farther, let’s just make a game. Besides, if I get sick of this, I could still look back and claim “Mission accomplished!” You’re always off the hook after declaring “Mission accomplished,” right?
Okay, what else did I need to make this game a game? Health and mana displays, obviously. A game over screen. A main menu would probably be nice. And some type of scoring. With the goal of this test scene being to clear the whole field, a standard point total was out of the question. I elected to go with another rating popular amongst modern leaderboards: Speed.
For all of it’s GUI-licious presentation and power-packed middleware, I was quite surprised to discover just how… remedial Unity’s in-game graphical user interface system was. You could draw rectangle, put a texture in the rectangle, make the rectangle run some code if it was clicked, and… Well, that’s really about it. Apparently there is a new GUI being cooked up over at Unity, but it has been delayed so often that in a 2013 presentation even the senior software engineer in charge of it now refers to the system as DNF GUI.
It was fine. I didn’t need to be sidetracked into making yet another batch of art at this point. Here was a goal that, barring the ISS crashing down on my house, I could reach. I had not felt so energized and determined since deciding I wanted to make this game.
Five hours later, it was done. It wasn’t pretty, but it worked. Two menus, two status bars, one timer, and a whole ‘nother batch of learnin’ for me noggin’. Man, it had been a long weekend at this keyboard. I beamed at the bundle of code and polygons beneath my fingertips. It rewarded me with one of the most unbelievable ball bounces I had seen yet. I winced. Aw, Baby Brick Dead, you so cwazy!
It had been three weeks since I first installed Unity. Two weeks since embarking on The Brick Dead Project. The first prototype weighed in at 3,416 files in 402 folders totaling 1.06 gigabytes of data packed full of state-of-the-art tech like real-time lighting, PhysX physics, Mecanim animations, normal mapping, and, one of my own personal game fetishes, bouncing particles. It was barely a game, but it was mine.
And now, dear friends, I invite you to try this very first iteration of The Brick Dead Project for yourselves. I never actually planned for anyone to see it, but what the heck.
And don’t worry about the specs above. This test level compiled down to about 80 megabytes. As you can see I’ve tried, tested, burned through, and broke a good number of bits and bobs along the way ;) Fortunately, Unity is REALLY good about pulling out just the stuff you need to run the final program.
So, I haven’t actually tried the Mac or Linux versions. I meant to fire up the ol’ Knoppix boot disk, but haven’t had a chance. So, ya know, installer beware. Anyway, just unzip and run BDproto1. Or whatever the heck you do to get Mac programs working. Feel free to let me know if it dies or runs like crap or whatever either via comments or email. System specs are appreciated. Benchmarks are adored.
Warning: Do NOT adjust your speakers! I haven’t actually added sound at this point.
- Your goal is to clear the graveyard of all tombstones. The faster, the better.
- Use WADS or arrow keys to move. Mouse adjusts rotation. Hold primary mouse button or the “1” key to charge Force Ball. Release to launch. You can release the button at any time to cancel casting without penalty.
- You will loose if you let 5 balls leave the play area (behind you). This is measured by the red bar at the top.
- You will loose if there are no Force Balls on the field and you lack the mana to cast another one.
- You have 300 mana at start with a maximum of 500. Force Ball costs 100 mana to cast. Hit the statue in the back to release a mana capsule. Catch this with your shield to gain 10 mana.
- Have fun! I just scored 46.8 seconds. I used to average about 26 seconds, but then I fixed the timer XD
- We love you! Thanks for playing.
The Brick Dead Project will continue.