Meridian 59

Meridian 59 is a first-person game developed by Archetype Interactive, which went first online on December 15, 1995. It was fully released on September 27, 1996. Originally concieved in 1994 as Blackstone by Andrew and Chris Kirmse, they eventually settled on Meridian 59.

The game engine is notable for being very similar to the Doom engine in terms of level design and structure. The gameplay of the game differs radically from Doom due to numerous elements including character development but also a high reliance on player interactivity which was unheard of at the time.

Outside of the original servers (Called 101 and 102), third party servers exist that include enhanced features and even expansions.

Meridian 59 proved to be highly influential for MMO games in general, influencing the later and  games. The title has run nearly non-stop since its inception in 1996, making it one of the longest-running games in history.

The full game can be downloaded freely from the official site and on. The source code has been opened under the terms of the in 2012.

History
Archetype Interactive was run by Steve Sellers, Mike Sellers, and John Hanke, with Andrew Kirmse and Chris Kirmse filling key technical roles. Damion Schubert contributed to the design along with a team totaling 22 employees and contractors. They were bought by in June 1996.

The game characters were structured so that faces are presented in the highest resolution, while the less important torso and legs use a lower resolution in order to increase access speed. Approximately 17,000 players joined the game's public beta[3] that lasted up until its commercial launch on September 27, 1996. The servers divided players into parallel game worlds, each populated by a few hundred people, in order to keep each world from being overly crowded.

The game received various updates throughout its life, each adding new monsters, spells, and areas. 3DO shut down the game on August 31, 2000 and it was re-released by Near Death Studios, Inc. in 2002. Near Death Studios was co-founded by former Meridian 59 developers Rob "Q" Ellis and Brian "Psychochild" Green. Shortly after 3DO shut the game down on August 31, 2000 a developer of the game leaked the server software and the files for Meridian 59: Renaissance to a player, and since then there has been a thriving community of free-to-play servers.

Near Death Studios announced that the company would be ceasing operations on January 6, 2010, after which Meridian 59 would continue running, but not as a commercial concern of Near Death Studios. In February 2010, Meridian 59 was turned over to the original technical developers, Andrew and Chris Kirmse.

The game is now aimed primarily at fans of PvP (Player vs Player) combat, as it is virtually lag free and has a player-run justice system implemented to mediate killing of other players. Unlike many online RPGs, it is not based around character levels and classes. Instead, each individual skill and attribute, including health, develop independently of one another. Hit points (health) are acquired by killing monsters that are a challenge for the player. Mana (magic points) is acquired by exploring and finding mana nodes in the game world. All base attributes except karma are static, but they can be adjusted with certain items and spells temporarily.

Players can develop their character by obtaining proficiency in skills from seven schools. There is a school of weaponcraft and six schools of magic based on patron gods in the game world's mythos: Shal'ille, Qor, Kraanan, Faren, Riija, and Jala. Each school has a different focus and application in gameplay. Unlike character classes in other MMORPGs, players need not limit themselves to a single school: the rate of learning and total number of proficiency levels across all schools a player can attain is limited by their intelligence stat.

The game contains many features that modern games duplicated later: guilds have a dynamic voting system for changing leadership, customized sigils that appear on shields, and guild halls that can be won or lost. There are also in-game bulletin board systems (called newsglobes), a personal mail system that both players and NPCs can use to send messages, a political meta-game, and frequent expansions that expand the world and gameplay options.

Engine
The game engine, called BlakSton is notable for being very similar to the Doom engine in terms of level design and structure, created by Keith Randall. According to the technical manual: ''The graphics engine is very similar to that of DOOM. The world is a 2D extruded model, meaning that each point can have an independently set floor and ceiling height, but no point can have two floors directly on top of each other. Geometry is represented by a binary space partitioning (BSP) tree, which the engine uses for determining polygon drawing order.

The basic elements of the BSP tree are walls, which are always vertical, and sectors, which describe the floor and ceiling of a convex region. Each wall references up to two sectors, one on each side. The wall is directed so that it has a positive and a negative side, as in the standard BSP traversal algorithm. Each wall and sector also contains information about how to render itself on the screen, such as texture references, texture offsets, and animation information.

The entire game world is divided up into a series of rooms. Each room has an associated room file on the player’s disk. The file contains a representation of the room’s BSP tree, which the client loads when the player enters the room. During loading, all numerical references are converted into pointers for speed during drawing. The client also loads all the textures for the room into memory at this point.

Information about objects in the room arrives in a separate message from the server. Each object can have an associated bitmap and a location in the room. All objects are flat 2D sprites that are always parallel to the viewing plane.''

In 2004, the engine would be upgraded to support hardware accelerated graphics, courtesy of Direct3D. Currently, Meridian 59 relies on Direct3D9.

Map format
BlakSton uses a map format called which is short for room. It resembles the WAD format in that it supports linedefs, sectors and sidedefs: ''As in DOOM, the basic elements of a room file are linedefs, sidedefs, and sectors. A linedef is a line on the map, connecting one point to another. A sidedef is a description of the textures on one side of a wall; a linedef may have up to two associated sidedefs, one for each 48 side of the wall. A sector is a polygonal region on the floor, which conceptually also maps to the same polygon on the ceiling. Properties of a sector include the associated wall and floor textures, as well as a number of flags that are described below.

In order to save space, sidedefs that are exactly equivalent are merged when the room is saved to disk. In other words, if two linedefs reference two identical sidedefs, the linedefs are modified to reference one of the sidedefs, and the other is discarded. When the room is later reloaded into the editor, this procedure is undone by assigning each linedef two unique sidedefs. Thus, the merging procedure does not destroy any information.

A sidedef references up to three textures, referred to as normal, above, and below. To understand how these are placed, consider two adjacent areas with different floor and ceiling heights. The below texture is drawn in the vertical space between the two floors (like a riser on a staircase). Similarly, the upper texture is drawn between the two ceilings. The normal texture is drawn between the higher of the two floors and the lower of the two ceilings. Each of these three textures may be set independently in each sidedef.''

files must be encrypted before they are released. A specialized program, called is used to encrypt these files.

To create new rooms, a level editor called RoomEdit is used. This is a significantly modified version of WinDEU v5.24 that removes the things mode, as these are set in Blakod instead. It also includes support for slopes. Originally, the editor required the compiler to build. The current iteration, version 2.5, is ported to Visual Studio 2013 and runs on Windows 10.

Scripting
Meridian 59 includes a detailed scripting language to customize the game world, a embedded interpreter called Blakod, otherwise known as Kod. According to the technical overview: ''Blakod is the language that BlakSton uses to define objects in its game world. BlakSton contains a byte compiler from Blakod to an simple intermediate language, and an interpreter for the intermediate language.

Blakod is an object-oriented language that uses message passing as a primary means of flow control. An object consists of some private data, called properties, and a set of methods (which we refer to as message handlers) for observing and manipulating this private data. The syntax of the language is much like that of C or Pascal.

Because Blakod is a special-purpose language, meant to describe objects for use in role-playing games, there is a close relationship between the Blakod written for a game and the runtime system in the BlakSton server. Blakod code calls built-in C functions in the server when an operation would be too slow or complicated in Blakod, or where the operation requires communication with other parts of the server, such as sending messages to clients running on user machines.''

This logic interpreter contains the database and behavioral parameters in the game world, including placement of monsters. Blakod is responsible for all game logic in its virtual world. A compiler called bc converts these scripts into bytecode, resembling ACS to a intermediate language called Bkod: ''Blakod is byte-compiled into an intermediate language we call Bkod. Bkod is an extremely simple language, similar to a generic register-oriented assembly language. Each instruction contains an opcode, one to three sources or destinations, and occasionally some other fields.

Bkod contains opcodes for unary and binary operations, jumps, function calls, and re-turns. The unary and binary operations have the same semantics as C (except, of course, that they operate on Blakod’s 28 bit values). Jumps may be conditional or unconditional,and returns may or may not propagate (corresponding to the Blakod commands propagate and return).

The only locations allowed in Bkod instructions are local variables and properties. Temporary values, such as values that arise in the evaluation of complex expressions, are stored in extra local variables generated by the compiler. Immediate (constant) values can also appear in Bkod instructions. In addition to instructions, a bof file contains some organizational information about the class from which it was compiled.

The class has a table of message handlers; each handler contains a list of its parameters, as well as the actual handler’s Bkod instructions. The file also contains a mapping of bof file offsets to source (Blakod) line numbers; the server uses this to report Blakod line numbers in debugging messages.''

The server client is called BlakServ. Founders Andrew and Chris Kirmse noted its robustness: In 2000, four years after starting the client, the code had not crashed even once.

Compiling
Blakod and Bkod scripts need to be compiled before they can be used. The BlakSton system can make live changes as they are appearing on a server. A compiler called bc converts these scripts into bytecode, resembling ACS. According to the technical manual: ''The Blakod compiler is a commandline program that byte-compiles a Blakod source (kod file) into an object file (bof file), and usually a resource file (rsc file). The Blakod interpreter in the server loads all bof files at startup, while the rsc files are sent to clients.

Link errors are appended to a file called kodbase.txt with a lowercase letter and an identifier to indicate unresolved linkages. The lowercase letter indicates the type of the identifier that was unresolved (property, class, message handler, or class variable). This results in “unrecognized character in kodbase.txt” messages in the server status window if this kodbase.txt file is loaded. To resolve these messages, the link error in Blakod must not only be corrected, but the error message at the end of kodbase.txt must be manually deleted.

The compiler will not remove these error messages, even after the link error is resolved.''

Third party servers
The original Meridian 59 client runs on two servers called 101 and 102. Over the years several new clients have appeared that run on their own server. These servers run enhanced code and enable several new features. A seperate account each is required for these new servers to play on - A aerver 101/102 account from Meridian59.com will not work on server 105, for instance.

The currently active third party servers are:

OpenMeridian (server 103)
Open Meridian, also known as Meridian 59: Community Edition, brings several gameplay-related improvements to the base game, based on the open source release from 2012. It also has rudimentary support for the OgreClient renderer.

Meridian 59: Resurgence (server 105)
Meridian 59: Resurgence, also known as Meridian Next, is a next-generation client for Meridian 59. It debuts a new 3D renderer called OgreClient, based on the graphics engine, offering enhanced visuals over the original hardware accelerated engine.

To create new maps, RoomEdit is replaced with a modified version of GZDoom Builder version 2.3 called GZDoom Builder M59 to support version 1.5 of the map format. Most of the enhanced features offered by Doom Builder, such as 3D editing are supported.

Meridian Next regularly adds new patches to the main game which fixes bugs and enhances the performance. It has released an expansion pack called Resurgence offering new areas, quests and monsters.

Meridian59.de (server 112 & 200)
Meridian59.de is a client targeting players from Germany, whose servers follow the server 105 model of Meridian 59: Resurgence. This means it includes OgreClient rendering and files made with GZDoom Builder M59. it is based off the 2.0 release of Meridian 59 from 2016 and also includes code from the Open Meridian project.

Meridian 420 (server 420)
Meridian 420 is the most recent client and targets US-based players. Unlike Meridian59.de, server 420 follows the classic model employed by servers 101 and 102 but includes Quality-of-Life improvements to enhance the experience for those who do not wish to run the OgreClient enhancements or the Entity list.