fastman92

How can I join the MTA team and begin contributing to the MTA source code?

Recommended Posts

Welcome everyone.

I want to join the MTA team and make some changes to the MTA source code.

Who to contact?

How can I start?

Edited by fastman92
  • Like 6

Share this post


Link to post

Hi! Thank you for taking an interest in contributing to our project.

Multi Theft Auto: San Andreas is an Open Source software, so anyone who feels confident in C++ (and/or possibly other utility languages we use) can contribute to the code base. A good start would be to check out our project page at GitHub, or more specifically - our README: https://github.com/multitheftauto/mtasa-blue/blob/master/README.md.

After giving that a read, you might want to read our Coding Guidelines as well (which are also mentioned in the README): https://wiki.multitheftauto.com/wiki/Coding_guidelines. These guidelines explain the structure of our code, how to write your code so it can be accepted by us, and what you should try to focus on when submitting your first patches/pull requests to us, amongst other things.

Having read both of these, you should get the general idea of how this project operates.

Now, to answer the rest of your questions:

  • You do not need to be a MTA Team member in order to submit your code to us. You have to be registered on GitHub though (don't worry, it's completely free of charge) and should know how to use Git.
    • Obviously, you will be listed as an author of any code you contribute to us (provided that we accept it).
  • You can find a list of our developers here: https://forum.mtasa.com/staff/, (ones with a Godfather (The MTA Team) rank, although not everyone is active), but you do not need to contact anyone individually per se (unless it's a confidential question eg. regarding a security issue).

If you have any other questions then feel free to ask.

Good luck.

  • Like 5

Share this post


Link to post
52 minutes ago, jhxp said:

 

  • You do not need to be a MTA Team member in order to submit your code to us. You have to be registered on GitHub though (don't worry, it's completely free of charge) and should know how to use Git.

That's right because the definition of an MTA contributor/developer (someone who actively develops our codebase) is different from MTA team, which is a title you get by broad recognition that only the devs who play(ed) a key role in making MTA what it is /those who lay MTA's foundation have (not of added value while developing for MTA).

As a contributor, which you're looking for to become, you can create pull requests with your patches/feature implementations. Your chances to ever get any official status such as on forums depend on your own performance, if you become well known for your good quality code and judgement/self-review capabilities (realiably and structurally knowing how stable and desired certain patches are) you could be granted commit rights to cut the code review by other developers. While you're at it you can be granted additional tools and statuses if required for your assignments. (Especially don't take this literally, I'm just trying to draw an image for you of how it works here) Any current ''MTA Team'' or ''Contributor'' member around here has walked through this whole chain of reputation and recognition building which takes time, and is very informal (not needed to actually develop for MTA or contribute code as mentioned before)

 

The conclusion: you're already part of a team if you start contributing code, and being formally part of it attachs zero value, if you deserve it over time it'll get to you and as you advance some groups such as Contributor until (theoretically) MTA team it only increases your recognition/honour.

 

fastman92 by the way you're widely known within the GTA:SA modder community so you do have experience with GTA mechanics, which is of immense added value to developing MTA. Currently we can use some developer manpower and if you want to improve MTA utilizing your present skills you're very much welcome (as any contributor would be though, skilled with GTA internals already or not)

Edited by Dutchman101
  • Like 5

Share this post


Link to post

Thanks for replies.

At the moment I only want to make the MTA compatible with the FLA. Some addresses are reallocated and the C++/ASM code will have to be altered.

I need to learn how to use a Github and make changes to the MTA project, submit changes to it.

I'm using Visual Studio 2015.

fastman92 limit adjuster

Edited by fastman92
  • Like 1

Share this post


Link to post
7 minutes ago, fastman92 said:

At the moment I only want to make the MTA compatible with the FLA. Some addresses are reallocated and the C++/ASM code will have to be altered.

So you basicly want to make THIS (https://forum.mtasa.com/topic/88462-fastman92-limit-adjuster-and-stream-memory-fix) possible?

Read the wiki on how to use GIT, easy explanation: create a Github account, fork (sort of clone) the project repo, and use SVN software such as TortoiseSVN to fetch the repo to your PC. Start making those changes you want now, and I advise you to make it a new branch in consultation with MTA team members, as integration of something like this could need extensive testing/integrating all those commits at once by later merging the repositories after code and stability reviews are done.

Make sure to read the Wiki about using our Git before my explanation, it was only meant to show you it's not all that complicated.

 

Edited by Dutchman101
  • Like 1

Share this post


Link to post
Just now, Dutchman101 said:

So you basicly want to make THIS (https://forum.mtasa.com/topic/88462-fastman92-limit-adjuster-and-stream-memory-fix) possible?

Read the wiki on how to use GIT, easy explanation: create a Github account, fork (sort of clone) the project repo, and use SVN software such as TortoiseSVN to fetch the repo to your PC. Start making those changes you want now, and I advise you to make it a new branch in consultation with MTA team members, as integration of something like this could need extensive testing/integrating all those commits at once by later merging the repositories after code and stability reviews are done

 

Yes, ok. I'll download TortoiseSVN.

Not really, when coding I know what I'm doing.

If you need a proof, you can see that my project the FLA patches over 9000 memory addresses in GTA SA and game is completely stable.

Share this post


Link to post

I'd advise against TortoiseSVN, there's no need for it.  Probably something like GitHub for Windows is much easier to get up and running.

This guide has more or less everything you need to know: https://wiki.multitheftauto.com/wiki/Compiling_MTASA

Quote

Not really, when coding I know what I'm doing.

There's really more much to developing on a large project than simply applying patches.  MTA's codebase is very large in nature, and there are likely to be some integration challenges involved as well as harmonizing with our own coding standards.  Good luck.

  • Like 5

Share this post


Link to post
4 minutes ago, fastman92 said:

Yes, ok. I'll download TortoiseSVN.

As suggested above by me and darkdreamingdan you're better off to use the recommended methods from the wiki, mine was just an example that its not all that complicated to get started, and is one of the (not recommended) methods.

Share this post


Link to post
39 minutes ago, darkdreamingdan said:

I'd advise against TortoiseSVN, there's no need for it.  Probably something like GitHub for Windows is much easier to get up and running.

This guide has more or less everything you need to know: https://wiki.multitheftauto.com/wiki/Compiling_MTASA

There's really more much to developing on a large project than simply applying patches.  MTA's codebase is very large in nature, and there are likely to be some integration challenges involved as well as harmonizing with our own coding standards.  Good luck.

Tell me what is MTA codebase made of.

Is it C++ code or something else as well?

I'm thinking about the LUA.

Suppose it gets rellocated:

.data:00A9B0C8     ; CModelPeds *CModelInfo::ms_modelInfoPtrs[20000]
.data:00A9B0C8     _ZN10CModelInfo16ms_modelInfoPtrsE dd 4E20h dup(?)

Where would 0xA9B0C8 get referenced? Only in the MTA C++ code, where the value could be found or in the LUA as well?

 

I'm using the Github for Windows and cloning the MTA at the moment.

Edited by fastman92
  • Like 2

Share this post


Link to post

The MTA codebase is entirely written in C++ with some parts written in inline assembly. The modelinfo array is referenced all across the game_sa and multiplayer_sa code, but Lua does not have direct access to any memory locations. All you can do from Lua is to call C++ functions, which then do something.

  • Like 2

Share this post


Link to post

Would adding FLA into MTA by any chance increase the LOD limits?

Trying to break MTAs streaming limits is a huge pain in the butt with just lua.

Edited by CodyL

Share this post


Link to post
1 hour ago, CodyL said:

Would adding FLA into MTA by any chance increase the LOD limits?

Trying to break MTAs streaming limits is a huge pain in the butt with just lua.

Yes, check your previous comments on what fastman is now trying to achieve, to see where this is about;

(also check https://bugs.multitheftauto.com/view.php?id=9368

Edited by Dutchman101
  • Like 1

Share this post


Link to post

This could be the #1 request of all time and it would be amazing to see this someday. Draw distance is the mayor drawback in MTA. Especially when you have placed so many objects, that it gets decreased below the 300 meter limit.

  • Like 2

Share this post


Link to post

I'm getting these errors:

1>------ Build started: Project: DirectX9GUIRenderer, Configuration: Debug Win32 ------
2>------ Skipped Build: Project: breakpad, Configuration: Debug Win32 ------
2>Project not selected to build for this solution configuration 
3>------ Build started: Project: Client Core, Configuration: Debug Win32 ------
1>cl : Command line warning D9025: overriding '/MTd' with '/MT'
1>  d3d9texture.cpp
1>e:\projects\mtasa-blue\vendor\cegui-0.4.0-custom\src\renderers\directx9guirenderer\d3d9texture.cpp(31): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
3>cl : Command line warning D9025: overriding '/MTd' with '/MT'
1>  d3d9renderer.cpp
3>  StdInc.cpp
3>  Compiling precompiled header.
3>
3>e:\projects\mtasa-blue\client\core\stdinc.h(16): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
1>e:\projects\mtasa-blue\vendor\cegui-0.4.0-custom\src\renderers\directx9guirenderer\d3d9renderer.cpp(31): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
1>  Generating Code...
4>------ Build started: Project: GUI, Configuration: Debug Win32 ------
4>cl : Command line warning D9025: overriding '/MTd' with '/MT'
4>  StdInc.cpp
4>  Compiling precompiled header.
4>
4>e:\projects\mtasa-blue\client\gui\stdinc.h(13): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
========== Build: 0 succeeded, 3 failed, 36 up-to-date, 1 skipped ==========

41a637516952766.jpg 

I have DirectX SDK installed.

65a30d516953675.jpg 

What should I do?

 

 

Share this post


Link to post

If this can be acheived it would help so much with what I'm working on currently; trying to break mtas limits with just lua is near impossible.

Share this post


Link to post
2 hours ago, fastman92 said:

I'm getting these errors:

 


1>------ Build started: Project: DirectX9GUIRenderer, Configuration: Debug Win32 ------
2>------ Skipped Build: Project: breakpad, Configuration: Debug Win32 ------
2>Project not selected to build for this solution configuration 
3>------ Build started: Project: Client Core, Configuration: Debug Win32 ------
1>cl : Command line warning D9025: overriding '/MTd' with '/MT'
1>  d3d9texture.cpp
1>e:\projects\mtasa-blue\vendor\cegui-0.4.0-custom\src\renderers\directx9guirenderer\d3d9texture.cpp(31): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
3>cl : Command line warning D9025: overriding '/MTd' with '/MT'
1>  d3d9renderer.cpp
3>  StdInc.cpp
3>  Compiling precompiled header.
3>
3>e:\projects\mtasa-blue\client\core\stdinc.h(16): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
1>e:\projects\mtasa-blue\vendor\cegui-0.4.0-custom\src\renderers\directx9guirenderer\d3d9renderer.cpp(31): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
1>  Generating Code...
4>------ Build started: Project: GUI, Configuration: Debug Win32 ------
4>cl : Command line warning D9025: overriding '/MTd' with '/MT'
4>  StdInc.cpp
4>  Compiling precompiled header.
4>
4>e:\projects\mtasa-blue\client\gui\stdinc.h(13): fatal error C1083: Cannot open include file: 'd3dx9.h': No such file or directory
========== Build: 0 succeeded, 3 failed, 36 up-to-date, 1 skipped ==========

 

41a637516952766.jpg 

I have DirectX SDK installed.

65a30d516953675.jpg 

What should I do?

 

 

Check if your DXSDK_DIR environment variable is pointing to 2010 version. I had this problem too.

Share this post


Link to post

It's set up correctly

DXSDK_DIR = C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\


One thing that raised my attention, Client core can't be compiled because of the missing d3dx9.h, but at the same time the file "Client Core.vcxproj" doesn't have any occurence of string DXSDK_DIR

Edited by fastman92

Share this post


Link to post
On 26.11.2016 at 6:31 PM, fastman92 said:

Welcome everyone.

I want to join the MTA team and make some changes to the MTA source code.

Who to contact?

How can I start?

20 hours ago, fastman92 said:

At the moment I only want to make the MTA compatible with the FLA. Some addresses are reallocated and the C++/ASM code will have to be altered.

 

Wow, thats a great news! Really looking forward to this!

That could open some serious game developmnet into MTA.

Just one personal preference from me - if possible, make MTA object streamer work same way as standart GTA SA streamer (wich is brilliant both in object loading logic and draw distance).

Share this post


Link to post
45 minutes ago, fastman92 said:

but at the same time the file "Client Core.vcxproj" doesn't have any occurence of string DXSDK_DIR

MTA doesn't use DXSDK_DIR directly in VS project files. Instead, the real path is inserted by premake.
So it will most likely/should look similar to this (in Client Core.vcxproj):

<AdditionalIncludeDirectories>..\vendor;..\Shared\sdk;D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include;..\vendor\sparsehash\src\windows;..\Client\core;..\Client\sdk;..\vendor\tinygettext;..\vendor\zlib;..\vendor\jpeg-9b;..\vendor\pthreads\include;..\vendor\sparsehash\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

If it's not in place, check the value of dxdir in /premake5.lua by adding print(dxdir) as follows after line 29:

dxdir = os.getenv("DXSDK_DIR") or ""
print(dxdir)

...and run create-projects.bat again

Share this post


Link to post
6 minutes ago, AfterAll14 said:

 

Wow, thats a great news! Really looking forward to this!

That could open some serious game developmnet into MTA.

Just one personal preference from me - if possible, make MTA object streamer work same way as standart GTA SA streamer (wich is brilliant both in object loading logic and draw distance).

It's not my intention. The question why there's a different streaming could be answered by the lead MTA developers.

 

3 minutes ago, Jusonex said:

MTA doesn't use DXSDK_DIR directly in VS project files. Instead, the real path is inserted by premake.
So it will most likely/should look similar to this (in Client Core.vcxproj):


<AdditionalIncludeDirectories>..\vendor;..\Shared\sdk;D:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include;..\vendor\sparsehash\src\windows;..\Client\core;..\Client\sdk;..\vendor\tinygettext;..\vendor\zlib;..\vendor\jpeg-9b;..\vendor\pthreads\include;..\vendor\sparsehash\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

If it's not in place, check the value of dxdir in /premake5.lua by adding print(dxdir) as follows after line 29:


dxdir = os.getenv("DXSDK_DIR") or ""
print(dxdir)

...and run create-projects.bat again

Tell me what I should do if I want to add a new CPP or H file.

Share this post


Link to post

MTA's build configuration uses wildcards for files, so just create your files and run create-projects.bat again.

Share this post


Link to post

I removed "Build" directory, then used  create-projects.bat again

The path defined by DXSDK_DIR wasn't inserted to vcxproj files.

 

258ed4516995295.jpg 

What to do?

Edited by fastman92

Share this post


Link to post

Compiled.

How do I run the MTA and test how it's working?

592d65517002923.jpg 

1c9d39517003164.jpg 

Edited by fastman92

Share this post


Link to post

I get this error when MTA isn't installed (no registry entry) and I try to run it by just copying the files on the pc.

Have you installed MTA before you replaced the default stuff with your own stuff?

Share this post


Link to post

  • Recently Browsing   0 members

    No registered users viewing this page.