An open API service indexing awesome lists of open source software.

https://github.com/taedlar/es2_mudlib

ES2 is a LPMud (up since 1994) with compact object hierarchy and flexible combat system.
https://github.com/taedlar/es2_mudlib

lpmud mud mudlib

Last synced: 3 months ago
JSON representation

ES2 is a LPMud (up since 1994) with compact object hierarchy and flexible combat system.

Awesome Lists containing this project

README

          

# README
[ES2](https://zh.wikipedia.org/zh-tw/%E6%9D%B1%E6%96%B9%E6%95%85%E4%BA%8B2_%E5%A4%A9%E6%9C%9D%E5%B8%9D%E5%9C%8B) is a LPMud started by
[Annihilator](https://github.com/taedlar) since 1994. It is the first open source LPMud in Taiwan (and in the whole Chinese culture).
There are many Chinese MUDs thereafter started base on its code base and developed their own contents.

## Usage

Starting from v1.5, ES2 Mudlib requries the [neolith-1.0.0](https://github.com/taedlar/neolith) LPMud driver (alpha-8 or later) to run.
The Neolith driver offers consistent Linux/Windows LPMud environment and **coding agent-friendly** language features (see [dot-call syntax](#neolith-dot-call-syntax)).
Legacy LPMud or MudOS is no longer supported.

To run ES2 Mudlib,
1. Build Neolith
2. `git clone --recurse-submodules` a copy of ES2 Mudlib from this repository to a local directory.
3. Make a copy of [neolith.conf](neolith.conf) and edit the path settings to fit your local directory.
4. Run
```
neolith -f neolith.conf
```
5. Then you shall be able to connect to the mud by `telnet localhost 4000`. Enjoy.

### Client Software
- ES2 Mudlib is compatible with classical telnet client and vt100 terminal, with ANSI coloring.
- You can also use a MUD client such as [TinTin++](https://github.com/scandum/tintin), or [Mudlet](https://github.com/Mudlet/Mudlet).

### Neolith Console Mode
With `neolith-1.0.0.alpha.6` or later, ES2 mudlib supports the **console mode** that allows connecting to the MUD directly on the console.
This enables mudlib developer to start and test the MUD quickly or integration automation scripts on the mudlib code.

To connect in console mode, add the `-c` option to neolith:
```
neolith -f neolith.conf -c
```
> [!CAUTION]
> External ports works as usual when in console mode.
> Interruption (Ctrl-C) on console mode brings down the MUD server process and disconnect all users immediately.

## Versioning
- The `main` branch is for v1.5 onwards and requires the Neolith driver.
- The `v1.4` branch is the legacy version compatible with MudOS or FluffOS (with minor fixes).
- A GitHub workflow `release.yml` is added to automate ES2 mudlib main branch releases.

### Neolith dot-call syntax
In Neolith's LPC, the form `receiver.efunction(args ...)` is equivalent to `efun::efunction(receiver, args ...)` (without routing through master object `valid_override` policy check).

The rationale is to encourage more **AI coding agent friendly** coding style:
- Dot-call provides a **static compile-time binding** semantic that eliminates the ambiguity of simul_efun calls and efun calls.
- It allows more intuitive code style with **chaining dot-call** instead of nested function calls. (e.g. `user.environment().first_inventory()` vs `first_inventory (environment (user))`)
- It is a **common OOP syntax** in other popular modern programming languages like Python and Java. AI coding agent already seen lots of examples in their training data.
- Type checking and **efunction contracts** still hold, allowing AI coding agent to troubleshoot invalid usages at compile-time.

> [!IMPORTANT]
> Not all efuns allow the dot-call syntax. Only **safe** efuns declared in a `#pragma allow_dot_call` context can be called this way.
> See [lpc.md](neolith/docs/manual/lpc.md#allowed-efuns) for a table of latest efun contracts.

## License

The original release of ES2 mudlib is licensed under a roughly written notice that forbids commercial-use and requires displaying the name
of "ES2 mudlib". Since 2022, it is released on github by Annihilator and placed under **MIT license**, so those old restrictions are no
longer required. Please note the initial commit in github repository is based on the ES2 mudlib v1.3b release. Annihilator also grant you
the choice to use any earlier released versions of ES2 mudlib under MIT license for less restrictions.

With the change of license, please note:

### Commercial Use

**Yes**, the ES2 mudlib under MIT licnese allows commercial-use.

However, a LPMud mudlib requires a compatible LPMud driver to run on. Currently ES2 mudlib is known compatible with MudOS and
[Neolith](https://github.com/taedlar/neolith) (a MudOS fork, specially customized for ES2 mudlib), while both of them do not allow commercial-use
due to the restrictions of original LPMud source from Lars.

### Displaying "ES2 mudlib"

You are **no longer required** to display the name of ES2 mudlib if you start a mud with the ES2 mudlib. Annihilator still hold the copyright
of the name "ES2 mudlib". Since the original license requires (and grant user the rights) to display the name, changing to MIT license should
not affect how old users use the name. Annihilator grant you the PERMISSION TO DISPLAY "ES2 mudlib" in you MUD's login screen with the
disclaimer that ES2 mudlib is PROVIDED AS-IS and SHALL NOT BE LIABLE TO ANY DAMAGE possibly caused by the software to your assets or users.

### Open Source

You are **not required** to open source your MUD game built on ES2 mudlib. This is technically the same in old license and in MIT license,
and this is why MIT license is choosed rather than GPL.