MU Soapbox

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Muxify
    • Mustard
    1. Home
    2. Griatch
    3. Posts
    • Profile
    • Following 0
    • Followers 1
    • Topics 23
    • Posts 375
    • Best 172
    • Controversial 0
    • Groups 2

    Posts made by Griatch

    • RE: Evennia - a Python-Based Mu* Server

      @ThatGuyThere said:

      @Griatch
      Well I might not be a member of the exalted ranks of game developers, but I am concerned with the tolls being used in the games i play. so much like when people talk about engines for video games I pay attention to what is going on because it effects me.
      Nice condescension in your post, though still does not address my question of how is the new shiny thing better if it does not offer the features we have grown used to? Cause honestly if I logged onto a game and was told building was not possible I would log back off. And if you don't want to talk to us lowly non--developers there is a whole group for code talk. Where I am guessing most of us peasants don't post.
      There are essentially two important facets of a game to me, quality or role play, which is rather independent of code, and does the code have ht tools to help facilitate that role play.

      I had no intention to be condescending, if that was how it was perceived, I apologize.

      But there is a difference between end-player experience and game-developer experience from the perspective of me as a library developer. A game coder using Evennia would (supposedly) listen to you as a player and use the tools available to them to appease you with the features you want from a game. All I'm saying is that those tools are available. But it's certainly true that it's not coming out of the box, so the developer would need to do some more work to implement them compared to picking up a standard mush code base. I have explained why we feel the developer is helped by the use of Python on the backend, but this is of course always going to be a matter of preference.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @ThatGuyThere said:

      @Griatch said:

      Our lack of more advanced builder sctipting tools like this has more to do with this being something quite game-specific (Evennia is game agnostic) along with no one having wanted it enough to add it yet: Evennia's command system should be flexible enough to handle it without any core changes.

      I think this quote right here might be a big part of the cultural issue. I have never MUDed, so don't know that culture but literally every MUSH/MUX I have every been on from the small maybe ten player total game to sprawling monsters what have over a hundred on at any point in time have had building capabilities. So it is not something that is really game specific or even genre specific, since I have played WoD, Superhero, Star Wars and Fantasy games in my time online.
      I am rather agnostic towards a new code base or interface but if the one you are suggesting takes away features that I know and use in the games right now, why as a player would I be motivated to make the switch?

      If you are not a game developer, I don't see much reason for you to be interested in a game development library, no. Evennia is a system for building multiplayer text games. If you are a developer though, you might use the tools Evennia offers to create whichever experience you want your players to have - be this MUSH-like or MUD-like or something new altogether.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Optional Realities & Project Redshift

      @HelloProject said:

      The idea that people need to pay their dues or whatever and learn to code just so they can create a MU is a ridiculous barrier to entry, and a part of why our community isn't as large as other RPing communities. Creating a simple package and throwing it out there to be used doesn't hurt anyone, so I'll make it my own pet project.

      Do consider dropping into the #evennia development IRC channel on Freenode. Would like to hear more what you had in mind. Maybe we can help each other out!
      .
      Griatch

      posted in Adver-tis-ments
      Griatch
      Griatch
    • RE: Optional Realities & Project Redshift

      @HelloProject said:

      And rather than paying for server space, you simply hosted the server on your own computer.

      I would think this is possible with any game server though - if you accept the electricity bill and has the Internet connection for it?
      .
      Griatch

      posted in Adver-tis-ments
      Griatch
      Griatch
    • RE: Optional Realities & Project Redshift

      @Jaunt I like the concept of the command-less emote with @ in it. Is this just a random example idea or something you are actually planning/have made for Redshift?
      .
      Griatch
      (who recently made a contrib emote system for Evennia but used the "emote" Command and didn't consider making it as a "no-match" system command. Cool idea!)

      posted in Adver-tis-ments
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Derp

      I'm not @Reason but at least from an Evennia technical standpoint there is nothing stopping you from offering in-game building tools as complex as you want, up to and including in-line flow-control tools (aka softcode).

      Our lack of more advanced builder sctipting tools like this has more to do with this being something quite game-specific (Evennia is game agnostic) along with no one having wanted it enough to add it yet: Evennia's command system should be flexible enough to handle it without any core changes.

      In-game scripting is only one aspect though. Remember, Evennia is a system for building multiplayer text games. Our policy here (right or wrong is up to you) is that for building bigger things, like combat systems, bbs:es, web integration, economic simulations, AI, rule resolution systems etc, we feel we are best served using real coding text editors/IDEs and professional workflow tools that have evolved for this purpose. We don't consider this a drawback over coding on the command line: This is a choice we've made, not a technical limitation.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Free Softcode Suite - Penn and Rhost

      I recommend people interested to use the heck out of this, Volund sure worked super hard on it and deserves every user, doing crazy stuff with softcode as he does. To me as an outsider to whom mush softcode looks like a wall of very, very long lines, he's been doing some impossibly complex stuff.

      Volund's dedication to his Mush softcode suite is famous in Evennia IRC land, since he apparently didn't know any other programming language than softcode from before and learned Python pretty much by asking questions in our IRC support room. He also said for a long time that he would take his work to Evennia when he was finished with the latest update. Veeeerryyyy soooon. 😉 We used to silently wonder if that time would ever come, but it did - and now that he is finished with his softcode implementation, he is working his usual crazy pace on a Python version of this stuff. Kudos Volund, keep it up!
      .
      Griatch

      posted in MU Code
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @ThatOneDude said:

      Right after I posted that I found the site and got things up and running in no time on my mac... I have to say already this looks pretty badass.

      Cool, welcome to Evennia then. 🙂
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Thenomain said:

      Without even looking, I bet I could set up Roles in Evennia. But until I do, I agree with you, @Derp.

      One of our developers (a former MUX guy) is making a contrib called "Collab" (contribs are optional more game-specific stand-alone plugins you use with Evennia). His Collab contrib is specifically meant for setting up a permission system and resources to track and allow safe in-game building. It adds object ownership and specific code-level access restrictions to Evennia. He's not in this forum I think but I'm sure he'd be happy to hear questions and potential feedback on it. You can find his in-progress pull request here.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @ThatOneDude said:

      Was there a link to the code to check out that I missed

      There were no links posted in this thread I think. Evennia's main homepage is http://www.evennia.com; from there you can get to our github page, documentation and forum/mailing list and dev blog as well as see feeds of latest development.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Thenomain said:

      That is an awesome developer view, and I appreciate it, but to me, a Mu* is a toy, a toy for making tools, a toy for making toys, a toy for RP, a toy for pew pew combat mechanics, but foremost a toy. Or a structure for making toys.

      Fair enough.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Thenomain said:

      @Griatch said:

      As a side note, I should point out that "server level access" is not what it once was.

      This is an important note, yes, but I was summarizing for both expediency and to keep from making myself look like an idiot. I wouldn't have the time to review code that, e.g., makes an object follow me from room to room. I have come to trust the server itself to be trustworthy in making this something that can be performed without breaking security. Theno, install my Follow code! Theno, install these three different multidescers! Theno, one of the multidescers is not working please debug it! Theno, that bug has been in for months but people still use it even halfway broken can you take a moment to fix it for us please?

      Yeah, this happens. The most fun was when someone fixed some of our code, it ended up more broken, and she refused to fix the bugs leaving me responsible for code that I subcontracted out so that I didn't have to worry about it in the first place. I can be pretty draconian about what I allow in the Master Room (game-wide code implementations) anymore.

      @Thenomain

      To exemplify this in the standard Evennia paradigm, things like "code to make people follow me" is fundamental enough to be developed during the actual construction of your game, something part of your design specification or added as a later, formal patch.

      What you are referring to as "things you don't have time for" really describes the normal debug cycle of almost all other computer programs in the world. It's cool that softcode lets you-the-admin off the hook in the sense that you don't need to worry about contributed softcode taking over your computer. There is no denying it works. I'm not so sure this lack of central oversight is the best practice for a long-running multiplayer game you want to consistently and stably maintain though. This has nothing to do with softcode per se: it's just that code that is "safe" from the server perspective doesn't necessarily mean code that is actually working/efficient/readable/upgradable. Again, remember that I'm referring to core system code here, not creative builder stuff.

      Under a version control system, even if a buggy update slipped through the net, you could then easily look back in the file history to see where a particular line was changed and by who - and then reverse that code back to the (in your example slightly better working) previous version with equal ease.

      Btw, to show you are truly draconian you demand unit tests ... 😉

      Mind, I did promise @Chime that I would make the MUSHlike interfaces if she did what you guys are doing, so I am willing to make it happen. The question is do I have the time and drive. You know how that goes.

      I'd be interested in hearing what MUSHlike interfaces you promised and what you consider such interfaces to be! What do you mean by "if she did what you guys are doing" though - could you clarify what you refer to?
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Thenomain said:

      @Ide said:

      Given that some experienced softcoders write softcode offline and formatted anyway, the difference between mu* softcode and Evennia Python is a little fuzzy.

      It's no guarantee that the content creators of a game have access to the server for uploading their creations. To try and make my point, I focus on the "builder" level of coding: setting up rooms, locks, descriptions, more locks, day/night ambiance effects, setting up places, views, and so forth.

      A lot of the time builders are interacting with softcode and don't realize it; it's for this reason that I believe that Griatch is making the distinction between "main game development" (mostly what I do these days) and "in-game building" (and toy-making).

      But let's face it, a lot of the cool Mush tricks that we've done over the years are because we didn't need server-level access to try new things. I built a repeat-until loop using nothing more than @trigger and @if and if you don't think that's fun then you're probably sane, but I didn't need to beg for server space or access to make increasingly complex and fun toys. If I did, then I probably wouldn't've bothered.

      I'm answering these posts in a bit of a wrong order, sorry about that. 😉

      In short - yes you are correct here: If you are used to games where the normal player can do cool programming in softcode without any input from staff, then Evennia will not appease your needs, at least not out of the box: we are currently not offering safe program-flow structures on the in-game command line (Also, before anyone asks, alas you can't safely use Python itself to fill this role - this is the cost we pay for Python's awesome introspection and flexibility - it is not designed to be programmed by untrusted programmers ... which, from the perspective of the server-owner, every player is. Hence our in-game @py command can and should only be made available to superusers.).

      Our suggested solution is for the coder to provide the builder with sophisticated build commands - and with the full access to the entire Python library in the wild you can make those very powerful if you want. But that said - if people want to they could of course also build their own softcode-like mini-language in Python and offer that; our Command system could support it without any modification. So far no MUSH developer working with Evennia has expressed any such desire but maybe that's coming.

      As a side note, I should point out that "server level access" is not what it once was. Modern version control systems usually don't require code contributors to have any access to the running server whatsoever. Contributors can just push their code to the repository (which may sit on a free, private repo on say, bitbucket) and make a push request. The server owner can review this and pull down and merge (or not) as they see fit. There is no security issues here (as long as you check the code) and no reason to limit who may offer input. This workflow is definitely not as "direct" as in-game softcode and more relevant to bigger code development and staff collaborators than to a specific experimenting player though.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Bobotron said:

      Volund was on MUSH earlier today talking about converting, straight over, a Penn DB into Python. He didn't seem to be having immediate luck, but there you go.

      I believe he succeeded with that now.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Groth said:

      So looking through the Evennia documentation it seems to support most things that builders would expect out of softcode. The main thing it does not support is the ability to define commands however in my experience builders do not usually need or want to define commands.

      The bigger issue I see is that the command library looks rather sparse. For instance their example smile command looks like this

      from evennia import Command
      
      class CmdSmile(Command):
          """
          A smile command
      
          Usage: 
            smile [at] [<someone>]
            grin [at] [<someone>] 
      
          Smiles to someone in your vicinity or to the room
          in general.
      
          (This initial string (the __doc__ string)
          is also used to auto-generate the help 
          for this command)
          """ 
      
          key = "smile"
          aliases = ["smile at", "grin", "grin at"] 
          locks = "cmd:all()"
          help_category = "General"
      
          def parse(self):
              "Very trivial parser" 
              self.target = self.args.strip() 
      
          def func(self):
              "This actually does things"
              caller = self.caller
              if not self.target or self.target == "here":
                  string = "%s smiles." % caller.name
                  caller.location.msg_contents(string, exclude=caller)
                  caller.msg("You smile.")
              else:
                  target = caller.search(self.target)
                  if not target: 
                      # caller.search handles error messages
                      return
                  string = "%s smiles to you." % caller.name
                  target.msg(string)
                  string = "You smile to %s." % target.name
                  caller.msg(string)
                  string = "%s smiles to %s." % (caller.name, target.name)           
                  caller.location.msg_contents(string, exclude=[caller,target])
      

      That is not a reasonable way for such a simple function to be written. One of the few strengths of MUSHcode is that it has very powerful and easy to use parsers built in and all the relevant variables like the caller, target, arguments etc are already pre-stored into default substitutions variables.

      @Groth

      Ah, I guess I should take my first post on musoapbox (hello everybody) to comment on this technical aspect of Evennia's design. For full disclosure - I'm the Evennia lead developer.

      Evennia actually does make a minimum of "relevant" variables available in its base Command class. For example you will find self.args (the arguments to this command), self.caller (who called this command) and so on already available on the Command instance. There are some 10 dynamic variables available to the Command at runtime related to the call of it, the object it is assigned to and so on.

      The Command class is however (by default) not knowing anything about what syntax you want your commands to support - all it knows at this point is that it has figured out what command-name is being called (the first part of your input, which can have any length, including spaces, how we determine this uniquely is a technical issue I'll leave for now) - the rest of the input string is just dropped in self.args. It's now up to you to parse that.

      Now, it may sound like you need to do a lot of parsing all the time (and the smile example is just that - an example where a simple parser was introduced). But the thinking behind the Command system is that Commands are Python classes, and those can be inherited. This means that you implement the parse() method once, storing all the "relevant variables" the way you want. You could also make a little helper method to easily template your return messages to your particular preference (Python excels at string manipulation after all). All other commands that share a similar syntax can now inherit from your custom "MUSHCommand" class and not have to worry about parsing themselves - you'll have all the convenient variables available directly in func(), where you want them to do whatever your command should do.

      This is in fact how we implement our "MUX-like" default commands throughout Evennia: they all inherit from MuxCommand, which parses the incoming argument into understanding stuff like /switches, the use of = for assignment and so on. We have a second base class for some admin commands which (some of which were originally borrowed from a MUX flavor) really go all out in syntax complexity ... 😉

      Is Evennia's Python code more verbose than softcode, covering more lines for the same functionality? I've not done a comparison - my softcode skills are severely lacking I must admit - but you are probably correct in that.

      As for the default command library, there are currently about 90 commands in Evennia's default set I think. These are by no means intended to be comprehensive though; most are admin-level stuff (boring stuff all games need). We expect most commands will be modified to fit each game anyway. We could certainly offer more Commands to build from in our contrib/ folder though, this is a slowly growing resource.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • 1
    • 2
    • 15
    • 16
    • 17
    • 18
    • 19
    • 19 / 19