Play Testing!

It’s been a short while and Connor and I have had another “game dev” session! He brought his journal with him and it had some ideas! So, we went about play testing some of the ideas from the first session and some of the ideas in his journal.

The Story… So Far…

For this particular game, we already have a platform with a story. It’s a rather simple story without all that backstory that enriches characters. The story is essentially: “Escape the city on the helicopter or capture enough zombies surviving won’t be an issue.” Pretty simple and straightforward. We could always expand this later with, perhaps an actual story? Maybe a few named characters? Who knows!

Goooooooooooooal!

So we have a story, now we need goals. Goals tell players how to win. The original is “escape” but typically comes down to “prevent your opponents from escaping” in actual play. This becomes boring and ends in a long slog through the game until someone flips a table or everybody just gives up.

We didn’t want to play a game like that. We want a fun, albeit challenging, game to play with friends that resolved in a reasonable amount of time. These are our goals. With these goals in mind, we couldn’t see any other ways to win other than “escape.” So we made the game goal “escape with your friends” to set the tone that this game is cooperative!

But escaping is hard, and the original had somewhat of a fail-safe: collect 25 zombies. That sounds reasonable to keep, maybe “25 zombies for each player playing the game”? That seemed better so we went with that!

Mechanics Schmechanics

So if a story is the who, what, when and where and the goal is the why, mechanics are the how. This is how a game is played. In Monopoly, you move around the board buying properties and building houses and hotels so you can collect money. Build and buy enough and your opponents can’t pay the bills and go bankrupt. These mechanics (dice, properties, rent, houses, hotels, mortgaging, passing go, Change, Community Chest) are all the mechanics of how you play Monopoly. They also fit in with the story of being a real estate mogul and the goal of being the last one  in the game. This synergy is hard to hit with mechanics unless the story and the goal are related and aligned.

Card Change Up

So most of the cards in the standard deck revolve around messing with other players. We knew we needed to replace those. In our previous brainstorming session we talked about getting players to work together instead of against each other so we though of how new cards could be added to help that happen. As you could probably imagine, this lead to extremely over powering cards like “Capture all Zombies.” So we talked about the different aspects of games like the story/ploy, player goals, and game mechanics and how they all worked together.

Search and Replace

We struggled with the current card mechanics and how to change them. There was definitely something off with the standard game because it focused more on sending zombies to the opposing players than surviving. What zombie apocalypse has people fighting against the world and not teaming up? So we removed all the “opposition” cards that hurt your new teammates and thought up some alternate cards. We came up with a few replacements and wrote them down on a piece of paper. I broke out the card protection sleeves slipped the original card in it and the piece of paper in front of the card. Boom low budget prototyping.

After adding some risky cards and some beneficial cards it quickly became clear that we needed to change up the deck mechanic and introduce a search mechanic. So we split the deck into “Items” and “Search” decks. We added some proxy cards into the Search deck for drawing an Item (currently the only way to do get an item). This seemed great! We got more weapons and there are risks of searching (like finding a zombie or misplacing/breaking a weapon). This mechanic helped a lot. it got more weapons and items in play and it organically made us stick together for protection. It was a great step in feel for the way we imagined this game playing out.

Weaponized

We found the standard weapon mechanic too limiting. It requires you to go to a specific building after finding a weapon to actually use the weapon. This seemed backwards to us. Once you find a weapon you should be able to use it. So, we lifted that restriction and found that they suddenly became way too powerful! We talked about balance (which is a rather difficult concept to understand). So I offered up a “durability” check when you use a weapon to balance this mechanic. This introduced some risk to using a weapon since it can break. It worked great but weapons were still too powerful. The original game has a concept of increasing your combat roll with a bullet token. We opted to keep that mechanic as more of a general representation of “effort” when you are in combat without a weapon — you may or may not need it. But, once you have a weapon, you aren’t making combat rolls. So this seemed to be a little uneven. We decided to have using a weapon cost a bullet token as ammunition in addition to the “durability” roll. This ended up working out great so far! You have the safety of a weapon but if it breaks, you’re low on effort/energy since a disheartening event just occurred and your risk just increased.

Life or Death

We only kept the basic weapons in the game. Some of them remained one-time use (grenade and Molotov) and we buffed some of them (shotgun has a range of 1). We still didn’t end up searching as much as we hoped. While the search and item decks seemed to have complementing risk and reward, opting to search seemed too much of a risk in itself. We hadn’t changed any of the main mechanics so that you were more likely to want to search. So, we took out heart tokens from building spawns and added Armor to the items deck. Other than First Aid Kits the only way to get life now is through Armor. But, there are limited armor items in the deck (need to still play test that one with more people). So, we talked about repairing items. If a weapon or armor breaks, we just tap it (turn it sideways) to mark it as broken. Broken items can be fixed with a Repair Kit.

Sharing is Caring

This is going great! We have weapons to survive, a reason to search for things, and a way to fix the things we found. What about helping others though? We talked about Pandemic and how researchers can share their research. What if players could share their inventory items? We tried it out. Players have to be on the same square and the active player can forego moving to give 1 item to a player on their square. This seems balanced. It requires communication on trades, planning for meeting up, and both players essentially sacrificing their movement (the receiving player has to use their movement to get to the trading player). This happened almost immediately with armor when Connor found 2 pieces. It sparked the talk on armor tokens remaining on their respective armor cards and how it travels with the armor.

Conclusion

This session was awesome! We have a semi-playable version of our modified Zombies!!! co-operative game. Brainstorming is one thing, but seeing your ideas in action and how it plays out is so much more informational. We almost immediately saw flaws in our ideas, discussed them, did a quick brainstorming session on how to fix it, then tried out the new way. These iterations helped Connor understand how players interact with different mechanics and how they all play together. He’s still got his journal and he’s still writing down ideas. We are both looking forward to the next “game dev” session!

Braaaaaainsssstorming…

The other day I was playing a tabletop game with my son. It was Zombies!!! If you haven’t played it, it’s a tile based tabletop game where you play as a human trying to escape a city filled with zombies. The world starts as 9×9 gridded square. Each turn a new tile is played growing the city larger and larger all the while filling it with zombies. In this game you would rather feed your friend to the zombies to get away then help him out of a jam. So, yes, it’s hyper competitive. The game has its downs though. The only way to win is by either capture 25 zombies, or escaping on the helicopter (last tile in the deck). You can slow your opponents down by dropping zombies on them. As the game progresses, the mechanics break down and the game becomes how fast can you send players back to start. The game has a ton of potential. So we decided to change up some mechanics to see if we could turn this into a multiplayer cooperative game (a kin to Pandemic). What better way to start working on a zombie game than brainstorming!

Brainstorming

So, my son just turned 10. He’s excited (really excited) about Fortnite and YouTube and Twitch! So, I brought up tabletop games. Why not make a game? So, I showed him different type of games. He already knew about card games, and I’ve been showing him other board games like Ticket to Ride First Journey, Pandemic, Life on the Farm, and Monopoly of course! He hasn’t played a tile based game so I thought Zombies!!! would be a great gateway into thinking outside the box (or board) and into a more open format game. So, as we quickly became board with this game in its current condition, we asked ourselves.. How could we make this fun? Connor was the first to answer with “Why aren’t we working together to escape?” which is a great idea! It’s the zombie apocalypse! When have we ever seen a zombie apocalypse that doesn’t have a band of humans (good or bad) working together for survival? Seems like a great idea! Added it to the list. We went down different ideas and talked about how that would affect the game and if it would make it too difficult or not fun. We added them to the list and came up with a bunch of ideas. Here’s some general ideas of where this brainstorming led:

  1. Players work together to escape or capture enough zombies
  2. Different decks to search from
  3. Change the layout of the tiles
  4. Some sort of inventory system
  5. Some better weapons system where they aren’t one-time use

Connor seems very excited to continue the next session that he’s keeping a journal of ideas to share next time! I’ll keep updating this series as we progress in our game! This activity was definitely more fun than I expected and am looking forward to regular “game dev” nights and hopefully a better game to play and share with friends!

GopherCon 2018

So, this was my first ever development convention. I gotta say.. it was pretty awesome and I’m not sure why I haven’t gone to one earlier. In this post I’m going to try and explain what GopherCon is, why you should go next year, and some travel tips that may help you.

So.. What is GopherCon?

It’s a convention! More importantly, it’s a convention of Gophers who are all passionate about coding in Go. Many are open source contributors, all are open source consumers. If you are interested in meeting people in the community this is the place to be. If you couldn’t make it this year, see if you can next year, it’s definitely worth it. Heck, maybe you can get your employer to foot the bill because you will learn a lot! I almost immediately started applying things I learned to my codebases to learn more about them!

If you couldn’t make it to the convention or to all of the talks you wanted to attend, don’t fret! SourceGraph did live blogging live blogging and all of the talks were recorded [links to come as they get posted]. So, if you were freaking out because you weren’t able to keep up in taking notes or you really want to attend Kat Zen’sHow Do You Structure Your Go Apps?” and Filippo Valsorda’sAsynchronous Networking Patterns” but they both happened at the same time (totally the dilemma I was in, I picked Filippo’s), the talks were all recorded and will eventually be available online! Kelsey Hightower had a great talk on Going Serverless which I am very interested in implementing in my side projects.

All work and no play makes a sad Gopher. There are parties on the schedule each evening. Monday’s was at the Denver Performing Arts complex and had free food from some awesome food trucks, pool tables, fooseball tables, bocci ball, corn hole, and Jenga towers. There was also the one and only live GopherCon band. If you are musically inclined (or think you are and want to get up on stage) anyone can be part of the band! They played some awesome cover music and a bit of live karaoke. The ending was a smash hit!

Why Should You Go?

But why should you go if everything is put online after the convention? The short answer is that the experience you have and the immersion in this convention culture will gain you friends and expand your network. You don’t stop talking about a talk you attended when it ends, you find out other people you are getting together for a meal also went to that talk and you get differing viewpoints on the topic of discussion. These alternate view points help drive home the purpose of the topic — to get a discussion started. The topic in a talk isn’t the answer for the topic itself. It’s a starting point; a spring board to innovation and collaboration around an idea.

If you are new to Go, this convention is a welcome wagon of sorts. It’s an intro course for ideas you may be familiar with and a deep dive into topics you’ve never thought about. It exposes you to the online Gopher community and culture of inclusion that I’ve rarely seen in online communities. Everyone wants to help everyone else. Everyone wants to contribute to everyone’s ideas.

There’s also a Gopher Slack (go, click and join right now… I’ll wait). This community is awesome! It’s a global community of Gophers that all want to make Go better and be better at Go. This community is the hub I go to now for all things Go related. Got a question? Ask! Got a problem? Discuss! Got a solution? Share! Maybe you can overcome that huge problem you’re having and present it next year at GopherCon’s community day or as a key note!

During the convention you have the opportunity to meet various vendors and the speakers to get to know them, learn about what they are doing and make some new friends! You also get to meet the faces behind the users in the Gopher Slack community (you joined right?). There is so much I learned about various products, what other companies are doing, and more about Go than I ever expected to learn here!

SO. MUCH. SWAG. Aside from awesome stickers, shirts and other swag, there was a raffle this week for a Microsoft Surface Pro, Oculus Rift, and an iPad! Sadly, I did not win any of these. But, someone at my table did win the Oculus Rift. The positivity at the convention was alluring.

Sadly, since this was my first GopherCon and I didn’t know how it worked, I missed Community Day. But, this day is a day for the community with lightening talks, hackathons, and meetups. There is so much going on I wish I could delay my flight and book another night just to continue hanging out with these awesome people doing cool things I’ve never done before, while also continuing to meet new people and learn new things.

Travel Tips

So, this was my first GopherCon. It was my first convention too. But, it wasn’t my first time flying out somewhere for a long period of time. If you travel a lot, go sign up for TSA Precheck it’ll save you a lot of time getting through TSA if you do frequently travel.

All the points! Book where you get points and fly for points. I am a Starwood Preferred Guest (referral link!) member. They recently merged with Marriott so you get benefits across 29 or so hotels so you have a ton of hotels to choose from!  I generally fly Delta so I’m a Delta SkyMiles member. They recently teamed up with Lyft (referral link) to offer SkyMiles points when you link your Lyft and SkyMiles accounts!

Lastly, leave some room for swag! I got lucky and was a smidge below the 50 lb weight limit on checked bags (although, my bag is also ridiculously heavy). If it is over when you go to check it, you might be able to shift some things to your carry on to get it under the 50 lb (22 kg) limit. Pro-rip: Rolling your clothes saves room in your bag.

Hello world!

So, after much consideration, I’ve retired from computer repair and decided to re-launch a site to focus more on my passion: developing solutions to interesting problems. My goal is to document my forays into the unknown (to me at least) for later reflection. Maybe it’ll help someone facing similar issues.

I have a few projects lined up and I’m considering resurrecting older projects to make them more modern. I’m currently working on a service for No Man’s Sky that allows a user to determine what they can build given resources they have (or could gather). More on this in another post.

I recently completed a Discord bot for Tom Clancy’s: The Division that leverages the very nice and clean APIs at Ruben Alamina’s site to easily search all the vendors when the reset their inventories. This too, I plan on writing up in a later post.

So, this site is running (finally) and I plan on writing up how I made it all automated, repeatable, version controlled, secured and backed up. I haven’t worked much with Docker before, but I do understand the concepts. This site runs on Docker! It’s in it’s own little container with a mounted Docker volume for plugin files. It’s also fronted by Nginx or, more specifically, an nginx-proxy container with a Let’s Encrypt companion container letsencrypt-nginx-companion (go ahead, check the SSL certificate) that auto-magically creates, renews, and configures any new publicly exposed containers with their own SSL certificates provided by Lets Encrypt. The site is backed by a MariaDB Docker container with a mounted data Docker volume. The website volume is read-only mounted to a WordPress Backup container that is also linked to the MariaDB container. This WordPress Backup container periodically copies and compresses the WordPress files in the mounted volume and creates a database dump of the WordPress database. These are both stored on the mounted backup volume. This backup volume also happens to be mounted to a Dropbox container and all of these backup files go straight to Dropbox! So, if this server goes kaboom! All i have to do is relaunch the containers on another host and restore the backups from Dropbox!

That’s it for the teaser. It was a fun project and I’ll definitely be diving into the details when I get back from GopherCon next week. I’m sure I’ll have some goodies from that as well (the No Man’s Sky and the Division projects are both written in Go).

I hope you enjoy the project write-ups I’ll be adding here. It’s not all programming, I’m developing a game with my son. I do plan on writing up other things as well (we have a Raspberry Pi and home automation is something I’ve dabbled in a wee bit).

What are you interested in? What projects would you like to see? I’d love to hear about them so leave a note in the comments below!