zero's a life

An extra chance.

Quarries of Scred Roadmap

| Comments

The Quarries of Scred developer released an image showing the overview of Scred’s 14-day game development. I find it informative for a couple of reasons. First it’s not limited to the core features of the game, Kale’s also included public relations and marketing information. Second, the fact that it’s incomplete shows how Kale’s prioritized critical elements of the game.

Rather than blatantly stealing the roadmap for Quarries of Scred, I’ll give you a few seconds to go and capture an eidetic mental image. Got it? Great. I guess all you cheaters who opened it another tab can follow along too.

.gitignore for Unity Projects

| Comments

I found a solution on the Unity website that pointed me toward this blogpost. But a better solution is out there. The Double Fine Game Club’s Bad Golf Community Edition .gitignore looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
build_Data/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.exe
*.userprefs

# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.[Ss]potlight-V100
.[Tt]rashes
[Ee]hthumbs.db
[Tt]humbs.db
*~
*#*

This is the .gitignore I’m currently using in my projects.

Follow-up to the Centrality of Caves

| Comments

My post last week about caves struck a nerve. I received a lot of encouraging retweets and favorites. I also received some great feedback.

Paul Diaz points out one design constraint granted by caves that I hadn’t considered.

I think Paul is right, that this falls within the scope of caves’ linearity. I’ve been thinking a bit about a possible taxonomy of cave environments in games, but for the purposes of these posts I’ll keep it more general. A cave is a cave, right? We know it when we see it.

Any old screen in a game can be cave-like in the way its environmental design constraints fit into the game world. Here I’m using ‘screen’ to refer to a room in a metroid-like game or a level in other sorts of games–some arbitrary atomic unit of division of the game environment constituting a discrete area.

For the purpose of argument, Paul’s point forces us to think of the most cave-y of caves, which I think was the intent behind the original question in the first place. Because caves are dark environments, dank environments, interior environments, they lack the uniform lighting that typically characterizes the exterior ‘overworld’ in games. As Paul states, lighting cues can serve as guideposts for the player, directing attention toward the critical path.

I view this example as a manifestation of the fundamental reduction in degrees of freedom of play achieved by the interiority, and thus, linearity of caves. The fact that there are more walls, and therefore fewer possible places for the player to go, allows for the designer, using careful construction, to communicate intent to the player through the environment itself. I don’t mean to say here that such communication is impossible outside of caves, just that caves are one simple and straightforward way to achieve this constrained, communicative sort of design. This vocabulary of design showed up early on in the history of games, it worked, and it has persisted.

Thanks and shout outs to Paul Diaz, whose feedback inspired this follow-up post.

Why Are Caves Central to So Many Games?

| Comments

On twitter, @psysal posed this question to the game dev community:

You can see all the responses by following the link to the original tweet.

The consensus is that caves are essential features for games for three reasons.

  1. Linearity
  2. Repeatability of composition
  3. Curiosity

Clojure Rhizome Labeled Edge Tutorial

| Comments

I’m using the Rhizome package for Clojure to rapidly prototype the dependency graph for a crafting system. It’s nice to be able to add and remove components while generating visualizations on-the-fly. Clojure’s simple, composable syntax, aided by paredit, makes shuffling around key-value pairs, and even whole dictionaries, quick and easy.

The existing Rhizome documentation shows simple examples for labeling the nodes of a directed graph. In order to show the relationship between nodes on the graph, I’d like to also label the edges, or the arrows connecting the nodes.

Rhizome provides a keyword argument :edge->descriptor to most of its functions. Consulting the source code and the tests for the Rhizome package, I learned that the functions expect :edge->descriptor to be a function accepting two arguments for each edge: src, the source node, and dst, the destination node. In order to label the edges, the anonymous function I’m binding to :edge->descriptor will return a dictionary containing the key :label and the value for the edge’s label.

Here’s an example using the simple graph from the Rhizome documentation:

1
2
3
4
5
6
7
8
9
(use 'rhizome.viz)

(def g
    {:a [:b :c]
     :b [:c]
     :c [:a]})

(view-graph (keys g) g
            :node->descriptor (fn [n] {:label n}))

Now, I’ll use a dictionary of dictionaries to associate the source and destination nodes with a label for each edge.

1
2
3
4
5
6
7
8
9
(def g-edges
  {:a {:b :makes
       :c :takes}
   :b {:c :takes}
   :c {:a :makes}})

(view-graph (keys g) g
            :node->descriptor (fn [n] {:label n})
            :edge->descriptor (fn [src dst] {:label (dst (src g-edges))}))

I’ve submitted a pull request to Rhizome to add this example to the documentation.

Styx_ebooks

| Comments

And now for something completely different: a markov chain text generation twitter bot. Styx_ebooks tweets random text generated from a corpus of Bangsian fantasy novels. Its name comes from John Kendrick Bangs‘ novel A House-boat on the Styx and the general twitter ebooks meme.

I forked it from an earlier project by @jiko, lovecraft_ebooks. There were some minor implementation hurdles, mainly related to Twitter’s API and oauth. Reading the python twitter package twitter.oauth docstring set me straight. You can check out the code in my fork on github.

This sort of text generation algorithm isn’t just useful for making annoying twitter bots. You could alter some of the in-game text or dialog based on a corpus fed into a markov chain text generator. Especially in the case of a Lovecraftian horror game, I can see how this text could serve a thematic purpose in the story.

Say you’ve got a Lovecraftian horror game in which the player is an investigator who is trying to figure out what is happening to citizens of Innsmouth. By interacting with NPCs, the player encounters hand written dialog, with occasional markov-generated gibberish thrown in. The amount of gibberish depends on how corrupted the individual denizens of Innsmouth are becoming. If the player is not clever enough to determine who is corrupt, the player will be killed. If the player determines the source of the corruption, the player wins.

Along the same line of reasoning, the concept I’m describing here mimics the game ALZ, a touching short, playable in 2 or 3 minutes, which uses glitchy graphics to convey a sense of what it’s like to live with Alzheimer’s disease to the player. I came across Dylan Carter’s ALZ in a post on the ANIMAL blog. This approach of literally altering the player’s experience of the game world to mimic the subjective experience of characters in the game is ripe for exploration. I’d love to hear about more examples.

You can check out my bot, @styx_ebooks, on twitter, happily tweeting the day away.

The Fate of Adventure Games

| Comments

ZoyÉ™ Street wrote a summary of an interesting PhD thesis by Jonathan Lessard. Lessard examines the history of adventure games, to see whence they’ve come and where they’ve gone. Like Street, I think this approach to thinking about video game design and genre provides useful perspective.

Lessard concludes that the adventure game genre didn’t vanish, it sublimated into, and was subsumed by, other modern multi-genre games.

For example, consider 3d RPGs incorporating first-person shooter perspective and playstyle. I could be describing Skyrim or Titanfall, two dramatically different games.

Lessard and Street argue, convincingly, that these sorts of games have all the hallmarks of adventure games, while evolving new forms and structures of play.

Don’t Fear Lack of Content

| Comments

Came across a nice article on Ben McGraw’s blog, Egometry. Using Super Mario Bros. as a model, Ben explains why merely increasing content quantity is less desirable than increasing content substance. The title of this post is lifted from a quote in his article.

Sometimes exercising a bit of restraint, keeping the focus of your content simple, can still allow for an interesting and engaging player experience.