SpindleyQ's blog

SpindleyQ's picture

Willy MarMOT'S Vision Quest: Now with a higher barrier to entry!

So I was aimlessly browsing the internet the other day, and I noticed that someone had updated the MarMOTS homepage.

That's right, bitches: Almost exactly six months after it was first announced, MarMOTS is back online! And Vision #2 has finally been achieved!

To help slow the spread of adoption, you must now log in using your Official Glorious Trainwrecks Dot Com Username And Password. (See this posting for reasons why I'm not keen on getting linked from indiegames.com again anytime soon.)

In addition, you must now download and configure SyncTERM -- I'm not currently supporting Flashterm for technical reasons, as well as social reasons. Other telnet clients may or may not work; the enter key is apparently a tricky issue.

Anyway! Please enjoy MarMOTS, and remember: Be excellent to each other.

SpindleyQ's picture

Pickle Wars MIDIs

Hey, do you like Pickle Wars? Do you occasionally get the repetitive, dreary cutscene music stuck in your head? Well, here, I ripped all of the music from the shareware version into handy-dandy MIDIs for easy use in your Klik & Play monstrosities.

SpindleyQ's picture

MarMOTS update #4

So, I just wanted to talk about MarMOTS a little bit. I'm still working on MarMOTS every so often in my spare time. I had two goals that I wanted to achieve before I put it back online.

Goal #1: User authentication.
This works; you can now login to MarMOTS using your Glorious Trainwrecks username and password.

Goal #2: Saving.
Not explicitly stated, but required for Vision #2 of my 8-step vision, I want to make sure that if I bring the server down, I can bring it back up without everything being lost forever.

This has been trickier than I'd anticipated. I thought I would just chuck everything into an object database, and the de-facto object database for Python would appear to be ZODB. What I didn't count on was that ZODB was not even remotely designed to process the huge volume of changes I would be throwing at i; the way that it saves is to append the new data to the end of a file. In my original plan, this file would quickly be filled up with changes in the cursor blinking status if I saved it all the time.

Of course, then I realized that saving it all the time is infeasable anyway, because that would mean WRITING THE SCREEN TO DISK in addition to sending it over the network. No good.

So I guess I'll implement regular checkpointing, which may mean brief pauses every half hour or something. I'm keeping my eye on POD, but that project is young enough that it makes me nervous about depending on it. I think at this point the simplest thing is to just dump the whole thing to a pickle file and be done with it; I'm pretty sure I'll be able to migrate to a more complicated scheme later.

Maybe goal #3: Dedicated hosting.
MarMOTS has a deliberately inefficient design; I burn lots and lots of CPU so that I don't have to think about cache invalidation. I share the server that Glorious Trainwrecks runs on with lots of other people; the CPU time is not really mine to burn. So I'm thinking the only reasonable solution is to move to my own (virtual) server, where I don't have to care that people drawing ASCII dongs is slowing down other peoples' websites. Of course, I'd want to minimize the time I was spending $20/month solely to host MarMOTS by moving all my shit to the new server, but that's not a project I really want to undertake QUITE yet.

So, yeah, if you guys are excited to play with MarMOTS some more, make some noise in the comments!

SpindleyQ's picture

MarMOTS Vision #1 Nearly Attained!

MarMOTS is back up, and more awesome than ever.

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.

The current whiteboard-specific code is about 250 lines of Python; the whole server / framework is about 1400 lines. I love you, Stackless and Twisted.

SpindleyQ's picture

MarMOTS update #2

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:

  1. Weird character on the upper-left corner
  2. Enter key does not work in SyncTerm or flashterm, only PuTTY

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!

SpindleyQ's picture

MarMOTS update

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.

SpindleyQ's picture

Yep

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.

SpindleyQ's picture

Shirtspeare Shirtspeare Revolution: The Designening

I want a Shakespeare Shakespeare Revolution t-shirt. I am not a graphic designer. Here is what I have:

Now, I would not be ashamed to wear such a shirt, but I wonder if it couldn't be punched up a bit. And I wonder if you fine people would like to help!

Thoughts:

  1. I've doctored the screenshot enough that I wouldn't find it a terrible sin to replace the default Klikfont with some real Shakespearean shit.
  2. If there's a spot that would be drastically helped by the addition of a different colour, it needs to be a great big spot that I can block off with masking tape, and not a detail.
  3. Where does the glow-in-the-dark go? Shakespeare's sunglasses? The word "SPLEENY"?
  4. Definitely needs more hamburgers/umbrellas.

SpindleyQ's picture

KNPGen v0.1

Announcing KNPGen -- a tool for randomly generating Klik & Play screenshots!

It works like this: First, you need to generate the cache of KNP images to use, so drag a directory full of IMG files onto KNPGen.exe. Once the cache exists, you can just run KNPGen.exe on its own to generate new screenshots using that library. If you run KNPGen.exe on its own without a cache, it will scan the current directory, so you can plunk it in with a Klik & Play game to remix it.

Enjoy!

Syndicate content