This history is salvaged from an old backup, from around year 1999. Please see the index for more information about the project. For seeing this page in its original form, refer to the archived majik.netti.fi history page.
Will Crowther was the one one who discovered that it is possible to do some fun with those primitive terminals, he wrote the first adventure game ever, called Adventure, a single-user text-based game. It quickly growed to be very popular. Especially since it got distributed within an UNIX distribution from Berkeley, it quickly was in all the universities using UNIX from Berkeley. It looked like this:
Adventure's story was linear, only one main quest after which the game was over. MUDs usually had no story at all, the only way to "play it over" was to achieve wizardhood by simply killing monsters, even the same monsters after day to day. It was simple, usually quite boring after the initial charm of novelty, and usually took _years_ to become something more than just a newcomer. Without being able to interact with other players, MUDs wouldn't have survived this far, they would have been forgotten history like the Adventure game is now.
Majik3 was the first version of Majik to introduce the gridmap system borrowed from "roguelike" games, such as Nethack. In MUDs (and Adventure) the game consists of rooms. All rooms have a description telling what the room looks like and after the description comes a short description of objects, such as items and players, in the room as well. In Majik3 it did show all those, but it showed the room from a top-down perspective. However, the view was only cosmetic and merely served it's purpose as a clarifying factor as you couldn't move within the room. It looked like this:
It was also possible to show the mini-maps of all the nearby rooms, thus forming a larger map of the area, which was actually quite useful too. It looked like this:
As we tried to do Majik3 as realistic as possible, we couldn't forget the sky, stars, moons and a sun orbiting the planet Majik. This is how the sky looked at night (day time there was a sun and a blue sky without visible stars):
Majik3 was also the first incarnation of Majik which had a real worldmap. The worldmap was separate from the areas. One grid in the worldmap equaled one kilometer, and inside "areas" such as cities etc, one grid equaled only one meter. It was highly unrealistic, a player could walk 100 kilometers just in minutes, but unfortunately it was not possible to do anything better. No-one would want to type "north" 1000 times in order to advance a single kilometer.
We actually coded such a system to Majik3, but it didn't quite work as we wanted. Telnet protocol with VT100 or similar terminal emulation can do screen clears and move the cursor, but most of our users used MUD-clients such as TinyFugue or zMUD, so we couldn't use those. It was a bit funny: when the user moved a single grid, Majik always sent the entire mini-map of the area to the user which resulted in quite a spam. Besides, we couldn't simply modify the system so that a user could immediately see if someone moved on the map since it would have created a horrible flood of text, so the users had to type "look" quite often. Yes, it would have "worked" this way, but it would have needed more than little recoding, because the whole thing was coded to support rooms, not gridmap. All systems, from battle system to area building system had to be recoded. It would have taken months.
First we decided we will still use the mud-like system, but change to use DGD LPC driver from MudOS and code the whole thing from scratch. We also decided to wipe out all of our nearly 100 "coders" of Majik3, and to only keep four of the best: Namhas, Dazzt, Yorkaturr and Harum, and all others who showed some serious eagerness with the project were assigned as designers. Their job was to design the world: the worldmap and it's places, history, mythology, player/monster races, pantheon of gods, magic and such things. However, mud-like Majik4 on DGD driver did not show any progress and we decided to end the project and start another one. This time we decided it would be a real roguelike game like Nethack, ADOM and such, so it would require it's own client but still the server would use MudOS, thus allowing the coders to code it with the language they're extremely familiar with: LPC. So the real Majik4 was begun. Eventually we reached a point where it looked like this:
Majik4's development was much better planned than Majik3's. We didn't just blindly code whatever we wanted, we instead aimed for certain milestones and didn't code anything "outside" them, avoiding the "collapsing tower" -phenomena which happened with Majik3. It took about half a year for us to to reach the point where the base code for the server was ready and the client was almost fully ready too, so it wouldn't require any major changes anymore and the coders could direct their power only to the server's development. From a coder's point of view, Majik4 was actually ready at the time. All was working, stable and ready except the world itself. The designers we had arranged had actually done nothing. We expected a ready world which we could code to be true when the base code is ready, but we got nothing. We would have been satisfied with Majik4, despite the limitations of the engine found within the development, but as we had no world, we had nothing wise to do.
Majik4's developers started improving the client and the server while waiting for the designers to do something and at the end we saw nothing but the extreme urge to break the limitations of our engine by one way or the other while still using the same serveras we didn't really want to start the whole project from scratch again! The first, most serious limitation was that we had no unlimited amount of tiles, the ASCII characters we were using as tiles weren't enough, we actually ran out of them! We decided to break that limitation by coding a 2D tile-based, graphical client, and so we coded it's base. It looked like this:
Well, then we remembered the other limitation which we wanted to break. A 2D engine allowed no chance for height differences in the landscape. We never couldn't have real mountains, we only could have some stupid mountain terrain, which would only have the mountain's colors in a pattern and then trying to walk over it would result in the server informing something like "You can't pass". That would have worked if we had used 1km x 1km scale, but we used 1m x 1m scale! No mountain is so steep from every angle. So then we coded a 3D isometric client, this time using Java. It looked like this:
Then we found a new problem with the 3D isometric engine: one could end up behind the mountain! See the screenshot above. There is some "flat" terrain, no grid there is more slanting than 45 degrees and if we break the 45 degree barrier, then we can have some real mountains such as in the bottom-right corner, but there is the problem also. One could end up behind the mountain, and thus, the player wouldn't be able to see his own character.
There were two ways to solve it: a "mountain hiding" system, which would make the mountain transparent if there would be something to see behind the mountain, and another way would be making the client truly 3D so it could be rotated in any way.