<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] client UI written in server's language (was Re: Some thoughts...) --> <!--X-From-R13: Sevx Afgebz <rbfgebzNerfrnepu.ngg.pbz> --> <!--X-Date: Sat, 5 May 1998 17:07:37 -0700 --> <!--X-Message-Id: 199805060635.CAA29007#bual,research.att.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: Pine.SGI.3.96.980504125257.23159B-100000#red,angel.com --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, [MUD-Dev] client UI written in server's language (was Re: Some</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:eostrom#research,att.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="msg00411.html">Previous</a> | <a href="msg00415.html">Next</a> ] Thread: [ <a href="msg00370.html">Previous</a> | <a href="msg00428.html">Next</a> ] Index: [ <A HREF="author.html#00414">Author</A> | <A HREF="#00414">Date</A> | <A HREF="thread.html#00414">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>[MUD-Dev] client UI written in server's language (was Re: Some thoughts...)</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Subject</em>: [MUD-Dev] client UI written in server's language (was Re: Some thoughts...)</LI> <LI><em>From</em>: Erik Ostrom <<A HREF="mailto:eostrom#research,att.com">eostrom#research,att.com</A>></LI> <LI><em>Date</em>: Wed, 06 May 1998 02:35:02 -0400</LI> <LI><em>Cc</em>: <A HREF="mailto:eostrom#research,att.com">eostrom#research,att.com</A></LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Sender</em>: "Petidomo List Agent -- Kanga.Nu version" <<A HREF="mailto:petidomo#kanga,nu">petidomo#kanga,nu</A>></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> Hi. I'm pretty new to the list, and perhaps I haven't lurked long enough, but I had to respond to the following paragraph before it got away. By way of introduction, I'm the current maintainer of the LambdaMOO server (the software, not the site); I started using MUDs in 1990; my experience is largely in MOO and mostly in 'social' MUDs, but I've spent some time on roleplaying/gaming MUDs as well as working on 'serious' MUDs (i.e., for work or for education). Oh, and I played the UO beta. On Mon, 4 May 1998, Adam Wiggins <adam#angel,com> wrote: > It seems that this would be a natural place to actually write the client's > interface itself in mud-language plus a few commands to pop up different > sorts of widgets, along the lines of tk/tcl perhaps. I did something like > this on my last commercial project. The game's map editor began as a > simple console where I could type commands and edit scripts (which were > similar to shell scripts - the regular list of commands for interacting > with the game map, plus a few conditionals/loops etc). When everyone but > me started whining for a mouse interface I coded up some simple slider, > dialog, and button types that could have an attached script. Thus it was > pretty easy to do favorites buttons, or bookmark holders, or whatever, > since each script could have its own local variables and such. As part of a research project here at AT&T Labs, I've been working on something very similar to this*. We're planning to make a public release of the software (free for non-commercial purposes, with grant-backs to AT&T) very soon, and I'll post about it here if that's appropriate. Meanwhile, anyone who's interested in getting an advance look at it should contact me (although I can't promise anything). I'll now describe the system so you can tell if you're interested. The core of our system (called TWin, for obscure reasons) consists of three pieces: * a language for describing GUI layout * a set of standard widgets (buttons, text areas, labels, etc) * a protocol for communicating high-level events about the interface (e.g., "button was invoked", not "mouse moved to (512, 113)") A client merely implements facilities to display these widgets and pass user interaction events to the server; it knows nothing about application logic (e.g., what a MUD is--although we do provide one exception in our client). What this means is that you can program simple GUIs entirely on the server side, in whatever language the server speaks. This has been used already to implement things from tic-tac-toe to pop-up notes to code browsers to a complex social MUD (navigable through the UI, and with buddy lists and command help and so on). We expect to see a lot more range once we go public. The protocol and our server-side API provide for sharing of state between the server and multiple clients, so everything is potentially shared--i.e., just as anyone can read a note sitting on the ground in a text-based MUD, anyone can pop up a window to read the note in TWin, and in fact one person can read the note while another is writing it, and get updates as the text changes. This makes the implementation of much multi-user stuff pretty simple, since programs are written in terms of getting and setting state on a single server-side object--the application programmer doesn't have to worry about what messages are sent around to keep the clients in sync. (Clients of course can't be kept perfectly in sync, but I'm not going to go into more detail here.) The current system is written in Java** (the client) and MOO*** (the server, of course). The protocol, though, is largely platform- independent, so we expect servers could be written in any sufficiently powerful MUD language, as well as ordinary programming languages like Java and C++, and they would interoperate with the existing Java client. (Likewise, new clients could be written and work with any conforming server.) >I can easily imagine hackers going in to modify the client's functionality >however they liked in order to get the interface just right for what they >do. Of course, maybe this isn't a good thing if it makes 'botting' too >easy, something that having a custom client is sometimes useful to avoid. I suppose the openness of our protocol does make us extremely susceptible to 'botting'. We've been thinking primarily about social and 'serious' uses of the system, rather than games. It occurs to me that you could make a 'custom' client that still uses TWin--reuse all the code from a stock client and server, but add an authentication sequence that ensures to a first approximation that the client hasn't been tampered with. Anyway, a subject for further study. Further info is available at <URL:<A HREF="http://tchat.research.att.com/">http://tchat.research.att.com/</A>>. Also, TWin is built on MCP, an underlying message protocol that is friendly to line-based MUD servers, which is documented at <URL:<A HREF="http://www.moo.mud.org/mcp/">http://www.moo.mud.org/mcp/</A>>. --Erik Ostrom eostrom#acm,org * It's also very similar to the windowing aspects of the Jupiter system developed at Xerox PARC. ** WRT a recent thread on this list: Our client was developed primarily as an application under JDK 1.1; currently it does not run as an applet except under Sun's 'Java Plug-In'. We _also_ distribute it as a standalone Windows program, so people on Windows don't have to download the JDK. *** WRT another recent thread, our TWin server is built on top of JHCore, a core database (mudlib), so people can use existing MUD functionality from that and don't have to build from scratch. It's also possible to build TWin-based systems that don't look anything like JHCore. -- MUD-Dev: Advancing an unrealised future. </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="00370" HREF="msg00370.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></STRONG> <UL><LI><EM>From:</EM> Adam Wiggins <adam#angel,com></LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00411.html">[MUD-Dev] Re: atomic functions</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00415.html">[MUD-Dev] Re: There can be.. only ONE! (fwd)</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00370.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00428.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00414"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00414"><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><A NAME="00342" HREF="msg00342.html">[MUD-Dev] Re: Wired, UO, and Internet Gaming (was Re: OT: Birth announcement )</A></strong>, John Bertoglio <a href="mailto:alexb#internetcds,com">alexb#internetcds,com</a>, Sun 03 May 1998, 13:39 GMT <LI><strong><A NAME="00340" HREF="msg00340.html">[MUD-Dev] LIST: The "MUD-DEV" MUD Development mailing list</A></strong>, J C Lawrence <a href="mailto:claw#greek,kanga.nu">claw#greek,kanga.nu</a>, Sun 03 May 1998, 12:56 GMT <LI><strong><A NAME="00330" HREF="msg00330.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Sat 02 May 1998, 17:17 GMT <UL> <LI><strong><A NAME="00370" HREF="msg00370.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, Adam Wiggins <a href="mailto:adam#angel,com">adam#angel,com</a>, Mon 04 May 1998, 13:34 GMT <UL> <LI><strong><A NAME="00414" HREF="msg00414.html">[MUD-Dev] client UI written in server's language (was Re: Some thoughts...)</A></strong>, Erik Ostrom <a href="mailto:eostrom#research,att.com">eostrom#research,att.com</a>, Wed 06 May 1998, 00:07 GMT </LI> </UL> </LI> <LI><strong><A NAME="00428" HREF="msg00428.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Wed 06 May 1998, 18:53 GMT <UL> <LI><strong><A NAME="00432" HREF="msg00432.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, Travis S. Casey <a href="mailto:efindel#io,com">efindel#io,com</a>, Wed 06 May 1998, 19:26 GMT <UL> <LI><strong><A NAME="00508" HREF="msg00508.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, J C Lawrence <a href="mailto:claw#under,engr.sgi.com">claw#under,engr.sgi.com</a>, Mon 11 May 1998, 22:53 GMT </LI> </UL> </LI> </UL> </LI> </UL> <UL> <li><Possible follow-up(s)><br> <LI><strong><A NAME="00417" HREF="msg00417.html">[MUD-Dev] Re: Some thoughts on languages and users - was: Ma</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Wed 06 May 1998, 05:33 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>