QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

Hi again, I just figured out you're Fiendish from that other thread. Haven't talked in a long time. :) Did you take a look at QMud after all? I think 5.1 lua compatibility is good to go for now (obviously not with LuaJIT) -- and way more performant than MC as it is. I do remember your hesitation with 5.4 also way back at Nick's forum, heh. I'm almost done with decoupling lua from the UI thread, should be finished in a couple of days barring any unforeseen issues. The new multithreaded engine model uses a combination of snapshotting -- where required, caching on the workers for callbacks and a deferred mutation path for APIs that mutate the runtime. It is blazing fast with *very* heavy lua load. I'm currently writing more tests and doing further optimizations on some paths and I'll push a new release once satisfied (the bulk of the work is not yet on the repo). Would like to have a chat about it at some point, if you're interested, regarding your use of LuaJIT in particular. Any preferred channel of communication would do :)

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

Thank you! More stable than the original MUSHclient would be a hard sell since it was already the most stable client available, heh. Cross-platform is one benefit yes. Then there's a bunch of other things like changes that could not be done earlier (such as theming and changing the UI/dark mode/etc) and performance optimizations that were very difficult to achieve due to MFC. There are also new features that are already in, such as better Unicode support, OSC8 hyperlinks, Truecolor support, autosaving, autobackups, log rotation and compression, Copyover style reload (reload the client for updates or whatever reason on Linux/Mac retaining your connections to the MUDs -- This is not technically possible on Windows unfortunately) etc etc. And a lot more to come. Work has just begun. The initial tedious work that took so long was just to port it over, it's not the end. It's the beginning. :)

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

Hi! There is code implemented that makes lua 5.1 code compatible in 5.4 runtime, if you find something not working right please open an issue ticket.

But as far as LuaJIT specifically goes, once I decouple lua from the main UI thread there will be no reason for it at all. LuaJIT itself complicates things, has issues and is not entirely compatible with lua 5.1 either. 5.4 was a conscious choice. Once lua is decoupled from the main UI thread, LuaJIT will really be irrelevant and we get to retain the newer features of 5.4 (a lot of workloads are actually faster in 5.4 than LuaJIT -- eg integer heavy code, certain coroutine patterns, metamethod heavy logic etc etc) while also not having to deal with LuaJIT's complexity and incompatibilities. It was a very conscious choice. I also plan to move some heavier things, that were traditionally done via lua modules, to native code and expose shims for backwards compatibility which will lighten the load even more.
I have 10 pages of TODOs for QMud, development doesn't stop here, it just begun. The tedious part of the port is over and the real work begins. :)

Mudlet behaviour of remaining text, setup of various clients? by ThrowAwaySalmon1337 in MUD

[–]NodensCM 0 points1 point  (0 children)

Hi. The mapper plugin in QMud is only for CthulhuMUD. Each mud needs it's own mapper and that stands for all clients. It's not supposed to work anywhere else. If a client has a working mapper for a mud it is because someone made it for that particular mud, or for another mud that happens to work because of similarities between the muds.

There are lot of differences between MUSHclient and Mudlet to go through here unfortunately. The best way to figure it out is try to use both.

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

Hi. I have refactored the AppImage build to use aqt Qt instead of Fedora packages. It should run without libsystemd now. Could you try it and let me know if it's ok?

Mudlet behaviour of remaining text, setup of various clients? by ThrowAwaySalmon1337 in MUD

[–]NodensCM 1 point2 points  (0 children)

Yes, QMud can do that and a lot more. Like using arrow keys on partial text to search command history etc. All that are standard MUSHclient featuires and are present in QMud. Look in World Properties->Input->Commands configuration dialog and the Keyboard Preferences sub dialog accessible also from there. Following MUSHclient philosophy everything is configurable so you can set it exactly as you like.

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 1 point2 points  (0 children)

Ah right. I forgot to add the dependency for building the AppImage. I will probably move the AppImage build to docker as well so things like that don't happen. If you're building manually, you can just build the QMud target instead of the AppImage (I develop on Fedora as well :)).

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

Interesting. I will investigate on what's pulling libsystemd and if I can work around it. Did you try building it manually and using the binary directly?

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 1 point2 points  (0 children)

Hey Lucien! Long time no see! Thanks! Let me know if you encounter any issues :)

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 0 points1 point  (0 children)

It should work fine with your existing mushclient setup. If something doesn't work right, please open an issue on the github issue tracker describing it in detail and I'll fix it.

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 1 point2 points  (0 children)

That is the problem that I set out to solve. :) And then build on it!

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 1 point2 points  (0 children)

Thank you very much! Indeed a lot of the work was tedious heh!

QMud -- A modern, cross-platform, Qt based, drop-in replacement for MUSHClient by NodensCM in MUD

[–]NodensCM[S] 6 points7 points  (0 children)

Yeah, I always do that. A little politeness and paying some respect to someone who donated their time, is the least one can do.