Nibelheim is my proposed GUI tool for creating AI scripts for creatures in Final Fantasy VII.
Some of you might be aware of my 'Welder' templates - 'plug and play' pieces of boilerplate script code that could be combined to create hierarchical, semi-randomized enemy AI for difficulty mods and my own, belated 'Rebirth' project. I've been thinking about turning these scrappy pieces of code into something more substantial and actually creating a GUI tool for assembling them together.
Specifically, what I have in mind is a tool broadly modelled on FFXII's gambit controls. For those who never played XII, party AI is managed by stringing together a set of prioritized condition checks, with the highest-ranking true condition winning. For instance, an actor's AI gambits might read:
Top priority: If HP < 25%, use potion on self
Mid priority: If ally is KOed, use Life2 on that ally
Low priority: Use attack on random enemy
Normally, the actor will hit random creatures with their weapon, but if an ally is taken down, reviving them takes priority. However, if the actor is in critical health, healing becomes most important, even if other allies are knocked out.
Nibelheim would handle similar decision trees, possibly with a flowchart UI:What's the scope of what Nibelheim would create?
I'm not looking to create a high-level, Turing-complete scripting language that can be compiled into any feasible FF7 AI 'program'. There are constraints around what a Nibelheim 'script' would support, and what a Nibelheim application would do. Namely:
- Assume creatures will always act, and do so by taking one action. This action will always be a spell or ability.
- Scripts only control actions. They do not allow the user to arbitrarily set status flags or set data.
- Scripts are highly abstracted. They do not expose memory, or the 'compiled' FF7 pseudo-assembler. No inline opcodes.
- Allow users to export and distribute abstracted scripts in a non-proprietary format
- Assume users will insert 'compiled' scripts into FF7 data files themselves, using WallMarket / Proud Clod
- Assume that Nibelheim scripts should be forwards-compatible, and that any Nibelheim release could extend the features of scripts, and the types of data users can access
- Assume that the application source should be available for others to modify, extend and redistribute
- Not support decision trees that would fall outside the simple 'flowchart' model / gambit system outlined above
Nibelheim might support some randomized decision making, but would not replace simple templates for 'roulette' AI scripts. I'm thinking AI that makes smart but tactically predictable choices, with occasional random variation.What would the technology be?
Because that's where FFVII's monsters were born!What do I want from you?
The answers to three questions:
1. Would you use it?
2. What sorts of scripts do you write? What types of decisions do your monsters make? What types of scripts would you like to write, if only you knew FF7's AI scripting language better?
3. Would anyone else be prepared to help with this project? Not necessarily as a developer - bugtesters would also be a boon.