Comparisons

Lua vs LPC vs Python

MUD scripting splits between client-side automation (capturing output and sending commands) and server-side extension (modifying game logic and persistence). Client scripts offer immediate player customization but lack server state visibility, while server-side languages provide complete control at the cost of architectural complexity and maintenance burden. This comparison evaluates four primary approaches across implementation effort, lock-in risk, and operational reliability.

Lua vs LPC vs Python hero illustration

Mudlet Lua

Rich client automation with Lua 5.1 and integrated GUI framework

Best for: Players requiring complex client-side automation with visual feedback elements like gauges and maps

LPC

Server-side C-variant with object inheritance for LP MUD architectures

Best for: Developers maintaining or extending legacy LP MUD codebases with persistent object requirements

Python (Evennia)

Modern Python framework leveraging Django ORM for MUD development

Best for: Teams building new MUDs requiring contemporary testing practices and database flexibility

TinTin++

Lightweight terminal client with regex-based action scripting

Best for: Minimalist users needing basic automation across multiple MUDs without client commitment

CriterionMudlet LuaLPCPython (Evennia)TinTin++Winner

Initial Learning Curve

Time required to write functional scripts excluding domain-specific game knowledge

Low to moderate - Lua syntax is minimal, but Mudlet API requires studying event system and GUI objectsHigh - Requires understanding C syntax, MUD inheritance chains, and driver-specific security mechanismsLow - Standard Python syntax with extensive external tutorials and IDE supportVery low - Simple #action and #alias syntax with minimal programming constructsTinTin++

Debugging Tooling

Availability of breakpoints, stack traces, and variable inspection during development

Built-in error console, variable inspector, and access to Lua debug libraryDriver-dependent; often limited to compile-time errors and runtime tracebacksFull pdb integration, IDE breakpoints, and Django error reportingBasic logging and #echo commands; no breakpoint or stepping capabilityPython (Evennia)

Cross-Platform Support

Operating system compatibility for development and deployment

Windows, macOS, and Linux binaries maintained with consistent APIServer-side; requires Unix-like environment matching specific driver compilationAny platform supporting Python 3.x; container deployment availablePrimary Unix support; Windows requires Cygwin or WSL with reduced performanceMudlet Lua

Game State Access

Depth of visibility into internal game variables and object states

Limited to parsed text output and locally stored variables; no server introspectionComplete access to object properties, database queries, and internal game stateFull database and object manipulation through Django ORMText parsing only; relies on server output formatting for state inferenceLPC

Persistence Model

Mechanisms for saving and restoring script state across sessions

Profile-local XML storage; requires explicit save calls and manual data migrationAutomatic object persistence via driver save/restore with incremental backupsDatabase persistence through Django models with migration supportStatic configuration files; session variables lost on disconnectPython (Evennia)

Code Sharing Mechanisms

Methods for distributing scripts to other players or developers

XML package export with dependency management through Mudlet forums or GitHubInheritance-based code libraries requiring compatible driver and domain knowledgeStandard pip packages and GitHub integration with requirements.txtPlain text configuration files distributed through paste servicesPython (Evennia)

Maintenance Burden

Effort required to keep scripts functional across updates

Moderate - API updates may deprecate functions; requires testing against new client versionsHigh - Driver updates require code review; legacy inheritance chains complicate refactoringLow - Semantic versioning and standard testing frameworks reduce regression riskVery low - Simple text configurations rarely break between versionsTinTin++

Performance Characteristics

Runtime resource usage and latency impact

Client-side only; minimal CPU impact except during heavy GUI updatesServer CPU bound; efficient for game logic but subject to driver evaluation limitsInterpreted overhead mitigated by modern hardware; async support for I/O operationsNegligible resource usage; pattern matching optimized in CTinTin++

Vendor Lock-in Risk

Difficulty of migrating scripts to alternative platforms

Medium - Deep integration with Mudlet-specific events and GUI objectsHigh - Tightly coupled to specific LP driver implementations and mudlib structuresLow - Standard Python with possible framework abstractionVery low - Portable regex and simple commands transfer to any terminal clientTinTin++

Documentation Availability

Quality and completeness of reference materials

Extensive wiki with searchable function database and active Discord communityFragmented across driver variants; historical manuals often outdated or driver-specificComprehensive ReadTheDocs with auto-generated API referencesComplete manual pages and built-in #help system with version consistencyPython (Evennia)

Our Verdict

Mudlet Lua offers the best balance for player automation requiring GUI elements, while Python suits new server development with modern practices. LPC remains necessary for legacy LP MUD maintenance but imposes significant architectural constraints and maintenance overhead. TinTin++ serves minimal automation needs without commitment but lacks capabilities for complex systems.

Use-Case Recommendations

Scenario: Building a complex combat system with health bars, maps, and timers

Mudlet Lua

Client-side GUI framework allows visual feedback and automation without requiring server modification or affecting other players

Scenario: Creating persistent NPCs with complex behavior trees and state machines

Python (Evennia)

Server-side persistence and modern object-oriented patterns support complex AI state management with proper version control

Scenario: Maintaining a legacy LP MUD with 1990s codebase and established player base

LPC

Existing inheritance structures and driver-specific optimizations require LPC compatibility; migration cost exceeds benefit

Scenario: Quick multi-MUD aliases for basic command shortening and simple triggers

TinTin++

Minimal setup and portable text configurations work across any MUD without client lock-in or learning curve

Scenario: Prototyping new game mechanics before client implementation

Python (Evennia)

Rapid iteration with standard testing frameworks allows validation before committing to permanent architecture