MU Soapbox

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

    Best posts made by Griatch

    • Evennia 4.0 released

      I've not posted here in a while, but just had a new release. Evennia, the Python MU* creation system, is moving forward, now at version 4.0.0 (we follow semantic versioning).

      Release post

      Evennia 4.0.0

      March 17, 2024

      Major release. Check out for backwards-incompatible changes below.

      Version updates

      • Feature: Support Python 3.12 (Griatch). Currently supporting 3.10,3.11 and 3.12. Note that 3.10 support will be removed in a future release.
      • Feature: Update evennia[extra] scipy dependency to 1.12 to support latest Python. Note that this may change which (equivalent) path is being picked when following an xyzgrid contrib pathfinding.
        Backwards incompatible changes
      • Feature: Backwards incompatible: DefaultObject.get_numbered_name now gets object's name via .get_display_name for better compatibility with recog systems.
      • Feature: Backwards incompatible: Removed the (#dbref) display from DefaultObject.get_display_name, instead using new .get_extra_display_name_info method for getting this info. The Object's display template was extended for optionally adding this information. This makes showing extra object info to admins an explicit action and opens up get_display_name for general use.
      • Fix: (partly Backwards incompatible depending on your usage): DefaultObject.get_numbered_name used .name instead of
        .get_display_name before, which broke recog systems.

      New features

      • Feature: Add ON_DEMAND_HANDLER.set_dt(key, category, dt) and .set_stage(key, category, stage) to allow manual tweaking of task timings, for example for a spell speeding a plant's growth (Griatch)
      • Feature: Add ON_DEMAND_HANDLER.get_dt/stages(key,category, **kwargs), where the kwargs are passed into any stage-callable defined with the stages. (Griatch)
      • Feature: Add use_assertequal kwarg to the EvenniaCommandTestMixin testing class; this uses django's assertEqual over the default more lenient checker, which can be useful for testing table whitespace (Griatch)
      • Feature: New utils.group_objects_by_key_and_desc for grouping a list of objects based on the visible key and desc. Useful for inventory listings (Griatch)
      • Feature: Add DefaultObject.get_numbered_name return_string bool kwarg, for only returning singular/plural based on count instead of a tuple with both (Griatch)

      Bug and security fixes

      • Fix Removed the @reboot alias to @reset to not mislead people into thinking you can do a portal+server reboot from in-game (you cannot) (Griatch)
      • Fix: Refactor Clothing contrib's inventory command align with Evennia core's version (michaelfaith84, Griatch)
      • Fix: Limiting search by tag didn't take search-string into account (Griatch)
      • Fix: SSH connection caused a traceback in protocol (Griatch)
      • Fix: Resolve a bug when loading on-demand-handler data from database (Griatch)
      • Security: Potential O(n2) regex exploit in rpsystem regex (Griatch)
      • Security: Fix potential redirect vulnerability in character page redirect (Griatch)
      • Doc fixes (iLPdev, Griatch, CloudKeeper)
      posted in Game Development
      Griatch
      Griatch
    • RE: Getting Young Blood Into MU*'ing

      Double-posting here, sorry.

      @gryphter said in Getting Young Blood Into MU*'ing:

      I love Ares, but I don't want to forget my love of Evennia either. There's something that feels more like 'game' there, and it's pretty slick and modernized too. I've thought that Ares comes off as more of a collaborative writing tool for RP and Evennia comes off as an RP-centric game.

      You know this of course, but just to be clear Evennia (nor Ares) is not itself a 'game'. Evennia is a system for creating multiplayer text games and in this it's probably a little more general than Ares (which focuses, at least out of the box, on a specific game genre). Many use Evennia for making RP-heavy games, but quite a few also work to create more twitchy and reflex-based text games.

      Both of these approaches are awesome and valid, and both can be spawned up easily and functionally in-browser. I feel lucky to have both any time I'm forced to fire up a client program (gross, how 90s).

      Having a webclient is a requirement these days; we just need to keep spiffing it up so as to be a true contender to a stand-alone client - and then go beyond ... somehow.

      The sort of places we've applied our collective experience over years and decades evolving ideas together to build. Maybe we can do the same thing and put our heads together to come up with game settings that would work and appeal to fresh meat -- get them in the door and twitching our webs.

      I'm not sure a single killer-game is something realistic to achieve, at least not one decided on-by-committe. But I do think that breaking out of the legacy command syntaxes, making sure to always have proper tutorials and offering more quality-of-life features specifically aimed at newbs would go a long way, regardless of genre. Maybe one could make a framework for this that people could easily plug in and fill with their game-specific info. It's something I could probably add to (in my case) Evennia with relative ease, coming to think of it.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Which text editor?

      All of Evennia is coded in vim. 🙂

      posted in Tastes Less Game'y
      Griatch
      Griatch
    • Spring updates while trying to stay healthy (dev blog)

      spring-flower-and-snow.jpg

      Hi folks, I wrote a new Evennia dev blog here in these curious times to outline what's happening with this Python MU* development system as we progress towards version 1.0.
      .
      Griatch

      posted in Adver-tis-ments
      Griatch
      Griatch
    • RE: Getting Young Blood Into MU*'ing

      @faraday said in Getting Young Blood Into MU*'ing:

      @Griatch said in Getting Young Blood Into MU*'ing:

      This is an interesting point of view. Using the command line is generally an important skill to have when doing anything programming- related though.

      That's the thing, though -- running a game, ideally, shouldn't require programming. It shouldn't require you to be a server admin. I can spin up a whole website in 10 minutes with Wix or Wordpress or whatever. I can set up a Discord voice chat server or forum or Storium game with a few clicks.

      I've made Ares as easy as I can imagine given the tech requirements. You don't need to do any code to set up a game, but it still requires you to ssh onto a server and mess around with the command line occasionally. That is freaking intimidating to a large number of people, and it's an obstacle to having more games. Having (comparatively) few games, in turn, is an obstacle to having more people.

      Ares is doing a good job here! It is able to do this by committing to a highly specialized game style and genre out of the box. It's important to separate a game administrator from a game developer I think. For those that have no programming knowledge, a pre-prepared game template is definitely going to lower the point of entry considerably. For those that do have the programming knowledge or willingness to learn it, they generally hate to have to tear down the pre-made stuff since they want to build their own thing anyway (this is really a matter of audience of course).

      That said, we have wanted to have more pre-made template-games for Evennia for a long time. The Ainneve project was/is specifically aimed to that goal. Progress has unfortunately been a slow though 😕

      @gryphter said in Getting Young Blood Into MU*'ing:

      @faraday Power-upvote. There are lots of us who can't code a bit, but we might make badass games, for all the world knows, if we were just empowered to do it.

      Empowering people to create is something every engine dev wants I think. Thing is, unless you want exactly the game mechanic as someone already did that you can then just add a world to, you will at some point have to get down to programming. All we can do is try to make that step easier, but the step will have to be made eventually.

      @Apos said in Getting Young Blood Into MU*'ing:

      There is an upper bound to how many people staff can invest their time in and entertain, and if they aren't doing this then there is not much difference between MUs and less arcane RP formats. Table top writ large can only be writ so large before people are constantly forgotten and left out.

      Someone could advertise hard on all the younger demographic RP communities but there's only a point in doing that if you can support them, and take the time to help get them into the game. I mean the larger RP forums, chat room type places have tens of thousands of users and I'd guess maybe like a tenth of a percent have even ever heard of MUs, but if I threw down ads and had like, 100 people log in as guests to ask questions on how to MU, there's no way I could support that.

      It's a good point, a huge influx of newbies need to be properly handled to actually make the best of the new influx. That's where tutorials and easier entry goes a long way, limiting the amount of personal instruction is needed.
      (having too many new players is a bit of a luxury problem anyway of course).

      @Tehom said in Getting Young Blood Into MU*'ing:

      I have a few things on my wishlist for the far off future.

      I would love is to have something sort of similar to django-cookiecutter but for game templates out of the box, but even more accessible than that: some sort of wizard where someone who has absolutely no programming experience could enter a bunch of values to customize a game experience out of the box. Ideally we'd configure their settings file for them, then apply some fixture or database seed values for a game genre, and then the rest is up to them. For example, selecting 'medieval fantasy game' might add a 'contribs.fantasy_template' to INSTALLED_APPS which would more or less be what Ainneve is supposed to be, automatically adding relevant commands, etc.

      I think the biggest hurdles coming into this hobby are getting started as a game-runner and getting past the text-based interface for a player. Ares is making great strides with both areas. I think it's unfortunately very rare for most people who want to make a game to have both boundless motivation to do both heavy lifting of creative writing work and want to tinker with deployment/configuration/coding on the technical side. Anything that makes either area easier probably would increase adoption proportionally to how painless they are, imo.

      Yes, I agree something cookiecutter-like would be great to have for various genres so as to make it faster to get started with a game structure. Ainneve is a step in that direction, albeit slowly moving.

      I think there are a lot of improvements that could be done here (certainly on the part of Evennia). But I also think that there is a limit to how much a game engine can help you ('you' in the general sense, not you in particular). We are not anywhere near said limit yet, mind you. But I don't think it's realistic for people to expect to be able to run a multiplayer MMO from scratch without having any technical skills or willingness to pick up such skills. "Just" being creative is all fine and dandy if you have someone else doing the coding, but if you are setting out to make a game on your own you must be expected to actually learn the craft, IMO.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Alternative Formats to MU

      @auspice said in Alternative Formats to MU:

      Fast-forward three hours, 'Hurr. Sorry guys, I lost track of the tab because I was doing other stuff. Sorry.'

      But when it's a whole other entity, I can remember.

      I speak from experience. I've tried some of those other 'RP' experiences (Storium? Web chat 'deals,' etc) in browsers. I forget they exist very, very quickly. I can't do web based chat at all. I reload this only when I'm bored and come back to it later on. I couldn't keep up with a scene with any expected consistency.

      For example Evennia's web client will both ping you (flashing icon in the tab showing how many new messages have appeared since you last looked at the tab) and optionally pop up a notification in the corner on your desktop to tell you about new activity if you don't have the browser/tab in focus. It could even play a sound.

      Edit to add: Generally, the web browser is the future for text gaming IMO. We are not where we want to be with that on the Evennia side - our web client is still basically a crude emulation of a telnet interface and a third-party client still has a lot more possibilities and options. But that's something we hope to change.
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • Some bloggy news on the Evennia front

      A blog summary of the latest stuff happening in Evennia-land, including referencing Arx Mush.

      http://evennia.blogspot.se/2016/10/season-of-fixes.html?m=1

      (Evennia is a mu* development framework used by for example Arx)
      .
      Griatch

      posted in Adver-tis-ments
      Griatch
      Griatch
    • RE: How does a Mu* become successful?

      @Thenomain

      Was there some particular thing you wanted me to comment on?

      @thread

      There was a mention earlier in this thread on sharing the login session of the game and the website. This has been on our todo list for quite some time and now that our latest big webclient development push has merged, I'm actually just looking into this - and finding it to probably be a lot easier to do than I thought it was, so that looks like it'll happen soonish.

      To be honest we have really not spent as much time on the django-web side of things compared to other code. We have been focusing on making a good and expandable base server. But there's a lot of possibilities on the web side. Just two days after the webclient infrastructure changes merged, an industrious user made a client GUI using Construct 2 that bounced and swayed around. 🙂 Not very useful in itself, but a fun proof-of-concept! Should have saved the anim-gif they made of it.

      To stay on the topic of this thread ... From my perspective as a server developer:

      People regularly show up at our shores setting out to create their dream Muds/Mux/Mushes/Moos/Muck/IF/edu/whatever games in Evennia. They discuss and learn and code and socialize (and help us fix bugs and suggest features!). Some are grizzled coders, others never touched code before. One guy just found this neat thing called "a mud", another is a MUSH veteran of 30 years. Some just want to rebuild their favorite game but better, another come at it with the idea of doing all things differently.
      Even though many of these won't ever reach a finalized game for all the normal reasons, they are mostly having a swell, creative time along the way. In my book, that's success right there.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Alternative Formats to MU

      @rnmissionrun

      It may be that you are right and I am just old, set in my ways and resistant to change. My opinions come mainly from twenty year's worth of trying-- with very very little success, mind you-- to get MU*ers to play on non-MUSH games. The population of Arx suggests that maybe times have changed and people are open to new ideas. Time will tell.

      On my end I don't see the end-players so much so I can't really comment on the willingness of existing MUSH players to try new things. But on the game dev side, there is no shortage of people willing to try a new system rather than the ones they are familiar with.
      And more importantly, us in Evennia world get a decent number of new developers on a regular basis - new ones every week at least, sometimes several a day, judging from the questions in our support channel. Many of those are not only new to Python or programming but to MU-ing overall. Will all of those make new awesome games or even go beyond the initial tutorial? No. But more coders flowing into the hobby can only be good for everyone.

      I did miss it but I won't answer here so as to avoid derailing the thread even further.

      Fair enough.
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • RE: Evennia for MUSHers

      @surreality said in Evennia for MUSHers:

      Thank you for this. 😄 I like to tinker with things and see what they do and how they work. I'll likely peek at this in the same way, and I appreciate the mac support and instructions.

      (Anybody giving good mac support gets a major thumbs up from me. It's rare enough it deserves a specific mention and a sincere thank you.)

      Sure! We try to help as we can. Python is OS-agnostic so the only real difference is where to get the dependencies during install. Mac tends to install fine though, it's more common with Windows-install questions.

      @Thenomain said in Evennia for MUSHers:

      I can verify that the Evennia chat room is open, friendly, and usually appropriately silly. The occasions I've seen tensions rise, others have stepped in to say, "Hey, okay, let's not go there." Even tho I've done little there but kind of trade witty repartee with @Volund.

      Glad you think so! It can drift off topic quite a bit occationally, but most of the time we do talk MU*, I promise.

      As an aside, it still irks me that for the longest time the only other comment mentioning our chatroom online was some fellow complaining about it (in another forum I'm not part of). S/he replied to a thread about Evennia, being sad that our chatroom was inactive and thus not very useful . This in itself wouldn't annoy me if I didn't happen to remember that particular nickname in the logs. Before that post they joined the chatroom once, for all of ten minutes. On Christmas Eve.
      .
      Griatch

      posted in How-Tos
      Griatch
      Griatch
    • RE: Telnet is Poop

      @faraday said in Telnet is Poop:

      @Griatch said in Telnet is Poop:

      Telnet still has a place I think, for the existing crowd/power users using and expecting the features of their particular third-party client. I believe aiming to offer web clients with features on par or better is the way forward though.

      Generally I agree, but the thing is that most of these cool new features would be highly game-specific. Even just that simple example you showed would make no sense on a game without combat, or a game that used a different combat system.

      You are perfectly correct, and since Evennia is game agnostic, we wouldn't customize our default client this heavily. That said, I find it pretty telling that the custom gui shown above appeared within two days of our wclient development branch merging. The modern Javascript GUI tools out there are really quite impressive.

      It's cool, I'm just not sure it's sustainable unless the MUSH community had a sudden swell of new players who also happened to be web developers.

      I would suggest that it's at least a higher chance that a new player is a web developer than them being a telnet affectionado ... 😉

      @surreality said in Telnet is Poop:

      @Griatch Any idea what the possibilities for integration with mediawiki are with that?

      Gotta be honest, having an 'in page' client that matches the look of a page is something I'd be all over; it'd just likely be more than a little complicated to pull off with the way mediawiki functions. (There are potentially some imbed workarounds, or widgets, that could be constructed, though. Maybe. Possibly.)

      While I'm not super aces on some of the specific look/effects (flashy things make something a full no-go for a number of players) the concept is A+.

      Django, which Evennia uses for Python database- and website integration, has a slew of wiki apps you can plug in to your website. I'm sure some can support mediawiki format if you must have that. I admit to not having personally tried any of the third-party ones myself so some trial & error would be needed - but per definition the wiki database tables would be available from within the game since game and website share the same database (Evennia is after all its own webserver).

      So, while I wouldn't say that integrating a wiki is trivial it's certainly doable, and you wouldn't have to do it from scratch.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Alternative Formats to MU

      @apos said in Alternative Formats to MU:

      Edited to add: Think of how different MU rp in a scene would be if we saw a typing indicator for someone that was posing.

      Hey, that's not too bad an idea ...
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • RE: Coming Soon: Arx, After the Reckoning

      @Apos said in Coming Soon: Arx, After the Reckoning:

      Updated to the new version of Evennia to finally merge that ancient fork, and on a new VPS- 45.33.87.194 port 3000. Think we fixed most of the bugs related to the swap but yell if you see anything, and channels will need to be readded.

      Congrats on getting through the update! Also thanks for the input, fixes and discussions the conversion spawned on the Evennia side; beneficial developments for all!
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: How important are rooms poll

      It's fun to see how implicitly colored this is by the common MUSH game style dominating musoapbox . In the MUD world, 10 000 rooms could be heard as being a "large" or even "medium" grid. For a game featuring a lot of single player/group content and exploration the number of rooms is important, especially if you can claim those rooms to be of good quality (which is certainly not always the case). Below 100 rooms is generally a very small grid in a MUD. Obviously in most MUDs there is also no concept of temporary rooms or scenes, so their use is often quite fundamentally different.
      Not saying there is an advantage to having 1000s of rooms (personally I prefer small grids also in a MUD setting so people actually have a chance to meet). It depends on the kind of game you want and enjoy. Just noting that it's interesting how different the expectation is between the different MU* communities and game styles. 🙂

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Questions About Evennia

      What would be nice to have would be a "Evennia for MUSH users" actually written by a MUSH user who also knows Evennia to go into the Evennia for <Engine>-users category of our tutorials. I contributed a small article (which first appeared on here) but it is only very broad and I'm not musher to begin with. Alas, no musher has actually stepped up to that challenge (and I've asked about it for years in our forums). It's not just mush-coders for sure; people with experience in other engines seems just as unwilling to write comparisons it seems. 😕
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • Make Evennia 'more accessible' - ideas?

      I'll move this here so as to avoid derailing @Cobaltasaurus' thread 🙂

      There, among others, @Thenomain said this:

      I'd rather give the money to the Evennia team to get someone on board to make the system more accessible to learn, even if that person is Tehom. I'm ready to tear Evennia apart but I'm still very nervous at all the layers I don't understand to start getting into the layers that I do.

      The

      getting someone on board to make make the system more accessible

      makes me curious, because it suggests there are obvious things for that person to do. Never mind the pay, I'd be interested in what kind of features you would be looking for in order to have an easier time getting into Evennia - in short, what would you have that hypothetical person do?

      I am as usual honestly interested in constructive feedback; it's always good to get pointers from non-users of the library to help influence future development.
      .
      Griatch

      posted in Game Development
      Griatch
      Griatch
    • RE: The Death Of Telnet: Is It Time To Face The Music?

      @arkandel said in The Death Of Telnet: Is It Time To Face The Music?:

      @griatch I think the issue here is that some clients handle command lines starting with / as internal commands instead of sending them as-is. Or that's my understanding - nothing done on the server side can fix that.

      I didn't interpret that as being the main gist of it, but fair enough. You can indeed not do anything about that on the server side. My post was about the inconsistency in client behavior and why this means telnet is a problem compared to web solutions where you control the client as well as the server. So I guess that still fits. 😉

      (An evennia-specific example of this problem is the tintin++ client which will interpret the semi-colon ; as a new client command, not caring that it's also the Python continuation symbol useful when running Python statements in-game. Luckily tintin++ has a verbatim mode to ignore all such special inputs but most new tintin users will trip up on that at least once).
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • RE: Questions About Evennia

      @nyctophiliac said in Questions About Evennia:

      Oh please don't misunderstand 🙂 I never thought you guys were /truly/ tired of answering my questions at all. As a matter of fact, whenever I have posed a question of any sort on the IRC/Discord channel, I've always gotten a response. Incredibly helpful community you have. And I'm glad you haven't tired of me just yet because I have 0 experience in coding and will likely be asking hundreds more. (Ok. Well I do CSS, PHP, Java, HTML but those are hardly relevant at the moment).

      At least CSS and HTML are both very relevant if you want to get creative with your web experience!
      But yes, don't be shy to ask questions. It's always hard to get into a new library, especially so if the language itself is unfamiliar. It can also be diffucult for us devs that already know the system well to perceive what is confusing, unclear or hard for a newcomer to grasp; so questions help us too in a way. 🙂
      .
      Griatch

      posted in Suggestions & Questions
      Griatch
      Griatch
    • RE: Make Evennia 'more accessible' - ideas?

      @Sparks Thanks for the tutorial! It's not easy to write a comprehensive tutorial as you found out - it's hard to tell where to draw the boundary.

      I like the elaborating sections about Commands and other systems, it's fun and useful to see them described with other words.

      I have some, hopefully constructive, suggestions:

      • Try to explain already at the beginning what you want to do to make the who command more 'MUSH-like' (That is, change the formatting, allow users to add their own text in the doing column etc).
      • If you want to do line-by-line explanation of a code (beyond normal code-comments), I think it's usually better to explain the lines in text after the code - as you yourself note, long inline code is making the whole thing look very overwhelming when in fact it's just a few lines of actual code. If it's hard to track, I'd suggest to use after-line comments with, say numbers (# 5) and refer to them in the text afterwards.
      • All of these aspects (commands, command sets, locks etc) have more detailed explanations in the Evennia manual. You can't be expected to explain the full depth in this tutorial so it's a a good idea to add links to those for people to conveniently dive deeper if they want.
      • I've found import .../from ... import ... are major stumbling blocks for new Python users. I'd suggest showing them with explicit examples as soon as importing is mentioned.
      • You probably need to briefly explain how string formatting works when you first introduce it here self.msg("Accounts: {}".format(account_names))
      • 'Python is not 'just' a "functional programming language". It's very much an object-oriented language (supporting functional paradigms). While that distinction may not matter to complete newbies, it may throw newcomers with no Python knowledge but general programming knowledge for a loop.
      • When you use the @set command for the first time it would be good to explain why that now works and refer to the place above where the Attribute is set up (it's mentioned in the in-code comment but reading the text it feels like the @set comes out of nowhere).

      More code-specific feedback:

      • Avoid using Sphinx ReST formatting like :param prefix: in your docstring examples. It's not explained and will just just confuse users.
      • It's not recommended to use filter (nor map) in modern Python code. These can always be written using a list comprehension, without any lambdas:
        # filter form
        sessions = \
                filter(lambda sess: sess.get_account().key.startswith(
                    prefix) if sess.get_account() is not None else False,
                       sessions)
        # list comprehension form
        sessions = [sess for sess in sessions 
                           if sess.get_account() and  
                               sess.get.get_account().key.startswith(prefix)]
        
        

      Overall though, this looks quite fine - thanks again for writing this. I'm not the target audience though, so hopefully others can chip in with feedback to help you flesh out where things are still confusing to them.
      .
      Griatch

      posted in Game Development
      Griatch
      Griatch
    • RE: The Death Of Telnet: Is It Time To Face The Music?

      @surreality

      That chaff is demoralizing as hell, and it is not just a case of 'grow a thicker skin'. It is a lot of goddamned work, and it takes real positive energy and the ability to hope that it will make things at least just a little better in order to even attempt one of these things.

      I'm not familiar with your project or the talk-downs you faced concerning it (sounds really disheartening). Maybe it could be an idea to collaborate with more people than fewer? From personal experience I can only say that developing code in the open as open-source (such as on Github) and finding people commenting on it or, even better, strangers volunteering to contribute to your code with code of their own is a real morale boost that I hope everyone gets to experience some time.
      Unrelated to the current topic of telnet but still something to keep in mind: There are huge resources and free infrastructures to make it fun and motivating for developers of all kinds out there, outside the MU* hobby walls.
      .
      Griatch

      posted in Mildly Constructive
      Griatch
      Griatch
    • 1
    • 2
    • 3
    • 4
    • 5
    • 8
    • 9
    • 3 / 9