Inteng, Questions & Answers

Q - I am having a cursor problem in Inteng. I cannot se my cursor! HEEEEELP!

A - When you have installed the tools, you should see a file called intengoptions.ini in the tools directory. Open this in notepad or wordpad or something similar. One of the options will say

Windows mouse pointer = yes

If it says this then change the option to "no" and save the file again (conversely, if it says the opposite then change it to say "yes"). Hopefully you will be able to see the cursor in inteng now.



Q - How do I texture hierarchial models (characters) in Inteng? My screen is all cluttery from all the different types of characters.

A - Load a file (e.g. hnpc_marine.rif) into inteng. Go in to texture map mode. Go to the hierarchy menu and select hierarchy. This will bring up a menu of the various marine types; select one (e.g. marine with minigun). You will then get a menu offering many different position types to use. I recommend using "marine stand_standard".

You can now texture him/her/it without all the other models cluttering your screen.

You will also need to texture all the other detail level models for that character individually. These are selected using the hierarchy menu - then detail level - then higher or lower. There are several detail levels for each character, going all the way down to a single polygon for each hierarchical part (this looks very odd!).

You can also select the different shape sets for each character (e.g. bush hat for the marine) from the hierarchy menu.



Q - I've noticed that most retail levels have predefined bloodsplatter. How do I do that?

A - There is no need to draw bloodsplatter on the textures in your gfx-program since it won't show up correctly (no glowing predblood etc). Here is the correct way:

Compile the sourcecode using the "Debug" configuration. This will unlock several debugging features that will help you develop your level further.

Run the build using the -keeprif commandline parameter (e.g. c:\program files\fox\aliens versus predator\debug_avp.exe -keeprif). This will ensure all your changes to the level will be saved.

Load the level you want to add premade decals to. Once in, open the console and type PAINTBALL to enter Paintball Mode. There are some predefined controls while in Paintball Mode:

Primary Fire: Adds a decal to the environment where the player is looking.
Secondary Fire: Removes the last added decal.
A & Z: Changes the decal's size.
S: Changes the decal's rotation.
Q & W: Changes the decal's type (e.g. Alien blood, Human blood, Scorch mark etc).
1 & 2: Changes the decal's subtype (e.g. Human blood puddle, Human blood splash, Bloody human handprint etc).
3: Inverts the decal (e.g. a right handprint becomes a left handprint etc).
4: Randomize the decal's size and rotation.
0 (zero): Saves the current added decals to disk (overwrites the RIF file).

You can remove all premade decals with the console command REMOVEDECALS.

NOTE: There is a limit of 1024 premade decals in any level.



Q - Could you please do a step by step example of how to get an Elevator Lift to work?

A - Platform lifts... how to create one in 24 easy steps:

  1. Make your lift object as part of the environment as you normally make things in 3dMax; make sure that it is in the lowermost position you expect the lift to be in. It will be considered to be a module at this stage.
  2. Load your environment rif into inteng.
  3. From Control mode, select your lift object by left-clicking it with the mouse.
  4. Select Object>Change Object Type>Placed from the menu. The lift object is now no longer a module and has become a placed object (it is now considered differently by the AvP engine).
  5. Go Mode>Object Placement.
  6. Select your lift (it will highlight in red).
  7. Go Object>Edit Track.
  8. Right-click to get the pop-up menu>Edit Section End Position.
  9. Press ‘F’ to enter "flying object" mode. Normal movement keys will now move the lift about. The square brackets affect the speed at which the object can be moved.
  10. Move the lift to the desired end position at the top of the lift shaft or wherever. N.B. platform lifts can only move vertically.
  11. Right-click and select Finish End Pos Edit.
  12. Right-click and select Play Track to see if the lift moves in the correct place.
  13. Right-click and select Stop Track Play.
  14. Right-click >Properties>Section. Enter the time (in seconds) that you want the lift to take, moving from bottom to top.
  15. Give the lift sound effects with the options in the right-click menu.
  16. Go Mode>Stop Track Edit.
  17. Mode>Save.
  18. Mode>Exit.
  19. Mode>Strategy data>No textures.
  20. The lift object should show up green. Left-click it to select it and it will highlight red.
  21. Right-click>Assign Strategy>Platform Lift.
  22. The screen you see should say "Starts enabled; Once enabled, continues working until switched off". There is no need to change these options but left clicking the text will cycle through the various options.
  23. Right-click to exit this screen.
  24. Mode>Exit. (and save).
The platform lift should now be functional within the game engine.


Q - How would one go about creating an animated texture (or animating a non-animated texture)?

A - There are two main types of texture animation:
- those using interpolation
- those not using interpolation
If the animation isn’t using interpolation then it will flip between a number of frames (like a flick-book cartoon). With interpolation turned on, the animation will scroll smoothly between frames - it only makes sense to use this if all the frames are using the same texture. A frame is defined by the UV coordinates you set for it on the texture you are using for the animation.

Each animation consists of a number of sequences, each containing several frames. In most cases there should be only one sequence. Multiple sequences can be used in a few special cases, such as for switches, but the strategies can be tricky to set up for this.

A new animation is created by selecting the appropriate polygons and then choosing Anim>Create from the menu. This will create an animation with one sequence of one frame, and cause the animation details to be shown on the right hand side of the screen. The following information is shown:

ID - used internally in the code to work out which polygons are part of the same animation. Anim number - not used Num seq - the number of sequences in the animation Num frames - the number of frames in the current sequence Sequence - the current sequence (0 is the first sequence) Frame - the current frame (0 is the first frame)

You can select a previously created animation by choosing Anim>Select and then clicking on one of the polygons. Clicking on a polygon that does not contain an animation will result in all animations becoming deselected. You can find out which polygons have animations assigned by right-clicking and choosing Flags>View>Animation from the pop-up menu.

The basic process for creating an animation is as follows:
  1. Create the animation using Anim>Create
  2. Edit the texturing for the first frame (as for normal texturing... press Tab and move the UV nodes to the desired position)
  3. Use Anim>Frame>Add to add a frame after the current one (this also advances the animation to the newly created frame; you can check which frame you are editing by looking at the info text on the right hand side of the screen)
  4. Edit the texturing on the second frame.
  5. Continue adding and editing frames until you have done all the frames required.
If you need to go back and alter frames you have already done, you can use Anim>Frame>Next or Anim>Frame>Previous to reach them. Frames can be removed from the animation using Anim>Frame>Remove. If the last frame is removed from an animation, the sequence is destroyed. If the last sequence is removed from a polygon, the animation is removed completely.

After altering the frames of an animation, you will probably want to change the speed of the animation. Selecting Anim>Sequence>Change Properties from the main menu will bring up a dialog box containing settings for the animation. You can set the number of frames per second by entering numbers in the two edit boxes next to fr/sec. There are also a number of check boxes for setting other properties for the sequence. In general, ‘loop’ should be set for all animations and ‘not playing at start’ should be left unchecked. The ‘no interp from first to last’ option can be used with interpolated animations. It basically determines whether interpolation should be used when looping from the last frame back to the first frame of the animation.

Creating and editing extra sequences is simply a matter of using the appropriate options from the Anim>Sequence menu. You can copy another animation sequence over the currently selected sequence using Anim>Sequence>Copy. When you do this you will be asked for the index number of the sequence that you want to copy from.

Animations can be viewed using the Anim>Play and Anim>Play All options. Selecting play will cause the current sequence to play on the current animation. Selecting play all will play the first sequence of all the animations in the level. The animations will continue playing until you press a mouse button to stop them. (while playing sequences, all of the editing options are disabled).

Finally, you can add and remove polygons from an animation using Anim>Add Polys and Anim>Remove Polys. The main reason for putting multiple polygons in the same animation is so that you can step through the frames for all of the polygons together.



Q - How would one go about properly linking modules, so that there will be no visible mod-link errors while navigating through the level? We don’t understand a single thing about Module Linking, Base Objects, or how they all work together. Our primitive levels simply seem to be one large module :-)

A - Ok. This is fundamental to the way that the AvP engine works. With the speed that PCs run these days, a multitude of sins may be got away with (like an entire level being one large module) but you will still get slow-down in many situations. Levels are split into modules for the purpose of giving the AvP engine manageable chunks of polygons to perform calculations on.

For example, whenever anything collides with the environment (a bouncing grenade, a blood particle, an explosion, a character etc.) complex dynamics calculations are performed that test every polygon in the module where the event occurred. You can imagine that these calculations take a very long time if every polygon in the entire environment has to be tested every time anything happens - this is the situation you have if you only have one module.

The A.I. also relies heavily on modules in that, at its most basic level, navigation around the environment and hunting of the player is done by looking at the connections/adjacencies between modules. Of, course there is a whole bunch of waypointing that must be done on top of this information as well.

Modules are also fundamental to the way that rendering is done - obviously it is most efficient if only the modules that can be seen from the player’s position are drawn (i.e. not rooms behind walls etc.). Module linking is the way we give the engine this visibility information.

Everything in an AvP environment must be split up into modules. A module is a cuboidal volume of space defined by the polygons within it. This volume is always aligned to the x,y,z axes and must not overlap any other module. A module equates to an object in 3dMax.

Module linking is done within the Module Linking mode in Inteng. Every module must have its visibilities (the modules that are visible from that module) assigned. You can run an auto-link on the whole environment which will automatically calculate most of the visibilities for you but this will usually also throw up lots of errors which must be fixed by hand.

Before I go on, I should make clear that the Base module defined in Ccamain is not the same as a base module in Module Linking mode. A module defined as ‘base’ in module linking is merely the module which you happen to be defining the linking information for at any one time.

To adjust the visibilities (module links) for a module you should first select the module in question by left-clicking on it with the mouse. Press ‘S’ to set that module as the ‘base’ module. It will turn blue. All other modules will be coloured yellow or white.

Yellow - indicates that a module is linked to the base module, i.e. is considered to be visible and will be rendered in the engine when the player stands in the base module.

White - indicates that the module is not linked in and will not be drawn.

To link a white module in, select it and press ‘N’ to define a normal link. The module will turn yellow.

To unlink a module and prevent it being drawn, press ‘D’ to delete the link. The module will turn white.

When you are satisfied with the links for the module you can set another module as base and repeat the process. Yes, it does get extremely tedious with large environments split into hundreds of modules.

As a rule of thumb, you should have between 1000-1500 polygons linked in at any one time.

You can tell, at a glance, how many polygons are linked in from each module using the Base>Show Poly Counts menu.

When you are done, exit the mode and you will be asked if you want the tools to calculate the adjacencies. You do, unless you’ve specifically adjusted them yourself in Adjacency mode. The module linking data should be automatically saved.



Q - I assume that all of the animations for Guns and characters were done in Character Studio. How do we change those animations? And how would someone make new ones for a new weapon?

A - Unsurprisingly, this is a non-trivial process that requires models of hands and gun with the appropriate hierarchy set up and animated in Max. Any new weapon would have to be squeezed into Marwep.rif. The models need to be distorted so that they still appear correct when they are placed close to the player camera which has a 90 degree field of view. Dummy objects are linked into the heiarchy at certain points to specify the position of the weapon/arms relative to the camera and the position of any muzzle flashes. I no longer have access to any of the old Max files that were used so I can’t be any more specific about naming conventions and the like I’m afraid. But since the whole process requires considerable changes to the source code, any coding wiz-kid who feels he is up to the job shouldn’t have a problem figuring out where the dummy objects need to be and what they should be called.


Q - Since you ripped out the Bink and Smacker Code, how would gamers add Quicktime, or any other video support to the game?

A - There is no simple way to do this.


Q - How would one go about implementing automatic (proxy) doors into the custom levels?

A - Any object that has been given morph data will become a proximity door (unless told to be something else).


Q - How would one go about implementing death volumes in into the custom levels?

A -
  1. Enter strategy mode.
  2. Right click and choose ‘create virtual object’ somewhere near the desired spot.
  3. Select the object (shown as a V)
  4. Right click and select ‘assign strategy’. Choose Volume of Death from the list of options. This should take you to the screen for editing its properties.
  5. Click on the various lines of text to alter each property as desired.
  6. Press V to edit the volume associated with the strategy. This brings you back into the 3d view, and allows you to edit the cube that represents the volume.

    There are some special keys for the volume editing:

    Left Click : Selects a module.
    S: Sets the volume cube to equal the bounding box of the selected module.
    X: Expands the volume cube to include the bounding box of the selected module.
    Shift + Left Click (on the volume cube): Selects a face on the cube. The face is shown as green.
    +/- : Moves the selected face of the cube in or out.
    7. Right click, or press enter when finished.

Q - Why sometimes are the huds not lit? (I assume it has to do with using the wrong lights).

A - Make sure you are using runtime lights.


Q - What would need to be edited to add a new weapon? (i.e. Hnpcmarine, marine hud, source, hierarchy).

A - For a marine weapon you would need:

A new marine hierarchy in hnpcmarine.rif , with a complete set of animations (assuming you want the weapon to be visible 3rd person).

A new hierarchy (+ animations) added to marwep.rif.

And a scary number of source changes...

(For predators you need to alter hnpcpredator.rif/pred_hud.rif, and for aliens hnpcalien.rif/alien_hud.rif)



Q - Often in the documenation sent to us you called things POLYS... are you referring to Faces or Polys?

A - Polys is being used as an abbreviation for polygons. So, it is the same as faces.