mirror of
https://github.com/evennia/evennia.git
synced 2026-04-06 16:44:08 +02:00
112 lines
6.2 KiB
Markdown
112 lines
6.2 KiB
Markdown
title: Evennia 2.0.0 released today
|
|
copyrights: Image by Luc Viatour / [https://lucnix.be/](https://lucnix.be), released under Creative Commons.
|
|
|
|
---
|
|
|
|
|
|

|
|
<br>
|
|
|
|
As part of our new use of [semantic versioning](https://semver.org/), Evennia
|
|
2.0.0 was released today. Evennia is a Python `MU*` creation framework and
|
|
server. As the change of the major version indicates, this is a backwards
|
|
incompatible change ... well, _maybe_. It depends on your use-case. Read on.
|
|
|
|
In this post I'll go over some of the new things since the release of Evennia
|
|
1.0 some six months ago.
|
|
|
|
## New version of the ExtendedRoom
|
|
|
|
The main thing that _may_ be backwards income is the `ExtendedRoom` contrib.
|
|
This contrib extends the standard room with the ability to look at 'details' and
|
|
to have descriptions that change by season and by time-of-day in the game. I
|
|
originally wrote the `ExtendedRoom` contrib more than a decade ago and it was
|
|
in dire need to be recactored and cleaned up to use the modern tools available
|
|
in Evennia. Not to mention make use of my additional years of experience since
|
|
first creating it.
|
|
|
|
Here are the [new features](https://github.com/evennia/evennia/discussions/3200):
|
|
|
|
- All rooms can now have any number of "room states", like "burning", "flooded",
|
|
"dark", "crowded" or what have you. The `season` and `time_of_day` are now just
|
|
treated as any other room-states except that they auto-change with in-game time.
|
|
- Rooms can have any number of swappable room-descriptions, just by adding an
|
|
Attribute `desc_<roomstate>` to the room. This will be used when a given
|
|
room-state is set on the room. If no room state matches, the traditional
|
|
`desc` Attribute is used.
|
|
- In the old contrib, you could add special tags, like `<morning>...</morning>`
|
|
in your descriptions and have those parts of the texts only appear when it's
|
|
morning in-game. This still works, but only ever supported time-of-day states.
|
|
The new way is to make use Evennia's FuncParser to embed functions in the text
|
|
directly. The `ExtendedRoom` understands the new `state` inline function. This
|
|
can be used with _any_ room state (including seasons and time-of-day). For
|
|
example: `$state(morning, The morning sun is shining in.)` or
|
|
`$state(burning, This place is on fire!)`.
|
|
- The room still supports `details` - the ability to look at things in the room
|
|
without needing to create a new database object first. This hasn't changed.
|
|
- The `ExtendedRoom` now also has simple support for echoing random messages now
|
|
and then to the room.
|
|
|
|
Overall, the code was completely re-written and cleaned up, making use of the
|
|
latest Evennia tooling. It also has much better unit-test coverage. All the unit
|
|
tests of the old implementation passes for the new one, but the changes are
|
|
so big that it's nevertheless possible people making heavy use of
|
|
this contrib may see side effects from upgrading.
|
|
|
|
Now, a contrib is not part of the core, so it (potentially) being
|
|
backwards-incompatible should normally not warrant a major version bump. But I
|
|
feel the `ExtendedRoom` contrib is used by so many in the Evennia community that
|
|
it's prudent to up the major version to let people know that they should
|
|
keep an eye out when upgrading.
|
|
|
|
## More on the Beginner Tutorial
|
|
|
|
Most of my time has been spent continuing to work on the new [Beginner Tutorial](https://www.evennia.com/docs/latest/Howtos/Beginner-Tutorial/Beginner-Tutorial-Overview.html). Notably on [part three](https://www.evennia.com/docs/latest/Howtos/Beginner-Tutorial/Part3/Beginner-Tutorial-Part3-Overview.html), where
|
|
we are making a whole little Evennia MUD game from scratch. While still not
|
|
done, I have now added detailed lessons on
|
|
|
|
- Creating RPG dice rollers and rule systems (in our example we are using the
|
|
_Knave_ TTRPG ruleset).
|
|
- Organizing Player Character data, and character generation.
|
|
- In-game objects and items.
|
|
- Handling equipment and weapons.
|
|
- In-game rooms.
|
|
- Non-player characters.
|
|
- Two types of Combat systems (Twitch-based and Turn based).
|
|
|
|
TODOs are Monster/NPC AI, Dynamical generation of rooms, Questin, Shops and some
|
|
more bits and bobs. And of course a separate session on building the game world
|
|
and tying all these systems together into a little example game.
|
|
|
|
## A truckload of new features!
|
|
|
|
As usual, the Evennia community ame through with a bunch of new useful stuff since
|
|
the release of Evennia 1.0.
|
|
|
|
- `Containers` - A new contrib with a typeclass and commands to make and manage
|
|
all sorts of containers, from chests to crates and jars, along with commands
|
|
to put things in them and take things out of them. A great place to start
|
|
tweaking for your own game implementation (InspectorCaracal).
|
|
- The ANSI color fallbacks (for use when your client does not support XTerm256)
|
|
were improved to make more sense (InspectorCaracal).
|
|
- New `logger.delete_log` method for deleting log files from inside the server (aMiss-aWry).
|
|
- For those intending to override the `SessionHandler`, it was cleaned up and
|
|
refactored to make it less prone to cause circular import issues (Volund).
|
|
- New `create_channel(attr=...)` keyword, for setting channel Attributes
|
|
directly on creation, especially from channels defined in `settings.DEFAULT_CHANNELS` (me)
|
|
- Attributes will now properly save Python `deques` with `maxlen=...` set (me).
|
|
- [`TagCategoryProperty`](https://www.evennia.com/docs/latest/Components/Tags.html#tagcategoryproperty) - A new way to define tags with a particular category on a class at creation-time, without having to do so in the `at_object_creation` method (me).
|
|
- A lot of bug fixes; [see the CHANGELOG](https://www.evennia.com/docs/latest/Coding/Changelog.html) for all the details!
|
|
|
|
## Continuing
|
|
|
|
Over summer, my development usually slows down a bit, but I plan to keep pushing
|
|
on getting that Beginner tutorial done. We are also seeing more people joing
|
|
the [evennia discord](https://discord.gg/AJJpcRUhtF), which means more eyes on
|
|
the code and more bugs and edge cases being detected (and ironed out). So a lot
|
|
of maintenance work to be done in the short term.
|
|
|
|
In the longer term, there are a lot of exciting plans for Evennia in the pipe,
|
|
but we'll get there when we get there. :)
|
|
|
|
Have a nice summer!
|