This page was used for the previous version of Mythic, which is written in C# and utilizing TAO library. The Mythic Framework is current being reconstructed using C++, Lua and a host of libraries.
The first purpose of the MRPG project is to continue to build our knowledge about video game development through the creation of a multi-player role playing game (MRPG). The second purpose is to build up a base of code that can be reused to solve other game development projects.
The requirements for running the project from source code, you need to use a Windows computer with the following systems installed.
The project code is kept in a Subversion repository at the following URL:
https://web5.ias.csusb.edu:8443/mrpg3 DO NOT USE -- NOT THE MOST RECENT PREVIOUS CODE
One way to get the project on a Windows computer is to install TortoiseSVN and then do the following to check out a working copy of the project.
To run the system, you need to run both server and client, unless you rely on a server instance running on some other computer in which case you only run the client. Before running the server for the first time, you need to create a mysql database. You will need to install MySQL on your system for this purpose. After installing mysql, create a database called rpg and a user called gamer with the following commands (run from the mysql command line).
create database rpg; grant all privileges on rpg.* to gamer@localhost identified by 'gamer'; quit;
Then, from a windows command prompt, navigate to the database folder and run the following to create the database tables and populate them with initial data. (Alternatively, the file vs2005\ServerDatabase\run.bat cotnains the following command, so you can simply run this bat file.)
mysql -u gamer -pgamer -D rpg < create_tables.sql
There are 3 configuration files that are not stored in the repository. You need to manually set these up int order to get a clean build and for the program to run correctly. Perform the following copy operations:
copy personal\turner\jb340_client_App.config to vs2005\MobiusClient\App.config
copy personal\turner\jb340_client_App.config to vs2005\Client\App.config
copy personal\turner\jb340_server_App.config to vs2005\Server\App.config
You may need to adjust the settings in these configuration files.
In windows explorer, navigate to the vs2005 project folder and double click vs2005.sln to load the project into an instance of visual studio.
First, run the the server (vs2005\Server)). Then run the client (MobiusClient). Login in with username x and password x. When you hit the login button, the client will try to make a TCP connection to port 10008 on localhost. If your firewall/security settings block this, then make an adjustment to allow this connection.
The project vs2005\Client is an alternative version of the client, but it is not as up to date as MobiusClient.
The world is a collection of maps. Maps contain static terrain elements and dynamic entities. Static terrain elements include mountains, buildings and other immovable objects; dynamic entities include characters, portals, containers with acquirable items, and other objects for which the player can interact. The player's avatar will not be able to pass through terrain elements, but will be able to pass through dynamic elements. Players travel from one map to the next by activating portals.
Each map in the world has a corresponding xml file stored with the client that defines the map's static terrain elements. The server creates dynamic elements of maps within the client on an as-needed basis through messages it sends to the client.
The xml map files are located in the maps folder within the assets folder in the MobiusClient project. The name of the file equals the name of the map plus a .xml extension. These files are read and interpreted by the Mobius terrain system.
The name of the root element of the map file is map. The map element may have a child element with name assets. The assets element is used to define cubemaps and 3d textures needed for the sky and water. The map element also may have child config element, which is used to define the view distance, sky, terrain and water. While the map element contains a single instance of the assets and config elements, it may contain any number of entity elements, which are used to add static objects into the world, such as buildings, fences, statues, etc.
The terrain element withing the config element provides information needed to generate the ground and its texture. A height map is used to define the terrain. The height map is an 8-bit per pixel greyscale targa file that has dimensions that are a multiple of 10 plus 1. A typical dimension would be 1001. Each pixel in the height map represents the elevation of a 10 foot by 10 foot area. Each of these 10 by 10 areas is corresponds to an open gl quad. A node size parameter is used to indicate how many quads are grouped together to form a 3d model called a terrain node (or simply a node). Terrain nodes are loaded into graphics memory when they are within the view distance of the camera.
Currently, each pixel value is interpreted as feet of elevation. Since the maximum value of a pixel is 255, the maximum height of the the ground is 255 feet. A multiplier will provided in the near future that will be multiplied by the pixel value, so that we get a higher maximum elevation.
One of 3 textures are used to surface a terrain quad (or a terrain node?). These are specified by elements tileset0, tileset1, and tileset2. If the pixel value is between 0 and 50, tileset0 is used. If the value is between 51 and 100, tileset1 is used. If the value is between 101 and 255, tileset2 is used. Later, we may use a separate mapping element to identify an image that maps locations to textures.
I believe that node size parameter indicates the number of feet that comprise one dimension of a node. So a node size of 100 means that nodes are comprised of 10 quads across by 10 quads down, since a quad is a 10 foot by 10 foot area.
Water covers the entire map. A height map is specified in the water element within the config element. To place water in the world, you provide a pixel value that is greater than the corresponding pixel(s) in the terrain height map. Currently, the node size of the water is 1000, which means that each water node contains 100 quads across by 100 quads down (a quad coming from a pixel that represents 10 feet by 10 feet).
Free Art
Terrain Generation
Multiverse
Other