Handling of Memotica stimuli (sort of like WoW phasing)

General discussions on using the Zen Engine game engine. Only use this forum if no other topic applies.
Forum rules
Please only post here if there are no other places to post. There are many topic specific areas on these forums. Please stay on topic.

Handling of Memotica stimuli (sort of like WoW phasing)

Postby Cayle on Sat Apr 18, 2009 2:53 pm

Some of you might have seen my wallhack question on the Torque forums the other day. I’ll repeat the question here, in a bit more detail to see how the problem might be solvable in Zen. Memotica has a concept in its “standard” metamemes known as stimuli. Stimulus refers to information that is supposed to be transmitted to a decision making entity. By decision making entity, I mean player, AI, etc. Everything that a client knows about an agent is in the form of stimuli. Is he wearing red socks? Does he have bad breath? Does he have a tattoo on his forehead only visible in the UV spectrum? Multiple stimuli can be assigned to agents and events; sounds, text descriptions, textures, meshes, specially formatted information for the AI, etc.

The problem is as follows: These stimuli are filtered based on what the client is allowed to know.

http://i70.photobucket.com/albums/i109/ ... imulus.png

So what exactly happens when the demon is seen by one player as a demon and by another player as a little girl? Obviously, allowing the client to have to final say in what the player sees is asking for hacks. So what is needed is that the client is restricted in what it receives from the server. WoW’s phasing might partially do what I’m thinking of here.

How might this be approached in Zen?
Project Angela - Building Memotica, a design language for PWs.
Dancing Elephants - A blog dedicated to roleplay centric PW design.

A Year In India - personal blog
Cayle
 
Posts: 16
Joined: Mon Jul 14, 2008 6:12 am

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby Tony Richards on Wed Apr 22, 2009 11:41 am

I think the way I would do it would be to have a GameObject that represents the things that are common among everything that every client could see (possibly this is nothing more than the XYZ coordinates / rotation).

The I would create sub-objects and override the ScopeToClient behavior for the sub objects.

I'd probably make a "client type" field in the character or player... could be a bitfield or something that indicates which type of sub-objects can be scoped to that client.

This will make it so that the subset of stimuli that is relevant to the client is replicated, but none of the extra details is.

This could make it so that one player sees a demon wearing red socks and whistling "Dixie" while another "deaf" player sees a little child but hears nothing since that player is deaf and yet another blind player only hears the location of the demon whistling "Dixie" but can't see him. (Obviously that latter player would have to have a nice audio card and speakers).

The default ScopeToClient network behavior scopes only based on proximity. I have a smarter behavior that I'm writing for MMO games that also limit the number of dynamic objects scoped at any given time (to reduce bandwidth utilization).

You can concatenate these behaviors and any behavior can "veto" a client scope, which prevents that client from seeing the object or sub-object.
Image
Tony Richards
 
Posts: 509
Joined: Thu Nov 15, 2007 6:52 pm

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby Cayle on Mon Sep 28, 2009 8:41 am

Since I saw „support for memotica stimuli“ in my RSS reader this morning, I thought I’d better give an update on the status of the Memotica side.

I’ve just finished – or nearly finished actually – a very long development stretch regarding “conditions”, which could best be thought of as SOA style, reusable “if” statements for Memotica. Conditions are a key component of stimuli because they govern how stimuli are resolved and distributed. How a particular stimulus makes an appearance under varying circumstances, or appears differently indifferent circumstances, that state is determined by conditions. The client distribution list is also governed by conditions… based on arbitrary ruleset considerations (e.g. is whatever disguise or perception capacity that a character has sufficient to see the little girl for the demon she really is?), spatial considerations (e.g. line of sight?) and technology considerations (e.g. is the client graphical or text based? If graphical, send the model+mesh. If text, send the text description)

They took quite a while to get working perfectly because I was also introducing the mechanism for self executing content and for (python) script handling of Memotica objects. I’m also fussy about building automated test cases, testing all the corner cases I can think of and then constantly retesting to prevent regressions. It makes each development step in Angela (the Memotica interpreter engine) take longer of course.

As an FYI, Memotica stimuli don’t know about characters or players and it also does not know about interface technologies. What it knows about are entities, controllers and channels. An entity is an individual instance of a meme. One or more controllers might be associated with an entity. A controller is he who gives commands and gets updates”; an abstract client proxy. It:
Defines what stimuli are allowed to be sent due to the user profile it is associated with. E.g. a controller associated with a GM account would have a wider array of possible stimuli that could be sent than one associated with a player.

  • Defines the appropriate stimuli channels. If a player is logged in via a text only client, the controller associated with his/her account would be updated to only allow text messages.
    Has a UID identifier, so it is easy for a game engine to associate a Memotica controller with a client.
  • Angela Stimulus Queue will then forward the resolved stimulus to the broadcaster associated with the channel, earmarked for controller X. The broadcaster is where Angela meets the metal so to speak. I have a design for and will implement a SOAP based universal broadcaster that will simply forward the resolved stimulus as is to the client. In the case of a specific game engine, that resolved stimulus might need to be transformed into an engine specific format.
Project Angela - Building Memotica, a design language for PWs.
Dancing Elephants - A blog dedicated to roleplay centric PW design.

A Year In India - personal blog
Cayle
 
Posts: 16
Joined: Mon Jul 14, 2008 6:12 am

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby Cayle on Mon Sep 28, 2009 8:49 am

Currently, only text stimuli are deeply defined; Internationalized Descriptors (multi-lingual, dynamic text) and plain text strings. Internationalized descriptors are resolved to plain text before being sent out as resolved stimuli. Defining visual and audio elements can either be trivial stimuli that simply hold references for content to be displayed or highly nontrivial; such as building COLLADA on the fly.

I’d like to build a collada compatible stimulus and resolver at some point in the future. This would allow direct manipulation of art content by the designer. Right now, the keep it simple alternative is to have stimuli the simple hold references to content stored on the client (e.g. mesh X, material y, audio file z). Right now, it is a low prio item and deferred until next year some time (probably spring) unless someone wants to build one.
Project Angela - Building Memotica, a design language for PWs.
Dancing Elephants - A blog dedicated to roleplay centric PW design.

A Year In India - personal blog
Cayle
 
Posts: 16
Joined: Mon Jul 14, 2008 6:12 am

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby Tony Richards on Fri Oct 02, 2009 9:55 am

Apologies for not answering sooner (and I'm not going to answer just yet).

This week we're at SIEGE, drumming up some more interest in Zen (and hopefully grab a few more contributors while we're at it).

I'm getting close to resuming work on Fractured Universe (once Zen Studio's World Builder and code generators are complete enough for us to being using them).


How far along are you with the basic implementation? I've not been following along your website enough recently (probably goes both directions since we've all been heads-down coding). :oops:

I'd definitely like to experiment with this system and help with the integration. The SOA approach looks sound, and possibly will help me in my quest of user-defined automota for FracU.
Image
Tony Richards
 
Posts: 509
Joined: Thu Nov 15, 2007 6:52 pm

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby ppClarity on Fri Oct 02, 2009 10:26 pm

Sounds like an expert system aka "rules engine". I've used Drools (Java based) in the past for some simulator work, thought it would be great for doing game AI.
ppClarity
 
Posts: 2
Joined: Fri Sep 18, 2009 7:37 pm

Re: Handling of Memotica stimuli (sort of like WoW phasing)

Postby Cayle on Sat Oct 03, 2009 1:52 am

I’ve also been nose to the grindstone in code. In fact, I’ve been letting the site wither in the vine with the intent of relaunching it after Angela is fully runnable and releasable (at least as an alpha). I’ve got the core logic processing just about finished. I’m being anal about bughunting and regression tests. Over the next couple of months, I’ll build the action and stimulus processing modules. They should be relatively simple, at least in early form. I’m not worried about optimization right now. It must first work bug free and the exposed interfaces should be stable. Performance and scalability can come later.

I'm estimating Christmas at the latest for a full round trip.

On a side note, I’ve been hand crafting a large library of test memes and metamemes. I’ve seen firsthand the content creation bottlenecks and I plan to do a bit of refactoring in the DNA module for better encapsulation of the metameme and meme creation code. Then I can expose it via XML-RPC or SOAP to remote editing tools. My collaborator is building an NPC dialog editor along these lines. Since Visio is my main metameme/meme design tool, I was thinking of doing event capture in that or Dia and enabling realtime collaborative editing of memes and metamemes via diagrams. But first Angela must run.


ppClarity wrote:Sounds like an expert system aka "rules engine". I've used Drools (Java based) in the past for some simulator work, thought it would be great for doing game AI.


I'm not familiar with Drools. I should probably check it out.
Project Angela - Building Memotica, a design language for PWs.
Dancing Elephants - A blog dedicated to roleplay centric PW design.

A Year In India - personal blog
Cayle
 
Posts: 16
Joined: Mon Jul 14, 2008 6:12 am


Return to Zen Engine

Who is online

Users browsing this forum: No registered users and 1 guest

cron