Monthly Archives: March 2007

Amazing Werewolf

Jude hosted a “game day” yesterday, and lots of people showed up. I think at peak we had sixteen people in our house. From about 8:00 until midnight, we played Werewolf, a variant of Mafia. They were all interesting, dynamic, well-balanced game s. Here are the role lineups for these games:

  • 2 Werewolves, 2 Villagers, Bodyguard, Witch, Seer, Romantic
  • 2 Werewolves, 2 Villagers, Bodyguard, Witch, Seer, Romantic, Werehamster
  • 3 Werewolves, 3 Villagers, Bodyguard, Witch, Seer, Romantic, Hunter

An explanation of our definitions of these roles will be given at the end of this post.

The last game we had was the best game of Werewolf I have ever played (the lineup was the third one here). I was given the Werewolf role, along with Jude and Travis. In the previous game, I had mentioned that when we were analyzing the game a while ago, we determined that if the seer sees a werewolf in the first round of the game, the seer should immediately speak up and say who it was (technically, that only applied to games with two werewolves, though). So Jude cunningly spoke up right as the game started and fingered Paul as a werewolf. Some discussion ensued about how to verify whether Jude was actually the seer, but nobody was contesting him, so many people trusted him. People still wanted some verification. We lynched paul on the first day.

That night, we werewolves chose Jude, one of our own, to be eaten. The witch finds out who is chosen to be eaten by the werewolves each night, so we figured that she would see Jude as the target and therefore not suspect him (it makes sense for the werewolves to eat the seer, no?). We knew he wouldn’t be eaten, because the bodyguard would be protecting him, and the witch would probably save him, too (so the witch used up her save on the first night!).

Day broke, and both Gabbie and Cami were dead. I was confused, and thought that our game master had screwed up. It was a wonderful turn of events, because when two people die in a night, nobody can be sure whether the Witch killed somebody extra or the wolves ate the romantic. We wolves (after coming to our senses) deduced that only one thing could have happened: Jude was saved by the witch (or bodyguard) and the witch targeted Gabbie or Cami, one of which was the romantic. I was already forming my plan: if I was put on trial, I would be the romantic, because the real romantic was dead and could not contest. Of course my lover would be Travis, who would support me. (As it turns out, my plan was flawed because the witch also knew what had happened the first night)

Jude said that he had seen the witch, but he didn’t want to reveal who the witch was. Putting myself in a skeptical villager’s shoes (as I did many times that game), I called bullshit on Jude. We were looking for verification, and he said something which provided no information at all. The others didn’t seem to care, though, nobody was on board with my theory. This is a good sign.

After a little argument, we did the first round of voting, and Hagan and I were up on trial. I could leverage my skepticism of Jude during this: I claimed that since no information was known about me yet, should I survive, Jude should identify me the next night. Therefore it is absolutely imperative that I not give away my role, so that Jude can be securely verified.

During the unusually long discussion period after we were nominated, Daniel claimed that he was the witch, and Jude confirmed, “yep, he was the one I saw”. Out of the blue, Sophia said “that’s not true, because I’m the witch”, and Daniel said, “that’s true, I was bluffing!”. Oh, shit! Jude’s been found out! Hagan came out while he was on trial and “claimed” to be the seer. The only information he had was that Cami was a villager and Gabbie was the romantic. Completely irrelavent, uninteresting, unverifiable information. This did not help his credibility. I don’t see how people could have trusted Jude after the witch event, so I’m guessing that people assumed the real seer was already dead. Jessa mentioned that she was the Hunter, and if she died, she would kill Daniel (probably for lying about being the witch). Hagan was put to death.

That night, we werewolves (after a long period of silent arguing) selected Jessa. I hadn’t remembered her comment, but in retrospect that was absolutely the right move. She was true to her word and selected Daniel to take with her. And the werewolves, all three intact, win after the second night!

The game took at least an hour. Many of our Werewolf games are not that interesting because people play straightforwardly: people simply choose when to reveal the true information that they know. Werewolves try to avoid being put on trial or executed, by claiming they are a villager or something. This game was totally different: people were claiming to be things that they weren’t—important things, not just nondescript villagers. When Jude pretended to be the seer, he had to come up with some information that he had found out. Basically, people were gutsy, and that made for an incredibly deep, twisty game. So there’s a lesson: be gutsy and tricksy in Werewolf games, it makes the game as a whole better.

Here are the roles we used:

  • Werewolves: must unanimously decide each night who to eat, which may be one of the werewolves. If the selected person is unselected, he dies that night.
  • Bodyguard: chooses one person each night to protect. If that person is selected by the werewolves, then they don’t die. The bodyguard is allowed to protect himself.
  • Witch: is told each night who is about to be eaten by the werewolves (regardless of whether they are under bodyguard protection). Once during the game, the witch may choose to save this person, in which case they do not die. Once during the game the witch may choose to kill someone, and that person dies, even if under protection by the bodyguard.
  • Seer: each night chooses one person, and the role of that person is revealed to him. The seer also acts on the night before the first day, and is the only role who does so.
  • Romantic: on the night before the first day, chooses another player, and those two players become “romantically entangled”. They may never vote for each other during the nominations, and if one dies, then the other does, too.
  • Werehamster: is a third faction, in a sense. The werehamster counts as a villager in most respects, but if the werehamster survives until the end of the game (either by the werewolves coming to equal numbers with the villagers (including the hamster), or by all werewolves being eliminated), then the werehamster wins instead. The werehamster cannot be eaten by werewolves (their selection simply has no effect), and if the seer ever chooses to look at the werehamster, then the werehamster immediately dies. The werehamster can be hanged, and can be killed by the witch and the hunter.
  • Hunter: when the hunter dies (regardless of how: lynching, werewolf, witch), he must select another player to take to the grave with him. We did this in a sortof half-information way: If the hunter dies during the day, he selects someone else in broad daylight and they both die, so everybody knows who he is. If the hunter dies at night, then the gamemaster adds a new phase that night: “hunter, select someone to kill”. Two people will die that night, but nobody is sure which is the hunter and which was his target.

We never reveal the role of dead players, never allow dead players to speak, and never reveal how someone was killed (i.e. whether it was by witch or werewolf (or in the hamster’s case, seer)).

Gig with Nolan

Last Friday, I had my first real gig. I performed with Nolan and a few others in front of 40-odd people. We played eight Nolan originals:

  1. Now Ain’t the Time
  2. Greyhound Bound
  3. Lead by Example
  4. The Me Song
  5. Movin’ On
  6. 2012
  7. The Guy Who Learned to Fly
  8. Hippie Chick (Encore)

The roster:

  • Nolan – Vocals, Acoustic Guitar
  • Fred – Drums
  • Devon – Electric Guitar
  • Luke – Keyboards
  • Miguel – Viola

It was fun. It’s interesting what happened to my ears. Essentially, when the show was over, I hadn’t the slighetst clue whether we had played well or poorly; I was so focused on playing that my ability to assess the music was completely missing.

We had originally planned a seven-song set, but when we finished playing the seventh song, everybody kept sitting there, as if to say “that’s all?”. So we did an impromptu encore, a song that I’ve only played once before (not a very compilcated one). I was kind of disappointed that we didn’t do some total improv, something I’ve always wanted to do in front of an audience. It’s probably for the best, though, because Nolan, Miguel, and I aren’t comfortable with Fred and Devon in an improvisational setting.

MMORTS

I want to make a Massively Multiplayer Real Time Strategy Game. Well, not so much massively as highly. I’m thinking around 100 players. I’m particularly interested in command structure: you have an RTS where every soldier is controlled by a real person, and then formally there are units of soldiers with a Sergeant, and a Commander for the whole battle.

Traditionally, I think many game designers have hoped that at least the sergeant level would emerge if you gave teams free communication, but that rarely happens in practice. So what happens if you formalize it? Let’s go pie-in-the-sky for a moment and assume that we have a good traditional action game and a good traditional RTS game. How would the player flow go?

You can start a new game as a commander (against another commander), and as commander you can take control of one soldier. You have a one on one game. More people may join the game as sergeants, and once there are a certain number of those, as privates. It would have to allow joining mid-game, because organizing a game of this size would be impossible.

Given that I’m interested in fairly large-scale games with these dynamics, there would have to be some way to encourage people not to be commanders at first. As long as the action element is solid, and it would have to be, you could play one on one and small team games to build up your rank. At certain times you would be promoted and be able to join as a sergeant with, say, four privates at your disposal. Some time after that, you may start a game as a commander. Sadly, this would probably limit the “commander” gameplay to a small subset of people. But that kind of makes sense; if fifty people are going to trust their time to you, they have to think they can trust you. So only ladder leaders may be commanders (it would be amazing encouragement to “grind” through the lower levels—grind used loosely, it would still be damn fun).

The commander would have an RTS-like view of the map with very limited information about the opponent displayed. Soldiers don’t appear on radar; spotted units would probably appear as indiscriminate dots, relying on the soldiers themselves to verbally report to their commander identifications of the units. Of course, the commander would know all the positions of his troops. Essentially, I want to encourage communication—human interaction—to play well. The commander would know by the interface that he had to communicate, because it would be impossible to lead an army without doing so. Perhaps orders should be typed (or, heck, spoken) rather than click-actioned. Maybe click actions for the common ones.

Aaaanyway, back to reality. Soylent doesn’t have the resources to pull off a merger of those two traditional styles. What kind of game would capture the essence of this type of thing, but that I could write alone or with Namaste in a couple of weeks?

I keep thinking 2D, because 2D is so much easier to make look decent and way easier to code for. But there still needs to be a very long learning curve; there must be a distinction between good soldiers and great soldiers, else the idea would be lost. I think we need 3D. I want to use some existing FPS engine, but I don’t really want to mod an FPS, because (1) I want the gameplay to be unique, and (2) tweaking an FPS’s gameplay isn’t something that is interesting to me, because I’m not a huge fan of the FPS genre. The main reason I want the gameplay to be unique is because, again, I’m not a huge fan of FPS’s. It could also change the social mentality of the game, because so many people play FPS’s where they think and act for themselves, and now it’s best for them to follow orders and carry them out as best as possible. I guess it isn’t too different from single player FPS in that respect.

Maybe I could even take something like bzFlag and adapt it to suit this. bzFlag’s controls suck so much though. But it might be salvagable; it is a decent engine, already with networking support, and it’s open source. And it already has a decent community, which we could draw on. And it already has leaderboards (with well-known, respected leaders), where we could get commanders.

idea &

More Jammin

The improv band got together again last Saturday. Here are the recordings:

  1. 2007-03-10_01
  2. 2007-03-10_02
  3. 2007-03-10_03
  4. 2007-03-10_04
  5. 2007-03-10_05
  6. 2007-03-10_06

Their quality varies. #5 is the longest, and by the end it’s pretty cool, but there are some rough times getting there. #6 is pretty amazing—we had a guideline to prefer over-sparsity to over-density, and it worked like a charm. The rest are listenable, but not great.

Oh, we had a guest guitarist. His name was Kyle.

Preprocessor Lists

At work, I found myself needing to do a repetitive operation at compile time on a set of symbols. We all know what to do in that situation:

    #define OPERATION(x) ... some big long thing in terms of x ...
    OPERATION(symbol1)
    OPERATION(symbol2)
    OPERATION(symbol3)
    ...

I’m doing two such operations in different places on the same set of symbols. And I’m about to add a third. My refactor alarm goes off: I need to abstract this.

How do you iterate over a list of symbols at compile time? Let’s take a technique from lambda calculus: the we define the list as a function which iterates over itself:

    #define SYMLIST(f) \
        f(symbol1) \
        f(symbol2) \
        f(symbol3)

Then to do three different operations on these symbols, I can simply define the operations and use the list like so:

    #define OPERATION1(x) ... something involving x ...
    #define OPERATION2(x) ... something else involving x ...
    #define OPERATION3(x) ... you get the picture ...
    SYMLIST(OPERATION1)
    SYMLIST(OPERATION2)
    SYMLIST(OPERATION3)

Abstraction: Satisfied.

Real Time Strategy

With the release of Supreme Commander and Command & Conquer 3, I’m being reminded that real-time strategy is my favorite genre, by leaps and bounds. There have been many games which have caught my attention, which I have had some fun playing. But I’ve played at least an hour’s worth of Supreme Commander every day for the past week and a half, as well as spending considerable time researching the mod interface.

And I want to design a real time strategy game. Well, no, I want to design many real time strategy games, just to see how they play out. I don’t want to make the perfect game, I just want to explore the space. And it’s unfortunate, because RTS engines are bitches to write. You really wouldn’t think so, but there’s a lot of little things that get in the way. As one example (and there are several), pathfinding is one of those things where you know exactly what to expect, but is incredibly, incredibly hard to get right in code. It’s not that hard to write a pathfinding engine, but it is hard to write one that works like you’d expect. Supreme Commander, state-of-the-art, still doesn’t get it right.

SC has inspired me though. I realized that I don’t really like the action part of those games. I like the real-time nature, I like the pressure, but I don’t like playing individual units. I’m interested in terrain fortification, army composition, the information game, large-scale tactics, and economics. I’m not very good at any of that, but SC has got me learning.

SC is still broken. It quite successfully took the micromanagement out of battles, but unfortunately it forgot to take the micromanagement out of base-building. You can tell a 100 unit land army to attack, and your heavy tanks will automatically go out front, your artillery in back, and your anti-air supporting from various positions, but you still have to tell each of your construction units to build mass extractors on every deposit! Of course I want to build a mass extractor there, stupid! I want to see a game that focuses on eliminating the micro there, too. And I would see one if SC weren’t so hard to mod (the lua code is buggy, undocumented, and silently ignores every error, making it very very hard to debug and experiment).

Okay, enough ranting about SC. It’s a really great game, and I’m just ranting in an uncanny valley because I see so much potential. Its release has opened up a world of possibilities for RTSs that I hadn’t even noticed before.

How can I explore the RTS space without writing an RTS engine? Galactic Flotsam is one way, and there may be many similar approaches. I just watched an episode of Star Trek TNG called “Unnatural Selection”, which got me reading about viruses. I was thinking a game based around cells and reproduction could make an interesting RTS. You could, say, have twelve different players (3 human 9 AI) with your goal simply to maintain a large population. You could manually tweak your DNA, preferring different resources, becoming a parasite, becoming larger or smaller, in addition to being able to generally influence the travelling direction of your cells. It would be an easy engine to write, and would have RTS-like game dynamics (except with a prototype object model rather than a class object model—Javascript instead of Java).

Or I could pick up one of the partial RTS engines that I’ve written over the years. But those are small-scale, good for C&C work-alikes. If I want to make a “serious” (that is, copying the state-of-the-art) RTS, modding SC might be my best bet after all. Realistic, army-based games are interesting to me, but abstract strategy is interesting to me too. I’ve never cared much about context.

Jammin’

A while ago, I posted about a post to craigslist about setting up an improv band. Well, I did set one up, talking back and forth to many candidates, and picked three for our initial jam on January 22nd. We got along great musically, and have jammed a few more times since then, and are now looking for a few more instruments to join us.

Phil, the drummer, has been recording us. Here are the recordings, which I have taken the liberty of naming.

  1. Timmy Dance
  2. Saturn
  3. Relative Motion
  4. How To Teach Jazz
  5. Two One Sided Conversations
  6. Intoxicated
  7. The Summoning / Minion Party

Here’s the lineup:

  • Drums – Phil Rummings
  • Bass – Evan Cantor
  • Keyboards – Luke Palmer (left channel) & Charlie Bryant (right channel)

I recommend tracks 1, 5, 6, and 7. Track 1 is probably the least interesting of those four.