Pinned Projects
HWND HunterSilicon Foundry
Pulse
Ruckingenur
Manufactoid
Flight of the Atropos
Infinitron
Infinifrag, Version 1.1
Wikipedia Quest
Notepad Weekend
Gregor Mendel's Pro-Botanist
External Projects
capAbility GamesYay Tags!

Newsletter

Search
Last Comments
Zach (Bureau of Steam E…): quadrapod: That’s terrify…Zach (Random Status Upd…): aj: Yes.
Vanel (Silicon Foundry): I can’t figure out for th…
theajblogger (Random Status Upd…): All the images are loaded…
quadrapod (Bureau of Steam E…): i got the cannon working …
Zach (Random Status Upd…): Although, now that I thin…
Zach (Random Status Upd…): Great! I was worried that…
quadrapod (Random Status Upd…): i did the same thing. i …
theajblogger (Random Status Upd…): This is kinda strange…As …
Zach (Ruckingenur Edito…): coach: Can you provide an…
XML
Upgrade Complete
Tuesday 15 April 2008 at 12:03 amIn case you haven’t noticed, I’ve switched to a new content engine – Pivot, to be exact. Hopefully, it’ll be better than Drupal was. Everything isn’t quite finished yet, though; I haven’t finished the layout, and I have yet to figure out how to organize my content such that it’s easy to browse and read.
Regardless, expect more frequent posts about more trivial things, along with some new projects, all hopefully coming soon.
Spaceship Parts
Monday 14 April 2008 at 11:48 pmWhen I built the Atropos, I learned the valuable lesson that it’s difficult to create props (read: spaceship components) that look realistic. Since then, I’ve begun hording what I casually refer to as “spaceship parts”, which normal people refer to as electronics surplus or junk. In an effort of organization, I decided to create a mini-database to help me keep track of my collection.
My spaceship parts. Let me show you them.
Plastic Canvas
Monday 14 April 2008 at 12:21 pmWhen I get tired of programming and engineering, I typically turn to hands-on activities – it took programming video games for 40 hours a week to get me started in blacksmithing and metal casting. Since I’m up at school now and don’t have as easy access to forging space (not to mention that it’s currently balls-to-the-wall cold outside), I somehow got the idea to pick up some plastic canvas supplies from AC Moore and taught myself how to make useless little trinkets out of yarn and plastic mesh.
Back in the heydays of fourth grade, I stumbled upon papercraft (although I had no clue that it had a name until a few years ago) and made all sorts of little sculptures out of paper. Although I drifted away from papercraft when I discovered computers, it’s always been an important part of my creative mentality. And as it turns out, plastic canvas has a lot in common with papercraft.
When working plastic canvas in 2D (like the Black Mage, pictured below), it’s quite like a special cross-stitch for dexterously feeble people like myself. Due to the rigidity of Plastic Canvas, however, it can be woven together into 3D structures, such as the Main Battle Tank I designed and built, pictured below. And it only took me over six hours to build!
Metal Casting Recap
Monday 14 April 2008 at 12:17 pmI started doing metal casting about a month and a half ago after reading about it on the internet on and off for over a year. The premise is simple: melt zinc (~787F) or aluminum (~1221F) in a charcoal fed blast furnace and then pour into a mold made from a mixture of sand, bentonite clay (kitty litter!), and water.
My furnace consists of a normal clay pot inside a metal bucket with some basic concrete poured between the two. A hole is drilled through the side a little above the base; a 2’x1/2” steel pipe (not shown) feeds air from a hairdryer through this hole and to the charcoal, where it SUPERCOMBUSTS to a temperature hot enough to melt anything I’d care to melt.
I burnt an old broken laptop with it at a LAN party. It was pretty significant.
My crucible consists of a 4” long, 2” diameter steel pipe nipple (teehee) with a hardy steel end cap. I do all handling of it with a set of long, 90 degree pliers and a pair of welding gloves. Although somewhat dangerous, it’s surprisingly not that intimidating.
While I wish I could say that I’m exorbitantly talented with my ability to cast metal, it wouldn’t be close to true – most of my pieces require significant grinding to clean them up after they come out of the sand. I’ve still been able to make some neat things, so far.
The first piece I made – a copy of Hillary’s “bent” from her engineering honor society thingy. We made this during our second time firing up, melting down scrap zinc that I procured while in Albany. For simply pushing the original in our kitty-litter-mix and then pouring molten metal in its place, it turned out surprisingly well.
After a lot of things that didn’t turn out at all (mostly poor attempts at the lost foam method) I was able to make a really scrappy looking piece of bling. While the bent was a copy of an object, this was a more custom design, made by pressing a small wooden block into the sand to create the shape of a dollar sign. Turned out sort of ugly, but at least the shape was recognizable.
The first real thing that was remotely proud of is my hawk axe. The head was an abstract design that I came up with on the spot (sort of based off a sketch I had drawn in a meeting) and was shaped by the same wooden block technique I used to make the dollar sign. I then pressed the top pipe fitting, half filled with sand to preserve the lower threads, into the sand and cast the axe head directly into it. After letting it cool and removing it from the sand I was able to clean it up, polish it off, and screw it onto the handle.
The second axe below was cast in a similar method to the hawk axe, although didn’t firmly cast into the pipe union. I ended up grinding down the base of the head and hammering it firmly into the pipe, allowing for a more seamless junction. I then painted it with acrylic paints (silver zinc looks weird with black steel), covered it with a coating of polyurethane, and then wrapped a strip of black leather around the handle.
Short Sword
Monday 14 April 2008 at 12:02 pmAfter returning home for winter break and building a new furnace more suited to blacksmithing (pictures to come shortly), I crafted my first real piece of steelwork – a short sword. Made from the same stock as the chisel, it turned out much nicer than I anticipated, and, while not designed for cutting, has a far nicer edge and finish than any of my zinc axes (obviously).
Insight Studio
Sunday 13 April 2008 at 1:08 pmI made this a while ago, but never finished it – I wasn’t sure exactly where to go next, and, I guess, sort of lost interest. It’s got a bit of function, however, and thus I’m releasing it to the world!
Insight Studio was designed as a tool to assist in reverse engineering filetypes, such as what I did with Empire at War (albeit I simply used a hex editor for that one). After loading up a file into Insight Studio, there are three windows to use:
GraphWindow: The GraphWindow is used to get an overall view of a file, such as its entropy (how many relevant bits per byte – compressed data and images will typically rank higher than numerical data, although it can be somewhat irrelevant), percent text (what percentage is likely to be ASCII text), and significant zero score (something I invented; essentially scores the amount of zeros across the file, which results in a high score for aligned, numerical data). You can click on any of the graphs and hit the goto button to be sent to that location in the SegmentMapper.
SegmentMapper: The SegmentMapper is a glorified hex viewer, which allows you to define segments that can later be viewed. Type “help” in the prompt to see a list of the commands and examples of their use. Segments are chunks of the file, which simply consist of a start address and end address of the data in the file.
SegmentViewer: The SegmentViewer allows you to view the segments in various ways, such as pure ASCII text, as packed, random values, and as bitmaps (experimental). The bitmap view is restricted to one type of image encoding for right now (I never got around to implementing any others), as it’s technically just an experimental feature at the moment. The numerical value which is set to “16” by default for right now is the width of the stored image in pixels. Thus, for a 320×240 encoded image, you would enter 320, select a segment, and hit “Draw”.
By no means do I consider this a finished product, nor do I know if I’ll ever improve on it. Perhaps someone will find it useful or interesting. Enjoy!
HWND Hunter
Sunday 13 April 2008 at 12:58 pmWhen using Windows API functions such as SendMessage, it is often necessary to locate the HWND of an arbitrary control on an arbitrary window at runtime. HWND Hunter, designed to speed up this process, is a program that generates code to programmatically determine HWNDs using a Spy++ style window finding method. The following function, FindHWND_AIM(), was generated using HWND Hunter and locates the HWND of an open AOL Instant Messanger 5.9 window’s text box:
HWND FindHWND_AIM()
{
// class type: Ate32Class
HWND base = FindWindowS(“AIM_IMessage”, “- Instant Message”);
if ( base == NULL ) return NULL;
int scan2 = {8, 0};
return IterateHWNDs(base, 2, scan);
}
This function can then be used in code such as the following:
#include <windows.h>
int main()
{
HWND aim_hwnd = FindHWND_AIM();
SendMessage(aim_hwnd, WM_SETTEXT, NULL, (LPARAM)“Voodoo!”);
return 0;
}
All FindHWND_*() functions use a custom function (provided within HWND Hunter) called FindWindowS, which works much like FindWindow, except searches for a substring match instead of the exact string. Thus, “- Instant Message” matches the window caption “thekrispykremlin: thekrispykremlin – Instant Message”, which would be a window of me sending an IM myself. A parameter of NULL can be used for either (or both) class name and window caption, and will result in that parameter matching for any value, much like using an empty search string.
I wrote most of the code with a sinus headache, and thus it’s not exactly the cleanest code I’ve ever written. If you plan to venture into the source, you have been warned.
Silicon Foundry
Saturday 12 April 2008 at 6:40 pm Silicon Foundry is my latest game in the games for engineers series. You play as the new owner of an integrated circuit factory who must produce chips to meet orders from your customers, and use the profit to pay back the loan for the factory. It's surprisingly complicated, so I've forgone written documentation and made a video tutorial instead. I suggest watching the video as you download the game.Basic gameplay is divided into two components - an economic macrogame, in which you buy machines, lease and research components, and produce devices to sell to customers, and an engineering minigame in which you must place components on the IC dies, ensuring that the proper connections are brought to the pins and that internal requirements, such as CPU speed and memory, are met. Much like with real ICs, simpler chips result in higher yields - by minimizing the area used for each design, you can produce cheaper chips and turn a higher profit, allowing you to meet the economic macrogame's victory conditions. While the game has a somewhat steep learning curve, the economic conditions are fairly forgiving, making the game very winnable. Just remember not to produce more chips than your customers will buy!
Update: There was a bug in Silicon Foundry involving localization settings that caused it to crash when formatting numbers. I've fixed it and uploaded a new installer. Use the link below to download the new, fixed version.
Pulse
Saturday 12 April 2008 at 6:32 pmPulse, previously titled Ruckingenur: Puzzle, is the second game in my games for engineers series. In it, you must arrange devices on a grid to redirect and filter pulses in order to achieve different objectives, depending on the mission. It’s sort of like the incredible machine, in that you have to assemble pre-created parts to achieve an effect. Once you get past the training missions, each of the missions (there are two) come in two separate flavors – slim, which contains the exact set of parts required for a specific solution, and normal, which contains far more and allows for open ended solutions.
There are five different kinds of pulses in Pulse: red, green, and blue pulses are considered data pulses, while trey pulses are clock pulses, all of which can be considered signal pulses. The yellow pulses are power pulses, which can not always be routed like signal pulses, and are traditionally used to trigger special features in devices.
One of the biggest problems people seem to have with Pulse is figuring out how to use the data latch. The data latch is used to copy data pulses – to use it, send a data pulse into the left side, storing the color of the data pulse inside the data latch. From that point on, hitting the right side with a clock pulse will cause a copy of the data pulse to bit shot out to the right. To replace the data stored in the data latch, simply send a new data pulse into the left side.
Ruckingenur
Saturday 12 April 2008 at 4:35 pmI’ve wanted to do something like this for a long time, and finally I’ve been able to. Behold – Ruckingenur! (roughly german for Reverse Engineer, or so the internet tells me.) Combining real life electronics concepts with a few made up technologies (such as iDBG), you can now experience the fun and excitement of hacking fake consumer and industrial hardware (or something like that).
Help is built into the game in the form of an “OMG I AM TOTALLY LOST” button, although here’s a brief overview: use the Zachtronics Industries hypermeter to measure and override voltages at test points on the circuit board; look up datasheets for the various chips to figure out what everything does; use the iDBG interface to connect directly to chips, giving you the ability to read and write from data, status, and control registers; use the terminal to connect to more advanced devices, such as computers (not used in this episode). Aside from opening the blast door, there are a few other things on the board you can reverse engineer, such as the LCD and other pins on the chips – try to figure them out!
Unless you’re somewhat familiar with electronics, you’ll probably find this game a little confusing. You’ve been warned.
Manufactoid
Saturday 12 April 2008 at 4:26 pmManufactoid is probably one of my favorite games that I’ve made; in it, you must build a factory to assemble blocks into different products, with each product being a separate puzzle. It’s most definitely a game for engineers, as it requires a you to both think like an engineer and write Lua code to control your factory. If you’re okay with a little programming, though, you shouldn’t have any problem getting past the learning curve and might even enjoy the game.
There’s a good chance that it’ll be confusing at first, which is why I went through the effort of writing documentation, which can be found in your start menu after installing. It’s relatively terse, yet explains the basic game mechanics and acts as a reference for both Lua and the factory components.
XVRM Manifesto
Saturday 12 April 2008 at 12:54 amWhat is xVRM?
My original plans for virtual reality, code named VRM (virtual reality for the masses), outlined a simple virtual reality system. Featuring a homebrew magnetic tracker and a cheap projection screen, it would allow full virtual reality potential while staying flexible and inexpensive. However, not everything works as planned; the magnetic tracker turned out to be next to impossible with what I had at the time, and the screens were far from cheap. Alas, virtual reality seemed rather out of reach.
It is from these ashes that xVRM was born.
The first tenant of xVRM is that the typical ideas of what virtual reality should be are rather unreasonable. The expectation of large screens or a head mounted display that projects a perfect virtual world is rather difficult to meet; a virtual reality tracking system requires an insane degree of accuracy over a wide range, while the displays require a fairly high resolution at a large viewing size, all requirements that are currently available at a rather ridiculous price. Not to mention they’re mostly old technology that’s probably not even available anymore.
- Ascension Space Pad Tracker (“affordable”): $1500, and runs off an ISA card
- Ascension Flock of Birds Tracker: ~$25000, or something like that
- head mounted displays: $500-$10000+, and probably aren’t that healthy
- digital projector: $800-$2000+, and you’d most likely need more than one
Which, quite frankly, sucks.
The second tenant of xVRM is that real life handles reality much better than computers. The laws of physics react instantaneously, meaning there is no lag; let them handle rendering, collision detection, sensory feedback. Leaning more towards being a simulation than a “virtual experience”, xVRM offers a chance to realize virtual worlds, now.
What do I need for xVRM?
As of writing this, xVRM doesn’t really exist in any form past an idea; however, if it were to be done, a few things would be required:
An Arena
Otherwise known as a fairly large open space. Be it outside, inside, or both, some sort of staging area is necessary for an xVRM simulation. Which kind depends on what you’re simulating.
Some Players
xVRM is generally suited toward some sort of game; instead of AI, you need real people to play with you. Unfortunately, it’s a bit harder than adding bots to a game, but fortunately, real people are trickier opponents (well, most of them).
Cool Technology
To make the simulation come alive, you need some form of simulation technology. Be it in the form of something like laser tag, some sort of wireless fencing, or a vehicle simulator, the technology brings it all together. In fact, it’s essentially the whole thing
What would an xVRM game be like?
For the most part, it depends on what you’re trying to simulate. Some examples:
- Modern Combat: realistic laser tag weapons and rules, some sort of objective gear (bombs to be diffused?)
- Unreal Tournament: insane laser tag guns, less realistic suits, capturable flags, respawn points
- Medieval Combat: cableless fencing-like gear, perhaps some type of siege engine / base system?
- Planetary Combat: simulation capital space ships with flight hangers and miniature fighter plane simulators, mech simulators and futuristic laser tag gear for ground missions, tie in with mission support from capital ship
Ideally, they’d all use some sort of universal, cross-compatible protocol. Maximum hardware compatibility would allow for reusabliity between simulations, which would save quite a bit of development time, meaning more time to play!
Virtuality Manifesto
Saturday 12 April 2008 at 12:51 amUpdate (02/27/08): It’s been over a year since I wrote this article, and I just stumbled upon the “Virtuality Continuum”, which, described in a research paper authored in 1994, strikes me as being fairly close to what I imagined in the “Barthian Virtuality Gradient”. A brief analysis of the paper leads me to believe that the authors, anchored to “augmented reality” as their reference point, considered the axis of the VC to describe the ratio of “real” content to “virtual” content – the real world is 100% real content, while a typical computer game is nearly 100% virtual content, with an augmented reality game being perhaps half of each, and an MMO like World of Warcraft being very nearly all virtual content aside from that which evolved from the players themselves and could thus be considered real? The BVG, on the other hand, deals more with the placement of the window between real data and virtual data; while being less linear, I think that it captures an entirely different and much more interesting relationship.
I use the term virtuality to differentiate away from the term “virtual reality”, which implies a reality that is somehow fake and separate from “actual reality”. In all actuality, I envision a broader spectrum, with the goal of simply tweaking reality – meshing real, physical things with a virtual environment, or bringing virtual objects into a real environment, or simply playing with virtual objects in a virtual world. The gradient between what is real and what is virtual is what defines virtuality.

As of now, I currently use the above model, creatively named the “Barthian Virtuality Gradient”. For the most part, it conveys my feelings on the matter fairly well. Chances are, it’s been previously thought of by someone before me, or even more likely superseded, but I put it out into the open regardless.
Realities begin at the bottom – absolute reality. Using a wargame as an example, this would be actual war. Getting shot would suck. From here, we can begin to virtualize certain aspects, or essences, of things; tanks now fire “virtual” bullets, carried by infrared light. You’re still driving a real tank, but a certain portion now has a virtual essence (this is quite similar to the MILES laser tag system the US Army uses). At this point the gradient isn’t so simple. Working backwards from a true neural representation of a completely virtual environment, we first reach sensory simulations, by which we simply reproduce the sensory inputs we would normally get. This is where the more traditional technologies fit, such as head mounted displays, data gloves with haptic feedback, and direct body tracking – since we can’t yet interface directly to the nerves, we simply throw the inputs as close to the brain as we can and attempt to block out what we consider to be reality. Working back even more, we pull back the virtual reality and leave room for more actual reality, such as with CAVEs. I call this environmental virtuality, in which we modify the environment with more distinct windows into the virtual world. And thus, we find ourselves back at the tank, looking out of a virtual periscope and virtual windows. It may be a real tank, or simply a mock up of one, sitting inside of an essential object, interacting with its own virtual environment. The two often mingle at this point. With good reason.
Where environmental and essential technologies meet is where we need to focus, at least for now with our current level of technology. Too many people connotate virtual reality with sensor virtuality, which is both expensive and overly-complicated, which is why I try not to use the term.
RSVP Abstract
Saturday 12 April 2008 at 12:48 amWhat is Virtuality?
I use the term virtuality to differentiate away from the term “virtual reality”, which implies a reality that is somehow fake and separate from “actual reality”. In all actuality, I envision a broader spectrum, with the goal of simply tweaking reality – meshing real, physical things with a virtual environment, or bringing virtual objects into a real environment, or simply playing with virtual objects in a virtual world. The gradient between what is real and what is virtual is what defines virtuality.
So, what is RSVP?
The Relatively Simple Virtuality Platform, or RSVP, is a set of devices and a software APIs to serve a specific goal: to aid in the creation of simple environmental / essential virtuality simulations that are easy to pick up and play, and therefore ideal for high volume entertainment purposes. The system consists of the following hardware:
- a large, pressure sensitive floor mat, which detects player positions
- an overhead camera, to track arbitrary beacons and players via optical recognition
- a projector screen spanning the width of the floor mat, with left and right side speaker system
- a flexible RF communications system for player “objects”
- the agent console, at which a human agent sits and can input human-specific data
Because of the use of RF, cameras, and pressure sensors, there are no wires to be attached to players – all that is necessary is to grab the required objects and literally jump into the game.
Designing an RSVP Module
Because of the common hardware, only two things must be developed for each RSVP game/module/simulation: the software, which does everything software normally does, and the objects, which utilize custom RF modules that are easily swapped between devices, meaning that the RF technology doesn’t have to be built into EVERY device, cutting costs and adding simplicity. These features, I hope, will make RSVP ideal for educational purposes, which I plan to test in my current lecture circuit.
Module Examples
Super Mario
- Video: NES Super Mario remake, adapted to track the player with the pressure pad (jumping and running)
- Audio: standard, balanced L/R audio (no real need for “surround”)
- Optical: no optical tracking needed, as pressure pad provides faster, more relevant data
- Objects: two button punch-stick, one button to enable running, one button to enable fireball (requires “punch”)
- Agent: optional, would trigger player ducking into and out of tubes and doing random actions (max flexibility)
Megaman Battle Network
- Video: mini-boss fighting game (one at a time), front on psuedo first person
- Audio: left channel to mono-out, right channel to object via audio radio
- Optical: light up strip on object plots a vector to the screen
- Object: Megaman style hand controller with rumble, audio (charges up), and a button on top (change weapon)
- Agent: nothing as of now
Jedi Trainer
Saturday 12 April 2008 at 12:46 amEver since I found out about the Wii, I wanted one. However, what interested me more than playing the games was making them. Lucky for me, the Wiimote is a fully capable Bluetooth HID device, which the folks at WiiLi have been able to pretty effectively figure out. I was able to actually find a Wiimote (at MSRP!) and proceeded to hack away.
Jedi Trainer is an extremely cliche lightsaber combat game that uses the Wiimote. It runs in Linux, and requires Python, pygame, bluez, and pybluez. After you’ve got those, download the .tar.gz, extract it (try tar -zxvf jedi-trainer-0.1.tar.gz), cd into the directory, and run main.py (python main.py). It will ask you to sync the Wiimote, which takes a moment, and will then launch. You may have to edit the Wiimote MAC address if it’s hardcoded into the program (I believe it is).
Although it’s not really a fully complete game, as I just threw it together over the past two days from the ground up, It’s got a few neat features I’d like to point out. I tried to capture the sort of ambient lightsaber feel, to make it a bit more special than holding a piece of shiny white plastic. You have to first turn it on, by pushing the “up” button, which makes it “spring” to life and turns on ambient lightsaber noises. Whenever you swing it, independent of if you’re doing an action, it’ll make that snazzy lightsaber “swoosh” noise. All the controls use only the accelerometer features of the Wiimote, as I don’t have a sensor bar, which should be good news for anyone like me who only has the Wiimote. It’s all pretty fun – I hope to get a video up of me playing in a day or two.
Provided below are helpful visual instructions to make your life easier. Be sure to hold the Wiimote so it is facing you for defense and facing up for attack.
Flight of the Atropos
Saturday 12 April 2008 at 12:20 amI’ve always dreamed of creating a fantastic space ship simulation along the lines of what I’ve described in my xVRM Manifesto, something I wrote years ago. In the past month, working along side Kenneth Bowen and Andrew Armenia for my Experimental Game Design class (taught by RPI’s Professor Ruiz), that dream took shape in a project called Atropos.
Inside of a structure best described by Vicarious Visions’ Karthik Bala as a “space shanty”, three players work together to pilot a virtual spaceship through a virtual world. The tactical officer, working at the left console, can fire missiles and lasers, scan of targets, start electromagnetic, biological, and radiological sweeps, and both hail and accept hails from other ships in the game world. The navigation officer, working at the right console, is responsible for flying the craft and has the ability to engage a FTL (faster than light) jump, allowing the players to jump across large areas of space. The command officer, sitting in the center, can monitor the status of the ship and other scan targets via the center, dual screen display, and is responsible for communication with NPCs over the radio (the device with the phone handset).
Overall, Atropos was a major success. We managed to have it fully set up for the exhibition component of the RPI Game Symposium and took home 5th place, as well as drawing a fairly large crowd and running about ten teams of three through our 15-minute mission. Players were instructed to destroy a ‘radioactive asteroid’ in a nearby asteroid field, and were then ambushed by Captain Nagel, a pirate with somewhat aggressive intentions.
We were able to incorporate a few interesting concepts into Atropos that I’ve wanted to try out for a while. We were able to use a number of interesting interface peripherals, such as a flight yoke and two foot throttle lever for flying, a giant potentiometer and lever for firing the laser, a dual-screen CRT for providing ship status and scan information, a radio that players could talk to NPCs through, and a dot-matrix printer (which everyone absolutely loved) for providing a physical copy of mission briefing and de-briefing for players to take with them after the game was finished. By fully enclosing the ship, we had complete control over lighting and sound, which consisted of an incandescent bulb for main lighting, a red CCFL for emergency lighting, and a fairly loud speaker set. When the players’ ship was damaged, the lights would ficker as explosions sounded; when the players were ambushed, they were plunged into darkness as the lights turned off, their screens turned black, and alarms sounded. When players used their FTL drives, the lights would flicker while the screens “glitched”, and our obnoxiously loud and over-phasered warp sound effect played.
In addition to an over-the-top interface and ridiculous special effects, Atropos features absolutely no artificial intelligence or pre-scripted events aside from special effects timelines. As the fourth player, the game master is responsible for controlling all other ships and events that happen in the game, along with improv-acting out the dialogue that all NPCs have with the players. Using video-portraits and creative voice acting, we brought the NPCs to life and held interactive dialogues with the players, allowing us to both immerse the players and give them in-game assistance on some of the more confusing technical aspects of the ship.
Although working with such a large project on a short timeline was somewhat exhausting, I am extremely pleased with how everything turned out, and will most definitely be exploring the simulation-LARP genre much more in the near future.
Infinifranchise Post-Mortem
Friday 11 April 2008 at 6:01 pmThe Backstory
The Infinifranchise, starting with Infinitron, was born from a hastily invented game that I played on two occasions many years ago. I wanted to make a strategy game where all the units were created as we played, thus requiring only scraps of paper and a few pencils. If I recall correctly, I unexcitedly won the first game, like a boxer winning because his opponent was killed rescuing orphans from a fire the night previous, as the game wasn’t that well defined. The second game ended in what was technically a tie, as my friend flipped out over the fact that we could literally do whatever we wanted, which makes for a broken game. I think he tried to nuke me. By some chain of thoughts I remembered this last year and set out to create a valid game similar to what I had played years before, and ultimately ended up with Infinitron.
Similar to its inspiration, only two games of Infinitron have ever been played. The second was the test game featured in the rules, played over the internet with a friend named Jon. The first was what I would say was the only real game played; it lasted eight hours, most likely had no more than twenty turns, and was one of the most draining games I had ever played; I had no desire to play again for quite some time. Thirty minute turns were common, as we haggled over deals for units and abilities and attempted to figure out how the rules actually applied.
Intelligent Destruction was coded over a 48-hour period for a game programming contest (which I lost, I might add) and is essentially a watered down, no-haggling version of Infinitron. It’s two player hot-seat, something you don’t see a lot of nowadays, and has, as far as I know, never actually been seriously played. Perhaps you will be the first!
Returning home from school for the summer, I programmed Stockmotron, my first web-based game. After it tapered down from the whopping high of about twenty active members to essentially none, I reused a lot of the code to make a new game – Infinarena. It came to me in a vision of sorts, laying down for a nap and teetering between consciousness and sleep, and had something to do with triangles. By the time I finished the first version, it had absolutely nothing to do with triangles; players would create units by enumerating a number of traits and abilities they wanted the units to have. They would then fight and randomly use their abilities and attack each other, of which a text based representation could be viewed. I was able to get about fifteen beta players by spamming my buddies list and an IRC channel I was in at the time, who proceeded to give most of their fighters offensive names and quickly realize that strong beefy units were generally the most successful.
Upset with the direction the game was taking, I did a major overhaul of the game system. A rudimentary scripting language was used to control the units, moving them and attacking on a two-dimensional grid. There was no random chance involved, and the battles were played back through a DHTML / JavaScript animated playback engine. Instead of simply listing attributes, players customized their units and then gave them simple AI scripts to determine their actions. Shortly after rolling out this “new and improved” version two, membership dropped to a handful of players who mostly copied my example code. As it turns out, cryptic scripting languages alienate people, and I was unable to find any new, programming savvy players to continue testing. The point at which someone posted “Man, this shit fucking sucks. You really created a crappy product.” on the message board, the experiment was essentially over. Feel free to play around with it, though. (As an amusing side note, I made a simplified, mildly mundane version for an event the RPI Game Development Club put on for incoming freshmen. They loved it. Figures, crazy RPI kids. More on this later.)
Infinifrag was conceived a little bit over a month ago and was intended to be the showcase of the Infinifranchise. It started out as being small team based, with a commander, who would supervise construction and script weapons and player classes, and runners, who would perform the standard FPS duty of killing stuff. After going through the preliminary design document with the small team I assembled, we cut a lot out of the game and ended up going more toward a fully action oriented gameplay style. The one problem I couldn’t solve was how to make building work on the fly; in the end it was a bright freshman named Keith who saved my ass by pointing out that blocks could simply be “shot” at the faces of other blocks and the floor. Problem solved. A month or so later version 0.1 was finished, which as of writing is the current version and may be so for a while.
What Went Right
Some people value fancy graphics in a game; I value creativity.
That said, my favorite aspect of the Infinifranchise is that the games are about creativity. Not just creativity within the framework of a traditional game, like unit strategy in a game of Warhammer. It’s absolute, abstract creativity, forcing you to invent things from a much larger pool of permutations. Not a lot of games feature this, which I like to think makes the Infinifranchise stand out. When played correctly, although it’s tough, this open ended creative gameplay is fun and rewarding, as it can infer a real sense of accomplishment from having actually created something new.
What Went Wrong
Unfortunately, the things that made the Infinifranchise great are the same things that made them alienating and, at times, ridiculous. It’s very hard to be creative on demand, which can lead to games that are draining and not terribly spectacular if the players aren’t in the groove. As a result, the games tended to have a limited audience and be overly complicated, although this is most definitely also a consequence of me.
Infinitron / Intelligent Destruction
Infinitron was extremely difficult to play, and with the only real game lasting eight hours, sort of counts as a con (unless you like that sort of challenge). Additionally, the rules of the game create a very strong positive feedback situation, whereby the first player to capture cities gains a resource advantage that compounds into him having bigger and better units earlier in the game. Thus, most players would simply rush out to capture as quickly as possible, and then slowly roll in increasingly stronger units to finish the game.
Those two complaints aside, however, Infinitron brought what I feel were some excellent mechanics. Creating terrain on the fly was exciting and introduced some excellent strategy to the game, along with being able to leave a creative mark on the battlefield – you get to fight on the grounds that you created yourself. The concept of picking and sticking to a theme also helped to shape the game creatively, but was significantly more trivial than being able to customize the terrain. Overall, Infinitron was rather intense, and may even have some promise for play in the future – I’d like to sometime create a small league and try it out in a larger, group setting.
Infinarena
On the bright side, I really like a lot of the technology I developed for Infinarena; it’s mildly Ajax-y and I like the way it works. Unfortunately, it never really had the best member-base for what it is (an obscure programming game) and is a bit too in-depth for the attention deficit web-game crowd (myself included). The community also seemingly bottomed out before there was any chance for a good group of dedicated players to set in, with only a few people attempting to write their own AIs instead of just modifying the example – this prevented me from rolling out any of the story elements I had planned, such as the invasion of the Void, where players would cooperatively fight against an invading force and work together to find their weaknesses. Oh well.
This was my first big lesson in audience – as it was an online game and not just a board game, I was able to bring in actual players, and pretty quickly lose them through overly-complicated gameplay. On one hand it was simply not finding people from the appropriate niche I had in mind, but it was nevertheless a reminder that I need to keep my audience in mind.
Infinifrag
I just finished the first version (0.1) of Infinifrag a few days ago, so I haven’t had much feedback aside from during bug testing. I plan to roll it out at the next LAN party, and will presumably add the results to this document at that time. During bug testing it was received pretty well, with the only real complaints being technical, such as slightly buggy collisions and a few other minor glitches.
I’m very fond of the block building mechanic, and plan to add special block types in the future, such as projectile shooting blocks and moving blocks. I’d also like to open up weapons customization a little more, as there’s a very finite amount of choices, resulting in only about three distinct weapon configurations – rocket/mortar weapons, sniper weapons, and low-power rapid weapons. I think that it definitely has promise, though, and hope that it holds up to extended playtesting.
What This Means
I’d like to think that the Infinifranchise holds some sort of special meaning being abstractly creative; I started out with the slightly large goal of creating “the greatest game ever”, and fell quite a bit short, at least as far as I’m concerned. However, I’ve learned quite a few valuable lessons along the way:
- When making things like this, it’s easy to get stuck in the meta-game; when you’re worrying more about Turing-completeness than gameplay, it might be a good time for a sanity check.
- Remember your audience! Maybe, more importantly, make sure your audience is more than just yourself, or maybe just make sure to build a single player mode =).
- It’s alright to fix some elements of gameplay, as giving players too many options means they’ll simply resort to obscenely-themed things.
- I really doubt there will ever be an end all, “greatest game ever”, and even if there is you’ll still get bored of it (think World of Warcraft!). Part of the fun of playing a game, whether it’s an actual “game” game or just anything else in life that falls under the human definition of game, is discovering it and figuring it out. In all honesty, I’m surprised I didn’t figure this out earlier, as I get bored working on projects before they’re even finished – the secret is change and dynamics, so ride that sine wave!
To tell you the truth, I have no clue how I came up with the name Infinitron. Although it’s just a poorly conceived name that’s sort of awkward to type, to me it represents the infinite possibilities of creative gameplay, and what I hoped to create with the games of the Infinifranchise. There’s a bit of magic to knowing that you have absolutely no clue how a game will end, let alone what will happen along the way.
Intelligent Destruction
Friday 11 April 2008 at 4:08 pmI coded this in 48 hours for the RPI GameJam competition, which ended today. It’s actually based on a board game that I’m working on and personally feel is far superior, but it’s worth checking out anyway – if anything, it’ll give you a good introduction to the wonderful board game that is to come.
(Edit: The game referenced is Infinitron.)
It’s a two player hot-seat (one computer) game that’s probably going to be confusing at first. However, there is an in-game help that should give you a few pointers to get you started. The basic gist is as follows: research units and then* build them* to capture cities to gain points (gained at the beginning of your turn) and increase your unit cap. Researching and building units costs points. When you capture a city, you can create and shape the terrain around the city, but only once. Begin your turn with one of your units on the enemy capital to win the game.
Infinitron
Thursday 10 April 2008 at 5:59 pmInfinitron is a tactical board game in which players create the board, the units, and even the rules as they play the game. It started the Infinifranchise, and, in hindsight, sort of resembles a less pedantic nomic. Information about Infinitron can be found in the Infinifranchise Post-Mortem.
While Infinitron is somewhat playable, the rules aren’t necessarily balanced, or that fun. I’ve played one game of Infinitron, with two friends – it lasted 8 hours, and I’m pretty sure everyone was unhappy by the end. But, that doesn’t mean you won’t necessarily enjoy it!
Infinifrag, Version 1.1
Thursday 10 April 2008 at 5:37 pmEver since the first less-than-spectacular playtest of Infinifrag, I’ve always wanted to fix some of the big gameplay flaws and give it another shot. With the end-of-semester RPI ACM/GDC LAN party right around the corner, I figured that I’d dig back into the (ugly) code of Infinifrag and get the game running in time for another playtest at the LAN. Although the game is mostly the same, there are a few large changes:
- Improved network latency via TCP_NODELAY
- No more War/Peace modes; players can build and shoot at any time!
- “Weapon One” set with a much weaker default, requiring players to customize
- “Weapon Two” replaced with Satchel Charge, which can blow up blocks!
- Players now start with a small amount of energy which increases over time and resets when they die
Infinifrag, Version 0.1
Thursday 10 April 2008 at 5:36 pmIf you’ve seen anything else from the Infinifranchise, it should be easy to see where Infinifrag fits in. A networked, multiplayer first person shooter, Infinifrag brings some of the trademark aspects of Infinitron and Infinarena to a whole new exciting level. Features include:
- Deathmatch, Team-Deathmatch, and Capture the Flag style gameplay
- Customizable “sprite-models”, sort of like a 3D Infinarena
- Customizable weapons, with tons of variables to change
- Customizable terrain, allowing you to build massive bases
To be frank, it’s no where close to a real FPS like Unreal Tournament. I coded the entire thing from scratch over the past month, using Python, pyGame, and OpenGL, the last of which I’d never used before. Honestly, I’ve never written any networked games before, let alone networked first person shooters. The collision gets weird sometimes. You might get stuck in the floor (that’s what ‘kill’ is for!). The blocks might start flashing colors, at which point all you need to do is quit and rejoin the game (it’s nothing too serious). It is, however, stable enough that you should be able to play it at a lan party with a handful of friends (it technically would support well over 128 players, but I’d try to keep it a little bit lower and would restart the server between matches). It’s also a blast to play, as you get to literally build your base from scratch and customize your weapons for whatever your team strategy happens to be.
Download Infinifrag v0.1 (10.2 MB)
This is most definitely a version 0.1, as there are still a few non-critical bugs to work out and quite a few features I’d like to add. I need to get it out there, though, as I think I’m done with the Infinifranchise for the moment and want to move on to exploring some new concepts; expect a post-mortem within the next few days.
So, what are you waiting for? Go grab some friends and get your Infinifrag on! Enjoy! =)
Wikipedia Quest
Thursday 10 April 2008 at 4:58 pmWikipedia Quest is my term project for a class I took in the Fall of 2007, Introduction to Artificial Intelligence. It is a cliche, dungeon crawler style RPG with retro graphics, with one catch: all of the content was created by an AI that skimmed Wikipedia. Using statistical linguistic processing, it attempts to fit the content it finds into a framework defined by a game grammar, which is then processed and saved into files that can be loaded into the game. The program also finds images for all content, resulting in an exciting game of somewhat random proportions.
Download the Paper (PDF)
Download WikipediA Quest (65.5 MB)
If you actually want to run the content generator, you’ll need to have the ImageMagick installed for image conversion (all images are downsampled to 200×150 with 3 bit color before using them in the game). It might not work for you, though, so you’re sort of on your own…
Notepad Weekend
Thursday 10 April 2008 at 11:19 amAfter talking to my friend Rob and sort of randomly coming up with the idea of a game of snake that looks like Notepad, I made it – it’s the first link. I then got curious about the idea of using SendMessage to set the text of an actual Notepad window, and made the second program; inspired by the Sub-7 trojan (my friend got me with it at a LAN party in grade-school) it pops up a fake error message, appears to close, but will then play the Star Wars ASCII video from www.asciimation.co.nz in the next Notepad window to open. By this time, it was pretty clear to me that I needed to make a game using this new-found technology: the dehydrated game! (It’s a vertical space shoot-em-up, mind you.)
Download snake.txt
Download StarWars Notepad
Download Dehydrated Game
Gregor Mendel's Pro-Botanist
Thursday 10 April 2008 at 10:59 amDownload Gregor Mendel’s Pro-Botanist
I made this for a “one week, one person, one game” competition with the assigned theme “a game your mother would play”. I won, but only because I was the only person who could think of and create an entry. My girlfriend’s mother really liked it, though, so I guess that makes me a real winner of sorts.
Running the Game
Run GMPB2006.exe, and the game will automatically unzip to your temporary directory and run. So simple my mother could do it!
Objective
Make as much money as possible over the summer by growing a garden and selling the crops at the farmer’s market at the end of each month.
Gameplay
At the beginning of each month, you start with an empty garden. Every day, you may choose to either plant a crop or do nothing – you do either by selecting the action and clicking on the grid. Plants will grow, each in their own unique way, for the remainder of the month. At the end of the month, the crops are picked and sold at the market, increasing your score. Various bonuses can be collected by achieving different objectives. See if you can figure them all out! (or read the spoiler at the end)
Design Approach
I literally designed this game to be a game my mother would want to play, and plan to have her try it out after I finish. Thus, as I worked on the game, I had the following thoughts in mind:
- My mom likes non-confrontational games. I could never really get her to play Sonic the Hedgehog with me, or any other game that had things that moved quickly. She’s not a big gamer, but she was hooked on a variant of same game for a while – it’s simple, fun, and doesn’t put you on the spot. You can take as long as you want to take your turn.
- My mom likes to garden. Hence, I made a game about gardening. To add to the atmosphere, I decided to simply add ambient sound effects instead of music. I got my sound effects from www.naturesongs.com, where they appear to be free / not illegal to use in this application. All art was done by myself.
- My mom doesn’t like complicated games. Like I said before, she’s really not a gamer at all. So, I made the game simple, perhaps a little bit too simple, but I think that is better than it being too complicated. With a win condition of simply beating your high score, the game isn’t overly tough; you’re playing against yourself, not a machine hell-bent on your destruction.
And thus, I present to you, Gregor Mendel’s Pro-Botanist 2006. Enjoy!
Spoiler:
Full Garden (+$50) – Fill up every square in the garden with something.
Berry Bonanza (+$50) – Sell only raspberries and strawberries.
Rabbit Food (+$50) – Sell only carrots and lettuce.
Weeds Only (+$100) – Sell only weeds. Heh.
Blacksmithing for Dummies
Monday 07 April 2008 at 11:47 am Searching for tools for a metal casting workshop I was to host, I found myself at Harbor Freight. In addition to finding the safety gear and 90-degree needle-nose pliers I needed, I stumbled upon a 55 pound anvil shaped object on sale for $30. After purchasing a 3 pound sledgehammer and digging a few pieces of steel out of the Electronics Club metal scrap box, I fired up the charcoal furnace and gave blacksmithing a try.After making a few generically pointy rods, I made something of slight utilitarian merit - a hot chisel. When placed into the hardie hole of my "anvil", a hot chisel would allow me to cut heated pieces of steel. It has come in handy when working on other blacksmithing projects, but typically requires that I straighten the edge back out afterwards.