Saturday, July 14, 2018

ICRPG Session Report: The Eye of Clune (Part 1...?)

Ah, summer break, when a professor's imagination turns to tabletop role-playing games.

For those who don't know, I have a bunch of kids. One of my goals for the summer was to do some kind of tabletop RPG with them. My desire to play ICRPG was recently reignited by something I saw on the Runehammer / Drunkens & Dragons channel. I think it was the Death and TPK episode, although I cannot remember how I ended up there in the first place. In any case, it led to my watching the Aliens One-Shot on Roll for Effort's channel. (Spoiler: it's a two-shot.) Regular readers may recall that I spent an afternoon with ICRPG when it first came out, publishing one of the first public reflections on the core rules. I ran my three eldest kids through character creation and a trial, but that's as far as it went. For a few weeks now I've been kicking around adventure ideas, and I decided that today would be a great day to put pencil to paper and actually run the guys through it.

All my notes for the day's adventure
What follows is a session report of our day with ICRPG, starting character creation at around 11:00AM, breaking for lunch, and finishing up around 2:30PM. I've included a few reflections about the system and family dynamics along with the session report. If this sounds interesting to you, read on!

You may notice that there's no other pictures here. Despite my nice collection of painted miniatures, I decided to play entirely in theater of the mind. This seemed to be the least fiddly, and as I expected, the guys caught right on. I thought about using quick sketches on index cards—it is Index Card RPG after all. Despite having watched all the Paint By Monster episodes I can, my drawing skills are still pretty rudimentary. I decided to focus on getting something fun to the table; maybe future games will include more visual aesthetics.

A little background on the setting is in order. Son #2 (8) has, for years, been talking about a world called "Magic Sword." It used to be much more common than it is now, how he would go off on stories about the mythologies and conflicts of this made-up world. I figured this would be a good a world as any for a one-shot adventure, so he agreed that we could use his setting.

After I explained the fundamentals of the game, we got into character creation. Son #1 (11) created an alchemist gnome strongly inspired by the quatryl tinkerer he recently retired in Gloomhaven. Gnomes are not listed as a race in the ICRPG core rules, so we decided to give him +1 INT and +1 DEX as racial bonuses. Son #2—the creator of Magic Sword—chose to play an abandoned healer. The abandoned are of his own creation: they are skeletons of people who were virtuous in life and so, when reanimated in death, they rejected the evil rule of the necromancer and regained their autonomy. (Of course, that's not quite how he words it, but that's the idea.) It's rather a clever bioform, I think. In any case, we gave him a +1 WIS to represent piety and willpower along with a +1 Armor to represent his not having skin or guts to stab. Son #3 (5) went with a human fighter, taking the usual +1 INT and +1 Weapon effort.

For the classes, I took inspiration from the Alfheim classes in ICRPG Core 2nd edition, but we didn't use them directly. The fighter took a +2 Ring of Protection as a starter bonus. We gave the alchemist a Fire Bomb kit that lets him use INT checks to make explosive potions and the capacity to carry six at a time. The healer took the Healing Touch WIS power from the rulebook. The guys set themselves up with starter loot and basic equipment and we set to it.

Here they were, the mighty heroes! A gnome alchemist named Gonff! A living skeleton healer named ... Tim. And a human fighter named ... Jeff? *sigh*. Names that will strike fear into the hearts of their foes, indeed.

The party was approached by The Red Wizard, a mysterious, powerful, and wealthy denizen of the capital city of indeterminate gender and age. The Wizard asked the party to retrieve for him the Eye of Clune, which he recently discovered was hidden in a secret temple in the mountains. The way to the temple has been blocked for hundreds of years by a magical door, but the Wizard gave the party the Ruby Lens to decipher the ancient language. (Heh.) The Wizard promised them a reward of 100 gold coins each if they could claim the Eye and return the Lens. The party was given a map and warned that the forests were infested with kobolds and that a group of harpies had settled in the cave.

Let me go on one or two little asides here. First, I spent a lot of time the past few weeks not creating an adventure. I let my mind wander, I thought about inspirational stories, I tried to convince myself that I could still make adventures like I did back in the day. It might be one of those cases where if I just put pencil to paper, something would have spilled out. It was kind of a weird feeling, in part because I was worried about making something too dark for my 5-year-old. He did ask, when they finally met the harpies, "Are they real?" I explained that they were not real, just like kobolds. Hopefully he sleeps OK tonight.

Through high school and into college, I loved to create my own worlds and run D&D adventures in them. In my first year of college, I took an intro philosophy course with a young, bespectacled, bearded, pony-tailed instructor named Mr. Clune. At the time, I was working on a pantheon of gods for a fantasy world, and so the god of philosophy was aptly named "Clune." When I was thinking about what kind of adventure to present to my kids, "The Eye of Clune" came to mind: a mysterious artifact of an ancient power—some say he was a wizard, some say he was a god. Actually, looks like he's an adjunct at Sam Houston State University. Good enough for me. Makes me wonder if somewhere there's a party of young adventurers seeking "The Accursed Tome of Doktorjee."

Back to the session report. The party traveled through the valley, arriving at the cliffs before sunset. They could see the cave, forty feet up a sixty foot cliff. Rather than attempt the difficult climb, they opted to seek a path to the top of the cliff, from which it would be an easier climb down into the cave's mouth.

One of the tips in ICRPG Core is No content left behind. I designed a kobold ambush encounter that could be used on the party if they took this path up the cliff, and if they instead made the tricky climb, I could reuse it for the trek back to town. It's good advice, and I don't think it's the kind of thing I used to do "back in the day." Too much attention to realism back then, not enough to epic narrative. Can't go back, though.

The party approached a clearing as the sun was setting and noticed a dead elk in the middle of it. Curious, Jeff advanced. His successful WIS check let him see the ambush before it was too late: six kobolds leaping up from cover to attack whatever would approach the bait. By chance, this was an encounter with 1HP enemies, and it was a good way to start: the kids could focus on learning the basics of combat without worrying about damage effort. Jeff is clearly the tank, with 16 Armor, so it worked out well that he tripped the ambush: the kobolds never touched him. Gonff blew up a few kobolds with a fire bomb and then began picking them off with his sling. The highlight here was when he rolled a 1, so we had him roll again for a fumble: another 1! He hit Jeff in the back of the head, rolling max damage. In the end, the party took more damage from Gonff's errant shot than the one kobold who struck a blow against Tim.

This battle was the first time that I used a DM Timer. This is a technique out of Drunkens & Dragons in which a timer ticks down on the DM's turn. I was using it for something fairly mundane: when it hit zero, the sun would set and everything would be come hard (-3 on all checks). This added tension very nicely, though.

After the battle, Gonff searched for treasure, rolling on the Shabby Loot table and finding... a 12-foot ladder. That's beautiful: a group of kobolds waiting in ambush would of course bring with them a 12-foot ladder. Turns out, a ladder is just the kind of thing the party needed to help climb the cliffs, so this bizarre roll ended up being quite the boon.

The next morning, the trio headed to the top of the cliff. Jeff had the option to use give up his climbing gear to rig up a trivial climb or to complete a one heart challenge to figure out how to situate the ladder to allow the guys to climb down to the cave. He went for the latter, botching the first roll, which was no big deal. Then, I started another DM timer: in five rounds, the harpies would hear them! Again, this DM timer rule added tension and excitement to what would otherwise just be fiddling with a kobold's ladder. Turns out, the party got the ladder situated just as the harpies became aware of them, and then they began their song. WIS check to avoid becoming enchanted: Jeff passes, but Tim and Gonff fail and begin walking toward the edge of the cliff and the 60-foot drop! Thinking fast (and with some player help from his older brothers), Jeff pulled out his climbing rope and used it to tie his comrades fast to a tree. Saving the party just in time earned Jeff a Hero Coin. This is another inspirational idea from ICRPG, somewhat analogous to Advantage in D&D 5e: do something epic and earn a coin that can be used later. Unlike Advantage, the player chooses when to apply the Hero Coin. Listening to that Aliens One-Shot while painting, I heard the Hero Coins often be the difference between life and death. This was the only Hero Coin awarded during our adventure today, and I'm glad the we had one hit the table. That rule is a keeper.

Tim and Gonff were able to shake off the enchantment and hustled down the ladder into the cave. They were attacked by the harpies, but when Jeff came down, the harpies saw they were outnumbered and fled. DM Timer time: 5 rounds until they come back with reinforcements! Jeff began deciphering the ancient writing on the wall while Gonff searched for treasure. I knew I wanted some loot in the harpy nests, and Gonff found a valuable gem on his first search. He asked if he could keep searching, and so I decided to go with the cursed table for the second search. He discovered [possible item spoiler from the ICRPG table] the Cloven Blade: it gives +2 to hit and +2 damage, but it cannot be put down, and it slowly turns the wielder into a goat. Fun!

Let me mention here that basic effort is really slow. Deciphering the text was a one-heart challenge, requiring ten effort. First one has to make the check, and then roll a d4 to make progress. Turns out Son #3 rolls a lot of ones. This inspired him to spend his hero coin on the task, which worked out for the best, since he opened the door the same round that the harpies returned. DM's Honest Truth: once again, the DM timer and the heroes' efforts aligned for perfect cinematic progression. The party ran through the door and heard the harpies at the mouth of the cave. Jeff's first instinct was to fight them off, but his comrades convinced him that closing the door would be safer.

The party continued through a long, descending tunnel. Halfway through, they were attacked by mysterious magical black tendrils, groping at the party and attempting to pull them toward the wall to be devoured by emerging mouths. Their inclination was to stand and fight the tendrils, even though in the first round, Gonff was knocked to half his health. I pointed this out, and they realized that discretion was the better part of valor. Gonff and Tim booked it to the end of the hall, but Jeff was knocked senseless by a critical hit: rolling a d6 and a d12 yielded 12 damage, Jeff fell to the ground. "You hear a shout, and then silence. The absence of the sound of Jeff's booted feet running down the hallway is deafening." Ah, one of my better moments of improvisational storytelling. My wife happened to walk through at this point and snickered. No accounting for taste.

I explained to the guys the rules for death and dying in ICRPG. I said that, to stop someone from bleeding out, you just had to spend an action grabbing their unconscious body and shouting, "Don't die on me, man!" They thought this was great. There's something really funny about deploying parody tropes to people who really have no idea what the trope is. It reminds me of a discussion I had with a friend the other day about the story in Charterstone (which, incidentally, I have not played, but expect I'll pick up at some point). He said that the story draws heavily on established tropes, such that he could see where it was going. However, he was playing with his kids, who are about the same ages as my kids, and to them, there was essentially no such thing as tropes: the story was new to them. I suppose that's partially why I could give my sons a fetch quest and make it exciting.

In any case, the guys had no idea that I had set up a very difficult challenge here with an ulterior motive. Gonff dropped a flare at the end of the hallway and ran back to Jeff, discovering the black tendrils snaking into Jeff's pack, retrieving the Ruby Lens, and consuming it from one of the mysterious wall-mouths. With that, the tendrils were gone, but so was the Lens. The party was reunited and whole, but there was no way to retrieve the Lens and complete their mission. Son #1 was a bit upset at this, but I pointed out that survival was always the first priority.

Tim used his Healing Touch to revive Jeff, but he rolled a 1. I had printed out the Holy Backfire table from ICRPG Core 2e and decided to use that, as a sort of narrative counter to the otherwise hypothetically endless healing available to the party. Tim's failure summoned a fog of fear, and I indicated that this would hasten their peril.

In the great cavern they discovered the rotten remains of some kind of encampment. In the center of the room was a spiral staircase carved into a giant stalagmite, at the top of which—nested in the very limestone—was the Eye. Beyond that, there was a treasure chest and a rift in the ground leading to what sounded like an underground river. Jeff climbed the stairs and began digging at the stalagmite with his conveniently-chosen mining tools. As he begin to chisel away at it, the whole cavern began to shake and tremble, and six skeletons arose, rusty weapons in hand. I set the DM counter to five, though it would have been six had Tim not earlier had a Holy Backfire. Gonff blasted four of the skeletons with a fire bomb, but it was not enough to stop them from arising; he ran up the stairs, Tim close behind.

Now they were stuck: Jeff kept hacking away at the Eye, Son #3 continuing to roll pitifully low on his basic effort. Gonff and Tim tried to keep the skeletons at bay. Being on the stairs, there was only one attacking them per round, but one solid hit was able to take down Gonff. Tim brought him back, but the room continued to quake with more and more intensity. The DM Timer is at two now. With two effort required to free the Eye, and Jeff makes the attempt... rolling a 1! Gonff takes a might swing with the Cloven Sword, and he frees it! They realized there was only one way out: looks like we're gonna have to jump! Tim jumped down, suffering just a few points of damage, but then being attacked by the skeleton closest the bottom of the stairs, bringing him near death. With the DM counter at 1, Jeff took his whole turn to leap down the stalagmite and make a blind jump into the chasm. Gonff had taken another hit and was down to three hit points. He leaped behind Jeff, and took a d6 for falling damage... two! One hit point left, and he scrapes his way into the chasm, falling headfirst into the void. Tim doesn't look back, also hurtling into the blackness.

With a splash, the three heroes land in a rushing underground river. I give them a STR or CON check to see if they can swim to safety. Amazingly, all three make the roll, and their heads emerge from the river back in the valley. By this time, their lungs were aching for air. They made the trip back to the city and delivered the Eye of Clune to the Red Wizard, giving him (or her? or it?) the bad news about the Ruby Lens being taken by a mysterious evil force in the temple. Though disappointed, the Wizard still paid out his reward—though Gonff chose to have the cursed sword taken from him rather than take the 100 coins.

We had a little debriefing at the end of the adventure. All the guys said they had good time, and Son #1 said he'd really like to play Gonff again. This would have been a great time to award Milestones, but we hadn't set any out ahead of time, and I was feeling a bit creatively drained. Son #3 said he liked it, but that he might prefer Stuffed Fables because it is shorter. The duration of the game definitely was a stretch on his ability to sit still, but the structure of the game—with quick turns around the table and a focus on action—helped keep his attention.

One of the things I found most powerful about applying what I learned from ICRPG Core 2e is that this whole adventure was expressed in one sketchy page in my notebook. I only printed out character sheets, the lists of starter loot and adventuring gear, the Holy Backfire table, and the Loot Tables; the rest of the rules and the story easily fit in my head. I suspect we may try to do another session before the summer is out. After all, doesn't Clune have two eyes?

That's the story of our Saturday with ICRPG. I had a great time, and I am still kind of amazed at how we were able to keep all the interactions right on the wire. I hope you enjoyed reading about our adventure and my reflections; I wrote it, in part, so I could come back and enjoy reading it again myself in the future. Hello, from the past!

Friday, July 6, 2018

Summer Course Revisions 2018: Game Programming

This morning, I pushed up the revised course site for my Fall 2018 CS315 Game Programming class. I would like to record here the major changes I made to the course, as I did with describing the revisions to my game design course. Keep in mind that last summer, I made the major change of converting from PlayN to Unreal Engine 4, and I wrote an extensive reflection on the Fall 2017 offering. I believe the revisions have captured most of the ideas from that reflection.

More Small, Structured Projects

Last year, I gave the students one short, structured project, and then we moved fairly quickly into a larger one. Many students felt left behind, and they responded positively to closing the semester with another short, themed assignment. For this year, I have written up specifications for two "mini-projects," each expected to take about two weeks. The first is the same as the one I used last year—an introduction to UE4 Blueprints and physics simulation using a simple cannon. I will follow that with a second mini-project, which will be creating a minimal shoot-'em-up game in classic, top-down arcade fashion. This will introduce the students to issues of input management, more robust state management, and dealing with enemy pawns. I have a third project in mind but not fully articulated on the course site: it will likely involve creating a simple first-person shooter, modifying one of the starter projects. I want to hold off on the articulation of this until I can see how the first two go.

From there, I am not sure if we'll do a small project related to C++ integrations or move right into the final project; if the latter, I can make C++ integrations a requirement for a certain grade. It's something I want everyone to try, at least, to build some understanding of the layered nature of game architectures.

I plan on having a meeting with the class halfway through the semester where we collaboratively develop the criteria for the final project. I expect we will end up with some loose specifications and a menu of potential features to explore, such as AI or multiplayer.

Specifications Grading

The MacGuffins system I used last Fall was too coarse grained. I adopted it in part because it was relatively forgiving to a massive change in the course, but I knew that as I refined the course I would want higher fidelity. This Fall, for at least the mini-projects, I will be using specifications grading. This is a trendy "new" approach; in fact, I used a variation on it years ago in CS222, before the idea had new branding. The details on the first two mini-projects lay out what features or functionality must be present to earn a D, C, B, or A, with the higher levels assuming the lower ones. I am interested to see if students strive for A—with some failing to reach it—or if they pick the grade they want and simply work at that level. 

I have added a project report requirement to the conventional specifications grading approach. Each individual or team needs to state, in their report, which grade they have earned, with what is essentially a checklist of features. I intend this to serve two purposes: the first is to foster metacognition, and the second is to help students catch their mistakes. 

Perforce Helix

My Spring 2018 Game Studio team learned Perforce Helix, which proved much more fit for purpose than Git for UE4 game development. The good folks at Perforce were kind enough to grant us an academic license that allows me to continue using their software for Fall's game programming course. There will be a bit of manual administration on my part, creating all the requisite users and depots, but I think it will be worth the hassle of having integrated asset locking support. Nothing's worse than divergent binary assets.

Simple Achievements

I was tempted to abandon Achievements for this course, in the name of simplicity. However, more than that, I wanted an incentive for students to share independent findings through in-class presentations. Some of the most memorable meetings from last Fall were the student-led tutorials on Blender and on Godot Engine. I decided on a very simple system whereby students can earn a single achievement that counts for 5% of their final grade. That amount was chosen because it allows a student who earns on A on everything else to earn an A in the course. I've only provided three options: attending a games-related conference; participating in a game jam; and giving an in-class presentation. I don't really expect anyone to chose the first, but if they do, I want to reward the effort. The growth of itch.io makes participating in a game jam much easier than it used to be.

Decorum

I've copied over the decorum section of the Game Design course plan over to this one, with some modifications made around the appropriate use of portable electronics. I have traditionally not had the kinds of problems in Game Programming as I wrote about in my Human-Computer Interaction class, but I figure there's no harm in it.

Diversity

Two years ago, the Faculty Senate (or somebody like them) passed a resolution that requires all course plans to include an official Statement on Diversity, chosen from one of two official options. The primary difference between them is that one includes contact information for the Bias Response Team, and the other does not. This mandate made me uncomfortable at the time, but it has taken some time for me to articulate the root causes.

Here's a good story that I have not told here before. At the end of my HCI course in the Spring, I asked the students to reflect on the most important things they learned during the semester. One of the responses surprised me, in part because it came from a student who had not shared much during the semester; he said that he learned that everyone is biased. That's true, of course, and I asked him how it had come up in the course. He reminded me that I shared my thoughts about this as my reaction to the Statement on Diversity in the very first class. You never know what's going to stick.

The version I chose to include on my course plans is the one that does not encourage students to report to the Bias Response Team:
Ball State University aspires to be a university that attracts and retains a diverse faculty, staff, and student body. We are committed to ensuring that all members of the community are welcome, through valuing the various experiences and worldviews represented at Ball State and among those we serve. We promote a culture of respect and civil discourse as expressed in our Beneficence Pledge and through university resources found at http://cms.bsu.edu/campuslife/multiculturalcenter.
I asked my chair earlier this Summer to help me find the actual mandate regarding this statement in the university or faculty handbook. Turns out it's a resolution, but it has not been recorded anywhere else. This by itself strikes me as problematic: where is one supposed to go to find the rules one is supposed to follow? Wading through all the minutes of all the Faculty Senate meetings for all of the institution's history.

Procedural matters aside, my email conversation with my chair helped me to better articulate what bothered me about this statement. The short answer is that it is a lie, and I have no tolerance for lies. To be clear, the Beneficence Pledge is pretty good, although it has a few problems. Given that I've never heard any student or faculty member reference it, I don't think it's actually part of university culture, not like honor codes are at some institutions. Also, people who recite it honestly and live by its values are the same people who don't need it in the first place; it's like preaching to the choir.

I decided to include not only the Statement on Diversity but also the fact that I am required to include it. I then ask them to consider three questions:

  • Who speaks for Ball State University and its aspirations?
  • What philosophies espouse mandated statements of aspiration?
  • Is it appropriate to value all worldviews?
I might riff on these a bit in the first week of the semester, or I might leave them for students to consider. I thought about adding a fourth one, "Who benefits from this mandate?" For now, I'm sticking with three. Here are short answers for the interested reader:
  • Not the person being mandated to include this on their course plans, that's for sure.
  • Totalitarianism, at least.
  • Clearly not.
These answers beg another question, "Does the Statement on Diversity do anything to advance diversity?" It might be like the Beneficence Pledge if it simply maintained neutrality, except that in being mandated, it speaks volumes. Maybe it's a good time to bring back my tradition of making my students recite the Bene Gesserit Litany Against Fear.

I may copy these reflection questions over to the Game Design course plan to see if the Honors Students react any differently to it, but I haven't decided yet.

Wrapping up

I'm eager to teach the Game Programming course again with this incremental yet significant revision on last year's plans. I think I can get my students involved in a colleague's research project on specifications grading with very little extra effort. Even though there are some unknowns yet for this course, such as the number of mini-projects and exact nature of the final project, I feel good about having the revisions in place. I think I am in a good position to move on to my third summer course revision, although that's going to require a bit of networking over the next two weeks. Tune in later to see how it all turns out.

As always, thanks for reading, and feel free to share your thoughts in the comments.