Jump to content

Odd NPC behavior...


Xenithar

Recommended Posts

Alright, my server is up and running with vmaps now, so we can no longer shoot or cast spells through trees and such. However, NPCs and mobs still fall through bridges and things. It's like they fall a few feet then teleport back onto the bridge or object. I also have pets disappear in certain areas such as outside RFC in Orgrimmar. Also, mobs tend to like to bounce up and down in the air and take a straight line towards or away from the player instead of running along the ground. I am not sure if these issues are related to the vmaps or not, but is there a way to fix them? My server is a Debian 6.0, shell-only install on an Athlon MP dual 2.8GHz (two physical CPUs) box with a Tyan board, 4GB of ECC DDR, and a RAID1 array. When my girlfriend and I are on or even when a friend drops in and three of us are on, I have not use a single gig of RAM yet and CPU usgae is low. Can I enable something that may sue more RAM or CPU to fix these problems?

Link to comment
Share on other sites

Try compiling MaNGOS with mmaps. It provides pathing and movement constraints for creatures and NPCs. faramir and his associates have done a marvelous job in fixing a great many issues related to movement. It will make your MaNGOS install a bit more complicated and generating the movemaps, similar in fashion to generating vmaps, does take a lot longer than vmaps. On slow systems, it has been reported to take a day or more to generate the movemaps.

NPCs, monsters, and pets "falling through" in spots is due to incomplete mesh data that causes holes in the terrain. Unfortunately, there is no easy fix, but the combination of vmaps and mmaps will eliminate a large portion of the fall-through issues by pathing these creatures around those holes.

I know the mmap project is attempting to collect a list of locations where there are "off-mesh" tiles. You can read through the thread for tips on finding and reporting them so a fix can be implemented.

Link to comment
Share on other sites

I will look into mmaps. You got a link for the site?

*EDIT*

Got it, but I can't compile it. There is no VS2005 solution file, only 2008 and 2010, both of which I refuse to use at this point. I have VS2005 Pro (valid license for my software company). Can I get somebody to pump out a VS2005 solution for the mmaps stuff? Everything else has VS2005 solutions. Figures the one thing I need doesn't!

*UPDATE*

Alright, I opened the solution file in Notepad and did some editing, duplicated the VC90 directories to VC80 and edited their versions also, and it opened, but only three of four built. Going to look into it now.

*UPDATE*

Got it. The projects are screwy. The g3dlite and zlib libraries put their library files under their own places instead of with the others. I copied them over, hit F7 and off it went. About to try running the mmaps executable now.

Link to comment
Share on other sites

Alright, after scrapping what I had earlier due to grabbing the 3.3.5 version by accident, I thought that I would document my steps to making it work in VS2005 here for others to learn from. I just now downloaded the one for 1.12.1 and opened the extractor solution because it is compatible with VS2005. Built that, plopped the "ad.exe" file onto my flash-drive for backup. Now comes the fun!

  • Open "contrib/mmap/MoveMapGen_VC90.sln" in Wordpad
  • Edit the format version from 10.00 to 9.00
  • Edit the next line from "# Visual Studio 2008" to "# Visual Studio 2005"
  • Now edit each line where you see "VC90" to "VC80". There are five of these
  • Save the modified file as "contrib/mmap/MoveMapGen_VC80.sln" and close it
  • Copy the "VC90" folder in the "mmap" folder and paste it to the same location, then rename it "VC80"
  • Now go into the new "VC80" folder and open "MoveMapGen.vcproj" in Wordpad
  • Change the line Version="9.00" to Version="8.00"
  • Save and close the file
  • Open the folder "dep/recastnavigation/Detour/win"
  • Duplicate the "VC90" folder to "VC80" as before
  • Enter the new "VC80" folder, open the project file in Wordpad, and set the version to 8.00 just like before
  • Save and close the file
  • Repeat the process one file time for the "VC90" folder in "dep/recastnavigation/Recast/win"
  • No open "contrib/mmap/MoveMapGen_VC80.sln" in VS2005
  • Change to Realeas/Win32 and press F7 to build the project
  • Note that one project failed! This is due to the libraries being in the wrong place
  • Copy"g3dlite.lib" from "win/VC80/g3dlite__Win32_Release" to "dep/lib/win32_release"
  • Copy "zlib.lib" from "win/VC80/zlib__Win32_Release" to "dep/lib/win32_release"
  • Build again pressing F7, and you now have the map generator executable!

Hope this helps somebody else.

Link to comment
Share on other sites

I still don't understand the push by the MaNGOS team to drop support for VS 2005 so quickly. I know it eases their burden a bit by not having to maintain a compiler they themselves no longer use, but I really liked VS 2005 and reluctantly upgraded to VS 2008 only because it is the minimum version supported.

I wonder if VS 2008 will be dropped when the next version of Visual Studio is released?

I have Windows XP 64, but have not used it due to lack of 64-bit hardware drivers for my HP scanner and wireless keyboard/mouse combo. Otherwise, I would gladly dust it off and load up VS 2005 for my MaNGOS needs.

Would the instructions you provided also work as well for MaNGOS-One and the main core for 3.3.5a? I would love to see a forked repository that adds support for VS2005 back into MaNGOS or, at least, a permanent thread with VS 2005 solution files posted and updated as needed.

Link to comment
Share on other sites

To my knowledge, there are WoW server projects out there, like WCell, that are developed using C# and .NET.

But, MaNGOS is strictly C++, for cross-platform development and use. (Thank goodness!)

From some of the troubles you've reported, I'd say you can chalk it all up to birthing pains as you learn the ins-and-outs of the game and working with the server. Things like not knowing you have to feed pets or having incorrectly placed ore nodes, as you have discovered, are due to inexperience and the realization that MaNGOS is far from perfect, along with its related projects. I don't know of any private server project that does reproduce retail game play with absolute accuracy, so you can expect glitches, bugs, and missing features.

MaNGOS does seem to have more than its share of such shortcomings, especially if you talk to fans of the other forks and independent projects. However, if you really care about learning how things work and aren't afraid to get your hands dirty writing code, or burn out brain cells debugging that code, then you've come to the right place. And we always need more developers!

Most fans of those other projects only care about playing WoW for free. As such, many shortcuts are taken to hack together solutions for problems. Trinity, for instance, has working Vehicles and a Dungeon Finder, but this was achieved with workarounds. I'm not saying their approach is wrong for what they wish to do, but MaNGOS differs from this by trying to truly understand how things work in the client so features can be added with stability, consistency, and continued growth in mind.

Instead of having dozens of individual hacks for dozens of features, MaNGOS tries to lay the basic groundwork first so that related features can be handled by the same basic modules. This keeps things simpler and allows for adding more related features in the future without re-inventing the wheel every time or bloating code with kruft.

Link to comment
Share on other sites

It's not birthing pains, my girl and I both have official accounts. Well, until Cataclysm came out and ruined the original world. She knew she had to feed those pets but for some reason didn't. Hope she doesn't get that way with our live cats o_O! As far as bugs, I have found very few "bugs", but a lot of minor things like the bouncing mobs that just take you back out of the immersion into the game world. So far my only genuine bug is that rockbiter procs flametongue damage instead of boosting AP. I am still trying to figure out what to do here. Other than that, I feel that MaNGOS is very well done. In fact my plans are to run 1.12.1 on my dual Athlon MP server and then add a second server at the current version of MaNGOS so I can go as far as Lich King on my dual quad-core Xeon system later. This way I can always play a true Blizzard shaman on the old version and if I want to go farther I can play as far as LK without worrying about the Cataclysm crap, such as the new talent system catered to infants and those still in the womb!

I may take a look at the code when I get caught up in my personal and professional projects and try to contribute then, but right now I just want to enjoy the original game.

Link to comment
Share on other sites

I hope you have many hours of fun, to be honest. A belated welcome to MaNGOS, Xenithar, and thank you for the stimulating conversation, though it is scattered all over the forums! lol

I used to play on retail, but could no longer justify the $15 monthly expenditure with the sour economy being used by merchants as an excuse to raise prices on even groceries by 30%-40%. Dollars just don't stretch very far these days and I operate my computer addiction on a shoestring budget as it is. :/

On the other hand, I have had so much fun tinkering around in my own private world that I hardly miss retail. It was overrated, anyways. I had expected to band together with all types of players in my adventures, but ended up spending most of my time wandering alone until I leveled up enough to take part in the end-game content. After that, raids like Sunwell Plateau or doing all of Blackrock in a single run was fun, but rare. Normal game play still tended to be lonely while guilds were okay for getting help with professions or quests. Oddly enough, it was nearly impossible to find guild mates that had the spirit to go city-raiding and battlegrounds were a disorganized mess with most team members playing like a one-man army, leaving it wide open for the Horde to dish out "epic pwnage" upon our bodies.

I suppose my experience might have been different if I had gotten in on the action when WoW was still fairly new, instead of on the tail-end of Wrath. I had heard all these exciting stories from my nephew about how great it was, but he was there from the beginning.

If you ever need an extra play-tester for your server, I'd be more than happy to join. :cool:

Link to comment
Share on other sites

Ok, back to business it is.

What steps did you take in adding mmaps to your server?

The exact nature of the error reported in the mangosd console would also help.

You did recompile the server with mmaps merged into the source and used the new binaries thus generated or did you simply use the mmaps extractor and move the generated map files to your server?

Link to comment
Share on other sites

I initially just placed the maps onto the server. Then I compiled the server sources in with the mmaps stuff, but now it won't start because I have database version 18xx and it wants 14xx. Is there a patch version of this somewhere? I am not going back to an earlier revision of the database. I want to run the current zero stuff with this mod. Is it possible?

Link to comment
Share on other sites

Did you only compile a clone of the mmaps branch or did you merge mmaps with the main MaNGOS-Zero branch?

The mmaps branch is behind the Zero master branch by quite a number of commits, which would explain your database error if you used the mmaps branch exclusively instead of doing a merge.

Just create a new branch in your local Zero repository and then fetch the mmaps branch into it. If you cloned the full Zero repository, then you should already have the mmaps branch.

Link to comment
Share on other sites

I don't use git and dislike it with a passion. I also don't have it on any of my real servers, making that nearly impossible. I have the current zero release in zip format as well as the mmaps release in zip format. Is there some way to merge them without git?

Link to comment
Share on other sites

You could merge them by hand or create a patch using the diff of mmaps with Zero master, using a diff-merge utility. You may also use whichever VCS software you prefer to create repositories for Zero and mmaps-zero, then generate a patch or diff file between mmaps and Zero master.

I understand you have your reasons for avoiding Git, but it does make merging branches and generating patch files for the various MaNGOS projects vastly easier, versus manual diff/merge or moving the code into a different VCS format.

I used to swear by Subversion and was quite comfortable using it. When MaNGOS made the transition to Git, I had a difficult time understanding how it worked. With some fantastic help from freghar and others in these forums, I finally grasped how Git worked. After using it for over two years, I can honestly say I much prefer Git for its flexibility and atomic commits that make working with source code, especially large collaborations like MaNGOS, a breeze.

However, the above commentary on Git is just my opinion, but you will need to do a merge or generate a patch and then merge before you can use mmaps with the current revision of Zero, however you do it.

Link to comment
Share on other sites

I know how to use git, it just sucks. Just google for "git sucks" and you will begin to understand the level of frustration most developers have with it. I am not bashing any team for using it, but I am with the majority in believing that it was written by the few coding gods out there, for the few coding gods out there. I even saw a few posts stating that it was for use by Linus only (joking posts, mocking the difficulty and learning curve). I just despise it and avoid it at all cost.

As for the merging, I think that I am screwed and may just quit and go back to NWN2. I code for a living along with managing AD domains and networks, and I just want to play and relax at home. So far it has been a real pain and I am still on #1 on my bug list, getting rockbiter to behave like rockbiter. Now I am forced to either spend six weeks fighting git to merge two projects just to make NPCs behave correctly or I have to spend six weeks coding the changes manually. Just aggravated with it right now is all. If this was Subversion (or any other standard tool), I'd be on my way. Instead I am sitting here playing Oblivion, waiting for my GTX590 to arrive for Skyrim, and trying to forget about git and the trouble I am having here!

*EDIT*

I made up my mind to try the merge thing, but nobody has any info on how to do this. Hell I don't have either one locally to begin with, so that may be a start, but how the heck do I do this? Why the heck is Subversion so dang easy and this is such crap?

*EDIT*

Extremely pissed now. I have spent hours trying to get git to do ANYTHING useful. I create a directory, go into it, do "git init". I then do "git clone <zero git address>". Wait for it to finish. Then I do "git clone <mmaps git address>". Wait for it to finish. I have no branches, I cannot commit, and the one time I did get the stupid thing working, git decided to delete my mmaps branch directory! It should not be this difficult to download some stupid code and merge it! I am ready to kill whomever invented this retarded tool!

Now that I got that out, what the heck do I do? I cannot get git to just merge what I downloaded. I can easily grab stuff with git, but I get all kinds of errors beyond that.

Link to comment
Share on other sites

Alright, been fighting with this all morning. I think I did it right finally, but have no clue and was looking for advice. My steps follow.

  • Created ~/src
  • Went into ~/src and did "git init"
  • Cloned the zero repo, which fell into ~/src/server
  • Cloned the mmaps zero repo, which fell into ~/src/mangos
  • Performed "git add ./server" followed by "git commit -m "Initial server commit""
  • Added the mmaps branch with "git branch mangos"
  • Switched to the new branch with "git checkout mangos"
  • Added the mmaps with "git add ./mangos" followed by "git commit -m "Initial mmaps commit""
  • Switched back to master with "git checkout master"
  • Did "git merge mangos"

All I got from the merge is listed below. Why is this so hard? SVN smokes this crap!

Updating d23f08f..0274b48
Fast-forward
mangos |    1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 160000 mangos

*UPDATE*

I think I figured it out. I didn't realize git was so stupid that when you added a directory, it didn't include the files inside of it. I made a backup (via cp -R) of the ~/src directory after cloning the two repos into it before I started. I deleted the ~/src directory, then restored my backup and did the following.

  • git add ./server/.
  • git commit -m "Inital server commit"
  • git branch mmaps
  • git checkout mmaps
  • git add ./mangos/.
  • git commit -m "Initial mmaps commit"
  • git branch master
  • git merge mmaps

After that, I got a ton of output. So much in fact, that PuTTY wouldn't let me scroll up to the start of it. I checked for errors using "git merge next", but there were none, so I am assuming I did this correctly. I am about to attempt a build and will post the results in a bit.

Link to comment
Share on other sites

[EDIT]: It appears you may have solved your troubles as I was typing the following, but I'll go ahead and post this on the chance it may clarify some things for you...

If a lunk like me can grasp the essentials of Git, I assure you that you will find it to be child's play, if you can set aside any prejudices long enough to help you get up and running with a server that supports movemaps.

Instead of cloning both, try just cloning Zero master, then do a pull of mmaps into master. This will do a fetch+merge of the mmaps code into your local master. It's a quick and dirty way of doing it.

If you'd prefer to independently maintain both branches for future updating, then try this:

Now the following is how I do it, and I'm sure there are simpler ways, but it independently tracks specific branches:

create a directory to hold your Zero repository then initialize it with git init.

For Zero master create a remote entry and fetch the tag marked "master" from remote "origin":

git remote add -f -t master origin git://github.com/mangos-zero/server.git

then create the branch named "master" in your local repo and set it to track only the master:

git branch master --track origin/master

now create a remote and fetch the zero mmaps:

git remote add -f -t feature/movemaps mmaps git://github.com/mangos-zero/server.git

then create a branch named "mmaps" and set it to only track the movemaps branch found in the remote repo "feature/movemaps"

git branch mmaps --track mmaps/feature/movemaps

If you execute git branch by itself, it will list all current branches in your local repository. Which should be just:

master

mmaps

To view and work with your code, checkout to the branch you want:

git checkout master

and you will suddenly see all the files and folders generated inside your Zero directory. If you were to checkout to mmaps instead, it would switch those files and folders to match mmaps. This is because all the files and folders are stored virtually in the .git folder and do not actually exist until you do a checkout to pull up that data.

To update your code, checkout to the branch you want then do a fetch and merge of the upstream code:

git checkout master

git pull origin <---you use "origin" here because that is the remote name used for the master repository.

Then do the same for mmaps:

git checkout mmaps

git pull mmaps

Now comes the fun part. You want to merge mmaps into the master branch. Now you could do this right away and then mess with all sorts of esoteric commands to then restore your master or mmaps to a pristine state afterwards, but I find the simplest way to start with until you do master that other stuff is to create a working branch, add the master to it, and then do your mmaps merge:

First, checkout to master with git checkout master, if you're not already there.

Now create your working branch.

git branch working

git checkout working <----always make sure you checkout to the branch you wish to work upon!

git merge master <-----add the source code from master into your new working branch.

Git may tell you the code for master in your working branch is already up-to-date. One of the quirks in Git is that it can automatically do a merge of the code from the branch you're checked out to when you manually create a new branch. To make very sure working has the code from only master, you could set it up so working also is linked to the master remote.

git remote add -f -t master working git://github.com/mangos-zero/server.git

git branch working --track working/master

then checkout to working

git checkout working

I know more experienced Git users will break out in hives for seeing such redundancy, but we're going for simplicity rather than elegance.

now we merge mmaps into the master inside your working branch:

git merge mmaps

At this point, Git may report some merge errors. If you're familiar with resolving such, then you ought to be able to handle the rest.

Once done, you run the code in working through your compiler and you should have binaries that now support the use of movemaps.

Using a working branch is a basic way to keep your local master untouched, but still hack away at the code. Once you're done, it also allows you to clean out working using git reset --hard and then keep it updated with master using git pull master.

git rebase is a command you really should master to make keeping your changes while still using the latest upstream sources a bit easier.

Link to comment
Share on other sites

My way did not work. It still complains about the maps files, so I don't think that my merge worked correctly. It's OK though. I just deleted everything in home directory except the system files (.bash_profile, .bash_history, etc) and the zip archives of scriptdevzero and the database. I will start fresh now and try not to go murder the git team. Will post back in a bit with the results. Thanks for the help!

*EDIT*

Wait, is the mmaps you listed the one for zero or the one for newer releases? I can't even pull from it. Fails to resolve. I have this for mmaps_zero:

https://github.com/faramir118/mangos/tree/mmaps_zero

git://github.com/faramir118/mangos.git

Is one of those correct? I am assuming the https one is what I need.

Link to comment
Share on other sites

My repository is very outdated. TheLuda and Salja have updated mmaps' zero version and are hosting it in the official zero repository in the feature/movemaps branch.

Usually, the git protocol (git://) is faster than git-over-http (http:// or https://). It only affects fetch (pull) and push commands, so it's not a big deal which you use.

I highly recommend following UnkleNuke's advice about using a special 'integration' branch where you merge all of the interesting forks/branches to do your compiling.

And maybe you (and others) can get some use out of this cheat-sheet I made for my coworkers.

Link to comment
Share on other sites

Ah! That would be one of my problems. I found a thread on these forums started by yourself pointing me to your branch, and I assumed it was the latest and greatest. I just realized also that I could not pull from the branch that UncleNuke gave me (mangos-server/server.git) because it is the wrong one. The one you linked is downloading as we speak. Oh and I am using his advice and following the guide he posted above right now.

By the way, it's nice to see that the devs actually respond to posts here. I have given up on other projects (not WoW-related) due to the lack of developer support. Thanks for your efforts and your help!

*UPDATE*

followed the guide to the end and all is good. I created the working branch and did the checkout, then when I merged the others, I got this:

<hidden>@WoW01:~/wow-src$ git branch working
<hidden>@WoW01:~/wow-src$ git checkout working
M       dep/libmpq/win/VC100/libmpq.vcxproj
M       dep/libmpq/win/VC90/libmpq.vcproj
M       dep/libmpq/win/libmpq_VC100.sln
M       dep/libmpq/win/libmpq_VC90.sln
M       dep/tbb/build/vs100project/makefile.sln
M       dep/tbb/build/vs100project/tbb.vcxproj
M       dep/tbb/build/vs100project/tbbmalloc.vcxproj
M       dep/tbb/build/vs100project/tbbmalloc_proxy.vcxproj
M       dep/tbb/build/vsproject/makefile.sln
M       dep/tbb/build/vsproject/tbb.vcproj
M       dep/tbb/build/vsproject/tbbmalloc.vcproj
M       dep/tbb/build/vsproject/tbbmalloc_proxy.vcproj
Switched to branch 'working'
<hidden>@WoW01:~/wow-src$ git merge master
Already up-to-date.
<hidden>@WoW01:~/wow-src$ git merge mmaps
Already up-to-date.

So nothing was merged? Trying to figure this out. If this is good, then I am ready to build.

Don't know why the code block is ignoring my carriage returns...

Link to comment
Share on other sites

That "cheatsheet" you authored is very nicely done, faramir! :cool: I wish that one were posted and stickied in the Source Code Management section for all the Git newbies.

Xenithar, I apologize for misleading you. I mistakenly typed mangos-server when I meant mangos-zero in the Git URL provided for fetching movemaps. The post has been corrected.

I know keeping track of all these repositories, and grabbing the proper sources from the correct places, can be a bit confusing. Getting it right does make all the difference between a working server and a crashed mess. Everything you will need can be found at the official MaNGOS-Zero repository. The code in the branches has been ported for compatibility with Zero.

It looks like Git is not correctly generating the source trees. Did you create a fresh repository and initialize it before following the steps outlined? You may have some "trash" leftover from previous pulls and merge attempts in your .git folder, which holds the virtual data for the repository.

Try fetching and making the branches for master and movemaps, but make sure you're checked out to master before creating the working directory. Then checkout to working, merge master, then merge movemaps.

I'll add these steps to the guide for clarity.

Link to comment
Share on other sites

I started from scratch, new directory and all. It is building right now. I was in master when I created working. May try it again for good measure.

*UPDATE*

I stopped the build process, performed a clean, moved to the root of my home directory, and deleted ~/wow-src. I then recreated it, moved into it, ran git init, and am currently adding the remotes. Will update once I get back to the end of the guide again.

Link to comment
Share on other sites

I updated the guide, to clarify a few things. Hopefully, this will have you up and running with a Zero server supporting movemaps.

Take it slow and careful. I know as your frustration grows, it's difficult not to get in a rush and make mistakes.

To help you with the way Git tracks files and folders, you might want to add some entries to the exclude filter specific to MaNGOS. You'll find the exclude file inside .git/info/ directory. Edit it with these entires:

# git-ls-files --others --exclude-from=.git/info/exclude

# Lines that start with '#' are comments.

# For a project mostly in C, the following would be a good set of

# exclude patterns (uncomment them if you want to use them):

#

# Normal rules

#

*~

.*

*.o

*.o.*

*.a

*.[oa]

*.so

*.so.dbg

*.bin

*.gz

#

# Top-level generic files

#

tags

TAGS

INSTALL

!.gitignore

#

# Build generated files

#

aclocal.m4

autom4te.cache

compile

config.guess

config.h.in

config.log

config.status

config.sub

configure

depcomp

libtool

install-sh

ltmain.sh

missing

stamp-h1

#

Makefile.in

Makefile

#

# Editors / debuggers / other output files

#

*~

*.bak

*.orig

*.patch

*.diff

callgrind.out.*

#

# Directories for local workflow that is not to be

# included in commits to remote repositories

#

patches/* <--- I use these entries so Git will ignore folders created to hold

sql/patches/* <--- .patch/.diff files and sql queries such patches might require,

# <--- but I haven't yet merged them into my sources.

#

# VS binaries output

#

bin/*

#

# Special exceptions

#

!dep/ACE_wrappers/ace/ace_message_table.bin

Link to comment
Share on other sites

I already redid the steps in your guide and this time the merge with mmaps spewed a bunch of info. No errors though. It is already building with mmaps support. Glad I burned the vmaps, dbc, maps, and mmaps to CD last week! Should just plop them into my data directory and enable them in the config and cross my fingers. I will update this post once the build completes and I can test everything.

Link to comment
Share on other sites

×
×
  • 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