May 1999
- Object server. Quzah [softhome]
- Censorship & Its Impact On World Immersion J C Lawrence
- OT: Ethics v Law Greg Munt
- Virtual v Artificial Worlds Greg Munt
- Virtual v Artificial Worlds Matthew Mihaly
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? Wes Connell
- Custom Server Roll Call? David Bennett
- Custom Server Roll Call? Koster, Raph
- Custom Server Roll Call? Greg Munt
- Custom Server Roll Call? The Arrow
- Custom Server Roll Call? Alex Stewart
- Custom Server Roll Call? Nathan F Yospe
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Matthew Mihaly
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Chris Gray
- Custom Server Roll Call? Marc Hernandez
- Custom Server Roll Call? Greg Munt
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Matthew Mihaly
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? J C Lawrence
- Custom Server Roll Call? Ling
- Custom Server Roll Call? Jon A. Lambert
- Custom Server Roll Call? Emil Eifrem
- Custom Server Roll Call? Niklas Elmqvist
- Custom Server Roll Call? Chris Gray
- Custom Server Roll Call? Emil Eifrem
- Custom Server Roll Call? Chris Gray
- Custom Server Roll Call? Emil Eifrem
At 07:51 AM 5/15/99 , Chris Gray wrote:
>[Emil Eifrem:]
>> None of the above is viable. My solution was to introduce a second way of
>> IMC, tentatively called "exported functions." (Horrible name for something
>> in a Java server, I know.) The idea is to make it possible for a module to
>> execute special, 'exported' methods in other modules. Probably the best way
>> to explain this is to show an example:
>>
>> ---
>> DBModuleInterface = getModuleInterface("database");
>> int amountOfSwords = DBModuleInterface.issueQuery(query);
>> player.println("There are " + amountOfSwords + " swords in the db.");
>
>I think this is quite close to the issues that came up with devmud. I
>haven't been on Jon's MUD for months, so I don't know if stuff is happening
>there or not.
>
>We had talked about ways of linking up an exporter of functions to importers
>of functions, based on descriptions of their arguments and their names. Thus,
>the type-safe aspect wasn't done by the implementation language, but rather
>by the matching code. My Java isn't good enough to know whether you can do
>this in Java or not.
So basically enforcing this would mean I'd have to use of some kind of
preprocessor that confirms that all invoked exported functions have a
corresponding definition somewhere in some other module? Unfortunately,
that's the kind of extension I would much rather avoid. I think I have
achieved the same effect with my "exported functions?"
>
>You could handle it by just using your first, event-based interface. The
>command code builds the DB request and emits it. The DB code receives the
>request and processes it. It then emits a DB-response message, containing
>an identifier that was also in the request message. Receipt of that
>response wakes up the command module, which was in a form of sleep,
>waiting for a message like that. I won't comment on the efficiency of
>a scheme like this, but it ought to work. Unfortunately, this completely
>bypasses your desire for language-enforced type safeness, since you are
>doing everything with strings, which are not checked by Java, but only
>by the module(s) that receive them. It sounded like you were already
>using lots of threads, so having the command module asleep, waiting
>for a response, shouldn't matter - it should still be able to run
>other threads to handle further input.
-nod- I have the bad feeling that in the end, I will be using strings for
my events anyway. :(
I guess this would work. My initial response was "what if/when DB module in
this example does not emit a response event, the whole command handler
would freeze!" But that's really no different than from using normal method
calls; the way I have it now, any method can block and freeze the mud if it
wanted to.
I'm going to have a look at this alternative. One concern (as you pointed
out) is performance, this will need to happen literally thousands of times
per second, probably more by a magnitude. And suspending-resuming threads
in Java is not only discouraged, it's a resource-eater as well.
>
>> This may not sound like a big problem. But it is, believe you me. Let's say
>> that I want to have a Player class that several modules are dealing with.
>> For example, I used to have a "Creation" module, that was responsible for
>> creating new players and characters (player = a rl-world person, character
>> = a fictional person run by a player). I thought this was a neat idea, but
>> in order to have the Creation module pass the newly created players and
>> characters to other modules (say, the 'World' module and the 'Playermode'
>> module) I would have to move the Player and Character classes into the
>> kernel. Remember, classes created in the Creation module are only visible
>> to the Creation module.
>
>Indirection. You'll have to go back to the older form of using objects,
>rather than the C++ form. *Only* the module that defines a class can do
>any operations on it.
Right now, only the module that defines a class can do any operations on
it. Actually, that's the way it will stay whether I like it or not, it's
just the way this type of class unlaoding works in Java. This may be for
the good in most cases but it would be nice to somehow share common data
types without having to resort to putting them in the kernel.
>Everyone else can just store and pass around
>references to specific objects of those classes. Untyped pointers,
>essentially. You could just use integers for them, but Objects are likely
>easier. Will this make it awkward to do lots of things? You bet! And
>inefficient.
That's what it's like in the current version. I'm not actually passing
along a Connection object with my NETWORK_NEW_CONNECTION event, I'm passing
along an int that represents an index in the Network module's internal
connection list. This works out ok as far as connections and similar go.
But it makes it practically impossible (or at least very awkward) to have
for example a Creation module that is responsible for creating objects of a
complex class (Player) that other modules can use.
[snip problems with devmud]
>It sounds like you want aspects of your scenario (as opposed to your
>low-level server) to be reloadable modules. I don't really see a way to
>do that cleanly.
I would really want to have basically everything contained in reloadable
modules. I'm just so hooked on the "detach;compile;attach new" approach to
a mud that has been repeated here so many times. (I'm also, btw, coming
from a 100% hardcoded background (ROM) with a server that basically
requires rebooting for every little change. Much like that favorite
operating system we all love to hate.) I may ultimately end up with a
server consisting of two modules: network and world, where world is an
entire mud minus networking.
[ - - - -
Emil Eifrem [emil@prophecy.lu || www.prophecy.lu/~emil]
Implementor of Prophecy [telnet://mud.prophecy.lu:4000]
Coordinator of the Jamu effort [http://www.javamud.org]
- - - - ] - Custom Server Roll Call? Chris Gray
- Custom Server Roll Call? Emil Eifrem
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? J C Lawrence
- Custom Server Roll Call? Emil Eifrem
- Custom Server Roll Call? Marc Hernandez
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Jo Dillon
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Marc Hernandez
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Marc Hernandez
- Custom Server Roll Call? Adam Wiggins
- Custom Server Roll Call? Matthew Mihaly
- Custom Server Roll Call? Hans-Henrik Staerfeldt
- Custom Server Roll Call? Ola Fosheim Grøstad
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? claw@kanga.nu
- Custom Server Roll Call? Emil Eifrem
- Custom Server Roll Call? Chris Turner
- Custom Server Roll Call? Ling
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? Jay Carlson
- Custom Server Roll Call? Caliban Tiresias Darklock
- Custom Server Roll Call? Ling
- Interesting dilemma Peck, Matthew x96724c1
- Interesting dilemma Caliban Tiresias Darklock
- Interesting dilemma Quzah [softhome]
- Interesting dilemma Brandon A Downey
- Interesting dilemma Shawn Halpenny
- Interesting dilemma Matthew Mihaly
- Interesting dilemma Benjamin D. Wiechel
- Interesting dilemma Koster, Raph
- Interesting dilemma Wes Connell
- Interesting dilemma Mattias Lönnqvist
- Interesting dilemma Mik Clarke
- Interesting dilemma Joel Kelso
- Interesting dilemma Ronan Farrell
- Harvey's Rules of Immship John Hopson
- Confiscating items (Interesting dilemma) Ola Fosheim Grøstad
- AW: Interesting dilemma Hofbauer Heinz
- Virtual Property J C Lawrence
- Virtual Property Koster, Raph
- Virtual Property Jon A. Lambert
- Autogenerating maps from muds using cardinal directions for exits? Ben Greear
- Discussion of large server IO handling desing J C Lawrence
- Planes of existance Quzah [softhome]
- Planes of existance Greg Munt
- Planes of existance Quzah [softhome]
- Planes of existance Caliban Tiresias Darklock
- Planes of existance Ben Greear
- Planes of existance Caliban Tiresias Darklock
- Planes of existance Greg Munt
- Planes of existance T. Alexander Popiel
- Planes of existance Ola Fosheim Grøstad
- Planes of existance Matthew Mihaly
- Dynamically changing room descriptions Ronan Farrell
- Dynamically changing room descriptions Mik Clarke
- Dynamically changing room descriptions Ben Greear
- Dynamically changing room descriptions Koster, Raph
- Dynamically changing room descriptions Richard Bartle
- Dynamically changing room descriptions Matthew Mihaly
- Dynamically changing room descriptions Travis Casey
- Dynamically changing room descriptions Travis Casey
- Dynamically changing room descriptions Ola Fosheim Grøstad
- Dynamically changing room descriptions Jon A. Lambert
- Dynamically changing room descriptions Ola Fosheim Grøstad
- Dynamically changing room descriptions Eli Stevens {KiZurich/GreySylk}
- Dynamically changing room descriptions Jon A. Lambert
- Dynamically changing room descriptions Ling
- Dynamically changing room descriptions Christopher Allen
- old fight system I toyed with Koster, Raph
- APE 0.2.1 J C Lawrence
- OT: robots, agents and emotions Ola Fosheim Grøstad
- OT: robots, agents and emotions Ola Fosheim Grøstad
- Time Discontinuous MUD Ling
- Semi-OT: International intellectual property right (was: Custom Server Roll Call?) Custom Server Roll Call?) Ola Fosheim Grøstad
- Semi-OT: International intellectual property rights Ola Fosheim Grøstad
- Marc Hernandez' Server Greg Munt
- Marc Hernandez' Server Jay Carlson
- Marc Hernandez' Server Caliban Tiresias Darklock
- Marc Hernandez' Server Travis S. Casey
- Marc Hernandez' Server Adam Wiggins
- Marc Hernandez' Server Marc Hernandez
- Marc Hernandez' Server qitelremel@hotmail.com
- Scry 1.9.1 (Feature Freeze) released. Ben Greear
- The distinction between magic spells and magic abilities Greg Munt
- The distinction between magic spells and magic abilities Matthew Mihaly
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Caliban Tiresias Darklock
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Jo Dillon
- Multi-threaded mud server. Travis S. Casey
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Chris Gray
- Multi-threaded mud server. Chris Gray
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Mik Clarke
- Multi-threaded mud server. Chris Gray
- Multi-threaded mud server. Mik Clarke
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Caliban Tiresias Darklock
- Multi-threaded mud server. Mark Gritter
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Travis S. Casey
- Multi-threaded mud server. Ola Fosheim Grøstad
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Ola Fosheim Grøstad
- Multi-threaded mud server. David Bennett
- Multi-threaded mud server. Ross Nicoll
- Multi-threaded mud server. Jon A. Lambert
- Multi-threaded mud server. Travis Casey
- Macro languages Caliban Tiresias Darklock
- LOTR and Mud [was: Marc Hernandez' Server] Marc Hernandez
- Noise: boys will be boys (was Multi-threaded mud server.) Ola Fosheim Grøstad
- Kanga.Nu has finally moved... claw@kanga.nu
- Java & MUD servers Laurent Bossavit
- ScryMUD 1.9.3 released. Ben Greear
- ScryMUD 1.9.3 released. Chris Gray
- ScryMUD 1.9.3 released. Ben Greear
- ScryMUD 1.9.3 released. Jon A. Lambert
- [TECHNICAL] How to generate pre-processor output (template problem). Ben Greear
- Searching the archives claw@kanga.nu
- Text Parsing Albert
- Text Parsing Greg Miller
- Text Parsing Kylotan
- Text Parsing Chris Gray
- Text Parsing Albert
- Text Parsing Mik Clarke
- Text Parsing Cynbe ru Taren
- Text Parsing Chris Gray
- Text Parsing Ola Fosheim Grøstad
- Text Parsing Nathan F Yospe
- Text Parsing Ola Fosheim Grøstad
- Text Parsing Mik Clarke
- Text Parsing Marc Hernandez
- Text Parsing Kylotan
- Text Parsing Ross Nicoll
- Text Parsing Kylotan
- Text Parsing Travis Casey
- Text Parsing Chris Gray
- Text Parsing Ross Nicoll
- Text Parsing Travis Casey
- Text Parsing Albert
- Text Parsing Travis Casey
- Text Parsing Mik Clarke
- Text Parsing Ross Nicoll
- Text Parsing Chris Gray
- Text Parsing Katrina McClelan
- Text Parsing Travis S. Casey
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Chris Gray
- Text Parsing Matthew Mihaly
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Travis S. Casey
- Text Parsing Matthew Mihaly
- Text Parsing Travis S. Casey
- Text Parsing Matthew Mihaly
- Text Parsing Travis Casey
- Text Parsing Greg Miller
- Text Parsing Albert
- Text Parsing Chris Gray
- Text Parsing Greg Miller
- Text Parsing Ola Fosheim Grøstad
- Text Parsing Travis Casey
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Chris Gray
- Text Parsing Travis S. Casey
- Text Parsing Chris Gray
- Text Parsing Travis S. Casey
- Text Parsing Ben Greear
- Text Parsing Matthew Mihaly
- Text Parsing Travis S. Casey
- Text Parsing Greg Miller
- Text Parsing David Bennett
- Text Parsing Travis Casey
- Text Parsing Cynbe ru Taren
- Text Parsing Katrina McClelan
- Text Parsing Travis S. Casey
- Text Parsing Greg Miller
- Text Parsing Chris Gray
- Text Parsing Martin C Sweitzer
- Text Parsing Jp Calderone
- Text Parsing Chris Gray
- Text Parsing Ben Greear
- Text Parsing Travis S. Casey
- Text Parsing Greg Miller
- Text Parsing Greg Miller
- Text Parsing Chris Gray
- Text Parsing Matthew Mihaly
- Text Parsing Ben Greear
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Adam Wiggins
- Text Parsing Chris Gray
- Text Parsing Kylotan
- Text Parsing Koster, Raph
- Text Parsing Ben Greear
- Text Parsing Jon A. Lambert
- Text Parsing Adam Wiggins
- Text Parsing Chris Gray
- Text Parsing Matthew Mihaly
- Text Parsing Koster, Raph
- Text Parsing Hans-Henrik Staerfeldt
- Text Parsing Koster, Raph
- Text Parsing Travis S. Casey
- Text Parsing Greg Miller
- Text Parsing David Bennett
- Text Parsing Ross Nicoll
- Text Parsing Travis S. Casey
- Text Parsing Ross Nicoll
- Text Parsing Albert
- Text Parsing Travis S. Casey
- Text Parsing Matthew Mihaly
- Text Parsing Greg Miller
- Text Parsing Matthew Mihaly
- Text Parsing Greg Miller
- Text Parsing Matthew Mihaly
- Text Parsing Chris Gray
- Text Parsing Matthew Mihaly
- Text Parsing Adam Wiggins
- Text Parsing Katrina McClelan
- Text Parsing Adam Wiggins
- Text Parsing Matthew Mihaly
- Text Parsing Adam Wiggins
- Text Parsing Katrina McClelan
- Text Parsing Jon A. Lambert
- Text Parsing J C Lawrence
- Text Parsing J C Lawrence
- Text Parsing Joey Hess
- Text Parsing J C Lawrence
- Text Parsing Matthew Mihaly
- Text Parsing J C Lawrence
- Text Parsing Koster, Raph
- Text Parsing Matthew Mihaly
- Text Parsing Koster, Raph
- Text Parsing Chris Gray
- Text Parsing Albert
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Matthew Mihaly
- Text Parsing Greg Miller
- Text Parsing J C Lawrence
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Jon A. Lambert
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Hans-Henrik Staerfeldt
- Text Parsing claw@kanga.nu
- Text Parsing Caliban Tiresias Darklock
- Text Parsing Greg Miller
- Text Parsing Petri Virkkula
- Text Parsing Matthew Mihaly
- Text Parsing Petri Virkkula
- Text Parsing Adam Wiggins
- Text Parsing Katrina McClelan
- Text Parsing Petri Virkkula
- Dylan Programming Language Ling
- Dylan Programming Language Jon A. Lambert
- Ultimate Universe Documentation Caliban Tiresias Darklock
- Oh yeah... Caliban Tiresias Darklock
- [TECHNICAL] [SOLVED] (template problem). Ben Greear
- [RELEASE] ScryMUD 1.9.4 available for download. Ben Greear