Developers are required to continually learn new techniques and approaches, which can often lead to issues meeting deadlines, especially when inadequate research results in fatal design flaws. Almost every aspect of information technology is affected by this issue, most notably the game development industry. Game developers continuously push the envelope on a per project basis in terms of visual aesthetics, game play and design. Overcoming limitations is encountered frequently, since there is such an enormous variety of hardware, operating systems and end user expectations.
The importance of designing reusable and maintainable code cannot be stressed enough, and can break a company if disregarded. Even though a significant portion of source code from each project is too specific to be reusable, a core foundation always exists that, if designed properly, can be reused for the majority of future projects. For example, every game requires access to the file system to store media assets; therefore, components that manage file system interaction should be modular enough to plug into any project.
Even though the reusability of existing components can significantly reduce the costs associated with project development, there are other improvements to the design process that are very advantageous. As technology advances, so do the tools that interact with that technology. Utilizing the C# language and the robust Microsoft .NET 2.0 framework, this book will present development methodologies that not only accomplish the goals specified for a project, but do the job in a time saving manner. Toolset development is an extremely broad topic, yet the intent of this book is to provide you with a core set of skills and a comprehensive insight that will aid you in the development of game engine utilities; significantly reducing the time period associated with the construction phase of a project.
The book content is fairly suitable to a wide variety of developers, with the exception of developers new to programming. Readers with very little experience building Windows applications may struggle a bit, but the content in this book will teach them the proper way to implement the functionality needed for their project. An introductory working knowledge of C# and the .NET framework is expected, allowing the content of each topic to be directed towards the subject; avoiding trivial and introductory explanations. To benefit from this book, readers do not require any experience developing game engine tools; terminology and design fundamentals specific to toolset development are clearly depicted and explained. Additionally, all topics are at a level of quality suitable for production code, making the book an exceptional reference and asset for industry professionals and hobbyists. Readers will learn how to build reusable components and optimize existing code for maximum performance, a critical issue when building processor intensive tools.
It was strongly felt that technical books should not be written in a linear manner, which is why the decision was made to isolate the information in this book into chapters that are an independent read from one another. Readers should not have to read a quarter of the book over again just to refresh their memory about a certain component. Readers should be able to jump right to a topic that interests them and begin reading without the need to reference older chapters. The focus of this book in terms of technology is centered on the .NET 2.0 framework and the C# language. However, because of the nature of a “gems” style book, some topics include other technologies specifically related to that topic of discussion. Due to the approach used in this book, all gems are independent of each other unless otherwise stated as being coupled.
C# and the .NET framework are evangelized, but an important issue regarding toolset development is the maintenance and support of legacy code and utilities; hence the decision to include a variety of topics that cover communication between managed and unmanaged applications, as well as topics that address general interoperability concerns. Because of this, C++ is covered in a couple of gems that discuss inter-process communication, interoperability and interacting with unmanaged code. Furthermore, a decent amount of graphical and multimedia oriented gems are implemented with functionality present in Managed DirectX. If you do not have experience or interest with a particular technology used in a topic, fear not. All gems are independent of each other, so you will not be missing out on anything by skipping it until the topic is relevant to your project.
Tools development is an exciting and rewarding area of game development, and is sometimes scoffed at by other developers that do not wish to give up their romantic notions of game development. The truth is, good tools make good games. Someone has to make them, and be glad it's you!
Game Engine Toolset Development (ISBN: 1592009638) provides you with a core set of skills and a comprehensive insight that will aid you in the development of game engine utilities, significantly reducing the time period associated with the construction phase of a project. The book starts off with topics regarding development methodologies and best practices, and then proceeds into advanced topics like swap chain management and MVC object model automation with CodeDom. An introductory working knowledge of C# and the .NET 2.0 Class Framework is expected, allowing the content of each topic to be directed towards the subject and avoiding trivial and introductory explanations. Readers are not required to have any experience developing game engine tools. Terminology and design fundamentals specific to toolset development are clearly depicted and explained. The companion Web site provides downloads of all source code from the book, as well as several bonus chapters on distributing computing with .NET Remoting and wrapping managed wrappers with C++/CLI. Game Engine Toolset Development is the sole authored work of Graham Wihlidal, and will begin hitting shelves within the next couple days. You can pre-order the book on Amazon.
Graham Wihlidal is a consultant at CGI Group, specializing in Microsoft technologies at an enterprise level. Prior to his current employment, he was the lead developer of a distributed workflow automation framework using C#.NET, SQL Server and Windows SharePoint Services. He has several years of experience as a freelance developer and consultant, designing and implementing business software solutions with C#, C++ and Java for a variety of sectors. Aside from normal development work, he also has experience as a configuration manager for Rational ClearCase at an enterprise level. Graham graduated Computer Systems Technology at the head of his class while attending the Northern Alberta Institute of Technology, and is also a Microsoft Certified Solution Developer (.NET) and an Early Adopter for .NET 2.0. Aside from his professional life, Graham has been an active member in the game development community for the past seven years, with an undying passion to both play and develop computer games. In his spare time he is constructing a high-performance 3D engine and accompanying toolset.