~stormdragon2976/tintin-endoftime

Accessibility pack for End of Time MUD
6d2d4282 — Storm Dragon 4 days ago
Sound added for guardian force Kary.
bb635733 — Storm Dragon 4 days ago
More work on transportation.
1729e38d — Storm Dragon 5 days ago
Sound and hook for transportation like boats arriving. Work in progress.

refs

master
browse  log 

clone

read-only
https://git.2mb.codes/~stormdragon2976/tintin-endoftime
read/write
git@git.2mb.codes:~stormdragon2976/tintin-endoftime

You can also use your local clone with git send-email.

#tintin-endoftime

This is an accessibility enhancement pack for End of Time MUD. Features include sounds, channel buffers, music, and customizable shortcut keys with multiple profiles.

You can skip through the following sections with the level 3 heading key and navigate to subsections with heading level 4 key. This is very much a work in progress, so be sure to check back often

#Requirements

The pack currently requires tintin++ which you may need to build from source to get the latest features. At the time of this writing, version 2.02.20 is used for development of the pack. Some slightly older versions may work, but your mileage may vary. The following packages are required.

  • git
  • opus-tools
  • sox
  • tintin++

#Launching the game

To launch the game, cd into the tintin-endoftime directory and type:

./eot.tin

Here are the settings that I have found work best, this is what I do for my characters.

  • autoassist: Automatically assist in group battles
  • brief: Turn on brief mode, you can use look to view the room description
  • compact: Turn off extra blank lines
  • prompt: Turn off the prompt
  • combat miss: Enables a few extra sounds, shows when you miss with some skills.

#Client Side Spam Controls

To enable the client side spam controls, use the cspam command. You can disable it with nocspam. here is a partial list of what cspam does.

  • Suppress "You follow chocobo" messages.
  • Move (translucent) and other similar messages to the end of the line instead of the beginning.
  • Hide learned or unlearnable options from trainers. Turn off cspam to see the whole list.
  • Show enemy condition only when it has changed.

#Multiple Items

When dealing with multiple items, you would normally have to interact with different types one at a time. For example, you would have to type sell sword, followed by sell shield. Same thing with get, put, take, buy. The client tries to manage this for you, so if you were to type get sword, shield it would first get the sword, then get the shield. This may not work with everything, so just try and see. Also, feel free to mention it if you find something that doesn't work as expected.

Instead of typing the direction you want to walk followed by enter, you can use the quick navigation keys. Each of these require the alt key in conjunction with the key. So, for example, pressing alt plus the letter i will move you north.

  • i: North
  • l: East
  • ,: South
  • j: West
  • k: scan

To move up or down, add shift. So, alt plus shift + i goes up while alt plus shift plus comma moves down.

Sometimes it is useful to know if you have been to a room before or to leave yourself a note. Using the client side command breadcrumb or mark, you can leave a bread crumb in the room which will alert you the next time you enter that room. To remove the bread crumb, simply prepend your chosen command with no, as in nomark. You can type a note after the command and it will be displayed. For example:

mark the room to the south contains a rather nasty boss

This will show the message when you next enter the room, like this:

Bread crumb notes: the room to the south contains a rather nasty boss

To check the room your are currently in for bread crumbs, simply type breadcrumb check or mark check.

#Coordinates

The world map works on a system of coordinates. Also, as you walk, there is no text displayed when you enter a new room. You can look at the room to find out what kind of terrain you are in as well as available exits.

To help navigate the world map, there is the coords command. Coords gives you, in a general sense, directions to specified points. To use it, type coords followed by the x and y position you want to reach. For example, coords 171 X 637 will guide you to 171 X 637 Y. It is up to you to navigate around any obstacles such as mountains, water, or areas.

There are a few valid ways to set coordinates.

  • coords 171,637
  • coords 171:637
  • coords 171 X 637
  • coords 171 x 637

When you reach the destination, a notification sound will play and you will get a message. Based on the example above, the arrival message would read You have arrived at coordinates 171X, 637Y. To stop tracking, use the nocoords command.

#Communication

There are several channels available. Each channel, when used, will be stored in a buffer. You can access up to the last ten messages by using alt plus 1 through alt plus 0. Alt plus 1 contains the most recent message while alt plus 0 contains the oldest message in the buffer.

When the client starts, the currently selected buffer is the "all" buffer. This buffer contains messages from all captured channels as well as some important events that happened such as becoming better at a skill or spell.

you can cycle through the buffers in a couple of ways. Probably the easiest to remember is alt plus minus and alt plus equals. These shortcuts will move you through the list of available buffers, and when you have the one you want, use the alt plus 1 through alt plus 0 keys to access the messages.

The second way is to use alt plus shift plus the number keys. if a buffer is available, you will move to it. For example, alt plus shift plus 1 will move you to the "Ooc" channel. The one difference here is returning to the "All" channel. To do so, press alt plus shift plus tilde (~).

#Notifications

You can adjust how some information like buffer messages, music track information, etc is displayed. For most people, especially those using a graphical desktop with orca, or WSL with NVDA, the default is recommended, as using the advanced settings may cause things to be read incorrectly. If you use tintin++ from the console with Fenrir, however, you can choose to set notification style to top, and the buffers and some other information will be displayed on the top line of the screen. New commands will be entered on the bottom line of the screen, with the game's output appearing in the rest of the screen. Console based screen readers do quite well with this method.

There is a third type called notify-send that may work with Linux desktops and orca that will use desktop notifications to present information. This is not tested often and may be broken, so use at your own risk. Here is a list of types with a brief description.

  • notify inline: The default, displays text inline as it happens
  • notify notify-send: Not recommended, uses notify-send to present information as desktop notifications, Linux only
  • notify top: Split the screen and use top line for information and bottom line for input, only recommended for console screen readers such as Fenrir

#Game Music

The client starts with music enabled. Once you have logged in, after the character creation section, you will hear music based on the current area. Several areas have music with more added all the time.

If game music is not your thing, turn it off with the command "nobgm". you can enable it again later if the mood strikes you with "bgm".

#Music Players

You brought your own music? No problem. The pack supports any player that can be controlled with mpris. This includes most modern browsers. This means you don't have to switch away from the game to control your music player. The following list of keys, when combined with alt plus shift will modify your current player. For example, pressing alt plus shift plus x tells your music player to start playback.

  • Z: Previous track
  • X: Play
  • C: Pause
  • V: Stop
  • B: Next Track
  • M: Post current track to music channel
  • S: Toggle shuffle
  • R: Toggle repeat
  • U: Show current track
  • _: Volume down
  • +: Volume up

#Customizable Shortcut Keys

You can create your own keys to quickly do actions. most of the keys on the left side of the keyboard are available excluding those used by music controls. To make your own key, use the set command follow immediately by an available key. For example, setq will bind alt plus q. For simple commands, the process is straight forward. Typing setq open door, for example, will set alt plus q to open doors.

Setting a key to do more than one action is possible but slightly more complicated. The syntax is set left brace action one simicolon action two right brace. here is an example of a complex action bound to the letter a.

seta {get key backpack;unlock north;open north;north;close south;put key backpack}

#Key Profiles

If you run out of keys to bind, you can create a new key profile. The keyprofile or kp command can be used to do this, just type kp and the new profile name. For example, kp combat would create a new key profile called combat. The default profile is called default.

Pro tip, you can set a key in one profile to change to the next, So, if you are in the combat profile and type something like setq kp default, alt plus q will then switch you to your default profile. You can check the current profile by typing kp or keyprofile with no arguments.

#Client configuration

To change settings for tintin itself, in the modules directory, copy the file config.txt to config.tin. Edit config.tin to your liking and the settings will be applied the next time the client is opened. To reload them in the current session, type modload config.

Be sure to not simlink the file because config.txt may be updated in the future. The file config.tin will not be changed server side. This means you can make any changes to config.tin that you like and it will not conflict when you pull future updates.

If you would like different configuration settings for different characters, copy config.txt into the character specific module directory instead. This directory is located at ~/.config/tintin-endoftime/.modules/.

#Client Side Commands

Here are some hopefully helpful client side commands. The game allows you to display parts of the score sheet to cut down on the massive wall of text you get when trying to read it. For example, typing score hp will show your current and max health while typing score stats will display your agi, pwr, vit, and wil. You can display eache of these individually as well. To make things similar to other clients you may have used on other MUDs, the pack has shortened these even more, so hp will show your health, mn your mana, agi your agility, etc. Here is a list of commands available client side with a short description of what they do. Please note this list is probably going to keep growing as the pack is developed and/or I remember to add things.

#Command Reference

  • agi: Display agility
  • ap: Display AP
  • bgm: Enable game music, nobgm to disable
  • breadcrumb: Set a bread crumb, see Navigation for details
  • cash: Display gil
  • coords: Track coordinates on the world map, see Coordinates for details
  • cspam: Enable client side spam controls, see Client Side Spam Controls for details
  • gil: Display gil
  • condition: Display enemy condition
  • enemies: Display number of enemies
  • hp: Display your health
  • keyprofile: Check or set the current key profile, see Key Profiles for details
  • kp: Check or set the current key profile, see Key Profiles for details
  • lb: Display limit break meter percent
  • mark: Set a bread crumb, see Navigation for details
  • mn: Display your mana
  • msp: Enable game sound, this is the default, nomsp to disable sound
  • notify <inline|notify-send|top> Set presentation preferences, see Notifications for details
  • php: Start building a website, just kidding, check your pet's health
  • pwr: Display power
  • stats: Display all four stats, agi, pwr, vit, wil
  • tnl: Display experience and required experience to level
  • vit: Show vitality
  • wander: Walk in a random available direction, so long as you are not in battle
  • wil: Display will
  • xp: Display experience and required experience to level

#Modules

most of the pack's functionality is divided into modules. The core functionality modules are located in a subdirectory of the pack named, aptly enough, modules. While you can add modules here yourself, it is not recommended in case of naming conflicts down the road. If you want to contribute to the pack and write a module, this is most likely where it would go, so that is an exception.

For personal modules, there are two options. The directory where the pack looks for data is ~/.config/tintin-endoftime/. In this directory there is a global modules subdirectory as well as character specific module directories.

Anything you put in those directories should never clash with anything from git. Even if you happen to name a module the same thing as a pack module, each of the personal modules are prepended with character_. You can see a list of all loaded modules by typing:

#class

Teaching how to write a module is beyond the scope of this document, but it mostly consists of putting tintin++ commands into a file. If you need to learn about tintin++ commands, type the following in tintin++:

#help

You can get help on specific commands by adding the command after the #help command, for example, #help ticker.

#Windows Compatibility

It is possible to get the pack working in Windows through the use of Windows Subsystem for Linux. The following instructions use the default WSL setup with Ubuntu as the installed distribution. While the steps are numerous, it is my hope that these instructions will be easy enough to follow so that anyone who wants to play will be able to do so.

#Install WSL2

Here are instructions for installing WSL. This guide assumes Ubuntu as the Linux distro installed. If you have never used WSL, it should be as easy as opening a command prompt with administrator privileges and typing the following:

wsl --install

It does require a restart to complete setup. If you run into problems, please check the documentation in the link above. It is a good idea to read that information to make sure your system meets the requirements for WSL.

#Pulseaudio

By default, in Windows 10, WSL does not have sound support. Windows 11 is supposed to have sound support out of the box making this step unnecessary. If you are using Windows 11, you can jump ahead to Linux Environment step.

Installing pulseaudio in Windows 10 enables sound support which is very important for the pack. To do so, download http://code.x2go.org/releases/binary-win32/3rd-party/pulse/pulseaudio-5.0-rev18.zip.

Extract pulseaudio-5.0-rev18.zip and copy the pulse directory to C:\pulse. Next, create the file C:\pulse\config.pa.

This file must be created with an editor that does plain text such as Notepad. Very important, the file must be saved with a .pa extension. By default Windows hides file extensions, and will most likely append .txt to your file name. This means that your config.pa will become config.pa.txt which will not work. Here are instructions for turning off file extension hiding.

Add the following text exactly as shown to your config.pa file.

load-module module-native-protocol-tcp auth-anonymous=1
load-module module-esound-protocol-tcp auth-anonymous=1
load-module module-waveout sink_name=output source_name=input record=0

Save the file. Make sure that the file is config.pa and not config.pa.txt.

#First Run

Open CMD with administrator privileges. Type the following two commands to start pulseaudio for the first time.

cd c:\pulse
pulseaudio.exe -F c:\pulse\config.pa

Check your notifications area for a firewall notification about pulseaudio. make sure to allow it. This notification will most likely pop up even if you have completely disabled the firewall. Sound will not work without completing this step.

Change back to the cmd window where you started pulseaudio and press control plus c to close pulseaudio. In the next section you will create a service to make it start automatically.

#NSSM

Download NSSM from https://nssm.cc/download. Extract the zip file and copy the extracted win32 directory to c:\pulse. Open cmd with administrator privileges and type the following command.

c:\pulse\win32\nssm.exe install PulseAudio

Fill in the following three pieces of information:

Path: c:\pulse\pulseaudio.exe

Start-up directory: c:\pulse

Arguments: -F c:\pulse\config.pa --exit-idle-time=-1

Change to the details tab. Here there is only one thing to fill in, the display name:

Display name: PulseAudio

Click Install Service, then start the service. You can start the service either in services in administrative tools, or from cmd with admin privileges by typing the following.

net start PulseAudio

#Linux Environment

Now it is time to configure the Ubuntu side of things. Launch Ubuntu, and wait for the prompt to appear. You may have to answer some questions to get things set up, including creating a username and password.

#Bash Configuration

To get sound working, you have to export PULSE_SERVER to use the correct tcp port. You can do this by adding the following line to ~/.bashrc.

export PULSE_SERVER=tcp:$(grep nameserver /etc/resolv.conf | awk '{print $2}');

If you are not familiar with Linux tools such as nano or vim, or if you just want to be lazy, I have created a .bashrc that has the required additions. To get it, enter the following command.

wget -O ~/.bashrc https://stormgames.wolfe.casa/downloads/wsl.bashrc

To apply the changes, either reopen your WSL session or run source ~/.bashrc.

#Requirements

To install the packages required by the pack, run the following commands:

sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt-get update
sudo apt-get build-dep tintin++
sudo apt-get install -y build-essential git opus-tools sox libsox-fmt-all

These instructions come from https://tintin.mudhalla.net/install.php#Ubuntu, so if you run into problems with the condensed version here, you can refer there for trouble shooting.

#Tintin++

Now that the packages are installed, to get the latest tintin++ do the following. Note that if the download link in the example here doesn't work the version may have changed. In that case, please refer to https://tintin.mudhalla.net/install.php#Ubuntu for the latest link. These instructions come from that site, which is more likely to have the most up to date version.

Type the following to build and install tintin++:

mkdir tintin
cd tintin
wget https://downloads.sf.net/tintin/tintin-2.02.20.tar.gz
tar -zxvf tintin-2.02.20.tar.gz
cd tt/src
./configure
sudo make install

You can optionally clean up the build environment after it has successfully finished and tintin++ is installed. To do this, enter the following two commands:

cd
rm -rf tintin

#Getting tintin-endoftime

To download the pack, simply enter the following command.

git clone https://git.2mb.codes/~stormdragon2976/tintin-endoftime

It will most likely take a couple of minutes to get everything. The awesome part though is now you're almost ready to actually start playing!

#Launching the Game

From now on, when you want to start the game, after opening Ubuntu, do the following:

cd tintin-endoftime
git pull
tt++ eot.tin

At this point, you should be in the game. Simply follow the on screen instructions, which read type login to get started.

#Troubleshooting

Because I develop the pack in Linux, and do not own a computer with Windows on it, this is going to be tricky for everyone involved. Now that the disclaimer is out of the way, here is the troubleshooting best effort.

#Windows Firewall

If you do not hear any sound, check Windows Firewall. One person said the firewall was completely disabled, and didn't hear any notifications about it. Yet, in the end, Windows Firewall was blocking pulseaudio. As soon as it was allowed, everything started working.

#Virtualization

If you have errors when launching Ubuntu, make sure that virtualization is enabled in the BIOS.