Tuesday, October 25, 2005

PAC visits The Machine City

Another long post about theory. But at least this one won't include any math. :)

I've decided that the working title of the game will be "The Machine City", which is quite a bit more Google-friendly than "The Machine", with its only major competitors all being Matrix-related.

Anyhow, the game is being designed with a close eye on pattern adaptation control. The problem with most games is that they get boring. What makes shmups interesting is the way you have to maneuver for a safe but effective fire zone. The biggest way to keep the interest is by varying how much area you can maneuver in, how much danger there is, how easy the danger is to avoid, and what your effective firing solutions are. Most of these variables are altered by introducing enemies, bullets, upgrades, and terrain in various patterns.

Now, Machine City isn't quite as straight-forward, because using classical enemies, your maneuverability and fire solutions are completely disjoined: you can go anywhere while shooting in any direction. As I mentioned last post, this also radically alters the dynamics of which guns are good for which purposes.

So, we still have the same basics, but there's a different slant on them. Whereas in a normal game, each variable is pretty much even, in Machine City the "effective fire zone" variable is not deeply joined with the other facets of gameplay. Which, in my mind, is a giant problem.

When thinking of potential enemies and levels, I think in terms of maximizing pattern variation. Think of a normal shmup's level variances as being worth each variable multiplied together: each variable affects each other variable, and combining them in any given way results in a very different result. However, in Machine City, the results threaten to be variables added to each other rather than multiplied. I hope I'm being clear: the fire solution is not, as it stands, in any way related to how well you can move or how durable you are.

What I do, therefore, is link it by hook and crook.

The way I do that is by putting up interference which impedes the player's fire solution. No longer can he just aim at the enemy and pull the trigger: something is in the way.

I've come up with some unique enemies from this. For example, there's an enemy which fires a large number of short-range explosive rounds. He doesn't aim at the player - he has a fixed fire arc. However, if the player is firing along those same arcs, his bullets will hit the explosive rounds of the enemy, and be much ablated.

An easier enemy is one with heavy shields at certain angles - say, right in front. These shields may be invulnerable or simply very durable, but the end result is that the player is better off finding a firing solution which penetrates straight to the body rather than bouncing off the shield.

More interesting is rotating shields, or perhaps shields which move to block the direction which they were last hit from, requiring continual re-maneuvering. Of course, intangible weapons such as steam, small bullets, or fire can limit the maneuverability of the player without impeding their firing capabilities.

I also have ideas for debris-enemies - either ships which launch "guardian drones" or simply a large amount of floating debris. The shields will be able to be knocked around by the player, but they are mobile and quite durable, acting as a continually shifting mass of terrain.

Since many of the enemies are insectoid monsters and plant life, these methods manifest in fairly interesting ways. Imagine something like a praying mantis which has invulnerable armor plates on its arms. Imagine a floating fern which releases swarms of explosive mites. Etc.

Now, most shooters have enemies which have this kind of firing solution interference, but they are nearly always bosses because of the extreme difficulty of arranging for firing solutions in games like that. However, because of the wide availability of firing solutions in Machine City, regular enemies could have such methods.

The difficulty comes in making sure waves of enemies don't end up being invulnerable. For example, a large number of forward-shielded enemies descending at once would be functionally invulnerable. However, math can help that out.

With the understanding of the variables which are available and the methods with which they can be altered (both in-level and through rewards/plot), I hope to build a game which offers continuing new experiences throughout the whole of play.

I also hope to use a primitive PAC-driven social engine to manage some of the character-related and level-selection-type stuff. A simple memetic linkage system, but I think it'll work well. :)

No comments: