Gaming and Game Dev on Linux

Linux has become my operating system of choice. Not only for general computing, web surfing, and pet projects, but also high-end gaming and game development, including my work as lead game designer and programmer at Golden Drake Studios. I mean, look, I’ll admit it: I still boot up Microsoft Windows now and then since there’s a (rapidly shrinking) number of games I enjoy that work better, or more conveniently, in that environment. Also, credit where credit’s due: I really like the overall look and feel of Windows 10 and it’s nice that Microsoft now directly supports a Linux subsystem. Nonetheless, customization is limited and certain “features,” such as forced updates, provide regular reminders that Windows doesn’t fully respect user freedom. Similarly, though I’m grateful to Apple for facilitating my childhood exposure to computers and cannot deny their products are appealing in some ways, they represent an even more draconian environment: far from full freedom despite macOS being built on an open-source, Unix-like foundation named Darwin.

So, because I love the ideals of free software (with minor caveats) and want to promote them, I’d like to share a few simple observations and opinions about the current state of gaming and game development on Linux. For my fellow free software enthusiasts, I hope this will spark some interesting conversation and debate. For users of Windows and macOS, I hope this will increase awareness and consideration of Linux as a viable and potentially liberating alternative OS, even among those for whom gaming is a priority.

Gaming

Let’s get right to the big question: What can Linux offer hardcore gamers?

More than ever before, developers are creating native Linux (and macOS) builds of their PC games. This is also true of more general applications, such as Discord and Spotify. Windows is still the primary market, so not everyone ports to other systems, but that’s starting to seem like the exception rather than the rule. You can follow these links to browse extensive lists of Linux games available through a few popular portals: Steam, GOG.com, and the indie-focused itch.io. Oh, and for all you Minecraft addicts out there, there’s a Linux installer available as well as a free and open source clone called Minetest.

Now, what about those Windows-only games? Well, for starters, many Windows programs actually run extremely well on Linux with just a little help from a “compatibility layer” such as Wine. I recommend installing Lutris and/or PlayOnLinux as their communities have created install scripts to help set up Wine configurations for a wide array of games and other software. Now, I must admit, installing a Windows game this way doesn’t always go smoothly, and even if everything runs perfectly at first, if the game continues receiving updates there’s a small chance an update could eventually break your Wine setup. However, in my experience it usually works beautifully, including installation of the Windows version of Steam followed by installation of multiple Steam games within that same PlayOnLinux setup.

Actually, that last example involving Steam is, I’m happy to say, now superfluous: on August 21, 2018, Valve—the company behind Steam and a strong supporter of Linux gaming—announced the release of their own Wine-based compatibility tool: Proton. With this tool enabled, the Linux version of Steam can now directly install a growing list of Windows games that are officially confirmed as Proton-compatible. You can also enable installation of unconfirmed games, many of which run wonderfully (though some will require a little tweaking). Many Linux gamers eagerly tested this new feature and started compiling their own unofficial lists of compatible and semi-compatible games as well as advice for how to get certain games to perform more effectively. Currently, the best source for this accumulated knowledge seems to be ProtonDB where you can search for any game of interest and see what people have reported (combined with details about their hardware, graphics drivers, etc.). I’m impressed that some folks are even having success with notoriously Linux-averse games like Fallout 4. In fact, as of this writing there’s at least one person who’s had moderate success running Fallout 4 VR on Linux! And yes, the outlook is even better for Skyrim and Skyrim VR.

Now that I’ve mentioned a couple of VR games, I have a confession to make: for now, virtual reality tends to be a smoother experience on Windows than on Linux. Well, I should qualify that: I’m speaking primarily of apps associated with SteamVR and the HTC Vive (I don’t know as much about other VR ecosystems). Given Valve’s apparent commitment to elevating Linux as a gaming platform, I expect SteamVR performance under Linux to improve greatly in the years ahead, but until that happens, as the proud owner of a (refurbished) HTC Vive, this will continue to be my primary reason for dual-booting Windows. In any case, if you’re interested in using SteamVR on Linux, either for fun or development, you’ll want to read the release notes and known issues.

Let’s shift gears and forget about high-end graphics for a minute. What if you just want a simple diversion now and then? Or perhaps, like me, you enjoy the retro aesthetics of older (and even downright ancient) games? If so, Linux is a treasure trove of options! Here’s a small sampling of the free and open source games directly available through Linux repositories:

In addition, Linux can obviously provide access to browser games as well as open source emulators of several nostalgia-inducing “classic” systems: DOS, Macintosh, Commodore 64, you name it. Going beyond mere emulation, porting, etc., there are also projects out there breathing new life and new possibilities into some of the best games of yesteryear. Here are a few I recommend checking out (assuming you have access to the original game data they utilize):

In everything I’ve discussed above and will discuss below, your mileage may vary depending on your hardware, your overall Linux environment (more on this later), and the specific software you’re trying to run. Just remember: if you hit a roadblock, you’ll likely find someone who can help you online (or offline if you’re into that whole “talking to people face-to-face” thing and happen to know me or another Linux advocate) and it might even turn out to be a valuable learning experience.

Game Development

Now then, how about game developers? What does Linux offer them?

As a Unity (a.k.a., Unity3D) enthusiast, I’m happy to say it’s now just as convenient to use and manage the Unity game development platform on Linux as on Windows or macOS thanks to the Unity Hub (Linux build direct link here). Through the hub, you can install any of the latest versions of the Unity Editor as well as tutorial projects and other resources. As for writing the C# code for Unity projects, the most popular option on Linux now appears to be Microsoft’s VS Code (yes, Microsoft has been directly and indirectly supporting Linux apps for a while now, and sure, if you buy me a beer I’ll be happy to listen to all your conspiracy theories on this topic). I’m quite impressed by VS Code and use it extensively, but I also occasionally go back to Atom (which is technically also a Microsoft product now that they’ve purchased GitHub, but oh well…long live the Octocat!) and, heck, you can use vim or whatever editor you prefer.

Because I grew up playing some of the best JRPGs of all time, I also enjoy tinkering with RPG Maker now and then. It wasn’t too difficult to get some of their earlier products running on Linux, but their latest product, RPG Maker MV, actually has a native Linux build available through Steam. So, if this suits your style, what are you waiting for? Go make that Final Fantasy clone you’ve been dreaming of all these years!

Oh, and yes, my friend, the Unreal Engine is also available on Linux. I haven’t worked with that engine yet, so I can’t offer any feedback or advice, but if you want to install and run this powerful beast, here’s your starting point.

There are also many excellent free and open source game engines, frameworks, and libraries out there, such as Godot, Torque3D, Armory3D, libGDX, Allegro, cocos2d-x, the early id Tech engines, gamecake, LÖVE, and so forth. Just want to play around with Python? Check out Pygame, Pyglet, or Panda3D. Feeling bold and want to build an Android game from scratch? There’s a Linux build of Android Studio waiting for you. A lot depends on how much programming you want to do as well as what type of game you want to make, for what purpose, and targeting which platform(s), but overall, if you want a versatile, full-featured game engine that’s truly free in both senses of the term, I recommend Godot. It could be the one you’ve been waiting for!

Here are some more free and open source programs I like that might come in handy:

Switching to Linux

So, if you’re a Windows or macOS user, but the idea of a free and open source OS interests you, should you make the switch? Maybe, under two conditions:

  1. You’ve test-driven a specific distribution (“distro” or “flavor”) of Linux long enough to be sure you like it and it fits well with your workflow.
  2. You accept the possibility of occasional—and perhaps time-consuming—frustrations early on as you learn the ins and outs of your new system, how to customize its appearance and behavior, and how to fix any issues that pop up.

The fact that Linux is available in many different flavors is part of what makes it fun and interesting and speaks to the profound level of freedom it enables. I recommend perusing the DistroWatch list of ten major distros, then picking two or three (or more) that catch your eye and trying them out as virtual machines via VirtualBox or VMware (preferably the latter if you want to test high-end games). I’ve test-driven a lot of distros over the years, along with several of the different desktop environments that tend to get packaged with them. They all have pros and cons, so I don’t want to go too far in sharing my own biases, but for gamers and developers considering a leap to Linux, it’s worth bearing in mind that Ubuntu and Ubuntu-based distros have the most widespread popularity and, for that reason, also tend to receive the most attention and troubleshooting when it comes to developing games for, or making games compatible with, Linux (if anyone can direct me to countervailing evidence on this or any other assertion I make, I would appreciate that). They also tend to be quite user- and newcomer-friendly and, as is the case for any major distro, there’s an abundance of information readily available online for any questions or issues that may arise. For these reasons, although I’m occasionally tempted by other distros—Manjaro, Fedora, openSUSE, and good ol’ Debian (on which Ubuntu is based)—I generally use Ubuntu or an Ubuntu-based distro as my daily driver.

Having said all that, no distro is “perfect” and any major distro that appeals to you will probably be fine. Just be aware that some might ask a bit more of you in terms of time spent researching and problem-solving. I recommend making a list of games, development tools, and other software that are a priority for you and doing a little research: For current or recent builds of this specific distro and its accompanying desktop environment, have people encountered serious issues when trying to run this software (either as an actual Linux build of that software or with help from a compatibility layer as discussed above)? The answer may be yes, just as it can be for Windows or macOS, so the next question is: Were they able to resolve those issues in a timely manner, or at all? If you see evidence that an insurmountable or excessively time-consuming issue is likely, you may want to see if another distro (or desktop environment) would serve you better. Alternatively, if you’re currently using Windows or macOS and know that the software in question works well under that OS, you may want to set up a dual-boot situation. In many cases, running that OS as a virtual machine within Linux is a great solution as it allows you to run both operating systems at the same time. Again, thorough research (and backing-up of data) is recommended before making any commitments. Speaking of which, you’ll also want to investigate whether your specific laptop or desktop hardware is likely to “play well” with the distro you’re considering.

If you’re curious, yes, I have settled on a personal Ubuntu-based favorite: Linux Mint, with Cinnamon as the desktop environment. In early 2018 I tried going back to default Ubuntu, but though I can definitely see why some people love the GNOME 3 environment, I’m not a huge fan. I turned instead to Xubuntu for several months because I kinda-sorta like XFCE, but that desktop environment really is lagging behind in terms of quick and easy integration with all the features of modern hardware as well as the overall “feel” and functionality most users now expect. I mean, sure, it offers an impressive array of customization options, but those only go so far. You can, as I did, write your own shell scripts to make up for some of its limitations, but that takes time away from other things I’d rather focus on. I also noticed a slight uptick in software issues and, as these annoyances accumulated, I finally asked myself: “Why am I spending some of my precious time struggling and toying around with this semi-archaic system when I could be using a distro (and desktop environment) that’s already 95% the way I want it right after install, has a better software manager and other unique and useful apps and features built-in, and simply looks and feels fantastic?” These sentiments are highly subjective, of course, but in any case, I returned to Linux Mint a couple months ago and am extremely glad I did. It works well with any hardware I’ve ever thrown at it, is extremely user-friendly (and beginner-friendly, especially if you’re accustomed to a Windows-style GUI), and keeps getting better without ever changing “too much.” I highly recommend it.

That sums up everything I wanted to share for now. Please let me know what you think. Have I left out anything crucial? Do you feel I overstated (or understated) anything? I’d love to hear your feedback in the comments below, on Twitter, or elsewhere. In the meantime, Happy Holidays and happy gaming!

Back in Seattle

It’s been several months since my last two blog posts, one of which detailed my New Year’s resolutions while the other accurately predicted an abundance of chaotic energy and change throughout this Year of the Fire Monkey. Perhaps I can blame the Fire Monkey for my less than stellar job following through on some of my 2016 resolutions, but I have accomplished at least one major goal: I am now once again living in the beautiful, coffee-loving, legal-pot-smoking tech hub of Seattle! My path here was quite circuitous, however, so I’ve decided to share some highlights from that journey followed by a brief discussion of the work I’m engaged in right now.

From Utah to Arkansas

It was back in March that I first bid another fond farewell to my home state of Utah. I had been working part-time as a hiking guide for the Green Valley Spa while devoting the rest of my time to various software development projects, most notably the establishment of my own game development company: Golden Drake Studios. While looking around for additional programming work, Insight Global reached out with a contract to work as a software engineer for Hewlett Packard Enterprise (HPE) at their offices in Conway, Arkansas. The price was right and the work sounded interesting, so I accepted.

HPE (Conway, AR)
HPE’s office building in Conway, AR.

My trek to Arkansas was hasty, but pleasant. I chose to go by car, not only to carry more things, but also to see some parts of the United States up close and personal that I’d never seen with my own eyes before. Setting out rather late, the sun was already low in the sky as I crossed from Utah into Arizona, passing through the oddly-named and mostly-polygamist community of Colorado City. The sky darkened as I drove on through the Kaibab Indian Reservation. I enjoyed my last glimpses of the gorgeous, rocky plateaus typical of southern Utah and northern Arizona, then night fell as I ascended into the forested regions near Jacob Lake, a small community named after one of my most fascinating recent ancestors: Jacob Hamblin. For a time, the moon had yet to rise and I was far from any city, so I was treated to awe-inspiring glimpses of the Milky Way stretching across the sky. Later, I crossed the vast, moonlit expanse of the Navajo Nation before finally stopping for a few precious hours of sleep at a cheap hotel in Gallup, New Mexico.

Resuming my journey the next morning, I was grateful to once again see my surroundings more clearly. The austere beauty of New Mexico was reminiscent of Utah and Arizona, though definitely possessing its own unique flavor. As a die-hard fan of the Breaking Bad television series, I also enjoyed making a brief stop in Albuquerque.

Breaking Bad
Promotional image for Breaking Bad, which was set and filmed primarily in Albuquerque, NM.

I didn’t have time for a proper tour, though, so I pressed on, eventually entering the first of three states I’d never set foot in before this trip: Texas. I’d heard time and again that everything’s bigger in Texas, and now I was forced to agree. The sudden change to an almost completely flat and unbroken landscape was awe-inspiring, as were the frequent rows of enormous wind turbines slowly turning and forming interesting patterns, like giant dancers performing for the wonder and amusement of passers-by. Darkness fell by the time I reached Oklahoma, affording me the opportunity to glimpse Oklahoma City’s colorful nightscape and then to be pleasantly surprised by thick, moonlit clouds of mist as I reached Eufaula Lake and beyond. This more humid and verdant landscape continued on into Arkansas where I made it close to Conway before finally stopping again for some much needed rest.

The following morning I drove up to HPE’s impressive office building for my first day on the new job. As part of my introductory tour, I had the pleasure of meeting a diverse set of interesting coworkers, including Alan Watson, one of the founders of Ozark Softscape: the studio that created M.U.L.E. and a handful of other influential video games back in its heyday.

Coworkers (Conway, AR)
Some of the interesting folks I worked with at HPE in Conway, AR.

There were ping pong tables, weight rooms, and other facilities now typical of large tech offices, including the oddly named Toad Suck Cafe. Apparently, several spots along the Arkansas River acquired the “Toad Suck” nickname back when steamboat crewmen spent their leisure time “sucking on bottles (of alcohol) till they swelled up like toads.” In fact, later on, around the end of April, I had the pleasure of sampling some live music and local cuisine (and a little alcohol) during Conway’s 35th annual Toad Suck Daze festival.

Toad Suck Daze (Arkansas)
A live band performs as part of the 2016 Toad Suck Daze festivities in Conway, AR.

Truth be told, I’d never given much thought to visiting Arkansas before, but once I was there I was blown away by the simple beauty of “the Natural State” and the friendliness (generally speaking, of course) of her people. I found southern accents, southern cuisine, and southern hospitality quite agreeable and loved driving through forests and along country roads where I could look out across green fields accented here and there by wildflowers and old, picturesque houses. Also, the city of Conway itself was a nice place to live, in my opinion. There were lots of great places to eat, shop, and hang out and I loved the abundance of trees and lovely buildings in and around the University of Central Arkansas. Speaking of UCA, Conway is also home to two other institutions of higher learning, earning it the nickname “City of Colleges.”

As for my work, I was one of many programmers responsible for creating, maintaining, and improving code that handles healthcare data. In my case, this meant writing C code with embedded SQL, along with the occasional Unix shell script. It was a fantastic experience and, for the most part, an excellent fit for my skill set. Sadly, however, it did not evolve into a long-term position like I originally hoped, so I soon found myself back on the job market and contemplating another move.

From Arkansas to Seattle

After evaluating my limited options in the Little Rock area, I decided to go forward with a plan I’d already had in the back of my head for a long time: to return to Seattle, establish a new social and professional niche for myself there, and put down roots among the tall evergreens and misty mountains of the Pacific Northwest. As such, I was back on the road again, this time passing through eastern and southern Texas so I could tour the National Videogame Museum in Frisco and spend a little time with one of my sisters and her family in San Antonio.

National Videogame Museum (Frisco, TX)
The console timeline section of the National Videogame Museum in Frisco, TX.

After catching up on sleep and exploring the Alamo and a few other local sights, I continued west through lands of scarce water and even scarcer cellphone reception before spending a night in El Paso along the US-Mexico border.

Mission San Jose
Mission San José in San Antonio, TX.

My path then took me north through the beautiful wastelands of southern New Mexico, over the gorgeous mountains of Gila National Forest, and across the golden fields, deserts, and mountains of Arizona before finally landing me on my parents’ doorstep in St. George, Utah, in the middle of the night.

I spent some time with my parents and then with another sister and her family in Cedar City before heading north all the way to the rolling hills of southern Idaho. A tire blew out on me just before sunset, delaying my progress for a few hours, but I’m grateful to say that was the only car trouble I had throughout either of my major road trips this year. In any case, after getting the tire replaced, I kept driving until I absolutely needed to stop for a little sleep, and then, “ere break of day,” I was back on the road passing through the greenery of Oregon and on into Washington. Upon reaching the mist-shrouded mountains of Snoqualmie Pass, I couldn’t help but start singing a beloved dwarven song from Tolkien’s The Hobbit.

I finally arrived in the Seattle area about an hour later and was grateful to spend the next several days with my brother and his family as I got situated. Having survived my journey back to the PNW’s “misty mountains cold,” my next task was “to seek the pale enchanted gold,” i.e., to land a good day job. Seattle has no shortage of tech companies, so I sent resumes to several of these along with a few places that could make use of my fluency in Mandarin Chinese. Much to my delight, I soon received an offer from a contracting company associated with Nintendo of America, so I now work for Nintendo by day and my own company, Golden Drake Studios, by night.

Nintendo of America
Nintendo of America’s headquarters in Redmond, WA.

The Game Dev Must Go On

Throughout all the transitions I’ve experienced this year, and in spite of the Fire Monkey‘s appetite for chaos, I’ve done my best to stay focused and positive and continue spending time on indie game development and other projects of interest to me. I’m definitely behind schedule and have a long way to go in terms of my overarching personal and professional goals, but nonetheless it feels great to reflect on what I’ve already achieved: I am now directly assisting Nintendo in the production of their excellent games while also gradually bringing my own game design visions to life. And all the while I get to enjoy the abundant natural and cultural beauty the PNW has to offer!

The Puget Sound and Mount Rainier
Looking across the Puget Sound from Vashon, WA, toward a cloud-capped Mount Rainier.

If all goes well, I should finally have my first “real” game on the market within the next year or so. I look forward to sharing it with you, along with occasional highlights from the game development process and other things going on in my life. In the meantime, I wish you the best of luck in whatever goals you’re pursuing. No, I take that back. To paraphrase “The Fire,” one of my favorite songs by The Roots, “I don’t say good luck: I say don’t give up.”

Year of the Fire Monkey

2016: Year of the Monkey

Happy Lunar New Year (新年快樂 xin nian kuai le)! For followers of the Chinese lunisolar calendar, today is the first day of yet another Year of the Monkey (猴年 hou nian). More specifically, it’s a Year of the Fire Monkey (火猴年 huo hou nian), which, like all element-animal pairs, occurs once every sixty years: twelve zodiac signs times five elements equals sixty variations.

Infernape
Behold, the fearsome Fire Monkey! Actually, this is a realistic rendering of the Pokemon Infernape, by Heri-Shinato. Also, apes are technically distinct from monkeys. But hey, close enough!

Just think about it. The expansive, chaotic energy of flame coupled with the clever yet reckless attributes of the monkey? Sounds like we’re in for a wild ride! At the risk of seeming culturally insensitive, I suggest we follow the sage advice of Short Round from Indiana Jones and the Temple of Doom: “Hold on to your potatoes!”

Incidentally, I was born in a previous Year of the Monkey: the Year of the Metal Monkey (金猴年 jin hou nian), which conjures up an entirely different image!

Metal Monkey
Metal Monkey holding a Wooden Rat, by Mike Rigby.

This is the third Year of the Monkey since my birth, hence I’ll be turning 12 * 3 = 36 years old later this year. Kind of fun to think of one’s life in terms of multiples of 12 rather than decades. Anyway, although I don’t actually believe in any form of astrology, here, for our mutual amusement, are some traits supposedly associated with Monkey Year births:

  • Positive traits: Intelligent, dignified, optimistic, romantic, sociable, quick-witted, confident, agile, curious, gregarious.
  • Negative traits: Egotistical, selfish, deceptive, reckless, suspicious, manipulative, restless.
  • Health risks: Circulatory and heart troubles, diabetes, arthritis, anxiety, obsessive-compulsive disorder, antisocial personality disorder, bipolar disorder, narcissistic personality disorder.

As is the case with Western astrology, it’s easy to find some words that ring true and others that don’t within these lengthy lists. But again, it’s all good clean fun. I’ve also found it interesting to investigate the attributes associated with both metal and fire in Taoist thought. For starters, metal (金 jin) is associated with yin (陰) of the yin-yang duality, the planet Venus, autumn, dry weather, the west, old age, decline, the color white, the White Tiger (西方白虎 xi fang bai hu), inward motion, contracting energy, and the following:

  • Traits: Firmness, rigidity, stability, ambition, forcefulness, self-reliance, wisdom, patience, willpower, organization, stability, etc.
  • Health: The lungs, large intestine, nose, skin, and emotions surrounding both courage and grief.

Metal also happens to be the element most strongly associated with the monkey in Chinese astrology, so perhaps I should be especially monkey-like? In any case, let’s contrast this with fire (火 huo), which is associated with yang (陽), the planet Mars, summer, hot weather, the south, daylight, prosperity, the color red (extremely lucky in Chinese culture), the Vermillion Bird (南方朱雀 nan fang zhu que), upward motion, expanding energy, and the following:

  • Traits: Dynamism, strength, persistence, restlessness, enthusiasm, creativity, aggression, impatience, impulsiveness, warmth, heat, and burning.
  • Health: The heart, small intestine, tongue, and emotions surrounding both joy and hatred.

I wish I had more time to elaborate on all this, but midnight approaches and I must conclude this post. As such, I’d like to close by simply wishing all of us a happy and prosperous Year of the Fire Monkey, full of as many of its associated positive traits, and as few of the negative, as possible. My thoughts go out especially to all those affected by the recent earthquake in southern Taiwan: may your sorrows and pains be replaced, in due time, with serenity and peace of mind.

Resolutions for 2016

2016 Fireworks

Throughout these, the first two weeks of 2016, I’ve continued to contemplate what I want to accomplish and where I want to be, both figuratively and literally, by year’s end. I don’t always indulge in the tradition of New Year’s resolutions, but this year I’ve decided not only to write a few goals down, but also to share and discuss them here on my blog. So, without further ado, here is resolution number one:

1. Finish and release Golden Drake Studios‘ first game: Adventures Unending.

Game development projects rarely go smoothly enough to meet their initial deadlines, so this is a lofty goal. Nonetheless, through careful monitoring of weekly and monthly progress, I’m confident in my studio’s ability to see it done!

2. Publish new content, either here or on my company’s blog, at least once a month.

I write a lot, but I’m such a perfectionistic self-editor that I rarely publish anything. This needs to change. From now on, you can look forward to reading my thoughts on technology, game design, and various other topics on a more frequent basis.

3. Relocate to a major city with a thriving tech community, such as Seattle or San Francisco.

It’s been great spending time among family, old friends, and gorgeous desert surroundings back here in my hometown of St. George, Utah, but I always knew this was temporary and I’m ready to move on. Having lived in or visited many parts of North America as well as East/Southeast Asia, it’s been difficult to pinpoint exactly where I might want to put down roots. Each part of our planet has its own unique flavor, its own pros and cons. Naturally, this has led me to also consider the perpetually unrooted life of a digital nomad. In the final analysis, however, I still like the idea of having my own long-term home, so I’ll be looking closely at the Pacific Northwest, the Bay Area, and other scenic tech hubs as I consider where to establish it.

4. Exercise, read, write code, do something artistic, and meditate every day.

This is fairly self-explanatory, if a bit vague. Hiking is my primary form of exercise these days, which is wonderful, but I ought to do a better job of regularly working out as well. I also ought to do more reading, i.e., the actual picking up of books and turning of pages rather than the casual skimming of online articles that has dominated my reading life in recent years. Writing code is already more or less a daily habit for me, so that part shouldn’t be difficult. As for “something artistic,” by this I mean anything from game, level, and quest design to drawing or playing around on the guitar: anything that engages my creative/expressive side. Finally, by “meditation” I simply mean setting aside a little time each day for the healthy practice of breathing deeply and fully relaxing both body and mind.

Colorific Pebble Games

I’m pleased to announce that my three Pebble games—MazeCrawler, SpaceMerc, and PebbleQuest—are now available in color for owners of the new Pebble watch model: Pebble Time!

PebbleQuest, color version, on a white Pebble Time device.
PebbleQuest, color version, on a white Pebble Time device.

The only downside is that the simplicity of the graphics is now more apparent than ever. Ideally, I’d like to overhaul the visuals completely—especially considering the increased memory capacity and support for transparency provided by Pebble Time devices—but I must confess that would require more time and effort than I’m willing to invest at this point. These apps were fun to build and are fun to play (if I may say so myself), but my heart has moved on to other projects, particularly those associated with my new indie game development company: Golden Drake Studios.

So, what about owners of the original black-and-white Pebbles? Do I have anything new to offer them? Yes, as a matter of fact, I do. The following general improvements have been implemented in both the color versions and black-and-white versions of my games:

  • All game data, not just player data, are now saved between sessions in MazeCrawler and SpaceMerc (just as always has been the case in PebbleQuest).
  • In SpaceMerc, the player’s starting stats have been adjusted, the “Damage Vibes” setting is now “On” by default, and a bug wherein moving backwards away from an exit would cause the player to exit the current mission has been fixed.
  • In PebbleQuest, the effects of primary attributes have been adjusted, the base fatigue rate has been lowered, weapons and armor are now more beneficial, and a robe, shield, or suit of armor infused with a Pebble of Shadow now provides a slight bonus to physical defense in addition to spell absorption (which itself now involves a chance of absorbing enemy spells not only as energy, but also as health).

As always, I welcome your feedback along with your perusal and use (with attribution) of each of my games’ source code via GitHub:

That’s all for now. In closing, I offer my sincere thanks to everyone who’s downloaded, played, critiqued, praised, feigned interest in, or otherwise interacted with these, my humble experiments in smartwatch game development. Cheers!

PebbleQuest: 25kB of Awesome

PebbleQuest, a 3D fantasy roleplaying game developed for the original black-and-white Pebble watch, was released on December 25, 2014, weighing in at 25,020 bytes: 25kB or 24.4KiB. The concept for the game germinated in 2013 as I first started reading about the Pebble and other smartwatches. I was studying mobile game development at the time and the thought of creating an RPG for a wristwatch intrigued me. Before long I found myself ordering my own Pebble, typing up PebbleQuest‘s design document, and answering Team Pebble’s clarion call to “make awesome happen!”

A mage in the PebbleQuest RPG as seen on a red Pebble watch.
A mage observes you gravely in the PebbleQuest RPG.

I can’t say exactly how many hours went into PebbleQuest‘s development, but it was a true labor of love, consuming much of my spare time over the course of about fifteen months. Starting from scratch and armed only with the C programming language, the Pebble SDK, and the CloudPebble IDE, it took about two months to complete the basic foundation: a simplistic 3D environment navigable via the Pebble’s three right-side buttons, released in late 2013 under the title MazeCrawler.

As I started adding RPG elements, it soon became apparent that memory was going to be an issue. If a Pebble app’s size and memory usage cross a certain threshold, the app may still install successfully but will crash at runtime, either just after launching or after one too many allocations of dynamic memory (such crashes can also be caused by memory mismanagement, of course, so that possibility must be ruled out before concluding you’ve surpassed the memory limit). I was thus faced with the hard necessity of significantly scaling back my design. A bit flustered, I set PebbleQuest aside and spent the next few months on a slightly simpler game: SpaceMerc, a sci-fi first-person shooter released on March 23, 2014, as a last-minute entry into the 2014 Pebble App Challenge.

After that, my attention strayed somewhat to other projects, but by late September my spare time was once again dedicated almost entirely to PebbleQuest. Perusing my code with fresh eyes, I discovered several more ways to save memory, allowing gradual incorporation of, if not everything, then at least all the most essential elements from my original design. Overjoyed to see the game finally approaching my initial vision, I continued testing, fine-tuning, and polishing it until my self-imposed absolute deadline: Christmas morning.

Without further ado, I’d like to share a few details regarding PebbleQuest‘s design and development, my sources of inspiration, and the techniques and trade-offs used to provide a quality action-RPG experience within the memory constraints and other limitations of this unorthodox gaming platform. I’ll then conclude with some thoughts on the future of smartwatch gaming. If instead you’d rather just see basic information about the game and how to play it, head to the official PebbleQuest page.

Working Magic with Memory

Readers of my SpaceMerc postmortem will recall repeated assertions of “I couldn’t do this” and “I had to drop that” due to memory concerns, but it turns out I should have been more optimistic. I have since discovered several more strategies for reducing app size without sacrificing much, if any, content and I’m sure many more would have been found if only I had more time to experiment or had greater expertise with the C language.

For my fellow smartwatch app developers, I present a handful of memory-saving tips I picked up while working on SpaceMerc and PebbleQuest, some of which may be context- or compiler-dependent:

  • Unless you have a strong design-based reason for doing so, don’t reinvent features already present in the Pebble SDK. For example, use provided fonts rather than custom fonts, a MenuLayer rather than your own custom-designed menu, etc.
  • As much as possible, use integers rather than floating point numbers, and use int8_t or int16_t rather than int32_t or the generic int type. Also, where constants are concerned, bear in mind that powers of two (1, 2, 4, 8, 16, 32, etc.) can often be handled more optimally than other values. For example, rand() % 10 consumes slightly more memory (eight bytes more, to be precise) than rand() % 8. Finally, if you’re feeling bold, consider delving into the world of bit manipulation.
  • Avoid using your own typedef-defined variable types. Having said that, defining a struct might still be a good idea for some tasks, at least for the sake of convenience and readability, but keep them to a minimum, read this tip for reducing struct size, and ensure a struct‘s size doesn’t exceed 256 bytes if you plan on saving it to persistent storage through a single call to persist_write_data.
  • If you’re using function calls, array indexing, or pointer dereferencing to get at the same value multiple times within a given function, it may be better to instead get that value once and store it in a local variable, especially if more than one call/index/dereference is required to get at the value.
  • Keep conditional statements to a minimum, but where they can’t be avoided, ifelse is often more memory-efficient than switch, in my experience. Experiment on your own, case-by-case, to be absolutely sure.
  • On that note, keep in mind that array indexing is often an excellent alternative to conditional tests. For example, if you catch yourself using conditional tests on an integer n to determine which string constant to copy to a text field, you can replace those conditionals with a constant array of string constants that can then be indexed by that same integer n.
  • In general, eliminate any function that’s only called once throughout your program. In other words, directly incorporate that function’s code into the function that called it.
  • Speaking of functions, although a void return type is often suitable, there are times when specifying a return value will actually decrease a function’s memory footprint even though that value is never used. This one is a bit mysterious to me, so I recommend experimenting with your own function return types one-by-one.
  • Finally, the most obvious way to save memory: Simplify your design, cutting out any elements that aren’t absolutely necessary. Challenge all your assumptions about what “needs” to be in the game.

One thing to bear in mind: As reduction of memory footprint rises in priority, other software development values, such as the readability and modularity of code, might need to be sacrificed to some extent (as evidenced by my less-than-ideal source code). If you’re not careful, this can make the process of modifying, debugging, and polishing your app more difficult than usual down the road.

Akalabeth Meets Arena: Real-Time Action in a Simplistic 3D World

My vision for PebbleQuest was to create the smartwatch equivalent of an old school action-RPG. I took inspiration from a variety of classics, including two of the earliest RPGs to feature real-time, first-person combat: Ultima Underworld and The Elder Scrolls: Arena.

However, where movement was concerned, I decided early on to go with abrupt 90° turns and simple forward/backward motions more evocative of older classics, such as Dungeon Master or Eye of the Beholder.

Or, going back further, the first-person segments of the Gold Box AD&D games.

Or, going all the way back to the first computer roleplaying game ever published and the precursor to Richard Garriott’s Ultima series, Akalabeth: World of Doom, although once we reach this point I’m happy to say PebbleQuest finally manages to look better and smoother than at least one of its predecessors!

I hasten to note that, although I chose to employ simplistic 3D and abrupt movements, the Pebble device is fully capable of supporting more sophisticated forms of 3D representation. For example, this 3D FPS demo features more visually-impressive environments as well as free, fluid movements controlled entirely by the Pebble’s accelerometer (in other words, by tilting your wrist or otherwise tilting the Pebble).

3D FPS Demo
3D FPS Demo

Why didn’t I make use of the accelerometer? Well, accelerometer controls are fun to play around with, but, if you ask me, they end up feeling awkward when applied to games of this sort, so I chose to stick with button controls. Admittedly, my control scheme is awkward in its own way: movement forward and backward is facilitated by single-clicking (or continuously pressing) the “Up” and “Down” buttons, respectively, while turning left and right is accomplished by double-clicking those same buttons. It takes a little getting used to but was, to my mind, the best way to allow the player to turn left and right and move forward as well as backward while still leaving the “Select” button available as an attack button and the “Back” button as a way to return immediately to the main menu, all without worrying about how your Pebble is currently tilted.

For a slightly different take on button controls and another impressive example of the kind of 3D gaming Pebbles can support, check out this dungeon crawler by JeckleCed:

Clearly, that game is better-looking than PebbleQuest, but it has yet to be completed and released, mainly due to the Pebble’s memory limitations. I hope to see it released in the near future along with many other games of this sort, even if they do end up outshining my own creations. Oh, and for the record, I do have experience related to programming those kinds of richer 3D worlds, but, for the sake of keeping my Pebble games simple, compact, and easy to complete within a relatively short time frame, I opted for a more old-fashioned approach.

Now that we’ve discussed movement and the overall 3D environment, let’s dive into combat. At one point during development I considered going with turn-based rather than real-time combat, especially since casual “look at your watch now and then” games are naturally quite popular on this platform, but that wasn’t the experience I was aiming for. I wanted real-time battles governed by “dice rolls” in the background, like those of my favorite RPG series: The Elder Scrolls. Unlike the first three Elder Scrolls games, however, all attacks will deal at least a minimal amount of damage. Also, I dropped bows and arrows at one point, so there are no ranged physical attacks, but all spells are ranged, including spells from enemy mages. Finally, to compensate for awkward controls and overall difficulty, the player can attack (and move) up to four times per second, whereas enemies attack (or move) only once per second.

Warrior
A warrior challenges you to battle!

So, what about combat-related graphics? Spells and enchanted weapons cause an inverter layer to appear and then disappear, creating a “flash” effect. Physical attacks from enemies aren’t animated, but damage to the player is indicated by a short vibration. Physical attacks from the player generate a white line across the central portion of the screen from one random point to another. I would have enjoyed creating distinct graphical effects for each type of spell and weapon, but didn’t have enough spare memory to justify such an extravagance. As for the appearance of the NPCs themselves, I considered using bitmap files, but transparency would not be supported by such files, so I stuck with drawing primitive shapes, lines, and pixels instead. Again, in order to save memory some visual details were left to the player’s imagination. Nonetheless, I think you’ll agree that, while in active gameplay, the resulting images are sufficient to create an intense gaming experience.

Floating Monster (White)
A floating monster inspired by the beholders of D&D fame.

The Player Character

One of the first steps in any RPG is the creation or presentation of a character (or team of characters), sometimes with customization options. PebbleQuest automatically creates a default character for you without any need to choose race, sex, class, skills, or anything else. Because you never actually see your character, you’re free to imagine his or her physical appearance and cultural background however you please. You’re also free to choose which items to equip and which attributes to increase as you level up, thus roleplaying your preferred character type, whether that’s a heavily-armored sorceress, a leather-clad assassin, or a naked axe-wielding barbarian!

To keep things simple, I settled on three primary attributes—Strength, Agility, and Intellect—corresponding to the three major fantasy archetypes of Warrior/Fighter, Thief/Rogue, and Wizard/Mage. Each time you level up, you can increase one attribute.

Agility, Strength, and Intellect: the three primary attributes in PebbleQuest as seen in the level-up menu.
The three primary attributes as seen in PebbleQuest‘s level-up menu.

In a more complex RPG, I would have gone with a wider range of basic attributes, perhaps something like the six attributes of Dungeons & Dragons, the seven “SPECIAL” attributes of the Fallout series, or the eight attributes of the first four Elder Scrolls games. As it is, PebbleQuest‘s attributes and leveling system actually have a lot in common with the latest addition to the Elder Scrolls series: Skyrim.

Like PebbleQuestSkyrim features a classless system with three major attributes, one of which may be increased each time you level up, although in Skyrim these attributes are (surprisingly) Health, Magicka, and Stamina: the quantities drained when the player takes damage, casts a spell, or swings a weapon, respectively.

The level-up screen in The Elder Scrolls V: Skyrim.
The level-up screen in The Elder Scrolls V: Skyrim.

PebbleQuest features a Health bar like that seen in Skyrim (and countless other games), but instead of separate Magicka and Stamina bars there is a single Energy bar that diminishes anytime either a spell is cast or weapon swung. Finally, PebbleQuest is also similar to Skyrim (and Oblivion) in that Health and Energy are both automatically replenished over time: no need to find a place to sleep.

While we’re on this topic, I’d like to argue a more general point: Simplification isn’t always bad, nor is increased complexity always good, even in a “hardcore” RPG. Balance between absolute realism and smooth, enjoyable gameplay is crucial in any game. As such, although some fans of the Elder Scrolls series were disappointed by Skyrim‘s departure from the previous class-based, eight-attribute system (among other things), I didn’t mind their abandonment of character classes, which often just end up feeling like a source of arbitrary restrictions, and I found their experiment with a streamlined, skill-based, perk-focused leveling system fascinating and effective. There are definitely some things I would criticize about Skyrim‘s design, but the leveling system and dearth of traditional attributes aren’t among them.

Getting back to PebbleQuest, although characters in this game don’t have skills or perks, they do have the following minor stats, each affected by the primary attributes and sometimes by equipment:

  • Physical Power
  • Magical Power
  • Physical Defense
  • Magical Defense
  • Max. Health
  • Max. Energy
  • Health Regeneration Rate
  • Energy Regeneration Rate
  • Fatigue Rate (energy loss per attack)

Those “Power” and “Defense” stats are undeniably generic, but remember: I had to keep things simple. Rather than a bunch of separate stats along the lines of “Resilience,” “Evasion,” “Armor Rating,” etc., there’s a single “Physical Defense” stat incorporating all of the above. Might sound odd, but with memory this tight, why not? Whether you reduce physical damage through sheer toughness, dodging, or glancing a blow off your armor, it all amounts to the same thing: damage reduction. Similarly, raw power and the ability to effectively time and aim an attack are both factored into “Physical Power.” As for “Magical Power/Defense,” these too are affected not only by Intellect, but also by Agility because dexterous, coordinated movement is involved in the casting, aiming, and dodging of spells.

Perusing the full list of character stats from PebbleQuest‘s main menu will also reveal current experience points, level, depth (how deeply you’ve descended into the dungeon), and two special minor stats:

  • Spell Absorption (chance to absorb enemy spells as energy)
  • Backlash Damage (damages enemies when they physically attack you)

These start at zero but may be increased by equipping a robe, shield, or suit of armor infused with the appropriate Pebble of Power. For complete information on the effects of various items, including the seven Pebbles of Power, please refer to the official PebbleQuest page.

To Quest, or Not to Quest: That is the Question

With a name like PebbleQuest, you’d be correct in assuming you’ll embark on a quest: a quest to collect Pebbles of Power, no less! I faced two quandaries on the questing front, however: (1) whether the main quest should feature a complex storyline and diverse locations and (2) whether to include a system of side quests similar to the mission system in SpaceMerc, complete with gold coins earned as rewards that could then be spent at a marketplace. As development progressed, I weighed my priorities and opted for a simple roguelike (or “roguelike-like“) dungeon crawl as the main quest, did away with side quests, and dropped the marketplace idea. Sacrificing such desirable but nonessential elements enabled the inclusion of a wide range of stats, items, enemies, and other basic features that were far more crucial to my creative vision.

To me, the list of critical elements boiled down to the following:

  1. A variety of 3D environments (even if the only “variety” is provided by procedural generation) filled with a variety of enemies.
  2. Equippable weapons, armor, shields, and clothing.
  3. Pebbles of Power that may be equipped to cast spells or infused into other items to imbue them with magical properties. Needless to say, I also hoped these would provide a fun connection to the name of the device on which the game runs!

Beyond those three features, everything else was negotiable, including “questlines” and other forms of storyline. Thus, the only narrative in PebbleQuest, aside from that generated by the player’s own imagination and unique interactions with the game world, is provided by the following text, displayed each time a new character is created:

Evil wizards stole the Elderstone and sundered it, creating a hundred Pebbles of Power. You have entered the wizards’ vast underground lair to recover the Pebbles and save the realm. Welcome, hero, to PebbleQuest!

There are, indeed, exactly 100 Pebbles that may be collected in PebbleQuest, one for each level of depth in the dungeon, meaning you must descend to the maximum depth of 100 to collect every Pebble. This arduous task is rewarded only by a simple congratulatory text:

Congratulations, hero of the realm! You’ve vanquished the evil mages and restored peace and order. Huzzah!

Each Pebble is held by one of 100 mages who constitute the “bosses” of the game and are the only enemies capable of ranged attacks. Oh, and speaking of the number 100, that’s also the player’s level cap.

Mage
Defeat this mage to claim another Pebble of Power!

One final point about questing in PebbleQuest, which also illustrates the impact one design choice can have on another: Because the “main quest” and the game overall ended up being simplistic and somewhat lacking in diversity, I feared players would bore quickly, so I decided to increase intensity by making death permanent (one of the key features of any roguelike), meaning that you must start over from scratch whenever your character dies. This feature would be intolerable in an RPG of grander scope, such as any of the Elder ScrollsFallout, or D&D-based titles, but it fits nicely in a simple dungeon crawler like PebbleQuest because the added tension contributes to the pleasure and sense of accomplishment derived from each victorious battle and each level survived and yet there isn’t too much frustration when a character dies because there really isn’t that much to lose nor is there a great, expansive narrative to complete.

All that Glitters…

Though gold coins and commerce didn’t make their way into PebbleQuest, I aspired to make money in the real world through this humble RPG by selling it for a dollar per download. I imagine this may have surprised some people, but, as detailed above, designing and programming this game from scratch required a significant investment of time and energy, so I felt justified in seeking a little remuneration from my fellow fantasy enthusiasts.

As a matter of fact, I initially planned on selling SpaceMerc as well, but for various reasons ended up releasing it for free, just like MazeCrawler, on the official Pebble App Store, which didn’t support paid apps at the time and still doesn’t to this day. Early on, there was some talk from Team Pebble about eventually supporting payments, but this has yet to materialize. For a few months in mid-2014, I actually delayed PebbleQuest‘s development specifically because I didn’t want to release it until it could be sold on the official store. There were a handful of unofficial online stores selling Pebble apps at the time, but I wanted to stick with the official store as much as possible and figured it was only a matter of time before they would announce they were ready. As weeks and months continued to go by without any indication they were working on that feature, I decided I might as well finish up PebbleQuest and sell it through my own website.

Sales started trickling in and I was deeply grateful for each one, but there weren’t nearly as many as I hoped, even with all the newly-gifted Pebbles around Christmastime. I posted links here and there, and my website already had an abundance of Pebble-related content for search engines to pick up, so a lot of Pebblers were checking out my PebbleQuest page, it’s just that precious few were taking the next step of making a purchase. This tale of woe is common in the indie game development world, though, so I was mentally prepared and only slightly disheartened. I also learned a few valuable lessons. For example, I should have provided a free trial version on the Pebble App Store with the option to purchase the full game through my website (or elsewhere). I arrogantly assumed PebbleQuest‘s description would be so appealing to any fellow Pebbler and RPG fan that a demo was unnecessary, but it later became clear that some folks wanted a test run before laying down any money.

In any case, by late February sales had tapered off and Pebble had revealed a new Kickstarter campaign for their next-gen watch, Pebble Time, featuring 64 colors, expanded memory, and other improvements, so I decided it was time to go ahead and provide my now humbler-looking, black-and-white RPG free of charge on the Pebble App Store as well as MyPebbleFaces.com. The code is also open source, as it was from the beginning, so feel free to check it out on GitHub and borrow from it as you make your own Pebble games. I may eventually produce color versions of each of my Pebble games, along with a handful of new Pebble apps and watchfaces, but the bulk of my time is now dedicated to screens larger than 144×168 pixels as I’m in the midst of establishing my own indie game development company: Golden Drake Studios.

The Future of Smartwatch Gaming

What does the future hold for smartwatch gaming? First of all, we can expect a lot more coloas the much-anticipated Pebble Time and Apple Watch join the ranks of the already-colorful Android Wear devices. We can also expect casual games to dominate here just as they do in the realm of smartphones and tablets, though semi-hardcore games like PebbleQuest will pop up now and then. Finally, free-to-play will definitely be the norm, but the income potential from freemium games (and perhaps the occasional pay-to-play game) could be significant, as evidenced by the recent appearance of a Finnish game studio devoted entirely to wearable tech: Everywear Games.

In order to get more specific, let’s see what lessons and predictions can be gleaned from the current top seven games on the Pebble App Store:

  1. Pixel Miner: A little miner moves across the screen, digging up pixels and occasionally finding treasure. Pixels can be spent on “Equipment” (jackhammer, goblin team, mutant mole, etc.) for deeper digging as well as “Multipliers” for faster digging. Designed from scratch with the specific characteristics of the Pebble platform in mind (as opposed to most Pebble games, including my own, which involve taking games or game genres from other platforms and saying, “I wonder if I can make something like this for the Pebble!”), I can attest to the satisfaction derived from this game and fully understand why it’s immensely popular. All the real action takes place without any user input, so it only requires occasional attention: perfect for a game that sits on your wrist. There’s also no way to lose, making it completely stress-free. Finally, I love that, in addition to toilet seats, tin cans, boots, and various gems, the miner may also stumble upon such rarities as a Fabergé egg, the Holy Grail, or the Necronomicon. My only complaint is that the game doesn’t display the time, forcing you to exit the game when you want to, you know, use your watch as a watch.

    Pixel Miner
    Pixel Miner
  2. Tiny Bird: Based on the simple, surprisingly popular, somewhat controversial, and now unavailable mobile game Flappy Bird, this game does require constant attention, but it’s still well-suited to the Pebble platform owing to its one-button control scheme. Personally, I hate this game, but a lot of people clearly love it and it’s easy to build, so we should expect many more games of this sort in the years ahead.

    Tiny Bird
    Tiny Bird
  3. Hatchi: A virtual pet for you to occasionally feed, bathe, and otherwise care for, just like the once popular Tamagotchi. An Apple Watch version is also forthcoming. This is another perfect fit for a smartwatch app, but here’s my recommendation: Let’s design some virtual pets with better graphics and more interactivity; in other words, pets that don’t resemble Tamagotchi!

    Hatchi
    Hatchi
  4. MiniDungeon: A simplistic RPG with random events and turn-based combat. Of all the games on this list, this one comes closest to PebbleQuest in spirit, but they’re worlds apart in terms of gameplay. It’s in first-person perspective, but instead of actively moving through a dungeon, a new scene is generated each minute. Now and then, a new item is found or enemy encountered. Combat is turn-based and employs a simple menu system. I personally don’t enjoy this game, but it’s gotten more “likes” than all of my games combined, so it’s obviously doing something right, and that something is probably this: Much like Pixel Miner and Hatchi, this game doesn’t require constant attention. You can leave it running all day and simply glance down whenever you have a free moment. We can expect to see more casual RPGs of this sort, perhaps including some in the JRPG style with battle screens resembling those of the early Final Fantasy titles.

    MiniDungeon
    MiniDungeon
  5. Mr. Runner: A little man continuously runs forward, except when you press a button telling him to pause, which you’ll want to do whenever something’s about to crash down in front of him. Simple and fun! Many similar games can be found on the Pebble App Store, some of which are slightly more complex such as the “runner” version of the mobile platformer Alice’s Mom’s Rescue. Speaking of which, let that be a lesson to all you smartwatch game developers out there: If you want to make something like Super Mario Bros. while still avoiding the awkwardness of supporting back-and-forth movement, just turn it into a “runner” game. Also, it’s worth noting that some popular Pebble games involve a character continuously jumping or otherwise moving up instead of to the side, including one entitled Mr. Runner UP.

    Mr. Runner
    Mr. Runner
  6. Pebtris: The Pebble version of Tetris, one of the greatest video games of all time. Classic remakes are fun, even when they don’t lend themselves perfectly well to a smartwatch’s limited controls. Other classics worth checking out include Pebloid, AsteroidsSnakeyRogue, and Chess.

    Pebtris
    Pebtris
  7. PinyWings: This Tiny Wings port is graphically astounding and an excellent example of a well-polished casual game that stands to make some revenue. It’s free to try a sample level, but to unlock the full game you must make a payment through TinyPay: a “smooth payment service for Pebble apps,” currently in private beta phase. If I ever decide to monetize another smartwatch game, this is probably the model I’ll follow!

    PinyWings
    PinyWings

So, what’s the takeaway here? Smartwatch games should be simple and intuitive, possibly nostalgic or familiar in some way, and perhaps capable of being left on to be played sporadically throughout the day. You’ll notice that none of the top Pebble games are of the first-person action variety since these will generally fail the “simple and intuitive” criterion. That’s not to say there isn’t a niche market for such games, but they’ll never be as popular as casual games, and that’s understandable given the tiny screen size, limited controls, etc. So, if your heart’s set on crafting an experience similar to your favorite first-person game, be sure to thoughtfully consider various ways the basic concepts behind that game could be adapted to the unique characteristics and typical use cases of your target platform.

For example, say you want to create something like Minecraft. Simply cloning it with a first-person perspective would be interesting, but would also most likely result in awkward, frustrating gameplay that gets old real fast. On the other hand, focusing on the core element of block-building and employing a more small-screen-friendly isometric view could result in simpler, more intuitive, and ultimately more satisfying gameplay, as we now see in Block World!

Block World
Block World

And why not venture out into unexplored territory? If you ask me, one particularly exciting frontier for smartwatch game development is augmented reality (AR). The popular AR smartphone game Ingress is already being ported to Android Wear devices and clever game designers are sure to come up with similar territory-based games along with completely novel AR ideas specifically suited to wearable tech. Some of these may blur the line between AR and the general gamification of life. Fitness tracking, the primary (or only) function for many wearable devices, is essentially a gamification of exercise and could easily turn into AR just by adding something as simple as a number indicating the distance of an imaginary beast that will devour you if you stop or slow down too much. What other ideas can you come up with to add an extra layer of fun and excitement on top of your daily activities?

Wherever the burgeoning field of smartwatch gaming takes us, I hope it can be said that PebbleQuest and its predecessors, MazeCrawler and SpaceMerc, have contributed to its early development and inspired some of today’s young tech enthusiasts to envision and implement their own app concepts. In other words, I hope I did indeed “make awesome happen” and that I encouraged others to do the same!

SpaceMerc: FPS Gaming on a Smartwatch

SpaceMerc has been available on the Pebble App Store for almost three months now and downloaded—along with its predecessor, MazeCrawler—by well over 2,000 of my fellow Pebblers. It is also, according to my research, the first FPS game ever developed for a smartwatch!

A Fim Soldier from the SpaceMerc Pebble game as seen on a red Pebble watch.

Although this is a modest achievement at best, I can’t deny it makes me happy to think I may have made a small contribution to video game history. In addition, working on SpaceMerc has been valuable for me in terms of software engineering, game development, and game marketing experience, and I can once again attest to the joys and pains of toiling to create something original and then sharing it with the world.

In what follows, I’ll share a few experiences from my time developing SpaceMerc. If you’d prefer to see basic information about the game instead, check out the official SpaceMerc page.

Looking Back: From MazeCrawler to SpaceMerc

Having built MazeCrawler, a few fundamental challenges were already taken care of: (1) effectively portraying a first-person 3D environment on the Pebble’s small black-and-white screen, (2) handling player movement within that environment, (3) reliably saving data to persistent storage, and so forth.

Looking down a hallway in the MazeCrawler Pebble game.
Looking down a hallway in the MazeCrawler Pebble game.

Nonetheless, SpaceMerc presented several new and daunting challenges, including:

  • Populating the 3D environment with non-player characters (NPCs), handling their behavior, and depicting them graphically at varying depths.
  • Attempting to make the environment more varied and interesting.
  • Animating the player’s attack and handling its effects on NPCs and walls.
  • Designing an effective mission system.
  • Providing a greater sense of progress over time.
  • Handling an increased need for narration texts.
  • Doing all of the above within the Pebble‘s tight memory constraints.

That final challenge was the biggest of all and impacted all the others, so I’ll discuss it first.

Memory Limitations

I never ran into trouble with memory during MazeCrawler‘s development, but I hit the wall very quickly after moving on to SpaceMerc. Actually, I should say “after moving on to PebbleQuest,” for it was only after realizing my aspirations for that action-RPG were far too bold that I decided to create SpaceMerc as a simpler intermediary in the first place.

Even after settling on what I assumed were achievable design specs for SpaceMerc, I had to scale them way back in order to (a) keep the app itself small enough to fit in one of the Pebble’s eight allotted app slots and (b) prevent the app’s use of dynamic memory and persistent storage from crashing the game at runtime. Naturally, this was frustrating because it meant I couldn’t do everything I wanted to do and feared the gameplay experience might suffer as a result. On the other hand, it also felt liberating: by forcing me to lower my ambitions, it enabled me to reach a stopping point much sooner than I otherwise would have.

George Lucas once said, “A movie is never finished, only abandoned.” The same is true of games and all other creative works, but abandoning one’s work can be excruciating. As such, it’s helpful to be shoved in that direction, whether by financial need, a deadline, technological limitations, or some other consideration. In fact, aren’t we all glad George Lucas was forced to abandon some of his ideas while making the early Star Wars films, and don’t we wish he’d never returned to “improve” them? But now I’m getting off topic.

George Lucas and Sir Alec Guinness on the set of the original Star Wars film.
George Lucas and Sir Alec Guinness on the set of the original Star Wars film.

Another benefit of running into memory limitations was that it gave me an excuse to put on my “serious software engineer” hat and do something I suspected I ought to do anyway: comb through all my code again looking for each and every function, block of code, line of code, and code fragment that could be improved, trimmed down, or removed altogether. This meant cutting out superfluous error-checking, reducing my use of conditionals (“if” statements and the like), being careful about when I used integers versus floating point numbers, shortening string variables, eliminating unnecessary variables, and so forth. Sure, this may not be most people’s idea of a good time, but once you dive in, it’s surprising how much fun it can be. Well, maybe “fun” is the wrong word, but it feels good to have the power to solve problems and improve things.

Anyway, with the issue of memory limitations firmly in mind, let’s move on to the other challenges I mentioned.

Non-Player Characters (NPCs)

The addition of NPCs is one of two crucial differences between this game and MazeCrawler (the other being the player’s ability to shoot). I knew I had to nail this aspect of the game if I wanted anyone to take SpaceMerc seriously, but I also knew I was working with very limited graphical capabilities, not to mention limited memory. I did the best I could and overall I’m fairly pleased with the results.

Screenshot of a Robot from the SpaceMerc Pebble game.
A robot from the SpaceMerc Pebble game.

Obviously, it would’ve been nice to provide a vast array of enemies, each with unique stats, behavior, and graphics, but that wasn’t feasible. In the end, I was satisfied to have seven different enemies, some of which share the same stats or graphical elements, and all of which exhibit the same simplistic behavior: pursue the player, then attack.

Screenshot of a Beast from the SpaceMerc Pebble game.
An alien beast from the SpaceMerc Pebble game.

I originally wanted to incorporate more behavioral diversity, such as cowardly enemies running away when wounded, and more animations. I also took it for granted that some enemies would be ranged attackers (capable of attacking the player from a distance) and hoped to throw in a few friendly NPCs that weren’t just passive like the humans you’re sent to rescue during “Extricate” missions. In the end, however, I settled for seven simple-looking, simple-minded enemies that only attack at close range, only one of which exhibits any animation (the “Beast,” whose mouth opens and closes), and that appear randomly up to three at a time. [UPDATE: As of version 1.5, gun-wielding enemies are now capable of ranged attacks!] Though less than ideal, I felt this compromise was acceptable given that SpaceMerc is, after all, a smartwatch game and simply cannot approach the level of complexity and visual appeal generally expected of a modern first-person shooter.

Screenshot of a Fim Officer from the SpaceMerc Pebble game.
A Fim officer from the SpaceMerc Pebble game.

As a final note, soon after designing the tall, bulky, intelligent race of aliens known as the Fim, I began to feel there was a resemblance between them and the mysterious grey aliens of Éric Chahi‘s masterpiece: Another World (known as Out of This World in some of its North American incarnations).

An alien from the classic video game Another World.
An alien from the classic video game Another World.

The similarity is unintentional (my aliens are block-headed and wear sleeveless shirts simply because I was able to reduce app size by not drawing necks and sleeves), but not unwelcome. I’m an ardent admirer of Chahi’s work and count Another World among my favorite video games of all time. If you’ve never played this action-adventure classic, you’re in luck: its 20th Anniversary Edition is now available not only on PC (Amazon/Steam/GOG.com) and Mac (iTunes/Steam/GOG.com), but also on Android (Amazon/Google Play) and iOS (iTunes) devices, and according to the official website it will soon be available on all the latest gaming consoles as well.

Environment

Initially, I had big plans for the 3D game world. I wanted to introduce some new wall textures and lighting effects, perhaps even outdoor locations and an occasional river of water or lava. Sadly, those features were among the first things placed on the chopping block as I started hacking away at my design specs. Variety is the spice of games, but NPC variety seemed far more important to me than environmental variety, so I made some sacrifices in this area. The only significant addition was a “door” graphic depicting the entrance/exit of each mission location.

Screenshot of an entrance/exit door from the SpaceMerc Pebble game.
An entrance/exit marker from the SpaceMerc Pebble game.

On a related note, I originally planned on implementing in-game items for recovery of health and ammo (among other things), but elected instead to save space by allowing both health and ammo (actually, “energy” would be a more accurate term) to automatically recover over time.

The Player’s Attack

Pressing the Pebble’s “Select” button causes the player to attack, sending out a laser beam capable of burning through any enemy or wall in its path.

A laser blast from the player toward a distant alien in the SpaceMerc Pebble game.
A laser blast from the player toward a distant alien in the SpaceMerc Pebble game.

Drawing a simple laser beam and animating it with help from an AppTimer actually wasn’t much of a challenge, nor was it difficult to handle dealing damage to the first enemy or wall hit by said laser, but there was, and still is, one small issue: the player’s attack speed is not constant. Sometimes the gun shoots more rapidly or sluggishly than intended. It seems to be related to the number of walls in the player’s field of view, but, unfortunately, I have yet to find a workable solution to this problem (more on this later).

By the way, as I’ve been alluding to, yes, you can destroy walls in this game. If you want, you can destroy every wall you see (except for boundary walls) just for kicks. This feature was largely inspired by The Elder Scrolls: Arena, the very first Elder Scrolls title, which includes a fun wall-destroying spell called “Passwall.”

Demonstration of “Passwall” in The Elder Scrolls: Arena.


You can also increase your attack power through upgrades, but one thing you cannot do, unfortunately, is switch between different weapons. I do plan on implementing multiple weapons (and spells) in PebbleQuest, however, so you can look forward to that!

Missions

Missions are critical to SpaceMerc as they provide context, variety, and a sense of purpose. I was able to fit five (rhyming) mission types into the game: “Retaliate,” “Obliterate,” “Expropriate,” “Extricate,” and “Assassinate.” They differ enough, I hope, in their descriptions, success criteria, and other characteristics that they, along with the procedurally-generated locations and randomly-appearing NPCs, will keep the game feeling fresh and interesting indefinitely.

Screenshot of a Human Officer from the SpaceMerc Pebble game.
A human officer awaiting rescue as part of an “Extricate” mission in the SpaceMerc Pebble game.

One mission type I’d really hoped to include was an “Escape” mission that would occur whenever you fell in battle. You would awaken to find yourself in a prison cell, but, since the Fim were unable to remove either your advanced suit of armor or the laser gun affixed to it, you could blast your way to freedom. In the end, this was tossed out in favor of a simple narration: “You fell in battle, but your body was found and resuscitated. Soldier on!”

Progress

A sense of progress is crucial to any video game, whether it be through points, leveling, loot-gathering, increasing difficulty, the advancement of a narrative, the opening of new vistas, or whatever else. Having abandoned in-game items, and not wanting to simply tally up points, I provided an “Upgrade” system in SpaceMerc whereby money earned from missions can be spent to improve your stats, presumably by visiting a technician, cyberneticist, doctor, or other relevant expert in your current corner of the galaxy.

Narration

SpaceMerc employs a narration system to (1) establish overall context the first time the app is run, (2) describe the goals and potential rewards of each mission, (3) detail the outcome of each mission, and (4) to present “Controls” and “About” information.

Narration text for an
Narration text for an “Assassinate” mission in the SpaceMerc Pebble game.

At first, I designed the narration system to be animated, revealing letters one at a time, but for the sake of trimming things down I later removed that functionality. I also shortened narration texts as much as I could, freeing up memory at the cost of making mission descriptions rather terse.

Looking Forward: From SpaceMerc to PebbleQuest

I may continue tweaking and improving SpaceMerc from time to time, so please share any feedback you have about the game, especially any changes you’d like to see. Most of my time and attention, however, is now reserved for PebbleQuest: the action-RPG I’ve been working towards since the moment I bought a Pebble watch.

It may be quite a while before PebbleQuest is released because I’m combing through my code yet again looking for even more ways to save memory and squeeze in content. Once complete, my hope is that PebbleQuest will offer even more than SpaceMerc in terms of gameplay variety, character customization, and narrative.

I may also build a turn-based version of PebbleQuest, in addition to (or completely replacing?) the action-RPG version, mainly because that should allow me to include even more content while avoiding the timing issues discussed above, but also because I suspect some Pebblers would actually prefer a turn-based experience.

In addition to sharing any feedback you have about SpaceMerc, please let me know what you’d like to see in PebbleQuest. In particular, would you have a strong preference between real-time and turn-based combat? If you generally prefer action-RPGs, but a turn-based RPG could offer more content, would that change your mind in this instance? Feel free to share all your thoughts and suggestions in the comment section below. And finally, thanks for taking an interest in SpaceMerc and all my indie Pebble games!

Magic 2014—Duels of the Planeswalkers

Now that it’s actually 2014, I’ve decided it’s time to write up a review of Magic 2014—Duels of the Planeswalkers: the fourth installment in the Duels of the Planeswalkers (DotP) video game series. Developed by Stainless Games and published by Wizards of the Coast, the DotP series has been bringing the beautifully-designed collectible card game Magic: The Gathering to Windows, Xbox 360, and PlayStation 3 since 2010 (2009 on Xbox 360). As an avid Magic fan, I’ve enjoyed each of the DotP titles and was ecstatic when I had the opportunity to test Magic 2012 during my stint as a software test engineer in the Seattle area. Overall, each title has been an improvement on the one that went before, and Magic 2014 is no exception. Here is my review:

The Good

The best feature introduced by Magic 2014, in my highly biased opinion, is the fact that it’s available on Android tablets. Magic 2013 was ported to the iPad, but not to Android devices, and I don’t own an iPad. I am, however, the proud owner of an Asus Transformer TF300 and I had long been looking forward to the day when I could play Magic through simple touch commands on that powerful tablet. While lying in bed. Naked. Okay, I guess you didn’t need to hear those last two details. In any case, for the most part I was not disappointed: the touch controls work very nicely and are easy to learn. Plus, they added a wonderful time-saving feature: an “attack with everything” button that sends all your little minions toward your enemy without having to select them one by one (and if you have tons of creatures but only want most of them to attack, you can simply tap “attack with everything” and then tap whichever creatures you want pulled back before tapping the final “attack” button). Overall, I’m quite pleased with the controls and other UI features.

Several creatures attacking with a single click in Magic 2014.
Ah, the glory of the “attack with everything” button!

Another excellent new feature is “Sealed Play”: opening virtual booster packs and building your own decks for use online as well as against a series of AI opponents. It’s still very limited, frankly, but it’s a welcome addition because much of the appeal of collectible card games like Magic is the exhilaration of opening new packs and then choosing which cards to include in a deck according to a desired theme or strategy. The main “Campaign” mode of the DotP games hasn’t involved these elements so far, or at least not nearly as much. All the decks involved are pre-built and, although new cards are acquired for a given deck whenever it’s used to win a match and cards can then be added and removed to tailor the deck to a tiny extent, it’s extremely limited compared to the usual experience of deck-building.

Deck-building in Magic 2014's "Sealed Play" mode.
Deck-building in Magic 2014’s welcome, but still very limited, “Sealed Play” mode.

Finally, this game possesses the most critical feature common to all DotP titles: the ability to challenge both human and AI opponents with interesting, well-balanced decks. The PC-only game Magic Online provides infinitely more flexibility in terms of card availability and deck-building, but one sometimes feels overwhelmed (or bored…or annoyed…) by the power and time-consuming nature of the combos some players build into their decks (okay, okay…sometimes it’s actually quite impressive and fun to watch them in action, I’ll admit it!), so the sense of balance is often lacking. More annoyingly, some players seem to have acquired their concept of online etiquette from the likes of Malfegor and there is no option to play against AI opponents to avoid this issue. So, although overall I still prefer the freedom and variability afforded by Magic Online, there are times when a quick, balanced game against an AI opponent holds much more appeal for me.

Malfegor, a demon-dragon hybrid in the Magic: The Gathering card game.
A demon-dragon hybrid may be handy in a fight, but please don’t learn your social skills from this guy!

The Bad

First of all, this game took an extraordinarily long time to download onto my tablet and is currently attempting an equally arduous update. Seriously, it never ends no matter how long I leave my tablet on and downloading: I’ve already stopped and restarted the update a few times because it ends up taking so long I can only assume it’s encountered an error! This issue probably depends greatly on the specifics of your device, the quality of your internet connection, etc., and on PC/consoles I’ve never felt bothered by the size of DotP games, but it is worth mentioning that, on mobile devices, size definitely matters, and smaller is always better.

Not only is the game bulky, it’s also a bit slow and clumsy at times, like a lumbering Hill Giant. Loading screens already linger longer than they should on PC/consoles, but the experience is far worse on a tablet, even one as powerful as my Asus TF300. Once a match begins, gameplay is usually pretty smooth, but not when more than two players are involved, and the transitions between different screens and matches really should be faster. Take heed, oh ye developers of Stainless Games: this is just a card game, not a 3D first-person shooter! It’s okay to tone down the graphics and animations a bit, giving players a smoother experience as they enjoy the brilliant, simple mechanics that made this game a classic.

The Hill Giant card from Magic: The Gathering.
Remember, bigger isn’t always better!

It’s also worth noting that they could put a little more effort into the storyline associated with the “Campaign” mode. I’m glad they at least have something, and yes, I’ve already claimed that the game ought to be smaller and simpler, but if you’re going to include any sort of story, whether through text or short video clips, at least give it some depth and make it interesting. Brief scenes of Chandra Nalaar leaping around and rambling about a fire-spell scroll and the enemies I’m about to face didn’t do much for me.

Chandra Nalaar as seen in a cut scene from Magic 2014.
You’re welcome, Chandra!

Finally, I have a more general complaint. Why make each of the DotP titles so elaborate in terms of graphics and animations, yet so limited in terms of scope, deck-building options, and gameplay options? Of course, the main reason is probably money: the publisher may feel that by continuously producing different-and-slightly-improved-yet-still-highly-limited DotP games each year, they are increasing the odds that their hordes of adoring fans will buy the latest title every year. But listen, Wizards of the Coast: you’ll almost certainly get even more sales if you make each of these titles a little more versatile and expansive. For example, now that “Archenemy” and “Planechase” modes have been available in Magic 2012 and Magic 2013 respectively, why not include these modes in all subsequent DotP titles? And as for deck-building, at the very least I would like to see an option to repeatedly delete any decks I’ve built in “Sealed Play” mode in order to open new booster packs and build new decks. A high degree of freedom and variability is crucial to the long-term success of any game or series of games, in my opinion.

The Hilarious

Calling it Magic 2014 when it was actually released in the summer of 2013. This is one of my personal pet peeves: the unfortunately widespread practice of labeling and copyrighting games, books, cars, etc., according to the upcoming year rather than, you know, the actual current year. It’s silly, annoying, and, frankly, a blatant form of dishonesty. If it’s not yet 2014, what right do you have to claim your product is a 2014 product? But this section is titled “The Hilarious,” not “The Irritating,” so I should probably stop ranting.

The Final Verdict: 6/10

I’m tempted to give this game a higher rating, especially since I’m thrilled to finally be dueling Planeswalkers on my Android tablet, but I just can’t justify it given all the drawbacks mentioned above. Still, Magic 2014 is a decent game, certainly deserving of a solid 6/10. Whether you’re new to Magic or have a Black Lotus framed on your wall, I recommend trying out this game along with each of the other titles in the DotP series. It’s available on Android tablets via Amazon and Google Play, on iPad via the iOS App Store, on PC via Steam, on Xbox 360 via Xbox LIVE, and on PS3 via the Sony Entertainment Network.

The Black Lotus card from the Alpha set of Magic: The Gathering.
Ah, the infamous and highly valuable Black Lotus…I would love to get my hands on one of these, especially from the Alpha set!

Regarding the LDS Church’s Statement on “Race and the Priesthood”

The Church of Jesus Christ of Latter-day Saints, commonly referred to as the LDS Church or Mormon Church, recently issued a statement entitled “Race and the Priesthood” that discusses and disavows the Church’s previous policy banning black people of African descent (yes, it really was that specific) from holding the priesthood and participating in certain temple ordinances. The ban was lifted in 1978, purportedly because of a new “revelation” on the matter, but this is the first time the Church has issued such a strong and detailed disavowal of that former practice and the racist beliefs that surrounded it. (Incidentally, black women are still banned from holding the priesthood. Of course, this is because all women are banned from holding the priesthood. Naturally, some Mormon women have been pushing for a new “revelation” in this area as well for quite some time, but with little to no success so far.) I find the Church’s statement both accurate and admirable in many respects, and I do not wish to belabor this tired topic, but I do take issue with some of the statement’s claims, particularly this one:

“Today, the Church disavows the theories advanced in the past that black skin is a sign of divine disfavor or curse […].”

Oh? Truly? That is a radical statement indeed, for if it is to be believed then the LDS Church must now disavow several passages from what is arguably its most important scriptural text: the Book of Mormon. For example:

“And he had caused the cursing to come upon them, yea, even a sore cursing, because of their iniquity. For behold, they had hardened their hearts against him, that they had become like unto a flint; wherefore, as they were white, and exceedingly fair and delightsome, that they might not be enticing unto my people the Lord God did cause a skin of blackness to come upon them” (2 Nephi 5:21; emphasis mine).

“And the skins of the Lamanites were dark, according to the mark which was set upon their fathers, which was a curse upon them because of their transgression and their rebellion against their brethren” (Alma 3:6; emphasis mine).

Lamanites
An artist’s depiction of Lamanites “cursed” with dark skin from the Book of Mormon Reader.

Gee, I wonder where a devout Mormon might get the idea that “black skin is a sign of divine disfavor or curse”? Of course, the Book of Mormon also holds out hope of recovery:

“And their curse was taken from them, and their skin became white like unto the Nephites” (3 Nephi 2:15; emphasis mine).

Hallelujah!

And thus we see that, just as saying “I’m not a racist” doesn’t make it so (indeed, this phrase often coincides with the reverse), a religious institution stating “Church leaders today unequivocally condemn all racism, past and present, in any form” doesn’t make it so.

Sadly, it’s an inescapable fact that racism—not of the ugliest sort, perhaps, but a form of racism nonetheless—is integral to the storyline of the Book of Mormon. The Bible has its share of racism and other forms of unjustified prejudice, too. As such, condemnation of “all racism, past and present, in any form” requires condemnation of significant portions of the Bible and the Book of Mormon along with countless other books, many of which are otherwise praiseworthy. This isn’t a problem, unless of course you are committed to reverencing some of those books or the people who produced them.

This is why the reverencing of human beings or their words or works is a terribly dangerous business: it often forces you into the uncomfortable position of defending or desperately explaining away ideas or acts that are no longer defensible, if indeed they ever were, in order to maintain reverence for Moses, or Muhammad, or Jesus, or Joseph Smith, or Brigham Young, or whoever else is in question, as someone who was supposedly sometimes a conduit for the infallible word or will of a supreme deity or some other mystical source of knowledge. All human beings are worthy of respect, and some deserve an especially high level of respect as a consequence of extraordinary skill or contribution to society, but none deserve to be reverenced in that manner, and the same goes for anything said, done, or created by a human being. And let’s not kid ourselves: all religious concepts, doctrines, ordinances, practices, texts, buildings, and so forth are created by human beings, not by celestial beings or mystical forces. (If you believe you have convincing evidence to the contrary, the world awaits your profound discovery.) Thus, it shouldn’t surprise us when any religion exhibits or endorses racism, sexism, sexual phobias, and other potential foibles of human psychology. Religions are products of cultural evolution and thus bear, as Darwin once put it in reference to humans as products of biological evolution, “the indelible stamp of [their] lowly origin” (The Descent of Man, ch. 21).

In closing, I invite my readers—especially those of the LDS persuasion—to consider this crucial question: in a church that relies on the claim that its leaders have special access to divine revelation (often including claims of face-to-face dialogue with the likes of, say, Jesus…whose resurrected body is typically described as being remarkably white, by the way), how many times can current leaders say former leaders were wrong on matters of great importance before the claim of special access to divine revelation loses all credibility and starts to seem as meaningless and silly as a man sticking his face into a hat?

MazeCrawler: Enter the Labyrinth

I’m pleased to announce that MazeCrawler—a 3D, first-person, maze-navigation game for the Pebble smartwatch (SDK 2.0)—is now complete and available as a free download. Check out the official MazeCrawler page or MyPebbleFaces.com for additional information and to download the game. Happy maze-crawling!

MazeCrawler
Ready to enter the labyrinth?