Back From The Dead

I honestly don’t know what week we’re on for So Play We All, I’ve missed a weekly update for the first time. Well, for the first three times in a row. Each time I decided not to work on Oaqn in favor of bigger, more stressful things going on in my life. Which is to say: I’m not going to make an excuse, I’m just going to pick it back up and make more progress.

As a side note, we’ve tinkered with rules since my last update. When we miss a week we’re allowed to bank that time for later use (which I think was three instances of 2-6 hours, but I’ll have to check). I hope to use up that time in the next week or two, but we’ll see what my availability is. First I’ll have to get my Oaqn hours done more than 24h before the deadline, which I’ve only managed the very first week of SPWA.

Another rule change is that we’re going to do our responses to each others’ updates in our next update rather than as a separate post, so those will start appearing here rather than on on my personal blog. Finally, we’re going to indicate our availability for hours at the bottom of each post rather than try to remember to coordinate emails to plan – not a huge deal, but I mention it for anyone wondering why I’ll keep closing with it.

Responses

Jim has been doing more plumbing. and also more plumbing. The visible effects of his changes are that his game now renders

Welcome Guest!

…instead of the previous placeholder text. The neat thing is that it’s actually touching a User model from the database. The less neat thing is that he’s still way down in low-level code, trying to sort out how data flows from the database to the screen. Some of the stuff about Drupal’s views in his second update sounds like Django’s generic templates and template inheritance, but otherwise there’s nothing much to say about plumbing.

Luke has also had trouble hitting updates, I think his exposition post is the only one for me to respond to. It’s not mentioned in the post, but I see some changes in his game. You draw cards, pick where you want to go, and can gain skill points to level up your cards. Interesting to consider cards that aren’t fungible resources, they can be individually improved. There’s some bugs, though, after clicking around a while I just get server errors.

Progress

And speaking of errors gives me a good transition to talk about my progress for this week. I spent half of my time on Oaqn chasing down a very painful bug. When loading a player record that lazily updated an attribute, I was losing the time of the last update. No exceptions or anything, I just always got the current time when I asked when the last update was, no mattter that I could see it in the database. Ah well, it works now. I’ve sharpened my bug-hunting skills and added to my test suite.

I’ve made some minor tweaks. If you’re logged in, you won’t see the generic front page of Oaqn that tries to get you to sign up, you’ll go right to viewing the world from your current position.

I’ve added the display of stored travel time (that’s what exposed the big bug) and a navigation bar showing which aspect of the game you’re looking at. The next item to come will let you make travel plans. I feel a bit like I’m repeating the last two updates by saying that’s the next thing to come, but I’m continuing my steady progress towards that interactivity.

This week, I’m good for up to six hours, everything’s finally planned and quiet in my life. If we only do 2-3 hours, though, I’m publicly committing to a second update from my banked hours.

If you’re glad to see Oaqn rolling again and showing live, up-to-the-second player data, please vote for it in this week’s poll. No poll this week, I was the only one to complete my hours.

Queuing Up Travel

Small update this week for So Play We All, I spent 2 hours of our 2-6 hour budget. Mostly I was reacquainting myself with the complicated way data feeds back and forth from the iframe showing the worldview to the game.

First, I got some little stuff out of the way:

  1. updated to Rails 3.1.0rc6 for security fixes
  2. awarded some missing badges for signups
  3. write tests for signup badges, as I’ve fixed them twice already :p

Then I worked on letting players travel between cities. I gave all existing players a day of stored travel time and capped players at storing three days at a time.

Next, I added a simple calculation of how how long travel time is between cities. Right now that’s manhattan distance times a constant fudge factor (so the longest trip between cities takes a day or so). This will get more complex in stages: A* pathfinding cost, pathfinding between plats, pathfinding based on equipment (different wagons will be suited to different terrains).

# Here's a quick look at the travel time in seconds between all cities and the first one
> City.all.collect { |c| c.travel_time_to City.first }
 => [0, 32775, 16725, 96975, 73800, 65475, 59475]

I tweaked the worldview to show the player’s current x and y, then spent the rest of the time kicking the tires on the worldview js making sure I understand how it works. I didn’t immediately see how to show the player the travel cost to various cities or know how to add it to the UI, and as I write this I remember my game design notes include planning navigation by routes, so I think I’ll move that off to its own page rather than cram it into the main view of the world.

This was a solid little week. Couple tweaks and updates, and I made a decent start on letting players around the world. Even if the budget is 2h next week (I’m good for up to 6), I’ll think I’ll be able to get that working.

Please vote for Oaqn’s progress towards gameplay in this week’s poll.

Laziness Pays Off

After we took a week off and I forgot a week, this is the first time I’ve touched Oaqn in about three weeks. So Play We All marches on, with me spending 3 hours of our 2-6 hour budget. I picked up where I left off on lazy updates and I have an exciting announcement.

Read More…

Lazy Updates

This week for So Play We All I’ve given myself another reminder of the importance of scheduling. We only budgeted 3 hours, but I flew to my home base of Chicago and have been very busy catching up with friends and family. I could’ve gotten code done earlier, but instead here I am up against the deadline and coding poorly due to sleep deprivation.

Read More…

One Step Forward

This week I made progress on Oaqn because of So Play We All when it would’ve otherwise been a loss because of busy life. I didn’t get anything huge done because my brain was a bit fried, but I cleaned up and prepared next week to include my first gameplay. Pardon if this is a little less well-written than usual, I’m getting it published with literally two minutes to spare — this week really has been that crazy.

Read More…

The Plumbing Works

Last week I mentioned struggling with easyXDM. The project author (who must have a Google Alert set up) dropped by to mention that I should ignore the docs on the website in favor of the README. I spent this week’s budget of two hours sorting out what went wrong there.

Read More…

Visual Interface

Time to look at Oaqn’s game design again by drawing a card from Jesse Schell’s Art of Game design book/deck of cards and writing down my thoughts as I ponder the questions it suggests. This week the random number generator gave me:

Lens 54: The Lens of Virtual Interface

This lens is paired with #53, The Lens of Physical Interface, to bring light to the user interface of a game. There are a lot of options in virtual interfaces, from buttons and floating heads-up displays to seamless depictions of the world (think of Limbo or Braid). This is a nice card to pull for Oaqn, which innovates on UI for browser games.

Read More…

Hangups

As with last week, the theme was “game world” for So Play We All. I had some nice plans for my two hours, but didn’t get near to finishing them.

Before I get to that, let me link to my response, the title of which turned out to be a bit of foreshadowing. Also, Luke wrote On Iterating about his decisive plans to redesign his game and Jim wrote about our differing implementation styles.

Read More…

Game Design Series

It’s not part of So Play We All, but I’m going to start writing about Oaqn’s game design on Mondays. I want to keep it fresh in my mind even as I’m hacking away at code internals, and it’ll give me an excuse to improve my design by thinking out loud.

I really love the book Art of Game Design by Jesse Schell. It presents 100 “lenses” for the game designer to take a new perspective on their game. Each lens is a series of questions that I’ll work through. The lenses are even available as a deck of cards, so each week I’m going to shuffle it up, draw one, and write on that topic:

~ $ irb
ruby-1.9.2-p0 > rand(100) + 1
 => 18 

Uh, yeah, that’s a Ruby prompt, not a deck of cards. It would’ve been silly to lug the deck around on my ongoing travels. Luckily the lenses are numbered sequentially, so I can still pull a random one easily.

Lens 18: The Lens of Flow

This lens is all about the psychological state of flow (definitely read the Wikipedia page if you’re unfamiliar), making sure that players have appropriate, engaging challenges.

Unless I start including minigames (which is a possibility for crafting), Oaqn isn’t going to deliberately induce a flow state. It doesn’t have a steady stream of challenges, it’s a game about long-term planning and scheduling a little bit each day. While the player may never be in flow, the questions about goals are still important to ask.

Does my game have clear goals? If not, how can I fix that?

Well, to a limited extent. It’s intended to be an “open world” game where players can explore and set their own goals. There will be some obvious things: improve their character’s stats, join and grow a guild, make profitable trades. All of these are mid-to-long term goals, though, I’m going to need to think a lot about what a compelling first five minutes of gameplay looks like in a game about travel and downtime.

One idea I’ve been kicking around is the idea that players have some kind of “travel meter” that charges up for each second they’re parked somewhere (generally while offline, and only up to some maximum of a few hours). When the player is online, they can use that stored time to skip ahead in their travels. I can imagine some abuses to effectively instant travel, but it would definitely help get people into the game at the beginning. More likely it’s just a one-time thing to show more gameplay and hook new players.

Because quests will be have significant effects, even after they’re finished or abandoned, I’ll need some kind of quest journal to track them. Admission time: I have never played a game with a serious quest journal. They got popularized right at the time that I lost interest in RPGs. I’ve seen some basic functionality in tactical games, but really could use a primer. If you, dear reader, have links to an overview, a must-play game, or any suggestions along these lines, please comment.

Are the goals of the player the same goals I intended?

Hope so. I really can’t say more without players getting involved, especially because I want players to invent goals. Dye all their caravans a rare color, or corner the market on a rare spice, or visit every city in the game.

Achievements can nudge people into thinking of new challenges, but I don’t want to displace that intrinsic motivation with a to-do list of unfinished challenges. I don’t like it when games hide away their list of achievements. Some FAQ is going to have it anyways, but I have to jump through the hoop of finding that. And as a game designer, this means deliberately sending players and their attention away from the game. Maybe there’s a happy medium in listing all the achievements somewhere without prominently advertising uncompleted items to each player.

Are there parts of the game that distract players to the point they forget their goal? If so, can these distractions be reduced, or tied into the game goals?

Unknowable without playtesting.

Does my game provide a steady stream of not-too-easy, not-too-hard challenges, taking into account the fact that the player’s skills may be gradually improving?

Ideally, yes, because players can choose their own challenges and risks as they wander the world. In practice, this probably means prompting players with ever-slightly-harder quests to counteract the inborn tendency of players to eschew risk in favor of reliable but un-fun grinding.

Are the player’s skills improving at the rate I had hoped? If not, how can I change that?

Because goals are so flexible, it’s going to be hard to make sure players get the accurate and timely feedback they need to improve. At the least, this means a detailed event log with goods, travels, quests, and any other significant events. Hardcore players would take the opportunity to export this to Excel and play, but lighter players may not ever think to look at it. Perhaps some achievements can be tied to progression, like a series of “trade X resources in Y minutes” achievements to strive for.

Well, but that’s mostly goals. The player skills are mostly going to be in scheduling, good appraisal, and quest selection. I can judge quests by how many they fail and perhaps time-to-completion, but the others are hard.

A Whole New World

Week 4 of So Play We All had a budget of three hours and a topic of “game world”. The topic for me might as well have been “bugfixes”, because that’s where most of my time went — but the world of Oaqn took a big step up in graphics quality.

Read More…