Here I describe the process and most (if not all) 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.
The first step of the process is to convert the map type into a readable file type for Aliens versus Predator. AvP2 map files are .ed files, read by the editor DEdit. So first you obviously have to have AvP2 working as well as the most up-to-date AvP2 tools. First you open AvP2.ded as a project in DEdit, then you open the map (.ed) file, in this case, Compound. In DEdit, you can 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. Before going forward, the map may be entirely at an angle, so it needs to be rotated to be completely level with the x-axis. Next, you create a box in the middle of the map called a hudson (with proportions 1 length x 1 width x 2 height), and in the center of that, you 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 the hudson (which is the player's width and height) can be scaled differently. For Compound, I used a scale of 35x35x70. With that, you can choose export .RIF and the file type will finally be ready.
The map is still not playable yet. It needs to be opened in one of the main AvP tools, ccamain (Central Control Main), where many of the map parameters are controlled. It must first be loaded or imported there, then saved for anything to work. Now it can be opened in Inteng (Interface Engine), the main map editor after the geometry has been created. First you'll see how the scale of the map looks and if it's still too big, you do a general environmental scale in ccamain. Now you create a spawn point somewhere convenient (usually in the center of the map) and drop a light in the middle and in the air, giving it a brightness of 100%, a very high range of 200+ meters, and also enable omni, runtime, and no-pre-lighting settings. Now you should be able to load the map in the game's multiplayer, see the map's geometry, and run around.
Isn't it beautiful? We colloquially 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 map's textures from AvP2, which requires using DEdit again and converting file types to .BMP. Once it's in .BMP it can be converted to .RIM format (Rebellion Image File) via texconv.exe (Texture Converter) in the Fox tools, those .RIMs can be added to the map via ccamain, and then when loading the map through Inteng you can see all the texture options. Phew! Now comes the tedious task of doing a preliminary texture draft over everything so that no polygons are untextured. During this time, if 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 from banana mode to a fully textured version.
The main brunt of the final texturing is done during this time, 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 this 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 first. 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.
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.
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 that zips the player up, which was an old Doom trick. 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 had to have more polygons added.
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.
Once a sky was settled on, 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. I 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.
After the preliminary 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 a different effect is used in AvP2, so the tree canopies had to be created in Inteng itself. Related to 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.
After the geometry was smoothened came the unenviable task of splitting the map into different modules. Modules are essentially cubes that the game knows where the player is, 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 many things like track objects, lights, 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.
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.
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.
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 them 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!
Thanks for reading!
Olde