|
Roken,
I must admit, a previous post of yours and a few others about creating RPG capable NPCs, and my own interests with AI and robotics provide motivation for my scripts. Please take a look and provide feedback.
I've already integrated what you've mentioned via notecard defined Actions, which are alot like Gestures, but much more capable. I broke out each of the major osNpc functions into separate scripts to give the NPC a more asynchronous behavior. In the previously posted scripts, with everything handled in the same script, I noticed that programming anything either needed to be written for each possible scenario. In my scripts, animations can be driven separately from movement, the bot can move, animate, talk, play sounds, all "simultaneously", instead of waiting for a function to complete, or reinventing the wheel for each case.
(NOTE: Need to credit Haplo and Cam for their scripts)
When using Haplos move script, the bot was essentially stuck in that code until it completed, and the bot could not play an animation until the move function was complete. Now, a command is issued to the move module, and while that script controls movement, the NPC can simultaneously play animations, chat, use sensors, and even play sounds, while walking.
Sitting is handled as one of the aforementioned 'Actions'. Just supply the UUID in the Action card, and the NPC can play that action. Actions are dependent on Locations, also predefined, as it made more sense that an NPC would commit some action at a particular location than to have a bot try to sit while in transit, or where there are no sit_targets.
An NPCs fly/no fly is preconfigured also, by setting a value in the config notecard. Values 1 - 5 define walk, fly/land, fly/ no land, and two additional random values, walk/fly/land and walk/fly/no land.
I've certainly tried to make the system extendable and hope the code is readable, even without comments. I am MORE than willing to work as a team to make this more powerful, as the many ideas that I have will take time. Some of the features I want to integrate include: NPCs issuing commands to other NPCs; ProgramO AIML (LindenAIML is sooo limited); mechanisms for hunger, sleep, and other time based functions; the ability to change running variables; adding script update features; adding a Modules feature to allow custom scripts to be uploaded to a running NPC; an ability to allow the NPC to change appearance, without resetting the NPC; and so much more. These things were accounted for as I've coded, and there are already in place, some functionality for some of this.
As I've mentioned in another post, I'd like to maybe work on osNpcTouch. Justincc already gave me pointers where to look in the code, I just need to pull away from this code long enough to code/test/deug the other.
Again, please take a look at what I've written and let's get this going. I'm sure that many on OSGRID would appreciate what's available. I don't have a hosted region and my laptop doesn't have the oomph for the grid, but once a more complete system is in place, it would be nice to have a ready made package available in world on OSGRID.
Shad MOrdre
|