Issue Overflow: A is for ACK

So… we post a lot of resources in The MUD Coders Guild Slack. I’ve been doing some digging into our analytics, and the members of TMCG post nearly 30,000 messages a month.

That’s a lot of chatting!

As subscribers of The MUD Coders Guild Newsletter know, we’ve had a history of massive emails, so welcome to our second edition of the Issue Overflow, an aggregation of articles, videos, projects, and resources discovered and shared by the members of The MUD Coders Guild.

This program acts a as TCP proxy on the Byteball network. By default, it serves the current time from telnet://india.colorado.edu (port 13). However, it can trivially be configured to serve any TCP service over the Byteball network.

RoomJS is a modern Node.js-based MUD/MOO engine, where (privileged) players can extend everything while in game. The basic idea is that one can create and edit objects, locations and code from inside the game.

> inventory

This application generates a random medieval city layout of a requested size. The generation method is rather arbitrary, the goal is to produce a nice looking map, not an accurate model of a city. Maybe in the future I’ll use its code as a basis for some game or maybe not.

> cast ‘inspiration’

The following is a list of Dick Tracy villain debuts. One of the appeals of the Dick Tracy comic strip is its unique villains. Many had bizarre deformities including The Blank (1937), Little Face Finney (1941), Pruneface (1943), The Brow (1944), Shaky (1945), and Pear Shape (1949). Chester Gould wrote these villains for his reader’s righteous condemnation, without exploring moral gray areas. This was emphasized by depicting the heroes as attractive and the villains as grotesque.

Here is a short space flight video from our upcoming game, Starmourn. In this instance we are just navigating around the Nocturne zone, starting at the red giant sun before moving to the lava planet, Ecliptis. Near the planet, you can see the dark moon, Shroud.

> train int

A few weeks ago, I wrote ssh-chat. The idea is simple: You open your terminal and type ssh chat.shazow.net. Unlike many others, you might stop yourself before typing “ls” and notice — that’s no shell, it’s a chat room! While the little details sink in, it dawns on you that there is something extra-special going on in here.

Do you need an economical and effective way of using behavior trees? The fluent behavior trees API allows the coder-come-game-designer to have many of the benefits of traditional behavior trees with much less development time.

While there are plenty of behaviour tree tutorials and guides around the internet, when exploring whether they would be right for use in Project Zomboid, I ran into the same problem again and again. Many of the guides I read focused very heavily on the actual code implementations of behaviour trees, or focused purely on the flow of generic contextless nodes without any real applicable examples.

Welcome to a series of blog articles about my experiment (read: stumbling around) of marrying data-oriented, memory-streamlined behavior trees with a second representation to ease creation and modification during development. I write it to document my findings and decisions and to ask for your invaluable feedback to build a BSD licensed BT toolkit that is truly useful.

From the very start, we made very conscious engineering and product decisions to keep Discord well suited for voice chat while playing your favorite game with your friends. These decisions enabled us to massively scale our operation with a small team and limited resources.

Earlier this year we’ve been asked to help redesign the website of lowtechmagazine.com. The primary goal of the redesign was to radically reduce the energy use associated with accesing their web content. At the same time it is an attempt to find out what a low-tech website could be.

> quaff elixir

If you have been paying attention on Twitter recently, you have likely seen some increasing numbers regarding the number of simultaneous connections the Phoenix web framework can handle. This post documents some of the techniques used to perform the benchmarks.

Piggy backing a bit on @dvcrn topic BEAM optimization for functions with static return type? I’ve been trying to understand in a deeper manner how Elixir works internally to generate the BEAM’s bytecode. After reading way too many blog posts I’ve found some things…

I play quite a bit of guitar in my free time. Once of the things I’ve been practicing lately is improving my voice leading between chords. Voice leading refers to how the individual notes, or voices, within a chord move when you transition to another chord. You often want as little movement as possible to keep the transition from sounding jarring (unless you’re going for jarring).

We previously monitored our applications with tools such as New Relic, but with the removal of the free server monitoring last year, we decided to take a look at other monitoring solutions. What we ended up with was a combination of Prometheus, Grafana, and the alert manager for Prometheus.

Lexical analysis (tokenizing) and parsing are very important concepts in computer science and programming. There is a lot of theory behind these concepts, but I won’t be talking about any of that here because, well, it’s a lot. Also, I feel like approaching these topics in a “scientific” way makes them look a bit scary; however, using them in practice turns out to be pretty straightforward. If you want to know more about the theory, head over to Wikipedia (lexical analysis and parsing) or read the amazing dragon book (which I recommend to all programmers, it’s fantastic).

> ooc

In a recent software development seminar, we discussed a famous analogy for agile development. If you’ve ever read a book or attended a training session on agile/Agile development, you’ve probably seen it, too. Henrik Kniberg created the original and best known version of the drawing.

This morning I popped into Genesis, a MUD (Multi-User Dungeon). It’s a free to play, multiplayer fantasy text adventure you can play in your browser. Genesis has been around since 1989 (and is amazingly still getting updated), whereas I myself probably haven’t played a MUD since the late 1990s and haven’t played a text adventure in probably just as long.

It’s easy to dismiss text adventures as the relics of a bygone age. They served a purpose when art and animation were too memory-intensive for the computers of the day. They were popular with a generation of players who thought choose-your-own adventure novels were neat.

After about a year of work and almost 540 commits from close to 20 contributors, Evennia 0.8 is out! Evennia is a Python game server for creating text-based multiplayer games (MUDs, Mushes, etc) using Django and Twisted.

> afk

Witchcraft, Algae, and Quark bring several utilities to Elixir from other languages, enabling an easier, principled use of tools such as algebraic data types and monads. Witchcraft’s goal is to feel fully idiomatic, and provide a gentle learning curve for learning the new concepts that it introduces. This talk walked us through the library basics, demonstrating common use cases, and discussed some of the opportunities for integration with the existing Elixir ecosystem.

Start learning how to code in LambdaMOO. In this video we touch on some basic MOO programming commands and general information about programming in MOO. A must watch if you’re new to MOO (Multi User Object Oriented) or LambdaMOO in general.

The MUD Coders Guild is a community for people with a passion for creating text-based games. Join us on Slack!