Sunday, January 29, 2012

Miner Wars Development Costs: How Much Is a Feature Worth?

As the director, I pay careful attention to the development costs of Miner Wars, not just to sit around and count the stacks of money, (although ’greed is good‘), but especially because I received a specific amount of money from the investors – that’s our budget – and I must not spend it without having finished product – Miner Wars.

Today, I want to show you how much it costs to implement a given type of feature.



All the figures shown below include every related cost: programming, art, testing, design, team management, risk reserve, etc.


Feature Costs


Prefabs: $30,000
This task required us to design, model and texture about 400 prefabs –what’s currently in the game.

One Small Ship: $1,000
This task requires us to design, model and texture one small ship, add dummy points for weapons, the drill, define head for the player, etc. Then we integrated each one of these into the game and tested them. We have 23 unique small ships in-game, thus all small ships are worth $23,000.

Editor - Snap Points: $3,000
This task required a programmer to modify our editor to support snap points, (to help everything align perfectly), modify selection procedures, add dummy points to 3D objects (to define where a snap point is), artists then went over a few hundred existing prefabs to add dummies for snap points, after which testers tested these objects by building some experimental scenes. Second iteration consisted of making snap points more intuitive – programmers added perspective transformation on snap points, more control over selections, etc.

Large Ship Weapons: $4,000
This task required a programmer to implement varying types of large weapons, (bullet based and guided missile launchers for example), with their own AI such as auto aiming and friendly fire avoidance. These were then integrated within the editor and save/load functionality was added. So far, our artists have modeled and textured about 8 different weapons. This complex process is topped off with sound and particle effects, (though some are reused from smaller weapons).

Third Person Camera: $1,500
This particular task required a modification to the default cockpit camera - to be able to move it a few meters behind your ship, add some string physics, and be able to react to obstacles between your view and the ship.

Encyclopedia + wiki.minerwars.com: $5,000
This task required us to rewrite our internal design document into a more readable form as an Encyclopedia, fill in some new details on factions and characters, add drawings and publish it on the wiki website to keep things up to date.

Sunlight Shadows: $1,800
This task required a programmer to implement sunlight shadows into our engine, make it stable and solid even on long distances, and then a couple of optimizations iterations: reduce objects needed to render into the shadow map, blend by distance, fix issues with floating point precision, etc. Artist had to build a “shadow testing scene”.

Spotlight Shadows: $1,000
This task required us to add the shadow-casting feature to our spotlight entity, support for different types of shadow caster textures, optimizations and tweaking for different rendering qualities.

Publish a Press Release: $150 to $300
This is what we do every week when we post a news update. It requires us to write and proofread a press release, send it to magazines, update our Facebook page, twitter, YouTube, our forums, our web site, etc.
Sometimes we do a trailer or some special PR campaign, and then it’s more expensive.

Publish a test build: $150 to $300
This really depends on how ugly things get—which is hardly predictable. In most cases it is straightforward and it costs us max a few hours of work. In some cases things go awry and we lose 1-2 days. The process consists of making a separate branch of source code and assets, build it (auto-updater, installer, torrent files), upload to all our servers, and switch the test build or the public build to this new version.

I realize now just how costly these features are. I use to think about them in man-days, not in money/dollars.

Think about this: would you rather have 400 prefabs or a new car? Hehe.

Nothing Beats a Reserve


When I do cost estimation for a new feature, I usually assume that the initial estimation covers only one third of the final price. In other words, people, (including myself), tend to under-estimate. For example, the third-person camera was projected for only $500, but internally I knew it would cost three times more: testing, bugs, tweaking and polishing, broken functionality in some completely unrelated function....
So I have this rule: multiply it by 3. I use it for all my estimations.

Admitting Failures


We have failed features too – we spent the money, but the feature never got delivered.
I do everything possible to not let this happen, and though it actually hasn’t happened in the last couple of months, the beginning where I was just creating this team, there were a few moments.

Most significant were:
  • Story and Dialogues for Single-Player Missions - This cost us a couple thousand, as well as a lot of lost time on my side, and we ended up with unusable and unfinished documents that no one could read, no dialogues at all... so we have to do it AND PAY it again. 
  • Multi-Player - 3 months of paid work, 6 months of total time. I felt this was going to be a fiasco after the first month when the programmer took it a very wrong direction. My mistake was that I let him continue because I was hoping that “he will change”. And then the next month passed, and the next month... by December my patience was gone and we let him go. Worst thing is that this “experiment” cost us 6 months – we could already have working multi-player!

Lessons Learned:
  • If you have a new guy in your team, who has only been there 1-2 months, and you feel that he is incapable, or that there’s something wrong with him, or that you actually start thinking about firing him – then do it! Immediately! There’s no point in second, third, fourth chance. Adults don’t change.
  • Save money, save money, save money! You will be needing the reserve anyway.


16 comments:

  1. Interesting read. Thanks for sharing such information. :D

    ReplyDelete
  2. Really curious about what happened with the employee. Without revealing names, could you explain what happened, and the direction he took the multiplayer in? Don't be afraid to get technical.

    ReplyDelete
    Replies
    1. He had good intentions, but here's what he did wrong:

      - ignored all the code that has already been written and tested for multi-player and networking (UDP layer, encryption, endpoint management...), and started to duplicate it with his TCP/IP layer but with less functionality

      - in MP you want to transfer events and object properties between client and server. His approach was to have some layer above all our classes that will track all changes on object properties and then propagate these changes to other clients or server.

      - that's not a bad idea, but he got lost, he didn't know how to track those changes without having some huge dictionaries of old and new values...

      - then he started to work on stuff we didn't need such as object security (who is the owner of an object, who can modify what...)

      - then he introduced a concept of splitting the game-sectors into zones

      - then some joint stuff that's a mystery to us to this day

      - he ignored basic cheating and DDOS protection rules (other side sending wrong values in packets, e.g. NaN in float... which would eventually cause problems for a receiving party)

      - after 2 months of working on it he started to ask me some basic multi-player game play questions, such us if there is going to be arena or bigger world, if player can travel from sector to sector, how to detect who was shot, etc
      It was way to late for these kind of questions.

      In general, when I was talking with him I felt that he thinks that 95% of what I say is wrong and stupid. As if I didn't know programming.
      And now here's the thing: I am not saying that I am 100% mistake free, but if I would be wrong in 95% cases (programming or business) then I simply wouldn't be in my current position.
      That's just not possible - I didn't get here by luck or god's will, but only be winning over hundreds of small obstacles.

      The bottom line is that if someone in my team thinks that I am wrong in 95% of cases, that means there's something wrong with that guy.
      On the other side, if team members think I am wrong in 5-15% cases, that's totally OK.

      And again, I am not saying this because of some primadone complex. Only because I am analyzing this stuff - so I can avoid it in future.

      And since I write it publicly here, perhaps it will help some other guy too :-)

      BTW, after this programmer left, the other programmers requested to continue in multi-player using the old way - how I originally designed it.
      So we quickly removed all his code, and started again. It works, we are progressing.

      Delete
    2. I see, thanks for the explanation. Sounds like communication was a big problem.

      As a follow-up question, how large is the team working on this game? I know you act as management/spokesman/programmer, and it's clear there is at least one other programmer and an artist on board -- is it much larger than that?

      Delete
    3. Luckily there's more of us: 8 programmers, 3 artists, 3 guys who have producer/marketing role (not all of them are on full time), 1 audio director, couple of testers... maybe I forgot someone...

      Right now I am CEO and dev director, I don't do any actual programming any more.

      Delete
    4. Okay cool, thanks. That's a larger team than I thought. Good luck to you and the team to getting the game out the door, and to hopefully avoid development hell.

      Delete
  3. This comment has been removed by the author.

    ReplyDelete
  4. For the small ships you say it costs $1000. This also seems to include programming and testing of the ships.

    What I would like to know is what is the cost of ONLY the artist time. For example just to design, model and texture the ship. Because to me it seems your artists are VERY expensive, unless you divulge how much of the $1000 went to artist time.

    Thanks again for posting this, it is very informative.

    ReplyDelete
  5. OK, so I will split that one more.

    - model+texture
    - then model for low LOD version
    - cockpit + glasses
    - modifications for a different factions
    - add dummy points for weapons, player head, drill, harvester device, lights, thrusters...
    - integration to the game, this is where programmers come in - but it's the smallest part

    Testing and modifying if something doesn't fit well in game (player head inside the cockpit...)

    ReplyDelete
  6. Just a model+texture, without LOD and cockpit and dummies would be $300 to $500.

    ReplyDelete
  7. Ok thanks this figure for the artist time is much more reasonable. If it was any higher I would have suggested you hire artists from United States as they would be much cheaper.... :P

    ReplyDelete
  8. That's a shame about multiplayer )= I figure that that will be the one of the most difficult parts to the MMO. While you can crank out content, getting the networking to be perfect right off the bat can make or break the game.
    I've never seen a twitch based MMO space simulator. Infinity-universe came close but it stopped as the developer moved to creating and refining the engine to license to other people. I'm just hoping that the reason I haven't seen one of these games as an MMO is because of a ping time delay that developers haven't gotten over.

    ReplyDelete
  9. Forgot about vendetta! Either way, it hasn't been done in a long time I think.
    Oh the anticipation is killer

    ReplyDelete
  10. Ahoj, už nějakou dobu sleduji projekt Miner Wars a napadlo mě, že by možná nebylo špatné udělat nějakou českou info stránku. Na bloggeru jsem založil doménu a pomalu začínám nahazovat základní info. Zatím je stránka neveřejná, ale když mi dáte email, přidám Vás jako čtenáře a můžete to omrknout, jestli je to ok. Chtěl jsem se zeptat, než se do toho pustím trochu víc, jestli v tom mohu pokračovat či nikoliv? Díky za odpověď.

    ReplyDelete
  11. Jasne, urcite pokracuj :)

    Moj email som ti poslal emailom, dufam ze pride.

    ReplyDelete
  12. Hi, i know that this could be an improper question, but how much do you estimate is necessary to complete the game?

    Hevn >)

    ReplyDelete