Wednesday, December 9, 2009
Monday, December 7, 2009
I think the first thing I'm going to do here is to deconstruct the Porpoise Engine, as it lies at the heart of Ven Cluster: Black Ops, and hopefully many of the other games I will develop.
The first question to answer is: What is the Porpoise Engine?
The Porpoise Engine is a procedural content generator that creates a story for the player on the fly, as they play. Sounds pretty impressive, doesn't it? It's not really that impressive, actually, it's just a blend of two completely unoriginal ideas - but I've not seen anything like it done before.
To provide a sense of context, let's talk about just what the story is, in VCBO. In the game, the story is that of Noble Houses in a space empire (The Ven Cluster) jockeying for the throne and positions of Imperial Favor. The player figures into this space empire as a mercenary brokerage firm of spies and other kinds of secret agents, from couriers to assassins. Therefore, the player plays a central role in this kind of jockeying, as Houses do all kinds of behind-the-scenes work so as to look relatively peaceful on the surface, for the Emperor. A good frame of reference for this (and one of the leading inspirations for this game) would be Frank Herbert's Dune universe. The story is shown to the player in multiple ways such as a news reports and in-game mail that the player can read, in addition to a diary that chronicles their career.
So the story is, in essence, what the Houses ask the player to do, what of all they ask that the player does, and the results upon the Empire.
The next question is: What is the procedural content?
Procedural content is a buzzword, and a misleading one at that. The fancy way to describe procedural content is "code that writes code". While that is literally true, that seems to describe a computer as a thinking device, when of course computers can't think. What procedural content is, is a set of options that the computer will randomly choose among, given a set of rules. Procedural content has been around for a long time in computer games, from Hack and Rogue-likes, to the random levels of Diablo, and so on. It's basically just a way to create something random - that makes sense - out of a few smaller parts. What this means in the context of "procedural story generation" in VCBO is that the Porpoise Engine randomly chooses missions to assign the player. Much more simple, huh?
But wait just a minute. I said that the Porpoise Engine takes in TWO unoriginal ideas. So what's the second?
The second is a slightly newer idea - but not by much. It's a 'faction' system, something like what you can see in any 4x game such as Master of Orion, Galactic Civilizations I & II, Civilization, and even other games like Freelancer. How the Porpoise Engine uses this faction system is as a set of rules of how to assign the missions - so that a Noble House of the Empire will ask the player to assassinate someone at a rival House, or perhaps a minor noble of one House will carry on a secretive romance with a noble at another House in a Romeo & Juliet type storyline, or a House on good terms with another House might ask the player to quietly assess the other House's usefulness to them, or ask them to courier a treaty, and so on. . . There are seventeen mission types that a House can ask a player to perform, so results will be greatly varied.
In result, the Porpoise Engine takes in the player's results and choices from what missions they accept and succeed at (and perhaps aim blame at with!) and uses that to change the universe that the player is playing in and offer them different choices to further their story.
But wait, there's more!
The Porpoise Engine also incorporates a "random event" generator to reinforce the idea of a persistent universe where things happen - and the player isn't god, just another force in the Empire.
And there's even more!
The Porpoise Engine also tracks short term trends for the player - for instance, a series of offensive attacks upon a single star system by the player probably results in a star system takeover by one House over another. Facilitating a Romeo & Juliet romance and then assassinating the leaders of those Houses probably results in an alliance between those two formerly rival Houses.
Add into this mix that each of the agents that the player can hire and use is unique and has their own storyline to play out, and VCBO really does have a different story every time you play it.
As you can see, it uses these two simple ideas - randomized content and faction influence - to quickly create something complex. The tricky part of it for a solo indie developer like me will be to write enough parts that can be pseudo-randomly generated so as to be engaging and not repetitive.
Lastly, why does the Porpoise Engine have it's own name? Well, I intend it to be a piece of reusable code - as you can see from reading the above, it's a pretty complex engine - and I think it's highly reusable.