Showing posts with label games. Show all posts
Showing posts with label games. Show all posts

11 September 2008

Spore: six hours in

I preordered Spore from Amazon in December of 2007. It arrived yesterday. I'm talking here about my impressions.

OK, first, I have only six hours of play time in on Spore, so really, these are just first impressions. I’ve played through the first three stages and am poised to begin the civilization stage. My review of it, I’ve come to realize as I wrote the below, is unapologetically positive. I realized, of course, that I was having fun playing, but now I realize that I love the game. It has shortcomings – the controls are hard sometimes, but overall, I’m really enthusiastic.

The creature creators – particularly once you get into 3D (i.e. everything after the cellular stage) are really fun to just mess with. There are game-play repercussions to the choices of what you attach and where, but even without that, just seeing what you can do is awesome fun. In the end – regardless of how Spore lives up to expectations and hype, just the creative acts alone will make it worth $50 if I honestly appraise things (time and money).

At each stage, so far, the game-play changes significantly. It both gets more complex as you advance and also changes how you accomplish things. I’m playing an herbivore and that informs the choices I have throughout play.

In the beginning I was just hunting bits of green stuff and trying to avoid being prey. The way you grow and level (up through strata of the tide pool? down? Or maybe just in that you’re aware of things at a different scale but in the same space?) is a nice gimmick and the play remains the same but the graphics are rich enough that even though there’s not much to it, it’s fun and rewarding just playing the light game and looking around.

When you advance from one stage to the next, you are presented with a history of your development which focuses on what all you accomplished during the last stage but includes the whole history. It’s fun. Just looking at how your body has morphed at each “generation” is kind of neat – particularly since you remember back to how you were making decisions.

When you crawl out of the sea, new parts – arms and legs most obviously, become available. And you gain a third dimension. You can fight or befriend other nests of critters and you have some basic missions to fulfill to gain DNA points (or whatever – the currency that allows you to alter your form). And you can (and must, I think) build a pack of companions that will help you make friends or eat foes. I stumbled upon gliding wings and found that increasing my flight ability made it fast and fun to get around (and out of danger) in this stage. This is also the first area where maneuvering with the WASD keys was hard. Turning is something I still haven’t mastered. The mouse-look doesn’t work like it ought, I think.

This brings me to another realization about Spore. They give you enough guidance to steer you along the right path, but really figuring out how to play has enough holes in it that you’re figuring stuff out. (Now that I think about it, maybe the manual tells more – maybe even too much, I dunno, I only read the first page.) But, so far at least, the figuring out is nicely in what Vygotsky called my Zone of Proximal Development – which means that the learning task is stimulating and not discouraging.

In the third stage your form is fixed and the creator aspect of play involves dressing your tribe; designing their costume. It’s quite fun. The game play was pretty dull real-time strategy play. Harvest food, domesticate pets – though I’m not sure how to use them yet, make babies, outfit your tribe and assign them tools – that sort of thing. And then you can either impress and ally with other tribes or destroy them. I think your strategy at the beginning of this stage depends on what tools you start with. If not, that kind of sucks, but oh well. I befriended two and destroyed three – even with the intent to follow as pacific a course as I could. Destroying enemies is hardish. If you want to figure everything out for yourself, skip the rest of the paragraph.............The strategy that I settled on was to equip my entire tribe with burning torches and just attack their main building. You get slaughtered but suck up tons of their resources. You want to have built up a food supply first because as you die, you’re laying more eggs. Probably you got wiped out, but reproduced faster than them. So now, you outfit the tribe similarly and repeat the attack. This time you win. I actually hope it’s not as formulaic as all that, but it worked like that for me on my first game.

That’s about all I can think of to say just now. I’m having fun with it.

10 July 2008

Party game design

1:30 - Using Brenda Brathwaite's article, Easiest Game Design Exercise Ever I decided to make a silly little game quickly. Also, I need text-heavy stuff to do in order to practice working with my new keyboard.

Right off the bat I'm aiming for a somewhat risque party-game since I don't have any experience inventing such a thing.

1:39 - Step 1 - So let's say there are twenty spaces on our track.

1:40 - Step 2 - Must...choose...narrative... OK, so I really prefer an abstract, but I want to follow this exercise. I want to have some social play elements ( so I want it to be social like running for class president or something but kind of more grown up. Um...like a successful party host(es) or something. Yeah, that'll do -- Party Time.

2:10 - Step 3 - My first impulse was to violate the rules here, but I've gone back and decided to *really* follow this as closely as possible and see what I get. I'm going to just "go with dice" but I want there to be three or four sources of movement in step 4 and I want them to be relatively more powerful than the random movement of the dice. I want the dice to result in a distribution with a low kurtosis. What I'd really like is 3d2 or something but I think that's impractical -- flipping coins sucks compared to rolling dice. After goofing around for a bit I think I'll go with Roll three dice (d6) and take the lowest roll as the mechanic. It gives a slight chance of extraordinary movement (six spaces) but you're about 70% likely to move only one or two spaces. This also allows future developments to alter the die-mechanic.

2:49 - Step 4 - Conflict. I'm not sure about calling this conflict but I want a few position-modifying mini-games. Maybe once they're fleshed out the board will just have one of them on each space or maybe they're the result of a card-draw. The trick now is to figure out what they are. I'd like to have at least four mini-games and ideally, more. I'd like them to extensible -- fitting expansions and player-generated content in seamlessly and allowing certain Challenges (I think that's what I'm calling them) to be removed to fit the tastes of the play-group. I'd also like for the Challenges to result in a net movement of <2 spaces -- so some player(s) might advance or fall back up to two spots or maybe some of each would happen but only up to one space in each direction -- and if this were occasionally violated, no biggie.

Challenge 1: Who here has (never) done...? The way this works is that the Focus player (she who triggers the Challenge) selects a question about past deeds for which her truthful answer is "me" (indicated with a raised hand) and presents it to the crowd. (E.g. "Who here has driven over 100 MPH?" or "Who here has drawn a lover's blood with your teeth?" or "Who here has never skied?") Every other player either raises their hand, indicating that the statement is true for them too, or does nothing indicating that it is not. If no hands are raised, the focus player advances two spaces. If fewer than half the hands are raised then the focus player advances one space.

Challenge 2: Color-Match When using this Challenge, a pile of colored cards or tokens or something must be available. (For testing, I'd like to get a pile of color chips from the paint department at Home Depot or something.) The focus player select a color randomly, drawing it and revealing it to all the players. If that player is wearing a garment that is pretty close in color to drawn color (as determined by a consensus of fellow players) then the focus player has two options. If not, skip the first option below and execute the second.

2a: If the focus player is wearing a garment of close color she may opt to apply the color test rules to herself rather than seeking out the closest match as per the paragraph below. If she happens to wear the closest match in the game, then the option is moot.

2b: The player wearing a garment that is closest in color to the selected color must go back two spaces. If that player would rather, he may remove the garment and instead go forward one space.

Challenge 3: Kiss Your Neighbor When playing with this Challenge module, there is a play aid -- a card with five strata each listing one of, in order: hand, arm, lips, neck and tongue, upon which a pawn rests and moves. The pawn begins the game on the lowest (hand) space. When the focus player lands on a KYN space, he must consult the play aid and kiss one of the players adjacent to him -- the one he has kissed the fewest times if applicable, otherwise his choice. If he will not, he loses two spaces. If he kisses the neighbor in a place and manner appropriate to what is indicated in the space with the pawn, he advances one space. The focus player also has the option of kissing his neighbor as per the space below or above the pawn's current location, subtracting or adding one to the number of spaces gained. Further the pawn is moved up a space on the play aid each time a kiss is conducted earning one or two spaces gained on the victory track. The point of the kiss-location track is to escalate the passion and intimacy of the kiss. To play this appropriately, the meaning of each space should be apprehended with this in mind.

Challenge 4: A Round of Greetings The focus player is to address each other player starting with the player to her left and continuing in clockwise order as if she were the host of a party and were greeting guests as they arrive. Each greeting should include physical contact where practicable (maybe only with adjacent players if your game space doesn't permit freedom of movement), direct eye-contact and a compliment. The focus player receives two space-advances minus one for every fellow-player who thought the act implausible.

Challenge 5: Art Contest The focus player names a subject for the other players to draw. Each other player is given a small piece of paper and a pen or pencil and attempts to draw the named subject. This should take just a few minutes. The focus player then collects the drawings and judges them -- selecting a winner. The drawer of the winning picture advances one space. Then, the focus player's judgment is judged. If every player agrees with the judgment, the focus player advances two spaces. If not, but every player agrees that it was a reasonable or plausible judgment, the focus player advances one space. If not, and every player suspect the focus player of gaming the judgment then the focus player loses a space.

etc.

I'm now thinking that the way to do the board is to just assemble a small deck of cards/spaces based on the modules you're playing with and the relative frequencies desired and then shuffle them up and lay them out making a dynamic board.

5:07 - Step 5 - Oh, I'm done. There you go!

27 June 2008

Name-generating algorithm

I've been dabbling with algorithms to generate new, fictional names for new, fictional cultures for ages. Sometimes I just goof around, sometimes I do real research and sometimes I devise implementations. I've got some code that I've been playing with today and I decided to write about what I'm doing. As you will see, the results are not yet entirely satisfying.

Check out the short wiki article on syllable theory for some basics. There's lots more to read on the web if you want to.

The first step was to build up a potential language. I selected an incomplete, base set of phonemes with which I would work:

Co: b, f, j, k, l, p, r, st, y
Cr: b, d, ph, g, h, dge, ck, ll, m, n, p, r, s, t, v, gh, z
v: a, e, ee, o, oo, u, au, ea, eu, oa, ou, ua, ue

I chose these five years ago when I was first developing a spreadsheet that would generate all the possible syllables of certain configurations. I know that limiting the raw numbers was one concern, but I frankly don't recollect why I kept which ones. It doesn't really matter and I could swap them out as desired.

(I think that Co indicates consonants used in syllabic onset and Cr indicates consonants used in the rime. Note some, but not total, overlap.)

I was writing this up today as an element in a little game that I've been messing with so that pawns would have names and personalities. Because of this context I wanted each game to have a cohesive linguistic feel. I went with those default phonemes above and then for each game-run, limited the available elements by removing roughly 50% of them at random. (Each phoneme had a 50% chance to stay or go so really weird things could occasionally happen.)

In one example (which I'll stick to through this article), the retained phonemes look like this:
Co: j, k, p, st, y
Cr: b, ph, g, h, dge, ck, ll, m, p, r, t, v
v: oo, u, ea, oa, ou

The next step is to build syllables that the language uses. I started out accumulating EVERY syllable possible of three different schemes. But that's too much because it lead to a bunch of over-similar syllables and the language ends up feeling funny. I already had a function that trimmed an array in half as described above, so I just ran them through that.

So the three kinds of syllables that I built are: VC Rime, CVC and CV. using the above-described phonemes and trimming algorithm, I created the following syllables that would be available for use in names (or other words, for more ambitious projects):

R/Rime: oob, oodge, oock, ooll, ub, uph, uh, uck, ull, up, eall, eap, ear, oab, oaph, oag, oadge, oack, oat, oav, oum, our, ouv

CoR/CVC: joodge, jooll, jup, jeall, joaph, joag, joadge, joack, joat, koob, koodge, koock, kooll, kub, kuh, kull, kup, keall, koab, koaph, koag, koack, koat, koum, kouv, poob, poodge, pub, puck, pup, pear, poab, poag, poadge, poack, poat, poav, poum, stoob, stub, stuh, stuck, stull, stup, steap, stear, stoaph, stoag, stoadge, stoack, stoat, stour, yoob, yoodge, yoock, yooll, yub, yuph, yuh, yull, yup, yeall, yeap, yoack, yoat, yoav, youm, your

CoV/CV: jea, joa, jou, ku, koa, poo, pu, poa, pou, stoo, stea, yea, yoa

Then in order to put these together to form words, I identified (some taken from literature and some made up by me) eight configurations that were reasonably likely to produce plausible word-forms. They are:

CoR 'CVC
CoV_CoR 'CV_CVC
CoV_CoV 'CV_CV
CoR_CoR 'CVC_CVC
CoR_CoV 'CVC_CV
R_CoV 'R_CV
R_CoR 'R_CVC
CoR_R 'CVC_R

In my application, I just randomly select one as the pattern to which male names will adhere and one to which female names will. using the above syllables, my app generated the following sixty names:


female names using(CoR_CoV):
koabkoa
koagstea
koatpou
stoatyoa
stuhpu
stupjoa
stulljou
koodgeyoa
poadgestoo
poabpoa
stearku
stubyoa
stoaphpu
poobkoa
kealljoa
koollpu
joatpu
poavstea
stoagjou
stullpu
joollstea
stuckkoa
yullstea
stoatpoo
koodgepoo
stearpoo
poodgejoa
stourjea
yoodgekoa
joadgestea


male names using(CoR_R):
keallup
stoageap
koackooll
joodgeoock
stulluck
kealluh
joatouv
poatoav
stearuh
joadgeoum
yoodgeouv
koockoav
puboack
joadgeoob
yoobear
jupull
joatoat
kulloaph
joackoock
youroadge
yooboag
yoodgeoav
koockup
koackup
stooboum
koumeap
kupub
joolluh
kulloav
joadgeoab


Sadly, these are really, hideous names. They do seem to share a set of sounds and rules, but a horrible one. So, clearly, I have some work to do to avoid Joadgeoum and Koodgepoo, but I'm getting there.

If anyone wants the VB.NET class that I'm using to generate this stuff, here it is:


Imports System.Text

Public Class Language
Dim rand As New Random

Public Co() As String = {"b", "f", "j", "k", "l", "p", "r", "st", "y"}
Public Cr() As String = {"b", "d", "ph", "g", "h", "dge", "ck", "ll", "m", "n", "p", "r", "s", "t", "v", "gh", "z"}
Public v() As String = {"a", "e", "ee", "o", "oo", "u", "au", "ea", "eu", "oa", "ou", "ua", "ue"}

Public R As New List(Of String) 'VC (VCr) Rimes
Public CoR As New List(Of String) 'CVC (CoVCr) Syllables
Public CoV As New List(Of String) 'CV (CoV) Syllables

Public malePattern As wordPattern = rand.Next(0, 8)
Public femalePattern As wordPattern = rand.Next(0, 8)

Public Sub New()
Co = randomHalf(Co)
Cr = randomHalf(Cr)
v = randomHalf(v)
popR()
popCoR()
popCoV()
End Sub

Public Function getName(ByVal sex As gender) As String
Dim pattern As wordPattern
If sex Then pattern = malePattern Else pattern = femalePattern
Dim sb As New StringBuilder
For Each seg As String In pattern.ToString.Split("_")
Select Case seg
Case "Co" : sb.Append(Co(rand.Next(0, Co.Length)))
Case "Cr" : sb.Append(Cr(rand.Next(0, Cr.Length)))
Case "v" : sb.Append(v(rand.Next(0, v.Length)))
Case "R" : sb.Append(R(rand.Next(0, R.Count)))
Case "CoR" : sb.Append(CoR(rand.Next(0, CoR.Count)))
Case "CoV" : sb.Append(CoV(rand.Next(0, CoV.Count)))
End Select
Next
Return sb.ToString
End Function

Private Sub popR()
For Each seg1 As String In v
For Each seg2 As String In Cr
R.Add(seg1 + seg2)
Next
Next
R = randomHalf(R)
End Sub

Private Sub popCoR()
For Each seg1 As String In Co
For Each seg2 As String In R
CoR.Add(seg1 + seg2)
Next
Next
CoR = randomHalf(CoR)
End Sub

Private Sub popCoV()
For Each seg1 As String In Co
For Each seg2 As String In v
CoV.Add(seg1 + seg2)
Next
Next
CoV = randomHalf(CoV)
End Sub

Private Function randomHalf(ByVal a() As String) As String()
Dim output As New StringBuilder
For i As Int16 = 0 To a.Length - 1
If rand.Next(0, 2) Then
If output.Length > 0 Then output.Append(",")
output.Append(a(i))
End If
Next
Return output.ToString.Split(",")
End Function

Private Function randomHalf(ByVal a As List(Of String)) As List(Of String)
Dim output As New List(Of String)
For i As Int16 = 0 To a.Count - 1
If rand.Next(0, 2) Then
output.Add(a(i))
End If
Next
Return output
End Function

End Class

Public Enum wordPattern
CoR 'CVC
CoV_CoR 'CV_CVC
CoV_CoV 'CV_CV
CoR_CoR 'CVC_CVC
CoR_CoV 'CVC_CV
R_CoV 'R_CV
R_CoR 'R_CVC
CoR_R 'CVC_R
End Enum

18 April 2008

MMO class design: reaching balance

I just read the article at Gamasutra, MMO Class Design: Up With Hybrids! An Economic Argument in which the author analogizes the ecology of classes and player-competition within that to several economic factors. It was a good read. And it struck me that it would be really, really easy to provide one kind of balance to the class ecology by simply applying a reward multiplier (maybe just on XP if that's how your game rolls) based on nothing but the popularity of the class. If everyone detects that the fire/fire tank in CoH is uber and picks that, they might choose something else when they realize that the invul/mace tank earns xp at a rate 1.5 times as fast as the fire/fire. Right? And you could have that dynamically tuned as a weighted average based on the previous week on in-game play time or something. Then, barring stupendous gaffes in design which you've hopefully caught in testing, you can just completely avoid pissing people off when you nerf their class.

Is any game doing this? Why not?

21 March 2008

Home Game: map generation

Right, so I've been working on a map generator between other stuff at work -- like when I have to copy 90 zips from DVDs and then unzip them and deal with the 5% that are either bad media or corrupt zip files. I get a bunch of unproductive time that allows light coding and if I don't have any work-related light coding, at least I'm doing vaguely vocational research. Anyway, I think I've got the map generator to a point where it's playable. I might just build out a map with LEGO to help me visualize. (I guess I should be able to plug my output into LDRAW or something and render it on the PC, but I don't think I'll look into that in the next few days.)

Here's a sample map with a key at the bottom: (Well, grr! So it's only the right quarter or third of the map -- you get the idea.)


+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|....|~~~~|~~~~|^^^^|~~~~|^^^^|~~~~|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|^01^|.00.|~00~|~00~|^00^|~00~|^04^|~00~|~00~|.00.|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|....|~~~~|~~~~|^^^^|~~~~|^^^^|~~~~|~~~~|..1.|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~2~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|....|~~~~|~~~~|^^^^|~~~~|^^^^|~~~~|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|....|....|wwww|TTTT|....|TTTT|TTTT|^^^^|....|TTTT|^^^^|....|wwww|wwww|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|.00.|.01.|w02w|T00T|.00.|T04T|T01T|^02^|.03.|T00T|^05^|.02.|w04w|w00w|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|....|....|wwww|TTTT|....|TTTT|TTTT|^^^^|....|TTTT|^^^^|....|wwww|wwww|~~~~|~~~~|~~~~|~~~~|~~2~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|....|....|wwww|TTTT|....|TTTT|TTTT|^^^^|....|TTTT|^^^^|....|wwww|wwww|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|....|wwww|TTTT|^^^^|....|TTTT|wwww|wwww|wwww|TTTT|~~~~|TTTT|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|.02.|w01w|T02T|^05^|.07.|T06T|w02w|w02w|w06w|T01T|~00~|T03T|^00^|~00~|~00~|~00~|~00~|~00~|.00.|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|....|wwww|TTTT|^^^^|....|TTTT|wwww|wwww|wwww|TTTT|~~~~|TTTT|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|~~~~|~2~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|....|wwww|TTTT|^^^^|....|TTTT|wwww|wwww|wwww|TTTT|~~~~|TTTT|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|^^^^|~~~~|~~~~|....|TTTT|....|^^^^|TTTT|~~~~|TTTT|TTTT|^^^^|TTTT|....|....|^^^^|wwww|....|....|~~~~|wwww|~~~~|....|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|^00^|~00~|~00~|.01.|T05T|.00.|^03^|T08T|~02~|T06T|T04T|^06^|T06T|.02.|.04.|^03^|w00w|.02.|.00.|~00~|w00w|~00~|.01.|.00.|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|^^^^|~~~~|~~~~|....|TTTT|....|^^^^|TTTT|~~~~|T1TT|TTTT|^^^^|TTTT|....|....|^1^^|wwww|....|....|~~~~|wwww|~~~~|....|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|^^^^|~~~~|~~~~|....|TTTT|....|^^^^|TTTT|~~~~|TTTT|TTTT|^^^^|TTTT|....|....|^^^^|wwww|....|....|~~~~|wwww|~~~~|....|....|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|wwww|....|@@@@|....|....|TTTT|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|,,,,|TTTT|^^^^|^^^^|....|....|~~~~|~~~~|wwww|TTTT|~~~~|~~~~|^^^^|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|w00w|.00.|@03@|.01.|.00.|T06T|^06^|w06w|^08^|^06^|^06^|^05^|,04,|T06T|^04^|^02^|.04.|.01.|~00~|~00~|w00w|T04T|~00~|~00~|^01^|T01T|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|wwww|....|@@@@|....|....|TTTT|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|,,,,|TTTT|^^^^|^^^^|.2..|....|~~~~|~~~~|wwww|TTTT|~~~~|~~~~|^^^^|TTTT|~~~~|~~~~|~~~~|~1~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|wwww|....|@@@@|....|....|TTTT|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|,,,,|TTTT|^^^^|^^^^|....|....|~~~~|~~~~|wwww|TTTT|~~~~|~~~~|^^^^|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|....|....|~~~~|^^^^|^^^^|FFFF|~~~~|wwww|,,,,|^^^^|TTTT|FFFF|^^^^|TTTT|^^^^|TTTT|TTTT|^^^^|TTTT|^^^^|wwww|~~~~|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|.03.|.03.|~00~|^06^|^04^|F08F|~05~|w10w|,13,|^12^|T10T|F07F|^10^|T08T|^04^|T02T|T06T|^06^|T05T|^03^|w05w|~02~|^03^|^03^|^03^|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|....|....|~~~~|^^^^|^^^^|FFFF|~2~~|wwww|,,,,|^^^^|TTTT|FFFF|^^^^|TTTT|^^^^|TTTT|TTTT|^^^^|TTTT|^^^^|wwww|~~~~|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|....|....|~~~~|^^^^|^^^^|FFFF|~~~~|wwww|,,,,|^^^^|TTTT|FFFF|^^^^|TTTT|^^^^|TTTT|TTTT|^^^^|TTTT|^^^^|wwww|~~~~|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|@@@@|~~~~|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|wwww|,,,,|wwww|FFFF|wwww|TTTT|wwww|FFFF|~~~~|....|@@@@|wwww|^^^^|TTTT|^^^^|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|@01@|~00~|~00~|^01^|T06T|^04^|^07^|w08w|^11^|^11^|^13^|^12^|w10w|,12,|w09w|F06F|w06w|T04T|w04w|F08F|~04~|.08.|@06@|w08w|^04^|T02T|^01^|~00~|.00.|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|@@@@|~~~~|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|wwww|,,,,|wwww|FFFF|wwww|TTTT|wwww|FFFF|~~~~|....|@@@@|wwww|^^^^|TTTT|^^^^|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|@@@@|~~~~|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|^^^^|^^^^|^^^^|^^^^|wwww|,,,,|wwww|FFFF|wwww|TTTT|wwww|FFFF|~~~~|....|@@@@|wwww|^^^^|TTTT|^^^^|~~~~|....|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|@@@@|wwww|~~~~|wwww|^^^^|TTTT|FFFF|wwww|^^^^|^^^^|wwww|^^^^|wwww|FFFF|^^^^|wwww|^^^^|^^^^|wwww|TTTT|~~~~|^^^^|wwww|~~~~|^^^^|^^^^|....|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|@00@|w06w|~00~|w03w|^04^|T08T|F12F|w12w|^12^|^14^|w10w|^10^|w10w|F13F|^08^|w08w|^10^|^07^|w09w|T08T|~04~|^08^|w08w|~00~|^06^|^03^|.01.|T00T|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|@@@@|wwww|~~~~|wwww|^^^^|TTTT|FFFF|wwww|^^^^|^^^^|wwww|^^^^|wwww|FFFF|^^^^|wwww|^^^^|^^^^|wwww|TTTT|~~~~|^^^^|wwww|~~~~|^^^^|^^^^|....|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|@@@@|wwww|~~~~|wwww|^^^^|TTTT|FFFF|wwww|^^^^|^^^^|wwww|^^^^|wwww|FFFF|^^^^|wwww|^^^^|^^^^|wwww|TTTT|~~~~|^^^^|wwww|~~~~|^^^^|^^^^|....|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|....|~~~~|....|wwww|@@@@|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|^^^^|FFFF|~~~~|^^^^|wwww|TTTT|~~~~|TTTT|FFFF|TTTT|TTTT|FFFF|FFFF|TTTT|~~~~|TTTT|^^^^|^^^^|~~~~|~~~~|~~~~|wwww|~~~~|
|~00~|~00~|.02.|~00~|.00.|w04w|@04@|^05^|^13^|T11T|~09~|w10w|^13^|^13^|F11F|~08~|^10^|w12w|T13T|~04~|T07T|F11F|T09T|T09T|F08F|F08F|T08T|~04~|T07T|^01^|^00^|~00~|~00~|~00~|w01w|~00~|
|~~~~|~~~~|....|~~~~|....|wwww|@@@@|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|^^^^|FFFF|~~~~|^^^^|wwww|TTTT|~~~~|TTTT|FFFF|TTTT|TTTT|FFFF|FFFF|TTTT|~~~~|TTTT|^^^^|^^^^|~~~~|~~~~|~~~~|wwww|~~~~|
|~~~~|~~~~|....|~~~~|....|wwww|@@@@|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|^^^^|FFFF|~~~~|^^^^|wwww|TTTT|~~~~|TTTT|FFFF|TTTT|TTTT|FFFF|FFFF|TTTT|~~~~|TTTT|^^^^|^^^^|~~~~|~~~~|~~~~|wwww|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|....|~~~~|....|TTTT|wwww|~~~~|wwww|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|TTTT|wwww|FFFF|FFFF|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|,,,,|....|....|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|.00.|~00~|.02.|T06T|w08w|~03~|w11w|^16^|F15F|^15^|^16^|^15^|^15^|^13^|~07~|F08F|T08T|w11w|F15F|F11F|^13^|^11^|T08T|~04~|w06w|^06^|,08,|.00.|.01.|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|....|~~~~|....|TTTT|wwww|~~~~|wwww|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|TTTT|wwww|FFFF|FFFF|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|,,,,|....|....|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|....|~~~~|....|TTTT|wwww|~~~~|wwww|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|TTTT|wwww|FFFF|FFFF|^^^^|^^^^|TTTT|~~~~|wwww|^^^^|,,,,|....|....|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|....|^^^^|TTTT|....|~~~~|wwww|^^^^|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|^^^^|^^^^|TTTT|^^^^|~~~~|^^^^|FFFF|....|~~~~|^^^^|FFFF|^^^^|TTTT|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|.02.|^05^|T05T|.06.|~05~|w11w|^10^|^14^|^16^|^19^|^16^|~14~|F16F|^12^|^10^|T12T|^09^|~08~|^11^|F12F|.13.|~09~|^11^|F10F|^07^|T08T|^06^|^02^|^07^|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|....|^^^^|TTTT|....|~~~~|wwww|^^^^|^^^^|^3^^|^^^^|^^^^|~~~~|FFFF|^^^^|^^^^|TTTT|^^^^|~~~~|^^^^|FFFF|....|~~~~|^^^^|FFFF|^^^^|TTTT|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|....|^^^^|TTTT|....|~~~~|wwww|^^^^|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|^^^^|^^^^|TTTT|^^^^|~~~~|^^^^|FFFF|....|~~~~|^^^^|FFFF|^^^^|TTTT|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|wwww|....|^^^^|^^^^|TTTT|~~~~|^^^^|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|^^^^|FFFF|^^^^|^^^^|,,,,|^^^^|^^^^|^^^^|FFFF|FFFF|....|~~~~|wwww|^^^^|^^^^|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|w01w|.03.|^02^|^06^|T08T|~06~|^10^|^12^|F12F|^12^|^16^|^15^|^13^|~09~|F11F|^09^|F10F|^12^|^15^|,14,|^13^|^11^|^11^|F13F|F08F|.04.|~02~|w04w|^04^|^01^|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|wwww|....|^^^^|^^^^|TTTT|~~~~|^^^^|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|^^^^|FFFF|^^^^|^^^^|,,,,|^^^^|^^^^|^^^^|FFFF|FFFF|....|~~~~|wwww|^^^^|^^^^|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|wwww|....|^^^^|^^^^|TTTT|~~~~|^^^^|^^^^|FFFF|^^^^|^^^^|^^^^|^^^^|~~~~|FFFF|^^^^|FFFF|^^^^|^^^^|,,,,|^^^^|^^^^|^^^^|FFFF|FFFF|....|~~~~|wwww|^^^^|^^^^|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|^^^^|....|TTTT|wwww|....|^^^^|wwww|wwww|wwww|~~~~|^^^^|FFFF|,,,,|FFFF|^^^^|wwww|TTTT|TTTT|....|^^^^|^^^^|^^^^|FFFF|^^^^|FFFF|FFFF|^^^^|FFFF|wwww|~~~~|....|~~~~|TTTT|~~~~|~~~~|
|~00~|^00^|.00.|T01T|w04w|.02.|^10^|w07w|w08w|w11w|~08~|^13^|F16F|,15,|F14F|^16^|w12w|T12T|T09T|.12.|^14^|^16^|^18^|F16F|^15^|F09F|F08F|^07^|F08F|w06w|~02~|.03.|~00~|T02T|~00~|~00~|
|~~~~|^^^^|....|TTTT|wwww|....|^^^^|wwww|wwww|wwww|~~~~|^^^^|FFFF|,,,,|FFFF|^^^^|wwww|TTTT|TTTT|....|^^^^|^^^^|^^^^|FFFF|^^^^|FFFF|FFFF|^^^^|FFFF|wwww|~~~~|....|~~~~|TTTT|~~~~|~~~~|
|~~~~|^^^^|....|TTTT|wwww|....|^^^^|wwww|wwww|wwww|~~~~|^^^^|FFFF|,,,,|FFFF|^^^^|wwww|TTTT|TTTT|....|^^^^|^^^^|^^^^|FFFF|^^^^|FFFF|FFFF|^^^^|FFFF|wwww|~~~~|....|~~~~|TTTT|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|^^^^|....|TTTT|TTTT|^^^^|FFFF|^^^^|^^^^|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|....|^^^^|wwww|~~~~|@@@@|****|^^^^|^^^^|^^^^|wwww|^^^^|^^^^|wwww|TTTT|....|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|^00^|.01.|T01T|T04T|^04^|F04F|^09^|^16^|^12^|w14w|T16T|T10T|~09~|^10^|.13.|^11^|w13w|~12~|@17@|*18*|^15^|^15^|^12^|w13w|^07^|^06^|w06w|T03T|.01.|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|^^^^|....|TTTT|TTTT|^^^^|FFFF|^^^^|^^^^|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|....|^^^^|wwww|~~~~|@@@@|****|^^^^|^^^^|^^^^|wwww|^^^^|^^^^|wwww|TTTT|....|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|^^^^|....|TTTT|TTTT|^^^^|FFFF|^^^^|^^^^|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|....|^^^^|wwww|~~~~|@@@@|****|^^^^|^^^^|^^^^|wwww|^^^^|^^^^|wwww|TTTT|....|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|wwww|^^^^|TTTT|^^^^|TTTT|^^^^|FFFF|FFFF|^^^^|~~~~|TTTT|~~~~|wwww|wwww|^^^^|....|~~~~|wwww|@@@@|,,,,|~~~~|wwww|^^^^|~~~~|^^^^|FFFF|^^^^|~~~~|wwww|~~~~|....|~~~~|~~~~|
|~00~|~00~|~00~|w02w|^01^|T04T|^07^|T06T|^05^|F05F|F07F|^11^|~08~|T12T|~09~|w12w|w11w|^09^|.13.|~08~|w14w|@18@|,17,|~13~|w15w|^11^|~06~|^09^|F08F|^08^|~00~|w02w|~00~|.01.|~00~|~00~|
|~~~~|~~~~|~~~~|wwww|^^^^|TTTT|^^^^|TTTT|^^^^|FFFF|FFFF|^^^^|~~~~|TTTT|~~~~|wwww|wwww|^^^^|....|~~~~|wwww|@@@@|,,,,|~~~~|wwww|^^^^|~~~~|^^^^|FFFF|^^^^|~~~~|wwww|~~~~|....|~~1~|~~~~|
|~~~~|~~~~|~~~~|wwww|^^^^|TTTT|^^^^|TTTT|^^^^|FFFF|FFFF|^^^^|~~~~|TTTT|~~~~|wwww|wwww|^^^^|....|~~~~|wwww|@@@@|,,,,|~~~~|wwww|^^^^|~~~~|^^^^|FFFF|^^^^|~~~~|wwww|~~~~|....|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|....|~~~~|....|~~~~|^^^^|TTTT|TTTT|~~~~|TTTT|FFFF|wwww|....|^^^^|TTTT|^^^^|FFFF|TTTT|TTTT|FFFF|^^^^|^^^^|^^^^|TTTT|....|^^^^|@@@@|~~~~|....|^^^^|^^^^|....|wwww|....|~~~~|~~~~|
|~00~|.00.|~00~|.01.|~00~|^05^|T02T|T06T|~04~|T09T|F10F|w10w|.11.|^08^|T10T|^08^|F05F|T08T|T11T|F14F|^12^|^16^|^12^|T14T|.16.|^13^|@11@|~06~|.10.|^06^|^04^|.04.|w02w|.01.|~00~|~00~|
|~~~~|....|~~~~|....|~~~~|^^^^|TTTT|TTTT|~~~~|TTTT|FFFF|wwww|....|^^^^|TTTT|^^^^|FFFF|TTTT|TTTT|FFFF|^^^^|^^^^|^^^^|TTTT|....|^^^^|@@@@|~~~~|....|^^^^|^^^^|....|wwww|....|~~~~|~~~~|
|~~~~|....|~~~~|....|~~~~|^^^^|TTTT|TTTT|~~~~|TTTT|FFFF|wwww|....|^^^^|TTTT|^^^^|FFFF|TTTT|TTTT|FFFF|^^^^|^^^^|^^^^|TTTT|....|^^^^|@@@@|~~~~|....|^^^^|^^^^|....|wwww|....|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|....|wwww|~~~~|....|^^^^|^^^^|^^^^|^^^^|wwww|,,,,|^^^^|TTTT|wwww|TTTT|^^^^|^^^^|^^^^|TTTT|wwww|^^^^|^^^^|^^^^|FFFF|~~~~|^^^^|FFFF|wwww|^^^^|wwww|TTTT|~~~~|^^^^|~~~~|
|~00~|~00~|~00~|.00.|w01w|~00~|.00.|^05^|^08^|^08^|^06^|w07w|,10,|^06^|T04T|w05w|T04T|^08^|^10^|^09^|T10T|w13w|^10^|^09^|^10^|F10F|~04~|^08^|F08F|w06w|^01^|w02w|T00T|~00~|^01^|~00~|
|~~~~|~~~~|~~2~|....|wwww|~~~~|....|^2^^|^^^^|^^^^|^^^^|wwww|,,,,|^^^^|TTTT|wwww|TTTT|^^^^|^^^^|^^^^|TTTT|wwww|^^^^|^^^^|^^^^|FFFF|~~~~|^^^^|FFFF|wwww|^^^^|wwww|TTTT|~~~~|^^^^|~~~~|
|~~~~|~~~~|~~~~|....|wwww|~~~~|....|^^^^|^^^^|^^^^|^^^^|wwww|,,,,|^^^^|TTTT|wwww|TTTT|^^^^|^^^^|^^^^|TTTT|wwww|^^^^|^^^^|^^^^|FFFF|~~~~|^^^^|FFFF|wwww|^^^^|wwww|TTTT|~~~~|^^^^|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|TTTT|....|....|^^^^|^^^^|^^^^|wwww|^^^^|,,,,|TTTT|TTTT|^^^^|^^^^|TTTT|FFFF|TTTT|^^^^|,,,,|^^^^|....|wwww|TTTT|wwww|~~~~|~~~~|~~~~|....|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|w01w|.00.|T02T|.05.|.04.|^04^|^06^|^04^|w10w|^04^|,04,|T04T|T07T|^06^|^06^|T11T|F10F|T10T|^09^|,11,|^09^|.05.|w06w|T04T|w02w|~00~|~00~|~00~|.01.|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|TTTT|....|....|^^^^|^^^^|^^^^|wwww|^^^^|,,,,|TTTT|TTTT|^^^^|^^^^|TTTT|FFFF|TTTT|^^^^|,,,,|^^^^|....|wwww|TTTT|wwww|~~~~|~~~~|~~~~|....|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|TTTT|....|....|^^^^|^^^^|^^^^|wwww|^^^^|,,,,|TTTT|TTTT|^^^^|^^^^|TTTT|FFFF|TTTT|^^^^|,,,,|^^^^|....|wwww|TTTT|wwww|~~~~|~~~~|~~~~|....|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|....|^^^^|TTTT|~~~~|wwww|wwww|TTTT|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|^^^^|^^^^|TTTT|^^^^|FFFF|~~~~|wwww|wwww|....|TTTT|....|wwww|TTTT|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|.00.|~00~|~00~|.03.|^04^|T03T|~01~|w07w|w04w|T06T|^04^|w01w|T03T|T06T|~04~|^09^|^09^|^10^|T07T|^11^|F10F|~05~|w07w|w04w|.02.|T02T|.02.|w02w|T03T|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|....|^^^^|TTTT|~~~~|wwww|wwww|T1TT|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|^^^^|^^^^|TTTT|^^^^|FFFF|~~~~|wwww|wwww|....|TTTT|....|wwww|TTTT|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|....|~~~~|~~~~|....|^^^^|TTTT|~~~~|wwww|wwww|TTTT|^^^^|wwww|TTTT|TTTT|~~~~|^^^^|^^^^|^^^^|TTTT|^^^^|FFFF|~~~~|wwww|wwww|....|TTTT|....|wwww|TTTT|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|....|TTTT|^^^^|TTTT|^^^^|wwww|....|TTTT|^^^^|FFFF|TTTT|~~~~|^^^^|....|wwww|wwww|^^^^|TTTT|....|....|~~~~|wwww|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|w02w|.00.|.00.|T03T|^02^|T05T|^03^|w04w|.01.|T02T|^05^|F10F|T08T|~05~|^10^|.06.|w09w|w04w|^06^|T04T|.04.|.02.|~00~|w02w|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|....|TTTT|^^^^|TTTT|^^^^|wwww|....|TTTT|^^^^|FFFF|TTTT|~~~~|^^^^|....|wwww|wwww|^^^^|TTTT|....|.1..|~~~~|wwww|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|wwww|....|....|TTTT|^^^^|TTTT|^^^^|wwww|....|TTTT|^^^^|FFFF|TTTT|~~~~|^^^^|....|wwww|wwww|^^^^|TTTT|....|....|~~~~|wwww|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|~~~~|....|....|~~~~|TTTT|^^^^|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|~~~~|wwww|wwww|....|....|~~~~|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|^02^|~00~|.00.|.00.|~00~|T05T|^02^|~01~|^02^|T08T|^06^|^06^|w08w|~02~|w05w|w04w|.01.|.01.|~00~|T01T|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~1~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|~~~~|....|....|~~~~|TTTT|^^^^|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|~~~~|wwww|wwww|....|....|~~~~|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|^^^^|~~~~|....|....|~~~~|TTTT|^^^^|~~~~|^^^^|TTTT|^^^^|^^^^|wwww|~~~~|wwww|wwww|....|....|~~~~|TTTT|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|@@@@|~~~~|....|~~~~|@@@@|~~~~|~~~~|^^^^|^^^^|^^^^|^^^^|^^^^|^^^^|....|^^^^|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|@00@|~00~|.00.|~00~|@00@|~00~|~00~|^03^|^02^|^04^|^04^|^03^|^03^|.02.|^05^|^02^|^07^|^05^|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|@@@@|~~~~|....|~~~~|@@@@|~~~~|~~~~|^^^^|^^^^|^^^^|^^^^|^^^^|^^^^|....|^^^^|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|@@@@|~~~~|....|~~~~|@@@@|~~~~|~~~~|^^^^|^^^^|^^^^|^^^^|^^^^|^^^^|....|^^^^|^^^^|^^^^|^^^^|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|~00~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~1~~|~~~~|~~~~|~~2~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|~~~~|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+

The border all around each tile shows the terrain. In the center, the top row shows the elevation and the next row shows any special resources or occupants (if any)












LEGO colorTerrainSymbolPossible Special Resources
light greyrock^(metal, flint, ruby)
bluewater~(fish, shellfish, pearl)
beigesand.(salt, whitesand, diamond)
greenjungleT(exotic plants, exotic wood, emerald)
yellowprarie,(megafauna, farmland, tar)
redlava!(sulfur, hotsprings, steel)
whiteice*(coal, amythist, mysterious artifacts)
orangefungal waste@(medicine, mana/isotopes, glowstone)
oliveswampw(peat, exotic animals, methane)
brownforestF(exotic wood, exotic animals, spring)

Home game

I originally came up for this idea last month as part of Thing-a-Day for a game that I'd orchestrate for/with my family. I've linked to the original context just above but I'm also going to just cut and paste the entire text here so that I have it in a location closer to under my control. So here's the concept document:

----------

A game for my family
February 23rd 6:29 :42 am by Christopher Weeks
tagged game LEGO plan RPG (Daily thing), Getting organized, Little people

This is a project plan and a design document for a game that I'm considering setting up for my family to play collaboratively over time. It is a sort of hybrid simulation/miniatures/role-playing game that will be played over time through face-to-face meetings of some or all of the players and solitaire play, all of which will be rendered in LEGO models and spoken/written narration and conflict resolution. Further, many facets of the game will be computer-assisted or facilitated. The roles taken by a traditional RPG-GM will be apportioned to the software tools and to the players on an ad-hoc basis. Models for game play that I have in mind include: Universalis (story-game, GMless play), HeroQuest (RPG, personal characterization/general abilities), Monster Island (PBM, vague theme), Evil-Stevie's Pirate Game (miniatures, rendering only), Castle World (collaborative fiction, style)

In this game, the characters will be shipwrecked and wash ashore on an island. The island will be comprised of "squares" including an elevation, a biome and features (monsters, people, mysteries, +?). These attributes will be generated by a computer before the game starts. As the island is explored, each square will be modeled as a 4×4 stud LEGO structure that grows with our game-play. A "square" should be understood to be an arbitrary large area: an acre, a square mile, something like that. On a weekly(?) basis, the family will decide what the characters are doing during that turn. We might have some in-character play or maybe just hang out and moderate one another in author-stance. The mechanical systems will be flexible enough to be useful in any kind of play that evolves. While we'll have an island model, we may also model scenes, locations etc, or write, what amounts to fan-fiction. I'm thinking that we'll set up a blog or a wiki to allow posts from all the players as well as a repository for record-keeping, etc.

There are two starting places. The first of these is behind the scenes: generation of the map, building facilitating software, etc. The other starting place is how play begins: creating characters, landing on the island, etc.

I'm imagining that the island will occupy six grey baseplates and thus be 96×144 studs or 24×36 = 864 squares. I'll write an application that generates a grid of squares with heights based on proximity to two "logical peak" locations — that is, the random elevations will tend to be higher as proximity to either of these locations grows and lower as proximity to the outside edge grows. Then it'll crawl across the land and deposit biomes based on elevation, etc. Then it will randomly distribute monsters, people and mysteries.

Regular resources — to the extent that we decide to play a resource game, will be dependent on the biomes expressed on the map. E.g. wood can be harvested from forest or jungle squares, peat from swamp, rock from rock, whatever. Monsters, people and mysteries are special, ill-defined resources independent of elevation and biome. As we play and encounter these special resources, we'll just decide what they are and how we play with them. I'm thinking that each of those should have a 1/60 chance of appearing in any square — giving about 43 special squares (on average).

Because I want knowledge of the island to be blind, the generator will output a data file that is read by an explorer application. All the explorer does is allow us to punch in a coordinate and reveal complete details about that square and elevation/biome of all surrounding squares. My default assumption is that we won't know the special resources of any place that we haven't visited (though that could change in game play — through player preference or special character abilities, etc).

I'm thinking of using either HeroQuest or a mod of a game that Mike Holmes is working on and I got to playtest for character representation and mechanical systems. So we'd start out play by creating characters with a pool of abilities from each of three categories: homeland, occupation and personal. An optional step is to have a fourth "trademark" category spring up as a result of the shipwreck or something else shortly after arrival on the island. This final thing could be entirely fantastic.

Once characters are created, we jointly decide where we're washing ashore and build up the base model to represent the water and land that we encounter. After that, the plan kind of ends. We play. Part of play will be figuring out what play looks like.

20 February 2008

Shape Wars

So, I was home sick yesterday. Pretty good fever, horrible head and joint pain, etc. We were afraid it was the flu, but it turned out to be a 24-hour thing. (Hooray!) Anyway, I woke up at 2 AM and needed stuff to do. I watched the Criterion Collection copy of Sparticus, worked on my PC and wrote up this game.

Shape Wars is a quick cardstock/paper game that you can print and cut out and be playing in just a few minutes if you have, and can print to, cardstock. It's way simpler than my original idea which was a cyberpunk permutation of Discwars but retains some of the core features. Download the PDF here.

It's good that I did this because I let my thing-a-day obligation slip Monday night while I mostly just shivered in bed.

11 January 2008

First/Second Person: series of game theory articles

Over at Grand Text Auto there was a piece talking about these two MIT game-theory projects by Pat Harrigan and Noah Wardrip-Fruin called First Person and Second Person.

Neat stuff. I put them both on my Amazon wishlist and I've started reading the pieces in the First Person thread. I'm creating this blog entry as a place for me to journal my responses to the articles involved. It could take some time and I'm still figuring out how to blog, but this should be a good use.


It's All About You, Isn't It? Editors' Introduction to Second Person by Pat Harrigan & Noah Wardrip-Fruin

In this piece, the editors of the project mostly map out a bit of the goal of things. The primary take-away point seems to be that you are the consumer of these media. They are first-person experiences. I found the following paragraph of particular interest because I'm deeply desirous of bringing RPG Narrativism (From the Forge) to CRPGS/MMOs:
Our hope is that this collection will appeal to a wide variety of audiences. It discusses a number of playable forms, some of which have been unfortunately ignored by the academy, and all of which are important as we seek to understand our fields' presents and futures. For example, in the last few years there has been much academic discussion of video games and other forms of digital media, but little that acknowledges in any depth the debt many of these forms owe to tabletop role-playing games. Further, it is not too much to say that where academic discussion of tabletop RPGs exists, it is largely cursory - and, not infrequently, wrong."


Between Acting and Narrating: Editors' Introduction to Tabletop Systems, Round One by Pat Harrigan & Noah Wardrip-Fruin

Through the text and one extensive side-bar this piece describes a little bit about the physical and marketting forms of table-top RPGs. I like the fact that they discuss the indie RPG movement in the context of the larger RPG industry, but it seems kind of scattered. Maybe I'd get it more if the contents of this piece and the introduction were rolled together? In any case it provides an introduction for several of the articles included.


Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments

Title by Author(s)

comments