| Tuesday, October 30, 2007 |
 My Routine |
Posted - 10/30/2007 10:51:48 PM | I am very busy. My day usually begins at 8:30 am at work, then home about 5:30pm, and on alternating days either spend time with the girlfriend or the martial arts class. This means my dev time happens either early in the morning or late at night. Early in the morning works best for me, just because I am well rested and my mind is fresh and not full of day job issues.
Because of this, my programming time at any given moment is quite limited. At most I will have an hour at a time, and more often closer to half an hour. This forces me to break down my project into the kind of steps which can be accomplished in half an hour. Any more time than that is a bonus, and not to be squandered.
I occasionally manage to get out of bed at 6am several days in a row. At those times I can accomplish a great deal, but this leads to me having a head-full of ideas at night. When that happens, I either stay up late coding or stay up late, tossing and turning with a head-full of ideas. Then I stop waking up early.
This morning's project was learning how Flash saves local data. Flash uses a thing called a "Shared Object", which acts something like a cookie which can be used to store up to 100k of data. 100k of text is a lot, which means I will be able to save very detailed games, or lots of simple ones.
Yesterday's project was a generic output/debugging window. Since I am using the MXMLC compiler I don't have the trace window which is available in the Flash IDE. The compiler tells me when I have compiler errors, but the runtime errors which the Flash player displays are, for debugging purposes, vague to the point of being useless. Especially during development. So now I have a simple output window. This is the code:
package {
import flash.display.*;
import flash.text.*;
import flash.events.*;
public class OutputWindow extends Sprite {
public var t:TextField;
public var f:TextFormat;
public var b:Sprite;
public function OutputWindow($x:Number,$y:Number,$w:Number,$h:Number,$v:Boolean=false) {
f = new TextFormat();
f.font = "courier";
f.size=10;
f.color=0x000000;
t = new TextField();
t.x=$x;
t.y=$y;
t.width=$w;
t.height=$h;
t.border = true;
t.borderColor=0x000000;
t.background = true;
t.backgroundColor=0xffffff;
t.defaultTextFormat = f;
t.visible = $v;
addChild(t);
b = new Sprite();
b.graphics.beginFill(0x999999,100);
b.graphics.lineStyle(0,0x990000,100);
b.graphics.drawRect(0,0,10,10);
b.graphics.endFill();
b.addEventListener(MouseEvent.CLICK,toggleVisibility);
addChild(b);
}
public function write($t:String):void {
t.text = $t;
}
public function update($t:String,$r:Number=0):void {
if($r>0) {
for(var i:Number=0;i<$r;i++) {
t.appendText("\n");
}
}
t.appendText($t);
}
public function empty():void {
t.text = "";
}
public function toggleVisibility(e:MouseEvent):void {
if(t.visible == true) t.visible = false;
else t.visible = true;
}
}
}
...a simple tool, but those tend to be he most useful.
| |
 Ready to Begin |
Posted - 10/28/2007 10:48:37 PM | Here it is, a month after the announcement of the elements for 4E6, and I think I am ready to begin writing code. I have the design for my game at a point where I can begin production, without worrying about suddenly realizing that it simply won't work, and having to go back to the drawing board.
I have done away with the back story for the moment. Now it is going to be, at the core, a simple asset management game with a moderately detailed tech tree. It will be player-vs-environment (plague, storms, taxes, etc), along the lines of the original Sim City. No enemy AI to speak of. No multi-player. The whole game will be in a single self-contained location. Additional resources will come in from a non-specific "out there".
Rather than starting big and paring down, I am going to start small and add features as time and energy permit.
| |
| Thursday, October 25, 2007 |
 Reintroduction to Inform, or Introduction to Refor |
Posted - 10/25/2007 12:11:19 PM | Some mid-afternoon browsing yesterday brought me to the Inform website, where I discovered that a new version of Inform, Inform 7, was released over a year ago.
I began playing interactive fiction games back in the early eighties with "Zork" on a Commodore 64. Over the intervening years I have occasionally re-acquainted myself with the Interactive Fiction world. I even bought a book a couple of years ago.
I spent a little time yesterday playing around with the Inform application and I have to say, it is extremely well done. Everything about it is intuitive and/or easy to learn, and all the information you need to get a game up and running is right there in front of you. Here is an example of some code (grabbed from here):
Chapter 3 - The World
[Because most of what goes on here is conversation rather than interaction with objects, our setting is quite simple and most of it consists of the characters:]
Stage is a room.
The old lady is a woman in the Stage. Understand "mother" or "stepmother" as the old lady. The old lady is active. The description of the lady is "She looks plucked: thin neck with folds of skin exposed, nose beaky, lips white. Perhaps when her fortunes are mended her cosmetics too will improve."
The Prince is a man in the Stage. The description of the prince is "He's tolerably attractive, in his flightless way. It's hard not to pity him a little." The prince carries a glass slipper. The glass slipper is wearable. Understand "shoe" or "heel" or "toe" or "foot" as the slipper. The description of the slipper is "It is very small for an adult woman's foot."
Lucy and Theodora are women in the Stage. The printed name of Lucy is "Lucinda". Understand "Lucinda" as Lucy. Understand "Theo" as Theodora.[1] The description of Theodora is "Soft, round, in every sense yielding: she eats too many candied almonds herself, but never grudges sharing them. No character worth mentioning." The description of Lucy is "More compact than Theodora, and with more self-control."
The sofa is scenery in the stage. It is an enterable supporter. The description is "They never let you stand on it." Some pillows are on the sofa. Understand "pillow" as the pillows. The description of the pillows is "Not as pretty as you." The pillows are scenery.
The wing chair is scenery in the stage. It is an enterable supporter. The description is "Pitiful wings, really." Understand "wingchair" or "seat" as the chair.
Instead of doing anything other than examining when the noun is a thing and the noun is scenery: say "That would not help matters, even if you could reach."
The perch is in the stage. It is scenery. The description is "It's adequately comfortable for your purposes."
Instead of doing something other than examining to the slipper: say "It's not yours."
Before wearing the slipper: say "There is no part of your body on which that slipper would fit." instead.
Almost sounds like Hemingway. Maybe I should dump the text of "Hills like White Elephants" into the tool and see what happens.
The most compelling part of all of this, for me, is that the line between writing a story and programming a game has been almost completely erased.
| |
| Tuesday, October 23, 2007 |
 The Status of My Status |
Posted - 10/23/2007 12:20:28 PM | I have been doing a lot of pen-and-paper work on my game lately. The tech tree is at a place where I can begin building a game around it, and I want to avoid the trap of spending all of my time planning, and no time building.
I haven't made a comprehensive search for such a thing, but in my studies I have not found many articles discussing the thought behind the various tech tree examples available online. Seeing the tech tree is less than half of the information. I want to know the thought process that went into the thing. Did the Starcraft tree start as a huge pool of possibilities and get pared down, or did it start as a couple of artifacts which were built upon until the arbitrary decision was made to call it "done"?
I don't want to make it seem that no-one is talking about these things. There are two interesting discussions going on, here and here.
Next on the agenda: A comprehensive, ordered to-do list so I can set up the issues and knock them down, and hopefully be into the testing/balancing phase a month before the game is due. Here is a rough draft of the remaining issues.
•Story
•Game Design
•Game Mechanics
•User Interface
I guess I am almost done!
| |
| Tuesday, October 16, 2007 |
 4E6 - On Technology Trees |
Posted - 10/16/2007 12:26:54 PM | So I have been spending the last several days researching the history and uses of salt, and trying to derive a worthwhile game from the information. this is proving to be surprisingly difficult, as, from all appearances, salt ranks right up there with fire and the wheel in importance to the growth of civilization.
Last night, while my girlfriend studied for an exam, I grabbed a pile of sticky notes and wrote out all of the different pieces of salt-related tech I have discovered thus far. I tried to keep it simple, e.g. "preserved vegetables", rather than specifying pickles and kim-chee and sauerkraut and the like. After fifteen minutes I had a list of almost 40 bits of technology, roughly broken out into four categories: people, sources, uses and technologies. Not bad...perhaps a little ambitious for a game which needs to be completed in less than six months.
The next step is to arrange all of these pieces of information into a viable technology tree. I have done a little research, and there isn't much in the way of technology tree theory out there on the int0rw3bs. I have played games in the past which have tech trees of various complexity - Travian having the best I have seen - and it seems to me that, more than anything else, the richness and balance of the tech tree governs the fun factor in the game.
I am moving toward having A Dry White Harvest be an educational-ish game. I don't plan on it being placed in any particular area of history, but I want everything to be internally consistent and logical, and I want the pieces to fit together well. So there are more things I need to figure out:
-what piece of tech logically spawns from what previous piece of tech? Does a pile of wood plus a wood wright automatically equal a cabin?
-what prerequisites should a given piece of tech have?
-how many prerequisites should a piece of technology have?
-should technological advancement spring from qualitative or quantitative advancements? Should having a salt mine spring from having a miner or a dozen miners?
-should technology upgrades also be dependent on the passage of time (turns)?
Here is an example of the kind of logic puzzle I am dealing with: There are basically four ways to acquire salt:
1. Salt deposit - you find it in clumps on the ground - 1-person job
2. brine pool - a pool of exceptionally salty water - 5 person job
3. brine well - a well dug to extract marginally salty water - 10 person job, plus an specialist of some kind (miner, stone mason, etc)
4. salt mine - a hole dug into the earth from which pure salt can be extracted - 20 person job, plus multiple experts (miner, stone mason, alchemist, etc.)
If the user discovers a brine pool when he has fewer than five villagers, can the pool be used at a reduced capacity, or is it a "magic 5" which suddenly turns the pool "on"? And what are the prerequisites for the specialist villagers? What does it take for a miner to emerge from a pool of villagers? For this problem specifically I am thinking that, the more prosperous the town becomes, the more immigrants will appear, and therefore the more likely it will be that one or more of them will have the necessary skills. That makes the appearance of an expert:
dependent on the size of the village,
which is dependent of past prosperity of the village,
which is dependent on the amount of salt being harvested,
which is dependent on the number of villagers,
which is dependent on the prosperity of the village.
...and here things begin to break down.
There are a lot of examples of technology trees available online, and most of them are well thought out and logically lead from one to the next. I want my game to be tied closely to real-world cause and effect, which means I will need more "nodes", and perhaps the criteria for advancement will need to be more rigorous. This means more micro-managing of resources, which means longer game sessions [note to self: research saving games]. And that means I will have to work quite hard on the presentation to make sure that the experience is enjoyable. Once.
On a side note, I came across an interesting quote recently which was (a) inaccurately attributed, and (b) probably inaccurately stated, but still compelling:
Salt made cities possible. Cities made war possible.
Hmmm.
| |
| Wednesday, October 10, 2007 |
 Title Goes Here |
Posted - 10/10/2007 6:07:01 PM | Not much to report at the moment. I just uploaded a prototype of the title screen title. The actual game will be run as an executable, and will be fullscreen so users can enjoy a much smoother experience than is generally delivered in a browser.
Most of my work so far has been in designing the game - game mechanics, tech tree, back story and the like - not much that merits a screenshot, although I may post photos of some of my notes. I am old-school, in that I would rather hash things out with a pencil and paper than create a hard-drive full of Viseo diagrams.
| |
 4E6 - First stab at a (back)story |
Posted - 10/8/2007 10:04:58 PM | You are the son/daughter of a moderately prosperous merchant in a medieval-ish land (which, for purposes of inhabiting mythic space, will not be named). You have just reached your majority and in celebration your father has brought you to the local port city for a holiday. A friend of the family, another merchant who plies the coastal towns in a small ship, invites you along to familiarize you with the world outside that which you have known.
Disaster strikes! While taking advantage of the currents farther away from land, a late-season storm takes you by surprise! For two days the ship is beaten and battered, and finally loses to the elements.
Time passes...
When you are aware of yourself again, you are at the end of a spit of land which seems to extend beyond the horizon - long stretches of sand and far-off spots of darker brown which fade into the morning haze. The rain has left the sparse vegetation lush and vibrant, and a brief search uncovers a small fresh-water spring. You fall asleep.
When you awake again, you discover yourself on a small island, and the spit has become an archipelago. The nearest island looks like a bare rock thrust out of the water several miles distant.
The next morning, at low tide, you attempt to walk to the next island. Unfortunately, the sand is waterlogged and soft, and what would have been a pleasant afternoon walk on dry land becomes the hardest day of your life. The sea is at your knees before you reach the rock. Exhausted, you fall asleep.
The next morning, desperately thirsty, you search for water only to discover you haver none, save the ocean, and thirsty as you are, drinking from the ocean would be much worse.
The ocean is at your chest when you finally collapse, face-down, next to the fresh-water spring.
The next day you explore your island. It is perhaps a quarter mile long and half that wide, a large jumble of rocks with some sandy soil giving way to sand around the edges.You have water, and you have some berries, and at low tide you have some shellfish. You have some wood, both driftwood and small scrub trees hardly taller than yourself, and you have no real shelter.
And you are all alone.
| |
| Thursday, October 4, 2007 |
 4e6 Building the Skeleton |
Posted - 10/4/2007 8:24:11 AM | I have started working on the tech tree for my game (the name of which is still up in the air). It is going to be contained in a large XML document, adn it iwll show the dependency of every item - trade good, material, person, monster, building - in the game. The structure will be something like this:
<tech_tree>
<categories>
<category>material</category>
<category>food</category>
<category>animal</category>
<category>human</category>
<category>monster</category>
<category>worker</category>
</categories>
<items>
<item id="salt">
<name>Salt</name>
<category>material,food</category>
<introduction>You notice a strange taste in the air, and the world seems to be covered in an odd, sparkling white dust.</introduction>
<description>A small pile of fine white crystals, each no larger than a grain of sand.</description>
<prerequisite></prerequisite>
</item>
<item id="rough_salve">
<name>Rough Salve</name>
<category>medicine</category>
<introduction>You notice that the cuts on your hands, when spend all day in the brine pools, heal much faster than the wounds on your back and legs.</introduction>
<description>A thick gray paste with a sharp smell</description>
<prerequisite>salt</prerequisite>
</item>
</items>
</tech_tree>
For the structure of the various items, I am taking a page from the Inform Developer's Guide, which shows how to put together a simple text adventure using Inform, a high-level language which is not entirely unlike XML in its structure. Text adventures have been around for about 30 years, and they have ironed out a lot of the logic issues surrounding prerequisites for actions, tech trees, and the like.
So this XML will likely change drastically over the next new months as I discover new needs for the game. But at least I have something done, a week into the contest.
| |
 How My Game Might Work, part 2 |
Posted - 10/1/2007 9:59:22 PM | Today after work I stopped by the library and picked up a book called Salt. While reading the first chapter a few elements of my game kind of fell into place.
First, the four elements are representative of sequential phases of the game:
1. Salt (aka Crystals) - survival, harvesting, small trade
2. Pony - stability, distribution large trade
3. Accountant - expansion, collection, centralization
4. Explosion - perpetuation, exploration, dominion
Second, salt can be used for many, many things, each of which may become accessible/possible, depending on how, and how well, the game is played. For example, flavoring and preserving food; providing nutrition for a sparse diet; used as a salt lick to attract animals, and after they are captured, to provide nutrients for those animals; anti-bacterial to help heal wounds; pressed in molds to create coins (see previous entry); used as a status symbol among the wealthy; as a preservative for mummification rituals; as a basic ingredient in gunpowder.
So it could be that, by using salt as the central hook of my game, I could turn this into a Sim History-of-World-Civilization, if I had the time and energy.
This is my favorite part of creating a game like this: the research to provide a compelling back-story and an enjoyable and interesting environment.
It is very important to me that the different elements blend seamlessly in the overall game. If there are never more than one or two in the game at any given time, that is okay with me.
Also, I have a possible new title for the thing: A Dry White Harvest.
| |
|
| S | M | T | W | T | F | S | | | 2 | 3 | | 5 | 6 | 7 | | 9 | | 11 | 12 | 13 | 14 | 15 | | 17 | 18 | 19 | 20 | 21 | 22 | | 24 | | 26 | 27 | | 29 | | 31 | | | |
OPTIONS
Track this Journal
ARCHIVES
November, 2009
March, 2009
January, 2009
November, 2008
October, 2008
September, 2008
August, 2008
July, 2008
February, 2008
December, 2007
November, 2007
October, 2007
September, 2007
July, 2007
June, 2007
March, 2007
February, 2007
January, 2007
December, 2006
August, 2006
July, 2006
June, 2006
|