You can edit almost every page by Creating an account. Otherwise, see the FAQ.

Evennia

From EverybodyWiki Bios & Wiki



Evennia
File:Evennia logo.png
File:Evennia screenshot3.png
Out-of-the box Evennia setup (Linux)
Developer(s)Griatch, Evennia development community
Initial releaseNovember 20, 2006; 17 years ago (2006-11-20)
Stable release
0.5 / November 15, 2015; 8 years ago (2015-11-15)
Written inPython and Javascript
Engine
    Operating systemWindows, OS X, Linux/Unix[1]
    TypeText-based Game engine
    LicenseBSD 3-clause
    Websitewww.evennia.com

    Search Evennia on Amazon.

    Evennia is an open-source game engine for creating text-based MMORPGs similar to traditional MUD or MUSH. The engine is written completely in Python, with Javascript being used for the web game client. Evennia runs as a server, managing the game's network and database needs. Evennia also defaults to launching its own web server for the game's website. Networking and client protocol support makes use of the Twisted event-driven Python framework. Database-handling as well as web integration uses the Django web framework.

    Overview[edit]

    The basic function of Evennia is to allow a developer to create, launch and maintain a persistent, online game world, primarily represented by and interacted with using text. To do so, the developer uses Python to work with the utilities and building blocks made available via the Evennia API. These can be combined with any third-party packages from the Python ecosystem.

    Upon installation and startup, Evennia creates a fully functioning, but empty, online game. The database will start with a single "room" representing an abstract physical space in the game world. The server is distributed with about 90 default in-game commands used for administration, world-building and basic operation.[2] Evennia itself is agnostic to the game-world's genre or style. It is up to the developer to design the world and its rules, the objects within it as well as the commands that should be made available in a particular game.[3]

    Evennia is distributed with a Javascript HTML5 web client. It uses websockets to exchange JSON data with the running game server. Customizing the client involves modifying the javascript code directly. Evennia also accepts simultaneous connections from traditional Telnet third-party MUD clients.[4] Through JSON and supported telnet-based Out-of-band data protocols like GMCP or MSDP,[5] the client interface can be extended with a richer GUI, complementing textual game representation with other media such as images and music.[6]

    The Evennia project uses GitHub for source distribution. The wiki contains about 100 pages of documentation and tutorials[7] and the comment-to-code ratio of the Evennia source is estimated at 45%.[8]

    Example Usage[edit]

    A common way to build the game world is through online creation:

    > @tunnel n = Circus tent
     You created Circus tent. Exits north/south were added.
    
    > north
     Circus tent
    
    > @desc The tent is nearly empty.
     Description was set.
    
    > look
     Circus tent
      The tent is nearly empty.
    

    In this example the developer has previously logged into a running Evennia game with a privileged account. The default command @tunnel is used to create a new game-location Circus tent in the northern direction. This automatically makes the north command available. Going to the tent, the developer customizes its appearance and then looks at the results.

    More complex game development is done offline in Python modules. Evennia imports these at run-time. Below is an example of defining a new type of functional object:

    import evennia
    
    class CmdSqueeze(evennia.Command):    
        # Command for squeezing the nose
    
        key = "squeeze"
        aliases = ["squeeze nose", "honk", "honk nose"]
    
        def func(self):
            self.caller.msg("HONK!")
    
    class ClownNoseCmdSet(evennia.CmdSet):    
        # All commands must be contained in a command-set. 
           
        def at_cmdset_creation(self):        
            self.add(CmdSqueeze())
    
    class ClownNose(evennia.DefaultObject):
        # A functioning clown nose one can squeeze.
    
        def at_object_creation(self):
            # Add the command-set to the nose.
            self.cmdset.add_default(ClownNoseCmdSet)
    

    This defines a Clown nose object with a command allowing it to be "squeezed" by players in its vicinity. Because it inherits from Evennia's DefaultObject class, each new instance of ClownNose will automatically be stored in the database,[9] making it persistent across server reboots.

    The developer could now log into the game and create a nose using the default @create administrative command:

    > @create/drop Clown nose:path.to.module.ClownNose
    

    Above, the developer tells Evennia the Python path to the new ClownNose class to instantiate. One could also have created the nose outside the game, in raw Python:

    import evennia
    
    # find the Circus tent in the database
    circus_tent = evennia.search_object("Circus tent")
    
    # create the new object "Clown nose" in the "Circus tent" location
    new_nose = evennia.create_object("path.to.module.ClownNose", key="Clown nose", location=circus_tent)
    

    Either way, players in the Circus tent location will henceforth be able to manipulate the nose using default commands and also squeeze it.

    > get clown nose
     You pick up Clown nose.
    
    > squeeze nose
     HONK!
    

    History[edit]

    Evennia was originally started by Greg Taylor in 2006 as a means to build MUSH-style games with Python. Building and maintaining more complex game systems in MUSH's traditional softcode was viewed as unnecessarily difficult. The shift from MUSH's custom softcode language to using external Python modules allowed the developer to use standard third-party external development tools and version control workflows. The Evennia project soon expanded to allow for the creation of any type of text-based multiplayer game, not just MUSH.[10]

    Greg arbitrarily chose to name the project "Evennia" from a character in the Guild Wars game franchise. The project also originally doubled as a way for Greg to learn the Twisted and Django Python libraries in more detail. Development progressed in spurts until 2010, when the project was turned over to the current maintainer, Griatch, who has upheld a steady pace of development since.[11] Evennia was originally distributed under the Artistic License, but changed to use the even more lenient BSD license in 2012.

    Use in academia[edit]

    Researchers at MIT presented the article Language Understanding for Text-based Games using Deep Reinforcement Learning[12] at the 2015 Empirical Methods in Natural Language Processing conference. The researchers used game worlds created in Evennia to teach an AI deep neural network to play. The article describes using a simplified game world to train the network before testing it on Evennia's publicly available Tutorial world.[13] The computer did not receive any information about the underlying game state but had to use the textual feedback given by the game to determine its progress. The success of different algorithms were tested on accomplishing a specific task: crossing a bridge within the game world. They found that their deep-learning network solution outperformed the other algorithms in their study.[14]

    Criticisms[edit]

    One criticism leveled against Evennia is its lack of default content. Compared to many traditional MUD servers, Evennia requires the developer to build much more on their own.[citation needed] In response to such criticism, the Evennia development community ships a contrib/ folder with more game-specific code to help people get started, but it's still relatively limited.[15] Another critique is voiced from some members of the MUSH community concerning Evennia's lack of a default in-game softcode language.[16]

    References[edit]

    1. "Requirements". Evennia. Retrieved 2015-11-15.
    2. "Default commands A-Z". Evennia. Retrieved 2015-11-15.
    3. "Evennia Introduction". Evennia. Retrieved 2015-11-15.
    4. "Protocols supported". Evennia. Retrieved 2015-11-15.
    5. "OOB support". Evennia. Retrieved 2016-01-28.
    6. "Evennia graphical client example". Ricard Pillosu. Retrieved 2015-11-15.
    7. "Documentation wiki index". Evennia. Retrieved 2015-11-18.
    8. "Openhub code stats". openhub.net. Retrieved 2015-11-18.
    9. "Typeclasses". Evennia. Retrieved 2015-11-18.
    10. "Softcode overview". Evennia. Retrieved 2015-11-15.
    11. "Griatch on Evennia". podcast.__init__, a podcast about Python. Retrieved 2015-11-15.
    12. "Language Understanding for Text-based Games using Deep Reinforcement Learning" (PDF). Narasimhan et al. 2015. Retrieved 2015-11-15.
    13. "Tutorial world overview". Evennia. Retrieved 2015-11-15.
    14. "Learning language by playing games". MIT News. Retrieved 2015-11-15.
    15. "Layout of contrib folder". github.com. Retrieved 2015-11-15.
    16. "Evennia - a Python-based MU* server". MuSoapbox. Retrieved 2015-11-15.

    External links[edit]


    This article "Evennia" is from Wikipedia. The list of its authors can be seen in its historical. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.