top of page

Aliens are here to kill us all

  • Writer: teejaydub
    teejaydub
  • Sep 11, 2018
  • 8 min read

Last weekend, I attended the Indie Galactic Space Jam - an exhausting competition in which you pitch an idea, form a team, and create an entire video game in 48 hours. It's actually insane. But some cool games and friendships come out of it, so it's (mostly) worth the sleep deprivation. Here's how it went down.


Old school inspiration


The day before the Indie Galactic Space Jam began, I made a list (and had some friends throw in ideas) of video game pitches for the weekend. Those ideas ranged from rock-em-sock-em Voltron to "Now this is Podracing". Ultimately, the one I chose was Alien Among Us - a digital, space-themed take on an old party game called "Murder". Some of us may have played in middle school - it's the one with all of the handshaking and murdering and mystery. Alien Among Us is social deception party game, or, to put it in terms of ready-existing games, "Jackbox meets Werewolf".


For those who don't know about that handshake game, here's how it works.


To update the handshake murder game for the theme of the game jam, the story behind Alien Among Us goes something like this:


On humanity's largest space station, security is of utmost importance. Deep space aliens are our most dangerous threat due to their ability to disguise themselves as humans. In the event of an alien boarding the station, each human must use their mobile security app to verify the ID of everyone in the station to help determine and eliminate the threat. You must act quickly, as the alien threat will stop at nothing to kill every human on the station.

Adapting to technology


This digital version, as I imagined it, would not only be updated for the theme of the game jam, but also take advantage of technology to make the game even more fun. The first inherent benefit of going digital is the absence of a GM or "game master". In the handshake game, one player had to sit out to be the GM - they would decide who the killer was when preparing the game, and would verify accusations while the game ran. In a digital version, this role is no longer required, or rather, is handled by the computer.


The second benefit to digitalization is added immersion, and to that end, introducing gamified input. Instead of a literal handshake, we perform a digital handshake, using an interface that fits the lore. Players enter in a code to scan on their "mobile security app" which exists on their phone screen. Upon entering the code, they are greeted with a digital ID card, complete with photo, on their own phone screen. Players will even use their phone to perform the accusations, picking a photo from a lineup. In lieu of a real-life 'concealed finger scratch' to murder, the alien poisons players by performing a small gesture on their touchscreen. An added note is that in the digital version, humans won't even know they're poisoned until they receive the fateful "you are dead" message!


To capitalize on technology even further, I had the idea for the server that hosts the game to connect to a (preferably large) TV, and act as an Activity/Tracking Board that would not only show a representation of each player with name and photo as they played, but would also visualize avatar interactions. What that means is, when two people are investigating each other in real life, their avatars will rise up and glow green. When a human is killed, their avatar will now have a red border around it. The alien could potentially be discovered just by watching what's going on with the activity board!


The Technical Challenges


While establishing the scope of the game, I proposed three concepts that I really wanted to see in the game, but would pose as technical challenges. The intention being that all the challenges would be solved throughout the weekend. This transformed the game jam from what would conventionally be "make a completely functional game in 48 hours using tools you're familiar with" into "make a completely functional game in 48 hours, utilizing an unfamiliar framework that may or may not achieve your goal."


And that is the story of how I learned two new programming languages* this weekend.


The three challenges were:

  • Have any number of people play the game from their phone

  • Eliminate the need to install an app in order to support virtually any phone OS

  • Upon starting the game, take a selfie photo and send it to the computer to create each player's unique ID card

In some capacity, I knew this was plausible because I briefly and minimally utilized a plugin for that Maker Faire project I did a couple years ago. I recalled that it could facilitate the use of your phone as a gamepad controller through the browser and that it supported many players.


How to play Alien Among Us


I figure I should teach you how to play about now.


In Alien Among Us, an alien has infiltrated the ranks of humans on a space station. You play as either an alien or a human. Tap the info tab to see who you are, but don't show anyone that page! If you are a human, you use your mobile phone to scan every other player in the game, looking for the alien. You do this by asking other players for their 3 digit ID code, entering it in the keypad, and sharing your code with them.

This will bring up their ID page which looks like this:

You will see their photo, name, occupation, home planet, and what ship they arrived on. One way that an alien can be detected is through their ID. An alien ID will change after a certain amount of time. The alien ID will always have the same name and photo, but their spoofed ID will present a different occupation, home planet, and ship they arrived on after a random time interval expires. This means you will have to check the IDs of people you have already scanned to see if you can spot the difference! The other way to detect the alien is by being observant of what is going on around you. The alien will be killing humans, but it is a delayed kill. Once the human is poisoned, they will have to scan two additional IDs before dying. An observant player can construct a timeline of who is dying and deduct who the alien must be!


If you are the alien, you will also be scanning the IDs of all of the players to blend in, but you have the ability to poison any player you interact with. To poison another player, after typing in their ID code, instead of tapping on the checkmark to confirm the ID, you hold down the checkmark for a brief moment, then let go. This will open up the ID page just as normal, but you will have poisoned the human player. Note, you are not required to poison a human every time you interact. You can simply tap the checkmark to perform a normal scan.


The alien wins when all the players are poisoned or dead, or if there is one human and one alien remaining.


The humans win by accusing the alien. To accuse, tap the Accuse tab at the top of the page, which opens up the accusation menu. From here, you will see a list of all of the players with name and photo.

Tapping on a photo accuses the player. If you falsely accuse someone, you die. If you accuse the alien, you win the game!


Coding back and forth forever


To make a 48 hour long story short, our programming team of 3 did it! Through a combination of C#, JavaScript, and HTML, the game was fully functional, and more importantly, fully realized. The thing that I'm proud of our team the most for is the fact that we coded every single mechanic that was in the original design document. The scope of the game was never reduced from that document. I will note that as development proceeded, one mechanic was modified for gameplay reasons, but not for time.


As simply as I can write it (because I can't be bothered to draw a block diagram), for those that are interested, here's how the game code functions in roughly the right order:

  • Our Unity-generated executable is opened on the Host machine and loads the activity screen, and the game server listens for connections from phones

  • Players connect to the same WiFi network as the Host machine, and navigate to their browser to type in the game address

  • Phones connect to the Host machine, and begin loading the delivered HTML files

  • Players are prompted to enter their name, and take a selfie, through an HTML input element with an onchange function in JS that sends the image to the PC

  • The photo is received by our Unity game running on the PC and becomes associated with their device's unique network ID, then the phone waits for game to start

  • Once all players have connected, the game begins, the PC assigns each player an ID and a race, and the keypad interface view appears on everyone's phone

  • Upon entering an ID code, the PC confirms that it is valid, then waits for the other party to enter in the matching ID code

  • Upon the matching code being entered, the photo ID of the person is sent by the PC


  • At the same time, on the PC's activity screen, the two players that are interacting begin to glow green and rise up

I didn't want to take another screenshot so, yes, I know this doesn't match the IDs from the above pictures, but trust me it works
  • Upon tapping the "Accuse" tab, the PC sends all of the photos and names of all of the remaining players, and after the JS on the phone receives them, the HTML is written to make them a scrollable list

  • Upon tapping a picture, JS sends the PC the ID of the person to accuse, checks game states, and kills players as needed

  • Upon tapping on the 'Info' tab, JS looks at the type of player you are (human, alien) as defined by the PC, and then updates the text in the instructions to match

There was some pretty nifty code that was written to re-connect players if they refresh the page and restore them to the exact state they were in when they left which will undoubtedly prove to be very useful when lots of people play!


Closing thoughts


There are a few things I would have done differently. The pitch, while in my mind went well, didn't attract anyone, really, to our team. I explained the game, but where I think I made my mistake was leaving out references to existing games. Instead of saying "this is a party game and a social deception game", I could have said "this is like Jackbox meets Werewolf" and chances are, people would have connected with that more.


I would also like to become better at keeping track of development milestones to get a more comprehensive idea of what is left to do on a project.


The most concerning part of this project was that it was so technical in nature, we really couldn't test all technical functionality until the entire game was about 85% coded. It felt like such a tremendous risk, having faith that our individual codes over three languages would, in the end, all interact happily with each other and communicate properly. It turned out fine, but it could have gone south, one way or another. I want to get better at making tools to test technical functionality on these types of projects early on, to mitigate risk. We just didn't have the time to make those tools.


Thanks so much to Anthony and Chandler, who are really talented, really badass programmers. This wouldn't have happened without you guys.





 
 
 

Comments


bottom of page