Game Development Reference
Design and programming are human activities; forget that and all is lost.
One of the most important issues facing developers building reusable frameworks
and tools is how the architecture is structured and the dependencies that are
required by each modular component. Not all tools have the luxury of a solid design,
but if at least the core functionality is separated from the tool into external com-
ponents, then the initial design helps promote reusability.
Another issue facing developers is designing an architecture that allows for multi-
ple entry points into the application, such as console support for batch processing,
and a Windows interface for usability. Building two separate applications is a waste
of time, and one of the two won't do in a situation like this. This chapter shows a
great way to decouple the core functionality of a tool into reusable components,
and build a stackable architecture that easily promotes multiple entry points. Keep
in mind that supporting all the entry points discussed in this chapter is generally
overkill for a tool, but they are presented together to portray the “big picture.” Mix
and match the modules shown in this chapter, designing your solution with mod-
ularity in mind.
The .NET platform encourages the design of distributed architectures, and it is
extremely advisable to build any applications or components with that in mind.