Apart from reducing the complexity and choosing the right tool, I like to stress the importance of a short and fast asset-pipeline to speed up the cycle of designing and testing. Being able to quickly check out the results of your last edit to the model will help a lot in saving time. If you waste 5 minutes per weapon only just to get your testing running, you already wasted 5 hours of work.
Another thing that greatly enhances the speed is to be able to change & save the objects during testing, so you can tune while testing and quickly apply the results.
absolutely! I think this is the most productive trick I've come across yet.
With my current project fast approaching 70,000 lines of code, I'm looking at about 50 seconds just to link a fully optimized release version. Add the time to compile (5 seconds) and fire up the game (maybe 15-20 seconds), and its almost 2 minutes each time you want to move something just one pixel left or right!
So its gotten big enough that you actually plan your development around recompiling as infrequently as possible. Big projects get like that towards the end. 65,000 lines seems to be the breaking point.
To streamline the pipeline for drawing simple dropped objects (one mesh and texture only w/ scale, translation and rotation), i made one of the objects editable. hit a hotkey, and a popup menu lets you set the mesh, texture, scale, rotation, and translation in real time in the game. When it looks good, you copy down the numbers and move on to the next object. When you have the numbers for all the objects, you plug them into the code, recompile once, and then go check them all. Knocked out over 200 objects in about a week.
I've also added a value manipulator tool to the game's modeler. As well as being able to click on a value (such as mesh ID or x scale) and entering a new value, you can now also simply press and hold buttons that increment or decrement the value in real time and update the display in real time. so you select the x position for a limb (such as an upper arm) hit the increment or decrement buttons, and move it in and out in real time. The value manipulator lets you increase and decrease the amount of increment by an order of magnitude by clicking two other buttons. this way you can easily move things by thousands to thousandths of a unit as desired - very handy when trying to scale that girl's thigh mesh just so! ; ). Granted, this feature is nothing special compared to modeling software where you can click and drag to move, scale, and rotate. But this is just an in-house editor (for the moment), probably less than one day's total development time spent on the tool over the life of the project so far. And yes, its built into the game itself. It was easier to make it a menu pick on the main menu of the developer's version that it was to write a separate program.
Being able to change and save objects during testing also helps a lot. If a model doesn't look right, i can quit the game i'm playing, go back to the main menu, run the modeler, load the model, edit it, save it, and quit the modeler. But then i have to quit the game and restart it to force it to load the new version of the model. But then i can go right back in and see the change. A menu pick on the main menu to "reload all graphics" would avoid quitting and restarting. OTOH, all the time for the restart is loading graphics anyway, so probably not much savings there.