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

      @Glitch

      Ah. If I understand you right, this is not really a correct assumption. Evennia's command structure is a completely class-based thing. Commands are generally identified by strings yes, since text is generally what is coming in from the player, but Commands are very much Python object instances and are manipulated and handled as such - you group and organize Commands using class containers and you can even move Command instances around and apply them to different objects using Python constructs.

      Evennia's OOB operations use OOBCommands internally. When sent over telnet these instructions are delivered through telnet subnegotiation - these are byte "strings" because of how of the OOB protocols are defined, but once the telnet protocol has decoded it, what goes into Evennia are Python structures and the OOBhandler deals with command calls to Python functions (OOBCommands).

      The in-built webclient does currently use an "OOB" prefix in order to instruct the server that what comes next is not normal player input but an OOB JSON command structure. We will be changing this internal protocol soonish to use JSON all the way as well as make the webclient a little more code-pretty than it is. This doesn't change what goes on under the hood though.

      We obviously need to parse strings coming into the game but at no point are we using strings as some sort of internal main information carriers.

      You even send OOB commands directly with the main msg() method from commands - the normal form is something like caller.msg("Hello world"), but you can also do caller.msg(oob=<oob command instruction>) to send an OOB command to the client of caller.

      Does that address the question or did I misunderstood what you meant?
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Searching?

      Ah, I'm not alone! I was also confused why searching for an unusual word seems to produce so many spurious matches. For example, searching for "evennia" (completely random example) yields more than 50 matches, but only the first three are matches that actually contains the word - the rest ... I have no idea why they are relevant. I can only conclude it's because they contain "ev" or "eve" in some of their words. Which is not really all that useful when searching. Google search with a site: marker seems to be more reliable.
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • RE: Evennia - a Python-Based Mu* Server

      @Glitch said

      Personally, I think Evennia goes too far as it is in supporting a MU* like experience.

      This is an interesting viewpoint. Always interesting with feedback! Would you mind expanding some more on what you are referring to?
      .
      Griatch

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

      @Thenomain said:

      You have been talking High Technology, but I don't think you have been much on the path of "just learn Python, duh".

      Good, I'm glad to hear that.

      A multidescer in Mushland implies three things. One is a series of commands to store text by category and name (top.manshirt) locally to the current login object (character). The second is to intelligently display these options in legible, pretty output, again for that object's instance. The third is to apply any combination of same to @desc, with the same expectation that the command's enactor and the target are the identical.

      Finally, all this without needing to ask permission from the person who controls the main code repository. It's your character object's code, with all the limitations and accesses that are reasonable for it to have.

      I don't include all the functionality you mention in my (long, long) post above, but I explain how the subset of @desc functionality @Derp mentioned could be added by the developer for the benefit of the creative player also without softcode. All of the three things you list can be made player-interactive without admin input. I'm aware this solution is not softcode, nor attempting to offer as much flexibility as softcode. My point is just that for many (if certainly not all) common player conveniences, softcode might not be the only solution.
      .
      Griatch

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

      @Derp

      I hear you on the softcode's abilities. The boring answer is "Yes, you can totally implement softcode in Evennia without modifying Evennia itself. And no, it's not there out of the box". Bear with me though, I'll try to further explain this stance from the Evennia perspective.

      Firstly, let's separate between developers and players. Whereas this distinction is fuzzier in MUSH softcode than in other game styles, I'm willing to bet there are still people who are actually trusted to modify the core of the game experience for everyone and others that are not. For this analogy let those be the developers and the players respectively. In both cases I think we can assume that developers are the ones expected to learn the tools the best, are accountable for keeping coding standards and generally maintaining the game's best practices. Only developers can make "cheating" stuff that affects others than themselves (so if you are offering totally free online coding like lambdaMoo this analogy fails).

      Let's start with the multidescer since it's a concise example. From the perspective of the player, you have described this as a command that you use to add one or more descriptions, also with the possibility to swap one's active desc later. The player also expects to be able to modify the call signature of this function and even how its arguments are input.

      Now, in Evennia, the functionality of the multidescer is the work of the developer. Coding it in Python is simple: without going into the technical lingo, it's a matter for the developer to just add multiple description storage slots on the character - these are automatically persistent and can be searched, organized and modified very efficiently. The default @desc command would maybe be expanded to look something like this: @desc/store name_of_description = description. It may even accept an optional list of inputs if you wanted that. Internally, this would just be added to the storage and could easily be retrieved later by whatever syntax you want in order to actually update the desc property on the Character.

      So how about the players' ability to modify their experience of this functionality? Evennia has a "nickname" system (controlled in-game by @nick by default). This replaces the input dynamically. So you could this way change the @desc to be called as +desc or +d or whatever you prefer. This is out of the box. Changing the argument list is more complex; for this the developer need to supply something like an @aliascommand command, something that maps the players's input to the real command:

      @aliascommand "@desc #1 = #2" = "@desc #1 & #2"

      This (rather trivial example) would henceforth allow the player to use +desc name & description to call @desc. There is no @aliascommand in Evennia out of the box, but it would be a simple enough thing to add for the developer deciding their players expected such customization.

      Now, this is not softcode. It does not offer the same flexibility as softcode. But it does offer the player the ability to change how they call their commands, changing their experience of the core functionality as defined by @desc. Could the player, say, add an echo to the room every time they update their desc? No, not without the underlying Python implementation changing. Could the developer (knowing their audience) predict this need and offer any number of callback slots for people to change and customize? Certainly - they could even parent all (player-access) commands in their game to such configuration functionality if so desired.

      Now for the tarot deck. What the developer would make available here would not be a Tarot deck. It would instead be a generic "card deck" object that players could spawn and customize into a "Tarot deck" on their own: the general functionality and properties of a card deck is after all straight forward and generic. Could the developer add slots for different echoes happening when drawing specific cards? Certainly. Could the player make the drawing of a card cause in-game effects beyond an echo, like putting the room on fire or cursing someone? No, and most likely making an object with a real game-effect like that would be susceptible to cheating; it is probably not be something a player should have the right to create - it would still need a developer's (or at least staff's) input/approval on , also in a MUSH.

      As you know, contrary to MUSH, Evennia requires this game effect to be done externally, in Python. Here Evennia says: Let the player, if they want to contribute, temporarily be their own developer. Using any external code tools they want they can make their modified tarot deck and offer it up to the developer using proper code sharing tools (no server access required, heck they could just post the source code directly if they didn't want to use version control). The developer can then review this, including giving online feedback etc and accept the modified tarot deck into the code base where it can now be used.

      I would argue (and this is of course where opinions differ) that for the average player to extend a tarot deck beyond the customization that a developer can think of to offer, they will need to learn some more intricate programming regardless of whether it's softcode or Python.

      In general I don't think a MUSH developer has any real practical reasons to dislike using external code tools, version control and code sharing resources. For them, using Evennia would mainly be a matter of learning a different workflow - a chore for sure, but one that may be considered worthwhile for Python alone (so far I've not seen any arguments in this thread that softcode as a language is a superior one).

      The easy code-contribution of those more advanced players (the ones who want to make world-affecting tarot decs) is a separate, but most real concern. While Python is very easy to learn, it's a fair point that old-time players of a MUSH are more likely to know softcode than the average populace. Needing external tools (and Python which is not seen in-game) for contributing is undoubtedly a higher hurdle for them. How common those more advanced players actually are in your particular game is really what should influence the weight of this argument: As evident from the comments of various MUSHers in this thread, the assigned importance of input from this type of player varies quite a bit. But to repeat - it's a real concern that may indeed make Evennia's paradigm unsuitable for you out of the box.

      To sum up (tl;dr?): Will there be things that a player can think of to do in softcode that they can't do out-of-the-box in Evennia? Yes, most certainly, at least not without implementing a softcode-equivalent running on top of Python. How important this difference is depends on the forethought of developers and just how much softcode freedom your game's average player actually uses in practice.

      ... Conversely, will there be things a developer can do in softcode that they can't do with Python? No. My impression is that most things are instead a lot easier, which is one of the main drives for MU*ers trying out Evennia in the first place.
      .
      Griatch

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

      @Derp said:

      multidescer

      Now you are talking over my head ;). Could you elaborate on what a multidescer is and how it should work? I could then take a stab at explaining how it would be implemented from the Evennia perspective of things. 🙂
      .
      Griatch

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

      @Tyche

      [MUSH softcode design] is analogous to presenting the Evennia user with the Python shell on login.

      Yes, this is a good analogy. Well, expect that the reverse MUSH-equivalence to giving access to the Python shell is to let the MUSH user toy freely with the C hardcode in-game (if such a thing was possible).
      .
      Griatch

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

      @acharles said:

      For example, I spent a few hours setting up an Evennia server (most of the time was reading lots of excellent docs, thanks @Griatch). I then had a friend connect and I gave them Builder permissions. She then proceeded to build rooms with exits using the default builder commands that look a lot like MUX style commands. And all of this without either of us having to write any python code at all.

      If what you want is to be able to have a game where people can build and describe rooms and objects, then Evennia out of the box is sufficient. The only thing that requires python is customizing objects with 'logic' that isn't already defined out of the box.

      Yes, I hope people were not confused about this - Evennia offers online building just fine. You don't need something like softcode for stuff like building rooms and describing them, setting configuration options or customizing your output. The "softcode" we refer to (in this context) is for more complex stuff.

      @Thenomain said:

      Counter-interesting: I find it interesting that the communication to the people who think it can't do it (really: want to make sure it can) has been addressed in one post that talks technology above their head, and a second post that starts "I find it interesting" and implying that these people be the ones to prove the absence of something.

      I don't think it's up to the Evennia devs to hand-hold people through new concepts, but I do think we could to better than this.

      I presume I'm the one writing posts that "talks technology above their head". I'm sorry if that's the impression but when people are commenting on a particular aspect of Evennia design (such as my first post was replying to the length of Evennia command code), it sort of makes sense that I reply explaining that design from a technical standpoint.

      Someone could answer with, "It can already do that. Look here: <link>", and render the complaints moot and turn it back into a discussion. That person is not yet me.

      I might be mis-remembering but I have not seen any such complaints beyond "I want softcode on the command line". As I've already said, we don't offer softcode like this out of the box, instead recommending advanced build-commands for building and Python for back-end development. I even suggested (without technical jargon) how player-agency could be implement as "template" object they can customize safely. You could implement softcode in Python. Not sure what else I can say on this to appease you, but I'm open to further suggestions on what information is useful.

      Edit: Maybe we can convince @Volund to post some of his MUSH softcode next to his equivalent Evennia code, for those interested.
      .
      Griatch

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

      @il-volpe
      This would likely require the explicit collaboration of the MU* server really, together with either a custom web client or a telnet client using an out-of-band protocol like MSDP or GMCP. It's usually done not by identifying available commands but to "skin" the client to a specific game (see Mudlet for an example of such functionality).

      @Derp
      In principle you could in a web client (or custom client skin) imagine pressing the "get" button and get a pop-up menu of things you could get in the current room. For other commands you could picture the player stepping through a series of dynamically generated pop-up menus (where each choice informs what menu/list appears next) in order to build up the command's arguments. At least if you are not dealing with global objects but only stuff in the same room, it might be quite doable. I'm not sure it would be a better way to handle commands, mind you - or that it's something I would ever do, but it's one way it could work. For having newbies learn/explore commands though, it might be more approachable I guess.
      .
      Griatch

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

      @Thenomain said:

      [10/12/15, 3:17:02 PM] Thenomain: There is no “log in and add things”. It’s all “get the game owner to add things”.
      [10/12/15, 3:17:46 PM] Thenomain: Advantage: Make complex changes like “a stat system” super easy.
      [10/12/15, 3:17:48 PM] Coin: Right.
      [10/12/15, 3:18:04 PM] Thenomain: Disadvantage: Make simple things like “a dog that barks when someone walks into the room” super hard.

      Belatedly (somehow I missed this post in the general flow earlier, sorry): Also without softcode you could as a developer relatively easily prepare "a generic object that has slots which users can fill with custom content": Like an object that a user can name ("dog") and which has a property string_to_use_when_char_enters (should probably have a better name ;)) - this string you could as a coder parse for template markers so you can include the name of the character entering and so on. You could allow a list of room names for the object to move between, and how often. It could accept a list of strings to be randomly echoed or be allowed selectors as to who it should interact with in a particular way ... and so on.

      Not as flexible as full softcode, surely. But from the perspective of the end user ... you could extend the functionality of a "template" object to allow a player quite a substantial level of creatitivity with such simple means.
      .
      Griatch

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

      @Tirit said:

      @Griatch
      Yes. But if you have a for example -- typeclasses/character.py in your development folder on a development box, and you go to pull from a repo that same folder, it won't it because it sees the issue as a version control issue, and wants to know if you need to stash, merge, etc. So they delete the folders, all of them, not realizing that they need to keep server/, because that's not on the repo, because that more game specific. Now they're confused on why the game does start.

      For those not familiar with a git or version control set up, this can get confusing. For those who are familiar with it, they just know to delete the specific folders that are on the repo and nothing more. Then do the pull and it will give you the repo version.

      Again, nothing wrong with the way Evennia has done it, just been a snag for developers who don't know git.

      I think what is confusing me is why your devs have their own copies of the game folder at all. Only you need to run --init. They should never need to run --init of their own, they just clone your pre-initialized game folder so that you can all collaborate on it. There is then never a problem with file collisions.
      .
      Griatch

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

      @Thenomain said:

      The irony may be more of an inside joke, since the tired dead-horse-beating here about MUSHlikes is that they are using an ancient, out-dated transport mode.

      As a long-time sufferer of this complaint (I have no problem with telnet; it is what it is and is used for a shit-ton of stuff still), it tickled me. In that context, it's ironic.

      Telnet is a necessary evil if wanting to not alienate the existing MU* communities and third-party clients. Telnet is easy to code for but hardly ideal with its plain-text sent passwords (I could not launch a telnet server at work for example, for security policy reasons). Also, and I don't know how much this is a factor in MUSH, but at least on the MUD side there are a ton of extension subnegotiation protocols that has been added to the Telnet protocol over the last 20+ years. They tend to be poorly documented (since there is no central standard) and various clients support subsets slightly differently or straight-out wrong. This is not making it easy for a server developer.

      Websockets with JSON is certainly a lot more straightforward - then you control both the client and the connection protocol. Of course, a third-party client tend to offer a lot more generic functionality than a webclient.
      .
      Griatch

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

      @Tirit

      But ... isn't the goal that you all work on the same game folder?
      .
      Griatch

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

      @Thenomain said:

      Well, @Griatch, we are Mushers. I tried to explain that what you're reading is coming from a Musher perspective. I'm not sure what there is to understand; if the server's code structure allows for in-game coding in a safe manner, then there's nothing to worry about If not, then we're a bunch of Mushers being asked why we don't Mud.

      Okay, not quite that hyperbolic, but hopefully that gets some more of the point across.

      From talking to plenty of both MUD and MUSH, MUX, MUCK and MOO users in our support community, my impression is that whereas there are some expectations and must-haves that vary from community to community (Evennia supports a range of multi-character simultaneous puppeting modes just because of requests from MUSHers, something MUD users are are "meh" about, for example), the MUSH/MUD boundary is actually pretty fuzzy if one ignores the hardcode on which they run. The building features that @ThatGuyThere describes as vital to his gaming enjoyment are basically identical to what is available in a more developed RP MUD. That said, yes - softcode access for normal players is another unique feature, for those games that offer it (softcode for developers is otherwise also available in LPmuds for example).

      Idle Thought: I am amused by the irony of using IRC as the live communication stream for building a better game-building engine out of modern components.

      It's not ironic - we actually do both: Evennia's in-game channels can be linked to external IRC channels. So Evennia developers chat and interact with the Evennia IRC support channel directly from within their development servers while they are coding.
      .
      Griatch

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

      @Tirit said:

      Although I must say, that it would be interesting to an evennia --init option that allows for the folders to be setup with all the basics, but lack the typeclasses or commands. So it would be something that people can pull and git --init to directly without having to delete the files Evennia puts in.

      Could you clarify what usage you are looking for with such an --init option?
      The typeclasses and commands that are included are the basis of the default install - the things Evennia requires to run. The templates are completely empty as they are, ready to be filled with your own stuff, there is nothing superfluous there except maybe the README file. If you are looking to share (via git) an already created game folder you would not use --init at all, but just clone that folder and run off it directly.
      .
      Griatch

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

      @ThatGuyThere said:

      For what I gather Evennia makes big things easy to do but at the cost of the small fun bits. All I can say is best of luck but I probably won't be adapting to Evennia games until all the old mush style games are gone.

      You are entitled to your opinion and I don't expect anyone to abandon what they love. But I must admit I don't quite understand this particular argument. It suggests that somehow all Evennia games will always be the same, as if it was fixed to a particular game style or feature set ...
      .
      Griatch

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

      @ThatGuyThere said:

      Alright quick example from my experience. I made a char who as a job worked in a comic store, there was no comic store on grid. No biggie I did not think I would rp being at work much. RP happens my char mentions said job people want to pop in a visit him at work scenes take place there so I decide to build it.
      I co to the build nexus and dig the rooms make the exits get is all connected together, get the success and fail messages set and then put in a request to have it linked to the grid. A couple days later after build staff looks though it to make sure I did not mess anything up it gets put on grid and rp in it continues.
      Or another example on a different game, in cgen spend point on having a free hold, this gets approved so before hitting grid. There the process was a bit longer. I put in a request to build it gets approved I do the building of the project in this case three rooms, grounds, house, freehold, I add the the request I am done then it gets looked over and linked to grid.
      So basically the ability to @dig and create exits etc. not so much abotu altering a room there but taking an idea for a place and turning it into a room.
      Also on MUSHes the billboards, mail system, and channels for the most part are soft-coded as well.

      As others have already mentioned, these are not really things you need the full power of a softcode language for. As far as Evennia is concerned, it can easily be expanded with very sophisticated build commands. So you could certainly have all those things available. Things like billboards, mails and channels are things that can just as well be coded externally.
      .
      Griatch

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

      @Tirit said:

      I have to say that setting up the git has, and continues to be, one of the more difficult issues when I've tried to recruit developers. So much so, that the way I've thought about doing the development has changed. Initially I was just depending on developers to set up their own test server, until Deep Shadows opened to the public, but now during even the initial development status, I'm starting to look at setting up a development server and giving developers direct access to it so they can do what they need. Creates a simple version control yes, but much more demanding on the owner side to set that up,

      This is an interesting anecdote! Was the issue related to devs not knowing how to install Evennia itself or was there some other problems? Did you try with a free private repo on something like bitbucket as a way to share code?
      .
      Griatch

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

      @ThatGuyThere said:

      Exactly I that is why I said I was code base agnostic,. I have no love for mush code, but things like building my characters place of business, if it the type of place that would see rp frequently or his lair, or even being able to set my own aconnect so it pulls up the info I want right way on connection are important to me. I am willing to learn new commands to do them but not willing to give them up.
      I know there are some people that are the same with multi-descers because they love having a ton of outfits.

      Customizing your game objects with your own descs, rooms in your shop or configuring your account is not really "softcode"-related as far as I understand softcode. If this is the kind of functionality that is needed, Evennia can most likely offer it quite easily. I might be confused just what level of "building" you are referring to. Could you give more specific examples of building you as a player expect to see?

      Edit: I realize softcode is technically used for almost everything in MUSH world, but I think it's a difference between what is basically advanced building commands and actually making in-game "code flow".
      .
      Griatch

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

      @ThatGuyThere said:

      Fair enough and part of the reason I bring up questions is to spur that thought by developers. In the MUSH community there is less of a divide between players and developers, we are all pretty one big soup. so when I mention things that might need to be added I do it at least partially because people reading this boards will be the ones making the games I play. Heck Theno has coded on or supplied code for at least 4 games i have played in the past and likely more. That is why I insert player concerns into these threads.

      My second concern is compatibility with the clients currently in use but that is likely a whole different kettle of fish.

      The shared coding aspect tradition of MUSHes is a very fair point. Evennia is not designed (at least not out of the box) for doing such shared coding in-game. Rather it is built for people contributing using professional external code-sharing tools and version control systems. For more advanced game systems, I would propose this is a world-proven, well-developed and highly efficient way to collaborate on code. No server access is necessary to contribute this way, but there is no way around that it is different and a touch more involved than in-game softcode coding.

      @Tirit
      This seems to echo the experience of other MU* coders involved in the Evennia community.
      As pointed out by @thenomain, @glitch and @ThatGuyThere though, the issue is not really softcode vs Python (as I understand it) but who may code the game and when it can be done. And here Evennia does default to work differently from traditional MUSH.
      .
      Griatch

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