This mod from the Multi Theft Auto Team allows you to play online with friends and develop your own game modes.
Author: Multi Theft Auto Team
Multi Theft Auto (MTA) is a multiplayer modification for Rockstar's Grand Theft Auto game series: a piece of software that adapts the game in such a way, you can play Grand Theft Auto with your friends online and develop your own gamemodes.
It was brought into life because of the lacking multiplayer functionality in the Grand Theft Auto series of games, and provides a completely new platform on-top of the original game, allowing for players to play all sorts and types of game-modes anywhere they want, and developers to develop using our very powerful scripting engine.
Not just a normal modification!
Our modification adds an entirely new multiplayer aspect to a series of games that were solely released as single-player games, and did not have any working multiplayer functionality in them, making Multi Theft Auto the first ever!
Originally founded back in early 2003 as an experimental piece of software, Multi Theft Auto has since grown into a multiplayer platform for gamers and third-party developers that runs on the highly acclaimed Grand Theft Auto series produced by Rockstar North: Grand Theft Auto III, Grand Theft Auto: Vice City and Grand Theft Auto: San Andreas.
How does it work?
Multi Theft Auto was written entirely from scratch and is actively developed and maintained by voluntary people and contributors, mostly from Europe and North-America, that are experienced in various areas of game design, programming and reverse engineering.
Our project is different than your average modification in the way it actually modifies the game: this is not done through the game's scripting interface or any of it's files as you may expect. Instead, our modification uses carefully reverse engineered methods and interfaces that were originally utilized for the game's internal use only, thus allowing our application to become a part of the game itself.
Techniques similar to these have been applied in various areas such as emulation and security, but were not seen before in the gaming area.
Apart from providing the multiplayer functionality, we also provide a very powerful Lua scripting engine (also featured in other games such as Garry's Mod for Half-Life 2), that allows every developer to create and play with their own scripts. This scripting engine allows everyone to participate in creating scripts ranging as versatile as role-playing gamemodes to complete administration tools that can be used on any server.
Publicity and popularity
Formerly ranked as one of the Top 10 Games in the CSports.net list and featured on the Fileplanet.com index page, MTA has also been mentioned in various game magazines, including PC Gamer 2004, PC Gameplay 2003, GamePro 2005, and others.
Multi Theft Auto Community
Besides the Multi Theft Auto's modification itself, we also offer our users the ability to participate in a community service currently called the Multi Theft Auto: Beta System. This system is a newly developed content managed system allowing for all our developers to share the latest of their creations (resource packs) with all other fellow devs and users. We are also investigating tools for server administrators providing functionality such as easily synchronization with the latest resources available.
All Multi Theft Auto users get offered the ability to register with our system on installation. This means that every user has it's own user page and is able to join groups (or clans) and manage their own content.
But apart from the community services, every user is identified by a unique serial number and hardware-based identification number. This allows every server to verify a connected client by it's unique serial number and find out if this is a legitimate user, providing an extra degree of security.
In addition to the identification, we maintain a global list of enabled and disabled accounts; users that were proven to be illegitimately using Multi Theft Auto, for example by unfair cheating or hacking, will automatically be disabled and excluded for all servers that use the Beta System to authenticate their users.
MTABeta.com 1 MTABeta.com 2
MTABeta.com's content management community system
Multi Theft Auto is a structured application in the sense that it's functionality is clearly divided in a well thought out layer-based system:
* Core layer (non-game specific facilities such as the main menu, settings and console windows)
* Network layer (code dealing with network-specific tasks)
* Modification layer (mod-specific code, e.g. race or deathmatch)
* Graphical User Interface layer (graphical user interface code)
* Game layer (all game-specific code, with the purpose of making all other layers game independant)
Apart from the benefits from a developers point-of-view (well-managed codebase, virtually game-independant codebase), this also allows for things such as easy swapping and updating of individual functionality layers.
Because we remain a group of volunteers with limited time, we have chosen for a variety of open-source third-party libraries to fullfill some of the functionality in our application. All third-party libraries have been carefully picked based on licensing terms that suit our project's nature. Some of the used libraries include: CEGUI, Raknet, Lua, SQLite and libv2.
Lua scripting engine
Our Lua scripting engine currently exports over 800 functions that are to be used with our "resource" system, exporting about every possible interface in the Grand Theft Auto game to our developers. The idea of this system is very much based on Java's JAR archives: every application is contained within an archive, containing all necessary files (scripts, images, meshes, textures) as well as a meta-file describing the application and it's contents.
These resources can be runned on a server. Running a resource will automatically let any connecting client download all the necessary data files (through HTTP), as well as any Lua script-files that were chosen to be executed client-side.
Server-side Lua script files are executed on virtual machines on the server that is hosting the game: they affect the entire world that is synchronized for all connected clients. Each client also runs virtual machines containing all client-side Lua script files of that running resource: they affect only the view of the client they are running on. This can be very useful for client-specific stuff such as visuals, using our scriptable GUI, or replacing original in-game models with custom versions, and much more.
The client and server virtual machines talk to each other through a event-driven system: events can be fired and received by either virtual machines. This allows for a good synchronization between server-side and client-side scripts. Resources can also depend on one another like any class or interface-based system, including the ability to export (and import) functions across multiple resources.
Easy web-driven management
Our server comes standard with a fast built-in HTTP server that is used to serve all necessary client-side data and scripting files to any connecting client: this way fast and easy on-connect downloads are guaranteed.
But another important use of the HTTP server is the ability for every resource to provide communicate through the HTTP server, e.g. to provide an administration interface or even a live map of the game featuring all players and vehicles. Our server comes standard with an Ajax-based management resource that allows the server administrator to easily configure their server.
Visuals and use
We try to make our application as visually appealing and as easy as possible for everyone. Our main menu contains a small 3D-scene accompanied with a background video of the game in action. The game features a console, allowing certain commands to be used at all time, as well as an in-game server browser (currently based on the All-Seeing Eye protocol) that is able to scan all public servers.
Developer previews and beta stage
The Grand Theft Auto series were never released with any useful form of multiplayer functionality. Because Multi Theft Auto is the result of very intensive reverse engineering, sometimes requiring not-so high-level solutions, it is often hard to maintain a completely stable application at all times. Therefore, the capabilities and functionality that we, as a third-party group, have managed to add to the game has to come at the cost of a less stable game.
Because we require a higher demand of the game in terms of resources (e.g. player and object instances, CPU and graphics utilization) we tend to hit bugs that were originally compiled into the game itself, but have never seen the daylight due to the single-player game never being able to trigger them. Luckely we have the knowledge to even work around these built-in bugs, have succesfully done so in the past and will continue to do so.
Our developer preview releases are targetted at anyone who is interested in developing, testing and using our application, benefiting from it's multiplayer experience and all functionality it has to offer, given the fact that they understand that the software is still in a prerelease or beta stage. This means that it is not bug-free. We do try to maintain regular releases as to fix any bugs we can, and implement all necessary new features.
We hope to have informed you enough about the potentials of our project as well as all the current facilities we have offer. Enjoy your game.
- The MTA Team
Release changes (v1.0-dp2.3)
o Removed launcher serial verification due to third party serial number service shutdown
o Removed deathmatch mod serial verification that caused failures on load/connect
o Changed Multi Theft Auto community website to accommodate with verification changes
Release changes (v1.0-dp2.1)
o Fixed non-functioning server browser due to third party All-Seeing Eye service shutdown
o Fixed bugs in user account and serial number handling
o Improved uninstallation process
Release changes (v1.0-dp2)
* New features
o A command to enter windowed mode for easier script development ("window")
o The current resource can now be stopped from inside the resource script
o MTU size is now configurable in the server config
o Added server/player count in the server browser
o Added function fileGetSize
o Added function getBoundKeys
o Added event onClientExplosion
o Added fatal error to the launcher for users with (unsupported) non-standard ANSI paths
o Added game-monitor.com heartbeat to server (dependant on query setting)
o Sliding player issues might be fixed. If it still happens, any details on it and ideally a way to reproduce it is wanted on the forums.
o A few server crashes fixed. If your windows server crashes, please submit the dump from the servers dumps/ folder to the forums so we can fix it.
o Fixed nametags being white or having team colors between gamemodes and gamemode maps.
o Fixed some crashes related to Vista installations.
o Fixed timeouts after connect on certain hardware setups.
o Fixed the resource registry not overriding default settings in the meta properly and it breaking on some XML files.
o Fixed function fileOpen not working on zip resources. Function fileCreate also works inside zip resources now.
o Fixed . and .. being read as resources on Linux servers
o Fixed sharing one file for both the server and the client in the meta causing Download Error 9 for the players
o Fixed ASE not reporting the correct ip when serverip is specified in the config
o Banning functions no longer crash
o Function setVehicleModel now restores the vehicle's velocity properly
o Fixed bug in uninstaller causing it to delete the entire folder MTA was installed to rather than just the files MTA added to the folder
o Linux builds now contain libcurl statically linked into the executables
o Decreased server-side MTU size to allow more compatibility for users with hardware setups that reject oversized packets
o Fixed freezing related issues causing vehicles to appear static without rotation whilst moving
o Minor sync improvement tweaks.
o Increased default weapon skill setting.
o Projectiles now take the player speed into account.
o Adjusted Linux build configurations for more compatibility.
o Binding on a bad interface now shows an error