Pinbology: A Post-Mortem
Pre-LD Warm Up
Going into LD #24, I knew that I wanted to create a faster-paced, more “arcady” game, since my previous two entries were a turn-based strategy game and a moody story-based game. Two weeks before the competition, I decided to do a warm-up based on a theme that NEVER wins the LD voting…Evolution. So…yeah.
One valuable thing I learned, after a few dead-end ideas, is that while I *love* simulations and that I’m really interested in simulating biology and evolution…it was hard to find the game in literal evolutionary processes because it’s supposed to be rather…automatic and non-interactive. I couldn’t come up with something that was simultaneously enough of a “game” but also felt like “legitimate” evolution. Just making a _________ and tacking on an Upgrade system is pretty ridiculous. If that’s the kind of thing that’s acceptable, then 90% of the games on the market are about “evolution”.
Ultimately I decided that the right thing to do would be to start from a strong gameplay concept and use evolution as a pure story/visual theme, rather than a mechanic. So for my warm-up I ended up doing an (incomplete) implementation of a Tower Defense game in the style of The Space Game or Creeper World, where you are building a linked network of structures. You would represent a multi-cellular creature that was developing specialized cell/tissues/organs.
I still think the Tower Defense evolution game would have been great, but I didn’t take that route for the actual Ludum Dare because:
a) I’d already done a partial implementation and I always want to try different things.
b) I assumed that Tower Defense games would be very common submissions. Turns out they have not been, and now I’m wondering if I should have gone for the TD idea because I think it would have proven very fun and popular.
PINBOLOGY: An Overview
In addition to a more fast-paced, arcady game, I was also hoping to do something that had a very “physical” tone (this would give me a chance to really explore the physics engine in Unity 3d, something I have no done before). I decided to go very literal with the physicality and arcadiness and called up my love for classic pinball machines for my submission.
PINBOLOGY attempts to faithfully mimic the components, mechanics, and physics of old electro-mechanical pinball machines while incorporating zones, combos, and special actions themed around evolution. Fun gameplay would be top priority, along with a sense of real physicality. I wouldn’t have the opportunity to measure the actual physical response of different surfaces of a pinball table in 48 hours (different rubbers, plastics, wood, metals, glass, etc…), nor develop really good shaders, but I would do my best to create something that could possibly exist in the real world.
Five Things That Went Well
- Livestreaming: There is no better motivation to continue to work well past the point of tiredness/boredom/craziness than having up to 500 people watch you program. It does prove as a bit of a distraction at time, especially since I tried to narrate as much as possible and talk about why I was doing certain things and how I was doing them, but I still wouldn’t trade it for anything.
- Building Scenes in Unity 3d: I’m a programmer first and foremost, and I get turned on by things like randomly generated procedural content. That sort of thing is not appropriate for a pinball game, so instead I played to Unity’s strength: hand-placing objects. Since pinball tends to be extremely fussy about exactly where objects are, there was a CONSTANT need to tweak object placement, especially as new components were added in and the overall shape of the tabletop evolved.
- Building Objects in Blender: This was my first time doing a 3d game with anything more than basic primitives, and I wasn’t sure if I’d be able to figure out how to get everything working, but everything went really well! I feel that I pulled off some nice 1950′s components (bumpers, kickers, flippers) and somehow managed to make a complete mesh level that works well in the physics engine. I would have liked rounder curves and there’s one messed up set of vertices on the right-hand side that causes the texture/lighting to look a little wonky in that spot, but altogether I’m counting this as a win. That being said, while most of the objects were also quick to put together, the level geometry ate a LOT of time.
- Making What I Knew: As with writing a novel, programming a game that you already understand is a huge boon. I know what components make up pinball tables, I understand how objectives should flow together, and from start to finish I knew what how each feature would need to behave. I didn’t have to stop halfway through and re-evaluate my core gameplay mechanics. That being said…
- Learning Something New: I see LD as an excuse to try learn at least one new thing. You don’t want to overreach here, but this was my first time using Blender to create objects that I would then use in a game. This was my first time really using UV mapping and mesh collisions. This was also the most I’ve done with the Unity physics engine. This is significant, practical knowledge that I can draw on for the future.
Five Things That Went Badly
- Overspecialized Code: I failed to properly general the code for my components, so as a result I ended up writing very similar code many times. I should have planned things out a bit better so that I could have reused more of my scripts. Not only did this make debugging a pain, and reduce my ability to improve my scripts, it also substantially cut into my available time, which led to problem #2.
- My Schedule: I’ve always used the same schedule for LD’s, and it’s gone perfect in the past: Friday night is for coming up with the basic concept and doing a rough implementation to make sure it makes sense, with the idea that I can always restart Saturday morning if something proves unworkable. Saturday is when all major features get developed. Sunday is for polish, like replacing the placeholder art, adding sounds, main menu, GUI, etc… This time, I was still working on major features on Sunday — I was even added the rotating disc 45 minutes before the deadline! I had to do quite a bit of tweaking and tuning to the level mesh, and I had to rebuild the ramp three times to get the look, physics, and just general size and angle where I wanted it. This lead to problems #3 and #4.
- Artwork: My art is always going to suck, and I’m not going to freak out about that too much, but there are several things that I wanted to do and could have done which would have *dramatically* improved the game, but I ran out of time. A slightly better main menu, to establish the theme right away, would have been one thing. By far the biggest thing, though, would have been decals on the table surface to label various features. Real-world pinball machines have this for everything. “10,000 points”. “Ball Lock when Lit”. That sort of thing. Makes a huge difference for gameplay, but also theme. Decals would NOT have taken very long to do. Maybe an hour, tops. But time was that tight.
- Game Balance: This pinball machine is HARD. Many old-school machines are also this difficult (since they were designed to eat quarters), but this isn’t terribly appropriate for the competition. The Extra Life bar is set a little too high (partially because for a while there was a bug that gave away excessive bonus points). The DNA targets and Ball Lock area are rather hard to hit, partially due to the width of the table (because I wanted something “organic” looking and also to accomodate wide-screen monitors), and partially due to a last-minute change to the maximum angle of the flippers. The biggest problem with this isn’t that you run out of lives too quickly (you don’t have to feed it quarters to play again), but rather because it’s very difficult to execute the combos…and that’s where almost all of the theme lives.
- Theme Execution: Between the artwork deficiencies and the fact that a casual player may never unlock the “Survival of the Fittest” multi-ball, the Evolution theme is not obvious. To me, this is my largest failure because I’m actually extremely proud of all the “real” evolution references that exist in the game: Extinction events, geographical isolation, genes, etc… When you trigger a multi-ball, the color of the balls diverges from the parent — and the last one standing becomes your new species (i.e. its color is locked in as your ball color, at least until the next multi-ball). I think these things are GREAT…but they’ll only be seen by people who really know their way around a pinball table. You have to know how to trap balls, how to abuse various cycles, and how to tilt the table at just the right time. Otherwise? You just get a green pinball table and no real hint that the theme exists.
After LD, I always dream of developing my game further and turning it into a real, finished project. I don’t know if I actually have the time to do that, between my day job, my existing projects, my YouTube videos, and family time. But I would like to very much:
- Re-write the scripts that manage the component behaviours to be more generalized, so that components act more consistently and to make it easier to add more.
- Re-write the “toast” (notifications/achievements) system.
- Re-make the level mesh to be more polished, but also narrower (and therefore play a little easier).
- Add very nice shader effects.
- Add considerably more models.
- Add more tables with different themes.
- Add an in-game level editor and the ability to share and rate designs.
- Make a trillion dollars.
We’ll see how that goes.
In any case, I can’t wait for LD25!