SpindleyQ's picture

I'm writing a telnet server for realtime online multiplayer ANSI gaming and game-creation. Realtime collaboration is so much easier when everything happens on the server, and it's so much easier for everything to happen on the server when it only has to worry about spitting out 80x25 character images. I'm almost done with the plumbing (parsing ANSI escape codes from a telnet stream, an internal representation of an ANSI screen, diffing two ANSI screens to minimize the amount of shit sent over the wire), and it should be pretty straightforward to port my Stackless Python game engine to use this new framework. Might this mean a textmode port of Hax0r?

Anyone want to contribute some sweet ANSI?

Ideas for scripting are welcome. I don't really think ZZT-OOP is the way to go (Goto-based programming! Brillant!); a more Klik & Play-style if-this-happens-then-do-this approach is probably better. I can expand on this if anyone is interested.


dessgeega's picture

never stop being my hero,

never stop being my hero, armpitman

(i might draw some ansi art)

SpindleyQ's picture

Well I just don't see the

Well I just don't see the point of being an excellent programmer if I can't use my talents to have fun times with friends! I will do my best not to disappoint.

I've had this grand vision in my head for like ten years (though only within the past year or so has it included realtime collaboration), but I've never had the appropriate starting point. This feels like it. If you guys end up liking what I build and using it, I'll keep making it better.

I am excited to see your potential ANSI art!

kirkjerk's picture

Re: the ANSI art... is your

Re: the ANSI art... is your engine geared at stuff that looks a bit ZZT/Nethackish, or larger?

Anyway this sounds completely mind blowing and I do love the sentiment "Well I just don't see the point of being an excellent programmer if I can't use my talents to have fun times with friends!"

SpindleyQ's picture

For the moment, my engine is

For the moment, my engine is assuming 80x25 character resolution. I'd like people to have the freedom to work within all of that, rather than the slightly smaller "window" that ZZT has -- if only because I'm equally as inspired by BBS door games as I am by ZZT. (I should really put up a Barneysplat! shrine on the Trainwreck Gallery.) I suppose I could probably do 80x50, but that kind of seems wrong somehow.

That sentiment is what separates me from the robotic version of me.

Pizza Time's picture

Will this have a defined

Will this have a defined character set like in ZZT, one that you can edit but is limited to 256 characters as in MZX or will it be like the latter only not limited to 256 characters and users will be able to add to it in real time? Whatever way it goes down this is made of pure excitement. It would be pretty cool if you could save what you were working on and then have a separate parser that lets you run your stuff offline.

SpindleyQ's picture

I'm shooting for the full

I'm shooting for the full Extended ASCII character set, but I'm not entirely sure if all of them will show up properly in a telnet window. (Flashterm is going to be my client of choice.) From what I've read, I believe I'm only able to use 16 foreground colours and 8 background colours, but again, I have yet to test it with Flashterm.

Offline play should be feasible long-term but it's not a high priority to start.

Right now if I could just get this fucking telnet code to run so I can concentrate on more interesting problems, I'd be happy.

qrleon's picture

I'm interested but cannot

I'm interested but cannot picture in my brain-eye the project's end-user experience. But just say "It will be cool, dude!" and I will be on board for ANSI mayhem.

SpindleyQ's picture

It will be cool,

It will be cool, dude!

Allow me to impart a series of visions to your brain-eye, each one following smoothly from the last. This is kind of my roadmap.

Vision #0: Today, I have a telnet server that I can connect to with Flashterm. It shows ANSI pictures that I downloaded from in response to keystrokes. This is not very interesting, so I'm not hosting it yet.

Vision #1: Multiplayer ANSI whiteboard. When you connect to the server, you are greeted with a picture that you can edit. Anyone else who is connected can also edit it, and you see these edits in realtime. There is also a box you can type into to chat with other people on the server. The art is ephemeral; I'll try to have a "save for posterity" command that keeps around an .ANS file on the server, but there will not be any way to edit or view old pictures through the telnet connection.

Vision #2: You log in, and are presented with a list of ANSI artworks that have been created, along with an option to start a new one. If someone else is editing or viewing one, it is shown in a different colour. When you select an artwork from the list, you are taken to a viewer/editor in which you can draw on top of it, and see other people draw on top of it, in realtime.

Vision #3: The drawing tool adds support for layers.

Vision #4: Artworks are split into groups, called projects. Controls are added to allow the artist to have some degree of faith that their artwork will remain intact the way that they want it (simple version controlled snapshots, marking it "locked", invite-only editing -- we'll see what makes the most sense when we get there).

Vision #5: The ability to "fork" artworks or projects is added. Forked objects can be kept up to date with changes to their original object, while the new object keeps any new changes; this may even happen automatically. While this may seem a sort of weird feature to add, it's actually crucial to the model of how the games will work.

Vision #6: This is the biggest leap. A new type of artwork appears on the system, called a "board". Objects can be placed on the board in a special "object" layer. Objects are single-character, and have limited scripting -- potentially even simple predefined roles to start (like ZZT monsters). This will improve gradually, as people request more capabilities and a better UI to access them is built. Boards will have a number of optional predefined layers ("wall", "water", "objects", etc), which are used to determine ie, whether the player can move there or not.

Vision #7: The scripting language is filled out over time. The general flow will be rule-writing: when this event happens to these kinds of things, these objects react thusly. The system will provide the events and the abilities (verbs) of the objects; these will _not_ be creatable in-editor. (However, being written in Python by a friend of yours means that if there is a missing feature, it may well show up quickly if you ask.) The system will also allow you to add custom properties, so you can say "player 3 has 200 gold" or whatever.

Vision #8: The ability to watch others play a game is added. The ability to "God mode" ability is added which allows someone to edit the game while watching others play it (or potentially switching into God mode as a player) is added. Everyone has fun.

So, as you can see, this is months of work, just like my last project of this nature. My hope is that it is a generally fun and useful piece of software that the community will fart around with at every stage of its development, which will make my life suck a lot less while building it. My previous project required me to build a game maker, then make it networked; this time, not only is the networking is totally trivial, but the level of power that I'm demanding of myself to give the end-user is considerably less, and I'm using a much friendlier programming language which I already built an engine in when I wrote Alien Zit 2000 which I will be able to reuse.

My working name for the project is "MMOTS", for Massively Multiplayer Online Telnet Server, but that's super lame. I need a better one.

qrleon's picture


That's slick! I look forward to watching it evolve.

Six's picture

MarMOTS. the "mar" could

MarMOTS. the "mar" could stand for... marvelous? or maracas. or maraschino.

it's just a majestic rodent, is all i'm sayin'.

SpindleyQ's picture

I like it! It smacks of

I like it! It smacks of SIGNet, "Simonyi's Infinitely Glorious Network", which I always kind of wanted to riff off of.

SpindleyQ's picture

(No subject)

marmots.png14.29 KB
kirkjerk's picture

oh, thank god it's the

oh, thank god it's the marmot, i thought the cocks had started already

Six's picture

<3 <3 <3

<3 <3 <3

kirkjerk's picture


prophecy for visions 0-4:

I'm just sayin'

SpindleyQ's picture

If an ANSI remake of "This

If an ANSI remake of "This Game Stars My Penis" doesn't get made, I will consider the project a failure.

(not really)

agj's picture

This sounds ace, truly

This sounds ace, truly innovative. I'll help spread the word when it's up. I suppose you do want it to become somewhat massive, right?