The dark arts: Game development & the state of the gaming industry
In this column Steve Naidamast, senior software engineer at Black Falcon Software, comments on the state of game development and dissects the “dark art” in the software development industry. He also dips his toes into the semantics of this industry such as the language of choice among game developers and the struggle between choosing 3D and 2D modeling.
The state of the industry
One of the most alluring aspects of software development is the creation of one’s own game or a utility to support a game genre. Many software developers whether they are hobbyists or professionals have investigated at some point during their tenure as developers the possibility of writing a game that they may either sell or simply enjoy on their own. I have been one of those professionals who was bitten by this “bug” many years ago and since then have investigated just about every aspect of game programming I could come across. However, in the end of each research foray I always returned to the development of turn-based strategic games as a result of my deep interest in military history and the fact that I was a fan of such games years ago when they were still played on printed map boards with cardboard counters.
Through all of these years, game development has steadfastly remained a “Dark Art” in the software development industry whether it was done on an individual basis or by a commercial company.
Whatever the interest, game programming, even today, still remains one of the most difficult types of programming one can attempt. For starters, a majority of the terminology you are used to dealing with in terms of business development, if that is how you have been trained, will be completely foreign to you and those aspects that will be familiar will play “second fiddle” to your core development endeavors. For example, the database aspects of game development take a relatively minor back-seat to the majority of the work required while such work is a major component in today’s business applications. Most database support required will be done with desktop databases such as SQLite unless you are part of a group that is developing a multiplayer game with an expected large degree of concurrency. In this case, you can expect to be using a more suitable database for such purposes.
Nonetheless, actual game development itself will require a good knowledge of graphics programming whether you use one of the foundational libraries such as DirectX or OpenGL or a higher level library that makes the use of the underlying libraries slightly easier to work with. The only difference here is that the properties and methods of the various classes have a slightly less arcane set of names but the overall difficulty is still there.
Other than a good foundation in graphics, game development will also require an understanding of a different type of event driven programming in that much of what you will design for a user interface for a game will require your own efforts to make the necessary events work properly. Modern event programming in business applications is a cakewalk in comparison.
You will also have to learn various degrees of artificial intelligence dependent on the type of game you have chosen to build. And there is no one size fits all in this arena; AI for a first-person-shooter is substantially different from that of an adventure game as that of an adventure game is significantly different from that of a strategy game.
You will have to learn about game loops, memory optimizations in how you use memory, no matter the language you use to build a game, as well as device input control, game assets, scene creation, camera definition and orientation, and host of other capabilities you may have heard of but have never used before. In short, if you have been doing business applications for your career or some form of similar development, such implementations are relatively easy to design and build compared to the amount of knowledge and capability you will have to learn and deal with if you decide upon entering the arena of game development. However, this type of programming could be the most rewarding challenge you ever undertake and once accomplished you may decide to do it professionally. Just be warned that learning to do such programming can be a full time job in of itself considering that a lot of the information you will have to study is not readily available in any centralized location. You will have to hunt for it. And though there are many books available at Amazon for such purposes, quite a few are there for more advanced developers and are heavily based on mathematics that are out of the league of many people. Most of the books are several years old considering that for certain topics not all that much has changed.
Nonetheless, one of the advantages of this aspect of professional software development is the far lower degree of change such developers face during their endeavors. If the game industry actually changed to the extent that we see with business application development with new toolsets being introduced on a near monthly basis, no game would ever be produced to be enjoyed as no game developer or house could keep up such changes and still build their creations.
As a result, a game developer can choose to use an older game library for their purposes such as Microsoft’s XNA, which though now dead, is still being supported for new game development by an independent group of developers at the MXA Game Project at https://mxa.codeplex.com/. This group has provided an XNA open source project that allows people to program with XNA in Microsoft’s most recent version of Visual Studio, Visual Studio 2015.
Microsoft XNA may be dead but you would be surprised to learn how many developers still very much enjoy using its interface to DirectX.
In fact, many of the available tools for game developers today are relatively old in comparison to their counterparts in the business arena. And many such tools are no longer being actively supported making their use even questionable. Developers of such tools, no matter the quality, seem to come and go without much emphasis on the possible future of their products. Nonetheless, there are quite a few freely available tools and libraries that entries into this development area can obtain for their own use.
In short, game development as inherently complex as it is still in a wild west-like mode where everything is in flux and yet at the same time relatively stable since you have a limited but growing number of tools to pick from if you want to use tools that are still being actively supported. If you prefer the older toolsets, the lists are nearly endless. Don’t be dissuaded by using an older toolset that has good documentation for in many situations the internals of such software have not really changed all that much over the years, though they have been refined. You may not be able to bit-blitters anymore to load tiles into memory areas or use back buffers as we did in the days of DOS programming but similar methods are now in place to allow you to do relatively the same things.
Up through the early 2000s, game development still concentrated on thought provoking situations that forced players to indulge in a lot of intellectual processes to win their matches. “DOOM”, the godfather of all first-person-shooters, despite its quick pace was actually about the resolution of increasingly difficult mazes. The monsters that had to be made short work of were actually designed to prevent the player from resolving the mazes in each of the levels. And some of the resolutions to DOOM’s famous mazes were quite a nightmare to figure out. The LucasArts “Star Wars Trooper” game that was an answer to DOOM’s popularity was even more difficult to resolve.
With the emergence of more powerful processors, 2.5D games (games that had a 3D-like appearance but were actually 2D in terms of the internals) like “DOOM” became overshadowed by the development of full 3D games such as the recent Battlefield IV, which now have become the predominant form of game development in the industry.
Flight simulators are now capable of near complete realism (only limited by the use of a flat screen) due to the major enhancements in graphics, computerized physics and the far superior artificial intelligence advancements that have been made. Some games are so sophisticated that though years old are still very popular among their communities. One of the great examples of this is the World War I combat aviation simulation, “Rise of Flight” (http://riseofflight.com/). The underlying mathematics implemented in this simulation are so sophisticated that if allowed to run to their maximum capability would figuratively melt down a pc.
Independent game developers, or Indies as they are called, still make the majority of games being produced today, though their products are sold through larger distributors such as Matrix Games (http://www.matrixgames.com/). Many large game development houses are now very commercialized, most of which was initiated with the still existing Electronic Arts and Lucas Arts brands that rose in popularity years ago. And many of the top selling games, as well as the best tools, take large groups of developers to create with some game houses having between 60 to 200 developers. However, this is not true for all situations. 777 Studios, the makers of “Rise of Flight”, as well as their more recent World War II aerial simulations, have only around 5 developers but they are literal geniuses for what they produce.
Many of the larger shops, like big business, have tended to change hands over the years and even good ones like Talonsoft, which produced the first really great pc-based war-games, for whatever reasons simply disappeared. HPS Simulations, which produced and distributed many sophisticated and excellent war-games for many years no longer seems to be all that active, though you can still purchase games from their site. One will notice however, that the site has been left dormant with a 1990s interface and several links that are now broken. Nonetheless, a new game does pop up on it’s lists every now and then if you check them often enough.
To get an idea as to how many Indy shops and commercial houses are involved in game development, a quick look at the map at http://www.gamedevmap.com/ will provide an interested reader with the scope of just the known and registered shops. This map won’t show you how many individuals are trying to make their way into the gaming industry as independent developers.
In some respects, the gaming industry, due to its own rising popularity in recent years, has moved slowly towards a more professional basis with several schools now devoted to training game developers such as Sail University in Florida. However, the costs of such training, can be the equivalent of an Ivy League school. Prior to this, getting a position with any group was solely based upon talent and a portfolio. And in many respects, still is.
The gaming industry today is as it has always been; disjointed, lopsided in the tools available, difficult to gain entry to unless you have a lot of time to hone your skills and expertise and populated with just about every type of personality conceivable, from teenage hobbyists to MIT trained scientists. The game industry, despite its achievements has remained somewhat frozen in time similar to what the business application field was in the 1990s, where we didn’t have the standards being promoted today and we used the best but limited tools that were available to us. The game industry is still where an adventure in development can be had because there is no one to tell you how you should develop your own game. You have the choice to do it in any way you prefer. And if it works, you just might make a little money off of it. In fact, as I have found, there is probably a better chance of monetizing a decent game product today than a product designed for business or business developers.
Entering the world of the “Dark Arts”
So if this article has whetted your appetite for an adventure and you are one of the few valorous ones who want to consider such a leap into the “Dark Arts” of programming, a well-deserved term since so much is hidden away from most of the developing public, how does one go about taking a dip in such cold waters?
Well first of all you have to decide what type of game you would like to create. There are a number of game genres, one of which you may find to your interest…
Scroller Games (continuous movement of character or characters to a side of the screen)
Tetris Style Games (ie: Candy Crush)
Military Simulations (turn-based war game)
Real Time Strategy Games (RTS)
Adventure Games (follows a story line within a complex maze of events & situations)
First Person Shooters (3D, ie: Doom IV)
Flight Simulators (you had better understand Calculus and Physics)
Any of the game types in the list above can be designed as single player, single & multi-player, or only multi-player. Depending on the game type you are interested in will also determine the development style of your game. If you want to develop turn-based military simulations for instance, you will most likely develop in the 2D format and some 3D tools can even provide this capability for you (ie: Unity3D).
If what is most interest to game developers today is the 3D model of development. However, it should be noted that this is far and away harder than 2D since so much more is required for such endeavors, like a talent for art. This should not give you any idea though, that good 2D development is simple; it isn’t.
2D games are still very popular for certain game genres such as war games (which are actually beginning to see a slow resurgence) and many mobile games. 3D, as just mentioned, is of course where all the action is and because of the popularity of 3D games today, the most sophisticated tools are now becoming available to the general public without charge.
You will also need to decide upon which language you prefer to use, which will also determine the types of tools you will have at your disposal. C++ is still the language of choice among many game developers and if you are currently a C++ developer, the world of game development is wide open to you.
However, many tools have been developed by use for other languages as well. C# is probably the next language in line in terms of popularity, though those tools that allow for C# will also allow for VB.NET.
Lua is seeing a growth in popularity in terms of tools used for scripting purposes along with C#. And if you want to keep things simple, learning to use Lua, which is like a form of BASIC, is probably your best route, though using it will usually be done as an adjunct to a larger tool.
The Java language in this realm, from what I can tell, would be at the bottom of this list considering that so much in game development has been predicated upon DirectX and OpenGL through the use of C++. Nonetheless, Java has come into its own in game development and there are libraries and tools that dedicated Java developers can make use of. One currently, active library for both 2D and 3D development would be libGDX, which was exclusively designed to be used with the Java language (https://libgdx.badlogicgames.com/index.html). And for those Java programmers that would like to develop a military simulation, libGDX also supports the TMX file format, which is used by several editors such as “Tiled” (http://www.mapeditor.org/) that allow developers to create hexagon based maps.
If you want to use C++ and you are comfortable with using DirectX (https://msdn.microsoft.com/games-development-msdn#) or OpenGL directly than half your battle is already won. There are many books available on using DirectX with C++ and though this library has advanced over the years through a number of versions, the same concepts that are being used in its most recent version of DirectX 12 will find similar parallels to earlier versions. OpenGL has been keeping up but on a slightly slower pace but you can get a wealth of information from the primary site to help you along (https://www.opengl.org/).
So where does one begin?
With the number of subjects that have to be mastered, unless you are determined, starting with the raw basics can be extremely overwhelming. Since I always prefer difficult challenges, I have opted for using C# with a 2D graphics engine to develop a military simulation. How far I will get is anyone’s guess but years ago I did develop quite a few map-board algorithms for pathfinding before adequate information was freely available on the Internet. To give you an idea as to how far back this was, these algorithms were built and tested in Microsoft’s professional Basic for DOS. Had I kept these algorithms over the years, with a little tinkering they could have been easily upgraded to the latest versions of VB.NET or C#. Again, the basics for quite a bit in game development don’t really change that much, they just become more refined. When the underlying hardware that supports our games change than you will see major changes in the tools and the libraries as the development software will require it.
If you want to invest yourself with coding a game but want a gentle initiation you can try The Game Creators’, “Dark Basic Professional”. This software is now completely free and was open sourced in January of 2016. The hope by the development group is that the community, which apparently is still quite active, will provide new features and upgrades to this compiler, which comes with a complete IDE and documentation. Just about any game type can be designed with this tool and it can be obtained at The Game Creators site… https://www.thegamecreators.com/
If you would like to start off with a more modern tool, The Game Creators also offer their new “AppGameKit”, which uses “Dark Basic” as its underlying script language. While “Dark Basic Professional” is completely free, “AppGameKit” does cost a moderate amount.
If you want to develop a first-person shooter and again, you want an easy introduction to this type of game development, The Game Creators again has two options you can review. “FPS Creator Classic”, which is offered without any charge and has been open sourced was one of the original first-person-shooter development applications to offer game development without the necessity for any coding. The more modern version of this software, which comes with a moderate cost, is their “GameGuru” development platform. Again, an entire game can be developed without any coding.
Using The Game Creators’ tools is probably one of the least expensive ways of entering the world of game development since not only your actual costs are minimized but just about everything you need to learn is provided with both the corresponding documentation and the forums.
An alternative to The Game Creators tools is the “Defold Game Engine”, which can be found at the following link… http://www.defold.com/
This is a new entry out of Sweden into the field and is primarily for the creation of 2D games on mobile platforms. The software is completely free to use but uses the Lua language for scripting purposes. Nonetheless, this platform, like The Game Creators software, is a good, basic introduction to game programming for those who do not want to experience the shock of learning nuts and bolts of such development.
Moving up yet another notch in game development platforms we have “Xenko”, a new and complete environment for developing games, which uses C# for its scripting language. The site can be found at http://xenko.com/
“Xenko” is completely free of any costs and can be used to develop both 2D and 3D games.
Before you decide to rush into any of this, let me make a note of caution. Once you get beyond the “Defold Game Engine”, you are entering territory that will become increasingly difficult to work with. The more features a development platform incorporates, the more you have to invest in learning how to use it. No matter the platform or game type you are interested in building; the more sophisticated the platform or library, the more work you have to put into it. On another caveat, you also have to accept the limitations that each platform may impose.
Moving up another level we have the “CryEngine” (https://www.cryengine.com/), which is a freely available 3D development platform. However, the site does ask you to donate an amount of money you believe is worth your investment with this engine. The engine can be scripted with C++, C#, or Lua. It is one step below the current king of the platform development environments, “Unity3D”. As a result, it has a lot of complexity that will have to be mastered in order to develop anything of significance.
And finally, as just mentioned, the top product in platform development environments is “Unity3D” (http://unity3d.com/). “Unity3D” is to game development that “Blender3D” is to the graphic arts. In other words this is not an easy environment to master without a good amount of time invested in learning the software. Though the personal edition is freely available to individual developers and small Indy houses and is supported by a host of 3rd party developed assets (sprites, tiles, models) this is not an environment for those that believe the site’s hype that you can quickly build a game. You can’t unless you consider the tutorial samples the level of work you are planning on.
To put this more in perspective, “Blender3D” is one of the most popular open source and freely available graphic art environments in the world. It is now at a point in its development where it can rival the “Maya” software, which was used to develop the visuals by Weta Digital for James Cameron’s, “Avatar”. “Blender3D” is thus crammed packed with features that will support everything from still art to graphic animation. It can also produce digital films. In short, this software is some of the most complex to learn and use for this type of work. This is exactly the same level that “Unity3D” is at within the game industry. And like “Blender3D”, “Unity3D” is now capable of digital film production (see “Adam” on the Unity3D site).
If you are willing to put the time into it than go for it; just be aware that you will have a lot of learning to do. All of these platforms have enough documentation to help you in your own development endeavors.
2D development still lives!
Up to this point we have discussed the development platforms available to developers who want to build games but without the necessities of having to start from scratch by building everything on their own. This is a valid position considering the amount of complexity that is inherent with game design in general. However, even with such advanced platforms as Unity3D for example; there is still a tremendous amount of complexity involved in just learning how to use the product efficiently. Most of these platforms will require that you have some semblance of capability in artistic design; especially if you want to design 3D games. True, several of these environments provide their own sets of assets that you can take advantage of with Unity3D offering the most extensive listing of all. Nonetheless, such assets can be only used so much before you realize that you have to develop something unique on your own. If you need game art that is not available with these platforms there are quite a number of sites that offer such assets on their own. Open Game Art is one such site where all of the assets are offered freely (http://opengameart.org/).
Another drawback to using these platforms is that you will be limited to the features that each of these platforms provide. And though the feature lists are very extensive, again, you have to invest the time to become efficient with them to build the game you ultimately want to create. With “Xenko”, “CryEngine”, and “Unity3D” you will be able to create very in-depth games but you have to put the time in to do so.
By far, beginning with a 2D game would be a much easier path into entering game development but you should still expect to take many months of study to master the skills you may require. So for those who may be wary of such a commitment or simply do not have the time to do so, the products from The Game Creators may be your best bet to get your feet wet.
2D game development has re-emerged as an increasingly active form of game development as a result of the growing use of mobile devices and several of the noted platforms offer this capability. However, for certain types of 2D games you may be better off working at the complete programmatic level where you use your favorite language and a graphics library. Another reason for using such an approach is that you may want to create something that is totally your own, especially if it is some form of software tool that other game developers can take advantage of.
One of the genre of games that is best suited for this type of approach are turn-based (TBS) or real-time (RTS top-down) strategy games. The reasons for this is that though there are tools available to support some of the work involved, you have to do the research to understand which tools will work best with the development environment you are planning to work with. In addition, artificial intelligence development is an absolute requirement for such games requiring research into the types of algorithms that will suit your needs.
One such algorithm for example, will always be pathfinding which is also required in first-person-shooters. This type of algorithm allows one object on the board find a route to another or a destination using a best or shortest route set of determinations. In a war game for example, would a route through a mountain range be better than one through meadowlands? Which one would be the better route for an overall strategy? The algorithms and the code are all out there on the Internet, you just have to find them and understand how to implement them.
Wrapping up the 2D development environment
Platform development has become quite popular for obvious reasons but if you are one of those who prefers to get down to the nitty-gritty of things than a programmatic approach would best suit your interests. And this is how many of the Indy developers and game houses develop their own software and games.
At the lowest level of such development, developers directly use the two top foundational graphic libraries available, Microsoft’s DirectX (https://support.microsoft.com/en-us/kb/179113) or OpenGL (https://www.opengl.org/). If you are a C++ programmer you can use either of these libraries directly. However, if you prefer C# or even VB.NET, to make development easier, you will require an interface library such as “SharpDX” (http://sharpdx.org/). “SlimDX” is another library but their site information states that their last release was in 2012 while the latest release for “SharpDX” was in March, 2016.
If you would like to get a little higher than either using DirectX or OpenGL directly or an interface library to handle such calls you can opt to use one of the following libraries that are still quite active (the Java library, “libGDX” has already been previously mentioned)…
The “Irrlicht Game Engine” (http://irrlicht.sourceforge.net/) is actually one of the few very mature libraries that is still active after many years of refinement. If you were to look at the listings of similar engines on the Internet you would find that many of them, even very good ones find their developers have discontinued work on these tools. This is quite a sad situation since so much has been done with many of these engines that if still active would have given the game development community an active variety of options to pick from. Many of these engines are still freely available and have been open sourced as Irrlicht is, so if you would like to try to revive one of these code-bases you would be doing the community a large favor.
“Irrlicht” is capable of creating 3D and 2D applications and can be used directly with C++. If however, you prefer to use C# or VB.NET you may take advantage of the “Irrlicht Lime Library”, which can be obtained freely from the following link… https://sourceforge.net/projects/irrlichtlime/. This library is still active and had a new update just released this July. For Java developers there doesn’t seem to be a recent SDK for “Irrlicht”, though you can try the “Jirr” project, which can be found at the following link… https://sourceforge.net/projects/jirr/. The latest release for this library was in 2013.
Though 2D development is definitely making a resurgence this resurgence has not been very indicative in the specific 2D library arena. Most such libraries are old and have been discontinued. However, there is one library that is a combination library and toolset that is still very active, “FlatRedBall” (http://flatredball.com/) that you can use to develop 2D games with. Like “Irrlicht”, this library has been around for quite some time and is capable of helping you develop just about any 2D game you can think of. The only caveat is that it is still based on the original but very popular Microsoft XNA namespace, though it is now completely decoupled from it. As a result, I suspect that at some point the senior developer of this software may consider taking the same path as “MonoGame” (see below), which now interfaces with DirectX and OpenGL using interim layers (ie: DirectX with SharpDX). Nonetheless, the use of XNA should not deter you in any way from considering this option. XNA was one of the most popular libraries of its time as it allowed many C# and VB.NET developers to enter the game development arena without having to know C++. This software is still quite powerful despite its age and unless you are planning on developing the equivalent of the very powerful “Frostbite Engine” of “Battlefield” fame, for your 2D endeavors, “FlatRedBall” and XNA for the Windows desktop should more than help you meet your goals. Remember, in game development it’s not the modernity of the tools that matter but what helps you achieve your creative efforts.
Currently, “FlatRedBall” will install the latest XNA plugin to allow you to develop with XNA in Visual Studio 2015 for Windows desktop applications along with the last release of XNA itself. The plugins are provided by the MXA Project on Codeplex.com (the link for this project is in the opening pages of this piece).
“FlatRedBall” can develop games for the Windows desktops using XNA and the Android and iOS operating systems using “MonoGame” for which the latest release of this library is installed as well. The Mac and Linux operating systems interfaces are still under development but making headway.
The “FlatRedBall” library/toolset provides a host of online tutorials and quite a friendly group of people on their real-time chat-line. Taking the place of a forum, FlatRedBall’s” chat-line has a number of people on it almost continuously as well as the primary developer of the “FlatRedBall” software. As a result, you can ask any question you have while learning its tools and library and get an answer back almost immediately.
The other tool that you may want to consider is “Monogame” (http://www.monogame.net/). This tool was created based upon the Microsoft XNA library but in its most recent 3.5 release has now eliminated all of its dependencies on the XNA platform, though it still uses the same namespaces. Instead, “Monogame” now supports both DirectX and OpenGL directly. This software is still highly active but for learning purposes it is still recommended that you use tutorials for the XNA platform, which “Monogame” mirrors. “Monogame”, unlike “FlatRedBall”, is capable of providing support for both 2D and 3D development. Though supported by C# and VB.NET as programming languages, it can be used with either Visual Studio 2015 or the latest version of “MonoDevelop” (http://www.monodevelop.com/) allowing developers to create completely cross-platform games for the Apple operating systems, the Linux OS, as well as Windows.
Documentation, resources and final words
Documentation has never been a strong suit of the Open Source Communities except with the most serious of projects such as the popular database engines or other such projects of similar ilk. So too will you find many game development tools lacking in adequate documentation other than the API, which is of little value if you are trying to learn how to use a particular piece of software. A game development tool lacking in good documentation, in my view should be simply ignored. It is a sign that the development group really doesn’t have their priorities set properly and such tools often find themselves eventually pushed into the dustbin of game development history as most developers will be unable to understand how to use these them effectively.
Many times tools are offered with source code examples in place of comprehensive documentation. In some cases this can work out quite well as with business application tools where many developers are already quite familiar with the concepts in place. However, if you are new to either business or game development, such a substitute will hardly be of any major assistance.
For the development of graphics knowledge when using lower level libraries as described in the preceding sections you will require decent documentation that shows you how to use the libraries. With the exception of “Monogame”, which I already noted in this respect, the other mentioned libraries appear to have relatively decent document in this regard. And of course each of them have their own forums that should be quite helpful since all of these libraries are still in active development.
However, for learning such concepts as artificial intelligence there are no libraries similar to those in the graphics realm that can be of any service to your development. This is an area that you will be mostly on your own. For platform game development this will not be as strong a requirement since there are plenty of codebases for the various products that you can obtain to insert into your development. However, you will still have to have some basic knowledge of what you can do with such source code. It is not exactly just “cut-and-paste”.
An example of this, which will describe this aspect of game development, was a recent project I downloaded in order to understand pathfinding with hexagonal map-boards. Pathfinding algorithms come in many forms and they are part of the world of artificial intelligence. Though I am fluent with C# and could easily read the code provided, trying to learn pathfinding concepts in such a manner simply will not work. Instead, a better approach to learning such development expertise is to find documents that provide you with not only the concepts but pseudo-code that is well enough presented that you could easily convert it into the language of your own choice.
Probably the best site for this type of material is found at Red Blob Games (http://www.redblobgames.com/), which is hosted by Amit Patel.
Amit has been providing game developers with artificial intelligence concepts as well as a host of other subject matter that game developers can use for many years. Though not claiming to be a professional AI expert he is most definitely an expert on the subject matter he provides.
In terms of texts that can still be purchased, I would highly recommend the four books that are edited by Steve Rabin…
AI Game Programming Wisdom
AI Game Programming Wisdom 2
AI Game Programming Wisdom 3
AI Game Programming Wisdom 4
These four books are collections of some of the finest articles in this area of the industry and provide knowledge on just about every aspect of game AI any game developer could possibly want or require.
Written and published between 2001 and 2008, these books provide not only the concepts but the pseudo code needed to experiment and learn the development all of the algorithms you may need in the language of your choice. All of these books are still available on Amazon.
Two sites that you will also want to include as part of your general research are both Gamasutra and Gamedev…
Both of these sites offer a wealth of information on the game industry as well as game development. Whatever you need to look for you can start with either of these sites to set you on your path.
And for art assets, Open Game Art (noted with the link earlier in this paper) is an excellent resource for such requirements. There are several others that I have come across but offhand I cannot remember their names at this time.
In this paper I have tried to offer a literal anthology of development assets that would be of interest to anyone interested in venturing into this challenging field of development as well as an overview of the game development industry. Every resource I have noted, I have verified for recent activity (except where noted) so that you would be able to be assured that the recommendations are still quite usable for any project you may want to consider.
Though I am not a game developer myself at this time, I have for a very long time wanted to be one as a result of my long interest in military history, which relates to strategy games and first-person-shooters. As to the latter I would like to recreate a game that brings back the glory of the original “DOOM” games with the tough mazes and the ridiculously, charming monsters (except maybe for the flame-guy and the devil-bull). With the modern tools available today I just may be able to accomplish this. However, my first interest has always been the turn-based strategy game played on a hexagonal map-board, which I am now attempting to learn the needed concepts for.
Despite my lack of game development experience I have nonetheless spent many hours in the course of a very long career spent in professional business development researching the game industry out of interest, which kept me apprised of what was going on in it and what was available for developers to use. With the violence that is now so prevalent in current games, I don’t believe the industry is headed in a very good direction.
Maybe one of you out there can help to turn the tide of such developments back to the style of earlier games that were both challenging, though-provoking, and retained a sense of context that you were playing a game and not trying to imitate any level of reality.
If you have any questions about the various tools presented in this piece or general questions about game development please feel free to contact me through the contact form at my website http://www.blackfalconsoftware.com.