• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login
Brand MU Day
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Register
  • Login

Evennia 1.0 released

Scheduled Pinned Locked Moved Helping Hands
evennia
8 Posts 7 Posters 717 Views
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G
    Griatch
    last edited by Griatch 12 Mar 2022, 22:36 3 Dec 2022, 22:35

    As of today, The 1.0-dev develop branched merged into the main branch. 🎉 This was a a lot of work. Thanks everyone who helped and contributed! As usual, report bugs in the issue tracker.

    Key documentation to read:

    • New installation instructions if you install from scratch
    • Upgrading your 0.9.5 game to Evennia 1.0

    Evennia 1.0 Release Notes

    This summarizes the changes. The doc release notes is like this list but with more detail. The Changelog has all the detail.

    • Main development now on main branch. master branch remains, but will not be updated anymore. If you follow along on GIT, switch to main branch; the develop branch will not see updates until work on the next Evennia version picks up.
    • Old documentation sources (github wiki, readthedocs) were closed. Docs are only in one place now, at https://www.evennia.com/docs/latest/index.html.

    Minimum requirements

    • Python 3.10 is now required minimum. Ubuntu LTS now installs with 3.10. Evennia 1.0 is also tested with Python 3.11 - this is the recommended version for Linux/Mac. Windows users may want to stay on Python 3.10 unless they are okay with installing a C++ compiler.
    • Twisted 22.10+
    • Django 4.1+

    Major new features

    • Evennia is now on PyPi and is installable as pip install evennia.
    • A completely revamped documentation at https://www.evennia.com/docs/latest. The old wiki and readmedocs pages are closing.
    • Evennia 1.0 now has a REST API which allows you access game objects using CRUD operations GET/POST etc. See The Web-API docs for more information.
    • Evennia<>Discord Integration between Evennia channels and Discord servers.
    • Script overhaul: Scripts’ timer component independent from script object deletion; can now start/stop timer without deleting Script. The .persistent flag now only controls if timer survives reload - Script has to be removed with .delete() like other typeclassed entities. This makes Scripts even more useful as general storage entities.
    • The FuncParser centralizes and vastly improves all in-string function calls, such as say the result is $eval(3 * 7) and say the result the result is 21. The parser completely replaces the old parse_inlinefunc. The new parser can handle both arguments and kwargs and are also used for in-prototype parsing as well as director stance messaging, such as using $You() to represent yourself in a string and having the result come out differently depending on who see you.
    • Channels New Channel-System using the channel command and nicks. The old ChannelHandler was removed and the customization and operation of channels have been simplified a lot. The old command syntax commands are now available as a contrib.
    • Help System was refactored.
      • A new type of FileHelp system allows you to add in-game help files as external Python files. This means there are three ways to add help entries in Evennia: 1) Auto-generated from Command’s code. 2) Manually added to the database from the sethelp command in-game and 3) Created as external Python files that Evennia loads and makes available in-game.
      • We now use lunr search indexing for better help matching and suggestions. Also improve
        the main help command’s default listing output.
      • Help command now uses view lock to determine if cmd/entry shows in index and read lock to determine if it can be read. It used to be view in the role of the latter.
      • sethelp command now warns if shadowing other help-types when creating a new entry.
      • Make help index output clickable for webclient/clients with MXP (PR by davewiththenicehat)
    • Rework of the Web setup, into a much more consistent structure and update to latest Django. The mygame/web/static_overrides and -template_overrides were removed. The folders are now just mygame/web/static and /templates and handle the automatic copying of data behind the scenes. app.css to website.css for consistency. The old prosimii-css files were removed.
    • AttributeProperty/TagProperty along with AliasProperty and PermissionProperty to allow managing Attributes, Tags, Aliases and Permissios on typeclasses in the same way as Django fields. This dramatically reduces the need to assign Attributes/Tags in at_create_object hook.
    • The old MULTISESSION_MODE was divided into smaller settings, for better controlling what happens when a user connects, if a character should be auto-created, and how many characters they can control at the same time. See Connection-Styles for a detailed explanation.
    • Evennia now supports custom evennia launcher commands (e.g. evennia mycmd foo bar). Add new commands as callables accepting *args, as settings.EXTRA_LAUNCHER_COMMANDS = {'mycmd': 'path.to.callable', ...}.

    Contribs

    The contrib folder structure was changed from 0.9.5. All contribs are now in sub-folders and organized into categories. All import paths must be updated. See Contribs overview.

    • New Traits contrib, converted and expanded from Ainneve project. (whitenoise, Griatch)
    • New Crafting contrib, adding a full crafting subsystem (Griatch)
    • New XYZGrid contrib, adding x,y,z grid coordinates with in-game map and pathfinding. Controlled outside of the game via custom evennia launcher command (Griatch)
    • New Command cooldown contrib contrib for making it easier to manage commands using
      dynamic cooldowns between uses (owllex)
    • New Godot Protocol contrib for connecting to Evennia from a client written in the open-source game engine Godot (ChrisLR).
    • New name_generator contrib for building random real-world based or fantasy-names based on phonetic rules (InspectorCaracal)
    • New Buffs contrib for managing temporary and permanent RPG status buffs effects (tegiminis)
    • The existing RPSystem contrib was refactored and saw a speed boost (InspectorCaracal, other contributors)

    Translations

    • New Latin (la) translation (jamalainm)
    • New German (de) translation (Zhuraj)
    • Updated Italian translation (rpolve)
    • Updated Swedish translation

    Utils

    • New utils.format_grid for easily displaying long lists of items in a block. This is now used for the default help display.
    • Add utils.repeat and utils.unrepeat as shortcuts to TickerHandler add/remove, similar
      to how utils.delay is a shortcut for TaskHandler add.
    • Add utils/verb_conjugation for automatic verb conjugation (English only). This
      is useful for implementing actor-stance emoting for sending a string to different targets.
    • utils.evmenu.ask_yes_no is a helper function that makes it easy to ask a yes/no question
      to the user and respond to their input. This complements the existing get_input helper.
    • New tasks command for managing tasks started with utils.delay (PR by davewiththenicehat)
    • Add .deserialize() method to _Saver* structures to help completely
      decouple structures from database without needing separate import.
    • Add run_in_main_thread as a helper for those wanting to code server code
      from a web view.
    • Update evennia.utils.logger to use Twisted’s new logging API. No change in Evennia API
      except more standard aliases logger.error/info/exception/debug etc can now be used.
    • Made utils.iter_to_str format prettier strings, using Oxford comma.
    • Move create_* functions into db managers, leaving utils.create only being
      wrapper functions (consistent with utils.search). No change of api otherwise.

    Locks

    • New search: lock type used to completely hide an object from being found by
      the DefaultObject.search (caller.search) method. (CloudKeeper)
    • New default for holds() lockfunc - changed from default of True to default of False in order to disallow dropping nonsensical things (such as things you don’t hold).

    Hook changes

    • Changed all at_before/after_* hooks to at_pre/post_* for consistency
      across Evennia (the old names still work but are deprecated)
    • New at_pre_object_leave(obj, destination) method on Objects.
    • New at_server_init() hook called before all other startup hooks for all
      startup modes. Used for more generic overriding (volund)
    • New at_pre_object_receive(obj, source_location) method on Objects. Called on
      destination, mimicking behavior of at_pre_move hook - returning False will abort move.
    • Object.normalize_name and .validate_name added to (by default) enforce latinify
      on character name and avoid potential exploits using clever Unicode chars (trhr)
    • Make object.search support ‘stacks=0’ keyword - if >0, the method will return
      N identical matches instead of triggering a multi-match error.
    • Add tags.has() method for checking if an object has a tag or tags (PR by ChrisLR)
    • Add Msg.db_receiver_external field to allowe external, string-id message-receivers.
    • Add $pron() and $You() inlinefuncs for pronoun parsing in actor-stance strings using msg_contents.

    Command changes

    • Change default multi-match syntax from 1-obj, 2-obj to obj-1, obj-2, which seems to be what most expect.
    • Split return_appearance hook with helper methods and have it use a template
      string in order to make it easier to override.
    • Command executions now done on copies to make sure yield don’t cause crossovers. Add
      Command.retain_instance flag for reusing the same command instance.
    • Allow sending messages with page/tell without a = if target name contains no spaces.
    • The typeclass command will now correctly search the correct database-table for the target
      obj (avoids mistakenly assigning an AccountDB-typeclass to a Character etc).
    • Merged script and scripts commands into one, for both managing global- and
      on-object Scripts. Moved CmdScripts and CmdObjects to commands/default/building.py.
    • The channel commands replace all old channel-related commands, such as cset etc
    • Expand examine command’s code to much more extensible and modular. Show
      attribute categories and value types (when not strings).
      • Add ability to examine /script and /channel entities with examine command.
    • Add support for $dbref() and $search when assigning an Attribute value
      with the set command. This allows assigning real objects from in-game.
    • Have type/force default to update-mode rather than resetmode and add more verbose
      warning when using reset mode.

    Coding improvement highlights

    • The db pickle-serializer now checks for methods __serialize_dbobjs__ and __deserialize_dbobjs__ to allow custom packing/unpacking of nested dbobjs, to allow storing in Attribute. See Attributes documentation.
    • Add ObjectParent mixin to default game folder template as an easy, ready-made
      way to override features on all ObjectDB-inheriting objects easily.
      source location, mimicking behavior of at_pre_move hook - returning False will abort move.
    • New Unit test parent classes, for use both in Evenia core and in mygame. Restructured unit tests to always honor default settings.

    Other

    • Homogenize manager search methods to always return querysets and not sometimes querysets and sometimes lists.
    • Attribute/NAttribute got a homogenous representation, using intefaces, both
      AttributeHandler and NAttributeHandler has same api now.
    • Added content_types indexing to DefaultObject’s ContentsHandler. (volund)
    • Made most of the networking classes such as Protocols and the SessionHandlers
      replaceable via settings.py for modding enthusiasts. (volund)
    • The initial_setup.py file can now be substituted in settings.py to customize
      initial game database state. (volund)
    • Make IP throttle use Django-based cache system for optional persistence (PR by strikaco)
    • In modules given by settings.PROTOTYPE_MODULES, spawner will now first look for a global
      list PROTOTYPE_LIST of dicts before loading all dicts in the module as prototypes.
      concept of a dynamically created ChannelCmdSet.
    • Prototypes now allow setting prototype_parent directly to a prototype-dict.
      This makes it easier when dynamically building in-module prototypes.
    • Make @lazy_property decorator create read/delete-protected properties. This is because it’s used for handlers, and e.g. self.locks=[] is a common beginner mistake.
    • Change settings.COMMAND_DEFAULT_ARG_REGEX default from None to a regex meaning that
      a space or / must separate the cmdname and args. This better fits common expectations.
    • Add settings.MXP_ENABLED=True and settings.MXP_OUTGOING_ONLY=True as sane defaults, to avoid known security issues with players entering MXP links.
    • Made MonitorHandler.add/remove support category for monitoring Attributes with a category (before only key was used, ignoring category entirely).
    FaradayF PolkP 2 Replies Last reply 4 Dec 2022, 01:06 Reply Quote 25
    • FaradayF
      Faraday @Griatch
      last edited by Faraday 12 Apr 2022, 01:08 4 Dec 2022, 01:06

      @Griatch I’ll post it over here too - that’s awesome! Congrats 🙂

      Also the new documentation is snazzy.

      1 Reply Last reply Reply Quote 3
      • IoleRaeI
        IoleRae
        last edited by 4 Dec 2022, 01:15

        OMG I am SO HAPPY FOR YOU!! CONGRATULATIONS!

        Thank you SO MUCH for all of your hard work and the contribution to our hobby, and thank you to your team of folks as well. Thank you thank you.

        the entity previously known as Sunny

        1 Reply Last reply Reply Quote 1
        • TezT
          Tez Administrators
          last edited by 4 Dec 2022, 20:06

          congratulations

          she/they

          1 Reply Last reply Reply Quote 2
          • PolkP
            Polk @Griatch
            last edited by 6 Dec 2022, 15:11

            @Griatch Wow, congratulations!

            1 Reply Last reply Reply Quote 1
            • G
              Griatch
              last edited by 7 Dec 2022, 16:27

              Thanks for the nice comments 🙂 Yes, it’s good to get this out, finally.

              1 Reply Last reply Reply Quote 4
              • J
                Juniper
                last edited by 8 Dec 2022, 03:32

                I can’t hit the thumbs-up button hard enough!

                1 Reply Last reply Reply Quote 1
                • RozR
                  Roz
                  last edited by 11 Jun 2023, 05:38

                  Saw the post on r/MUD about 2.0 releasing – congrats!

                  she/her | playlist

                  1 Reply Last reply Reply Quote 5
                  • First post
                    Last post