Jump to content

I'd like to help


hsoares

Recommended Posts

Hello.

 

Earlier I saw this thread here:

I have never played on Nostalrius/Elysium, but I don't doubt that they can have some fixes where mango does, fixes that can be applied to today's mangos.

 

Some of the things mentioned in this thread have to be working on Elysium. Such as AQ War Effort, as they are indeed currently collecting.

We can pretty much see, from their Anathema Timeline, that they have probably fixed and worked some things long ago. https://elysium-project.org/timeline

Not to mention that they have a bugtracker also filled of information. https://elysium-project.org/bugtracker/

And obviously, daily updates. https://elysium-project.org/updates/2016-09-01

 

What is my point with all of this? I'm only asking which specific threads I should visit to learn, the minimum basic of what I can do about seeing what could be ported from Elysium's core to mangos-zero and actually commit, to help you guys, like antz wrote:

Quote

In time I'm hoping people will find improvements and be able to apply them to the mangos cores.

 

Thank you for reading.

PS: I'm not fanboying Nostalrius/Elysium. Just an honest thought and asking for directions.

Link to comment
Share on other sites

The best way to start would be cloning MaNGOS Zero.

Most of what you mention, like the raids, would be handled primarily by the EventAI scripting. So I'd first check the ScriptDev2 stuff in Elysium's source code and compare it against the corresponding scripts MaNGOS has in ScriptDev3.

It gets a bit more difficult from there. Whether you're using the leaked Elysium sources or the official Elysium repo at Github, there is no commit history to use as a basis for Git to find common ancestors to perform any useful work. You'll have to compare every individual file by hand to find the differences.

Keep in mind that the Nostalrius source code is based on a very old fork of MaNGOS. As near as I can pinpoint it, the Nostalrius core was built on a copy of MaNGOS Zero from sometime in early 2012. That's five years old! A good portion of the code base has become badly outdated. MaNGOS Zero has made huge improvements since that time.

Please feel free to ask more questions as you work! ^_^

 

 

Link to comment
Share on other sites

  • 1 month later...

I just started my discovery of MaNGOS, I have a limited experience in C++ (I did 2 semesters of C++ this year) and I'd love to try and contribute to a cool project like that !

But to be faire I'm a little lost. The codebase for MaNGOS Zero (the one I'm more interested in) is huge ! There is a lot of resources here on the forum but no clear guide on how to start contributing (or I haven't found it yet).

So what would you advise me to do if I want to fix some bugs in MaNGOS Zero ? I know I won't be able to do it right away it will take time, but what would be the most efficient way to end up with a good enough understanding of the codebase to try and fix bugs ?

Another thing that may be a setback is that I never played in proper Vanilla, so I dont know how it used to be at the time.

Link to comment
Share on other sites

Hi and welcome to MaNGOS.

The Wiki does provide some pointers on how to contribute, but they could be better.

All the know bugs are listed in the project tracker, so that could be a good place to look.

Other than that, if you have any questions - please ask !!

Link to comment
Share on other sites

  • 3 weeks later...

I have imported some fixes from Elysium core and Database to MangosZero. The DB structure is similar in many tables and not too much work to merge (some tables are a lost cause). Problem is that MangosZero aims to be 100% blizzlike, I have no idea if the data I transfered from Elysium is. I simply did it to "hot fix" and populate certain areas of the database where there was no data at all, or the data was very inaccurate.

In regards to the core, It requires a lot of work because very few of the methods and functions are exactly the same. I had to change nearly every method in a file of 850 lines for it to work. Also keep in mind that you could run into dependency issues as well, seeing as the Elysium core uses ACE and TBB. I am no programmer, but I'm pretty sure there's a reason for those dependencies and that their libraries are included and methods from them used in many parts of their code. I do not believe Mangos intends to start using these libraries for their core any time soon.

But yes, a lot of the Elysium code can be used for MangosZero. It just takes some time to edit and compare.

Link to comment
Share on other sites

@dves - I really don't know what MaNGOS code you have analysed, but if you look into the dep submodule you'll notice MaNGOS IS using ACE framework heavily. Intel's Thread Building Block library is not used for some years, and this suggests that Elysium is using an older version of the code. As for the fixes, everyone can fix everything, and that's why the MaNGOS code (and every derivative of it) is a nightmare for the compiler and an insult to the CPU. Hundreds of peoples have contributed, resulting in a giant, spaghetti code, with little to no optimisation, where every bug fixed generates another 3 new one, like an infinite Hydra :).

@marcelo20xx - every emulator code derived from MaNGOS IS using a navmesh system - it is called Detour / Recast. Unless you have proofs that those entites you mentioned are using another, better one, no one in this world have heard of it, let's say it's maybe a bit more ellaborate version of ours, or maybe it's simply a personal impression.

Link to comment
Share on other sites

Sorry for not being clear, it was because this post from Talendrys in another topic that I was under the impression that MaNGOS didn't used navmesh when in fact it does:

Quote

Well, I digged into this subject in theory one year ago. Best pathfinding are navmesh-based but to work with navmesh, you need to generate them.

I have no idea how to do it using recast & detour and I have no idea whether the pathfinding in Mangos is currently Grid-based or NavMesh based.

I know that the maps are tile-based but it's about all... should have a deeper look to mmaps & vmaps code generator.

Tal'

But...there is a HUGE improvement in their navmesh implementation, I tested under various circumstances and the more problematic ones are solved, no more mobs stuck on textures, or falling under the geometry, or appear to be flying when walking on very uneven terrain, also underwater pathfinding woks correctly, only thing I found that was bugged is that pets follows you on elevators but they are dropped to the ground maybe because the elevators doesn't have collision boxes that can be interpreted by the pet's AI?. I played as of now some 40 hours and I had yet to encounter a mob with their path bugged...

Link to comment
Share on other sites

While I am in agreement that the pathfinding needs a rework, I am not in agreement that we should just "port" Elysium code. For those reading that don't know, Elysium has modified a good many things that are not Blizzlike. I use the term Blizzlike here to mean 'as Blizzard had things working on their servers'. Now, Elysium had modified instances to not be solo farmable by some classes (hunter, druid, etc.) and had also removed loot from many chests in low level zones to keep people from exploiting them, and making safe spotting impossible in some BGs and cities, among many many many other tweaks and adjustments for their own project. We are not their project. You can search online and find plenty of examples of custom changes that were made in an effort to provide the experience they wanted for their project.

Could we maybe get a general idea about how some things were fixed? Yes, we can. But in doing that you need to be very careful to not just implement anything and everything they did without deep research to make sure what is added and "fixed" is in line with the Mangos values of emulating the MMO structure and presentation as historically accurate as possible. Every spin off will make their own changes, but that doesn't mean that those changes are always what is best for a learning and historical project aiming for accurate emulation. I still stand by the need to revise the pathing heavily, but that should come after more of the spaghetti code has been made more cohesive and more understandable. Even after all the hard work here to revise things, the code is a mess in many places. With a revised foundation, the expansion and revision of the project can proceed much faster.

 

Link to comment
Share on other sites

Well, the navmesh pathfinding is mainly algorithm based and by comparing the files, I've seen that there was indeed several new functions in it.

Elysium has modified the mmaps & vmaps data to achieved the behaviour that you're describing Akar, therefore porting their code shouldn't be a dummy idea but we need to understand what we are doing and how this is used. :)

Tal'

Link to comment
Share on other sites

I generally have this thought in my head when I review changes in functionality...

If it improves the server by adjusting / replacing what we have while keeping to the original idea - then its a definite yes

If it changes the way players interact with the server, i.e. making instances soloable - then its a no

If it adds functionality which would benefit low population servers, then it's a yes BUT.... it is disabled by default
 

To me this allows the base mangos server to remain blizz like, but extra bits can be switched on. i.e. playerbots, AHBot should the user want to.

So if the pathfinding system is a definite improvement on what we currently have AND we can port it without a world of pain, then i'm happy for it to be ported.
- As I've said elsewhere, the Elysium code was based on Mangos code from about 5-6 years ago - Both have had extensive development since. This is the sad sad legacy of servers not contributing back to their source, the additional work this causes continues to be a burden for which I for one despair at.

We are a very small team which work across five cores and databases, all of them do an outstanding job and are all Mangos 'Heroes'.
- I would love to have many many more people involved and I will gladly help anyone wanting to help us.

Link to comment
Share on other sites

Yes, my sentiment aswell on some custom changes that Elysium made to accomodate to its community. I manually reverted some things they've done to cater to its public in my local repo. Also there is another jump on improvement on the NPC AI grouping (pack of mobs that follows a leader) i.e. Quest like "Toreks Assault" now works blizzlike as the orcs guards "follow" Thorek correctly into the battle...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use