Athanor - A Barebones MU* Framework for Python
WARNING: Early Alpha!
Pardon our dust, this project is still in its infancy. It runs, but if you're not a developer intent on sprucing up, it may not have much for you just yet.
CONTACT INFO
Name: Volund
Email: volundmush@gmail.com
PayPal: volundmush@gmail.com
Discord: Volund#1206
Discord Channel: https://discord.gg/Sxuz3QNU8U
Patreon: https://www.patreon.com/volund
Home Repository: https://github.com/volundmush/athanor
TERMS AND CONDITIONS
MIT license. In short: go nuts, but give credit where credit is due.
Please see the included LICENSE.txt for the legalese.
INTRO
MUDs and their brethren are the precursors to our modern MMORPGs, and are still a blast to play - in addition to their other uses, such as educative game design: all the game logic, none of the graphics!
Writing one from scratch isn't easy though, so this library aims to take away a great deal of the boilerplate pain.
Athanor provides a dual-process Application framework and a launcher, where each and every piece of the program is meant to be inherited and overloaded by another developer's efforts. The Portal process holds onto clients and communicates with the Server process over local private networking, allowing the Server to reboot - and apply updates - without disconnecting clients.
This library isn't a MUD. It's not a MUSH, or a MUX, or a MOO, or MUCK on its own, though. In truth, it doesn't DO very much. That's a good thing! See, it doesn't make many decisions for the developers it's meant for, making it easy to build virtually ANY kind of text-based multiplayer game atop of it.
FEATURES
- Full Telnet Support (courtesy of the mudtelnet library)
- Extendable Protocol Framework
UNFINISHED FEATURES
- TLS Support
- WebSocket Support
- SSH Support
- Integrated WebClient
RECOMMENDED LIBRARIES:
- mudstring - do-it-all library for manipulatable, serializable ANSI text that even supports MXP, with all of rich 's pretty-formatting power.
OKAY, BUT HOW DO I USE IT?
Glad you asked!
You can install athanor using pip install athanor
This adds the athanor command to your shell. use athanor --help to see what it can do.
The way that athanor and projects built on it work:
athanor --init <folder> will create a folder that contains your game's configuration, save files, database, and possibly some code. Enter the folder and use athanor start and athanor stop to control it. you can use --app server or --app portal to start/stop specific programs.
Examine the appdata/config.py and portal.py and server.py - which get their initial configuration from athanor's defaults - for how to change the server's configuration around.
Again, though, it doesn't do much...
OKAAAAAAY, SO HOW DO I -REALLY- USE IT?
The true power of Athanor is in its extendability. Because you can replace any and all classes the program uses for its startup routines, and the launcher itself is a class, it's easy-peasy to create a whole new library with its own command-based launcher and game template that the launcher creates a skeleton of with --init <folder>.
Not gonna lie though - that does need some Python skills.
If you're looking for a project already built on Athanor for you, check out pymush and don't let the MUSH in the name fool you - it's built for MUDs too!
FAQ
Q: This is cool! How can I help?
A: Patreon support is always welcome. If you can code and have cool ideas or bug fixes, feel free to fork, edit, and pull request! Join our discord to really get cranking away though.
Q: I found a bug! What do I do?
A: Post it on this GitHub's Issues tracker. I'll see what I can do when I have time. ... or you can try to fix it yourself and submit a Pull Request. That's cool too.
Q: But... I want a MUD! Where do I start making a MUD?
A: check out pymush
Q: Why not just feed data straight to TelnetConnection? Why manually create TelnetFrames first?
A: Eventually, I want to add MCCP3 support, which would call for decompressing incoming data. Since the client will send data to trigger the server understanding that all following data will be compressed, Frames must be parsed one at a time so that any remaining data can be optionally decompressed. It's easy to create a 'BufferedTelnetConnection' subclass that handles all of this for you, though.
Special Thanks
- The Evennia Project. A bit of code's yoinked from them, and the dual-process idea for Portal+Server is definitely from them.
- All of my Patrons on Patreon.
- Anyone who contributes to this project or my other ones.
Metadata
Release files for athanor 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| athanor-0.1.0.tar.gz | 22.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| athanor-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 47.2 kB
Release files / athanor-0.1.0.tar.gz
| Download URL | athanor-0.1.0.tar.gz |
|---|---|
| Size | 22.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6da3214bb660318cd2ef0de5b1a00869d911f210f2d4294a7d40e2b8c8fde7e0
|
|
BLAKE2b-256 checksum How to use checksums |
6884e79de932c2033c036a805644d3b07888c02a50f929cba8a51806ddb00d5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
|
Release files / athanor-0.1.0-py3-none-any.whl
| Download URL | athanor-0.1.0-py3-none-any.whl |
|---|---|
| Size | 24.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a1a3fbe173971c1b4688da829932aeb5403a420deb60df260fb4108ccf0cbf02
|
|
BLAKE2b-256 checksum How to use checksums |
93591150e277e6175788fc720ea8edb1ee97bee92a9bbef32232273cf1a3d566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.5
|
Security for athanor 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.