multitheftauto

Project site
code.google.com
Description
Multi Theft Auto is an open-source game engine that adds a full multi-player network play functionality to Rockstar North's Grand Theft Auto game series, in which this functionality is not originally found.
Last commit
9 years ago
License
GNU General Public License v3
Last release
5 years ago
Repository
http://multitheftauto.googlecode.com/svn/trunk/

Summary

Introduction

Multi Theft Auto (MTA) is a software project that adds a full multi-player network play functionality, by means of it's own game engine, to several Rockstar North's Grand Theft Auto game series, in which this network play element is not originally found. It is one of the very few modifications to incorporate an extendable network play element into a closed-source single-player PC game.

We accomplish this by performing a series of hooks in our client and inserting our own engine into the game, which is able to bind to the game's own engine. In this way, our software becomes part of the actual game and is able to manipulate and extend every object within.

Together with a dedicated server (that is independant of the game itself), people are now able to play the game over a network and scripters are able to develop Lua scripts that run on the embedded Lua virtual machines, manipulating the game in every possible way for any type of game mode.

Originally founded back in early 2003 as an experimental piece of C/C++ software, Multi Theft Auto has since grown into an advanced multiplayer platform for gamers and third-party developers. Our software is capable of providing network play for dozens of players on specialized dedicated servers as well as running user-generated game content and scripts through a Lua virtual machine.

Formerly a closed-source project, we have migrated to open-source to encourage other developers to contribute as well as showing insight into our project's source code and design for educational reasons.

Head over to the Multi Theft Auto website for more information.

Development

Our automated build server takes care of building (and subsequently uploading) the latest revision. The current status of our automated builds can be seen in the widget below. The integration build starts at certain intervals during the say to check for build errors while the nightly build is built at 23:00 (GMT/DST).

We encourage anyone that is interested in participating in development to contribute! Our code is structured and easy to get around with. We offer our own bug tracker that contains bugs and feature reports and also allows any developer to submit their own patches. These patches will then be reviewed by us.

Next to a bug tracker, we also offer public access to our nightly build server which compiles a daily build of the latest revision.

All development stuff is available through your personal account at our Multi Theft Auto community website.

For the latest build, please head over to the NightlyBuilds page for more information.

Structure

Our project is divided into a series of modularized pieces for the client and server. Our original aim was to create a platform capable of running on any game. Over the years, this has changed, but our original design is outlined as follows:

  • core: all game independant facilities and ties all subsystems together (hooking, configuration, input binding, main menu, GUI windows, etc.)
  • gamesa: interface to Grand Theft Auto: San Andreas by means of implementing classes identical to the game and attaching these through memory
  • multiplayersa: second interface to Grand Theft Auto: San Andreas to isolate low-level hacks away from the cleaner game_sa module
  • gui: graphical user interface rendering
  • deathmatch: Multi Theft Auto deathmatch module, implementing nearly all engine logic for the game itself along with things such as Lua VMs
  • net: network handling (this module is covered by a different license and is only available as a binary release)

Because of the nature of our project, this design has not been strictly followed everywhere: our core module is not really game independant, our deathmatch module contains logic that should have been implemented in core and there is a certain amount of redundant (duplicated) classes and code that is less than ideal. Granted, this project has been fully written by a fair amount of volunteers in a non-profit fashion. We will be working towards cleaning this up gradually.

Guidelines

Here are some relevant guidelines for our source code, if you are interested in contributing:

Discussion

Discussion about the development of this project can be done through our bug tracker or our IRC channel at GTAnet. Our IRC channel #mta can be reached through our own GTAnet server irc.multitheftauto.com or irc.gtanet.com.

We also have our forums available at http://forum.mtasa.com.

Verification

All our source code available through this project page is licensed under the GPLv3 license. This excludes any dependencies and our net modules for both the client and server: these are still covered under our proprietary license. These modules have been excluded because of reasons involving security and cheating, but contain only a minimal amount of code.

Our dedicated servers have the option of verifying users on connect, based on their serial number and Multi Theft Auto community username. This serial/username combination is queried through the master server, and the user is accepted unless the combination is invalid. Dedicated servers with verification can then ban users on their serial and username instead of only on IP-address, ensuring that people can be banned regardless of those that keep changing their IP-address.

Only a client running a Multi Theft Auto version that is released through this website or through our nightly build service generates a serial number. In other words, developer builds that are built manually by anyone will not be able to join servers that have serial verification turned on. For obvious reasons of course, as we would like to minimize the problem of people cheating through source code modifications.

In practice

As a quick introduction to show you what's possible with our software, we have made a series of videos featuring various concept scripts (game modes) created by Lua developers that are working with us on this project.

These videos will show you a glimpse of the capabilities that our embedded scripting engine has over the actual game. Mind that all the necessary logic required to manipulate the objects and synchronizing them over the server has been implemented by our software and is accessible to any third party developer through a Lua virtual machine that runs on both the client and server.

Grand Theft Auto and all related trademarks are © Rockstar North 1997-2008.

Social media

  • delicious 6
  • google 3

Latest releases

You might also like...

Comments

Source Code Commits

  • 1305. Fixed assertion in interstate69 (9 years ago)
  • 1305. Fixed assertion in interstate69 (9 years ago)
  • 1304. Fixed smartpath zipped file usage (9 years ago)
  • 1304. Fixed smartpath zipped file usage (9 years ago)
  • 1303. Renamed makePedReload to reloadPedWeapon as suggested in r1300 (9 years ago)

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“You can stand on the shoulders of giants OR a big enough pile of dwarfs, works either way.”