Jump to content

Unkle Nuke

getMaNGOS Retired Staff
  • Posts

    1331
  • Joined

  • Last visited

  • Days Won

    4
  • Donations

    0.00 GBP 

Unkle Nuke last won the day on December 23 2021

Unkle Nuke had the most liked content!

About Unkle Nuke

  • Birthday 10/04/2007

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Unkle Nuke's Achievements

Advanced Member

Advanced Member (3/3)

17

Reputation

  1. You are indeed right! The code base does need refactoring. Antz has been reworking parts as he goes along, but overhauling a decade of work is a mammoth task. There are opcodes that still have the status of 'UNK' in the cores. Some likely have no bearing on a private server, such as Battlenet client interoperability. There are a few that may reveal themselves to be necessary pieces to the puzzle. My hope is the formulas can be fixed correctly by researching archives of sites like Elitist Jerks and even making use of old versions of utilities like Rawr and Simcraft. I'll have to leave that one up to smarter people. Math and I have an uneasy truce, at best.
  2. What I said still applies, even going all the way back to vanilla WoW 1.12. We still don't know everything as fully as we need. Otherwise, MaNGOS would have had 100% retail support for older WoW clients years ago. The development history of WoW private servers goes back a long way, with much of what is known based on the work of mostly hobby coders. They had no formal training and relied on their intuition as much as skill. On top of that, the constant push to get features working by any means, even if it was only "good enough", gave no incentive to get things totally correct. This eventually lead to guesswork somehow becoming gospel. Those who chose to question the status quo had to face the wrath of the developers in charge. Politics cemented this further with certain individuals seeking to protect their status within the community by keeping their knowledge for themselves. It's only grows more complicated by the fact that each new expansion made changes to file formats and data structures that required starting the research all over again.
  3. Even if that were true, the point of kuJay's question was how a WoW server emulator is created from scratch without access to the actual retail server code. You are correct that much of the effort for older clients now is directed toward implementing and fixing features to replicate the game play as it existed at the time a particular client was current on official retail. That doesn't mean no further work is needed on the other areas. A lot of assumptions about the reliability of old research led to the perpetuation of bad information and data. There are still many opcodes whose functions are unknown. Certain file types were incorrectly analyzed in the past. Maps are only just now being correctly understood in their proper context, which has finally allowed transports to function properly after many years. There is still much data mining and reverse-engineering that needs done, especially for more recent expansions.
  4. Well, us curmudgeons have to be poked once in a while, if only to make sure we're still breathing.
  5. How do we do it? The short answer is actually more boring than you think... hours of studying hex code gathered from the client and network traffic with the server. The long answer I'm about to offer would have seen me burned as a heretic for spilling precious secrets, if this were still the old days, but MaNGOS today is about being free in every way. The three pillars of the MaNGOS Open philosophy are Open Source, Open Community, and Open Learning. So we all do our best to make sure the code is free, our door is open to everyone, and knowledge must be shared. A more complete answer must be prefaced with a brief trip to the past. Bear with me, if you please. Game server emulation has been around far longer than WoW itself, beginning in the late 90s with multiplayer games like Quake. Back then, these games often came with an official server you could install from the game disk so players could host their own multiplayer games. People smarter than me got curious and reverse-engineered these servers to create the foundation of knowledge and procedures that are still used to this day. MMOs use a centralized server, accessed over the Internet. One of the earliest examples is Phantasy Star Online, released for the Sega Dreamcast in 1998 and Windows a year later. So how do you create a server for a game when you don't actually have the server itself? The two basic tools used for creating a server emulator from scratch are the debugger and packet sniffer. I'll say more on that a little later. What I do know of the early genesis of WoW private servers is second-hand knowledge gained from the devs who'd been around nearly from the the beginning. It all began when a simple WoW sandbox evolved into a full server called Stormcraft. Early WoW p-servers were primitive by today's standard and closed source. Much of the game's features did not work correctly, if at all, and there was little anyone could do because the various devs kept their program code and knowledge secret. WoWDaemon (usually abbreviated to WoWD) was the beginning of the modern projects you see now, programmed in C++ and using an SQL database. So why the history lesson? Because every WoW server emulator in existence today owes a debt to those who came before. Whether it's MaNGOS or Ascent, or one of their many forks like Trinity, Cmangos, or Arcemu... we've built on over a decade of work by hundreds of developers. MaNGOS was started from a leak of the old WoWD server source. Standing on the shoulders of giants, as it were. The way this was all done involved using those two tools I mentioned earlier. First, a debugger is employed to dig into the heart of the WoW game client, reverse-engineering the client's inner workings to find opcodes and data handlers. Then a packet sniffer was used to save all the packets sent between the client and server during an actual game play session, also called "sniffs". A hex editor was frequently used to analyze file formats and the captured packets, allowing bright fellows to develop specialized tools to more efficiently sift through the client and network traffic for valuable data. Once it was understood how things worked, it then became possible to create compatible program code to make use of the methods and data that makes WoW playable. Since that time, specialized tools have been created to more efficiently get at the precious data needed to improve existing p-servers and keep up with new expansions so they can also be emulated correctly... eventually. It has taken all this time to get this far. I'm certain it will take longer still before anyone can truthfully declare any WoW p-server is 100% complete. That's a broad overview for you. As for the finer details, feel free to ask more questions. Either myself or someone will be happy to provide you the best information we have. I hope I've given you the answer you were seeking. Remember, MaNGOS belongs to you!
  6. How to fix bugs? This one is easy! Take up knitting instead. Your sanity will thank you. Still, it's a well-written guide. I give it 10/10.
  7. Last I checked, ike3 abandoned Cmangos and now supports only Trinity and Mangos R2 with his new mangosbot project which seems to be a continuation of Playerbot-AI, but he hasn't made any commits to it in roughly 3 months. Regardless, the entire reason I started this sub-forum was to drum up interest in creating a MaNGOS-compatible fork. Still waiting.
  8. It's been several years, so please forgive the cobwebs and dust as I dredge up lost knowledge, but here's my thought: Since this server crash occurs at shutdown and it involves keys created by ACE, my money is on this error having something to do with the server logging. It seems something has gotten mixed up during the cleanup/shutdown process, possibly an incorrect value being returned to ACE by mangosd. Before ACE 6.3.0 was committed by Foereaper last month, the previous change was 6.1.7 committed in August. With this error not being reported until December, I'd say that points to something having changed with the server code. The other possibility could be the complications and pitfalls that arise when working with submodules in Git leading to source corruption. Has anyone tried compiling ACE with the Dump macros enabled or run MaNGOS in debug mode? Either or both would give more information than the console errors. Assuming the server crash doesn't completely prevent logging, try setting the logging level to verbose in the mangosd config. That would at least give an overview of what's happening during the shutdown process. Valgrind hasn't been used in years, since nearly all of our devs are Windows programmers, and I know of no comparable replacement for Windows that doesn't cost an arm and a leg. Antz may be able to demonstrate how to use Visual Studio to trace and debug MaNGOS with similar results. I agree with Olion's assessment. ACE has been regarded much as a plug-in module you simply add and then forget about it. This library is at the very heart of the server so it is wise for everyone who touches core functions to become familiar with it. By the way... When you're reporting a bug, it's status should not be set to "Confirmed" until there is at least one other user replying with a similar experience.
  9. This is to kick off discussion, debate, and planning for continued development of the playerbot mods for MaNGOS. Once things get rolling, authors and their collaborators can start threads for their work. I would prefer to see a unified Playerbot development, with ports/backports for each version of MaNGOS being overseen by the Playerbot project leader. Let's avoid having completely separate projects for Playerbot-Zero, Playerbot-One, Playerbot-Two, etc. Otherwise, we'd end up with a mess, where code for one version of Playerbot is incompatible with another. Some issues that could be addressed: ------------------------------------ To avoid confusion, rename Playerbot-AI. A new name can be decided upon by a forum Poll, if you like. Otherwise, I'll leave the new name up to whoever takes on the work. While you're at it, could someone please make Playerbot-AI into a real mod? By that, I mean separate the code into a patch that can generated by running a diff against MaNGOS. Right now, the mod is mixed in with a lot of other patches added by Ike because the Playerbot-AI code is only a part of his custom fork of MaNGOS. If possible, let's try merging the best features of Playerbot and Playerbot-AI into a single code base. It would make things a lot easier than having to develop and maintain two separate projects, along with their branches for each version of MaNGOS. Seeing bots for PvP finally implemented! Having bots which you can duel, fight in Outdoor PvP zones, or fill out teams in arenas and battlegrounds are just as important for low-pop servers as having a party for PvE. PvP bots should be designed to use NPCs instead of player characters. Their behaviors can then be scripted through EventAI, similar to the way a dungeon boss can be scripted. The EventAI module might need to be modified to achieve this functionality. More development of sophisticated AI for all of the bots. Instead of having the Class/Spec AIs for the player character bots hard-coded into the Playerbot core, move them into the scripts also, where behaviors can be properly triggered by the EventAI, if this is possible. However, this may require more modifications or additions to the EventAI code. Playerbot-UI Addon was developed for the Playerbot master at the time, which supports WoTLK 3.3.5a. Because of differences in the API between client versions, it might be necessary to develop separate PB-UI Addons for each. That is, unless someone who knows addon development well enough to: 1. Create a modular version, with a main function and version-specific modules the player copies into their client's addons folder. 2. Create a single addon that dynamically detects your client version, then loads only what is needed for a specific client. Playerbot-UI still needs a lot of work. It's current code should be regarded as alpha stage, at best. One last thing... The repositories and branches for the MaNGOS versions of Playerbot, Playerbot AI, and Playerbot-UI Addon can disappear at any moment, since they are no longer maintained by their authors. I will try to fork them into a new repository as soon as I can, but I advise anyone who thinks they might want to join in on a new project for this to clone blueboy's, Ike's, and Gitch's code immediately. Okay, I'll surrender the soapbox to the rest of you. Let's see some good ideas!
  10. Incorrect or missing target flag in the script would be the first thing to examine.
  11. You should also be able to adjust respawn times in the server config file, unless some wingnut removed that feature.
  12. Thank both of you, Nikon and Madmax! The last binary for Quice I had in my archives was v1.29. Impressive job compiling the Quice sources, Nikon. Will you be continuing development of Quice? And you have shown your resourcefulness knows no bounds, Max. :cool:
  13. The Github mirror for the only know official Quice repository is here. The original SVN is at Sourceforge. It appears the committed code is versioned 1.3.0 alpha. So where did 1.3.2 come from? Has someone forked Indomit's work and picked up where he left off? If so, please provide a link to the binary and/or sources as I have been unable to find anything, despite extensive searching. Indomit nuked his site and download mirrors. I'm actually surprised he didn't burn his repos to the ground while he was at it. Given that so many tools and utilities seem geared to Cmangos these days, it sure would be nice if we could carry on development of Quice to fully support MaNGOS. Anyone know Delphi, the language used to code Quice? Pascal would do, I suppose. Taken from Indomit's Readme, to compile Quice you need the following: Delphi XE ZeosDBO - http://zeos.firmos.at/portal.php JEDI - http://jvcl.sourceforge.net/ For compiling older versions Of Quice: Delphi 2007 ZeosDBO - http://zeos.firmos.at/portal.php JEDI - http://jvcl.sourceforge.net/ TMS Unicode Component Pack - http://www.tmssoftware.com/go.asp?tmsuni Alpha Skins - http://www.alphaskins.com/ I wonder if porting it over to C++ would help spur continued development? Given the work of Devs like Antz and others on various editors and utilities, do we even need Quice these days?
  14. AI Playerbot was originally developed for MaNGOS Two (3.3.5a WoTLK), but ike decided to work on it for other projects like R2 and Cmangos. There are branches in his repo for MaNGOS Zero, One, and Two. However, ike never went past 3.3.5a. We would love to see some of you in our community take up this project and develop versions for MaNGOS Three and Four, plus keep the code for Zero, One, and Two updated. So who is up for the challenge?
  15. This document is a work in progress. Expect plenty of rewrites until the final version is stickied.
×
×
  • 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