In my case, I started working on the lighting and atmospherics of my game. I need to have a sun and some moons because I've convinced myself that they need to be relevant to the game play. When its night, vision ranges are reduced and night creatures get some sort of "boost". When certain moons are full, a corresponding magic system gets a boost or vice versa. So, the question I wasn't asking (and didn't think to ask until now), is "What is just barely good enough for a throw away prototype?". Is a text string sufficient? I hate to say this, but most likely, yes! Here's where the trap begins:
Me: "But, a text string just doesn't convey the same tone / feel, and 'fun' is a feeling. I should at least put in a point sprite representing the sun position!"
Okay, so I buy my own argument and do so. This introduces some new "issues"
Me: "Okay, the sun sets on the horizon now but its white! A real sunset is beautiful and looks reddish orange! I can at least change the color of the sun based on its horizon position, right?"
So I do.
Me: "One other thing about sunsets is that the sun is still a directional light source! The sunlight also changes colors! It makes no sense if every object in my scene is being shaded as if it were mid-day. I should modify all of my shaders to account for a directional light color."
So I do, and I am getting into the "WTF are you doing?!" territory.
Me: "This looks fucking fantastic! The last thing to really sell the sky is clouds! Lets build a huge cloud of particles and let the sunlight illuminate them. My weak justification is the following: Clouds are essential to my in-game weather system, which will have an effect on the world."
So, I build clouds. It's not easy, but it's a hell of a lot of fun. I end up spending several hours just flying the camera through the clouds, imagining that I'm a dragon descending from the sky onto a helpless village. They never saw me coming because I was hiding behind the clouds! Or, I'm a WWII fighter pilot, flying through cloud stacks, trying to hide in the clouds while sneakily picking off unwary enemy fight planes (commence airplane noises).
And then I start scrutinizing my clouds a bit. There are just a few more tweaks I could make which would really make them look nice! Like real clouds! Generally, clouds are self-shadowing, right?! So, if I take a cloud particle and run a ray towards the sun and figure out how many intersections I have and shade accordingly, I could create some pretty sexy looking clouds. THEN it would be freakin' sweet!
I try, and find that it's prohibitively expensive on the CPU. The CPU light version just doesn't look good, and it doesn't scale well to hundreds of thousands of cloud particles. Scratch that idea! Just fake it by tinting the cloud particles based on their position in the cloud, relative to the top of the cloud.
The scientist / engineer part of me is loving all of the science and mathematics involved in creating this 'art', and the engineer part is loving the optimization challenges. I could easily get immersed in building perfectly optimized and visually correct clouds which are illuminated by the sun and ambient light sources. I could happily spend a month on it, researching published studies / articles, creating optimized shaders, trying to create an ultra-efficient CPU to GPU rendering pipeline, etc. It's tempting because it's got so many tantalizing challenges. But now let's put the producer / project manager hat back on and look at what we're doing. This is when we face palm and ask, "wtf are you doing, ya big idiot?! The *engine* will do all of this, and more. You could have just gotten away with using a couple spheres to represent clouds, called it good, and moved on. This comes with a slight opportunity cost as well! You aren't working on the game mechanics / game system anymore, and that's a core requirement for your prototype. Get back on track!" (And a sneaking, nagging doubt creeps in and whispers: "Can you even stay on track long enough to build the core game mechanics? If you can't, you're going to fail to even build a prototype and you're fucked... can't even build a prototype, much less a full production game.")
In the spirit of getting back on track, I've instituted a bit of a 'scrum sprint' cycle. Every Monday I sit down with my artist for five minutes and we outline what we're going to try to get done by the end of the week. Then on Friday, we review how we did. This is necessary and for our benefit. I hate meetings a lot. In my past experience as a military contractor, I see them mostly as a waste of time where incompetent people use them to justify their jobs by blowing hot air up the bosses ass. When I was in Afghanistan, we had a weekly meeting every Friday afternoon which would last up to 2 hours (in an office of 7) because some people didn't understand the meaning of brevity and the purpose of a "brief". So, I'm purposefully trying to keep these meetings as short and productive as possible and avoid devolving into the nightmare meetings I despised. These informal meetings are also designed to keep me on track and focused as well: If I'm working on building the spell mechanics, I can't be building a cloud and weather system instead.
Major accomplishments for the month:
-I have a dynamic day and night cycle with a dynamic directional light which changes color based on time of day (still need to do moons)
-I have built out the back end and front end game mechanics for the spell casting system and can instance a fireball (I will add complexity later)
-I have added a dynamic weather system which is going to interact closely with spells and flying units (wind, lightning, visibility, etc)
-I was able to import the high level model mesh from my artist (which is a work in progress)
-I have assembled my "units" into "armies". Units can only be controlled individually when armies begin a battle (this still needs to be fully implemented).
-A wizard can establish their first building, a wizard tower, and when building has been completed, the wizard tower creates borders (just visually at the moment)
-Wizards can capture mana nodes and build improvements on them (but they don't supply the wizard with a steady stream of mana... yet)
-Made a lot of changes to the user interface screens (but this is only 15% complete, at best. It seems UI's have to follow implemented game systems, not the other way around)
-I've fleshed out the first iteration of the spell system and mechanics, though it still needs a lot more work.
-I added trees, bushes, and grass vegetation to test out the workflow necessary to add models with multiple static meshes, texture them, and illuminate them with directional lighting, and to create some obstacles for creatures to move around, and to give a launching point for implementing 'harvestable resources' which will play a big part in a resources and crafting system. It also adds a bit more "life" into the game environment.
This month marks the 4th month of my new studio's "official" start on this game, with an office building and employee. But it also marks the 1 year mark from when I began this effort. This whole prototype is being done in my own home-brew game engine written in C#/XNA, built entirely from scratch, 99.9% of which is written by me. It's a bit rough around the edges, but its fast and it works. It's interesting to look back and see how far I've come. In a year from now, I want to be far into the production version of this game in Unreal Engine 4. The production of that should be mostly just mindless copying of the game mechanics and systems established in the prototype and adding lots of polish. At some point in the distant future, I'm also going to have to start thinking very hard about marketing, launch, and distribution. I'll certainly need some help on that when the time comes.
Here are some screenshots of the progress (click for large version):
Launching fireballs at a formation of swordsmen during mid-day
Launching fireballs at a formation during the middle of the night
Peeking down through the clouds at the battlefield during sunset
Well, on the plus sign, that weather system is really starting to take shape. I agree it's probably been taken much too far however.
I do like the progress on gameplay. It seems you have prioritized combat over general navigation as a whole? (I'm not sure judging from current progresses).
Could you provide us with a bit more insight into your current plan / roadmap as you envision it (for production yet to come).