After a (once again) forced updates hiatus of a couple of months, monthly Mudlet updates are back! Enjoy improvements to drag & drop and a much better mapper.

What is Mudlet?

Mudlet is a platform with which you can play multiplayer, pure-text online games – called MUDs, precursors to today’s online games. There are thousands of unique worlds online – download Mudlet for free on Windows/macOS/Linux, join one and enjoy!

New games in Mudlet

Cleft of Dimensions

Do you have a soft spot for an old SNES RPG? Are you a fan of retro gaming? The Cleft of Dimensions is an adventure-driven MUD with content inspired by a variety of classic video games. Do you want to jump on goombas? Maybe you’d rather immolate them with lava or bombard them with meteors. Then again, why fight when enslavement’s an option? If that doesn’t work out, you’ve got this motorcycle you could crash into them. The Cleft has 16 character classes, each with a distinctive playstyle.   Gameplay in the Cleft features exploration, puzzles, quests, and combat. At time of writing, the world contains 98 areas. Quests range from deciphering treasure maps and committing industrial espionage to seeking the blessings of the mana spirits or just going fishing. A remort system facilitates repeat playthroughs to find content you missed the first time around.   The Cleft opened in July 2000 and has been in active development ever since. We’re always innovating. Recent features include Discord integration and areas written with artificial intelligence. Check us out!

Core MUD

Core Mud is an interactive text MUD set on the planet formal star-charts refer to as Hermes 571-G, but that everyone in the know refers to simply as “Core”. Core is one of the most distant settlements known to mankind, most famous for its lucrative yet oppressive mines. But more than mankind can be found here; Core is a diverse group of 9 races in total, all vying for recognition or profits, or both, working for The Company, the megalithic entity running the colony itself. To The Company, everything is secondary to profits. It is up to you to determine how best to survive in this environment, whether that be through combat training, superior mining skills, or technical prowess.   Core MUD is always free to play and features a fun and supportive atmosphere. Roleplaying is encouraged but not mandatory. Mining is your primary source of income, but there are multiple ways to scrape together a few credits… or a few million. Core Mud also features an economy which is player-driven; players own merchandise shops featuring energy weaponry or useful tools, pubs featuring assorted alcoholic (of course) and non-alcoholic beverages, and clinics for healing, to name a few. Come join us today!

CoreMUD gameplay Want to add your game in here? It’s free.

Drag and drop link to install a package

Yes you read that right – just drag and drop a link onto Mudlet and it’ll download and install the package for you:

Carrion Fields UI

Alternatively, you can also drag and drop the package file itself and it’ll install as well.

New core dev team member, Delwing

Please welcome Piotr, aka Delwing / WilK to the team! Delwing has previously made the excellent web-based Mudlet map viewer, VS Code autocompletion for Mudlet, and with scripts for the Polish game Arkadia. This time around in Mudlet, Delwing added room borders: Along with a complete customizable map info panel: And some very sleek-looking room selection: You can also now customise the colour of the room character. Thanks to Delwing for adding these in, and looking forward to more! SlySven has put a huge amount of work into the mapper as well – and it can now save/load in JSON as well. This is something that crowdmaps will find handy to integrate so changes to the map can be clearly seen as text.

View-only mapper

Thanks to ktunkiewicz‘s work, the mapper now has a view-only mode – instead of editing – and of course it starts off in view-only off the bat:

Map makers no longer have to worry about players messing the map up with an accidental click.

Profile autosave

We’ve listened and new profiles created on 4.11 will now save automatically by default! Something so simple can go a long way to a better player experience.

Named patterns

matches[2] and friends is a good workhorse in Mudlet, and now they’ve been joined by new friends – you can now use matches.mycustomname!

Before

After

Notice how the attacker and weapon are changing places, being either first or second – but that doesn’t affect our echo at all. Try this out for yourself, and find the docs for it here.

String interpolation

It sounds pretty complicated, but it actually makes things easier – a new function, f(), allows you to combine text and variables together in a more intuitive manner:

-- old way:
cecho("\nHello, "..matches[2]..", how is it going?")

-- new way:
cecho(f("\nHello {matches[2]}, how is it going?"))

 

Coding improvements

Kebap has put a lot of work in and improved all of the “wrong argument type” errors to be much more descriptive, and they’ll now tell you what went wrong and where:

The function needs a name/id, but none was given

I have to say that on the technical side of things, this makes the code look much cleaner – if you’re curious, have a peek. Additionally, whenever a function couldn’t do its job for some reason, it previously returned nil+message – the message will now show up in the Debug console as well, which can aid you in debugging:  

Mudlet in Polish

Thanks to Delwing and Sirith, Mudlet is now available in Polish! There is a community of Polish games out there; now when a new player starts Mudlet for the first time, it’ll be in their native language. Text games are a great way to learn a language, so if you were thinking of picking up Polish – now’s your chance!

macOS scrolling

Touchpad scrolling for macOS now behaves a lot more naturally, we hope you like it!

More updates?

Regular monthly updates were interrupted by one of our partners, Travis CI, suddenly turning their back on the open-source community. We’ve taken the time to migrate our macOS and Linux builds to Github instead, and in the process switched to using CMake for building in combination with a C++ package manager, vcpkg. Regular, monthly updates are now back on track for the foreseeable future.  

Credits

Big thanks to all coders who made it happen: Damian Monogue, Dustin Heywood, ethorondil, Gustavo Sousa, Jonathan Picazo, Kamil Tunkiewicz, Kebap, Manuel Wegmann, Matthias Urlichs, Mike Conley, Piotr Wilczyński, Stephen Lyons, tdk1069, Vadim Peretokin, and wiploo. Of course, our fantastic translators as well: Alan Sneath (alsneath), Heimen Stoffels (vistausss), Hsin-Hsiang Peng (Hsins), Leris, lostnow, Marco “M0lid3us” Tironi (wiploo), Mi11et, Piotr Wilczyński, Sirith (Senareil), Vadim Peretokin, and vingi.  

Changelog

added:

  • ‘look’ command in generic_mapper can now be translated
  • addCmdLineSuggestion() allows you to add words to the tab completion
  • custom HTTP method requests are now supported (ie PATCH)
  • debug console now shows warnings from functions (which are returned as nil+message normally)
  • f() function for string interpolation, ie send(f(“My target is {target}”))
  • functions are now accepted everywhere [[code here]] is as well
  • generic mapper: new ‘lazy’ map mode to match room names only, ignoring exits
  • getProfileTabNumber() to return the # of the current tab
  • getWindowWrap() so you can make echo’s that don’t wrap
  • registerMapInfo() allows you to customise the map info label
  • launching Mudlet for the first time ever? The input line will now have a placeholder text saying where to type the text
  • map info box is now customizable
  • modules can now be loaded before scripts in a profile with the -1 module priority
  • named captures are now supported in regex triggers (matches.)
  • placeholder text for command fields to explain what are they for
  • mudlet.org/it/for our Italian players
  • room characters can now be custom-coloured
  • rooms now have borders in the 2D view
  • saveJsonMap() and loadJsonMap() now support the Mudlet map format in JSON
  • setRoomCharColor() allows you to customise the colour of a room character
  • showNotification() to show an OS (computer) notification
  • sysDownloadFileProgress event to monitor download progress
  • view-only mode in the mapper, which is on by default
  • X11 (Linux middle-click) selection is now supported
  • you can now install a package by dragging the URL onto Mudlet

  improved:

  • ‘deleteOldProfiles’ now deletes old modules as well
  • ‘no map loaded’ will now differentiate between actually no map loaded, and not knowing where you are
  • Adjustable.Container now deals with corrupted save files and table for save slots
  • all “wrong argument type” errors are now gone, will give an actual explanation instead
  • c/d/hecho text formatting can do italics and bold
  • connection dialog now looks better in dark themes
  • default background color is now transparent, not black, in c/d/hecho
  • default, unused profiles no longer require a confirmation to delete
  • event engine can now pass large numbers through OK
  • exists() function will now error on a wrong input type
  • expired timers are now periodically deleted when you’re offline, instead of in bulk when you reconnected (which made Mudlet freeze for a while)
  • getMapLabel() now returns foreground/background colors and the image as base64
  • GMCP package names are now parsed in a case-insensitive way, per spec
  • installing a package by dragging it into Mudlet will now give a notification
  • installPackage will now return true/false indicating if it worked
  • internal: history code is now a single code path, not duplicated
  • italics and emojis won’t overlap each other anymore
  • line spacer pattern now uses a spinbox instead of a free-text line edit
  • loading a map will now choose a better folder to start in
  • more functions will now validate their arguments instead of throwing an error
  • name search function can now be customised in the generic mapper
  • new profiles are not preinstalled the “send text to all games” script anymore. There’s a better package available now https://forums.mudlet.org/viewtopic.php?f=6&t=23023
  • newline is now its own entry in the history buffer(edited)
  • profile save is enabled by default on new profiles
  • permGroup can now be used for keys
  • removed all QPalettes from forms/dialogues, enabling stylesheets to cover more aspects of Mudlet
  • response size limit is removed in HTTP calls
  • right-clicking on a room will select it for the pop-up
  • room selection now looks better
  • scrolling is now smoother in general
  • scrolling transition is smoother when screen splits using scrollwheel
  • setFont() won’t work with unknown fonts
  • settings dialog will now close when the button is released, and not pressed, as expected
  • simplified unknown text for given encoding message
  • small text under icons in the connection dialog is gone
  • telnet options within subnegotiations are now ignored, instead of breaking output
  • timestamps are now copied as well when they’re visible
  • trigger patterns now have an explanation of where the text goes for newbies
  • TTS won’t try to speak out <, >, and no text
  • typing in the connection dialog will now highlight the relevant icons
  • using Alt+O will now re-focus on the package manager if it was open
  • you can drag left/right to increase selection after double or triple-clicking on a word
  • you can now copy text from the update dialog
  • you can now multi-select in the package manager

  fixed:

  • Adjustable container attached menu shows elements now on hover (or similar)
  • crash with reloadModule()
  • Discord link in Mudlet will now always work
  • display() won’t freeze on Geyser labels anymore, can show _G as well
  • export action isn’t enabled anymore in Variables view, as those weren’t exportable
  • flyout labels will close when leaving the parent item
  • generic mapper script: correctly handle ‘set player location’
  • IRC ‘/quit’ no longer crashes Mudlet
  • just one ‘about’ button will now be on screen, instead of many if Mudlet was left running for a while and an update was available
  • Lua trigger conditions are now properly deleted when the profile is closed, fixing a small memory leak
  • map labels for an area are now deleted with the area
  • MXP playing MSP handles with no attribute names won’t crash anymore
  • MXP tags with UTF8 strings are now shown correctly
  • pressing Alt won’t steal focus from the input line anymore
  • room exits that go off the map are now drawn
  • some games appeared twice in the connection dialog
  • speedwalk() in reverse mode won’t reverse the numbers as well
  • tempTimer() won’t have a small memory leak anymore
  • unhighlighting during control-selection now works OK
  • module contents aren’t lost anymore if saveProfile() is called during load

infrastructure:

  • CMake is now the primary source for macOS and Linux releases
  • CMake build now generates translations properly
  • PTB and snapshot builds now get separate icons
  • Apple has stopped supporting macOS 10.13 – Mudlet’s minimum is now 10.14

4.11.1 hotfix update fixes gauge/label backgrounds in UIs, speedwalking with special exits, hecho not working quite right, and disables timestamps from being copied when they’re visible. 4.11.2 fixes trigger chain creation and transparent miniconsoles, and 4.11.3 fixes special exits unlocking on start.

What has happened in Mudlet in just the last month alone? See below. This of course doesn’t cover everything since the last release in November!