Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

scrottie (4167)

scrottie
  scott@slowass.net
http://slowass.net/

My email address is scott@slowass.net. Spam me harder! *moan*

Journal of scrottie (4167)

Friday July 03, 2009
06:27 AM

GUI MUD with xterm's Tektronix emulation

[ #39220 ]

Update: mostly fought with telnet options rather than making the editor not completely minimal, but it's running live. telnet to slowass.net 2003 using the stock 'xterm' and without GNU screen in the way and help me draw races, classes, creatures, objects, and locations. Read below for more and check out my terrible example screen shot. A humanoid should probably be 2/3rds or 3/4 as tall as the top part of the screen. A building or tree as tall as. Swords or whatever should be laying on the floor. Your line data gets saved as you go. I'll peek at it later.

---------

Yeah, I'm still screwing with this.

Back in the Netscape 3 days, I put a shitton of work into making a JavaScript/HTML client. It had a round robin queue of hidden frames with forms in them that got populated and force submitted to send user events back to the server, and the TCP connection server-pushed (remember server push?) JavaScript to animate other players moving around the map and to scroll the map and fill in rows and columns exposed during scroll.

Then I abandoned it for a long time but never forgot about it. Eventually Java came out, and I grabbed Java in a Nutshell as soon as I could and learned Java 1.2. I took my original crayon drawn graphics, http://weehours.net/graphics/ , and made the tile array larger. It was 5x3 before. The hard work of writing the MUD-side tools of crawling the graph based map and building a 3D array representation of it was done even if most of the MUD didn't map out. It could be fixed and made to map out and automatically crawled. Default tiles were assigned to rooms by scanning their descriptions and looking for keywords (trees, path, store, building, etc, etc). I even recruited a friend to help me and let him write piles of pointlessly disorganized Java. But he bailed.

One day, a guy hops on IRC and starts asking questions that sound suspiciously like he's trying to write an RPG style game. Turns out he is. I convince him that doing it from scratch is too much work (most MUDs don't get very far in the wheel reinvention process before they die) and tell him what I've got. We agree to work together. He does some brilliant work in Flash but then starts dabbling with audio/video, which is okay I suppose, then decides he wants to focus on that and get rid of the game. There was a language barrier too and we were having a hard time getting ideas to sync up. The legacy bits of the MUD got in the way, too. And Flash gets really slow when you have too many objects on the screen. I didn't have a machine fast enough to play the half-finished version that didn't have monsters or equipment on the screen yet.

We tried Processing but it wound up having cloned a lot of Flash's problems, with redrawing everything and having busy spinning threads in the background. That was fun but this fizzled.

Meanwhile, I'm back to work on the server side and eventually decide that rather than trying to make everything map out flat, I should just render the map from the perspective of the player. A graph is basically hyperdimensional. An arbitrary number of dimensions may be rendered down to two by throwing away (or folding together with sine and cosine) detail. Part of that process is picking a vantage point. A simple breadth first recursive crawl did the trick. But like rendering 4D down to 2D, things tend to move and shift in very disturbing ways as you move around them. Ahh, well. All part of the fun.

So I've got all of this infrastructure in place. I've paid artists and bribed them with Apple laptops and begged and pleaded for more art with no luck. I used to draw a bit but I'm badly out of practice. I'm having a hell of a time finding the right technology. I shouldn't have abandoned JavaScript. In the ten years or so since I did that version, JavaScript has matured. I've spent time ripping tiles out of NES games but almost everything you see on the screen on the NES is at least 4x4 mini-tiles put together and probably 4x8 or more. Trying to figure out how all of the little pieces fit is a huge task.

Is it silly of me to just go Kingdom of Loathing on this shit and start drawing stick figures?

And man, if I knew about Tektronix terminal emulation in the 90's when there were 80 people on this thing solid... and I introduced graphics then... EverQuest wouldn't have had a chance. Everyone would still be playing AfterHours.

The real bummer is that unless you install an X server on your PC or Mac, this is only usable on Unix and Unix-like systems that ship with the real X xterm.

I implemented a little line-of-sight algorithm that's simpler and faster than raycasting that I'm pretty happy about. I need to draw more art and I need to fill in more graphic data for rooms that don't have a keyword match. The dynamic crawler doesn't look for players, monsters and items yet, and I need to make it do that and send the details down the wire. I think it did before I reworked it to do dynamic crawling from the player's point of view. I know it used to send updates when someone in your field of view moves, but just for players, not for monsters. Even if I implement yet another GUI later, this is a good test of the MUD server side infrastructure.

I have an extremely simple paint program that runs in te Tektronix terminal. I guess I could fix that up a bit and invite people to come draw critters for me. Dunno, what do you people think? Talk to me.

Here's a snapshot of what it looks like right now: http://slowass.net/~scot/tmp/weehourstek.png

-scott

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.