I'm starting a new RPG project, which is my first RPG (I've already developped smaller games), but before going too far in the development I need to take some time of reflection. The problematics in RPG-programming sound much more complicated than everything I've done before.
That's why I'm looking for good and modern literature about RPG programming, unfortunately it turns out to be quite hard to find reading on such specialized domains. I'm especially interested in:
- How to design a data-driven dialog system between AI
- How to design AI behaviors? Pros and cons between hard-coding and scripting ...
- How to design a powerful, flexible quest system
- Common pitfalls to avoid in these domains?
So any thought, any links to litterature would be greatly appreciated. Maybe I don't look to the right place, but I didn't find anything of interest in gamedev's articles, directly related to these subjects. I'd be surprised not to find any reference on that in 2013.
Now let's give some more information of my own project, if you're ok to read more - I've already started to implement some stuff, it's more like a draft than final code that I will use: it's still time to refactor, and I'm going to do some. It's all C++, with json data. See https://github.com/jotak/RPGProject/tree/reorg_dialogs . I've started to implement some AI behaviors, dialog system, etc. But I'm not sure if it will still fit well when the project grows up. It must be scalable. See in particular this folder : https://github.com/jotak/RPGProject/tree/reorg_dialogs/Sources/AI .
- AI class refers to an AI character.
- Each AI have some traits. There's a method that compute the attraction between AIs according to traits. Space is partitionned in order to limit the possible interactions between AIs (no need to compute interaction with someone 5 miles away)
- Each AI can have a "timetable", in json, which tells at some hour in the day what it's supposed to do.
- Each AI is doing an AIAction, which is either taken from its timetable, or dynamically attributed in code (for instance when I'm starving, I'll try to buy food and then eat).
I already can see some limitations induced by this system. Timetable are written in json. What happens if everyday at noon I go to lunch at the inn... then inn's keeper get killed, the inn closes... my timetable becomes invalid, I have to dynamically write a new one? Isn't LUA or such scripting language more adapted for this? Maybe the best way would be to create a json/LUA interface, if it doesn't already exist?
This is just a quick flavour among numerous questions I have on these subjects.