Evennia 0.6 released - devel branch merged

151 views
Skip to first unread message

Griatch Art

unread,
May 22, 2016, 4:28:59 PM5/22/16
to eve...@googlegroups.com
As for today, the devel branch ("wclient") has merged, which means we upped the Evennia version to 0.6. Yay!

Installation
  1. Stop your running server with evennia stop
  2. cd to your evennia/ folder.
  3. git pull
  4. profit (but you may need to do some changes to your existing game, see below)

If you followed the "wclient" development branch already

In this case you will already have the needed game-dir changes mentioned in the next section. Checking out the master branch and pulling should be enough for you. The upstream wclient branch is not updated anymore and will eventually be deleted.

For you with an existing game in master branch

If you have an existing game directory (created with evennia --init) you'll find Evennia will not start anymore. This is because there are some changes in the settings and file names that are incompatible compared with version 0.5. If you don't have anything critical in your game yet, easiest is to just --init a new game dir and copy over any files or changes you have done. Alternatively you need to do the following changes (below I assume your game dir is called "mygame"):

  1. Edit mygame/server/conf/settings.py. Unless you changed things (like the database), you can remove almost everything except for the initial import of settings_default, SERVERNAME and SECRET_KEY. Here you can see how the default file template looks (your file will have actual values for the server name and secret key): the template settings.py. It's pretty empty by default now. Notably there is no longer a need to specify the GAME_DIR and all those boilerplate django folders. Alternatively you can use evennia --initsettings to create a new minimal settings file.
  2. Remove mygame/server/conf/inlinefunc.py and copy evennia/game_template/server/conf/inlinefuncs.py in its stead (note the extra "s"). If you created your own inlinefuncs already, you may need to convert them since only nested-inlinefuncs (on the form $func(...)) are available now.
  3. Copy evennia/game_template/server/conf/inputfuncs.py to your mygame/server/conf/ directory. Inputfuncs are a new feature of Evennia 0.6.

That should be enough - you should now be able to restart the server normally. If you face any edge cases due to local changes or a more populated database, let us know.


Overview of changes

  • msg() has a different callsign: msg(text=None, **kwargs). All data being sent out is now considered an OOB (Out of band) instruction, including the default text (even though some protocols like telnet send it in a special way, it's still handled as an OOB instruction). These "sendcommands" are given as keyword arguments to the msg method and can be called either with a string or with a list of arguments or a tuple (args, kwargs) to be passed on to the protocol.
    • msg() accepts one special keyword and that is options. This is a dictionary of options that will only affect the protocol sending. This is where you pass that you don't want to parse ansi colors etc. So where you before would write msg(string, raw=True), you now need to do msg(string, options={"raw":True}).
    • The prompt is a separate OOB command, so you use msg(prompt=prompttext) as before.
  • Inputfuncs - these are customizable functions you can now easily supply to manage any incoming command from the client. They are added in the same ways other plugins like lockfuncs or inlinefuncs are handled in Evennia -  by simply defining them in a module Evennia then imports and uses. The default input is the text inputcommand, for which Evennia has a default handler (which launches the cmdhandler), but you could add support for any client-side instruction this way.
    • OOB instructions for GMCP and MSDP have been included, as well as for Evennia's JSON-based webclient instructions. These are just functions in a file that Evennia reads at runtime.
    • Handles mudlet's GMCP handshake (which is not standard except for IRE games)
    • Added default commands for MSDP and bridges to GMCP.
    • Protocol input/output signatures have changed a little. This is mainly of interest if you want to implement your own protocol though.
  • The MonitorHandler in evennia/scripts/monitorhandler is a convenient mechanism for monitoring property- or Attribute-changes on any object. You assign a callback to the change which will trigger when anything changes. This is very useful to use with OOB instructions (like reacting and updating a health bar whenever the health attribute changes, for example).
  • The TickerHandler has seen a lot of updates to make it more generally useful. You can now assign any function to it, to be ticked, not only methods on objects. This means that the callsign has changed quite a bit and users of the old TickerHandler will need to look into reworking their calls.
  • The OOBHandler is no more since the OOB system is now integrated completely with the message sending system rather than being tacked on like before. All the functionality of the old OOBHandler is now handled between the MonitorHandler and the revamped TickerHandler.
  • Added settings.IN_GAME_ERRORS. This is False by default. When active, it will echo Python errors not only to the log but also show the traceback in-game. This is useful for debugging but not good for a production game (where the user instead can report the log time stamp).
  • The webclient has been completely reworked.
    • It now consists of the evennia.js javascript library that handles all communication with the server. It also falls back to AJAX/comet and has a much improved handling of timeouts and various errors. This is meant to be used by whatever gui library is used.
    • It handles the new OOB mechanism natively, allowing you to send and receive custom OOB instructions easily (e.g. from a custom GUI)
    • The second component is evennia_gui.js which is the front-end of the client. This, together with the webclient.html and webclient.css files, implements the "telnet-like" default client. The idea is that his could be easily swapped out if someone wants to use another gui library for the front end.
    • The Webclient is a lot more stable and standards-compliant than before, and now also supports xterm256 colors like the other protocols.
  • The evennia/web/ layout has been completely reworked so that there are now two easily understandable website/ and webclient/ folders rather than having all files spread around in the root of that folder. The "prosimii" template is still used but is now renamed to "website" (credit remains) to make it more obvious to remember and overload.
  • Added the ability to overload the default command parent, for making sweeping changes to commands
  • Updated the ChannelHandler:
    • Added the ability to customize the Channel command.
    • Also added an automatic log (to a log file) of all channels, along with a /history switch to the channel that allows for viewing past channel posts.
  • Only the nested inlinefuncs on the form $func() are now available. The already deprecated {func ... {/func style inline funcs have been removed.
  • The @options command now allows a player to manually set a wide range of options related to their connection. This helps for cases when Evennia cannot accurately identify your client, or you want to use some other setting than is default for that client.
  • The EvMenu can now also be set to be persistent across server reboots.
    • The menu_login contrib now uses EvMenu.
  • Added evennia --initsettings for adding a new, empty settings file to a game directory. This is useful when sharing game dirs between multiple developers.
  • A lot of other bug fixes and small improvements all over.

Thanks to everyone who contributed to the work with the devel-branch and to those who switched to use it to report bugs and help make things more stable.


The documentation is not updated yet, this will gradually happen over the coming days. If you have any problems, report them to the issue tracker as usual.

Cheers,
.
Griatch

Shan Hollen

unread,
May 22, 2016, 4:38:37 PM5/22/16
to eve...@googlegroups.com
Fantastic stuff, Griatch and everyone!

On May 22, 2016, at 4:28 PM, Griatch Art <gri...@gmail.com> wrote:

As for today, the devel branch ("wclient") has merged, which means we upped the Evennia version to 0.6. Yay!

Installation
  1. Stop your running server with evennia stop
  2. cd to your evennia/ folder.
  3. git pull
  4. profit

For you with an existing game 


If you have an existing game directory (previously created with --init) you'll find Evennia will not start anymore. This is because there are some changes in the settings and file names that are incompatible to verion 0.5. If you don't have anything critical in your game yet, easiest is to just --init a new game dir and copy over any files or changes you have done. Alternatively you need to do the following changes (below I assume your game dir is called mygame):


  1. Edit mygame/server/conf/settings.py. Unless you changed anything specifically (like the database), you can remove almost everything except for the initial import of the defaults, SERVERNAME and SECRET_KEY. Here you can see how the default file looks: the settings.py. It's pretty empty by default now. Notably there is no longer a need to specify the GAME_DIR and all those boilerplate django folders.
  2. Remove mygame/server/conf/inlinefunc.py and copy evennia/game_template/server/conf/inlinefuncs.py in its stead (note the extra "s"). If you created your own inlinefuncs, you may need to convert them since only nested-inlinefuncs (on the form $func()) are available now.
  3. Copy mygame/server/conf/inputfuncs.py to your mygame/server/conf/ directory. Inputfuncs are a new feature of Evennia 0.6.


That should be enough - you should now be able to start the server normally from this point. If you face any edge cases due to local changes or a more populated database let us know.


If you followed the "wclient" development branch already


In this case you will already have the needed game dir changes. Switching to the master branch and pulling the latest should be enough for you. The upstream wclient branch will eventually be deleted and not updated anymore.



Overview of changes

 

  • msg() has a different callsign: msg(text=None, **kwargs). All data being sent out is now considered an OOB (Out of band) instruction, including the default text (even though some protocols like telnet send it in a special way, it's still handled as an OOB instruction). These are given as keyword arguments to the msg method and can be called either with a string or with a list of arguments or a tuple (args, kwargs) to be passed on to the protocol.
    • msg() has one special keyword and that is options. This is a dictionary of options that will only affect the protocol sending. This is where you pass that you don't want to parse ansi colors etc. So where you before would write msg(string, raw=True), you now need to do msg(string, options={"raw":True}). The prompt is a separate OOB command, so you use msg(prompt=prompttext) as before.
  • Inputfuncs - these are cusomizable functions you can now easily supply to manage any incoming command from the client. The default input is the text command, for which Evennia has a default handler (which launches the cmdhandler), but you could add support for any client-side instruction this way.
    • OOB instructions for GMCP and MSDP have been included, as well as for Evennia's JSON-based webclient instructions. These are just functions in a file that Evennia reads at runtime.
    • Handles mudlet's GMCP handshake (which is not standard except for IRE games)
    • Added default commands for MSDP and bridges to GMCP.
    • Protocol input/output signatures have changed a little. This is mainly of interest if you want to implement your own protocol though.
  • The MonitorHandler in evennia/scripts/monitorhandler is a convenient mechanism for monitoring property- or Attribute-changes on any object. You assign a callback to the change which will trigger when anything changes. This is very useful to use with OOB instructions (like reacting and updating a health bar whenever the health attribute changes, for example).
  • The TickerHandler has seen a lot of updates to make it more generally useful. You can now assign any function to it, to be ticked, not only methods on objects. This means that the callsign has changed quite a bit and users of the old TickerHandler will need to look into reworking their calls.
  • The OOBHandler is no more. All the functionality of the old OOBHandler is now handled between the MonitorHandler and the revamped TickerHandler.
  • Added settings.IN_GAME_ERRORS. This is False by default. When active, it will echo Python errors not only to the log but also show the traceback in-game. This is useful for debugging but not good for a production game (where the user instead can report the log time stamp).
  • The webclient has been completely reworked.
    • It now consists of the evennia.js javascript library that handles all communication with the server. It also falls back to AJAX/comet and has a much improved handling of timeouts and various errors. This is meant to be used by whatever gui library is used.
    • It handles the new OOB mechanism natively, allowing you to send and receive custom OOB instructions easily (e.g. from a custom GUI)
    • The second component is evennia_gui.js which is the front-end of the client. This, together with the webclient.html and webclient.css files, implements the "telnet-like" default client. The idea is that his could be easily swapped out if someone wants to use another gui library for the front end.
    • The Webclient is a lot more stable, and now also supports xterm256 colors like the other protocols.
  • The evennia/web/ layout has been completely reworked so that there are now two easily understandable website/ and webclient/ folders rather than having all files spread around in the root of that folder. The "prosimii" template is still used but is now renamed to "website" (credit remains) to make it more obvious to remember and overload.
  • Added the ability to overload the default command parent, for making sweeping changes to commands
  • Updated the ChannelHandler:
    • Added the ability to customize the Channel command.
    • Also added an automatic log (to a log file) of all channels, along with a /history switch to the channel that allows for viewing past channel posts.
  • Only the nested inlinefuncs on the form $func() are now available. The already deprecated {func ... {/func style inline funcs have been removed.
  • The @options command now allows a player to manually set a wide range of options related to their connection. This helps for cases when Evennia cannot accurately identify your client, or you want to use some other setting than is default for that client.
  • The EvMenu can now also be set to be persistent across server reboots.
    • The menu_login contrib now uses EvMenu.
  • Added evennia --initsettings for adding a new, empty settings file to a game directory. This is useful when sharing game dirs between multiple developers.
  • A lot of other bug fixes and small fixes.

Thanks to everyone who contributed to the work with the devel-branch and to those who switched to use it to report bugs and help make things more stable.


The documentation is not updated yet, this will gradually happen over the coming days. If you have any problems, report them to the issue tracker as usual.

Cheers,
.
Griatch

--
You received this message because you are subscribed to the Google Groups "Evennia" group.
To unsubscribe from this group and stop receiving emails from it, send an email to evennia+u...@googlegroups.com.
To post to this group, send email to eve...@googlegroups.com.
Visit this group at https://groups.google.com/group/evennia.
To view this discussion on the web visit https://groups.google.com/d/msgid/evennia/22d19bdc-8f29-41b0-990e-08528987d411%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Greg Taylor

unread,
May 22, 2016, 8:40:30 PM5/22/16
to Evennia
Congratulations, Griatch and the community at-large!


On Sunday, May 22, 2016 at 1:28:59 PM UTC-7, Griatch Art wrote:
As for today, the devel branch ("wclient") has merged, which means we upped the Evennia version to 0.6. Yay!

Installation
  1. Stop your running server with evennia stop
  2. cd to your evennia/ folder.
  3. git pull
  4. profit


For you with an existing game 


If you have an existing game directory (previously created with --init) you'll find Evennia will not start anymore. This is because there are some changes in the settings and file names that are incompatible to verion 0.5. If you don't have anything critical in your game yet, easiest is to just --init a new game dir and copy over any files or changes you have done. Alternatively you need to do the following changes (below I assume your game dir is called mygame):


  1. Edit mygame/server/conf/settings.py. Unless you changed anything specifically (like the database), you can remove almost everything except for the initial import of the defaults, SERVERNAME and SECRET_KEY. Here you can see how the default file looks (except your file will have values for the server name and secret key): the template settings.py. It's pretty empty by default now. Notably there is no longer a need to specify the GAME_DIR and all those boilerplate django folders.
  1. Remove mygame/server/conf/inlinefunc.py and copy evennia/game_template/server/conf/inlinefuncs.py in its stead (note the extra "s"). If you created your own inlinefuncs, you may need to convert them since only nested-inlinefuncs (on the form $func()) are available now.
  2. Copy mygame/server/conf/inputfuncs.py to your mygame/server/conf/ directory. Inputfuncs are a new feature of Evennia 0.6.


    That should be enough - you should now be able to start the server normally from this point. If you face any edge cases due to local changes or a more populated database let us know.



    If you followed the "wclient" development branch already


    In this case you will already have the needed game dir changes. Switching to the master branch and pulling the latest should be enough for you. The upstream wclient branch will eventually be deleted and will not update anymore.

    Brian Durney

    unread,
    May 25, 2016, 2:20:38 AM5/25/16
    to Evennia
    3. Copy mygame/server/conf/inputfuncs.py to your mygame/server/conf/ directory. Inputfuncs are a new feature of Evennia 0.6. 



    I think Step 3 has a typo and should refer to the game_template directory like the previous step does.

    Griatch Art

    unread,
    May 26, 2016, 2:01:03 AM5/26/16
    to Evennia
    @Brian

    Oh, that's right! Fixed it in the post, thanks!
    .
    Griatch
    Reply all
    Reply to author
    Forward
    0 new messages