MU Soapbox

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Muxify
    • Mustard
    1. Home
    2. Tyche
    3. Posts
    • Profile
    • Following 0
    • Followers 2
    • Topics 5
    • Posts 396
    • Best 113
    • Controversial 14
    • Groups 3

    Posts made by Tyche

    • RE: Do you Tabletop?

      @tragedyjones said:

      I have often said that I approach MUSHing from a tabletop background. But I know that some people, perhaps even a majority of us, don't have access to or never have tabletopped, or don't anymore.

      So a quick survey, my answers to follow.

      Do/did you play in a tabletop game now or in the past?

      We play almost every week.

      What games(s) do/did you play as tabletop?

      I'll list what we played the most by decade.
      70's - D&D, AD&D 1st edition
      80's - AD&D 2nd edition, Traveller, Rolemaster, Vampire, Werewolf
      90's - Rolemaster, Warhammer FRP, T&T
      00's - RuneQuest(BRP), Gurps, Fallout
      10's - Savage Worlds, AD&D 5th edition, Serenity RPG, Mutant

      There's quite a number of games that we only played once or twice.

      Are/were you the GM/ST/DM at your tabletop?

      I only GM maybe 4 times a year. We have 4 people who like to GM.
      We usually have from 5-9 people playing.

      None of the people I game with will play mu*s.

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

      @Thenomain said:

      For people reading this thread who are more softcoders, a situation that came up in the Evennia IRC channel:

      In order to embed functions, you currently need to type {function( args ). Since my text editor wants to close all brackets, braces, parens, and so forth I suggested another character. They were already thinking about |function( args ), which while I think is better I don't think is very legible. For example:

      This is a test|testfunc( me )...

      I suggested fully enclosing for functions. The above might be:

      This is a test|testfunc( me )|...

      Someone mentioned brackets [], and as a Mush coder, this hit a happy spot. The above would end up:

      This is test[testfunc( me )]...


      However!

      Evennia's lead designer wants a single token to mean all inline substitutions, both ANSI and functions. ANSI color codes would use the same inline token. For example: {r for red, {B for blue background, and so forth.

      Why is this a problem? Because ANSI color codes would become harder to type if brackets [] were used. I mean, imagine typing this:

      [r][h][B]This is really ugly text.[n]

      Eugh, no. This would be a lot easier for everyone:

      |r|h|BThis is really ugly text.|n


      If it's really a framework, it won't be just one way. There ought to be formatters/translators and generators or some such abstract arrangement. Your formatter will take in html, bbcode, mushlike format, diku/merc format, cml, or whatever and store it in some intermediate format.
      When it comes time to process and send it to the VT100 terminal or WebClient it will generate VT100, html, MXP or whatever the client wants. When it comes to editing or setting it, it ought to show in the format the user wants to use.
      @set my formatter=mush
      or
      @set my formatter=html
      or
      @set my formatter=bbcode
      followed by
      @edit my description

      Just a thought.

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

      @WTFE said:

      You can't get away from null ... and yet entire language environments exist in which there's not a nil/null/whatever check in sight.

      None that I use regularly... except for assembly code. ColdC doesn't need to. It does have a nil object (#-1), but I've never actually used the syntax. You do have to do valid() checks on objects considering they can be user entered. But then that goes to the issue of interactive user programming being quite similar to hotloading code.

      For example in Ruby I might have a Character that initially has two stats:

      	$ irb
      	irb(main):001:0> load "./character.rb"
      	=> true
      	irb(main):002:0> bubba = Character.new "Bubba", 3, 5
      	=> #<Character:0x00000600359390 @name="Bubba", @str=3, @cha=5>
      	irb(main):003:0> bubba.score
      	Name: Bubba
      	Strength: 3
      	Charisma: 5
      	=> nil
      

      I decide to rewrite it to add a third stat:

      	irb(main):004:0> load "./character2.rb"
      	=> true
      	irb(main):005:0> boffo = Character.new "Boffo", 2, 4, 3
      	=> #<Character:0x0000060038aff8 @name="Boffo", @str=2, @cha=4, @dex=3>
      	irb(main):006:0> boffo.score
      	Name: Boffo
      	Strength: 2
      	Charisma: 4
      	Dexterity: 3
      	=> nil
      	irb(main):007:0> bubba.score
      	Name: Bubba
      	Strength: 3
      	Charisma: 5
      	Dexterity:
      	=> nil
      

      The issue is that @dex doesn't exist on Bubba in memory (or for that matter in any data store).
      So the field has no value or nil.
      So you have to fix that issue with a handler that does it automatically.
      For example, to fix all Characters in memory by setting a default:

      	irb(main):008:0> ObjectSpace.each_object(Character) {|x|
      	irb(main):009:1*   if !x.instance_variable_get(:@dex)
      	irb(main):010:2>     x.instance_variable_set(:@dex,3)
      	irb(main):011:2>   end
      	irb(main):012:1> }
      	=> 2
      

      And of course you'd have to update whatever data storage schema you're using.

      In an interactive programming environment like ColdC the above is like:

      	@add-variable $character, dex = 3
      

      It shouldn't be much of a leap to apply the same automation to hotloading code.
      The above is just a simple example though. There are othe issues to handle like
      deleting and renaming variables, deleting methods, etc.
      You also need to correctly update the code itself.
      Using Ruby meta-programming to write your own attribute accessors and consistently use
      them in "plugins" helps a lot.

      I don't know Erlang but quoting from the Wikipedia entry:
      "Successful hot code loading is a tricky subject; Code needs to be written to make use of Erlang's facilities."
      Same is true for Ruby and Python. It's a tricky subject.

      @WTFE said:

      If you can have a value that is "nothing" that needs to be tested for before you do things, you have a null check. It may not be a physical null pointer (although I'd bet large amounts of money that most ARE such behind the scenes), but it's effectively the same thing: a bottom test. An unnecessary complication that boils down to "get X, test if X is actually there, use X". Such a manual cycle is incredibly error-prone (and is, indeed, at the core of a lot of security breaches and other related bugs).

      Languages which don't have this basically do proper abstraction behind the scenes. Prolog, for example, has no "nil" value (unless you deliberately put one in for the rare use cases in which it is necessary). Any language with proper higher-order functions (or equivalent) can also dodge the bullet in most cases. The same applies to languages like Erlang or the ML family (although sadly in the libraries people will define an equivalent instead of thinking out their abstraction; imperative thinking still infects even declarative languages a lot of the time when people get started).

      As an example of how Erlang (the language, not necessarily the library) avoids the need for nil checks, the core of a proper Erlang program is a process. A process has a mailbox. A typical process waits for a message and reacts according to it. If there is no message it waits until there is one. There's no cycle of "get message; check if message exists; do something with that message" -- unless you explicitly TELL it to work that way (with timeouts, etc.). By default there's no need for nil checks.

      Similarly pattern matching in the MLs, combined with the nice array of higher-order functions, eliminates the need for nil checks in the overwhelming majority of cases you'd find them in imperative code (to the point that I don't actually recall when I last did an explicit nil check in SML). Sure, under the covers, there's presence checks galore, but the end-user is shielded from them in 99.44% of the cases unless they're doing some very specific things.

      As for Prolog, the most common use case for nil checks in imperative languages coincides with backtracking situations in Prolog. The runtime finds the "nil" (no solution) case for you and just goes back and tries again if there's another path.

      Of course I went searching for muds that use Erlang, ML, or Prolog. 😉

      I did a search on my own project
      Searching for 'nil'
      Found 212 occurrence(s) in 60 file(s)

      I found PrologMud which is more MOOish and has some very interesting features.
      Searching for 'nil'
      Found 622 occurrence(s) in 81 file(s)

      Turns out my top use of 'nil' is in generated parser tables (Racc - Ruby Yacc). Not disimilar to Prolog's use of them in rules to indicate no solution.
      The next biggest use was in test code assertions.
      And then in parameters passed to functions. PrologMud appears to also do that also quite a bit.

      But then I looked for explicit checks in my code.
      Searching for 'nil?' or '== nil'
      Found 30 occurrence(s) in 26 file(s)
      That doesn't find them all because I also use other forms.

          x ||= 56 * y
          x && (x = y + z * 42)
      

      I'm not very likely to switch my style of programming in C, C++, Perl or Ruby.
      If anything it's a motivation to add more checks on nil or null.
      Nor am I likely to eschew a language or environment that uses them heavily or learn one
      because it doesn't. Prolog looks interesting just for its possibilities for natural language
      parsing and AI which PrologMud seems to make use of.

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

      @WTFE said:

      Ah, the eternal null check. Tony Hoare's "billion dollar mistake" made manifest.

      A properly-architected system does those null checks for you behind the scenes so you don't have to do it yourself constantly with the attendant risk of failure when (not if) you forget one.

      What is Null?
      You can't get away from null.
      nil is the Ruby singleton object that represents nothingness.

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

      @Griatch said:

      The plugins can be hot-swapped? So what happens when you replace code that is already instanced somewhere in memory, potentially with other dependencies in other objects? Can you reload those modules into memory and be sure there are no conflicts? Or are all plugins meant to be used "without memory" of previous calls, so to speak?

      In Ruby, you can unload and load classes while they are still being used. Any old object instances remain in memory. It requires some care to always write code that correctly handles possible nil instance variables.

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

      @acharles said:

      I find it interesting that this thread lacks people describing their experience with using Evennia to do exactly the things people are suggesting it can't do.

      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.

      I don't think that's the issue. Online building has been ubiquitous in mudding for twenty years. From TinyMud to MOO to LPMud and even most Dikumud derivatives. I'd be hard pressed to find one running today that didn't support online building. I'm quite sure Evennia is just as capable in that regard.

      One issue that might be troublesome is how Mush operates. Unlike MOO, LPMud, Cold, or Dikumuds (with their DGScripts or Mobprogs), which separate the command interface from the language compiler/parser, the Mush command interface IS the Mushcode interpreter. This is analogous to presenting the Evennia user with the Python shell on login. For all practical purposes every player that logs into a Mush is in an "interpreter shell". Whether they do so or not, Mushcode can be embedded into the commands they execute. This unusual design is probably why you see very few attempts at writing a Mush parser.

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

      @Derp said:

      Think of it like this:

      @dig Kitchen=Kitchen;K,Out;O

      Under your version:

      dig

      $ Name of the room you're digging?
      ...

      This reminded of ColdCore which implements both.

         Syntax: @dig <place>
                 @dig <leaving way>[|<arriving way>] to <place>
      
         Syntax: @build
      
        To use this command simply go to the place you wish to extend, and type @build. It will prompt you for all of the information to build another place connected to your current location.
      

      Of course 'dig' without the sigil might be right out, because that could be an IC command used to dig holes, graves and what not. I don't think it's that big of a deal to provide multiple interfaces.

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

      @Jaunt said:

      @Thenomain said:

      @Jaunt said:

      One of the biggest issues with older MU* Engines is their restrictive licensing.

      ... What?

      Seriously. What?

      Most older engines do not allow them to be used for the purpose of creating for-profit games. Evennia does not have that restriction.

      That's not at all accurate. This restriction appears to be limited to only DikuMuds and some LPmuds. It certainly never affected Aber, Mush, Muck, MOO, or the 50+ other mud servers released (many of them Dikumud clones).
      In fact, most of the older mud engines were created specifically for commercial use.

      posted in Adver-tis-ments
      Tyche
      Tyche
    • RE: What is a MUSH?

      But seriously...
      Clearly Mush is a server code base.
      What distinguishes it from other servers derived or inspired by TinyMud is the language used to program it online.
      So Mush is also a programming language.
      However, since you could program a Mush to implement any sort of RPG, I don't think there's much you can say about Mush game design.

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

      @Jaunt said:

      I consider all of the games on OR to be storytelling intensive RPGs that feature non-consent permanent death as a core feature.

      There's that "intensive" word again. What's it really mean?

      posted in Adver-tis-ments
      Tyche
      Tyche
    • RE: What is a MUSH?

      A Mush is a role-playing less intensive game (an RPLI).
      j/k

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

      @WTFE I don't drink wine or spirits. However, I am curious as to what sort of Chinese beers are available?

      posted in Adver-tis-ments
      Tyche
      Tyche
    • RE: Sarah Palin Interviews Trump

      That was boring. Mostly because it was a decidely friendly interview.
      Sarah is still a babe though.

      posted in Tastes Less Game'y
      Tyche
      Tyche
    • RE: Reactions to 08192015 Update

      @Lithium said:

      You can click their icon and it'll check them

      Oh my. Well I never thought to click on them. Thanks.

      posted in Suggestions & Questions
      Tyche
      Tyche
    • RE: Reactions to 08192015 Update

      Checkboxes no longer appear on the unread posts screen, so there isn't a way delete selected threads.

      posted in Suggestions & Questions
      Tyche
      Tyche
    • RE: Reactions to 08192015 Update

      It would be nice if the floating black tool tips appeared above every icon and not just some of the header items. The three vertical dot icon meaning "more" confused me as well. I'm more used to seeing three horizontal dots.

      posted in Suggestions & Questions
      Tyche
      Tyche
    • RE: RL Anger

      @WTFE There is a spare period in my post. You can spend it anywhere you like.

      posted in Tastes Less Game'y
      Tyche
      Tyche
    • RE: RL Anger

      @surreality said:

      @Tyche Interesting. And the article is a bit hilarious. The imagery the artist is using is what I'm talking about; that's very much a thing. It's heavy on the religious symbolism in ways the others aren't; this could be a case of tailoring the piece to what he expects his mark wants to see (flattery) but that doesn't mean it ain't there.

      It looks like most of them have that distinct halo around the lawyer or justice depicted. His website has many more like this. . $1200 is pretty reasonable. I'm thinking of getting one done for myself. I don't think he'd have any qualms about doing one of a fictional lawyer arguing a fictional case.

      posted in Tastes Less Game'y
      Tyche
      Tyche
    • RE: RL Anger

      @surreality said:

      @Tyche Seen that one, too. I have zero issue with that one at all; most people have imagery of their personal heroes around them in some form. I don't have to like someone's choices in that regard to be entirely cool with this and 100% supportive of them doing it. Really, all that one inspires is, 'that's a pretty neat painting, I'd be interested to see what else the artist has done' and a shrug.

      Do a google images search on 'penley paintings'. The fellow has a distinctive style.

      It's the 'Messiah at the Supreme Court' portrait he commissioned that art historians and psychologists could have a field day with, and for good reason.

      I wouldn't put too much psychological analysis into it. The source of the painting is Todd Crespi. See this NYT article. There's a nearly identical painting in the article. It's a stock painting that he fills in with the lawyers heads and attempts to market. You might say he was duped by this guy.

      posted in Tastes Less Game'y
      Tyche
      Tyche
    • RE: RL Anger

      @surreality said:

      I swear that painting never fails to inspire me to rant. My favorite college course ever was an art history class: 'Myth, Art, and Religion'. It was about tracking the evolution of religious symbolism in art, from the first cave paintings all the way up to more modern propaganda, taught by a dead ringer for Lyle Lovett who wore ties with mythological creatures on them.

      What I would not give to set that painting down in front of that man and say, 'You have all the time you need: GO. Here's a bucket in case you need it.'

      Actually this is the painting in Ted Cruz's Senate Office.
      It's also my tablet wallpaper. 🙂
      link text

      posted in Tastes Less Game'y
      Tyche
      Tyche
    • 1
    • 2
    • 16
    • 17
    • 18
    • 19
    • 20
    • 19 / 20