A few months ago, I attended SETIcon, which was all-around wonderful. However, I thought that the panel on science and videogames left quite a bit to be desired. Several SETI-themed games were presented, but I felt that they were more about overlaying a SETI theme on unrelated mechanics.
Which got me thinking… what would a game that lifted its mechanics (as well as its theme) from SETI look like? I had an idea that I thought could work, and it sat around in my notebook until this past Sunday when I found myself at a laundromat with a laptop and some time to kill.
The game takes the form of a puzzle game, where the player has to tweak settings to extract a digital image from a noisy analog signal. The fiction of the game is that aliens are sending a sequence of 1s and 0s that will create an image when properly viewed. However, there are a couple of obstacles in the way:
- traveling through space has rendered the signal noisy
- the player doesn’t know the specifics of the alien transmission standard
So, the player has three things that they can alter:
- the threshold of what amplitude constitutes a 1 This translates the analog signal (the top-left waveform) into a digital one (the bottom-left)
- the width (in time) for each sample This alters the way in which the analog signal is translated into the digital.
- the width of the image This controls how many pixels there are per row of the final image (displayed to the right
The threshold value can be changed by clicking and dragging the gray box, and is represented by the green horizontal line. The other two values have to be entered in the fields at the bottom of the interface (for now- I plan on making them visually draggable as well).
I wrote a small Python script that can be used to translate a given low-resolution image into a sequence of noisy values (like this). The demo only has one image, but it’s one that’s bound to be familiar to SETI enthusiasts and science nerds in general.
To try it for yourself, head here.
As I work my way through Stanford’s excellent online class on the design and analysis of algorithms, I’ve decided to up the ante a bit on the homework assignments- not only will I do the stated assignment, but I will also wrap it up in some manner of game or game-like interactive demo. This is the first such demo.
This week’s assignment was to implement merge sort and then to modify the merge sort implementation to count the number of inversions (or out-of-order numbers) in an array of integers. Inversions are useful, as they allow two lists to be compared, with the number of inversions functioning as a metric of how similar they are.
In this game, the goal is to guess the correct ordering of the eight colors. Each time the page starts, a random order is selected. To play, try to guess what it is by clicking on the color swatches to the left in an order of your choice. Once you’ve ordered the eight colors, you’ll see a small version of the order with a red/green bar at the bottom. The red/green bar corresponds to how far away you are (number of inversions / max possible number) from the correct order. The game (although a very hard, possibly unfun one) is to use the information about past guesses to inform your choices.
I finally got around to playing Bastion this weekend, thanks to the always-amazing Humble Bundle.
Click on the image to see if for yourself. Art for the character and the television came from opengameart.org.
I just participated in my first Ludum Dare competition, with the theme ‘Tiny World’. My game is a bit small, even by Ludum Dare standards, as I’m currently on vacation, so only had the plane ride, plus a bit of time here and there to work on it (not that I’m complaining ).
In the game, you take on the role of a planet builder, tasked with creating planets from matter floating through space. The game lies in rotating the planet so that the matter is evenly distributed, and rejecting matter of the wrong type (each level has different requirements for the planet).
To play the game, either click on the image, or go here.
I was playing Magic: The Gathering recently with a friend at a local bar that so happens to have a dedicated darts room.
That got me thinking- why not have a collectible darts game? After some thought, I nailed down a rough draft of a design, with the following elements:
- The collectible/swappable component is the fins of the dart (“flight”) on which is printed stats and abilities
- The setting/theme of the game is future fantasy, with players competing to mine resources from a planet (the dartboard) by sending units down to the surface (throwing darts)
- All units have:
- a mining stat, combined with the value of the section the dart hits to determine amount of resources gathered
- a combat stat, used to resolve combat between units
- [optionally] an activated ability of some kind, for example: [R] + 5 to mining, which would mean that if the dart lands inside a red section of the board, it earns 5 extra units of resources
- Play proceeds with players alternating to throw darts
- Combat is resolved at the end of a round, and the resource totals are added to each player’s running tally
- The first player to gather a set number of resources (100?) wins
I’m still thinking through the combat system, but in the meantime I wanted to be able to generate some prototype pieces to start playtesting. As such, I wrote a small Python program that accepts a text file describing units and generates a printable PDF that can be used to make flights. I’ll likely be changing the design of the flights a bit (altering the shape and making them slightly bigger), but it’s a good start. To see the generated PDF, go here.
This was a small project I put together for my girlfriend’s birthday party. She wanted to play a party game whereby:
- a topic is presented
- each player writes out a response
- all the responses are read aloud (with ensuing hilarity)
- everyone tries to guess who said what
I put together a web-based version of the game that we then projected onto the wall of her living room. The game is controlled by a strip of controls along the bottom of the page which, when presented fullscreen, is cut off by the way I had the projector set up.
The controls allow for a new entry to be entered, with both the name of the person that said it and what they said. Only the actual statement is shown, with the name being hidden. Once everyone has submitted their answer, the ‘Reveal N’ button steps through each answer, revealing who said what.
Just threw together a small tool to help generate game design ideas. The page presents two game mechanics (drawn from the excellent list at Board Game Geek), and two subjects. Mousing over either mechanic shows the description, and reloading the page presents a new combination.
To check it out, either click on the image, or go here
I recently started work on a mobile game for Android and iOS using the CoronaSDK (which I’m loving so far), and one of the mechanics in the game is the solving of cryptogram puzzles.
I just put together a first draft of what the cryptogram solving interface will look like. Features:
- User can touch a letter to highlight all occurences of that letter in the ciphertext
- User can (with a ciphertext letter higlighted) select a letter to replace it
- The selected letter then appears over all occurrences of the ciphertext letter
- The selected plaintext letter is greyed out to indicate that it has been used
- Once all the letters have been filled in correctly, the app recognizes that the puzzle has been solved
I’ve started playing with the Corona SDK just recently. It looks to be a great way to develop games for both iOS and android devices, and (as a bonus) relies on Lua. Finished a simple demo last night, where a player character responds to a screen touch by walking over to the point indicated, playing one of four different directional walk cycles.
The code isn’t the cleanest, but it’s enough to let me start to get a feel for the way Corona deals with sprite sheets. All of the art assets were lifted from Open Game Art- an awesome resource for game demos.
This was an experiment with a soldering mechanic that I put together a while ago, implemented as a java applet. I’ve long felt that crafting mechanics in games could stand to be a lot more fun and a lot more interesting, and possibly even teach players something about how such a thing functions in the real world.
This demo was an experiment in implementing a soldering mechanic whereby players have to control the distance between solder and a soldering iron in order to make solder joints. This isn’t really a full game at present, and it would require both target areas and some form of time limit to make it so. I still think it stands as a proof-of-concept, though.
To try it for yourself, head here.