Jump to content

Green Candy


Recommended Posts

Hello everybody.

I have decided to return to the MTA forums with good news. MTA:Eir is nearly ready for BETA testing! Well, wut? Is it time for MTA 1.4 already? You would guess, right? It is my personal project to improve the overall code quality of MTA:BLUE. That is what my team and I have been busy with for the past two years.

I am now an official contributer to the MTA:BLUE codebase. This topic should be used to discuss my plans.

You wanna know it all? - The TLDR; story.

It started out with me as a Lua coder on the MTA:BLUE framework. I have spent months of exercising my skills trying to push MTA to it's limits. Signs of my activity are the resedit and pathrecorder resource, both of which have found appreciation over time. When I saw the issues related to model replacement instability and resource interaction limits where you cannot traverse object references across resources, I had a vision of a perfect MTA, not being plagued by limits of development rustiness. In August 2011, I decided to use my experience in programming, which I had raised through development on an openly available Savage code-base, to investigate the trails of what I now call Open Source Hell, otherwise known as MTA:SA BLUE source code. It has earned it's name for the absurd differences in coding style - from usage of MS-DOS era typedefs to whitespace adventures.

Throughout my research I realized that MTA had been a very ambitious project. Even on the current project one can relate the steady increase in coding style quality to the learning process of the developers. When looking at the oldest code going back to the MTA:VC era, I wondered why nobody took on to improve on the work of the legendary ijsf who after all wanted to push his project onto the SA engine. The guy earns my respect since so many years have passed from his contribution and I forgive the lack of clean source code. I interpreted that he left his work for us to improve on. This applies to many people other than ijsf as well. Those have influenced the MTA project with contributions of diverse magnitude, diverse depth, diverse development status, and they shall be praised for their will to contribute to an ever evolving community. I snapped and dug deep into the MTA and GTA:SA code to find out how to raise MTA to what it is supposed to be - a mod worthy of an excellent code-base maintained by dedicated developers and supervisors who clean up after open source shortcomings.

Development may never stop. If you are the inventor of code on which I have worked on, study why I made changes to your code. Become part of the development process by discussing the changes with me. Since you are the origin of the logic, you deserve most credit.

I tried to reason with the MTA developers why there is no investment in improving the code-base already provided but instead just going about new features and bugfixes all the way. They answered they had lost hope in the project due to the release of newer games in general. I think that this message implies that people playing MTA have low standards, that they are easily satisfied with an incomplete code-base, that what they do not see they do not desire, that it is best to keep low quality for as much leisure time as possible for them developers. I was offended by these words and tried to but failed to persuade them into a better belief. I realized that these people needed visuals, actual hard-held facts about a better code-base instead of utopian ideas. I am not about dreams, and if I desire to help my favorite GTA:SA multiplayer project, it usually ends up in a drainage of my free time for the spirit of the community. That was when I had already coded half of the code based on structural improvements in the MTA:BLUE core.

The project was called MTA:GREEN back then, unaware of the name collision with the III project of the past. A regular day of development consists of two open IDA Pro Free 5.0 windows for ASM GTA:SA code analysis and on the other side the Visual Studio 2008 project where the assembly code is transformed into native C++ code. It is a logical conglomeration trying to make sense of all links present in the GTA:SA engine, but I have managed to understand quite a chunk as of now. Entity, Vehicle, Ped interfaces, model loading, streaming, RenderWare framework, projectile loading and assignment + handling, vehicle handling (yes, it was me who pushed it), rendering procedures, IMG archive management, model requesting, freeing, loading, collision assignment, deployment, destruction, texture management, referencing, RenderWare.

The best part of this development process is that I got to know Remi-X. He is the guy who has held my motivation high enough to continue development of what once was a leaking ship, to turn into a bright star on the midnight sky. Shortly afterwards I had met the rest of my team who I appreciate for coloring my development days. As a developer it is important to convince yourself that what you are doing for the community will neither be rejected nor go to waste. I fear that my hard work would not get taken seriously, but I am ready to defend every single line.

I am the first one to show off such a huge draw distance with no streaming limitations. Nobody has up to this point run a total conversion map on MTA without any collision, model assignment errors and crashes. I have taken on the impossible and won. ASM code cannot defeat my iron will. I want you to remember that.

MTA:Eir is a whole new approach to GTA:SA feature exposition. Instead of hooking and reusing flawed R* code, whose intention was not to provide a mod-able game, I am completely rewriting said routines.

Through that I accomplish that...

  • every developer is included in the knowledge of GTA:SA internals.
  • code quality rapidly improves.
  • re-modification of said routines is easily possible.
  • the current development team is challenged.

MTA:Eir is open-source. Critical development processes are undergoing, so I will not give you the repository address yet. I want to know your opinion. What do you expect from my improvement of the MTA:BLUE modification? What do you think about the official code-base?

To those wondering why I kinda abandoned Scene2Res: I am a perfectionist. I seeked for a way to fix model support and Scene2Res was not delivering it. Software which could never reach a perfect status is depressing me. Lua scripts could not fix what the GTA:SA engine has logic against. So MTA:Eir had grown in importance to me, and the day of salvation is about to come. If Scene2Res and Eir join forces, the result can be seen in the video above.

This project has reached the point that I am ready to merge it's features with MTA:BLUE. The series of patches shall be called "eirify". My first contribution to MTA:BLUE are two bug fixes which I encountered while testing model support. Additionally, I bundled in the fileSystem and other utilities + implementation of said code. Let's make Multi Theft Auto:San Andreas the perfect San Andreas multiplayer addon. Together.

A feature overview:

  • RenderWare virtual API + Lua exportation
  • MTA:Lua OOP extensions (improved coroutines, GC, C++ compatibility, ...)
  • stable model support (collision, dff, txd, ...)
  • dynamic hardware lighting
  • vehicle interface specialization (CTrainSA, CBikeSA, CAutomobileSA, CBicycleSA, ...)
  • IMG Limit Adjuster influence by fastman92
  • cleaned up global code-base (replacing classes with namespaces [CLuaFunctionDefs], assembly replaced by pure C++ code, usage of virtual methods at GTA:SA interfaces, ...)
  • MTA:FileSystem, including Lua .zip support

It is up to you which features will come into MTA:BLUE. Please discuss below what you want to have implemented. Ask me anything about the feature - I will answer you.

Update Plans: http://s1320.beta.photobucket.com/user/bloxman/library/

I promise to watch over this thread. :)

Be wary that I am a student who is close to his finals, so I may not be there every day.

Edited by Guest
Link to comment
  • Replies 122
  • Created
  • Last Reply

Top Posters In This Topic

You guys deserve a great recognition for this. It's pure awesomeness and many people could learn a lot from you and your team's effort put into this project.

If that patch ever comes up with a MTA update, I'll take the time to patch my Steam GTA:SA copy and reinstall MTA just to see and try this on my own (and maybe try and spend some good time on the mod itself).

Keep up the magnific work!

Link to comment
And i was wondering what you were up to ...

And this ? Looks really ambitious.

I wish you best luck.

Oh ..That might not be the core matter of this project, but .. you said "dynamic hardware lighting". I'm really curious. Could you briefly describe your method ?

Thank you!

RenderWare provides a RpLight extension which utilizes the fixed function pipeline lights using Gouraud shading. When the light is attached to a frame, the light will move with it. There is a global directional light, environment lighting, a point light and a spot light.

In GTA:SA, this dynamic hardware lighting was disabled. (There also is Rockstar's own lighting interface based on collision meshes; I am not talking about that one.) Since I rewrote the model loading procedure, I calculated vertex normals for every model automatically, thus allowing point lights.

You guys deserve a great recognition for this. It's pure awesomeness and many people could learn a lot from you and your team's effort put into this project.

If that patch ever comes up with a MTA update, I'll take the time to patch my Steam GTA:SA copy and reinstall MTA just to see and try this on my own (and maybe try and spend some good time on the mod itself).

Keep up the magnific work!

Thank you!

I have got the plan laid out how to patch the official MTA build. It depends on negotiations with the developers and the community of how they shall be applied. Will be working on a patch today, just came back from school.

This is truly amazing. Great job.
amazing job, good luck for you ^^
I would like to express my gratitude. :)

Happy to receive all the encouragement. Kudos to you!

Edited by Guest
Link to comment
I've never seen GTASA like this, it reminds me of a mario game or something without the draw distance and lack of weather and the long views.

I hope you achieve your goals here it just opens up creativity for others.

GrandCarma is kind of cartoon-y, isn't it? :D Indeed, think about the possibilities! They are endless.

Some would say that this is not GTA:SA anymore. I say that we should let the designers decide what they think GTA:SA is. It all starts with an empty Lua resource. You shape your own world!

Not bad. Keep working on it I hope they'll apply it all. MTA could use some of this great functionality and cleanse.

Thanks man. Can always count on you :)

Link to comment
I wish I was as organized about my plans as you ;_;

I put a lot of effort into MTA:Eir. Most of these ideas are mapped out in my brain and are constantly developing. Those charts are the result of said long-term development process.

Link to comment

Great job, I was waiting these kind of updates to fix those problems on the streaming and engine.

LOD model and texture will help to obtain more performance.

I do not understand the visual effect of the dynamic hardware lighting, its kind of dynamic vertex lighting like many games on the nintendo gamecube ? What I know is the fact that gta sa use Baked vertex color to fake a lighting based on the vertex.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

  • Create New...