Eric Dybsand, a well respected member of Artificial Intelligence (AI) community in the gaming industry. Eric Dybsand has been programming computers since 1961 and programming games since 1987. He works as an independent consultant on Artificial Intelligence through his company, Glacier Edge Technology, out of Glendale, Colorado. His credits include seventeen game titles covering the genres of: turn-based war and strategy, first person shooters, real-time strategy, sports, fighting, and even racing games. He has also appeared as an AI round table moderator at the Game Developer’s Conference for the last 5 conferences.
Please give an account of your background before you got into the gaming industry and how you ended up programming games?
I sold and installed and supported minicomputers and small mainframes for 8 years and then started my own software consulting practice. Three years of consulting led me into developing business and scientific applications. One client requested an AI application relative to analyzing the quality of care in a hospital and that led me into AI. AI, in turn, led me into game development, and I’ve been there since.
What did you do to prepare yourself as a programmer? What did you spend time studying and what sort of activities do you think helped to prepare you to become the programmer that you are today?
I wrote my first program when I was eight years old (I am one of the original nerds) in 1961. And at that time I decided that instead of growing up to be a fighter pilot, I would be a computer programmer (true story). I studied math, science, programming languages and girls (psychology actually) in high school and college attaining the Honor Roll all throughout. However, two activities have made me the programmer that I am today; I Never stopped learning and wrote many, many programs.
Why did you choose to go into the gaming industry as opposed to working on development in other areas of software engineering?
I was already making big bucks at business/scientific consulting, so I thought that I would have a better chance to explore AI in the games industry than I would elsewhere.
Does having a job as a software developer for a company not in the gaming industry help one get into the industry? If so, what related jobs would be good for an aspiring game programmer?
Having any software related job helps establish that you 1) can complete a project, 2) can work as a team member and 3) can make it into work regularly. I think that any job where you can establish that you can do well, helps.
Why have you chosen to work as a freelance consultant in the gaming industry? How does this change your role in making games and your connection to the industry?
Being a freelance consultant is simply practical for me. Most game development is done by teams that are seldom the same personnel from the start to the finish. The game industry has an extremely high turnover as people burn out, or find out that this industry is just too tough for them. Thus, I avoid being “laid off” or “let go” by just signing on for a project. Also, this situation has allowed me to be more selective on the types of projects I work on. And, finally it enables me to work remote, which means I get to stay in Colorado regardless of where the work is located.
As to my role in the project, I am more often considered to be the “outside expert” which is functionally what I am. I am a hired gun who does a specific job and then moves on. As to my connection to the industry, I think that as a consultant, I am probably better connected than most of the individual employees in the industry.
What software or compiler do you use, and can you recommend any software or compilers that would be good for a starting programmer? Anything specific to Artificial Intelligence programming?
I use Microsoft VC++ Dev Studio, a popular compiler for C++ made by Microsoft, Source Offsite (a remote access utility for accessing Visual SourceSafe databases over the Internet) and Boundschecker, a tuning and profile utility for analyzing the performance and system resource usage of computer programs
Do you feel that C/C++ will “reign supreme” as the game developer language of choice, or do you think other languages and technologies (like Java) will replace C/C++ as the primary language?
I really don’t get into religious discussions about which language “reigns supreme” or the like. Since I started programming at a binary level, and moved up through a number of assemblers and languages like COBOL, Fortran, RPG, PROGRESS, SQL Autocoder, Python, C and C++ I’ve reached the point where I really don’t think that the language itself is all that critical. Whatever the client wants my stuff written in, I will write in. Languages are simply tools. Right now, C++ is the language of choice, so that is the tool that most of us programmers need to use. If Java becomes the language of choice, then we should use it.
With the importance of math and physics used in games, how do you feel about higher education and whether or not it is essential to a career in the gaming industry?
Higher level education is not about what one learns, but about how one learns how to learn. When one gets out of college, and into the workplace, the real education begins. I think that a person interested in a career in the gaming industry, should not worry about gaming industry requirements, but should instead pursue subject areas that interest them (if they are programming oriented, then pursue programming related courses, and if they are artistically oriented, then pursue art related courses).
Most game designers are not very good programmers and should not be, since their role is as a DESIGNER and not a programmer. Most artists are not very good programmers and most programmers are not very good artists. Most of the above are not very good at AI, and most AI people are lousy at the above.
With the presence of companies getting larger, projects now taking from 3-4 years to complete, do you see the programmer’s position getting more diversified or specialized? Would you recommend that a programmer specialize in a specific area (like Graphics, AI, or Sound) or is it better for him/her to have a general knowledge of the different areas of programming?
For someone just getting started, they should have general knowledge. Interestingly, most AI educated people I’ve met who’ve come into the games industry have a hard time succeeding. The reason is that they try to do AI as they were taught, and it takes awhile to realize that “computer game AI” is different than “academic AI”. So, since a [brand new] game programmer for a large team may not have any idea what tasks he/she will be asked to do for a given project (the first time around), then a general understanding better prepares them for the tasks that will be assigned.
What book(s) would you recommend to a beginning programmer who is just starting out in the industry that would really help him/her get started? What books would you recommend to an individual getting into Artificial Intelligence programming?
- Game Programming Gems I and II, Charles River Media.
- Artificial Intelligence: A Modern Approach by Russell and Norvieg
In addition, don’t just rely on books. Books tend to get dated, really fast, in the games industry. Learn to use the search engines of the web, and spend time reading articles that are current and timely on technical topics of interest.
In that case, what are a few websites that you would highly recommend?
For games programming:
For computer game AI:
Please describe the areas of the game the for which an AI programmer is responsible. How important do you think the role of an AI programmer is in games right now and how will that role change in the next 5-7 years?
The AI programmer is typically responsible for any aspect of the game that demonstrates decided behavior. Non-Player Characters (NPC) are those entities within a game that represent other players or agents under the command of the player, or objects within a game. As these NPCs interact with the game world and the (human) players of the game, they must often decide what type of behavior to exhibit. The job of the AI programmer is to build the framework (data and code) and processes (mostly code) that allow these NPCs to make believable decisions.
The role of AI (not just the programmer) is gaining some importance in games as the years go by. There has not been a great leap forward as of yet, so the process is slow. Some developers look at AI as unnecessary as in [Massively Multi-Player Online Games] MMPOGs, while other developers think that AI is one more way to differentiate their products from others of the same genre. As to the future, I think that AI will continue to find itself getting more resources, and that more AI Programmers will be assigned to the project, earlier on in the process.
Why did you choose to go into AI programming as opposed to other types of programming? What sort of skills or abilities are more essential to an AI programmer that differ from other types of (Graphics, Engine, or Network, etc.) programming?
I chose AI for games because I was already interested in AI. You see, I picked games as an area in which I could explore AI as opposed to becoming interested in games, and then AI in computer games. I don’t think there are any skills or abilities that are more essential than any other type of programming. Anyone can learn about how to do AI if they are willing to do the research.