Erratic development speed.

I have a priority queue of game features that need to be completed.

E.g.:

  • [-3] Pure black rolling fog to simplify fog shader.
  • [4] Dual paraboid point light shadow map implementation
  • [2] Terrain diffuse lighting based lightning effect.
  • [6] Moon billboard.
  • … etc.

Where [x] represents x priority for the item. (A larger priority value means I should focus on that item before a lower priority valued item.)

I assign higher priority to items that are both easy/fast to implement and important features that the game needs. Hence the moon is high priority — it dramatically alters the mood of the scene for something that should only take maybe an hour to implement (considering that I have zero billboards in the game at the moment).

The more I try to estimate the time cost of implementing various features, the more I realize how hopeless it is to try to estimate the time cost of implementing a feature.

Creating the moon texture took an hour.

Creating the billboard code took an hour, including setting the moonlight from the right direction.

Getting the moon to look just right (that is, tweaking the texture, position, and lighting) took an hour.

At this point it was working on the PC.

The moon! Notice the specular moonlight shining on the terrain.

Then I slept, and when I woke up, tested some other code on the XBOX only to find that the moon is not displayed properly on the XBOX!

Obviously this is not how the moon is supposed to look.

Figuring out this bug took over an hour.

The fix by the way, was changing this pixel shader:

 

float4 PixelShaderFunction(float2 texCoord : TEXCOORD0, float4 color : COLOR0) : COLOR0
{
    color = tex2D(TextureSampler, texCoord);

    // Apply the alpha test.
    clip((color.a - AlphaTestThreshold) * AlphaTestDirection);

    return color;
}

To this one:

float4 PixelShaderFunction(float2 texCoord : TEXCOORD0) : COLOR0
{
    float4 color = tex2D(TextureSampler, texCoord);

    // Apply the alpha test.
    clip((color.a - AlphaTestThreshold) * AlphaTestDirection);

    return color;
}

All in all, creating the moon took over 4 hours — about 4 times longer than I thought.

Days like this make me nervous — what if creating the whole game takes 4 times longer than I thought? After all, first place DBP winners likely spend years, not months, (and certainly not just 3 months) on their submissions.

This entry was posted in Coding, DBP2011, XNA and tagged , , . Bookmark the permalink.

5 Responses to Erratic development speed.

  1. Humberto says:

    If you desire to increase your knowledge only keep visiting this site and be updated with the most up-to-date information posted here.

  2. Hello, I wish for to subscribe for this webpage to
    take latest updates, thus where can i do it please assist.

  3. Just want to say your article is as astonishing.
    The clearness for your put up is just cool and i can assume you are knowledgeable in this subject.
    Well with your permission allow me to seize your RSS feed to keep updated with imminent post.
    Thank you one million and please carry on the
    enjoyable work.

  4. Hello I am so happy I found your site, I really found you by mistake, while I was
    looking on Yahoo for something else, Regardless I am here now
    and would just like to say thank you for a marvelous post
    and a all round enjoyable blog (I also love the theme/design),
    I don’t have time to read it all at the moment but I have saved
    it and also included your RSS feeds, so when I have time I will be back to
    read more, Please do keep up the excellent jo.

  5. Aw, this was a very good post. Finding the time and actual effort to produce a top
    notch article… but what can I say… I procrastinate a
    lot and don’t seem to get nearly anything done.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>