Ok, Happy New Year folks.
Instead of being asleep and drunk, as I should be... I find myself awake and thinking about an old idea I tossed around a few years ago... the inside-out MUD server.
The short version is this... most MUD servers spend a LOT of their time and code trying to mimic systems that are already well established and in place, at least on the unix platform. The login/account system, the shell environment and all the user input processing and command execution that entails, the terminal handling system... instead of making the mud server do all that, why not let the OS do it, the way it already does for regular logins?
IE: Why not write a custom shell which talks to the MUD server directly, and replaces /bin/bash (or whatever)?
The benefits have already been discussed elsewhere, and I think the security issues are manageable. The question is, does anyone have a good idea of what would work well for such a thing?
I considered modifying bash, but anyone who's looked at GNU code knows what a nightmare that would be. I also considered using perl/python/etc to write a shell myself, and that's certainly an option... but then there's PIKE.
Does anyone actually use PIKE? It would be a bonus if you had a login shell that could understand LPC right there as your scripting language, but not essential.
Currently, iPython seems like a good place to start, but I'm open to suggestions.
To be clear, the concept is to have a login shell that works properly with full terminal support -- just like bash -- but also connects to your MUD server to handle events. So when the orc walks into the room, you want the game server to push that event to your shell, and have it do the display and redraw your prompts/etc as needed. When you type 'kill orc', it should execute a "kill" command which would ultimately send the kill command to the server and print the results.
If such a concept worked, you'd essentially decouple the display system and much of the user-input parsing from the game server and move them into the individual login shells... giving you better performance (multi-threading) and much cleaner server code.