Mudlet 上游玩身临其境的多人纯文本 RPG 游戏。

随处游玩。

Mudlet 可运行于 Windows、macOS 和 Linux 平台。在一台计算机上所撰写的脚本可在其他计算机上无缝运行,您可通过 Dropbox 分享您的档案。

快速。

从 Mudlet 出生起就已定义其卓越性能。自定义文本显示及 Lua 脚本系统将易如反掌地处理最大的难题。

100% 可模组化。

Mudlet 的整个用户页面被设计为均可修改 – 从窗口内的大小至客户端本身的外观。为您自己制作一个前往文本世界的美丽传送门。

免费且开源。

Mudlet 完全免费,您可自由下载、修改并拓展功能。在坚强的基底之上构建,加入我们使制作 MUD 的流程变得无与伦比。

什么是 MUD?

MUD (/ˈmʌd/;起初意为多用户地牢 (Multi-User Dungeon),随后产生称为多用户维度 (Multi-User Dimension) 及多用户领域 (Multi-User Domain) 的变体)[1][2] 是一个多人实时在线的虚拟世界,通常基于文字。MUD 结合了角色扮演游戏、砍杀游戏、 玩家对战游戏、交互式小说及在线聊天等元素。玩家可阅读或预览房间、物体、其他玩家、非玩家角色及在虚拟世界中所作行为的描述。玩家通常通过输入与自然语言相似的命令和玩家与世界交互。- 维基百科

这是一种你会爱上的游戏,它能叙述故事,或是进行史诗般的突袭,又或是进行尔虞我诈的政治斗争,亦或与您的朋友度过美好时光。

Mudlet 新闻

Mudlet 4.17 – now more screenreader friendly!

We are excited to announce the release of Mudlet 4.17!
Screenreaders
A major improvement in this release is the increased accessibility of both the main display and the code editor. Previously, screen readers were unable to read text within these areas, but we have now made them accessible – allowing players with visual impairments to more easily use Mudlet. These improvements were made possible through the generous support of our Patreon community, with a total of 1800USD paid out in bounties to fund these enhancements! We would like to take this opportunity to thank our Patreon supporters for enabling us to make these improvements – and if you aren’t already a Patreon supporter, we encourage you to consider signing up to help us continue to improve and develop Mudlet.
While we have cleared the biggest blockers for visually impaired players, we recognize that there is still more work to be done in terms of accessibility. We will continue to work on making Mudlet as accessible as possible for all players. If you are a visually impaired player, we recommend reading the manual on screen readers for more information on how to use Mudlet with a screen reader.
We would also like to recognize the contributions of gamecreature, Tamarindo, and Vadi who worked on the accessibility improvements for this release.
Room properties
Additionally, we have made it much simpler to edit room properties in the mapper. Instead of having separate dialogs for different property types, there is now a single dialog that allows you to edit all properties in one place. This should make it easier for players to customize their maps and create the game environments they want. Big thanks to Leris for making that happen.
Sound improvements
A number of improvements were also added to the Mud Client Media Protocol (MCMP). Tamarindo has worked on making sound fadeout and fadein smoother, correcting a symptom where more media was stopping than was intended using the key parameter, and fixing volume management for music when the continue parameter set to true is used. This ensures that the expected volume is heard after the fadein completes and before the fadeout starts on successive calls to play the same music. The continue parameter has also been fixed to match its related specifications and standards for playing music.
Secure connection upgrade
Finally, we have added a new feature that allows players to automatically upgrade to a secure connection if the game they are connecting to offers one. This is particularly useful for players who may not be aware that their connection is insecure, as they will be prompted to upgrade as soon as they try to connect. We encourage more games to start offering secure connections, as most modern clients are able to support them. It is now up to the games to do their part in providing secure connections for their players.
Overall, Mudlet 4.17 is a significant step forward in terms of accessibility and ease of use. We hope that these improvements will make it even easier for players to enjoy their favorite games with Mudlet!
Changelog
Added:

Command Line Tab Complete blacklist (#6509)
support for EUC-KR Server encoding (#6457)
getConfig and fix return value of setConfig (#6564)
Find and Replace feature in script editor #3694 (#6562)
command line option to only show one (or more) predefined MUD(s) (#6459)
support for multiple profiles from command line (#6470)
setConfig("compactInputLine", true/false) (#6467)
sysProfileFocusChangeEvent (#6267)
scrollTo and getScroll lua function (#6406)
Ctrl+F shortcut to search main window, and rework Ctrl-C (#6353)
Prompt for secure connection choice (#6409)
temporary map labels (#6285)
support for OpenBSD operating system (#6383)
Joint menu for room properties (#6354)
sysBufferShrinkEvent for when a console’s buffer is trimmed (#6382)
setCommandBackgroundColor, setCommandForegroundColor lua functions (#6349)
accessible code editor (edbee) (#6283)
`mudlet accessibility on` alias for new profiles (#6201)
inputline-related options to `setConfig` (#6197)
customisable shortcut for toggling between input line and main window (#6187)
options to dealing with blank lines for screenreaders (#6175)
ctrl as well as shift selection using a text cursor (#6167)
screenreader-friendly main window (#6090)
new default game, Chinese mud.ren (#6140)
indicate locked rooms in exits dialogue (#6102)
Improved:
remember 2D mapper zoom amounts between sessions (#6615)
reset 2D map panning buttons autorepeat to default (#6622)
update mudlet_en_US numerus translations 2023/03 (#6601)
ensure whole item is selected in room properties QComboBoxes (#6486)
New Crowdin updates (#6426)
add support for custom move methods (swim, run, etc) in generic_mapper.xml (#6461)
give add item/add group/delete item buttons individual names (#6462)
move away from constructor initialisation lists (part 4) (#6458)
allow `isActive(…)` and `exists(…)` to use an ID number (#6401)
sort emoji’s in room symbols dialog (up to unicode 10) (#6407)
Retarget old room actions to new "configure room" UI (#6418)
New Crowdin updates (#6308)
search in main window to choose case sensitivity (#6336)
Make timestamps persist between sessions (#6355)
Preferences window now fits on 800p screens + shows normal size buttons (#6360)
allow precise movement of map labels (#6324)
StickMUD default listing to secure port (#6306)
New Crowdin updates (#6260)
make text wrapping quicker (#6277)
add autowrap and support for Chinese/other language word wrapping (#6207)
New Crowdin updates (#6112)
Smooth fadein and fadeout for MCMP (#6219)
tab order in the connection screen – again (#6151)
Change icon mudren.png (#6144)
remove extraneous setPalette calls (#6139)
don’t set default volume, rate, or pitch for TTS (#6141)
update exit pattern in generic_mapper (#6125)
remove expiry argument from tempLineTriggers (#6122)
you can now toggle view mode regardless of selection (#6118)
removed tab trigger that is no longer needed from generic_mapper (#6103)
Fixed:
prevent user map menus being deleted prematurely (#6645)
prevent right clicking in error console moving focus to main window (#6644)
Make Geyser less picky about object names (#6628)
Geyser.MiniConsole now leaves room for scrollbars when auto wrapping (#6634)
restore generation of `sysWindowsResizeEvent` when borders are changed (#6620)
correct search for Lua interpreter for qmake builds (#6616)
Move right-click menu to release event rather than press event. (#6619)
uninstalling many synced modules at once crashes Mudlet (#6555)
ensure input line does not lose focus on switching between profiles (#6502)
Do not prompt to use TLS if Qt was built withoutt SSL support (#6606)
get translations working on command line actions (#6603)
grammar typo in console (#6595)
recognizing that downloadable GUI is already installed (#6584)
launch Mudlet anyway when given unknown command line options (#6582)
ensure 3D push-button is updated if mode is changed by `setConfig(…)` (#6573)
3d mapper can now utilize custom speedwalks (#6534)
global numeric index causing a crash when viewed in Variables editor (#6566)
unshadow a member in LuaInterpreter class (#6563)
application crash on move to area (#6560)
Redo spellcheck after deleting from words (#6557)
stopped search on look happening when search_on_look is false (generic mapper) (#6508)
off-by-one-million error in third argument to Lua `showNotification()` (#6530)
Mudlet crashing on start when you create a buffer (#6550)
Show Client.GUI GMCP in Lua interpreter (#6541)
temporarily stop using QtGamePad on Windows (#6548)
Unknown nested elements in XML packages elements (like Host etc.) will cause erasure of settings (#5895)
blankLinesBehaviour and caretShortcut’s setConfig option (#6544)
make screen readers announce correct details about TConsole instances (#6232)
periods getting stripped from module named upon sync (#6525)
restore buttons & timing screen if main command line hidden & restored (#6511)
stop user (floating/dockable) windows from being moved by `setWindow()` (#6510)
broken ‘Ctrl+S’ shortcut in PTBs (#6516)
make whole menubar clickable again (#6483)
crash when reorganising scripts in editor tree view (#6501)
OS dependent DEFINEDs for Screen-readers (#6492)
not able to import packages/modules on first profile load (#6489)
Disregard MSSP TLS port = 1 (#6491)
Linux PTBs and release builds getting compressed (#6482)
Reused media players to default & clear media button (#6481)
clean up after some right-click (context) menus (#6476)
limit maximum replay speed up multiplier (#6468)
mark the right thing as being experimental (#6454)
background color of wrapped text indent (#6448)
update GCC version used in CI builds (#6451)
restoring deleted default profile to work right in dev builds (#6447)
fix getMainWindowSize values if console tab is not in focus (hidden) (#6438)
Move right-click menu to release event rather than press event. (#6431)
ansi2decho now converts empty ansi color tag to a reset. (#6427)
timestamps being wrongly enabled (#6413)
crashing when a TToolBar (floating/dockable toolbar) is turned into a TEasyButtonBar (fixed around main console) (#6330)
Make table.matches/n_matches not error when presented with tables/functions/etc (#6352)
ensure area selector widget is updated after map is loaded (#6405)
off by 1 issue when scrolling up in caret mode (#6373)
Stop sound/music precisely for MCMP (#6389)
return room list to be within mapper (#6402)
allow "set weight" in 2D mapper to work on multiple rooms’ weights (#6359)
addMouseEvent causes crash to desktop if display name differs from unique name (#6351)
prevent crash on non numeric regexCodePropertyList (#6346)
"Don’t call QList::begin()/end() on temporary" warning (#6348)
Size MacOS alias fonts normally (#6343)
tab order of variables editor (#6300)
allow CMake builds when Vcpkg is not used (#6322)
Show Coremud description also at new URL (#6296)
named groups will work correctly with multimatches (#6307)
ansi2decho so that it correctly handles ANSI texts with BOLD first (#6294)
Change Coremud DNS (#6289)
caret mode not enabling properly in Linux (#6282)
prevent crash when search-engine search used after selection is lost (#6278)
MCMP volume for fadein/fadeout with continue (#6274)
correct our non-handling of DO TIMING_MARK (#6272)
MCMP continue (#6264)
Make first-launch alias placeholder pattern be translatable (#6262)
ensure liboleaut32 library is used for both QMake Windows Setups (#6220)
amend identifier that’s a macro (and breaks compilation) on MSYS2/MINGW-W64 (#6218)
autologin and autoreconnect conflict (#6154)
correct Port number error in 3Kingdoms predefined Muds data (#6202)
Read map UserData from JSON map files (#6191)
use native language for desciptions of a couple of predefined MUDS (#6143)
do not allow map context menu "Set Exits" when multiple rooms selected (#6183)
LuaRocks now load in macOS development environment (#6142)
storing/retrieving alpha for map info bg (#6115)
return empty table if no stub-exits for getExitStubs functions (#6081)
‘New profile’ button to clear an existing password (#6114)
default auto-join IRC channel (#6106)
locked & closed door QRadioButtons being swapped in room exit dialogue (#6105)
convert QFrames in roomExits dialogue to titled QGroupBoxes (#6104)
Infrastructure:
update edbee to support building with qt6 (#6635)
Run danger when PR title is updated (#6639)
update Noto Color Emoji font to Unicode 15.0 v2.038 (#6640)
rationalise strings in `TLuaInterpreter` class (#6636)
Update autocompletion data in Mudlet (#6627)
Update sparkle-glue to latest in our fork (#6612)
Update dblsqd to latest in our fork (#6611)
lower translation threshhold to 85% for a month (#6608)
Update text for translation in Crowdin (#6607)
add link to compiling Mudlet in Github readme (#6597)
try to fix failure to update dblsql feed with PTB builds (#6605)
Update widechar_width.h to latest upstream (#6592)
Update singleshot_connect.h to latest upstream (#6591)
Update text for translation in Crowdin (#6596)
Update bundled IRE mapper script to latest upstream (#6590)
Update text for translation in Crowdin (#6589)
libcommuni to 3.7.0 (#6581)
Add basic tests for buffer functionality (#6574)
rename a few variables shadowing global ones (#6529)
fix compiler warning around ambigious QPointer declaration (#6572)
revert "Fix: temporarily stop using QtGamePad on Windows (#6548)" (#6554)
Update Dockerfile to use Ubuntu 22.04 jammy as base. (#6556)
install pkg-config earlier on in macOS build process (#6552)
Initialize TLuaInterpreter variables before access (#6547)
Delete popup window on close (#6531)
improve TLabel creation (#6543)
Bump webfactory/ssh-agent from 0.5.4 to 0.7.0 (#6542)
Re-Enable release automations that were disabled due to SSH key issues (#6092)
Bump leafo/gh-actions-lua from 9 to 10 (#6535)
remove ‘code-scanning’ configuration from CodeQL (#6536)
Only assign milestones to PRs without one (#6533)
explicitly specify CodeQL queries (#6522)
Refactor how shortcuts are applied (#6519)
Automatically build only in Mudlet repository (#6528)
fix automated Crowdin texts update failing (#6526)
disable Windows builds in github (#6523)
add clion and flatpak folders to gitignore (#6520)
don’t limit Mudlet binary installation to only Debug and Release CMake builds (#6493)
delete codesee integration (#6480)
update copyright for 2023 (#6479)
fix copy/paste typos in coder attribution workflow (#6464)
try to fix action for updating crowdin text (#6465)
Install the CodeSee workflow. (#6463)
Remove "experimental" name from package exporter menu, etc. (#6456)
move away from constructor initialisation lists (part 3) (#6455)
trial new guideline – no TODOs as they dont actually add value (#6446)
centralise predefined MUD game data (#6434)
Put correct link for documentation for scaleMovie() (#6444)
Add `pcre` as an explicit dependency to macOS builds (#6445)
Refactor TMap download code (#6437)
Bump jurplel/install-qt-action from 2 to 3 (#6430)
Update widechar_width.h to latest upstream (#6396)
Update text for translation in Crowdin (#6395)
Revert 6207 and 6277 (#6423)
rename pF -> pParentWidget & fix some whitespace layouts (#6379)
Remove QLatin1String from coding guidelines (#6245)
update plural american english translations (#6356)
Fix the ldoc format for Geyser.Gauge:setStyleSheet (#6374)
correct an error associated with `QColor` in "Room properties" and "Room symbol" classes (#6421)
undo change of a QPushButton to a QToolButton (#6419)
tweak margins and sizing behaviour in `room_properties.ui` (#6420)
resolve merge conflict (#6422)
Bump pat-s/always-upload-cache from 3.0.1 to 3.0.11 (#6398)
Bump ZedThree/clang-tidy-review from 0.9.0 to 0.10.1 (#6399)
Bump carlosperate/download-file-action from 1.1.1 to 2.0.0 (#6400)
Remove possibly unneeded concurrent-ruby install (#6338)
unify class constructor initialisers (Part 2 0f 2) (#6388)
unify class constructor initialisers (Part 1 of 2) (#6387)
CoreMUD got their domain back, reverting temporary changes (#6372)
Update zlib (#6384)
Word-wrap dynamically instead of fixed (#6368)
Run twice as many performance tests to even out analysis (#6350)
Update text for translation in Crowdin (#6344)
fix CodeQL job permissions (#6341)
Remove stray whitespace (#6342)
use correct alias for installing Lua on macOS (#6337)
remove some unnecessary `bool`s (#6335)
use isEmpty() instead of size() or count() being zero (#6333)
change badly named ActionUnit::getXxxxBarList() methods (#6332)
remove some cruft from `ActionUnit` header (#6331)
Perf test cell fix (#6326)
upload performance data to an online spreadsheet (#6309)
fix blank tr("")’s to be QString() instead (#6310)
improve shortcut’s function argument naming (#6301)
Bump 3rdparty/edbee-lib from `64e3208` to `daecd9e` (#6303)
Bump leafo/gh-actions-lua from 8 to 9 (#6305)
Update bundled IRE mapper script to latest upstream (#6299)
Pi performance test (#6269)
Adjust test instructions in README (#6291)
delete squish-tests directory (#6288)
update codespaces image details (#6287)
Bump 3rdparty/qt-ordered-map from `e1a26e3` to `ca2a31b` (#6279)
fix raspberry pi compile (#6280)
Update text for translation in Crowdin (#6276)
tidy up naming of SLOT methods and their usage – Part 5 (last) (#6266)
tidy up naming of SLOT methods and their usage – Part 4 (#6259)
fix logo in README (#6257)
fix launching Mudlet in codespaces (#6256)
tidy up naming of SLOT methods and their usage – Part 3 (#6258)
tidy up naming of SLOT methods and their usage – Part 2 (#6255)
Update sanitizers.cmake to latest upstream (#6240)
add links to naming antipatterns in Lua API (#6244)
re-enable windows GitHub builds (#6251)
Sort translation stats more precisely (#6224)
remove unneeded Host::connectToServer() (#6253)
tidy up naming of SLOT methods and their usage – Part 1 (#6254)
Add naming antipatterns to contributing guidelines (#6246)
Update bundled IRE mapper script to latest upstream (#6249)
Update links for Busted as it’s moved from olivine-labs to lunarmodules. (#6247)
fix clang-tidy review workflow to build (#6241)
add self-hosted raspberry pi build for performance testing (#6226)
add documentation for text rendering classes (#6217)
Update text for translation in Crowdin (#6237)
Update bundled IRE mapper script to latest upstream (#6238)
Update singleshot_connect.h to latest upstream (#6239)
fix auto-updates for ktoolbox and cmake-scripts (#6228)
untangle strings for translation (#5556)
Add package used for display benchmarking (#6223)
don’t use ccache for release and PTB builds (#6214)
Update text for translation in Crowdin (#6213)
update patreon supporters list (#6212)
setup-windows-sdk.ps1 to not close immediately on error (#6206)
update clang-tidy review to 0.9.0 (#6205)
improve build caching on Linux & macOS (#6199)
add ccache to Appveyor (#6193)
use cmake 3.23.3 that’s available in AppVeyor (#6196)
fix ordered-map submodule location and pointer (#6186)
Remove workaround for gon (#6190)
update build agent to macOS 11 (#6189)
trim translations-related debug output (#6179)
document a couple of data structures in the buffer (#6171)
sort translation statistics (#6162)
Add ldoc comment for Geyser.Label:setFormat (#6136)
move away from constructor initialisation lists – part 2 (#5937)
fix a couple of member initialisation order warnings (#6134)
increase minimum Qt to 5.14 (#6133)
scope ControlCharacterMode enum (#6132)
Update text for translation in Crowdin (#6129)
remove hidden ‘Website:’ label from connection dialog (#6111)
Update autocompletion data in Mudlet (#6124)
remove some unused variable warnings with no 3D mapper (#6121)
correctly #include winsock2.h for Windows builds (#6120)
Set permissions for GitHub actions (#6091)
Consider uncaught errors when running tests to be a failure (#6107)
Bump ZedThree/clang-tidy-review from 0.8.3 to 0.8.4 (#6109)
Update text for translation in Crowdin (#6108)
update `qt-ordered-map` with fix for deprecations (#6098)
update `development` with release 4.16 (#6100)
set next release to 4.17.0 (#6099)

4.16 – easier map labels, map autosaves, and scriptable settings

Summer is around the corner in the Northern Hemisphere… and so is a new update of Mudlet! It brings easier map labels, map autosaves, and scriptable settings.
Easier map labels
The previous version of Mudlet had a map label form that was hard to use. This version has a much simpler map label experience, thanks to Delwing’s efforts.

Map autosaves
Profile autosaves, after they had been introduced, largely eliminated losses of unsaved scripts when Mudlet was unexpectedly shut down. Map autosaves are here to do the same thing: even if you don’t save your map by hand, Mudlet will save the map for you in the background on a regular basis, so you don’t lose your work.
Just like profile autosaves, this feature is easy on the disk space as it keeps just one autosaved copy of the map around.
Scriptable settings
This one has been on the wish list for a good while – the ability for scripts to adjust Mudlet’ settings to their liking. This is now here by the way of a setConfig function. The initial implementation of this feature by ktunkiewicz and Vadi has options for adjusting the map view, enabling MSDP, and various special options. More settings will be added over time.
Release automation
A lot of effort this release was put into automating releases since the process was far too unwieldy and complicated. Delwing got his elbows out, and created a plugin to synchronise github releases to Wordpress, which cut down on a lot of overhead. FloXire automated US English translation text generation, Vadi tweaked changelog generation to work for releases as well as PTBs, and keneanung restored connectivity between Github and mudlet.org. All of these improvements make releasing much easier!
While we’ve made great strides in this area, there is still some work to do, so if you can help out – join in!
Changelog
There’s a lot of improvements in this Mudlet update besides the top 3 listed above, so dig into the changelog below to find goodies:
Added:

setConfig and an initial set of values (#6074)
Traditional Chinese exit strings to generic mapper (#6076)
map autosaves (#6056)
new function getCustomLines1(…) to fix ordering of custom line points in original getCustomLines(…) (#6009)
new function getCharacterName() (#6023)
map info background can be customized through mapper colors preferences (#5994)

Improved:

give a simpler connection dialog a go (tabbed) (#5883)
increase max allowed links to 20k (#6064)
New Crowdin translations (#6060)
add NULL handling in DB.lua (#6054)
don’t freeze Mudlet when copying large profile (#5056)
add support for Unicode 14 emojis to linux (#6053)
properly size unicode 13 and 14 emojis (#5915)
make new profile name check case insensitive (#6035)
Map label creation form (#5981)

Fixed:

eliminate some obsolete code warnings in Lua label related function (#6063)
add handling of new features element in IRE Muds XML map format (#6075)
handling MXP entity tags on Discworld is now correct (#5969)
strange clipping multiline map info text (#5990)
setLabelDoubleClickCallback arguments work again as documented (#5970)
handle sound files in subdirectories as well (#5984)
fix selecting none for map info and reading map info (#5976)
stopSounds() work for for triggers again (#5977)
get tempComplexRegexTrigger multiline to work (#5946)
getAreaExits does not return special exits (#5963)

Infrastructure (behind the scenes):

add licenses for bundled luarocks modules (#5995)
add en_US plural translations workflow (#5956)
add resilience to macOS notarization process (#6047)
add visual studio files to .gitignore (#5988)
add website release post automation (#6043)
add workflow to create changelog from the web (#6006)
automate author attribution (#6045)
Busted installation instructions on Windows (#6057)
cache Qt installation for Windows (#6048)
create posts on draft releases to test WP plugin (#6059)
don’t print danger message if everything was kosher (#6078)
enable vcpkg for all cmake-based builds (#5913)
fix grammar in the issue template (#6079)
fix Luarocks on Windows (#6028)
fix macOS codesigning to work again (#6012)
fix openssl and yajl downloads for all platforms (#5980)
fix packaging in Linux builds (#6013)
fix Windows CI builds (use previous VS 2019 to get Qt 5.14.2 back) (#6031)
fixup files in QMake OTHER_FILES and DISTFILES variables (#6037)
install Qt 5.14.2 using aqtinstaller for Windows (#6030)
Openssl archive url (#5965)
remove duplicate list of clang-tidy checks (#5962)
remove no longer necessary brew tap step (#5968)
remove trailing spaces from changelog generator (#6011)
repair Windows CI build failures (#6072)
shorten some lengthy variables (#6017)
switch to current vs 2019 appveyor image (#6046)
switch to 5.1-syntax_5.1 branch for lcf submodule (#5998)
update changelog generator to handle releases as well (#6002)
update OpenSSL used for Windows (#6068)
Update widechar_width.h to latest upstream (#6080)
Update Windows CI zlib to 1.2.12 (#6027)
Updated IRE mapping script to latest upstream (#6083)

Enjoy Mudlet,
Vadi

测绘仪

内置寻路功能的强大 2D 及 3D 测绘器。

立即加入!

即刻安装 Mudlet 并成为庞大世界中的一员!