Lots of good stuff in this latest update! Try it out!
When I last made a MarMOTS post, I was working on starting to make my scripting language do useful stuff. Well, it quickly became apparent that in order to make my scripting language do anything interesting, I had to have entities on the screen to refer to. So I've got project support working now, and am currently building an ANSI sprite animation editor! This is going to be the biggest and coolest addition to MarMOTS in almost two years. I'm hoping to get something out next week, but we'll see.
On the scripting front, I have written a simple VM for the scripts to run on, and verified that, yes, my scripts actually run and do what they're supposed to. One of the interesting features of my scripting language is that it is intended to be LIVE, all of the time. The idea is that you can edit a script that is in the middle of running and the program will actually continue to function correctly, incorporating your changes immediately. One way that I'm able to do this is by stealing the notion of failed calculations from an obscure language called Icon. (Actually, reading that now, I may want to steal more ideas from it :) Basically, if you're editing a script and have a logic bug or even a syntax error, no big deal -- it's just a failed calculation, it gets logged, and your program continues to run. No game-killing exceptions, ever. I believe that it's much better for a designer to be able to see a failure happen, and have as much information as possible about the actual problem as it occurs during play, than to be told "the computer can see this will never work! You aren't allowed to run this program."
I have ambitions.
So now that Game Maker is $40 and Construct 2 will eventually be $65, I've found myself turning back to MarMOTS and wondering what it would take to get it into shape as a game-making tool.
My first focus has been getting my scripting language / editor into shape. I lump the two together because the scripting language, while textual, is never parsed from free text; instead, the user is edits the source tree directly using a friendly structured editor, with lots of autocomplete help, and in which it is literally impossible to forget a semicolon or a closing parenthesis. For power users, it should be as fast or faster to type in programs with this editor than with a text editor, and yet newbies will still be able to discover all of their options in a nicely readable self-describing English syntax.
So over the past couple of weeks I have torn apart my previous attempt at this language and rebuilt it. I've arrived at the point where I can type in any programs I like, and add features to the language without much effort. The UI is still pretty painful to use at this point, but that's mostly because I haven't focussed on improving the interaction at all besides making sure auto-complete is usable.
I was thinking I should maybe do like a screencast or something, but the scripts don't DO anything yet. I'm thinking that the next step will be to start integrating the scripting language with ANSI layouts that I draw in MarMOTS. I'm pretty excited to start hacking on that stuff! You should be too.
I've also been doing some non-gamey stuff (a Boxee app that launches games and has a not-entirely-stupid way of building the list, an experiment with Twilio's SMS-sending capabilities to bug me about stuff) but I guess I don't have as much to say about it as I thought?
Now that the Pirate Kart II is finally out in the world, I've been able to find time once again for MarMOTS; the greatest telnet-based collaborative ANSI art editor and game engine EVER WRITTEN!
I'm still super-excited about MarMOTS even though there are so few people using it (basically me and qrleon, and I don't ever draw anything). And I've decided it's high time to start letting people make stuff besides pictures. Thus I have begun the implementation and design of the scripting language* and its editor! No screenshots yet, unfortunately, but rest assured I'm plugging away. If you have any ideas for textmode games that you might be interested in building in MarMOTS, please feel free to talk about them in the comments and I can make sure that the language comfortably supports your use.
In the meantime, I've deployed a new version of MarMOTS that features line wrapping in more places, like text entry, and "buttons". No more typing off the edge of the screen when chatting, or worrying about making a picture whose name is too long!
* possible names for the scripting language (please vote or supply more suggestions in the comments):
Just deployed a great big delicious update!
For reference, here is my 8-part vision. The only difference between the server that is now live and Vision #1 is that the current system is still missing a chatbox. That will not be hard. I'm also hoping to get bright colours up and running soon; have to run some experiments still. Smiley face support is unfortunately absent.
hax0r is ported, and runs! It even drops the telnet connection when you hit the "NO CARRIER" point. Are you excited? I'm fucking excited.
Bugs I don't understand:
In other news, did you know you can send money to Tim Sweeny's father and have him send you a disk with the registered version of ZZT on it? Or that ZZT is not pronounced, "Zed zed tee" (or "Zee zee tee" for you heretic Americans), but "Zzt", like a sound effect? Now you do!
Integrating my stackless python game engine is progressing smoothly, though it's turned out to be a little bit more work than I had initially bargained for.
Big change #1 is that the game loop no longer runs as fast as possible; rather it only runs in response to external events (keypresses + timers). Obviously, since I'm going to be running this thing on a server that I share with a couple hundred other people, using 100% CPU all of the time is not the best way to go. It's actually kind of bugged me for a long while that the engine did that, so it's nice to have a fix.
Big change #2 is that a bunch of global variables containing the current high-level "game state" (ie, which board we're on, which board we're heading to next, etc) got split into a new kind of object called a Client. This was kind of bad design in the first place, but I really needed this new entity once I introduced multiplayer.
The good news is that these two big changes are done, and a proof-of-concept port of hax0r over telnet to work the bugs out should be coming soon!
I'm kind of leaning towards only supporting SyncTERM over flashterm. Advantages to SyncTERM: ANSI music support, the smiley face character works. Disadvantages: Seperate app that you'll have to download, rather than clicking a button on a webpage. The ANSI music "language" looks sort of like ZZT's music language, so you can imagine that I'm pretty hyped about supporting THAT.