31 Things, Day 16: LARPing

31 things I'd rather be doing right now

LARP stands for Live Action Role-Playing, where a group of people get together to play a game by acting out characters. They dress up, and really try to be someone else for a little while. It’s like a play, only improvised; it’s like a game with rules, only people are the playing pieces.

So yes, it’s considered incredibly nerdy, but LARPers themselves consider that a badge of honor.

LARPingMotivator

Full disclosure: I’ve never actually participated in a LARP before, nor have I even seen one in real life. And honestly most of me doesn’t want to. It’s a really weird activity that takes playing a game a bit too far, and the people who are regularly involved in it are kind of … intense.

But you know what? I’d be lying if I said I never wanted to try it… because a little part of me wants to. Makes sense, right? I like games, I like acting, I like fantasy worlds. It could be fun. But… I’m 35! You know, an adult! I’m all for imaginative playtime among children, but… adults? Really? Wow.

Yeah, I think I still want to try it.

So that’s another thing I’d rather be doing now someday. Maybe. LARPing.

31 Things, Day 15: Programming

31 things I'd rather be doing right now

There is something very satisfying for me about programming. I’m specifically referring to coding here; it’s part problem-solving, part art. The problem to solve can be small (make this mess of text into a nice table), or big (make a game).  The art part is the design of the code “building blocks” that will work together to make a computer program. The term used among programmers is “elegant code,” and I think it is an apt word. If you can create some code that can be reused for many things, both now and in the future, you just saved a lot of time. You never have to touch it again, because you know it works. I love that.

Take this example from my own game code, which I find to be very elegant, (if I do say so myself). A tile-based game is a grid where objects can move in any direction to a tile next to it. Sometimes an object can’t move for various reasons, maybe it’s blocked by a wall. In any case, a game needs to be able to handle an object moving from one tile to another.

2dgame

 

When I first made my Heroquest game, the code handled moving objects very specific to the game. I would never be able to use the code again, because it was very closely tied to only that game. Later, I discovered I could refactor that code and make it reusable. In order to do that, I had to completely generalize what was happening when an object moved from one tile to another. It doesn’t matter if the game is Heroquest or Monopoly or Sorry!

This is what I came up with:

When a pawn wants to move in a certain direction, follow these steps

  1. Does the pawn meet the prerequisites to be able to move in the first place? If no, do something else because they are not met. Otherwise, continue
  2. Are Diagonal moves allowed? If no, does the pawn want to move diagonally? If yes, do something else because diagonal moves are not allowed. Otherwise, continue
  3. Does the tile the pawn wants to move to exist? If no, do something else because the tile can not be found. Otherwise, continue
  4. Is the tile the pawn wants to move to accessible based on where the pawn is now? If no, do something else because the move is blocked. Otherwise, continue
  5. If you got this far, the move will now happen:
  6. Process/do the physical move itself
  7. Evaluate the ramifications of the move to the pawn, the surrounding area, and/or the whole game itself
  8. Do any post-move processing (clean up, things that always happen at the end of a move, etc)

Now I had a skeleton framework to make some reusable code, and I could use it any game I wanted. Here is the actual code:

public void move(TileOccupier pawn, Compass dir) {
  if (movePrerequisitesMet(pawn))
  {
    if (!(!diagonalMovesAllowed() && dir.ordinal() > 3))
    {
      AbstractTile targetTile = 
        tileMap.getAdjacentTile(pawn.getLocation(), dir);    
      if (targetTile != null)
      {
        movePreProcessing(pawn, pawn.getLocation(), targetTile, dir);
        if (tileMap.isEnterableFromOppositeDirection(targetTile, dir) ||
          ignoreTileBoundaries(pawn, dir))
        {
          processMove(pawn, pawn.getLocation(), targetTile, dir);
          evaluateMove(pawn, pawn.getLocation(), targetTile, dir);
          movePostProcessing(pawn, pawn.getLocation(), targetTile, dir);
        }
        else { processMoveBlocked(); }
      }
      else { processTargetTileNotFound(); }
    }
    else { processNotAllowedDiagonalDirection(); }
  }
  else { processMovePrerequisitesNotMet(); }
}

Not that long at all. And the way it works is that any game I make in the future will be able to use it because it is abstract. I simply have to make some concrete decisions about what happens in the particular game at the various stages of the move. (For example, one game may yell at you when try to move diagonally; another game may do nothing at all.)

For the non-programmer types reading this blog, this post may have been boring. But whenever I look at that code above – something I made all on my own – I think, “wow, that was a really elegant design.”

And then it makes me want to go code something!

So that’s another thing I’d rather be doing now, programming.

31 Things, Day 14: Playing Video Games

31 things I'd rather be doing right now

I love video games. Not all video games, mind you; I have specific types I like. What I love is the interactivity of the art form. Yes, I consider video games an art form. Whether the game designers have created a story for me, or I create the story from playing, the adventure, to me, is as real as reading a book or watching a movie. The creativity of the games’ stories, concepts or graphics appeal to my artistic side, and the execution of the mechanics of the gameplay appeal to my technical/programmer side. What’s not to love?

Still the best game ever.

Still the best game ever.

Once a game has its hooks in me it’s hard to pull away. I know because if I’m not careful they can consume my time and thought. These days as a husband and father, I purposely try to limit my screen time, for the health of all. I’m not always successful. There’s a twinge of selfishness that creeps up now and then, and I choose games over real life. But I’m much better at controlling that aspect of myself today than I was years ago.

The Atari 2600, Nintendo Entertainment System (NES) and Super Nintendo Entertainment System (SNES) were the video game consoles that started it all for me. As a shy and quiet kid who didn’t play sports or go outside that much, video games were my form of adventure, competition, and yes, escape. Later I moved on to PC gaming, and because of its versatility it remains my favorite platform; I circled back to consoles with the Nintendo Gamecube and Nintendo Wii, and even dabbled in iOS games with my Apple iPod Touch, but I still remain a loyal PC gamer.

Was never caught up in the story more than FF2

Was never caught up in the story more than FF2

My favorite types of games are simulation/city-building games (Dwarf Fortress, The Sims, SimCity, Banished), complex strategy war games, (Age of EmpiresCivilization, Europa Universalis), open-ended role-playing games (Elder Scrolls), story-based role-playing games (Final Fantasy, Eschalon), Exploration/Puzzle games (Myst, Portal), Sandbox games (Terraria, Minecraft) and Action-Adventure games (The Legend of Zelda, Rogue Legacy). Those are all mostly single player games for a reason: not a big fan of multiplayer games, usually because I’m not good enough to go against people who play all day.

 

The city of Vivec, Morrowind

The city of Vivec, Morrowind

So many games, so little time, but I enjoy them when I can (key word enjoy, not conquer), but mostly try to keep my head above water so that I don’t miss real life at the same time.

As an artist/writer/gamer/programmer, it should come as no surprise that I want to create my own games. We’ll talk about that tomorrow.

So that’s another thing I’d rather be doing now, playing video games.

31 Things, Day 13: Traveling

31 things I'd rather be doing right now

To be clear: this isn’t something I’d rather be doing right now. I just got back from the Boston area to attend a funeral, and traveling with a five-year old and a two-year old is not fun. That being said, there are lots of places in the world I’d like to travel to, both with and without my kids (and always with my wife, my best friend).

I confirmed this desire to travel the first time I saw the Grand Canyon in person. You can look at beautiful pictures or watch panoramic IMAX movies all you want, but nothing compares to actually being there and laying your own hands on it. For this reason, I want to set my feet on sites across the globe, to experience the awe and majesty of singularly beautiful sights, both natural and man-made. Rather than just list them out, enjoy the pictures below, but know the reality is better.

So that’s another thing I’d rather be doing now someday, traveling.

31 Things, Day 12: Compose music

31 things I'd rather be doing right now

My last post on music in this 31 things series involves something I have never done once, and that is compose music. I want to do this because I believe I can, and I also believe that today’s technology may make it possible. Twenty years ago when I was fiddling around with a keyboard, I had heard of MIDI (Musical Instrument Digital Interface), where music you play could be interpreted by a computer and recorded digitally, but I didn’t fully grasp what it could lead to; today, you don’t hear that much about MIDI, but it’s still around. Instead, you hear more about Indie musicians, who are are able to record their music with exceptional quality, and sell it themselves, without the need for a recording studio and the producers and executives and all that stuff. All thanks to computers.

I’m not talking about any of that though. The technology I’m interested in allows you to actually make the music using just a computer. Sure, it’s not “the real thing,” but for someone like me who loves music, but doesn’t play it, this is as close as I will get to be able to see if I could create songs. A piece of software I’ve had my eye on for years is Cakewalk Music Creator, which allows you to compose, mix, create, all with virtual instruments. Really sounds like it’s exactly what I would need.

What would I compose? I don’t know – that’s the fun part. The idea of a group of people just “jamming” together is amazing to me;  in this case, I’d be jamming alone, and just see what would happen. I’ll admit, it would be incredible to compose a concept album, prog-rock style, something on the level of Genesis’ The Lamb Lies Down on Broadway. The storyteller in me likes that idea a lot. But I also realize it’s very ambitious, so I wouldn’t set my sights too high initially. It’s fun to dream though.

So that’s another thing I’d rather be doing now, composing music.