Hi,
I haven't really posted here much, but I've been using MUSH since I don't know when. I both love it and hate it( only sometimes ), but I still think that an updated MUSH would be worthwhile.
I downloaded the source code about a month ago with the idea that I would retool some of the issues I had with it (passing lua callbacks as strings instead of closures) but I am afraid I got a bit lost in the code.
I don't think it's bad at all, but it's been around so long, and features/functions, especially of embedded scripting languages have changed alot. I remember when MUSH didn't even have Lua and I did everything in PERL. In my opinion, LUA was a godsend at that point. ( I could be mistaken though, it was years ago ).
Most of the code, to be honest, is too clever for me, as I am a bit of a dullard when it comes to programming.
What I decided to do was to take what I really love conceptually about MUSH and rebuild it in Qt C++ ( Windows/Linux/MAC for free) as an HTML 5 App using the WebKit widget for UI Rendering, allowing all UI work to be done in HTML5, JavaScript, CSS.
This works so far (Basic Telnet, GMCP, Aliases, Triggers with management, all configs in JSON files). MCCP Has been a sticking point because Qt C++ and zlib is a bit problematic, internally strings deflate/inflate, but junk from the server, so I switched to using the MCCP client downloadable from aardwolf for now.
I have added in SQLITE support and am attempting to port the mapper to the application. All of this is done in Minimal C++ ( A few classes that expose Signals and Slots to Javascript, File IO, Socket to play with, Sqlite DB etc), the rest ( even GMCP subnegotiation) is done on the JS Layer.
The downside to what I am attempting right now is no LUA, but I remain hopeful that I can embed lua into the app as well and support some manner of lua coding for plugins as well.
The issue is, all the script embedding is already done for free with Qt when you use JSCore which ships with the 4.7/8 of Qt. No need to handle callbacks as closures( Almost the entire Application logic is already in Javascript, but C++ Signals can connect to anonymous functions, so no need to pass in the string name and therefore lose your scope.
The Core application logic is served to the HTML5 app from a webserver ( so you host the application logic on your website, and when the thin C++ client starts up it loads the app like a web page, making distributing updates to all users automatic and transparent.) All people download is a small C++ App with some dlls, double click and go.
With Lighthouse it may be possible to also compile and distribute the app to Mobile devices.
Things you get for free:
- Scripting (JS, but heh, not so bad as it's not WSH)
- Dead Easy UI (It's HTML/CSS)
- MiniWindows ( I have floating, draggable windows, and
tabbed window regions that you can draw to already
done.)
- HTML5 Canvas allows you to draw if you want to get
fancy.
- Completely themeable ( uses foundation.css for
columns and rows, so different sizes display
gracefully. This should also degrade gracefully
when on mobile apps.
- Regex with good support.
- PLANNED: Script editor using ACE which includes syntax
Highlighting.
- Cross Platform ( Compiles on linux, windows, mac because
it's Qt.
- Completely modular, plugins have plugins. The main App
is more or less agnostic ( Just a Socket/IO/Sql api).
Of course, this app was never meant to be a general MUD client like MUSH, it was specifically designed (in my mind anyway) for connecting to Aardwolf to serve my specific needs, so I am not even sure anyone else would find it even remotely useful.
It was also intended as a promotional gimmick for my clan, with the hopes that people might download the client from our website, not have to install anything, and we could provide them with a slick UI and pre-configured client that would also work on Mobile. The ultimate goal is to get it working there, cause sometimes you just gotta quest while on the go.
I am interested to hear what you think, perhaps if you do start a rewrite of MUSH you might consider Qt for the cross platform stuff, at the very least, what I did is a nice proof of concept, even if it's limited and hackish( I am not really a good C++ programmer or even Javascript programmer, so I have probably done a lot of dumb stuff.)
You can check out the code on github:
https://github.com/jasonknight/qushie
https://github.com/jasonknight/qushie-app
It's very alpha, so probably not very easy to get it up and running. |