Before this mail model was this:
World sends events(=input) to minds. They then decide what to
do. They generate appropriate events(=output) and world then
decides what happens and generates next input.
(modified from -line)
From: BrainBoy
Subject: more ideas
To: Aloril
Date: Fri, 04 Dec 1998 21:56:56 -0800
A good thing would be to define some standards / API's / how persons
develop NPCs, rooms, monsters, devices, etc.
There are several RPG projects just starting and there will only be
more. It would be ideal if most could agree on some standard interfaces
so they can inter operate share work. I've seen several announcements
recently but did not follow all the links. I encourage you to seek
these people out and combine resources.
Doing this would also open up the chance for many more people to give
ideas, and help creating the 'world'. A critical mass must be achieved
in any OSS project for it to really grow. The 'job' of any OS project
founder is to get to that critical mass. Unfortunately the more popular
your project is the less it is 'your' project which could really suck,
or be the greatest.
I've thought a bit about how best to represent objects, I call them
things, for games. It is easier for specific/limited game genre but
difficult for a generic/flexible system. Other than the timeline and
queue idea I haven't thought of any specific 'ideas' that seemed
'elegant'
Although the following are general points
-things should be object oriented revealing a standard 'interface' to
other things, the world, and to players. That 'interface' is the tricky
part.
-things can be copied to easily create other types of things (an
interested user good use the rifle thing you created to make a sniper
rifle thing using all the code/properties of rifle and just adding the
long range, night vision, and scope bits)
-things should be serializable SP? / transportable i.e. they should be
able to save themselves and sent over the network to run on other
servers/client machines. This means the base system and language need
to support this, JAVA, Perl, Cobra are some technologies i know of. I
also think Tcl and Python have or will have this sort of ability.
-'things' include code and data, should respond to 'events' and generate
'events'
-the game system should largely be servers for 'things'. things and
servers should allow for distributed systems. So, 'things' can run on
client computers (taking cpu strain off of the game server) and so
several different servers can be used to make a world (each server could
represent one planet or one country or one city in a larger world. Each
server would be 'run' by a person or small group of persons who all want
to contribute to a 'shared universe)
-there can be different servers for different languages tcl, perl, java.
-things can be combined to create more complex things.
-things can be transformed (ore to iron, iron to sword, sword to rust)
-things can 'spawn' other things (Space Marine can be shot with plasma
repeater space marine is transformed and spawns the following (dead
marine body, rifle(damaged), marine arm, marine boots, 1 broke ammo
cartridge, 2 good full ammo cartridges, and so on)
-things can be destroyed, broken, taken apart to make component things
that can be recombined (door could be broken into wooden beams and a
raft made. using the appropriate skills/tools of course)
events would be physical phenomenon, actions, skills
-water
-fire
-force
-electricity
-touch
-sound
-sword skill
-pick lock skill
have attributes
-strength
-duration
-area of effect
-content (the words and language in a talk event)
-source
-target
could be combined to make more complex events
-force, light, and fire for a fireball spell
-touch and pick lock skill to pick a door lock
every verb/action a 'thing', player, etc. could do in the game would be
represented by events
the 'server' would receive events from 'things' and send them on to the
correct 'things' (player thing perform a talk action which sends a talk
event to everything in the player thing's current room and noise(mumble)
events to all adjoining rooms)
An Example:
Wendall the great sorcerer is in the dungeon of Gerk Orc warlord.
In Gerk's Throne Cave are the following things:
Throne made of bone
several animal furs on and around throne
Gerk the Overbroad with many things but most important is a charm of
fire protection
2 orcs guards GerkJr. and Dag
they have leather armor and clubs
the walls ceilings are made of rough stone
there is a wood door at the back
Many of the above could be broken down into component things
Wendal is currently in a corridor south of the throne cave and issues a
walk north action the server converts this into several events
-noise event(footsteps) that is sent to all things in the corridor
-noise event that is not as loud sent to all things in the adjoining
'rooms'(the throne room and outside)
-a pressure event to a pit trap in the corridor
-exhaustion points to the Wendal thing
-change position event for Wendal thing
the pit trap thing proccess the pressure event but it's force attribute
is not high enough to trigger the trap (lucky Wendal is a scrawny
sorcerer and not Conan after all)
the only things that have 'processors' for noise events are Gerk,
GerkJr. and Dag
Dag currently is in the 'asleep' state and stays there
GerkJr. thing checks a random 'roll' against his awareness stat but
fails
Gerk thing 'roll' results in an event (+10 to alertness value) being
sent to Gerk thing, itself.
Wendal is now in the throne room
many more events (noise, new thing(wendal), alertness rolls, etc.
this ends up with Wendal 'aware' of all 3 orcs, Dag still asleep,
GerkJr. wondering if Glissa will mary him and Gerk drawing his battle
axe to throw at the 'dinner' that just walked in.
the server determines due to dexterity stat and current alertness values
Wendall gets to 'act' first then Gerk then GerkJr. and Dag never.
Wendal casts a fireball spell
this causes an event with many sub events fire, pressure, noise, light
the server calculates the time, area, and duration of these events and
sends them to the proper things. in this case it is everything in the
room around the throne.
the furs get set on fire (get fire things 'attached' to them and several
events are inserted in the time que, remove the 'attached' fire events
and change fur thing into ash thing 3 min in the future. that is when
the fire burns out)
Dag gets enough damage points from the fire and pressure to transform
into a dead Dag thing.
when Gerk thing processes the fire event it notes that Gerk has the
immune to fire attribute (due to his charm) and receives minimal damage
although he has the blind attribute (due to the light event) and events
are put in the time queue 1 min in future and 2 min in the future to
reduce and remove the blind attribute respectively
GerkJr. survives but when his armor and club process the fire events
they get transformed into ash and torch things respectively.
the stone ignores the fire, light, and noise events. The pressure event
does not surpass its structure value but adds some text to its
description 'scarred as if by a great fire'.
the wood door gets set on fire and knocked off its hinges (changed
location and its 'attachments' get changed from connected to throne room
to detached and in following corridor. It also gets fire events and
time queue events like the furs)
when his action occurs Gerk throws his axe at poor Wendall ...
This is a very complex system and I simplified the above example
somewhat. I believe that a system like this provides extreme
flexibility and the framework needed for realistic complex AI behavior.
It also draws allot from paper based generic game systems rolemaster and
GURPS.
It is too much work for a single that is one reason I have only thought
about this and never done anything. I think an OS project has the
chance to attract enough resources to make something this cool.
just some ideas
norm
Aloril
Last modified: Thu Dec 10 13:04:39 EET 1998