Project Porcupine

Indie Game: The Movie


Last night I watched Indie Game: The Movie, a film funded via Kickstarter and that followed the development of Super Meat Boy and Fez.

Just like when I watched The Social Network, I was left with a set of mixed, but very powerful, emotions.  The reason is that these movies resonate with me on a very personal level, because they represent things that I’ve:

  1. Always wanted to do, and/or;
  2. Have already done, and/or;
  3. Want to do again.

I have all the technical skills required to build virtually any sort of website or game.  I’m not alone in this — many people do.  The real trick is to have the right idea, at the right time, and to see it all the way to completion (and to have enough resources to not starve while doing so).

I often use the excuse that I don’t have enough time to be able to really make a game and/or website.  Which is bullshit.  The truth is that I don’t make the time.  Instead I’ve decided that I feel more secure and less stressed by having a conventional day job, and in my off hours I spend far more time playing games than creating things.  Of course, there is the phenomenally good caveat that I have found a way to create something while playing games (i.e. YouTube videos) which has been enormously satisfying. If I’m being really honest with myself, external factors aren’t to blame for me not spending more time creating games.

On the other hand, it’s not like I’m just wasting my time either.  I do work five days a week at a full-time job and spend hours each week producing videos for YouTube. I maintain my health by exercising at the gym. Hell, even the games I play that aren’t recorded are still “research” on the ebb and flow of gaming culture (as well as studying to learn a game for future Let’s Plays).  I spend far more time in front of my computer in my basement than I do with my wife — and somewhere in there I also like to see my friends from time to time.

I have a packed schedule.  But I still want to do more.  I don’t think there’s a way to just do more, so instead it’s a matter of making decisions about replacing things.  Stop doing X so I can do Y.

What are the X’s? My job?  Making YouTube videos?  Playing games altogether?  Seeing friends and family?

For many indie game developers, X is all those things. They give up everything except their game.  For years.

Hell, I’ve been here before. I made a website in my spare time that was stupendously successful.  I quit my great job to work full-time it.  That’s when I discovered that I hated running a business.  Accounting, taxes, licenses, etc…  They suck to deal with.  I was spending almost as much time managing the business as I was programming.  It drove me crazy.  Not to mention the fact that it’s hard to duplicate that kind of success — other websites I developed during that time never really took off, and that’s extremely depressing to deal with.  Also, the stress of depending on just yourself for your income is beyond anything else you’ll experience in your life.  After a year I stopped and went back to a day job…but five years later I’m just left staring at pile of unfinished projects I’ve left behind.

What is the right balance between following your dreams and leading a lower-stress life?

My dream continues to be to develop a full and proper game.  To have my name on something concrete, that people enjoy.  To make at least one dollar from selling a game and call myself a professional game developer.  The way I see it, I have two such projects already on the go:

  • Fish Tank Commander.  This has a great start and a lot of suggestions to feed off of. I have a clear plan to go forward with this.  The development timeline is extremely manageable, and deployment is simple. Web apps are my forte.
  • The space sim-roguelike-empire-building-strategy game (a.k.a. Project Porcupine). There was a lot of excitement about this when I originally brought up the idea, but it faces a major problem — the same one that faces virtually any “community” game effort: Complete lack of focus (also, actual participation). Unless you are cloning an existing game exactly, there really are an infinite different set of options for how you can build a game.  Design-by-Committee can’t work for a game like it can with single-purpose applications (the kind that succeed the best with open-source development).  That doesn’t mean that a game can’t be community-focused and open-source — but in doing my research it looks like every really great open-ish game tends to have a single gatekeeper, or at least started that way.  One central authority that is the final word on what the design and aesthetic of the game is.  Of course, that one person tends to do infinitely more work than everyone — more or less by definition.  It’s only after the core of the game is done can things really be opened up, because at that point the game has a clear design, function, and aesthetic.


I think one of the things that lends so much promise to FTC is that I more or less fell into the “I’ll open-source this game, but I am the Alpha and the Omega when it comes to decisions for it”.  This was by virtue of the fact that these were the rules for Ludum Dare. I didn’t have to be apologetic about being a dictator about it…but as a result the game is actually, you know, a game instead of just a long set of message board posts about what FTC “should” be (i.e. Project Porcupine).

Of course, what will make FTC *amazing* (and it will be amazing) is all the feedback and suggestions that people are providing.  There still needs to be a central authority that picks and chooses what to implement, but the Many-Eyes of the open community is still a tremendous strength.  I’m also hoping that people will eventually contribute actual, direct content and code (there’s already been one user-submitted programming bugfix!), but the reality is that I can’t expect other people to do all of the work for me.  I can’t even expect them to do a significant minority of the work.  I need to do almost everything, at least up until a version 1.0 release.  And realistically that might take a year or more of work.

I really believe that FTC is the best project to focus on first, partially because the scale is more reasonable and partially because I have more immediate expertise with web development than some kind of standalone game.  It’s also going to be the easiest to somehow blend the “I need to somehow monetize this” with “I want people to be able to see the source and contribute”.  FTC can be open source AND commercial simply by virtue that “” will be the authoritative site for gameplay.  It can also grow much more organically, since these types of things tend to never be “finished”, unlike what people expect from something released on Steam or something. (Note that I’m building the game first, figuring out how it will pay for itself later.  Gameplay is king.  That’s the only way these things ever work, lest you turn into another Zynga.)

For the follow-up game (Syzygy?  Project Procupine Revival?), I think I need to use a model closer to Minecraft and Dwarf Fortress.  There’s an unapologetic central authority.  That’s how they work. The fact is that if Notch or Toady hadn’t dedicated themselves to the project completely, it would have never existed.  I cannot compensate for my lack of full-time involvement by turning the game into a magical “community” project.  That was a cope-out on my part. It will never work.  I need to make the game mine and place all the weight on my own shoulders, at least for the first release. That being said, both those games are so stupendous BECAUSE they still involve a lot of community feedback.  I also think I could safely go a little further by making the source available (which I wish Dwarf Fortress would do).

Surely there’s some middle ground, where I can make the source open for people to use for educational purposes, and to contribute to the game, without losing control of my baby — or going broke because I quit my job to make something that I’m now giving away for free? It might be as simple as getting a proper pre-release version together and making a Kickstarter or Indiegogo campaign to start with, followed by some kind of “beg for donations” system going forward.  Personally, I would absolutely not feel secure living off completely unreliable donations.  Holding a sign that says “I will code for food” is not my idea of a stress-free life.  I think I would want to come up with some other model instead, but one that doesn’t feel exploitative in any way.  No pay to win, ever.  Pay for shiny stuff? Maybe.  For something like Fish Tank Commander (which needs money for web servers, if nothing else), that might be something like a special icon, more ability to “vote” for new features, and access to additional niceties like more stats on your profile page and a subscriber-only chat room.

I’m not old, but I’m definitely not young anymore.  I can’t match the energy and passion of the standard indie game developer crowd, which is mostly 25 or younger (I’m 33.)  I sure as hell don’t want to give up the security of a full time job (and I actually like my job a LOT!) and go back to debt and ramen noodles.  Sure, you only live once, and I don’t want to die never having accomplished this dream — but I also don’t want to lose my house and live in poverty just to pursue this.  I’m sure my wife wouldn’t appreciate it either!


Project Porcupine: Design Document


EDIT:  This thread has been stickied and the original post will be updated as needed.  If technical reasons demand (e.g. if I need to split it into multiple posts), I may repost this as a new sticky in the future.


Heya folks, this is my attempt to combine all the various ideas into one cohesive form and present the first draft of the complete game outline.  We got a ton of excellent ideas and I've tried to consider things that had a lot of consensus or just seemed like a solid idea to me.

This is a first draft and will get tweaked in response to continued feedback, but it does represent an attempt at convergence and ideas that fall completely outside of this outline may no longer be considered.

Click “More” to read on.


The Game World

Static Core

The “Core” of our universe will be consistent (more on this in the “Races” section, below). Having a pre-generated core provides the following benefits:

  • A consistent start for all players.
  • We can guarantee that certain basic services are always present, such as shipyards, stock exchanges, and mission hubs, and it will be easy for new-player guides to describe exactly how to get to and use those services.
  • It also means that we can setup in-game tutorials and noob areas.  Exploring one of Jupiter's moons might make a good training mission, and for something like that we probably don't want random-generation. Even experienced players who start a new game might still want to take advantage of the risk-free mining on the moon to get started.
  • It means that the first thing that players see will be hand-crafted and should ensure that things look good and be interesting. And while it's fun to invent a custom setting, there is something very special about giving players the chance to explore our solar system and to see Earth from space.
  • Having a static core means having the ability to tell a shared story, to a certain extent.  You can reference things that all players have in common.
  • For our pseudo/asynchronous multiplayer ideas, a static core that exists for all players makes sense.  The stock exchange, “high scores”, whatever, all make more sense if they are in the same physical place.

Generated Universe

However, the replay value of the game will probably come from having an “infinite” (i.e. randomly generated) universe to explore.  Therefore, when you leave the static core, you will be traveling to randomly-generated systems. However, we can randomly generate these systems from a pre-determined seed, which is used to identify the system.

Here's an example of what I mean:  You have been assigned exploration/mining rights to sector Gamma Epsilon 384.  This number can be used as the seed for the random number generator, so that sector “Gamma Epsilon 384″ would always be the same.  That way, we don't need to save all the details for every space system the player ever visits.  We just need to save the seed (and anything the player did to the system that was supposed to be permanent).

It also means that we have the option of letting players trade these sector seeds. You still get an infinite universe, but this opens up another possibility for a shared universe. The sector you get “assigned” is totally random, and you only get to claim more areas if you complete missions or whatever.  But maybe you really, really need some Dilithium Crystals, and it so happens that another player has discovered that Sector XYZ has a planet rich in Dilithium Crystals.  Maybe you can pay to directly unlock the rights to Sector XYZ?

What this enables is a very compelling Exploration game play, for people who want that.  You go to a system and just spend your time doing surveys of planets and moons and asteroids.  When you design your ship, you didn't include the capacity to haul a million tons of ore, instead you spent your money on better scanners.  Your “map” of the system can then be turned in for cash.  In the multiplayer shared universe, this might mean that the system will now appear in a database that other players can look up and unlock in their own game.  (Even if we don't have an in-game ability to trade information on sectors at first, people could still trade IDs on internet forums or something.)

Note that the “ground” areas you visit in a system should still be totally randomized each time.  You can't tell people to go to the 3rd room on the 4th level and open a chest to find an epic item.  All you can say is: The 2nd planet in the solar system is rich in Dilithium, so if you explore the caves there you should be able to find some, though the structure of the cave, the enemies you find, and where the loot is placed will be completely random.

Persistent Universe

Your player may die, but the universe and everything you did to it remains.  If we have a shared multiplayer universe, then this is pretty much implied, but even in a purely single-player experience this should still be explicit.

You are a representative of a large organization.  This may be a small government or it may be a private corporation.  While you can upgrade your personal skills and your personal ship, you are also “leveling up” your home organization.  If you die and/or lose your ship, it's not game over.  It sucks, but whatever progress you may for your home organization still remains.  Any technology you unlocked is still unlocked, and you still have exploration/mining rights to any systems you had before.


We are not making an action-shooter space-sim type of game.  While not a roguelike, one our key gameplay mechanics will still be strategic, tactical gameplay as opposed to twitch/reflex gameplay.  The final representation of space travel has not yet been determined, but first-person and chase-cam modes are almost certainly not appropriate.  The player may not pilot the ship directly at all, but rather just set a course from a “map” view.  Alternatively, the ship flight mode may simply play out much like ground mode, with a top-down or isometric representation for navigation, with 1-tile-large tokens representing various objects and planets.  You aren't dogfighting or weaving around each other manually.  The ship tokens are abstractions of their position in space, and you may even just “bump” into them to fire your lasers, similar to using a melee attack in ground mode.  Nuclear Missiles (or whatever) would be like “spells” or ranged attacks.

You may be able to walk around the interior of your ship, possibly to be able to repair it if it gets damaged during travel or battles, or to perform crafting, or to defend against boarding actions (and likewise you may be able to board other ships yourself).


These are not literal dungeons, but rather the “ground mode” or “roguelike mode” of the gameplay, which could include caverns, alien buildings, space stations, enemy ships, your own ship, etc…

The gameplay will be, in some way, like a roguelike, but without a grid/tile to contrain your movement and without discreet turns.  It would still take “1 unit of time” to move “1 unit of distance”, but you can move just a fraction of a unit if you want. Likewise, attacks and other actions will take some amount of time.  Maybe your “quick shot” only take 0.5 units to do, but your “aimed shot” takes 1.5 units.

The borderline between a “gridless roguelike” and a “solo tactical/RTS” game is fuzzy.  I'm continuing to use the term “roguelike” because it encompasses a greater philosophy of randomized content, hardcore difficulty, and solo-ness.  If you start to beam down to a planet with a full squad of men, then we enter a far more “x-com/RTS hybrid” territory.

When scanning a planet, a list of points of interest may be generated, which will be a set of “dungeons”.  A threat analysis could be performed at the same time, giving the player a variety of options to choose from.  You could be told if the dungeon is short, average, or long.  If the threat is easy, average, or dangerous.  If the point of interest is a ore vein, a precursor ruin, or a downed ship (implies different enemies and different types of loot.)  Maybe you want a quick, easy run to top up your Dilithium Crystal supplies, or maybe you want to brave a big, high-level precursor ruin for the possibility of finding lots of advanced technologies.

One challenge will be to avoid making the dungeon experience too generic and interchangeable, since we aren't hand-crafting dungeons.  Roguelikes have figured out how to keep the experience fresh and exciting, so we will be looking at them extensively.



There are two real options here.  Neither one would actually have a significant impact on the game design.  They just change the feel of the game.

Players are Humans

We're based in the Sol system and we are trying to advance humanity into the space era.  There's something very personal and meaningful about this.  You wouldn't be picking a race during character creation, but we could still have just as many option for your build.  “Race” is just cosmetic.

In this scenario, the player's organization should probably be a private corporation.

Players are Aliens

We're based at an “international” space station (like Deep Space 9 or Babylon 5). The player homeworlds are elsewhere.  The space station is in the “outer rim” or the “fringe” or something of the galaxy.  It's an area that has so far been unclaimed and uncolonized.  Note that “Human” is still a valid option here, but it would just be one of many options.

In this scenario, the player's organization could still be a private corporation, especially if we have a small pool of pre-made alien races.  In other words, if there are only 8 major alien races, the player should not be a representative of the entire alien nation.  However, if the player's organization is one of hundreds and hundreds (i.e. either you manually create your race or it is randomly generated or something), then it's fine for the player to be working for the alien nation directly.



Man vs Universe

While Project Porcupine has certainly diverged from the realm of roguelikes, it is certainly not moving in the directly of a “4x” type of universe where you are competing with other symmetrical powers.  The player is venturing into unknown, unexplored territory.  Exploration and discovery will be a central theme, both on a galactic level but also on a local level (i.e. on the ground). This is why we are using random generation.

I think that the “Players are Humans” race option would give the best sense of fear and foreboding here.  In the “Players are Aliens” scenario, space is already a known commodity and the races have already expanded and done stuff.  It's just that this one area of space happens to be unexplored.  Might take some of the “awe” out of things.  Or maybe it doesn't do that at all, and maybe it gives us something more.

Man vs Individuals

You will not be venturing into the territory of an another civilization with which you are at war.  There is no organized attacks and defenses to coordinate between large fleets of ships.  You will mostly be operating alone, and the threats you face will be localized.  You might find the occasional pirate or “unlicensed claim jumper” trying to steal from your lawfully assigned star system.  You might find unfriendly local wildlife.  If there are enemy races (or rival corporations), you aren't going to their territory, but of course you might run into them while you are exploring an otherwise unclaimed sector of space.

There should almost certainly also be a “precursor civilization”, even though it's a bit cliche.  A super-advanced race that mysteriously (or not so mysteriously) died off, leaving cool tech scattered around the galaxy for you to discover…probably guarded by battle robots and drone space ships.

Between indigenous life, other sentient beings, and precursor robots we should have a decent pool from which to provide some variety in enemies. (Note that creatures, other races, and precursors wouldn't logically be working together and may attack each other.  This shouldn't happen often, because it leads to dull gameplay, but just often enough to be interesting.)


Not in the “Kill 50 enemies with headshots” sense (although we might have stuff like that), but in the sense of having specific, achievable goals.  Unlocking a new technology, mapping an entire star system, finding the ore vein at the bottom of the caverns of an asteroid.  Things should be paced in such a way the the player will get a concrete reward every X minutes.  There should be a clear indication of the things that you can do, and you should be able to get them done in a reasonable amount of time.

This is what makes games like MMOs so compelling.  You get a quest.  You have to go to a place and do certain things and then come back.  Simply *completing* something like that feels good, and then you can get a reward of some kind (xp, money, items) as well.

So if you've detected a Dilithium Crystal deposit on a planet, you basically have a “quest” to beam down there, fight through some enemies, find the crystal deposit, and flag it to be beamed back up to your ship.  It's not a real “quest” (I mean, you wouldn't have this in a quest log), but it's still a clear series of steps to take to meet an objective, and completing that should feel satisfying. Also, you now have a cargo hold full of dilithium to sell or to use for crafting or something.

For the sake of argument, let's say that any one achievement should be attainable in no more than 30 minutes. For example:  Mapping at entire star system, including getting into a fight with a pirate or two.  Now, you might stop halfway when you discover that a planet has some precursor ruins on it and beam down to the surface to explore, and which point the “dungeon” we generate should be just big enough to be doable in about 30 minutes.


You should be able to customize your starting character (and organization?) considerably, to increase replayability.  Likewise, you may have many options to customize your ship.  Potentially it can be assembled from components in a lego-like fashion.  You may also have a crew aboard your ship that give you bonuses to various activities (but you may be the only person rated to wear the ground-mode “suit” that lets you explore alien worlds and do combat, or if you do want a companion it should be an expensive proposition).


This document will need to be expanded in the future, but this is all I have time for now!

Join the forum discussion on this post

Project Porcupine – Dungeon maps and fog of war.




Windows build: porcupine-2012-01-05

Gridless Movement Demo




Gridless Movement – PC

Gridless Movement – Web (Flash) – Note that the Flash exporter for Unity is still in beta.  You tend to get stuck in walls.

Project Porcupine – Tile Movement Demo




Click here to download for Windows:


UPDATE:  Oh hey, I forgot about the Flash exporter.  You should be able to play it in your browser here:


UPDATE 2:  Wow, the Flash player is super crashy. Don’t touch the north wall!  :(

Go to Top