ID:70280
 
Keywords: design
I've been spending much of May deeply embroiled in extensive research for my upcoming BYOND project. Examining the fundamentals of old classics such as Hard Nova and Star Command. Considering the aspects of flow evident in modern releases such as Plants Vs. Zombies and Fallout 3. Beta testing games yet to come.

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.
It sounds tacky, but it works beautifully. Both Star Command and Hard Nova managed to cram entire universes on floppy disks through abstraction.

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.
<3 plants vs zombies, and the futurama reference

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.
Good point. I guess I'm thinking about abstraction along the lines of effort vrs game quality return.

If it's not all that hard to code in a random star field that creates a compelling visualization of a universe, go for it. On the other hand, if your game isn't done yet, perhaps it would be best to just leave yourself a note that it might be cool to add this space effect.

(I've managed to generate some pretty impressive piles of ideas by simply leaving a list off to one side and adding to them whenever the mind wandered while coding.)

The idea of abstraction links nicely into the concept of modular code that you might be able to create code that produces this space effect which you can re-use across several projects.