Advertisement

Talking to programmers

Started by October 12, 2004 10:50 AM
5 comments, last by Sandman 20 years, 3 months ago
I’ve created a number of game design documents for board and card games, but now I wish to work on a design document for a video game. So far the process has been going well, but not having any type of programming experience, I’m stuck on how I would describe the type of artificial intelligence I would need in my game. What is the most effective way of describing AI for enemies in an RPG? Should I give a rather general idea of how the AI should act, or be as precise as possible? What is the most effective way of describing the coding aspect of the game (while not having programming knowledge myself) to a programmer?
By not doing it? Leave the coding to them.

I'm not sure, as I've not done much of the design process, but I've had the "pleasure" of working off of others' [who've no idea how to code either] non-game design docs. Basically, you state what is required. Adding a priority to things is a great help.

At that point you leave the actual implimentation of it to the coders who know better how it should be done.

So for enemy AI for example, you would state:

- Enemy AI must be not totally stupid
- Enemy AI must be able to select between attacks and spells
- Enemy AI must be able to flee when over-matched

And as I said before, this is mostly opinion based on limited non-game experience.
Advertisement
I disagree somewhat with the above statement unless you want the programmer to design gameplay (which maybe you do).

You should specify in great detail WHAT needs to be done, but not HOW.

For example:

Enemy should be capable of fleeing a battle.
characteristics involved in determining whether to flee are:
- Health
- # of people left to fight
- # of teammates still fighting

The programmer has the creativity of choosing software layout, defining interfaces, etc.
He''s a bad motha - Shut yo mouth.
Isn't that what I recommended?

Hrm, perhaps I was not clear enough.
A design document is not a technical document. There should not really be any specifics about the code implementation in it at all.

What you want to do is specify the desired behaviour, in fairly general terms. Once that's done, you can discuss it with the technical lead, who will go off and write the technical documentation and figure out how the actual code should work. He'll also let you know if you're overambitious, so bear in mind that the original specification may have to change to something that can be implemented in a reasonable time frame.

The design document should therefore be a guide for the technical lead, telling him what is required of his AI system. It should also include notes for you, so if and when he comes back and tells you it's impossible, you can remember and prioritise which bits are really important and which bits would be nice but not necessary.

The technical lead will probably want to know:

What system this is expected to run on.
What level of configurability/scripting is required
What inputs the AI needs - basically, anything that is likely to affect the decision making process goes in here - i.e the NPC's health, it's equipment, it's level, maybe the PC's health, equipment and level, it's current morale, etc.
What are the possible outputs of the AI? Does it simply decide between attacking the player and running away, or does it have a wider range of possible results, like hiding, talking, following, ignoring, etc. Are more complex outputs required? For example, can NPC's summon reinforcements and coordinate their attacks?

Of course, the chances are you have lots of different types of NPC who will need to behave in slightly different ways, probably determined by some set of stats. He doesn't necessarily need to know the specifics of each different race, so long as he understands the degree of variation and which parameters are required. So if evil NPCS always attack Good PCs, but only occasionally attack other evil NPCs, and Pixies always talk to Elves, but run away from everyone else, then the AI scripting system is going to need to cope with the alignment and race variables, so the programmer needs to know this.
What exactly are the jobs of a Technical Lead?

In a nut shell, I want this to be a rather small project along with a very small team. I was planning on creating the game design, art resources, and over viewing development on my own, hoping that the only other help I would need to find would be a programmer or two and a sound artist.
Would the programmer take the title of Technical Lead, or is it a completely different type of job, requiring the assistance of another individual?

Thank you all for your help so far.
Advertisement
The Technical Lead or Lead Programmer is basically an experienced programmer on your team. He designs the actual game code, based on the requirements laid out in the design document.

He'll also write code and generally sort out any technical issues that come up as the code gets written, liaising with the game designer, art and sound leads as appropriate. Obviously if you only have one programmer, he kind of gets the job of lead programmer whether he likes it or not...

This topic is closed to new replies.

Advertisement