Ready Player One

My favorite childhood video game was the Atari 2600 title Swordquest: Fireworld. The game takes place in a series of caverns that lead to rooms with mini-games. Every once in awhile, when I beat a mini-game, letters would flash on the screen. I was sure they had meaning, but without access to the game’s instruction manual or a resource like the Internet, I had no idea what. I was also five years old.

Almost 20 years later I was surprised to find out the game had been part of an elaborate contest held by Atari during their golden years. Those who discovered the meaning of the puzzles and completed them alongside a comic in the instruction manual would compete for lavish prizes even by today’s standards. I was disappointed to learn the contest ended about a year before I discovered the game.

I just finished the Ready Player One audiobook, written by Ernest Cline and read by Wil Wheaton. It’s the story of a video game contest with embedded puzzles seeped in 1980’s escapism. I enjoyed the book because it provided a platform to revere so much of the entertainment I liked as a child and rediscovered as an adult. It’s also a good story with a lot of threads that add to the world without being obviously used for foreshadowing.

Ready Player One takes place in an immersive VR future, but it draws on so much of Atari’s past and the excitement and competition an epic contest can bring. I think it’s absolutely realistic in that regard.

Discovering there will be a Ready Player One movie out in 2018 feels like the cherry on top of the cake’s icing considering how good the audiobook narration by Wil Wheaton is. I’m also looking forward to listening to the author’s next book, Armada.

No Man’s Sky

My first encounter with No Man’s Sky happened when literally everyone I knew with a computer told me they couldn’t wait to play it on the Oculus Rift. I love retro games with simple graphics, for example I’m a huge fan of the original Elite series of games. So I decided to wait and see what would become of No Man’s Sky.

It’s now the eve of the PlayStation 4 launch and I’m excited to see a sandbox exploration game receive this much attention.

My first area of interest is teamwork. Soloing sounds amazing, but space seems lonely. I used to solo Minecraft, and though it was soothing I ultimately found it to be more fun to play with friends. I’m also curious to see how the shared universe experience pans out, particularly with planetary discovery and resources.

Finally, this game was promoted with what I think of as a “magic box” principle. Basically there’s this place to go, the center of the universe or “the box”, and you don’t know what’s in it, but it must be enticing considering all of the work it will take to open it. It reminds me a lot of Curiosity – What’s Inside the Cube?, which used a similar principle: get to the center of a cube, and something will happen. When the ending to No Man’s Sky was leaked prior to it’s launch it publicly broke this mechanism. This makes me wonder if the developer will change the ending along with their recent re-generation of the game’s universe.

Unfortunately I won’t be playing this game myself because I’m staying away from video games at the moment. But I’m looking forward to hearing what others think of it.

How I Use Evernote

I’ve been using Evernote for the past few months and it’s been crucial to getting and keeping my life organized.  Here’s my system:

  1. Folder structure: Cabinet, Inbox, To-Do, Trash.  All incoming notes hit the Inbox first for processing.
  2. Note processing: The two main types of notes in my life are either Recurring or Projects, so I label each note’s title with Recurring: or Project: to identify them. If a note is a project I add a success criteria, if a note is recurring I star it for fast retrieval later and eventual scheduling into Google Calendar. A third type of note is Reference. I don’t touch the title of reference notes, but do I use Evernote’s tagging system to label them with something descriptive (eg minecraft) and immediately put them into the Cabinet.
  3. At least once a week I review all of the notes in my Inbox and if appropriate add them to To-Do (in progress), to the Cabinet if the project is finished, or schedule them into Google Calendar and/or set an Evernote reminder if the note is recurring. If the contents of a note are not substantial or worth retaining then I delete it when it’s no longer needed.
  4. I also use Evernote’s chrome plugin to snapshot and tag reference material. This is substantially better than using a browser based bookmark system because the Evernote plugin stores the full text of the web page I’m capturing into a note.

Using this system has helped me identify and organize collective groups of tasks that turned out to be projects. It also gives me a handle on scheduling and reducing my workload with recurring tasks.

My Evernote system is the byproduct of following advice from Michael Hyatt on his Evernote system. The weekly review was inspired by Getting Things Done: The Art of Stress-Free Productivity.

End of Summer Milestones

This summer was life-changing for me, both personally and professionally.

Professionally:

  • I received even more positive feedback about my DrupalCon Los Angeles presentation on visual regression testing, including making a top 10 list.  I’m glad so many people found it helpful.
  • I presented two sessions at the NYC Open Source Conference, one at the Security & Privacy Summit on mass code analysis and the other on visual regression testing.
  • I gave a ton (well, 10) lightning talks at local clubs and events.
  • I wrote a well-received guide on visual regression testing.
  • I discovered the OKR (Objectives and Key Results) planning and reporting system is completely brilliant.
  • I discovered how much I enjoy public speaking, that people enjoy my presentations, and that preparing more of them is almost certainly on the horizon.

I also wrote my first text adventure game for Ludum Dare #33!  I love text adventures. There will be more of this.

Personally, I hit one of the most important milestones in my adult life.  Back in January, I decided that I would try as many new things as possible this year and own the outcome of every attempt completely, to better work on personal growth. I discovered some good things, for example, how much I enjoy public speaking.  But I also found that a core skill I thought I had was significantly different from what I thought I knew about myself. This has become life-changing in an unexpected way, which is exactly what I signed up for, but still takes time to process.

2015: Six Months of Fun

The year 2015 has been exceedingly productive and I’ve had a very good sprint into early summer. June hasn’t quite hit yet, but it’s about the time of year where I think about what I want to accomplish personally in the months leading up to December.

  • Learn Inkscape.  Inkscape is an open source vector graphics illustration program that appears to be well-designed with exceptionally high quality.
  • Create more music with GarageBand.  I’m new to composing electronically and earlier this year I started creating simple loops with this program.  My experiences have been very positive so far and I’m having fun.
  • More Ludum Dares!  This competition has been a good experience for me and I’m looking forward to the August and December jams.

I’ve also been thinking about my current reading efforts. I used to put quite a bit of time into maintaining my Goodreads account and keeping up on new releases. Presently, I’ve been catching up on older stories and I think I’ll continue with a mix of classic and new books.

Video games are also an important consideration.  There are quite a few classic games I’ve been wanting to play and I now have a PS4 that needs attention too. For 2015 I hope to finish Oblivion once and for all and then tour through the Dragon Age series of games. I would also love to complete a nethack wizard ascension and learn to play Angband.

Finally, I consider writing important to me and I’m going to make more time for it, both here on my blog and elsewhere. I’m looking forward to the rest of 2015 and sharing what I’m doing with graphics, music, books and video games.

Ludum Dare #32 Results!

A few weeks ago I participated in the Ludum Dare #32 game jam.  Tomorrow, the game that was created, was my sixth Ludum Dare entry and my first with a team in the 72-hour relaxed version of the jam competition.  Here’s how it turned out!

Ludum Dare #32 Results

I am exceptionally happy with these results. Considering the competition, being ranked in two categories with threes is a nice bonus and also a new record (Tiny’s Adventure in TV Land, my previous solo Ludum Dare #31 game, only received one three).  I also broke a new blog length record writing up the postmortem.

Between now and the next Ludum Dare I have quite a bit of work to do. It feels good to know I’m advancing as a game developer while doing it.

DrupalCon Los Angeles

DrupalCon Los Angeles 2015Last week I attended my very first DrupalCon in Los Angeles. I had a great time, met many awesome people, and I’m looking forward to attending future DrupalCons and camps.

One of the first events I attended was the Women in Drupal gathering at the Engine Company No. 28. The entire restaurant was reserved for it and the turnout was extremely encouraging. The meetings there helped me think about the direction I could take with my career regarding new technology, training, and education.

On Wednesday I presented CI for CSS: Creating a Visual Regression Testing Workflow. This was the first presentation I’ve given in over five years and I was honored to be selected. Everyone who attended seemed to have a good time and I enjoyed sharing what I’ve learned about visual regression testing through websites and video games.

The best part of the convention for me were the coding sprints.  I’ve participated in jams and hackathons before, for example the Ludum Dare that’s held three times a year, but these sprints were larger, coordinated, and everyone was working towards the same goal of improving Drupal and the Drupal ecosystem. I’m looking forward to contributing to these over the next few years.

 

Tomorrow: A Ludum Dare #32 Postmortem

TomorrowLast weekend I participated in Ludum Dare’s 32nd game jam. The announced theme was  “an unconventional weapon” which is fantastic and set the mood for the entire event.  I got further than I ever have in video game development and I felt great about my jam entry.

My game is called Tomorrow and it offers the player a chance to role-play a surveillance drone in a near-future San Francisco cityscape. Flying from building to building, the player must visit as many windows as possible as the game scrolls and the speed increases.  The city sunsets into oblivion if the player misses too many windows.

The initial story idea behind the game, developed with a friend, involved social issues and visiting city locations to meet people and attend events. The more the player socialized the greater the variation of responses they could face, and the fame component was intended to be the unconventional weapon. It was a hard concept to realize, and after getting stuck early on (including a short stint where the game could have been about a rubber chicken), I decided to develop the technical mechanics first and worry about the rest later.

Structurally, this jam was an also experiment for me on a few levels. I discovered a few weeks ago during the mini Ludum Dare that I really enjoyed working with different art styles that are challenging to produce during the 48-hour compo. I also missed working with a team. With all of this in mind, I entered Ludum Dare’s relaxed 72-hour jam that allows for teamwork and the use of assets created prior to the competition. A friend volunteered to produce the game’s music and help with design ideas, and I could use OpenGameArt.org for the graphics.

The engineering and software development portion of the jam went exceedingly well. For the past year I’d wanted to make a responsive game with mobile potential in JavaScript and even blogged about this here as a goal.  My previous games relied heavily on DOM/canvas and manual effects rendering with crafty.js, so switching to the Phaser framework freed me from the underlying technology. Phaser also allowed me to use a more sophisticated physics engine (it supports 4!) and to prototype more rapidly.

Phaser was also incredibly easy to learn. This was my first game produced with the framework, and I was literally cramming through tutorials the Friday night the jam started. Phaser’s community support forums and set of working demo games got me up to speed in record time and there were almost no technical blockers while developing the game. I highly recommend Phaser and I intend to use it to produce future games.

Thanks to Phaser, development proceeded rapidly, and by Saturday afternoon I had the player scrolling through a cityscape and…not much else. The next step was integrating the storyline. Since the game took place in a city I decided the player would fly through it and I used a flying rocketship as placeholder art. At this point I was hoping to finish the game that night, so creating events for the player to visit seemed too time consuming. I decided to use the windows of the city to represent locations and overlay tiles that could flash with a special effect.

I also needed a lose condition. Time, which I didn’t posess much of myself at that point, seemed to be the fastest way to do this. I made it a requirement that the player visit a certain number of windows as timed intervals increased. I wanted the game to be immersive, so I used the color of the sky as a status monitor to keep the player focused on the city.

At this point the game was looking good enough to benefit from an extra day of polish, so I decided to continue development through Sunday. I still needed an unconventional weapon (time perhaps?) and the game was far from the initial story premise. I received feedback from another friend that the game is really about drone surveillance because why else would a robot fly around and visit city windows? Hey, they had a point! And so it was.

The music production added a great amount of value to the drone premise too. Cruising around the city felt like crusing, and the soundtrack helped place the game’s setting closer to the near-future.

The final wrap-up involved quickly producing a title and credits screen to meet art licensing requirements and the game was submitted early Monday morning. It felt odd to have produced a game where the player is essentially rewarded for being a drone and doing drone-like things, but this is largely because of the time-crunch during development and the lack of a concrete ending. I think the drone mechanic has potential beyond this and I would love to use it as a storytelling mechanism for a longer anti-drone game.

Here’s a summary of what went right:

  • Entering the extended 72-hour jam. This gave me time to relax and have more fun with the entry. Being able to use OpenGameArt.org during the design process upped what I was able to do and had a hugely positive effect on my enthusiasm.  It was also more fun working in a team.
  • Hosting the event away from home. Being in another space improved my focus, and it was refreshing to come home and do something else away from the game during the jam.
  • Developing the game with the phaser.io. The framework absolutely delivered and the tutorials and support forums were spot on every time I needed guidance.
  • Making a responsive game with mobile potential. I had wanted this functionality for awhile and Phaser made it easy to deliver.

There was also room for improvement:

  • Pacing myself! Being able to use external assets combined with extra time was a recipe for enthusiasm as the game became polished and took shape. It also made it easier to overextend myself. This is the opposite of what I wanted as I’ve been pretty good about taking care of myself during the 48-hour version of the competition. I felt 16 years old again while jamming, but the post-jam exhaustion is a reminder I’m no longer 16 or even 26.
  • Not using all of the available time over four days. I might have been able to relax a bit more by extending my jam time into Monday afternoon and I think this would have helped with the end-game delivery and overall polish too.

For the next Ludum Dare, which should take place sometime in August, I’m definately going enter the 72-hour jam and pace myself accordingly. Phaser.io is a dream to work with, and I’m going to learn all the things about it over the next few months. I’m also thinking about partnering with an artist ahead of the competition so I can develop a jam game with custom art as well as sound. It will be interesting to see how this works out!

Finally, I’m incredibly happy how everything worked out overall. I feel significantly closer to approaching game development goals that I hope to reach over the next couple years. I’m very much looking forward to creating more games in 2015, both inside and outside of jams.

Ludum Dare #32 Thoughts

Ludum Dare #32 starts tonight and it was to be my most prepared Ludum Dare of all Ludum Dares. I had specific goals to be tracked over the previous few months, including learning how to make better music with garage band on my mac and upping my skills with open source illustration programs.

There was progress. I discovered InkScape, a free multi-platform vector graphics editor that completely replaces anything I might ever want to do with Adobe Illustrator.  Sculptris, a 3d digital sculpting tool, was also fun to play around with and could yield some interesting sprites or meshes if I produce a 3d game at some point.

There was incremental sideways progress on a few unexpected things too. I made a game for a mini Ludum Dare, which cemented my desire to get away from crafty.js and do something cool with phaser.js. This game was also my first introduction to OpenGameArt.org and the agonizing decisions that come with designing a game around the best assets I could find. I also worked on Pantheon’s Ride the Lightning game, produced with crafty.js, which was satisfying to see so many people play on April 1st.

My musical progress fared less well. I composed a few loops which sounded good enough for jam purposes, but I need to be composing every day for at least a few months to get where I want to be with the audio.  For this upcoming jam I plan to stick to generated music and bleeps or incredibly simple garage band loops if I can pull off the composition without running out of time.

I think my targets were reasonable and my progress and time management could have been a bit better. For the next few months following this Ludum Dare I’d like to have more concrete and specific goals regarding audio and visual game development.  Recently, I’ve been getting into a system called OKR, short for Objectives and Key Results,  and I think using it to help plan goal posts and milestones following this Ludum Dare could help me move forward with game development.

I’ve also thought quite a lot about goals themselves and how I feel about goal management.  It feels good to achieve goals, and I love game jams because they time box my work and force me to produce something tangible I can look at in exchange for that time. Goals themselves are less concrete, even specific ones, and I think that in a way they can become an unrealized debt to oneself.  I’m hoping the OKR system improves how I feel about them, and how I feel about working towards a goal over time while not necessarily producing something concrete from it, or at least not right away.

My goals for this weekend will be pretty simple. I have a lot of other work I need to do on top of the jam, so I’m going to do the best I can with what I have going into it. On Friday I’m going to look over phaser.js tutorials and design something conceptually fun that I hopefully won’t trip up on during the implementation. On Saturday I’ll write the code and release it and on Sunday I’ll have to cut things short and move on to another project.

I do have a self-improvement plan for the judging phase. The Ludum Dare 48 hour compo requires projects to be open sourced during the submission process. In the weeks after the jam I’m going to look specifically for phaser.js games and try to understand the implementations. I also have a friend who uses Unity and I plan to acquire at least novice level skills with the framework in order to run projects and examine workflows.  I also plan to rate as many games as I can, and I might even try streaming some on Twitch depending on the bandwidth.

After the judging closes, it will be back to another iteration of what I could have done better along with looking ahead towards any game I might make for next month’s one game a month jam. I don’t think I’m going to incorporate games themselves into my OKR’s, since I’m using the OKR system to make otherwise intangible goals more concrete.  I’m looking forward to seeing how the goals themselves progress in the system and I’ll share the progress here.

Hands-free pong: My Mini LD #58 Game

Hands-free Wave Pong!A couple of weeks ago I created an entirely hands-free pong game demo in JavaScript for the Mini Ludum Dare #58.  The theme of this game development jam was “Pong” and I gave it a new twist.

You can check out the game here.  Note you’ll need a mac laptop running chrome to play the game demo and you’ll also need to give the browser access to your microphone when you visit the page.

I first got the idea for a hands-free game after seeing implementations by Daniel Rapp that used the doppler effect to track hand motion. His work seemed like the perfect basis for a game, and what’s remarkable about it is that it works so well. I’ve left the game on by accident and watched it continue to track hand motions from someone sitting across from me after I pulled back my chair.

I put this demo together in a few hours for the Mini Ludum Dare game jam and I’d like to expand on the concept by making a more involved game in the future. From swatting flies to leveling a space ship, there’s enough here with this mechanic to be quite entertaining.