|
Pyramid of the Magician + Bots
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
A couple of years ago I created a map called Pyramid of the Magician and it had a lot of awkward brush shapes
everywhere, on the floors, walls and ceilings. It had far too many crazy angles and to be honest,
I was not surprised at the time that no bot file was created for it.
There were countless problems with creating the bot file and most of them centered around bspc.exe
and the way it generated the AAS file. I am sure you are thinking why not just bot clip the original map?
Unfortunately it was not that easy because bspc.exe still loaded in all the other brushwork buried in bot clip and eventually
ran out of memory. I needed to create a special "light" version for the bots, that excluded all the
excessive detail so that it could compile.
After speaking to Mr Elusive and Ydnar an idea was suggested to create a special map which could
be used to create the bot AAS file that in turn could be re-attached to the original BSP file. After a lot
of discussion and testing I could not get the feature to work right and bot support was not included in the
original map zip file. Eventually I published the map, wrote an
article on alpha terrain blending and moved on.
Recently someone at Q3W had found a
way to get the q3map2 parameter to work correctly and that gave me the idea of trying to get bots to work for
Pyramid of the Magician again.
|
|
|
|
|
|
|
|
| |
|
|
Now that I had a working example of how the AAS file could be attached to a different BSP file it was time
to create a procedure that would work with the old map file that I created years ago. Initially I tested
the procedure line by line making sure it worked and then created two batch files to do the process
automatically.
Batch File 1
@echo off
@set Q3_PATH="C:/Program Files/Quake III Arena/"
@set COMP_PATH="C:/Program Files/Quake III Arena/q3map2/q3map2.exe"
@set MAP_PATH="C:/Program Files/Quake III Arena/baseq3/maps/%1.map"
@set BOT_PATH="C:/Program Files/Quake iii arena/q3map2/bspc.exe"
@set GEN_OPTIONS=-fs_basepath %Q3_PATH%
rem Special Bot file
%COMP_PATH% -meta %GEN_OPTIONS% %MAP_PATH%
%BOT_PATH% -forcesidesvisible -bsp2aas %MAP_PATH%
The first batch file is run on the bot only map. It does a basic q3map2 compile
(In theory the -vis stage could be skipped but it was so quick it did not really matter) and then
does a normal BSPC compile. I had to use the -forcesidesvisible parameter because all of the floor
in the original map was terrain. I did experiment with flat bot clip floors, but the bots just spent
most of their time floating above the terrain instead.
After the batch file is complete a working bot AAS file is created, but it is attached to the wrong map file.
I manually renamed the AAS file to match the original map file but this process could be automated.
I paused at this point because I wanted to see what cluster portal area's had been created and decide
if I need to do anymore changes to geometry.
If the cluster portal arrangement was bad I would go back to the bot map file and tweak things a bit more.
I also removed all lights, terrain alpha textures, non solid patches and models from the bot map.
I even removed all wall / ceiling details and turned most rooms and corridors into huge flat caulk faces.
Visual textures in a bot map file don't really mean much, so most of my work was done with caulk.
One thing I did find while testing was that the final AAS file was merged with original map geometry
in game so you can force the bots to do certain things. When I removed all the wall brushes I thought
the bots would just fall out of the map, but they did not. They would often beat themselves senseless
against corners because they did not believe they existed, but they did in game.
One problem I had with the bots was they would pull back, while in the air after hitting a jump pad.
In the original map file the brushwork after the jump pad was gradually sloped down but the brushwork in the
bot file I changed to be flat and the edge was a lot further back. This had an interesting effect because the bots
would then used the air control of the jump pad to move forward instead of back and then land correctly.
If they missed for some reason, the original map geometry was still there so they did not fall into
the gap, but bounced off and down only to try again.
|
|
|
|
|
|
|
|
| |
|
|
Batch File 2
@echo off
@set Q3_PATH="C:/Program Files/Quake III Arena/"
@set COMP_PATH="C:/Program Files/Quake III Arena/q3map2/q3map2.exe"
@set MAP_PATH="C:/Program Files/Quake III Arena/baseq3/maps/%1.map"
@set BOT_PATH="C:/Program Files/Quake iii arena/q3map2/bspc.exe"
@set GEN_OPTIONS=-fs_basepath %Q3_PATH%
%COMP_PATH% -fixaas %GEN_OPTIONS% %MAP_PATH%
%COMP_PATH% -meta %GEN_OPTIONS% %MAP_PATH%
%COMP_PATH% -vis %GEN_OPTIONS% %MAP_PATH%
rem FINAL
%COMP_PATH% -light -fast -patchshadows -samples 3 -bounce 3
%GEN_OPTIONS% %MAP_PATH%
%BOT_PATH% -optimize -reach %MAP_PATH%
The second batch file is run on the original map. It fixes the AAS file to work with the original map
file, does a complete vis/light stage and finally optimize's the AAS file. Unfortunately there are 3
problems with the -fixaas parameter in the q3map2 2.16 version as follows:
- The compiler says the parameter is invalid, but yet still seems to work!
- The -fixaas parameter trashes the light map (most of the time) in the original bsp file so
you have to re-compile the original map again.
- The bot AAS file has to have a newer date than the original bsp file so you have to end the process
by optimising the bot file so that it is regenerated and work correctly with the original bsp.
|
|
|
|
|
|
|
|
| |
|
|
This has been a long journey for this map, but finally I have been able to produce a bot file which is
strangely rewarding after all this time. If it had not been for a user over at
Q3W investigating the
-fixaas parameter and producing a working example then this bot version of Pom would have never
seen the light of day.
I know a couple of people have expressed interest to me about re-creating bot files for other maps,
but this parameter was really created to get around bspc.exe compiler limitations not be some extra
optimizations stage. Yes in theory this parameter could be used to tweak AI behaviour, but this would involve
maintaining 2 versions of a map file and that is something I would not recommend.
Overall the bots should be enjoyable as they travel most of the map and get to all the special area's
that I had originally set up for human players. If the door at the top of the temple is opened then the
bots will get the power up inside, otherwise they keep checking the door. There is a couple of places
where the bots get caught up on geometry but the portal clusters for the map overall are so good I am
going to leave this version alone.
Sometimes while running a server I would run out of memory due to some of the portal cluster area's
being so large and the bots consuming lots of memory. If this happens I recommend you change the
parameter com_hunkmegs to 64 and restart quake3. The default is 56 if you want change it back
afterwards.
Hope you enjoy the bot support.
Sims
|
|
|
|
|
|
|
|