It's only through the magic of game development that this might appear I've been completely slacking off.
...
In all seriousness, I feel a lot closer to realizing my goal of Building my Own Net Dream thanks to the experiences over the past month.
When we last left my little drama of game design steps, I had come to the point where I already had known that applying programming skill is not enough and was now taking things seriously enough to see through a proper design.
Then my muse ran smack into developer's block like a bird hitting a window.
I've discovered the trouble with this approach that it quickly becomes overwhelming. Though I might be a 26 year gamer, I don't yet have the powers of visualization needed to really materialize raw awesome on paper.
A medium needs to be found. Through dabbling with 1980s games lately, I think I've found that medium, and it goes something like this:
Develop your game as an abstraction, then decide what really deserves proper fleshing out.
For example, lets say I want to make an Sci-Fi game that spans an entire universe.
If I go completely non-abstract, I've now a ton of content to produce: galaxies, solar systems, planets, complexes - and the logic and content that drives it all. Sooner or later, a bumblebee farts in Omicron Persei 8 and the entire universe explodes and I realize that this is going to be an epic design endeavor.
If you have Derek Smart's drive, maybe this seems fine to you, maybe you'll go ahead and develop an incredibly detailed simulation of every little molecule of your virtual microcosm. If you can do that, more power to you. However, I advise you ask yourself: are you making a simulation, or are you making a game?
The abstraction-based approach is a game-centric approach. We put the game mechanic first, and everything not absolutely necessary we represent with something simple and let the player's imaginations fill in the gaps.
For example:
- Do you write up a detailed tile-based realization of a spaceship complete with multiple layers of equipment and upgradable parts or do you simply write, "A ship."
- Create a universe that represents real space on a 3D plane and simulate the journey of flying the ship to a planet with chances of encounters, or simply have a button that says: "fly ship to planet" which rolls 1d6 and generates the text "You fly your ship to the planet and successfully evade the blockade."
- Create a randomly generated planet surface complete with roving bands of realistic fauna and pockets of resources, or simply a button that says: "survey planet" which rolls 1d6 an might return, "You find the fountain of youth."
- Create a three-dimensional dungeon rife with traps, roving monsters, and randomly generated rooms - a roguelike within the game - or simply have a button that says: "perform espionage mission at complex" and rolls 1d6 to find out what you found.
Sounds lame? Want to be ambitious? Good: the more specifics you can realize, the more impressive your game will be. What your abstracts do for you is provide a framework for a working game where you can choose to expand parts of whenever you feel you're ready.
What do we want to code and graphic up first? The experience of using a ship to travel the universe? The experience of using a vehicle to transverse a planet? The personal experience of walking about the planets? If your initial abstraction is abstract enough, you'll have plenty of room to do all of this without shutting any doors to yourself.
Maybe using abstraction like this doesn't seem like a big deal to you. Maybe you've done it several times already by accident, and falling off a log doesn't seem that impressive to you. However, take a moment and think about just how powerful this is.
How many times have you thought to yourself, "oh my God, I don't want to code all this boring stuff between the parts of the game I really wanted to get to" and this was the main thing stopping you from finishing your game?
Thanks to the power of abstraction, you don't have to if you don't want to. Just slip in a transition as simple as a 1d6 roll and a line of text and you're good to move on. That abstraction in design is so simple yet effective is why it's so powerful as to be notable.
it's worth nothing that abstraction doesn't mean you can't have a little fun with creating a thin way of representing something vast; depending on what it is you're 'abstracting', you can include assorted graphical representations that help make the situation feel more realistic without creating logical holes. ie, generating random but interesting looking stars/planets on a direct path from point A to point B in a space game. the user won't be able to interact with those places, since they're on a locked path, but they make the universe look vast and fun.