Category Archives: General

Polygon’s God of War Review: ‘You don’t find collectibles; you find entire chunks of story’

Chris Plante, Polygon:

All of which is to say that the game is relaxed to the point of bordering on indifferent. Many of God of War’s most interesting surprises are optional, branching from the game’s sturdy throughline: secret rooms giving way to hidden caverns winding to towering statues or belligerent dragons — which I would have missed altogether had I just followed my compass to the next objective. You don’t find collectibles; you find entire chunks of story tucked behind a mossy wall or under a tropical island. God of War, like last year’s Nier: Automata and The Legend of Zelda: Breath of the Wild, rewards the player who inspects its immaculately designed world as if it were a hidden object game.

This reminds me of Star Fox 64. A player could “beat” Star Fox 64 without ever visiting over 50% of the areas/missions created for the game. (“Beat” in quotes as the path the player uncovers indicates a level of completeness, ultimately leading to a truer ending.)

It’s one thing to sprinkle trinkets throughout a game. It’s another to build entire stories and environments that may never be found. God of War sounds remarkable.

Tagged , ,

Building Zero Counts

Since launching Zero Counts in 2014, I’ve spent a number of hours overhauling the ‘Chunk’ WordPress theme into a design of my own.

In 2017, inspired by reading Huffington Post Highline’s ‘Millenials Are Screwed’ feature on iPhone X, I decided it was time for Zero Counts to introduce a mobile theme — an OLED-first one at that. (Also, I needed to beat Gruber at his own game.) But I had no idea how or where to start.

My workflow for editing Zero Counts’ theme consisted of searching for the theme’s style.css on my host, copying the file to my desktop, guessing the appropriate CSS changes, copying the file back to my host via FTP, and crossing my fingers.

Meanwhile, my day-to-day work was increasingly spent in Sublime Text, Sourcetree, Github, and leveraging a CI/CD (Jenkins) — most of which had been foreign to me months prior. I was learning the benefits of local testing, change tracking, and automated deployments.

In a fit of panic, I realized how risky it was to be iterating on the Zero Counts theme in production. Whoops!

With my desire to launch a mobile theme, so grew my desire to overhaul my development workflow. At the top of 2018, I got cracking.

Goals

  • Test locally
  • Track changes
  • Break out child theme
  • Create mobile version
  • Deploy automatically to production
  • Bonus: Develop on iOS

Tools

Theme Research

Before doing anything, I needed to get a bit more comfortable with how WordPress themes worked. WIRED’s Jake Spurlock kindly pointed me in the direction of WordPress.org’s theme documentation.

Local Testing

Luckily, the documentation also included details on setting up a local development environment.

More specifically, I needed to set up MAMP (Macintosh, Apache, MySQL, and PHP) on my Mac. This provides, among other things, a local MySQL database for a local WordPress install to read from. WordPress.org has a great article about setting up MAMP here.

Ultimately, I needed to:

  1. Download and install MAMP. (The free version should do the trick.)
  2. Set up MAMP Settings. (My set up show Apache Port: 8888, Nginx Port: 7888, MySQL Port: 8889, Web Server: Apache, Document Root: ~/Sites)
  3. Start MAMP and create a database. (From the phpMyAdmin, I created a database called zerocounts_net.)
  4. Download and install WordPress locally in ~/Sites/[site name].

Because Zero Counts has existing posts, I exported them from my production database on ZeroCounts.net. To import them into the newly created local database, from the WordPress dashboard:

  1. Click Tools
  2. Click Export
  3. Select ‘All content’
  4. Click Download Export File

An XML file with all of my posts was downloaded to my computer and ready to be uploaded to my local PHP database. With MAMP servers started, I entered phpMyAdmin, selected my newly created database, clicked the ‘Import’ tab, chose the XML file that was downloaded from ZeroCounts.net, and specified format: XML. This injected all of my existing posts (plus lot of other stuff) into the local MySQL database.

At this stage, my local site had all of my content, but certainly didn’t look like Zero Counts. I still needed to inject my custom theme. Before that, I wanted to begin tracking changes.

Change Tracking

I won’t go into the technical details of git repositories (repos) as I’m still getting my sea-legs. What I will say is the primary use case is to see a log of code changes and comments associated with the commits for quick investigation, reversions, and collaboration.

Git repositories can exist locally and/or remotely. In the case of Zero Counts, I develop locally using the local WordPress install I configured above, commit (save with a comment to myself) my changes, then push (upload) those code changes and commit details to my remote git repository. I can then go to another device — say my iPad (more on this in a bit) — pull (download) those code changes and commits, and be running/viewing the same code locally on another device. Think of it as a very manually, albeit safe, way of syncing my website’s code between devices.

GitHub is seemingly the standard when it comes to remote git repositories; however, with a free account, one can only create public repositories. I.e. my code would be publicly viewable. Private repositories are available on GitHub to paid accounts starting at $7/mo.

As a hobbyist, paying for a private repo that I may not use frequently seemed silly. Luckily, there is a solution in Atlassian’s Bitbucket. For a novice like myself, seeing little difference between GitHub and Bitbucket, Bitbucket offers free private repositories and therefore a membership from me!

Atlassian also offers a robust Git GUI for macOS and Windows called Sourcetree. There’s some peace of mind using a single developer’s sibling software and service together. As a bonus, I already had some familiarity with Sourcetree from my day-to-day work.

With a Bitbucket account created, I downloaded and installed Sourcetree. I created a new local repository in directory /wp-content/themes/ titled [theme]-child, where [theme] is the name of my default theme. (This will make sense soon.) I checked the “create remote repository” box and signed into my Atlassian account. This created an empty repository on my Bitbucket account for my WordPress child theme.

Child Theme

WordPress themes are great starting places. Chances are, a WordPress user will want to make changes to the theme’s style. With most themes, users can make small appearance tweaks (colors, fonts, etc.) using the simple Appearance editor. Some users many want to go a bit further with how their theme looks and begin digging into the actual CSS.

Some WordPress themes allow for custom CSS that overrides the default theme’s style.css via the Appearance editor. However, there may be bits of the theme that don’t exist within style.css and users will need to poke around in the theme’s many PHP files. This can be a bit overwhelming if you have no familiarity with code. If one is able to successfully make changes to the PHP files, be careful. Changes to themes are typically overridden with regular theme updates. Instead of editing the theme directly, one should create a child theme from the default theme.

In an FTP client, copy the contents of folder /wp-content/themes/[theme] into the new local directory /wp-content/themes/[theme]-child.

Open the new child theme’s style.css file and edit the initial comment as follows:

/*
Theme Name: [Theme] Child
Theme URI: https://domain.com/wp-content/themes/[theme]-child/
Description: [Theme] Child Theme
Author: [Your name]
Author URI: https://domain.com/wp-content/
Template: [theme]
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: [comma separated tags]
Text Domain:  [theme]-child
*/

With a child theme established, the child theme will adopt core PHP updates from the default theme without interrupting your CSS and miscellaneous PHP changes.

Push Child Theme to Bitbucket

Now that I’ve added my child theme to my local repository, it’s time to push it up to Bitbucket.

I use the following terms remind me how to use git:

  • Commit: Save with notes
  • Push: Upload
  • Pull: Download (We’ll come back to this.)

Sourcetree recognizes the addition of the files I copied from my hosting server. In Sourcetree, I clicked the ‘Commit’ button, left a note such as “Initial commit”, checked the ‘Push to remote repository’ box, and committed. This committed (save with notes) and pushed (upload) the files to Bitbucket. The entire batch of files included the note “Initial commit” (or whatever comment I left).

From here on, any changes I make to the files in [theme]-child automatically appear in Sourcetree, ready for commits and pushes.

I try to make it a practice to commit any single change I’m satisfied with. Occasionally, multiple theme changes will be included in a single commit, because I’m human and forget to save and note every little thing I’m doing.

Automatic Deployments to Production

At this point, I was able to make changes and test locally. Once satisfied with my changes, I was able to commit and push these changes to Bitbucket for change tracking and safe keeping.

Now, if you are truly comfortable with your changes, you can set up an automatic deployment to your production server. Note that a safer practice is to set up a staging server to push to first. This ensures your changes are reflected to your liking on the web, saved in the event something detrimental occurs to your local server, and allows you to build on several changes before deploying to production. For Zero Counts, I feel safe with my only testing locally and pushing directly to production. The changes I’m making are usually minimal and the audience size doesn’t necessitate that I be coy about changes as they hit my site. I leverage my small readership for design feedback and make small, visible tweaks often.

Bitbucket includes a feature called Pipelines that will detect when changes have been pushed to my Bitbucket repository, triggering a push of the changed files from Bitbucket to my production server.

For a thorough step-by-step tutorial on setting up Bitbucket Pipelines with WordPress.org, look no further than Peter Brumby’s excellent article, ‘Continuous delivery for WordPress using Bitbucket Pipelines’.

To enable Pipelines, I needed to provided Bitbucket with my SFTP username and password.

  1. Sign into Bitbucket
  2. Select my repo
  3. Choose ‘Settings’
  4. Under PIPELINES, choose ‘Environment variables’
  5. Add SFTP username: Type variable = SFTP_username, Type value = [SFTP username]. Click Add.
  6. Add SFTP password: Type variable = SFTP_password, Type value = [SFTP password]. Check the Secured box. This will obfuscate the SFTP password on Bitbucket.com for additional security. Click Add.

Once I set up my SFTP login credentials as variables, I needed to write instructions for Pipelines to sign into my SFTP and copy the changes I pushed from my local repo to my remote repo ultimately to my SFTP, thus, to ZeroCounts.net.

Pipelines are controlled with a YAML (.yml) file. This essentially provides Pipelines with a set of instructions once a ping from a webhook is detected. (A webhook is like a push notification for servers.)

The YAML file for Zero Counts looks like this:

image: php:7.0.27

pipelines:
  default:
    - step:
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp push --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/themes/chunk-child

The gist of these instructions allows Git to log into my SFTP and copy only the changed files to my production server. The aforementioned article by Peter Brumby explains these steps in more detail.

Mobile Theme

The above is all well and good for desktop theme development, but mobile proved to be a different beast.

I use Jetpack for WordPress analytics and my mobile theme. Jetpack comes with a default mobile theme that can be altered, much like the default WordPress theme. I installed Jetpack on my local install of WordPress from the local WordPress dashboard. The mobile theme lives at ~/Sites/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven.

To set up the remote repo for the mobile theme, I copied the contents of minileven/theme/pub/minileven from my local WordPress install to a folder on my desktop. I then deleted the minileven folder and created a new local (+ remote) repo from Sourcetree named ‘minileven’ in /wp-content/plugins/jetpack/modules/minileven/theme/pub/ and copier the contents of the copied directory back into it. It seems a little redundant, but I wasn’t sure how to initialize the existing minileven directory as a local repo. Once the files were copied back in, I ran an initial commit to the remote repo. Now I was able to track changes to the mobile theme.

Remember the bit above about updates to WordPress themes not affecting the child-theme? Jetpack does not support child themes. After a Jetpack update, a customized mobile theme is overridden by Jetpack’s default theme. (I’m sure I can find what controls WordPress child themes, but that’s another project for another day.) Therefore, after accepting a Jetpack update, the custom mobile theme needs to be pushed back up to Bitbucket to override the default Jetpack theme that sits on the production server.

In this case, there are two types of deployments:
1. Regular mobile theme updates (like my desktop theme updates)
2. Replacing Jetpack’s default theme after a Jetpack update

Remember that YAML file I set up for desktop theme updates? A nearly identical set of instructions can be used to cover item 1. Item 1 is the default pipeline that will run with regular pushes to the remote repo.

For item 2, I needed to create a custom pipeline that I can manually trigger from Bitbucket. I cleverly named this pipeline “full-deploy-after-jetpack-update”. I only run this after a Jetpack update.

image: php:7.0.27

pipelines:
  default:
    - step:
        script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp push --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven
  custom: # Pipelines triggered manually
    full-deploy-after-jetpack-update:
      - step:
          script:
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init --user $SFTP_username --passwd $SFTP_password --verbose sftp://ftp.[host]/home/[username]/[domain]/wp-content/plugins/jetpack/modules/minileven/theme/pub/minileven

The difference between these pipelines is push vs init. Because the Jetpack update wipes out my custom theme, it also wipes out the git tracking sitting on my production server. The git files need to be replaced and therefore re-initialized. (Initialization is still a little beyond my full comprehension, but I basically understand.)

Now that I was tracking changes of the mobile theme, I could begin work on my OLED-first (black/dark) mobile theme. As of this post, it’s still a work in progress, but I’m pretty satisfied.

iOS Development

With having a mobile theme in place, I began thinking about how neat it would be to develop on a mobile device. This is far from perfect, but it’s gotten me out of binds a few times now.

A little app called Working Copy allows me to latch on to my remote Bitbucket repos, make changes to the files, and push those changes up to Bitbucket, thus triggering a deploy to my production server.

The free version of Working Copy can be upgraded to the Enterprise version. Bonus: The dark icon sticks around.

I wanted to be able to use a full iOS compatible IDE and wanted Coda to be that tool. After paying for Coda for iOS, I found I was mistaken. It doesn’t seem to offer the ability to latch on to remote git repos like the desktop app does. Someday…

Next

This whole endeavor was my January 2018 project. I’ve only recently been able to sit around and write this all out.

There are certainly steps I’ve missed and efficiencies to be found. If you are following along and find glaring issues or gaps, let me know. I’m happy to help and update this post. If you find issues with this process, I’m also all ears. The biggest potential issue being the lack of a staging environment. I’ll put that next on my docket.

Tagged , , , , ,

‘Everyone feels lost all the time’

Uncharted director and writer Amy Hennig and Campo Santo (Firewatch) founder Sean Vanaman in conversation for Polygon’s excellent 2017 Year in Review essay series:

Amy Hennig: I talk to students and young developers sometimes, and they’re always sort of amazed to find out that everybody has imposter syndrome.

Sean Vanaman: I still feel like I’m ripping everyone off.

Amy Hennig: You look back at your own work and go, “I’m not even sure how I did that.”

Sean Vanaman: Exactly.

Amy Hennig: So even though you have this underlying sense of faith and tell yourself, “Well, I’ve been here lots of times, and I’ve always figured out a way to solve these problems, so I’ve got to relax and assume that I will figure it out again,” in the moment you’re like, “I don’t know how I did that before. I don’t know what I’m doing.” And everybody feels that way. It’s something I haven’t heard creative people talk about that much until recently. I always hear this sigh of relief when I bring it up. Everyone feels lost all the time.

This is a wonderful conversation between polar perspectives. Whether you’re running a large ship or a tiny dinghy, self-doubt is inevitable. I’ll add that it’s not just the captains that encounter it.

The quicker everyone and lay bare their uncertainties, the quicker the entire crew can sail in the same direction.

Tagged , , , , , ,

Dark Souls: Remastered Announced for Nintendo Switch

During today’s Nintendo Direct Mini, Nintendo announced Dark Souls: Remastered will be heading to the Switch on May 25, 2018. The title will also be launching on PC, PS4, and Xbox One.

This continues a trickle of AAA third-party ports to the hybrid portable/set-top console. In 2017, among other third-party ports, Bethesda released Elder Scrolls V: Skyrim and DOOM to the console and will soon to be releasing Wolfenstein 2: New Colossus.

Dark Souls was originally released in 2011 for PS3 and Xbox 360. It spawned two sequels and riff Bloodborne.

I have never played a Souls game. The idea of sitting in front of a TV, beating my head against an insanely difficult boss for hours on end is not a luxury my life can afford. However, doing so on a portable console is a whole different story.

Killing hours traveling, accompanying my wife on the sofa, relaxing in bed, stealing myself away to any place to chip away at a game are the reasons I’ve tucked my consoles away. Furthermore, the ability to quickly put the Switch to sleep and seamlessly launch back into a title make it my ultimate gaming device. For all of these reasons, I feel the Switch will allow me to join the Souls conversation, finally.

While Dark Souls: Remastered is the first of the series, the announcement of another classic PS3/Xbox 360 port to the Switch extends my enthusiasm for the console. I’m reminded of how tickled I was seeing this tweet by Jon Cartwright:

Honestly, it’s remarkable to see a Nintendo console glean so much third-party support. I’ll just keep my fingers crossed for Cuphead.

Tagged , , , , , , ,

Miyamoto: ‘I always look for designers who aren’t super-passionate game fans’

Simon Parkin reporting for The New York Times:

Even people like Mr. Miyamoto, 65, a leading figure at Nintendo since the 1980s, is ceding control at the company’s Japanese headquarters.

“More and more I am trying to let the younger generation fully take the reins,” Mr. Miyamoto said.

This younger generation has been carefully chosen; Mr. Miyamoto says he wants people who are more likely to create new kinds of play, rather than merely aim to perfect current ones.

“I always look for designers who aren’t super-passionate game fans,” Mr. Miyamoto said. “I make it a point to ensure they’re not just a gamer, but that they have a lot of different interests and skill sets.” Some of the company’s current stars had no experience playing video games when they were hired.

Tagged , , , , , , ,

Joy-Confirmation

Andrew Goldfarb reporting for IGN:

According to Koizumi, part of Switch’s appeal may be the hardware itself, which allows playing to be a different social experience than smartphones can offer.

“Just to add a little bit to this idea of how people viewing smartphones as an influence on the future of portable gaming, I certainly wanted to see all the possibilities of having controllers that could be separated from the hardware, so that you could be able to hand one to another person in a variety of different environments,” Koizumi added. “I think that really represents an amazing advantage over smartphones. That was something that we had focused on very clearly as something we could achieve to reach that distinction.”

It may not add much weight, but here’s an image after my younger cousins swarmed me at Christmas, asking if I owned the Switch.

Tagged , , ,

The Verge: ‘Nobody would be talking about the Switch if it wasn’t for the games’

Andrew Webster on Nintendo’s A+ “Verge 2017 tech report card”:

Hardware has rightfully been the focal point of Nintendo’s 2017, but nobody would be talking about the Switch if it wasn’t for the games. And Zelda isn’t enough to make a successful console. That was one of the Wii U’s biggest issues; while it had some excellent titles, there were often months that went between notable releases. Since the Switch debuted in March, Nintendo has released a steady stream of acclaimed games, several which were ports or sequels to Wii U games that not enough people played. Mario Kart 8 got a deluxe edition, for instance, while the colorful shooter Splatoon received a revamped sequel. And while most of the third-party games on Switch were ports, with older games like LA Noire and Skyrim, they felt new and exciting again on the hardware.

I still believe there is a valid debate for Nintendo’s greater achievement of 2017: The Switch or The Legend of Zelda: Breath of the Wild.

(Note: Nintendo received the first A+ Verge tech report card.)

Tagged , , , , ,

‘In 2017, I Turned to Video Games to Avoid Trump and Conspiracy Twitter’

Justin Charity, The Ringer:

These alternative histories are false — but thrilling. My playing through them isn’t exactly productive, but I can’t say that my year-long gaming retreat has felt any more wasteful than the supposedly more mature engagement with politics by way of media, including social media. Wolfenstein II is escapism; and so, for the most part, is the ongoing debate about whether classical liberals should punch Nazis: They both induce fantasies about power and choices that most of us are unlikely to prosecute in the real world. Ideally, we organize. We lobby elected officials, we activate our neighbors and whatever followers we have, and we vote. But American progress is a long haul. In the grand scheme of Trump’s presidency, a 100-hour role-playing game is still a much more sensible way for me to squander my downtime than reading viral strains of conspiracy theory, surrendering what little serenity I have left in these dire times. If I want to obsessively watch the world collapse at the hands of a corporatist egomaniac, I’ll replay Horizon: Zero Dawn.

Tagged ,

Nintendo of America launches Nintendo Power Podcast

Nintendo:

Nintendo of America has released the very first episode of its new Nintendo Power Podcast. With Nintendo Power Podcast, Nintendo employees, developers and special guests discuss the world of Nintendo – from Mario to the Legend of Zelda, and everything in between.

The first episode of the powered-up podcast features an in-depth interview with Nintendo developers Eiji Aonuma and Hidemaro Fujibayashi about the making of the Legend of Zelda™: Breath of the Wild game.

Also, Nintendo of America employees Chris Slate (previously editor-in-chief of Nintendo Power™ magazine), Damon Baker (from Publisher and Developer Relations) and Kit Ellis (co-host of Nintendo’s weekly YouTube show Nintendo Minute) take a look back at Nintendo’s action-packed 2017.

I missed the boat on the original Nintendo Power magazine. As a Genesis kid, Nintendo Power was the extra flair that made me envious of my NES and SNES owning schoolyard peers. A brilliant marketing gimmick that helped build Nintendo’s IP into cultural touchstones for our generation.

Hearing word of Nintendo’s newly launched Nintendo Power Podcast rekindled those old memories — a new marketing gimmick and bolstering of IP for a new generation. And I’m happy to report that the podcast is a quality production that extends beyond news and marketing fluff. The banter from hosts Slate, Baker, and Ellis is honest and really no different than some of my favorite podcasting cross-talk, but with nice perspective from within the company. The quiz section is a great hit of nostalgia. And the interview with Eiji Aonuma and Hidemaro Fujibayashi sheds light on much of the design origins and thinking behind one of the greatest games ever made.

It is with relief that I see potential for depth in this show. It seems Nintendo understands the overlap of podcast consumers and Switch owners — 77% of podcast consumers range between the ages of 18-54; 80% of Switch owners range between the ages of 19-44. That’s not a market for pure marketing fluff.

The final touch of polish is that n the theme; an evolution of of Nintendo console sound design. It reminded me of the logo I designed for the Ported Podcast — the Ported Key.

Tagged , ,

‘But then Nintendo released The Legend of Zelda: Breath of the Wild’

Victor Luckerson recapping Nintendo’s year as “The Best Tech Story of 2017″for The Ringer:

It all seemed like enough to burn through the last of gamers’ goodwill for the often maddening company. But then Nintendo released The Legend of Zelda: Breath of the Wild, and a lifetime’s worth of anti-consumer transgressions were suddenly forgiven. In an era filled with cynical IP cash-ins across entertainment, Nintendo used a formulaic, nostalgic franchise to deliver a fresh reinvention of open-world gaming mechanics. The game is an adept mix of old and new, borrowing elements of Skyrim and Minecraft but augmenting them to recreate the whimsy, mystery, and intrepidness that a lot of gamers felt the first time they booted up the original Legend of Zelda or the seminal Ocarina of Time. The gushing praise for the game, the best-reviewed title of the year, proved that endlessly cynical gamers will always have a soft spot for a Nintendo classic done right.

Zelda immediately transformed the Switch from a curiosity to a must-have gadget. Gamers like Yai Torres, a 30-year-old resident of Arlington, Virginia, who had skipped out on the Wii U, got the system the day it launched. “It’s been a while since I’ve had a Nintendo product but I’ve always been a follower in terms of the latest games,” Torres says. “The fact that they had such a cool console with such a cool game clicked for me.”

I’m still pondering whether The Legend of Zelda: Breath of the Wild may be a bigger achievement than the Switch. Would Nintendo have had such a stellar year if the Switch launched with Super Mario Odyssey?

(Aside: Fun to see Victor end his piece where I was originally going to begin mine: the insanity of 2017.)

Tagged , , , , ,