Thursday, April 9, 2009

SpaceWars the continuing saga...

So I started making this game. I started when I was 14 and got my own computer. I liked games, and they seemed pretty easy to make, so I just started. I had a very clever plan, I'd make the game as suited for easy programing as I could. So I developed a story that accounted for why the play of the game, why both sides have identical technologies (they're designed to be colonies, and the technology is all stored as data in the original colony ships), why the industry and population as well as the space navy would be in standardized increments (the buildings and industry has to be encapsulated in prefab "domes" because of toxic atmosphere.

Anyways...I started mapping it all out, and trying to sell James and Matt on making it, with no success. This was a few years ago. But then last month I decided it was time to go ahead and do it on my own. And I just hate working on projects alone. I don't have the emotional energy to sustain it like I used to. But I am sicker now, and as life narrows my options, I am hoping having fewer "possibilities" makes it easier for me to focus on building *one* reality. And so I started again, this time in a newer more "high level" language. (programing languages are considered more high level if they are like English or Human Language, and lower level when they're more like Binary or Machine Language. My last try was in the language C++ which was for many years, and still is to a great extent, the industry standard for programing languages. But from what I gather there has been, over the last 30 years and constantly increasing number of languages. Some are very powerful like C++ and can do just about anything, some are more for specific aplications like HTML(Hyper Text Mark-up Language) which is what most of the Web was ariginally run with because it only makes web pages.

This time around I am writing SpaceWars in the language C# , read C sharp, like in mucial notation. C# is a somewhat higher level language than C++ but it also hasa very powerful "suite"...that means it comes with a program of its own that helps you will all the different parts of programing. De-bugging is a part of programing where you iron the kinks out, you fix little mistakes that you didn't mean to build into your program. The suite also has all these nice features like finishing words, or phrases or entire lines of code you are writing, if the suite program recognizes the first few letters you have typed. It also types in repetitive parts of the program for you, and labels different parts of the code with pretty and memorable colors, so at a glace you can recognize structures in your program that make it easier for you to imagine what you need to add, or modify, or fix next.

That's all interesting, but not nearly so interesting or cool as what I am learning about how to program from my Mentor, Chris Johnson. He's that sort of brainy guy who reminds you how smart you're not just by being his own affably brilliant self. He got his computer and fell in love with game making at about the same age as I did. Except hge was able to, or sick in the head enough to, read all about programing, learning many languages, and spending thousands of hours actually writing game programs...just because it was fun. I think that since he started helping me with this version of SpaceWars he has discovered he liked a new language which previously he thought had no use for him, bought a couple books about it, and mastered it. And when i say mastered it he has re-written his speech recognition program with it to the point that in a few weeks it will be better than Dragon's Naturally Speaking, the industry standard for that category of programs.

So what's so cool about having Chris Johnson teach you? Well, he's is quite possible the person in the world I know who thinks more abstractly than anybody else. Which makes him a certifiable weird-o in some regards. The kind of weird-o who loses his job working for Radio Shack because he is philosophically opposed to cell phones and cannot bring himself to sell them to people he thought didn't *really* need one. Only to need one himself a month or two later because one cannot really stay connected like a professional or buisnessman needs to be...and when he quit Radio Shack he went back to being *the* IT professional for a small TV station and started his own business. But when it comes to subjects he is keen about, like writing, or programing, or art, or the Bible, you can appropriately appreciate the formidable power of his capacity for abstract thinking. Anyways...what's cool about Chris in this context is that he taught me a Way to program that looks infinitely better suited to my needs than my old fashioned, intuitively linear, way of going about it.

For example, we're beginning by writing a small version of the entire program, which we're going to "evolve" in steps. And we're going in evolve it by re-writing the *entire* thing on the fly, thru several expanding iterations. Sort of like the "genetic prodigy" theory of evolution. Where the idea is not that a series of microscopic changes in structures are implemented, but leaps of innovative development are made. Maybe they call that theory "punctuated equilibrium" instead of genetic prodigy now..lol shrug. But this also goes hand in hand with his insight that if *I* do not have "a game I can play" almost instantly, and at each step along the path, I will not be able emotionally sustain the effort of writing what will become a large project like this, because I don't have the EQ (emotional intelligence) to deffer gratification all the way til there's some nearly completed first draft of SpaceWars to begin play-testing.

Now here comes the next insightful development of Chris'. That is that I was building the game Engine...the underlying programing mechanisms of all the complicated and not at all exciting or interesting book-keeping parts of the game, and even if we used his evolutionary game development approach there'd be no significant joy in the process, even if we accomplished making "runable" game version every couple of weeks as we build the project up. What he realized and was able to teach me from his own past experiences of game making, and helped me to do today was to focus on WHY *I* would like to sit in the chair and play *My* game. so today we shifted the whole emphasis. We put the domes and mines, the whole strategic resource side in dry dock. And have focused now on making a game where the Player issues orders to Commanders, who engage in battles, whose outcomes develop the history of the Commanders modifying their abilities for future battles.

In other words, we made explicit that what *I* was excited to play was a wargame where the fighting units have a "character arc", where your control is limited as it is for a president who may be commander in chief but is in reality to removed form the actually fighting to do more than assess and give commands about Lidell Hart (On a side note, since when I read his book so long ago, a dusty tome with dry writing in it, about Grand Strategy, I had no heard of him again until last week doing Google research to teach myself how commander's traits influence battle. What are these traits and what do they do. I have been reading everything form Clauswitz, to reports of the Bosnian military war college enough to get entirely discouraged about my game until today) called Grand Strategy. In my readings I also read about and plan to include how the Glory that attaches to certain Commanders becomes a positive factor for a President to exploit, say in recruiting new soldiers, or gaining political suport for funding his war from his legislators, or in manufacturing unit cohesion in the armies. But also how it can cost a President, in making it harder to rein in a popular Commander, or weakens unit coghession when subordinates or peers resent a famous Commander's growing popularity.

In even other words, what I wanted was to play a game where you could be satisfied even in losing because of what cool generals you made, or saw destroyed, or how battles or campiagns were won or lost based on the interaction of the psychological histories of the Commanders you had at your disposal.

GRIN

In even otherer other words, I wanted to play a war-game that was a story about people.

Today I designed, and we wrote that part of the program that creates and assigns initial attributes to the Commanders. We reduced the number of Commanders, Traits, and conditions of battle, and battle mechanics to the smallest possible numbers to be game-testable and also sorta fun. We have three Commanders. They're cleverly named Bloody Bill, Cautious Kenny, and Reckless Rodger. The Traits they can have are Good Attacker, Good Defender, Good Flanker/Maneuver, and Sanguinary. Sanguinary is not tied to one of the Commanders specifically just because we will have other Traits that are not, and we wanted to include a trait now that was more multivalent than binary from the get go. Sanguinary is how the regular casualty number is multiplied by the bloodiness or certain commander's traits. The Good Attacker Bill, will have 1.5 the number of lives lost in his victories or loses, and Rodger will have a multiplier of 1.3. This is what we have already.

Next we'll add things like terrain and unit status, and balle conditions and outcomes. So far the terrain is linear...Planetary Space, Solar System Space, Inter-strellar Space, and Deep Space. Its arranged in a line from one side's planet to the other so it goes Planetary Space, Solar System Space, Inter-strellar Space, Deep Space, Interstellar Space, Solar System Space, Planetary Space. This will give us multiple opportunities to advance and retreat, flanking will be abstract for now and just accomplished as fait acompli. Units will range from "task force" which is 1-4 ships, "fleet" which is 5-10 ships, and "corps" which is 11 or more ships. Battle conditions would be "fair fight" where a task force meets another task force, or "outmatched" where a task force meets a fleet, or a fleet meets a corp...where one uit meets the next larger sized unit, and "heroic" where a task force meets three task forces, one fleet, or a feelt meets a corp. And "heroic" where a task force meets a corp, or a fleet meets two corps...for example. The battle outcomes would be reflected in units having a status change like going from "fresh" to "used" to "fatigued" to "broken."

This will give us our first playable game.

Then we'll had how the history of a commander's victories and loses affect the capacities of that commander, and other delights, working to our next evolutionary step of complexity I am very much looking forward to developing the psychological components.

If you'd like to play the game you'll have to download the C# suite form Microsoft. It's a free download, and the registration makes it permanent, and its not a very ugly registration process...but it does take up like 422 megs of space on your hard drive. But I'll find out if we can make and pass around assembled versions for you to all play test with us as we reach those evolutionary plateaus.

Now ya'll know what I do when I am wasting time not being ill.

3 comments:

  1. I liked very much how you wrote this story Litho. I dont know much about programming or computer games, but you opened up that world a great deal to me.
    thanks
    Quin

    ReplyDelete
  2. I liked very much how you wrote this story. Although I don't know much about programming or computer games, you opened that world to me a great deal.
    thanks
    Q

    ReplyDelete