[vworld-tech] VWorld Ontology
ceo
ceo at grexengine.com
Wed Apr 14 09:09:06 PDT 2004
Richard wrote:
>>From: ceo [mailto:ceo at grexengine.com]
>>It's something we've used for a while now, and there's really
>>only one major problem: speed.
>>
>>Inference engines these days are generally either very very
>>expensive or very very slow :P.
>
>
> This isn't a concern at all for me. I am working on a hobbyist
> project, and I am just as happy for it turn out to be a
> simulation for as long as this would remain a problem.
>
In that case, go get yourself a rete-engine (although to be honest most
of the free ones truly suck, in terms of user-friendliness, performance,
and overall design).
Do you have a preferred implementation language? (not that it
necessarily matters, but a large number of them seem to prefer VM's such
as java these days, for obvious reasons).
> What kinds of patterns are you expecting that make the standard
> optimisations used insufficient?
If you lookup "rete algorithm" in any good algorithms book/website you
should find a pithy description of it's suitability.
From memory, it's the only mainstream algorithm whose performance is
demonstrably independent of the number of rules.
It's particularly suited to situations where the knowledgebase (data
about your game) *could* change a lot, but in practice doesn't change
much from cycle to cycle.
That's like saying that your game-state (the composition of everything
that is in the game, all variables, etc) changes infrequently, but
different parts change each time.
It should be clear that this is already a no-no for many styles of MMOG,
although there are obvious tricks you could use to try and "mold" the
behaviour of your game-state into fitting the preferred behaviour of a
rete algorithm. You can get quite far in this way.
> What engines have you evaluated and exactly what do you do as a
> benchmark in order to determine if an engine suits your needs?
(limited by commercial sensitivity)
Basically, we build and maintain a range of different games representing
different genres of MMOG (only one of which involves people running
around on a landscape hacking each other with swords! ;)).
Although this is expensive and gives very little concrete data (and you
have to be aware that a game which is only 5% of a real game has a
potentially huge error margin on any stats you collate from it!), it's
something we have to do anyway since we're supplying MMOG middleware to
a wide variety of licensees (including mobile games, sports games,
trading games, and RPG's). If we *don't* do something like this, how
else do we check how adaptable our API's are to different genres?
> The advantage of OpenCyc for me as a starter pack is that I
> suspect the ontology which comes with it will be of use in
I haven't looked at OC in ages, so you'll probably have to explain a bit
more about their pack before I can comment usefully :).
> providing that common-sense foundation. And by the extent of
> its content would guide formation of further rules. Are you
> thinking of providing something similar? Or is that something
> for someone who uses what you are providing? Or is the use
> you expect out of it such that a similar base to work from
> would generally not be of use?
*If* I've understood you correctly, then the last sentence is the one
I'd go with. We do NOT provide a "look, I've done most of the work for
you, you just have to decide how many hit points the giant-troll is, and
what colour his skin is", i.e. a "pack" for each genre where the game is
already written, you just fill in a few blanks.
OTOH, we DO provide a "look, all the systems-integration is done for
you, all you have to do is work within the bounds of this architecture,
and you can do anything.", and we *do* release "packs" for each genre
where the game is NOT already written but a lot of the sub-systems for
the game are *mostly* written (and typical licensees e.g. rip-out the
pathfinding algo to replace with one of their own. As opposed to the
former example, where the largest piece of customization a developer is
going to do is change the names of the main characters).
> I'd be interested if you could give an example of what you mean
> by low-frequency game logic.
I.e. (re-)design your game so that the logic for the gameplay can be
executed infrequently. Rather like designing your AI routines to produce
partial results, and to refine to perfection - so that they can be
called every X frames and give a meaningful answer that can be pumped
into a monster-move even if X happens to be "1"; it won't be a great
answer, but a hundred frames later the algo will have refined down to a
much better answer.
Similarly, you can design your game so that you can get away with only
invoking the game-logic checks infrequently. Obviously, you may not be
able to do this and simultaneously retain enough of your core
game-design for it to be worthwhile :), but it will work for some designs.
>
> Its a pity in terms of MMORPGs. Because being a game logic
> programmer, practically everything I do, I do thinking that I
> could also do it using an inference engine with less effort
> and stress if it were practical. Theres a constant balance
Yep. As far as we're concerned, if a game-logic programmer is facing
that then they're missing the tools they need.
Whether or not we can actually supply those tools, and to how large a
section of developers (i.e. what the limits of it's applicaibilty are),
remains to be seen.
> It is of course possible for me to test all my changes on my
> local game servers to the extent where I believe I know theres
> no bugs but the whole process of being able to test the changes
> to the extent they can be and having to always know the range of
> influence the changes have wears on me. I mean in the sense
One should *never* be testing a complex system like that; it's
ultimately a doomed process (I'm assuming you are describing a
theoretical situation, not something you'd actually do :)). There are
certainly things you can do right now that are considerably better -
Larry Mellon's talks on testing in TSO are one example.
> I certainly don't mean to infer that our game logic is bad, to
> me it is that there is such a lot of it. The reason I qualify
> this is that it is trying to post to our forum and then when
> I return to read more about some problem, theres mainly a
> multitude of posts reading something into what I have said :)
I think I understand what you're saying; I proposed a system a couple of
years ago which would expose a tool that effectively predicted what
effects your changes to the game-logic would have. This was born out of
analysing the dev process and finding what you just described - the
maintainability of game-logic in a complex MMOG can be entirely
independent of the quality of code; this is because it's also dependent
on the quality of inheritance system, which in turn depends on what
function-despatchers you have available, etc. And these are things that
developers tend not to ever think about after the point where they
choose an implementation language.
> Building a framework where an inference engine has a place
> perhaps you have a more accurate perspective of how practical
> using it actually is. I imagine to determine how much use it
> would actually be in our game would require experimentation.
So far, we've only a small amount of data on the effectiveness (limited
by how complex an example game we can afford to build ourselves!). What
would be really good would be if we could integrate our prototypes into
someone else's game, doing whatever (probably considerable!) extra
development was necessary to make the game able to run off the
(modified) engine.
> It is unlikely to ever happen, the experimentation to gauge
> the actual usefulness and the intent to use it.
I assume this means that you've already got good solutions for the
problems you described above? Seeing as ongoing code-development and
maintenance are *the* biggest costs in a long-lived product (even more
so with a service!) like an MMOG, this is where the greatest possible
savings could be made. It's the area where you could most increase your
profitability.
Admittedly, this is a business lesson that only the large corporates
tend to have experienced before, so I could understand if your
management weren't comfortable with it. I know of situations where
reducing the maintenance cost of a single product to near-zero has been
enough almost to fund R&D for an entire research-lab year-after-year for
a decade or more: because the total revenue received increases ever
year, and the only cost is maintenance/support/upgrades, over time every
other expense shrinks in percentage terms.
Adam
More information about the vworld-tech
mailing list