Saturday, March 16, 2013

Fermentatron! Or, How I Learned To Stop Talking About It and Just Make A Damned Game Already!

So towards the end of last year, my buddy Kyle and I got together to make something in Unity. That something is still on its way. But as a lead up to that (my current) project, Kyle and I joined forces to make Fermentatron with the talented Ben Crossbones on audio.

Fermentatron Title Screen.





This was a two-week project for the Indie City Games' Six-Pack Game Jam, wherein a bunch of local indie devs got together to make beer-drinking (or beer-making, in our case) games. All the submissions went into a kick-ass cabinet that's playable for free at the Emporium Arcade Bar in Wicker Park, Chicago. There's a nice article on Polygon about it, too! I'm mentioned!! But not quoted :( Not like I had anything profound to say anyway (ever).

So, Fermentatron-- This was really more of an excuse for Kyle and I to dip our toes in the Unity waters, as neither of us really had any first-hand experience with the engine. Until this point, both of us had either played or worked with Unreal, and wanted to delve into a different "indie" option. So we spent a few hours a night for a couple weeks (between Christmas ad New Years) developing an Kyle's game idea about a yeast cell collecting sugar, that it then converts into alcohol to shoot at attacking bacteria enemies. The goal of each level (all 3 of them?) was to collect enough sugar to build up to a target ABV (alcohol-by-volume). Basically, we wanted to make a game about what happens inside a carbboy.

As I was in charge of the art, and having never made art for Unity previously, I probably spent most of my time researching shader development within Unity. We knew we wanted things to look microscopic, and we thought that flOw had done an excellent job of pulling off that look, so I was going for a sort of glowy/x-ray'd effect. My problem was that I have zero coding skills, and Unity is curiously devoid of any visual or node-based shader editor. Very frustrating when you think that Maya, 3DS Max, Blender, even UDK have all had some form of node-based material editor for several years at least. Oh well-- Unity is free! Don't look a gift horse in the mouth!

Anyway, I found the Strumpy Shader Editor, which was a godsend. I was able to download this free-to-use node-based editor to create some simple materials that contained a tweak-able rim light along with all the standards (diffuse, spec, alpha, etc). Also, it turned out that the guy that developed this amazing tool had just made it open-source, as he had recently been hired on by Unity themselves. So hopefully they'll get an in-house node-based shader solution soon. Otherwise, I really hope other people pick up Strumpy and build it from there.

Using Strumpy, however, introduced me to some of the issues with using Unity Basic. Without the Pro license, for one, you're unable to see a preview of your shader in Strumpy. So you have to go through a couple extra steps of building and compiling and applying the shader to a model to see the result of your work. Again: oh well, it's free after all! There was one other issue with using Unity Basic, and that was getting camera post effects to work.

If you play the game, you'll notice that you're floating around amid bubbles and foam as you collect the sugar molecules. Initially I thought I'd pull that off by applying a simple Depth of Field effect to the camera. Turns out, though, that Unity Basic doesn't allow for post effects-- it's simply not in the code available in the free version. So I faked it with a simple trick: I made 3 different particle emitters in the environment, one super far from the camera, one near the same plane as the player/action, and one super close to the camera. I applied a simple piece of bubble art to the two furthest particle emitters, but for the closest I simply took that bubble and blurred it in Photoshop. Drop that back into Unity, apply it to the closest emitter, and boom! faked camera blur for a cheap and easy depth of field effect.

DoF faked with Photoshop trickery.


Normally this isn't a solution I would resort to, as it means more alpha sorting and more particles being emitted at any given time, but we were able to pull this off because the game itself was already so simple.

Other than those elements, though, making the art and getting it into Unity was a piece of cake. Geometry imports super easily as an FBX file format, so I was never really worried beyond what the player characters and their bullets would even look like (yeast cells are super simple, so I applied the same X-ray effect to them as I did the sugar crystals; and they're shooting alcohol molecules, which look roughly like arrows, so that fit pretty well too). The enemies were based off of different types of bacteria that can grow (and die) during the fermenting process, so I like to look at this as sort of a fermentation simulator that doesn't accurately simulate anything.

So this was a fun little project. It definitely could have been better-- we were setting up for boss battles and different power-ups like speed burst and screen-bombs (I even modeled out a couple different types of sugar crystals), but sadly there just wasn't time to implement all those things. There was some art I would have liked to tweak more given the time (P2 is too pink, blends with one of the enemies too much). But hey! Two weeks, right?

If you'd like to play the game, you're best bet would be to visit Emporium Arcade Bar. Obviously not everyone can do that, though, so download it here.

FAIR WARNING: the keyboard controls are confusing and you will likely not win. The controls were mapped kind of funny so they would work with the Indie City cabinet, which doesn't translate back to PC controls well at all. Kyle mentioned possibly porting the game to PC at some point, but I'm not sure when that might happen. If it does, I'll definitely let you know.

1 comment:

  1. Nice mention in that article, David Mann. And very clever trickery you pulled with photoshop. Resourcefulness is a virtue, in my book.
    ~Lori

    ReplyDelete