Tools SIG
Mission goes here...
News / updates
The 6 Reasons Your Game Development Tools Suck
Perhaps not all of these apply to you, but every game studio I've seen has had one or more of the following problems.
1. Design as you go
All too often, game companies are in too much of a hurry to allow proper upfront design of tools. As a result, programmers end up designing the tools, anyway. Unfortunately, since they have to continually show progress, the tools are designed as they are coded, which doesn't really save any time at all, and leads to a host of problems. As tool development gains inertia, the earlier code becomes more and more difficult to change without breaking the entire system. When given a choice between rewriting and creating a workaround, the least expensive of the two (in the short run) is generally preferred. Major changes to support new features or a more desirable workflow become more and more difficult as the code becomes too brittle to support it's own weight.
2. The system model of design
When programmers design interfaces, they tend to expose the underlying data structures directly. That is the most logical method, since they understand how the system works. The end user has a different view of the system is based on his own goals. He doesn't need to know the underlying implementation details, just the result. The system model can give the desired effect, but may seem illogical to the user, making the tool difficult to understand.
3. Leveraging the wrong technology
A lot of us, especially with engineering backgrounds, cringe at the thought of “reinventing the wheel.” Recreating something that already exists somewhere else goes against everything we've learned, but taking a tool designed for one thing and turning it into something it was never destined to be, will cost more time in the long run than just writing a new tool from scratch.
4. Complicating the interface
“The simpler, the better,” should be every tool designer's motto. The more interface the user has to deal with, the more difficult the tool will be to use. Focusing on the goals of the end user, should make apparent what interface items should be readily available, and which should be hidden away in a menu somewhere.
5. Extraneous features
Often, the tool designers aren't communicating with the tool users, which always leads to a handful of features that just aren't used. They probably seemed really important during design, but wasted time spent on these features should have been used to improve the commonly used functionality. They just end up cluttering the interface or adding additional steps to a process that should have been much simpler.
6. Designing for advanced users
Let's face it, there are some people in your company that are more technically skilled than others, and I'm not talking about programmers. Often, the more technical designers (the ones with scripting or programming backgrounds) are the ones who are able to use the internally developed tools more effectively, leaving the rest of the design staff to struggle. This is also true of other disciplines, but design has it the worst, in most cases. Game development tools should target the average user, with advanced functionality neatly tucked away where the more technically savvy users can find it, if necessary, while the more common functionality should be out in plain sight, easily accessible and understandable.
All of these issues lead to one overarching problem -- low usability. Tools that are unusable, do little good to anyone, and higher usability leads to happier and more productive employees. Every minute that an employee spends fighting with the tools is a minute that could have been spent making a better, more polished game, something every game company struggles to achieve, by addressing problems like the ones above will help tremendously. I'll talk more about these and other issues more in-depth in future blog posts.
Non-Standard Containers for Games
I think something that every game developer comes to grips with when developing tools and game code is dealing with design problems in C++ STL. The C++ standard library has some really nice features (stream-based i/o, map, algorithm), but its lacking some features that are deal-breakers for use in modern game technology:
* The allocator API design cannot support instanced allocators (allocators cannot be specified at object construction time)
* It impossible to use relocatable blocks of memory (due to internal pointer storage within the STL classes)
* Some aspects of STL make debugging hard (examining set and map contents using expressions or watch windows)
Does anyone know of an open source project that addresses any of these shortcomings? I for one would love to see an alternative standard library that addresses these issues well.
Some more thoughts after the jump.
Hello!
I am Geoff Evans, Senior Tools Programmer at Insomniac Games. I will be making frequent (hopefully) updates to this blog including:
* Announcing new releases of open source and commercial products relevant to tools, engine, and game development
* Posing interesting development questions and looking to you to participate via comments for answers/feedback
* Sharing anecdotes on coding, build systems, IDEs, and SCM
Do these sound appealing? Do they sound terribly boring? Am I missing something? I defiantly want to hear from you. You can reach me at here.
I am a big fan of RSS (Google Reader, specifically) to wrangle all my news. If you want to grace us with your subscription you can do so via RSS here.
What determines good middleware?
An interesting discussion was happening at ChaosEngine regarding middleware - what general criteria do folks look at when evaluating whether a particular middleware meets their needs or not? Thoughts?
A few good CodeProject articles
Here are a couple of CodeProject articles that are pretty relevant to tools.
Binary Search Tree in C#
Copy/Delete/Browse Files in C#
.NET Random Number Generators and Distributions
EASTL
Paul Pedriana at EA Redwood Shores details out EA's modifications to STL, largely in regards to performance of the allocator and additions to the container.
Skinned Mesh Export: Optimization
Skinned Mesh Export: Optimization
Ferns Paanakker has written a good article on handling skinned meshes in the export process and how he considers multiple target platforms for output. Good stuff!
Writing Scripting Languages
Pretty interesting read at Gamasutra, featuring Bruce Wilcox, a poor soul who's written 3 scripting languages. He discusses each one and the case for building each. Good stuff.
Torque Constructor
GarageGames has released Torque Constructor, a free CSG modeler and includes a lightmapping solution from Synapse Gaming.
AI Implant
Gamasutra has an interview with Dr. Paul Kruszewski, CTO at Engenuity Technologies, where he discusses the starting up of the company, development of the tools, integration into UE3 and how it works.
.NET 3.0 New Features
CodeProject has a slightly older (Dec.2006) article breaking down the addition of Windows Workflow Foundation, Windows Presentation Foundation, Windows Communication Foundation, and Windows CardSpace in .NET 3.0.
GROME Editor
GROME is a procedural world editing toolkit complete with SDK for integration into game pipelines. Previously in beta form, the commercial release is now available. The company seems to also be building a complete development platform which they provide some general view into here.
<a href="http://www.aiseek.com/"><strong>AISeek</strong></a>
AISeek is developing a hardware solution to AI through their Intia Processor.
From the website:
To address today’s AI challenges, and to enable the creation of entirely new game worlds, AIseek developed the Intia processor. The Intia processor is the world’s first AI acceleration chip. The Intia processor is accompanied by a software development kit (SDK) for game developers. Using the SDK, studios can empower their AI modules and games with accelerated AI. The Intia processor’s accelerated AI functionality includes movement, sensory simulation and terrain analysis.
Collada anyone?
Gamasutra has a 6 page article on Collada. Thoughts?
<a href="http://www.igda.org/Forums/showthread.php?s=513bc382d6ec76b2bafce7ea69477cee&threadid=26683"><strong>Call for whitepaper topics!</strong></a>
Aaron Walker and Raquel are kicking off a whitepaper. Let's help out!
GPUTech releases RTSquare Personal Edition for 3DSMAX for free
3DSMAX: RTSquare allows the MAX renderer to offload certain calculations (i.e. GI, motion blur, area lights) to your GPU, significantly decreasing render time.
They are also releasing RTSquare 1.3 Pro, which works with Maya, Lightwave and XSI, as well as a standalone version and the SDK.
<a href="http://www.mootools.com/plugins/us/polygoncruncher/index.asp"><strong>MooTools Polygon Cruncher</strong></a>
Another solid addition to poly reduction tools for MAX and Lightwave. Polygon Cruncher will not only hold proper shape and volume, but will also preserve symmetry, vertex metadata (uvs, colors, etc) and user defined borders. Optimization is viewable through an OpenGL viewer.
<a href="http://www.softimage.com/"><strong>Avid Softimage XSI</strong> v.6 Released</a>
Personally, I feel that XSI is ahead of the curve when compared to Maya and 3DSMax, so news of a new version is always exciting to me. XSI 6 adds the following to it’s already impressive featureset:
- Mental Ray 3.5.6 integrated
- Full .NET support
- C# support
- Python support (it’s already had Java and Perl)
- Expanded custom rendering support
- MOTOR – allows motion data to be ported between dissimilar rigs while preserving important details of the animation
- Elastic Reality integrated
- Crosswalk – Making it easier to move between 3D apps
Tools SIG links
Subgroups
Next group event
Group categories
- Article/Link (8)
- Discussion topic (6)
- Events (2)
- SIG News/Update (2)
