Post tutorial RSS What Goes in to Making an AVP Map Conversion

Here I describe the process and many (if not most) of the details of what goes in to making map conversions for this game, using AvP2-Compound (released July 25, 2022, done by myself and Cracco) as a direct example.

Posted by on - Advanced Mapping/Technical

In this article I will outline the process of making a map conversion in AvP Classic 2000. You can download the finished map here. This presumes you have the official tools necessary for everything already installed.

A picture of the AvP2 map opened in the AvP2 map editing software

The first step of the process is to convert the map type into a readable file type for Aliens versus Predator. For AvP2 conversions, first you obviously have to have AvP2 working as well as the most up-to-date AvP2 tools. These are free and publicly available so if you don't have them, get them. We need to get the map file to a readable format for 3D Studio Max R3. AvP2 reads maps in .dat file format, however, DEdit requires the map file to be in .ed format in order for us to do anything with it. If you have the .ed file, you can skip to the next paragraph. Otherwise, you will need thecanonmaster's LTWorldConv.exe program. Get the program, then put it in a sub-folder in the Aliens vs. Predator 2 directory. Put the map you want to convert from .dat to .ed in the same folder for convenience (download the tools, run unrez.bat in the tools folder and if you still don't find it, unrez any and all of the rez files until you get it). Create a text file and put this as the top line (without the quotes): "LTWorldConv.exe -f MapName.dat -e MapName.lta -s physics -g poly" where MapName is the name of the map, obviously. Save the text file as a .bat file and put it in the same folder. Run the .bat file and it should give you a file like Compound.dat.lta. I suggest moving that map file to Aliens vs. Predator 2\AvP2\Worlds. Now open DEdit (in the tools folder). Go to File -> Open Project -> AvP2.ded. Select new world, it doesn't matter what name you give it. It should ask you if you want to select pre-fabs, just say yes. Go to File -> Import World, then change the filter to .lta and choose the .lta map file. Go to File -> Save World and save it as a .ed file, then close DEdit. Now, launch DEdit again and open the project (AvP2.ded) again. It should tell you that it needs to update the objects, this is correct, so let it do that. Now you can save the map as a .obj file.

In case you skipped the above paragraph, it was a long explanation on how to convert from .dat to .ed, so at this point you should have the map's .ed file. Open DEdit, open AvP2.ded as a project, then open the map editor (.ed) file, in this case, Compound. Convert the map to .obj and when it gives the option, flip normals. Now you have the map as a .obj file. Using the program Spin 3D Mesh Converter, convert the .obj file to a .3ds file type (making sure to enable the "remove duplicate triangles and vertices" option in Effects). We had to do this extra step because 3D Studio Max, the 3D modeling program that can convert to a .RIF file type for AvP, can't read either .ed files or .obj files. Now, finally, you can open the .3ds file in 3D Studio Max R3.

Side note: you can use this same process for other games/engines. For example, to convert Unreal Engine 1 maps, export a .unr file to .t3d via UnrealEd, then convert .t3d to .obj via a somewhat new bootleg tool (look it up yourself), then use Spin 3D Mesh Converter to convert the .obj to .3ds, then you can open it in 3D Studio Max. I have also used this method for maps in Unreal Tournament, Half-Life 1, Half-Life 2, Halo, Doom 1 & 2, SWAT 4, and no geometry got lost. Naturally this means you can create a new level for AvP in DEdit, UnrealEd, Hammer, ZDoomBuilder, etc. and convert to AvP without having to build the map in a completely obsolete version of 3DS Max, but I digress...Note that once you open the map in 3DS Max, the whole map may be entirely at an angle, and if so then it must be rotated to be completely level with the x-axis. Next, create a box in the middle of the map called hudson (with proportions 1 length x 1 width x 2 height), and in the center of that, create a dummy object called nucleus. It's important to note (as I'll mention later on) that the scale of certain maps may correspond poorly with AvP, so while the hudson (which is the player's dimensions) should be proportionately 1x1x2, it can and should be scaled to the map generally in the right ballpark so it doesn't make the player a tiny ant or a giant behemoth. For Compound, I used a scale of 35x35x70. With that, export to .RIF and the file will finally be ready.

The map is still not playable in-game yet. Open the map in Inteng (short for Interface Engine, which is located in the folder Fox\Aliens versus Predator\Tools), which is the main map editor. Go to Object mode, then create a generator somewhere convenient like in the center of the map, name it, then edit it and put a checkmark for Multiplayer Start. Then go to lighting mode and press D to drop a light in the air in the map's middle. Give it a brightness of 100%, a very high range of 200+ meters, and also enable omni, runtime, and no-pre-lighting settings. Now move it to your avp_rifs\custom folder and when you look in your multiplayer map list you should you should be able to load the map, see the map's geometry, and run around.

Untextured 'banana' version of the map

Isn't it beautiful? We affectionately refer to a map's preliminary untextured version as a "banana version" since all untextured polygons (or faces) show up as yellow in-game. There are no textures, no sounds, no sky, and no special functions or features. At this point we run around, get a lay of the land, get a sense of scale and mobility, see if anything's not showing up, and also find spots where geometry might need to be smoothened, since irregular geometry often stops the player. The next task is to texture the map. Obviously to get started with that, you need to get all of the original map's textures. This will vary from game to game, but for AvP2 this will require using DEdit again and converting the textures to .BMP (bitmap format). To identify a texture in a map in Dedit, select a brush in brush mode (ctrl+B), then switch to geometry mode (ctrl+G), right-click and choose Select Texture. The texture name will appear in the bottom left-hand corner and it should automatically direct you to the texture in the directory. Export each texture as a .TGA file, then convert to .BMP. If you're converting a map like one from Half-Life, you can try to find a version of the map in Half-Life 2, open it via console, enable sv_cheats 1, and use the command mat_crosshair to identify the material texture at your crosshair. Once you have the textures in .BMP it can be converted to .RIM format (Rebellion Image File) via texconv.exe (Texture Converter) in the Fox tools. Set up a folder in C:\Program Files (x86)\Fox\Aliens versus Predator\graphics\envrnmts and those .RIMs to the folder. In ccamain, load the map and specify the right folder directory, and then when loading the map through Inteng you can see all the textures in texturing mode. If the textures still don't show up in-game, you may have to save the .BMP files as 8-bit instead of auto-detect or 24-bit. Of course don't forget to create the same path directory in your AvP Classic folders (graphics\envrnmts\yourmap). Now comes the tedious task of doing a first texture draft over everything so that no polygons are untextured. Technically you can do this in 3D Studio Max if you want, with the textures as .BMP format, but I find it much easier to do in Inteng. If any part of the map looks out to the sky, then the main area can be given the "sky visible" flag in object strategy mode in Inteng. Take a look at the slow progression of AvP2-Compound from banana mode to a fully textured version.

Picture of the map with some textures added

Image of the map with significant texturing progress

Image of the map completely textured

The main bulk of the texturing work is usually done during this first draft, but since there still may be changes and since things won't be perfect, the first texture pass is considered a draft. However, it's ideal to get it right the first time. Once the first texture pass is done, then we move on to adding pickups. While it might seem like the pickups should be saved for a late stage, we've actually had bad luck with pickups in the past, so it's better to get them out of the way near the beginning. This was no different. In the first build of AvP2-Compound, the pickups made no sound when they were destroyed. I soon discovered that the reason was because the map scale was too shrunk down and that the hudson in 3DS Max needed to be bigger. Unfortunately this meant starting all over again, but luckily the texturing was fresh in my mind and I was able to do it all again in a day. Pickups were chosen based on their AvP2 placements, however in several places we used our discretion and discernment for good placements to shift things around a little. In AvP2, players don't get caught on items as they do in AvP Classic, so whereas a flamethrower in the middle of a walkway might be fine in AvP2, it will cause tripping for at least the predator and alien in AvP Classic. Balance considerations have to be made regarding the orb placements too, since it's such an important pickup for predators.

An image showing a couple of placed pickups

In addition, I had the idea of replicating the USCM and Corporate ammo boxes that would dispense certain ammo types. In order to accomplish this, I had to make the ammo box models and texture them accordingly. Once placed in the map, the ammo types would also have to be imported, then placed inside the ammo boxes. The USCM box contains ammunition for explosives (pulse and SADAR rockets and grenade launcher ammo) where the Corporate box contains bullets (pulse, smartgun, and minigun bullets as well as flamethrower napalm). The ammo boxes had to be made indestructible so the ammo inside additionally remained a permanently obtainable pickup for the marine.

An image showing the USCM ammo box as well as the pickups obtained at the top of the screen

At this point, the pickups will be tested for balance and incentivizing moving around to different parts of the map. Once this was done, we had to figure out how to deal with ladders. In AvP2, there is a ladder-climbing ability that AvP Classic lacks. When we run into a problem like this, we usually look at how other maps deal with the same problem, and this had already been tackled by Mad_Max_RW in his own map conversions of ALesserFate and Leadworks. He used an invisible staircase model for jumping up ladders, which was based on an old Doom trick to zip the player up. We extracted the model, made it invisible ourselves, and imported it into Compound. There needed to be two different sizes, one for the tunnel and a smaller one for the watchtower. Later on we would realize that the player could instantly zip up the ladder if he jumped at the sides, so the invisible staircase models needed to have more polygons added.

An image showing an invisible helper object to scale ladders by jumping into them

With the ladder models in place, more work on visual detail, particularly in the sky, began. Various sky colors were tested, and different ideas about skyboxes were tried out. Take a look at the following options that were considered.

Example of the sky with just clouds and the color changed in ccamain

Example of the sky with a solid texture at the ceiling

Combination of light green clouds and a translucent sky texture

AvPC doesn't have a dynamic skybox and in fact really no map uses a solid texture sky texture with fog, like what you'd expect with more modern games. We ultimately went with the AvP2 upper sky texture with the stars carefully removed one by one in Paint.NET, then made it a translucent layer underneath a green cloud cover. Once the sky was in place, work on sounds began. The original map's sounds are considered, however Compound surprisingly only has two ambient sounds in AvP2, and Unreal Tournament maps often have even fewer. We decided to use a large variety of sounds, two of which came from AvP2 (one was the ambient jungle sound and the other was a cave dripping sound that actually came from a different map). All other sounds came from AvP maps. The sounds needed to make sense; for instance, in the underground passage is low rumbling and the sound of cave drops, near the tunnel entrance is an ambient sound of air in a vent, near the trees are sounds of birds and insects, at the tops of the cliffs is the sound of wind, and in one corner is a sound of a distant waterfall to give the different sections some contrast and realism. In addition to that, there also needs to be variety of sounds so the player's not just listening to the same one wind or cricket sounds over and over again. Sometimes this entails editing the game's sounds in programs like Audacity.

Picture of sound objects (denoted by 'S') in the map editor

After the first sound pass was made, then came the task of making tree foliage. In the original conversion, the tree canopies did not transfer to the 3D model because the tree canopies are actually just a visual effect in AvP2 and they have no collision, so the canopies had to be created in Inteng itself. This entailed creating geometry, moving it around, and expanding the foliage texture and giving it transparency in texconv. After this, we then had to smoothen the map to aid in mobility. The first area we tackled was the upper part of ladders, which inexplicably stopped the player. The next section was the netting around the walkways, which were the most egregious in stopping the player, even getting them stuck. Many invisible helper polys needed to be added to smoothen wall-walking on the top and bottom and around the sides. Lastly, the fences that surrounded the perimeter were pretty sufficient already, but for the sake of convenience we smoothened the sides to let the alien wall-crawl from the side to the top without having to climb on the underside of the top wire.

The intentionally untextured polys with green borders are invisible in-game, there to aid in smooth movement

After the geometry was smoothened came the unenviable task of splitting the map into different modules. Modules are essentially cubes that tells the game the player's location, only some of which are culled at any one point in time to save on memory. If they're not visible, they don't need to be culled. These are also known as visgroups in other games. This is done to optimize the map when there are things like many lights, track objects, and explosions. This gets done before the lighting is built because lighting tends to break a lot when intensities are saved and then the geometry is broken into smaller modules afterward. I was initially afraid of the module splitting because essentially the whole map needs to be visible at all times, however it worked out just fine with the player being placed in just one module the majority of the time and with various sub-modules underneath.

After the module splitting was done, we had to limit the upper area of the cliffs and make sure the player couldn't fall out of the map. This required us to create damage and death volumes, as well as creating invisible polygons that would serve as a barricade so the player would stay inside the map. These aren't the same as player clips (because that hinders movement), but they kill on collision anyway and this is just a similar way to prevent players from going out of bounds.

Intentionally untextured polys added to prevent the player from falling out of the map

After some extensive testing and small bug fixes, the first lighting pass was built. The way light shows up in Inteng doesn't always match how it looks in-game, so it needs to be played through and changed extensively. After the lighting was almost entirely set, we decided to throw in a coop mode to this map. We chose to set it at night so there wouldn't have to be any lighting. However, coop mode presents its own share of problems, particularly in an open map like this. Alien NPCs can only spawn in modules that are unlinked to where the player is standing, yet the main outdoor area has to be entirely connected. We got around this by making the invisible polygons at the top of the cliff their own unlinked modules, seeing as the don't have to be visible anyway. This allowed aliens to spawn into the map in coop mode. With the night-time mode, we experimented with varying levels of light, from a dim twilight (which we went with) to 100% pitch black.

Very dark lighting for coop version of the map

Pitch black (completely black except for flares, fire, and explosions) for coop version

Somewhat dark,

The last few days entailed the most amount of work on polishing the last 1-2% of the map. Smeared or distorted textures, overly large or small sound ranges, and sub-optimal lighting tended to be the biggest problems. We constantly created new builds that would solve one issue, and then discovered that it created another (usually with lighting). Some of the bugs that showed up were annoying particularly because they were so obscure to even find. For example, one issue we had was looking at one part of the map in the predator's thermal vision, at which point the player would see it glowing light green instead of blue. Finding and fixing these minor problem, we believe, is the difference between a good map and a great one.

Final textured version of AvP2-Compound

After running through the map countless times looking for bugs, we finally reached a point where we were satisfied with the map's state, at which point we now present it to you. We hope you enjoy playing on these map conversions and now come away with knowing at least a little bit more of what goes in to map conversions for AvP and can see some of the choices we made, challenges we faced, solutions we created, and fun we had making this map, and hopefully at least a few more!

Earliest version of map on left, final version of map on right

Thanks for reading!


LithTechGuru - - 399 comments

One thing you probably should mention is that .ed files are only level editor files. The actual map files that AVP2 read are .dat. Which are compiled through the compilation process. There's currently no known way to convert .dat to .ed. So for any maps that there isn't a .ed for there's no way to convert them to .obj.

Reply Good karma Bad karma+1 vote
Olde Author
Olde - - 53 comments

I've just learned of a relatively new conversion process from .dat to .obj that I tested myself and confirmed to work. I've updated this information in the guide.

Reply Good karma+1 vote
Guest - - 687,512 comments

Thanks, anyway can sentry gun load just like marinebot do? i try leadworks hope sentry gun can put any level but the problem leadworks got error with windows 10

Reply Good karma Bad karma0 votes
Olde Author
Olde - - 53 comments

No. For one, there is no console command to spawn sentry turrets. For another, sentries do not spawn in multiplayer game modes at all in AvP Classic. They only appear in single-player.

Reply Good karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.