1 | Here you find a visual debugging tool. With that you can check it yourself. You need to compile it |
---|
2 | yourself or just use the precompiled version. The precompiled version should not need any |
---|
3 | additional libraries. If you try to compile it yourself you need G3D library 7.00 and |
---|
4 | SDL 1.2.8 or higher. |
---|
5 | |
---|
6 | There is NO how to compile support.... You will manage it, if you need to... |
---|
7 | |
---|
8 | What does it do? |
---|
9 | |
---|
10 | The program analyses the content of the vmapcmd.log file created by [b] mangosd compiled |
---|
11 | in debug mode [/b] with vmap support. The commands written to disk are read and the result |
---|
12 | is displayed in a graphical view. This view shows a wire frame model of the loaded vmaps |
---|
13 | and you can move in these maps. Furthermore you can see witch line of sight query where |
---|
14 | performed and its result. You are able to perform the ling of sight query again and will see, if |
---|
15 | the current version of the vmap source compiled against the debugger, produces the same |
---|
16 | result. This last function is useful for debugging the line of sight code. |
---|
17 | |
---|
18 | The little program is a real hack, but is fits is purpose. |
---|
19 | |
---|
20 | How to use it: |
---|
21 | |
---|
22 | [b]Logging[b] |
---|
23 | You will need to set _VMAP_LOG_DEBUG when compiling core in debug mode to get this log. |
---|
24 | If mangos is compiled in debug mode it will then write the vmapcmd.log file. The file does only |
---|
25 | contain the information which vmaps are loaded. I addition to that the file need the |
---|
26 | information where your character currently in standing in the maps. This position information |
---|
27 | has to be inserted manually. To do that I modified the .announce command to send the |
---|
28 | position of the current character to the log file (modification is in the attached patch). |
---|
29 | |
---|
30 | The line of sight query is only stored in the log file if you enable this kind of logging. This is |
---|
31 | done by performing the modified .gm off command. Enabling line of sight and moving your |
---|
32 | character a bit will log the queries and there results. Dont do this for log, it will produce lots |
---|
33 | of data, which is hard to analyze later. |
---|
34 | |
---|
35 | The modified command .gm on will stop the logging of the line of sight calculation. |
---|
36 | |
---|
37 | What do you have to do for logging? |
---|
38 | 1. Apply the patch to mangos to modify your .announce, .gmoff and .gmon commands |
---|
39 | 2. Compile mangos in debug mode |
---|
40 | 3. Go to the position where you suspect a problem |
---|
41 | 4. Use .gmon to be sure you will not be attacked when you login |
---|
42 | 5. Save, Logoff and stop mangosd |
---|
43 | 6. Delete the vmapcmd.log from the mangos dir. The logger will append to that file. |
---|
44 | 7. Start mangos |
---|
45 | 8. Login with your character |
---|
46 | 9. Send your position to the log file. Do this with the .announce command (.announce |
---|
47 | foo) |
---|
48 | 10. Type .gmoff enabling the line of sight logging |
---|
49 | 11. Move a bit to get the attention of the mobs |
---|
50 | 12. Type .gmon to stop the logging |
---|
51 | |
---|
52 | [b]Analysing the log file[/b] |
---|
53 | 1. Start the vmap debugger with the path to the mangos data dir and the full path (name) of |
---|
54 | the log file |
---|
55 | 2. The debugger is controlled by single keys and the mouse. Here is a list of key commands. |
---|
56 | The result is displayed at the console: |
---|
57 | |
---|
58 | l (small L) Load the next block off logging data into the command queue and process the |
---|
59 | first command from the queue. When the end is reached a message end reached is display at |
---|
60 | the console. If you reached the you can press l again. Sending .gm on sets an end mark to the |
---|
61 | file. You have to load the next logging block after each .gmon command. |
---|
62 | |
---|
63 | r Reload the last command block |
---|
64 | |
---|
65 | mouse middle click process the next command from the queue |
---|
66 | |
---|
67 | mouse left click reprocess the last command from the queue |
---|
68 | |
---|
69 | c recalculate the last line of sight command and send the result to the console |
---|
70 | |
---|
71 | w,s,a,d move within the 3D view |
---|
72 | |
---|
73 | ESC exit |
---|
74 | |
---|
75 | TAB release/grep the mouse |
---|
76 | |
---|
77 | [b]How to test the included example with the precompiled version with the included |
---|
78 | vmapcmd.log file:[b] |
---|
79 | |
---|
80 | open your console |
---|
81 | move to the contrib\vmap_debugger\bin directory |
---|
82 | run: vmapdebugger.exe <your mangos data dir> vmapcmd.log |
---|
83 | Wait until the block screen is open and arrange the console and the screen, so you can see |
---|
84 | both |
---|
85 | Press: l (small L not one) |
---|
86 | click middle |
---|
87 | click middle |
---|
88 | click middle |
---|
89 | |
---|
90 | Now you should see the wire frame model of scholo and the green line of sight line in the |
---|
91 | display. The green line means the test was performed and you are seen. A red line means you |
---|
92 | are not seen. Move around a bit with the mouse and the w,s,a,d keys. |
---|
93 | |
---|
94 | Press c |
---|
95 | Press ESC |
---|
96 | |
---|
97 | [b]Problems with your gfx.card[/b] |
---|
98 | Maybe the program does not woth with your graphics card. In this case you have dad luck. |
---|
99 | One think might help, if not .... I do not know...: |
---|
100 | |
---|
101 | Here I take 60 MB Ram from Gfx-Card [b]VARArea::create(1024*1024*60)[/b]. That |
---|
102 | might cause problems on your system. |
---|
103 | |
---|
104 | [code] |
---|
105 | ModelContainerView::ModelContainerView(GApp* pApp) : GApplet(pApp) { |
---|
106 | i_App = pApp; |
---|
107 | |
---|
108 | iCommandFileRW.setFileName(gLogFile); |
---|
109 | iCurrCmdIndex = 0; |
---|
110 | iVMapManager = new VMapManager(); |
---|
111 | iDrawLine = false; |
---|
112 | |
---|
113 | iVARAreaRef = VARArea::create(1024*1024*60); |
---|
114 | iInstanceId = -1; |
---|
115 | |
---|
116 | } |
---|
117 | [/code] |
---|
118 | |
---|
119 | This should give all of you who, are interested the chance to check the content and behavior |
---|
120 | of the vmaps. |
---|
121 | |
---|