Introduction

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. The need to overcome limitations is encountered frequently, since there is such an enormous variety in 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 that are very advantageous to the design process. 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 timesaving 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 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-based applications may struggle a bit, but 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 2.0 Framework is expected, allowing the content of each chapter to be directed towards the subject and 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.

All material is 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.

I feel strongly 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 other chapters.

The focus of this book, in terms of technology, is on the .NET 2.0 Framework and the C# language. However, because of the nature of a “gems” style book, some chapters 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 chapter, 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 who 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!

I worked hard to produce this book for you, but I also had a lot of fun writing it. I feel that a wide range of applicable topics were covered, and hope that you run to this book time and time again. Thanks very much for supporting my work and for your interest in a topic that I am so passionate about.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.219.34.62