<!-- MHonArc v2.4.4 --> <!--X-Subject: Re: [MUD-Dev] common server design --> <!--X-From-R13: pynjerapNphc.uc.pbz --> <!--X-Date: from babe.globecomm.net [207.51.48.8] by in3.ibm.net id 867711310.108622-1 Mon Jun 30 22:55:10 1997 CUT --> <!--X-Message-Id: 199706302252.PAA14461#xsvr3,cup.hp.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 33b4c66d.12168263#relay,mnsinc.com --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, Re: [MUD-Dev] common server design</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:clawrenc#cup,hp.com"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg01615.html">Previous</a> | <a href="msg01617.html">Next</a> ] Thread: [ <a href="msg01445.html">Previous</a> | <a href="msg01472.html">Next</a> ] Index: [ <A HREF="author.html#01616">Author</A> | <A HREF="#01616">Date</A> | <A HREF="thread.html#01616">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>Re: [MUD-Dev] common server design</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#null,net">mud-dev#null,net</A></LI> <LI><em>Subject</em>: Re: [MUD-Dev] common server design</LI> <LI><em>From</em>: <A HREF="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</A></LI> <LI><em>Date</em>: Mon, 30 Jun 97 14:05:19 -0700</LI> <LI><em>Reply-to</em>: <A HREF="mailto:claw#null,net">claw#null,net</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> In <<A HREF="msg01445.html">33b4c66d.12168263#relay,mnsinc.com</A>>, on 06/22/97 at 09:37 PM, caliban#darklock,com (Caliban Tiresias Darklock) said: >On Sun, 22 Jun 1997 11:14:27 PST8PDT, >cg#ami-cg,GraySage.Edmonton.AB.CA (Chris Gray) wrote: >I often see a sentiment expressed on this list (and others) that goes >something like "I am writing a server for ME to run MY game on, and I >could give a flying leap if you like the way I do it or not". If you >take a step back from that, you might wonder why someone with that >attitude even bothers to discuss their server on a mailing list in >the first place. Err, to test out ideas, to engage others as devil's advocates, to garner new ideas you'd not thought of, to find possible approaches you hadn't considered, to gain new and different viewpoints, and hopefully to the same to the rest of the list. Seems reasonable to me. >>>From what I've seen on this list, some folks, as players, *want* >>complexity in the game they play. >Allow me to clarify that complexity in the game *world* does not >necessarily imply complexity in the game *system* which does not in >turn imply complexity in the game *server*. What I'm really saying >here is that a complex command structure is not really something that >enhances the game; for example, you can have eight thousand skills, >but a single command to use skills. You could do thirty thousand >calculations to determine the efficiency of a sword thrust, but it >all comes down to 'kill guard with sword' in the end. I don't have >any problem at all with complex worlds, systems, or servers; I have a >problem with overly complex interfaces. I would have a problem with >an interface that required commands like 'Draw sword. Lift sword. >Swing sword. Parry left. Block up. Lower sword. Thrust high. Lift >sword...' or something similarly complicated. If all eight thousand >skills in your game had a separate associated command (or worse, >several), that would be a problem. I suspect you'd hate my scripted combats then. They're anything but non-complex for the users: At any point prior to or during a fight a player can initiate "combat mode" for himself. Combat mode does not change his appearance of utility to any other players. It does not restrict his avilable command set or possible activities (none of this "You can't leave a fight!" idiocy). Combat mode merely kicks in a set of modules which attempt to actively suggest beneficial combat moves. The implementation is as follows: -- player character initiates combat mode. -- a local invisible combat object is created. -- the combat packages on the player characters involved in that particular fight suggest combat scripts. -- the player approves or edits the combat scripts, whereupon they are submitted to the combat object. -- at the termination of the round, the combat object resolves all the scripts against each other, and wages the damage as approriate. -- repeat from the suggested combat scripts. The combat scripts here are atomic throw-away pieces of pseudo code that detail what that player character is going to attempt to do in that round. A script is comprised of: -- Attacks, where blows are any of magic, physical, mental, or aggressive defenses. -- Defenses, where defenses are any of magic, physical, mental, or defensive attacks. -- Feints, where a feint can be an illusory attack or defense. -- Sequences, where a sequence is any ordered set of attacks, defenses, and feints (including a sequence of one member). -- Reactions, where a reaction is a defined sequence to be used in response to a stated sequence or sequence characteristic from a defined or undefined opponent. As such a script is a one-off affair tailored for the exact current situation. The script language defines particular blows to be delivered with particular weapons to a specified location on the opponent, or particular reactions (equally detailed) to make against a specific attempted blow or defense by an opponent. This is then all overlaid with feints which disguise real attacks/defenses. The Combat Package presents the user with a script which define what blows/defences etc he will attempt in that combat round, along with what reactions (if he does that, then forget about that attack and do this instead). The user then has the chance to edit, refuse, or otherwise alter the script before it is submitted to the controlling combat object for resolution against everyone elses scripts (the scripts are repetitively played against each other, some more than others, with scripts from more able characters getting more repetitions and so more chances at an intended result). None of this is long-term predictive. There's no setting up things like wimpy factors, default reactions to all XXX attacks for all combat scripts etc. To do that sort of thing you need to tailor the combat package directly. (Actually I shouldn't say "NO" above, if the combat package author adds that support, then yes, you could have a "parry heavy blows" type configuration). As far as maintainging synch for the fight, that's where the combat object comes in. Each combatant submits their actions/reactions etc for the round based on what they think and/or hope the other combatants will be submitting. The combat object then takes all of these, resolves them against each other atomicly, and effects the resultant blows/damage/etc. The pacing may not be hair-raising, but the result is more: "Hmm, He's big and strong, but he hasn't tried magic attack yet. He's either low on mana, low on spells, or holding out. His sword does appear to be enchanted tho. I'll guess that he's mana low, so I'll throw a mana eater on him to see if I can't destruct the sword. However, he also been doing some serious damage to me with the cleaver, so lets kick him in the goolies and try and wrestle it away from him. Of course, that'll leave my head unprotected, so if he strikes for my head, forget about kicking him, block with the shield there and stab him in the gut with the dagger I have in my other hand. If I do that I'm not going to have time to do the mana eater, and he could easily block me there with his buckler, so if he does go for my head, forget the mana eater and the stomache thrust, and lets cast a sink hole on the ground beneath him. Oh yeah, and forget everything if he attacks my torso, and just block. "Yeah..that should do it. Leave me pretty wide open if he attacks my arms or legs, but I don't have time to actively defend there much right now, and my guard spells are still in pretty good shape. "Okay, lets do it. "DAMN! The sod has lots of mana! Bastard just thew a mana sink on me, and then reflected my own mana sink back on me to boot! I lost over 5,000 mana! All my spell guards are gone! Most of my armour is gone, My dagger is gone, My keys are all gone... Still, it looks like he's really out of mana now 'cause his sword destructed -- even if after taking out most of my left leg. I still have a couple spells left, so I *could* create some mana, summon a dragon and sic it on him. Of course if he has any spells left he could then reflect it on me... Hmmm That would hurt. I think I'll heal myself, hope he doesn't catch it and divert the heal to himself, and then cast a sinkhole on the ground beneath him. That'll use almost all my mana and all my spells, but it might make him think I'm tougher than I really am... If the sinkhole sticks he should be disabled for long enough for me to finish him off. "Oops. He really got me. I'm almost dead. I could drop my recall bug to teleport back to my castle, but he might have a tracer or a band on me. That would be deadly. OTOH he's stuck in my sinkhole and looks almost dead as well. I could try and finish him off -- should be a piece of cake unless he's still got something up his sleeve..." There are very few points where someone can launch an attack which does not deliver immediately. This prevents the old game of "Oh, he lobbed a grenade, wonder what I'll do?" The few delayed reaction attacks are really just preparations, followed by delivery, ala "He summoned a dragon, red one I think. He could attack me with it, he could use it for defense, or he could just use it as a mana producer for a nasty attack spell on me..." -- J C Lawrence Internet: claw#null,net (Contractor) Internet: coder#ibm,net ---------------(*) Internet: clawrenc#cup,hp.com ...Honorary Member Clan McFUD -- Teamer's Avenging Monolith... </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <UL><LI><STRONG>References</STRONG>: <UL> <LI><STRONG><A NAME="01445" HREF="msg01445.html">Re: [MUD-Dev] common server design</A></STRONG> <UL><LI><EM>From:</EM> caliban#darklock,com (Caliban Tiresias Darklock)</LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg01615.html">Nation of shopkeepers</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg01617.html">Re: [MUD-Dev] Supporting RP+PG</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg01445.html">Re: [MUD-Dev] common server design</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg01472.html">Re: [MUD-Dev] common server design</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#01616"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#01616"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>Re: [MUD-Dev] Git out the boar spear, Martha!</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <LI><strong><A NAME="01613" HREF="msg01613.html">Re: [MUD-Dev] Git out the boar spear, Martha!</A></strong>, Matt Chatterley <a href="mailto:root#mpc,dyn.ml.org">root#mpc,dyn.ml.org</a>, Tue 01 Jul 1997, 04:13 GMT </LI> </ul> <LI><strong><A NAME="01622" HREF="msg01622.html">Re: [MUD-Dev] Git out the boar spear, Martha!</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Tue 01 Jul 1997, 07:38 GMT </LI> </ul> </LI> <LI><strong><A NAME="01424" HREF="msg01424.html">Re: [MUD-Dev] common server design</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Mon 23 Jun 1997, 01:02 GMT <UL> <LI><strong><A NAME="01445" HREF="msg01445.html">Re: [MUD-Dev] common server design</A></strong>, Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Mon 23 Jun 1997, 11:32 GMT <UL> <LI><strong><A NAME="01616" HREF="msg01616.html">Re: [MUD-Dev] common server design</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Tue 01 Jul 1997, 05:55 GMT </LI> </UL> </LI> </UL> <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="01472" HREF="msg01472.html">Re: [MUD-Dev] common server design</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 24 Jun 1997, 13:03 GMT <UL> <LI><strong><A NAME="01478" HREF="msg01478.html">Re: [MUD-Dev] common server design</A></strong>, Caliban Tiresias Darklock <a href="mailto:caliban#darklock,com">caliban#darklock,com</a>, Wed 25 Jun 1997, 03:48 GMT <UL> <LI><strong><A NAME="01621" HREF="msg01621.html">Re: [MUD-Dev] common server design</A></strong>, clawrenc <a href="mailto:clawrenc#cup,hp.com">clawrenc#cup,hp.com</a>, Tue 01 Jul 1997, 07:38 GMT </LI> </UL> </LI> </UL> </LI> <LI><strong><A NAME="01509" HREF="msg01509.html">Re: [MUD-Dev] common server design</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Thu 26 Jun 1997, 09:00 GMT </LI> </UL> </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>