Reviews & Opinions
Independent and trusted. Read before buy Games PC Hitman - Codename 47!

Games PC Hitman - Codename 47


Bookmark
Games PC Hitman - Codename 47

Bookmark and Share

 

Games PC Hitman - Codename 47About Games PC Hitman - Codename 47
Here you can find all about Games PC Hitman - Codename 47 like manual and other informations. For example: review.

Games PC Hitman - Codename 47 manual (user guide) is ready to download for free.

On the bottom of page users can write a review. If you own a Games PC Hitman - Codename 47 please write about it to help other people.
[ Report abuse or wrong photo | Share your Games PC Hitman - Codename 47 photo ]

 

 

Manual

Preview of first few manual pages (at low quality). Check before download. Click to enlarge.
Manual - 1 page  Manual - 2 page  Manual - 3 page 

Download (English)
Games PC Hitman-codename 47, size: 879 KB

 

Games PC Hitman - Codename 47

 

 

Video review

Hitman Codename 47 Walkthrough: Lee Hong Assassination

 

User reviews and opinions

<== Click here to post a new opinion, comment, review, etc.

Comments to date: 1. Page 1 of 1. Average Rating:
Thierry SCHMIT 6:11am on Sunday, May 16th, 2010 
One of the best of THE best game you will ever buy. Gameplay wise this game beats all games past and present. How was it ever released? This game, despite its pleasing looks, is boring: it has no game saves.

Comments posted on www.ps2netdrivers.net are solely the views and opinions of the people posting them and do not necessarily reflect the views or opinions of us.

 

Documents

doc0

HITMAN PC v5

10/19/00

5:15 PM

Page ii
I m por t ant I nf or m at i on Epilepsy Warning
A very small percentage of individuals may experience epileptic seizures when exposed to certain light patterns or flashing lights. Exposure to certain patterns or backgrounds on a television screen or while playing video games may induce an epileptic seizure in these individuals. Certain conditions may induce previously undetected epileptic symptoms even in persons who have no history of prior seizures or epilepsy. If you, or anyone in your family, has an epileptic condition, consult your physician prior to playing. If you experience any of the following while playing a video game dizziness, altered vision, eye or muscle twitches, loss of awareness, disorientation, any involuntary movement, or convulsions IMMEDIATELY discontinue use and consult your physician before resuming play.
C ustome r Service Eidos Interactive Technical Support
Please read the following section before calling technical support: Because of the millions of different hardware and software combinations possible with todays Personal Computers, you may still have to refer to your computer manufacturer or operating system publisher to properly configure their product to run with this game.
CONTACTING TECH SUPPORT If you have technical questions about the game, our Support Department is here to help. Our web site contains up-to-date information on the most common difficulties with our products; this information is the same as that used by our support agents. If you are unable to find the information you need on our web site, please feel free to contact us via e-mail, fax, telephone or letter.
If you need to talk to someone immediately, call us at (415) 547-1244. We are available to take your calls Monday through Friday between 9:00 a.m. to 5:00 p.m., Pacific Standard Time. If possible, be at your computer when you call. The support representative will need specific information about your computer and may need you to access or change some of the files while you are on the telephone. If it is impossible for you to be at your computer, be sure to have the following information: A listing of your computers hardware and the settings from Device Manager, including what sound and video card your system has. (Contact your computer manufacturer if you arent sure.) What version of Windows you are using. What version of DirectX is currently loaded on your computer. How the game is currently configured.

ESRB Rating

This product has been rated by the Entertainment Software Rating Board. For information about the ESRB rating, or to comment about the appropriateness of the rating, please contact the ESRB at 1-800-771-3772.
NOTE: Our Technical Support agents do not have access to game hints, tips, strategies or codes. HOW TO REACH US
World Wide Web: Product Warranty Inquires: Email: Fax: Mail: http://www.eidosinteractive.com/support/index.html cs@eidos.com techsupp@eidos.com (415) 547-1201 or (415) 537-0095 Eidos Interactive Customer Support 651 Brannan Street, 4th floor San Francisco, CA 94107
Handling Your Compact Disc
The PC compact disc is intended for use exclusively on IBM compatible systems with the minimum configurations specified on the system requirements of the game purchased. Avoid bending the disc. Do not touch, smudge or scratch its surface. Do not leave the disc in direct sunlight or near a radiator or other source of heat. Take occasional rest breaks during extended play. Always store the disc in its protective case.

Eidos Interactive Limited Warranty
EIDOS Interactive warrants to the original purchaser that this EIDOS Interactive disc is free from defects in materials and workmanship for a period of ninety (90) days from the date of purchase. This EIDOS Interactive disc is sold as is without expressed or implied warranty of any kind, and EIDOS Interactive is not liable for any losses or damages of any kind resulting from use of this program. EIDOS Interactive agrees for a period of ninety (90) days to either repair or replace, at its option, free of charge, any EIDOS Interactive disc, postage paid, with proof of date of purchase, at its Factory Service Center. This limited warranty is not applicable to normal wear and tear. This limited warranty shall not be applicable and shall be void if the defect in the EIDOS Interactive disc has arisen through abuse, unreasonable use, mistreatment or neglect. This limited warranty is in lieu of all other warranties and no other representations or claims of any nature shall be binding on or obligate EIDOS Interactive. Any implied warranties of merchantability and fitness for a particular purpose are limited to the ninety (90) day period described above. In no event will EIDOS Interactive be liable for any special, incidental or consequential damages resulting from possession, use or malfunction of this disc. Some states do not allow limitation as to how long an implied warranty lasts and/or exclusions or limitations of incidental or consequential damages, so the above limitations and/or exclusions of liability may not apply to you. This warranty gives you specific legal rights, and you may also have other rights which vary from state to state. For warranty support please contact our Customer Support department at (415) 547-1244. Our staff is available Monday through Friday, 9:00 a.m. to 5:00 p.m. Pacific Time. Youre responsible for all toll charges. Please note Customer Support Representatives will not provide game hints, strategies or codes.
FEEL LIKE HITMAN'S GOT A CONTRACT ON YOU? Call the EIDOS Interactive Hint Line
U.S.: 1-900-77EIDOS (773-4367) Canada: 1-900-64EIDOS (643-4367)
Cost of call: $0.99/minute. Must be 18 years or have parents permission. Touch-tone phone required.

Page 1

Table of Contents
Installation. 2 Introduction. 4 Chapters Hong Kong, China. 6 Valle del Cauca, Colombia. 7 Budapest, Hungary. 8 Rotterdam, The Netherlands. 9 Training. 10 Game Mechanics Credit System. 15 Controls. 16 Game Screens Main Screen. 18 New Game Screen. 18 Option Screen. 19 Laptop Computer Screen. 21 Assignment Briefing. 21 Ingame Laptop. 24 Post Briefing. 24 Onscreen Display. 25 Items Display. 25 Action Display. 26 Mouse Pointer. 27 Weapons Close Combat. 28 Handguns. 28 Sub-Machine Guns. 28 Rifles. 29 Sniper Rifles. 29 Equipment Compass. 30 Binoculars. 30 Kevlar Vest. 31 Special Items. 31 Credits. 32 Customer Support. 33

Some screenshots in this manual may show pre-completion screens that differ slightly from actual game screens.

5:16 PM

Page 2

I ns t al l at i on

Installation
The installer will check to see if your machine requires DirectX 7.0 to be installed. If it is determined that the DirectX 7.0 installation is required, the Install DirectX Information panel will appear. Click on the Install DirectX button to proceed with the installation. (You may also elect to not install DirectX, but you will not be able to play the game.)
Installing Hitman: Codename 47
Installing Hitman: Codename 47 is easy. Insert the CD into your CD-ROM drive. After a few seconds, the Launch panel will appear. NOTE: In the event the Launch panel does not appear when you insert the CD: Double-click on the My Computer icon, then double-click on the CD-ROM icon, and lastly double-click on the SETUP.EXE file to bring up the Launch panel OR: 1. Click on the START button. 2. Choose RUN from the ensuing pop-up menu. 3. Type D:\Setup in the box provided (where D: designates your CD-ROM drive letter). 4. Click on the OK button to begin the install program. Click on the Install button to begin the installer. The Welcome panel will appear. Click on the Next button to proceed with the installation. The program will guide you through the remaining process via onscreen prompts. You will initially be prompted to select the path and directory to which you want to install the game on your hard drive. The default is C:\Program Files\Eidos Interactive\IO Interactive\Hitman: Codename 47. Click on the Next button to accept the default destination, or click on the Browse button to type in a new location in the box provided. Next, you will be prompted to confirm proceeding with the installation. Click on the Yes, I Am Ready to Install button. The installation will commence. The installer will check to see if your machine requires DirectShow to be installed. If it is determined that the DirectShow installation is required, the Install DirectShow Information panel will appear. Click on the Install DirectShow button to proceed with the installation.(You may also select to not install DirectShow, but you will not be able to view portions of the game.)
If you are experiencing difficulties installing Hitman: Codename 47, please consult the Troubleshooting and Performance Issues section of the ReadMe File.
Un-Installing Hitman: Codename 47

If you need to un-install Hitman: Codename 47, you may do any of the following: Insert the CD into the CD-ROM drive to activate the AutoPlay feature. This will bring up the Launch panel. Click on the Un-install button and follow the prompts. Click on the Start button from the Windows 95/98 taskbar. Choose Programs from the pop-up menu. Drag your mouse to the right and click on Hitman: Codename 47 from the list. Click on Uninstall Shield from the ensuing pop-up menu and follow the onscreen instructions. The game should now be removed from your computer. Go to the Control Panel and choose Add/Remove Programs. Click on Hitman: Codename 47, select the Add/Remove button, and follow the onscreen prompts. If you are experiencing difficulties un-installing Hitman: Codename 47, please consult the Troubleshooting and Performance Issues section of the ReadMe File.

Page 4

I nt roduct i on

Intro duction

Who Are We, and Where Do We Come From?
eligion offers very simple answers - science offers new possibilities. Did we indeed rise out of that primeval goo by coincidence, or are we the result of divine intervention? If you take the religious stand, Man was made at the end of a week's hard work, and God was pretty tired.
ife is a blessing, but death can be a friend - there's always a price to pay. In nature there's neither good or bad, right or wrong - there are consequences.
mperfections, flaws, weaknesses, vulnerability - that's the price we pay for being the last item on the assembly line. No matter which version is right - if you can improve on this prototype, that not even evolution has perfected yet, by means of science - create a sharper original instead of this sloppy copy, this mortal coil - why not?
ot so long ago, a few able scientists were willing to assume the cape of the creator, delve deep into this creational abyss to find the secrets, to stretch the known boundaries, to create life - they could not foresee the consequences
sk yourself - what's worth living for? A lot. What's worth dying for, then? Not a lot. So if you had the choice, it wouldn't be that hard, would it? It would be worth killing for, wouldn't it?

Page 6

C hapt er s Valle del Cauc a, Colum bia

Cha pters

Hong Kong, China
Terminating the Red Dragon triad leader Lee Hong will be nearly impossible. Hong resides inside an enormous complex, complete with bar, restaurant, shop, brothel, helipad, park and possibly even more. A small army guards the place.and the Hong Kong police are on his payroll.
Somewhere in the Colombian rainforest a drug lord is preparing his next shipment of mortal merchandise. His camp is hidden away in the jungle and the only road leading in is extremely well guarded. It's actually impossible to gain access to the camp by road. But there must be another way in to the camp.
Our sparse information about the camp has led us to conclude that it holds a laboratory, a mansion and an airstrip.
The only way to get to him would be by instigating a war between the two large triads Red Dragon and Blue Lotus and then somehow contriving to remove Hongs police protection.
Killing Lee Hong will take a detailed plan and a lot of preparation.

Page 8

C hapt er s

Ch apters

Budapest, Hungary
At the Thermal Bath Hotel in Budapest, a peace summit is being held. All the leaders of the great nations are gathered for the event. The old hotel is swarming with security and press.
Rotterdam, The Netherlands
At the harbor of Rotterdam the Russian gunrunner Arkadij Jegorov, aka "Boris," is planning his next deal. He's got a secret blueprint of a nuclear weapon and a couple of nuclear warheads. He's about to sell the blueprint to an unscrupulous dictator.
The deal is supposed to go through within the next weeks. In the meantime The Austrian Terrorist Franz Fuchs is planning a hideous attack on the peace summit. He has developed a very dangerous chemical mixture and constructed a bomb with it. Somehow he has managed to get the bomb through security. The bomb is now at the hotel. If we alarm the authorities we will give away our source for this information. the gunrunner is dealing arms to the local gangs. The Agency knows that the police have been trying to find him but he is well hidden in the huge harbor area. To search all ships would be impossible. We're thinking of another way of tracing the ship.
The bomb could easily destroy the large building and leave the world without leadership.

Page 10

Tr ai ni ng

Tra in in g

the beginning.
You wake up strapped to a fixation bed in a strange place. You do not wear anything but uncomfortable hospital underwear. With a loud noise, the straps loosen and you can move your limbs. Slowly you sit up. A freezing pain hits you as your bare feet touch the floor. Obey the voice.
NOTE:This description assumes you are using the default Numpad Key Configuration.
Lesson #3: Multiple Actions
You enter a room filled with ladders, platforms, trenches and weird obstacles. This room is designed to train you in moving in a complex scene. This is an obstacle course where you will learn how Hitman can move through complex scenes. 3.1 Move up close to the low brick wall enclosing you. By walking into the wall you should automatically climb the wall. 3.2 Walk over to the ladder. When you are facing the ladder, move forward and you will grab the ladder and climb up to the platform. Walk backwards to climb down. 3.3 Walk to the far end of the platform. By walking into the railing at the far end you will automatically jump to the opposite platform. 3.4 Walk to the ladder going down to the ground and climb down. 3.5 You are standing in front of a trench (a hole in the ground). Move toward the edge to jump down. Notice the slight losing balance movement when you reach the edge. This should warn you if you do not want to jump. Walk to the far end of the trench and climb up the ladder. Walk over to the door and go to the next room.

Lesson #1: Movement

1.1 Move around the cell using the arrow keys. You can try out the different camera settings by pressing / on the numerical keyboard. When you feel comfortable moving around, walk up the stairs to the next room. 1.2 The action readout (see onscreen display, page 26) should now read close door. Press action (default: Enter) to close the door. Opening a door is an area-determined action, which means that it is available when you are near an object (in this case the door) on which you can preform an action.

Lesson #2: Dressing

You enter a shower room. On a bench in the far corner is a heap of clothes. In the far back of the room is another door. 2.1 Walk over to the heap and place the mouse pointer over it. The mouse will change to show a small blue box in the corner. Right-click and the text change clothes will appear near the mouse pointer. Left-click to pick up the clothes and put them on. You can also just press the action button (Enter). Right-click cancels the context menu. 2.2 Walk out the next door.
Lesson #4: Using the Elevator
You are back in the corridor, but on the other side of the iron bars. To your right is an elevator. 4.1 Right click on the silver button to the right of the elevator doors. The context menu shows call elevator. The elevator will arrive shortly after. 4.2 Walk inside the elevator. The camera will cut to a fixed camera in the back ceiling of the elevator pointing out of the doors. The doors close. Right-click on the control panel to the right of the doors. Two choices are available in the context menu: basement level 3 and basement level 1. Select basement level 3 to go down to the next training lesson.

Page 12

Lesson #5: Weapons Training - Close Combat
The elevator stops and you walk through a corridor into a small room. There is a figure standing in the middle of the room. It is a human-sized dummy. Spread out on a table just inside the room is a variety of knives. This lesson will teach you how to these deadly close-combat, short-range weapons. 5.1 Walk over to the table and pick up one of the knives. Notice that the mouse pointer changes to the precise pointer. Put the knife in your pocket (select --nothing-- from the inventory). 5.2 Select the knife from your inventory and walk over to the dummy in the middle of the room. Left-click to stab the dummy. 5.3 There is a front side and a back side of the dummy. Walk up close to the back side and attack. You now perform a cut-throat attack that will kill your enemy instantly and silent. 5.4 Walk back to the table. To the left of the knives is a garrotte, a piano wire with 2 handles attached at each end. It is the most deadly of the silent weapons, but it also requires the most skill to use. Pick it up. 5.5 Now walk to the backside of the dummy. It is colored white. When you want to strangle someone, be sure that you are absolutely silent, because you have to get within breathing distance of your target. Press + to enter Sneak mode. 5.6 Ready your piano wire by pressing the left mouse button and holding it down. When you release the button you will strangle your opponent if you are within range. When you feel comfortable with the use of the close combat weapons, go through the door to the next room.

Lesson #9: Weapons Training - Sniper Rifle
Walk to the far end of the room, where you will find the assassins most lethal weapon, the sniper rifle. 9.1 Pick up some extra ammo. Notice the sniper rifle is loaded with only one bullet. This is because it is a bolt action rifle. The one you will be using here has no clip, hence the long reload time. 9.2 Walk up to range #3 and press Fire. The view will change to Sniper mode. Use the mouse wheel to switch between 3 locked zoom distances.
Money rewarded for mission success.
Money spend on weapons end equipment.
Unnecessary kills. Civilians and policemen cost a lot to clean up, so stick to your target. If a messy hit becomes too expensive and you run out of money, you will be removed by the Agency. Current Credit Status

Page 16

G am e M echani cs

Co ntrols

Default Configuration Other settings are available on the Key Configuration screen. You can set Camera mode from a drop-down list with the choices: free, fixed-free and fixed locked. Action Fire Change Fire Mode Reload Weapon Next Weapon/Item Prev. Weapon/Items Drop Selected Items Conceal Weapon Pointer Menu Cancel Pointer Menu Perform Action Walk Run Turn Left Turn Right Sidestep Left Sidestep Right Walk Backward Lean Left Lean Right Lean Extra Far Sneak Mode Camera Mode Equip Binoculars Zoom Binoculars Cancel Binoculars Map Option Screen Mission Status Ingame Laptop Numpad Left Mouse Button End Home Pg Down Pg Up Ins Rgt Mouse Rgt Mouse Enter WASD Tab 1 G T F R

Controls

Hitman is controlled with a combination of the keyboard and mouse/joystick. The controls are divided into game-action (moving, doing things), selecting inventory (OSD) and dialog. Movement Hitman can move almost anywhere. He can climb stairs and ladders. Sneaking When Hitman sneaks, enemies cannot hear him. Leaning Hitman can peek around corners by leaning. Double tab the Lean button to make Hitman take an extra step (good for shooting around corners)

strafe right turn right

walk backwards
strafe left turn left walk forward
Shooting When Hitman is holding a weapon, the mouse cursor changes to a crosshair of some sort (varying with the weapon). You can now point the crosshair at the target you want to shoot at.
Strangulation Selecting the garotte (piano wire) makes Hitman a silent killer. Sneak up behind your victim, and press and hold Fire to ready the piano wire. Release to strangle. Dragging Bodies When you have killed a bad guy, you must get rid of his body. Other guards will start searching for a killer if they find a body, so hide it well. Right-click on the body to bring up the mouse menu. Select drag body. When he is dragging bodies, Hitman is very vulnerable so make the killing close to the hiding place. Changing Clothes Hitman can take his victims clothes or he can find clothes on the scene. When he has changed clothes, alarmed guards will only recognize him if he walks up close to them and stays there for a little while. Sniper Mode Selecting a sniper rifle forces the game into 1st person mode where you look through the scope. Use the mouse wheel to zoom. The same goes for the binoculars.

Num 5 S Num 8 W Num 4 A Num 6 D Num 1 Z Num 3 C Num 2 X Num 7 Q Num 9 E Double tab the Lean button and hold it + / 4 3
* 2 Pg Up/Pg Down or Mousewheel Rgt Mouse M Esc F2 F1
Printable versions of the keyboard layouts are stored in the directory where you installed Hitman: Codename 47.

Page 18

G am e Screens Main Screen
Start Game: Takes you to the New Game screen, where you can enter a player name, continue a game or start a new one. Options: Brings up a screen from which you can adjust video settings, sound and music volume, etc. These are detailed below. Quit Game: Returns to Windows. Exit to Main: Brings you back to the Main screen. This option is only available if you access the options during gameplay.
Gam e S creen s Option Screen
This screen can be reached from the Main screen and from any laptop by pressing the Options button. Sound & Music: Brings you to the Controls screen. Graphics: Video card and visual settings. Mouse & Keyboard: Mouse and keyboard configurations.

New Game Screen

New: Creates a new player. You are asked to enter a name. Select this name later if you want to continue a game. Delete: Deletes a player. Cancel: Returns to the Main Screen. OK: Starts a game using the selected player.
OK: Returns to the previous screen.
Sound & Music Options
Sound Effects Volume: Sets the volume of sound effects. Turn it down to switch sound effects off. Music Volume: Sets the volume of the music. Turn it down to switch music off Speech Volume: Sets the volume of the ingame speech. Enable Speech: Turns off spoken dialogs. Use this if the game runs poorly during dialogs.

Page 20

G am e Screens

G am e Scre ens

Graphics Options
Display Driver : Choose between OpenGL/Direct3D and Glide (3dfx Voodoo specific API). Note that changing between Display drivers may impact performance and you might experience display glitches on some video cards. Resolution: Sets the ingame resolution. ColorDepth: Sets the amount of colors used. This setting impacts the 3d depth buffer (Z-Buffer). Shadows: Sets the number of realtime calculated shadows used in the game. Texture/Palette Compression: Sets the method by which textures are stored. Palette textures look nicer but take up more space on the video card. Your video card must support DXT to use Texture Compression. Anisotropic Filtering: Affects MIP mapping. We recommend leaving it at its default setting. Full Scene AntiAliasing: Smoothes the look of the screen. Your video hardware must support this feature in order for you to use it.

Laptop Computer Screen

Hitman uses a laptop computer to communicate with the Agency that gives him assignments. The laptop is used before, during and after a mission. Basic functions are presented as buttons on the frame of the laptop. They are always present. Credits: Hitman's bank account is a measurement for his success. A less messier hit will cost less to clean up thus leaving more money (and maybe even extra weapons/equipment) for Hitman. Screen Buttons: These buttons act as regular Windows buttons. OK always proceeds to the next screen (if there is one). Options: Pressing this button brings you to the Options Screen (also available from the Main Screen).

Credits

Option Screen

Screen Buttons

Exit : Pressing this button shuts off the power from the laptop, bringing Hitman back to the game (if he uses the laptop in-game). If the Exit button (Esc) is pressed during the mission briefing the mission starts immediately. If you are restarting a level, pressing the Exit button will start the game with the same settings as last time you played.
Mouse & Keyboard Options
Mouse Speed: Adjusts the speed of the mouse. Invert Mouse: Inverts the mouse in the vertical direction, when using the mouse camera. Default Numpad: Uses default key combination on the numpad. Default WASD: Uses default key combination around w,a,s & d keys.

Assignment Briefing

Before each assignment, Hitman is contacted by the Agency and shown the details about the next job. The assignment briefing is a short and precise description of the objectives. The briefing is presented in 4 screens. You can press the arrows up/down on these screens to scroll the text. 1. Agency Message A brief message from the Agency's controlling officer providing broad information on the upcoming assignment.

Page 22

G ame Screen s
2. Mission Explanation of the upcoming assignment. Press More Info to get a more thorough explanation.
5. Equipment Now its time to consider what hardware you want to bring to the scene. To buy an item, left-click in the circle in front of the name. If you change your mind just left-click again. For a more detailed view of the item, left-click on the name. Weapons that require extra ammunition are displayed with a number to their right. Click on the + and - to add or subtract ammunition. Ammunition is added in clips. Hitman can only carry one large weapon (rifles and machine guns) and one submachine gun (SMG), or 2 SMGs (one in hand and one in the jacket). If you select two rifles, the first selected will become unselected. The selection of weapons varies, due to the fact that in some areas it is hard to get untraceable weapons. And some of the weapons are generally hard to come by, if you don't want the FBI on your back.
3. Target Information on the person you have to assassinate. Press More Info to get detailed background information on the subject. In most cases the Agency even provides video footage of the target. (press View Footage).
When you are all set press OK to begin.
Item Name Ammo Buy Item Ammo Price

4. Location A map of the location is presented to you. Study it carefully. Press Pan to go into Pan Maps mode. Press Zoom to go into Zoom mode. On some levels the map is divided into several layers. Click on the map titles to switch between them. The Green circle is Hitmans position and direction. The Blue circle is the place Hitman will be picked up after the hit. Various other icons may be presented on the map. If Hitman receives a hint of a location during a mission it will also be visible on the map as an icon.

Details

Examine Item
Ammo Type Rendezvous Point Hitman

Page 24

Ga m e Scree ns

Ingame Laptop (F1)

Map (m): The map shows Hitman's current position. Controls are the same as for the location screen in the briefing. Equipment: Shows a list of all items Hitman is carrying. You can check them out in detail by clicking the info icon. Mission Status (F2): Shows the status of the mission. Check this list to see if you have done everything right before exiting the mission (rendezvous point). Back: Back to the game.

Onscreen Display (OSD)

The Onscreen display consists of a number of small displays:
Action Display Health Armor Compass Selected Items Display Ammo Preview of Selected Item Inventory List

Pointer

Items Display
The Items Display shows the currently selected possessed item (guns/keys/bombs and so on). Left-clicking will activate the item/weapon. When you activate the Inventory List (default mouse wheel up/down), the Items display shows a listing of the items/weapons in your possession. Use the mouse wheel to roll up and down to highlight the items/weapons. Left-clicking will select the item/weapon. Selecting Nothing will conceal small arms. Health Displays the amount of health Hitman has. Every time Hitman is hit by a bullet or a knife a wound is inflicted. When the health display reaches zero Hitman dies. Damage is location based, which means a shot to the head is almost certain to kill you while a shot in the arm will not. Armor Shows the state of the Kevlar vest Hitman is wearing. You can find additional Kevlar vests on some of the locations, but it is generally a good thing to buy before heavy missions. Compass Shows the direction Hitman is facing.

Post Briefing

This screen is essentially a calculation of how well the job went. Expenses such as clean up and bribes are deducted from the reward. If you end up having negative credit (you are in debt to the Agency) your assignment fails, and the Agency will have you removed.You can read more about this under the Credit system chapter.

5:17 PM

Page 26

Gam e S creen s

Action Display
Action Display The action display is green and displays the default action. The action is instigated by pressing the Action key (default Enter). The action display is context controlled which means that it will change according to where Hitman is. If for example Hitman is close to an elevator the action display will read "Call Elevator." If Hitman is close to a door the action display will read "Open Door." Pressing the Action key will open the door or call the elevator. Warning Display The Warning display is red and displays warnings about things happening during the mission. Whenever a guard finds a dead body you will receive a warning. The warning display will also tell if your cover has been blown (if you have changed clothes). Information Display The Information display is blue and informs you every time something relevant happens during the mission.

Mouse Pointer

In the center (most of the time) of the screen is the mouse pointer. The mouse pointer changes according to the weapon or item Hitman is using. No Weapon Precision Automatic Blast No weapons selected Pistols, knives & sniper rifles Sub-machine guns, rifles & large handguns Shotguns & non-accurate weapons
Mouse Menu When the mouse points at something that can be manipulated, a small blue square is present next to the pointer icon. Right-click to bring on the menu and use the mouse wheel (prev/next item if you don't have a wheel mouse) to highlight a choice. Mouse menu choices Pick up item: Hitman picks up the item and puts in it his inventory. Change clothes: If you have killed an enemy you can take his clothes and impersonate him to get to restricted areas unnoticed. Sometimes clothes are lying around, so you don't have to harm anyone (which makes for a cleaner kill). Drag: Hitman drags the body of an enemy. This can be used to hide bodies in order to sneak in on your target.

Page 28

Weapons

Weapon s

Close Combat
Close-combat weapons are small, lightweight, silent, and easily concealed. Their drawbacks are the fact that they are the most difficult ones to use because you need to get within arms reach of the enemy. Sneaking is necessary to succeed with this type of weapon.

Rifles

Rifles are large weapons that shoots precisely on medium ranges. They are heavy and cannot be concealed. Assault rifles are fully automatic if you keep the Fire button pressed. Shotguns have a much lower rate of fire and a short range but they are absolutely devastating at close range.

Handguns

Pistols and revolvers are small, relatively lightweight and easily concealed. You can kill at a greater distance than the closecombat weapons but the weapon makes a lot of noise unless it is silenced. Another great thing about the guns is that you can shoot two at a time if you happen to be trapped in a fierce firefight. You can carry up to 6 pistols concealed at a time.

Sniper Rifles

The sniper rifle is the most accurate and dangerous weapon. Drawbacks are slow reload time and the inability to use it at close range.

Sub-Machine guns (SMG)

Sub-machine guns are medium-sized, concealed weapons. Their size prevents you from carrying more than 2 concealed at a time. They fire a lot more bullets that any of the other weapons (except the minigun), but they are not as precise. The high rate of fire can be a drawback if you do not carry enough ammunition.

Page 30

Equi pm ent

E quipm ent

Compass
A handy thing to bring along. Lets you know which direction you're facing.

Kevlar Vest

Makes the first couple of hits (to the torso that is) easier to survive.

Binoculars

Lets you spy on persons from a distance.

Special Items

The Agency will provide you with a range of special items like car bombs and tracking devices for use on certain missions.

Page 32

C redi ts
IO INTERACTIVE This game was produced by all employees at IO Interactive Programmers Karsten Hvidberg David Guldbrandsen Martin Pollas Henning Semler Thomas Jakobsen Rune M. Brinckmeyer Hakon Stein Jacob Gorm Hansen Additional Programming Troels Gram Peter W. Marino Lars Piester Torsten Srensen Bjrn Johansen Albert Nguyen Jens Skinnerup Graphics & Design Jacob Andersen Jesper V. Jrgensen Rasmus Kjr Dennis Hansen Martin Guldbk Peter von Linstow Thor Frlich Peter Fleckenstein Svend Christensen Allan Hansen Animation Jens Peter Kurup Barbara Karolina Bernd Martin Poulsen Sound Simon Holm Producers Janos Flsser Morten Borum Finn Nielsen Christian Kirk Muff Testers Anders T.Jensen Mads Olsson Hugh Grimley Henrik Astrup Support Else Andersen Tanja Rau Ulf Maagaard

doc1

Advanced Character Physics

Pgina 1 de 16

Thomas Jakobsen
IO Interactive, Farvergade 2 DK-1463 Copenhagen K Denmark Email: tj@ioi.dk, www: www.ioi.dk/~tj Abstract This paper explains the basic elements of an approach to physically-based modeling which is well suited for interactive use. It is simple, fast, and quite stable, and in its basic version the method does not require knowledge of advanced mathematical subjects (although it is based on a solid mathematical foundation). It allows for simulation of both cloth; soft and rigid bodies; and even articulated or constrained bodies using both forward and inverse kinematics. The algorithms were developed for IO Interactives game Hitman: Codename 47. There, among other things, the physics system was responsible for the movement of cloth, plants, rigid bodies, and for making dead human bodies fall in unique ways depending on where they were hit, fully interacting with the environment (resulting in the press oxymoron lifelike death animations). The article also deals with subtleties like penetration test optimization and friction handling. 1 Introduction The use of physically-based modeling to produce nice-looking animation has been considered for some time and many of the existing techniques are fairly sophisticated. Different approaches have been proposed in the literature [Baraff, Mirtich, Witkin, and others] and much effort has been put into the construction of algorithms that are accurate and reliable. Actually, precise simulation methods for physics and dynamics have been known for quite some time from engineering. However, for games and interactive use, accuracy is really not the primary concern (although its certainly nice to have) rather, here the important goals are believability (the programmer can cheat as much as he wants if the player still feels immersed) and speed of execution (only a certain time per frame will be allocated to the physics engine). In the case of physics simulation, the word believability also covers stability; a method is no good if objects seem to drift through obstacles or vibrate when they should be lying still, or if cloth particles tend to blow up. The methods demonstrated in this paper were created in an attempt to reach these goals. The algorithms were developed and implemented by the author for use in IO Interactives computer game Hitman: Codename 47, and have all been integrated in IOs in-house game engine Glacier. The methods proved to be quite simple to implement (compared to other schemes at least) and have high performance. The algorithm is iterative such that, from a certain point, it can be stopped at any time. This gives us a very useful time/accuracy trade-off: If a small source of inaccuracy is accepted, the code can be allowed to run faster; this error margin can even be adjusted adaptively at run-time. In some cases, the method is as much as an order of magnitude faster than other existing methods. It also handles both collision and resting contact in the same framework and nicely copes with stacked boxes and other situations that stress a physics engine. In overview, the success of the method comes from the right combination of several techniques that all benefit from each other: A so-called Verlet integration scheme.
file://C:\Documents%20and%20Settings\toni\Escritorio\Advanced%20Character%20.

24/02/2003

Pgina 2 de 16
Handling collisions and penetrations by projection. A simple constraint solver using relaxation. A nice square root approximation that gives a solid speed-up. Modeling rigid bodies as particles with constraints. An optimized collision engine with the ability to calculate penetration depths. Each of the above subjects will be explained shortly. In writing this document, the author has tried to make it accessible to the widest possible audience without losing vital information necessary for implementation. This means that technical mathematical explanations and notions are kept to a minimum if not crucial to understanding the subject. The goal is demonstrating the possibility of implementing quite advanced and stable physics simulations without dealing with loads of mathematical intricacies. The content is organized as follows. First, in Section 2, a velocity-less representation of a particle system will be described. It has several advantages, stability most notably and the fact that constraints are simple to implement. Section 3 describes how collision handling takes place. Then, in Section 4, the particle system is extended with constraints allowing us to model cloth. Section 5 explains how to set up a suitably constrained particle system in order to emulate a rigid body. Next, in Section 6, it is demonstrated how to further extend the system to allow articulated bodies (that is, systems of interconnected rigid bodies with angular and other constraints). Section 7 contains various notes and shares some experience on implementing friction etc. Finally, in Section 8 a brief conclusion. In the following, bold typeface indicates vectors. Vector components are indexed by using subscript, i.e., x=(x1, x2, x3). 2 Verlet integration The heart of the simulation is a particle system. Typically, in implementations of particle systems, each particle has two main variables: Its position x and its velocity v. Then in the time-stepping loop, the new position x and velocity v are often computed by applying the rules

x ' = x + v t v ' = v + a t ,
where t is the time step, and a is the acceleration computed using Newtons law f=ma (where f is the accumulated force acting on the particle). This is simple Euler integration. Here, however, we choose a velocity-less representation and another integration scheme: Instead of storing each particles position and velocity, we store its current position x and its previous position x*. Keeping the time step fixed, the update rule (or integration step) is then x' = 2x x * + a t 2 x * = x. This is called Verlet integration (see [Verlet]) and is used intensely when simulating molecular dynamics. It is quite stable since the velocity is implicitly given and consequently it is harder for velocity and position to come out of sync. (As a side note, the well-known demo effect for creating ripples in water uses a similar approach.) It works due to the fact

Pgina 3 de 16

that 2x-x*=x+(x-x*) and x-x* is an approximation of the current velocity (actually, its the distance traveled last time step). It is not always very accurate (energy might leave the system, i.e., dissipate) but its fast and stable. By changing the update rule to something like x=1.99x-0.99x*+a*t2 a small amount of drag can also be introduced to the system. At the end of each step, for each particle the current position x gets stored in the corresponding variable x*. Note that when manipulating many particles, a useful optimization is possible by simply swapping array pointers. The resulting code would look something like this (the Vector3 class should contain the appropriate member functions and overloaded operators for manipulation of vectors):
// Sample code for physics simulation class ParticleSystem { Vector3 m_x[NUM_PARTICLES]; // Current positions Vector3 m_oldx[NUM_PARTICLES]; // Previous positions Vector3 m_a[NUM_PARTICLES]; // Force accumulators Vector3 m_vGravity; // Gravity float m_fTimeStep; public: void TimeStep(); private: void Verlet(); void SatisfyConstraints(); void AccumulateForces(); // (constructors, initialization etc. omitted) }; // Verlet integration step void ParticleSystem::Verlet() { for(int i=0; i<NUM_PARTICLES; i++) { Vector3& x = m_x[i]; Vector3 temp = x; Vector3& oldx = m_oldx[i]; Vector3& a = m_a[i]; x += x-oldx+a*fTimeStep*fTimeStep; oldx = temp; } } // This function should accumulate forces for each particle void ParticleSystem::AccumulateForces() { // All particles are influenced by gravity for(int i=0; i<NUM_PARTICLES; i++) m_a[i] = m_vGravity; } // Here constraints should be satisfied void ParticleSystem::SatisfyConstraints() { // Ignore this function for now } void ParticleSystem::TimeStep() { AccumulateForces(); Verlet(); SatisfyConstraints(); }

The above code has been written for clarity, not speed. One optimization would be using arrays of float instead of Vector3 for the state representation. This might also make it easier to implement the system on a vector processor. This probably doesnt sound very groundbreaking yet. However, the advantages should become clear soon when we begin to use constraints and switch to rigid bodies. It will then

Pgina 4 de 16

be demonstrated how the above integration scheme leads to increased stability and a decreased amount of computation when compared to other approaches. Try setting a=(0,0,1), for example, and use the start condition x=(1,0,0), x*=(0,0,0), then do a couple of iterations by hand and see what happens. 3 Collision and contact handling by projection So-called penalty-based schemes handle contact by inserting springs at the penetration points. While this is very simple to implement, it has a number of serious drawbacks. For instance, it is hard to choose suitable spring constants such that, on one hand, objects dont penetrate too much and, on the other hand, the resulting system doesnt get unstable. In other schemes for simulating physics, collisions are handled by rewinding time (by binary search for instance) to the exact point of collision, handling the collision analytically from there and then restarting the simulation this is not very practical from a real-time point of view since the code could potentially run very slowly when there are a lot of collisions. Here, we use yet another strategy. Offending points are simply projected out of the obstacle. By projection, loosely speaking, we mean moving the point as little as possible until it is free of the obstacle. Normally, this means moving the point perpendicularly out towards the collision surface. Lets examine an example. Assume that our world is the inside of the cube (0,0,0)(1000,1000,1000) and assume also that the particles restitution coefficient is zero (that is, particles do not bounce off surfaces when colliding). To keep all positions inside the valid interval, the corresponding projection code would be:
// Implements particles in a box void ParticleSystem::SatisfyConstraints() { for(int i=0; i<NUM_PARTICLES; i++) { // For all particles Vector3& x = m_x[i]; x = vmin(vmax(x, Vector3(0,0,0)), Vector3(1000,1000,1000)); } }

(vmax operates on vectors taking the component-wise maximum whereas vmin takes the component-wise minimum.) This keeps all particle positions inside the cube and handles both collisions and resting contact. The beauty of the Verlet integration scheme is that the corresponding changes in velocity will be handled automatically. In the following calls to TimeStep(), the velocity is automatically regulated to contain no component in the normal direction of the surface (corresponding to a restitution coefficient of zero). See Figure 1. Try it out there is no need to directly cancel the velocity in the normal direction. While the above might seem somewhat trivial when looking at particles, the strength of the Verlet integration scheme is now beginning to shine through and should really become apparent when introducing constraints and coupled rigid bodies in a moment. 4 Solving several concurrent constraints by relaxation A common model for cloth consists of a simple system of interconnected springs and particles. However, it is not always trivial to solve the corresponding system of differential equations. It suffers from some of the same problems as the penalty-based systems:
Figure 1. Ten timesteps and two particles.

Pgina 5 de 16

Strong springs leads to stiff systems of equations that lead to instability if only simple integration techniques are used, or at least bad performance which leads to pain. Conversely, weak springs lead to elastically looking cloth. However, an interesting thing happens if we let the stiffness of the springs go to infinity: The system suddenly becomes solvable in a stable way with a very simple and fast approach. But before we continue talking about cloth, lets revisit the previous example. The cube considered above can be thought of as a collection of unilateral (inequality) constraints (one for each side of the cube) on the particle positions that should be satisfied at all times: xi 0 and xi 1000 for i = 1,2,3. (C1) In the example, constraints were satisfied (that is, particles are kept inside the cube) by simply modifying offending positions by projecting the particles onto the cube surface. To satisfy (C1), we use the following pseudo-code
// Pseudo-code to satisfy (C1) for i=1,2,3 set xi=min{max{xi, 0}, 1000}
One may think of this process as inserting infinitely stiff springs between the particle and the penetration surface springs that are exactly so strong and suitably damped that instantly they will attain their rest length zero. We now extend the experiment to model a stick of length 100. We do this by setting up two individual particles (with positions x1 and x2) and then require them to be a distance of 100 apart. Expressed mathematically, we get the following bilateral (equality) constraint:

| x2 x1 |= 100. (C2)

Although the particles might be correctly placed initially, after one integration step the separation distance between them might have become invalid. In order to obtain the correct distance once again, we move the particles by projecting them onto the set of solutions described by (C2). This is done by pushing the particles directly away from each other or by pulling them closer together (depending on whether the erroneous distance is too small or too large). See Figure 2.

Dist. too large

Correct distance

Dist. too small

Figure 2. Fixing an invalid distance by moving the particles.
The pseudo-code for satisfying the constraint (C2) is

Pgina 6 de 16

// Pseudo-code to satisfy (C2) delta = x2-x1; deltalength = sqrt(delta*delta); diff = (deltalength-restlength)/deltalength; x1 += delta*0.5*diff; x2 -= delta*0.5*diff;
Note that delta is a vector so delta*delta is actually a dot product. With restlength=100 the above pseudo-code will push apart or pull together the particles such that they once more attain the correct distance of 100 between them. Again we may think of the situation as if a very stiff spring with rest length 100 has been inserted between the particles such that they are instantly placed correctly. Now assume that we still want the particles to satisfy the cube constraints. By satisfying the stick constraint, however, we may have invalidated one or more of the cube constraints by pushing a particle out of the cube. This situation can be remedied by immediately projecting the offending particle position back onto the cube surface once more but then we end up invalidating the stick constraint again. Really, what we should do is solve for all constraints at once, both (C1) and (C2). This would be a matter of solving a system of equations. However, we choose to proceed indirectly by local iteration. We simply repeat the two pieces of pseudo-code a number of times after each other in the hope that the result is useful. This yields the following code:
// Implements simulation of a stick in a box void ParticleSystem::SatisfyConstraints() { for(int j=0; j<NUM_ITERATIONS; j++) { // First satisfy (C1) for(int i=0; i<NUM_PARTICLES; i++) { // For all particles Vector3& x = m_x[i]; x = vmin(vmax(x, Vector3(0,0,0)), Vector3(1000,1000,1000)); } // Then satisfy (C2) Vector3& x1 = m_x[0]; Vector3& x2 = m_x[1]; Vector3 delta = x2-x1; float deltalength = sqrt(delta*delta); float diff = (deltalength-restlength)/deltalength; x1 += delta*0.5*diff; x2 -= delta*0.5*diff; } }

(Initialization of the two particles has been omitted.) While this approach of pure repetition might appear somewhat nave, it turns out that it actually converges to the solution that we are looking for! The method is called relaxation (or Jacobi or Gauss-Seidel iteration depending on how you do it exactly, see [Press]). It works by consecutively satisfying various local constraints and then repeating; if the conditions are right, this will converge to a global configuration that satisfies all constraints at the same time. It is useful in many other situations where several interdependent constraints have to be satisfied at the same time. The number of necessary iterations varies depending on the physical system simulated and the amount of motion. It can be made adaptive by measuring the change from last iteration. If we stop the iterations early, the result might not end up being quite valid but because of the Verlet scheme, in next frame it will probably be better, next frame even more so etc.

Pgina 7 de 16

This means that stopping early will not ruin everything although the resulting animation might appear somewhat sloppier. Cloth simulation The fact that a stick constraint can be thought of as a really hard spring should make apparent its usefulness for cloth simulation as sketched in the beginning of this section. Assume, for example, that a hexagonal mesh of triangles describing the cloth has been constructed. For each vertex a particle is initialized and for each edge a stick constraint between the two corresponding particles is initialized (with the constraints rest length simply being the initial distance between the two vertices). The function HandleConstraints() then uses relaxation over all constraints. The relaxation loop could be iterated several times. However, to obtain nicely looking animation, actually for most pieces of cloth only one iteration is necessary! This means that the time usage in the cloth simulation depends mostly on the N square root operations and the N divisions performed (where N denotes the number of edges in the cloth mesh). As we shall see, a clever trick makes it possible to reduce this to N divisions per frame update this is really fast and one might argue that it probably cant get much faster.

// Implements cloth simulation struct Constraint { int particleA, particleB; float restlength; }; // Assume that an array of constraints, m_constraints, exists void ParticleSystem::SatisfyConstraints() { for(int j=0; j<NUM_ITERATIONS; j++) { for(int i=0; i<NUM_CONSTRAINTS; i++) { Constraint& c = m_constraints[i]; Vector3& x1 = m_x[c.particleA]; Vector3& x2 = m_x[c.particleB]; Vector3 delta = x2-x1; float deltalength = sqrt(delta*delta); float diff=(deltalength-c.restlength)/deltalength; x1 += delta*0.5*diff; x2 -= delta*0.5*diff; } // Constrain one particle of the cloth to origo m_x[0] = Vector3(0,0,0); } }
We now discuss how to get rid of the square root operation. If the constraints are all satisfied (which they should be at least almost), we already know what the result of the square root operation in a particular constraint expression ought to be, namely the rest length r of the corresponding stick. We can use this fact to approximate the square root function. Mathematically, what we do is approximate the square root function by its 1st order Taylor-expansion at a neighborhood of the squared rest length r*r (this is equivalent to one Newton-Raphson iteration with initial guess r). After some rewriting, we obtain the following pseudo-code:
// Pseudo-code for satisfying (C2) using sqrt approximation delta = x2-x1; delta*=restlength*restlength/(delta*delta+restlength*restlength)-0.5; x1 += delta; x2 -= delta;

Pgina 8 de 16

Notice that if the distance is already correct (that is, if |delta|=restlength), then one gets delta=(0,0,0) and no change is going to happen. Per constraint we now use zero square roots, one division only, and the squared value restlength*restlength can even be precalculated! The usage of time consuming operations is now down to N divisions per frame (and the corresponding memory accesses) it cant be done much faster than that and the result even looks quite nice. Actually, in Hitman, the overall speed of the cloth simulation was limited mostly by how many triangles it was possible to push through the rendering system. The constraints are not guaranteed to be satisfied after one iteration only, but because of the Verlet integration scheme, the system will quickly converge to the correct state over some frames. In fact, using only one iteration and approximating the square root removes the stiffness that appears otherwise when the sticks are perfectly stiff. By placing support sticks between strategically chosen couples of vertices sharing a neighbor, the cloth algorithm can be extended to simulate plants. Again, in Hitman only one pass through the relaxation loop was enough (in fact, the low number gave the plants exactly the right amount of bending behavior). The code and the equations covered in this section assume that all particles have identical mass. Of course, it is possible to model particles with different masses, the equations only get a little more complex. To satisfy (C2) while respecting particle masses, use the following code:

// Pseudo-code to satisfy (C2) delta = x2-x1; deltalength = sqrt(delta*delta); diff = (deltalength-restlength) /(deltalength*(invmass1+invmass2)); x1 += invmass1*delta*diff; x2 -= invmass2*delta*diff;
Here invmass1 and invmass2 are the numerical inverses of the two masses. If we want a particle to be immovable, simply set invmass=0 for that particle (corresponding to an infinite mass). Of course in the above case, the square root can also be approximated for a speedup. 5 Rigid bodies The equations governing motion of rigid bodies were discovered long before the invention of modern computers. To be able to say anything useful at that time, mathematicians needed the ability to manipulate expressions symbolically. In the theory of rigid bodies, this lead to useful notions and tools such as inertia tensors, angular momentum, torque, quaternions for representing orientations etc. However, with the current ability to process huge amounts of data numerically, it has become feasible and in some cases even advantageous to break down calculations to simpler elements when running a simulation. In the case of 3D rigid bodies, this could mean modeling a rigid body by four particles and six constraints (giving the correct amount of degrees of freedom, 4x3-6 = 6). This simplifies a lot of aspects and its exactly what we will do in the following. Consider a tetrahedron and place a particle at each of the four vertices. In addition, for each of the six edges on the tetrahedron create a distance constraint like the stick constraint discussed in the previous section. This is actually enough to simulate a rigid body. The tetrahedron can be let loose inside the cube world from earlier and the Verlet integrator will let it move correctly. The function SatisfyConstraints() should take care of two

Pgina 9 de 16

things: 1) That particles are kept inside the cube (like previously), and 2) That the six distance constraints are satisfied. Again, this can be done using the relaxation approach; 3 or 4 iterations should be enough with optional square root approximation. Now clearly, in general rigid bodies do not behave like tetrahedrons collision-wise (although they might do so kinetically). There is also another problem: Presently, collision detection between the rigid body and the world exterior is on a vertex-only basis, that is, if a vertex is found to be outside the world it is projected inside again. This works fine as long as the inside of the world is convex. If the world were non-convex then the tetrahedron and the world exterior could actually penetrate each other without any of the tetrahedron vertices being in an illegal region (see Figure 3 where Figure 3. A tetrahedron the triangle represents the 2D analogue of the penetrating the world. tetrahedron). This problem is handled in the following. Well first consider a simpler version of the problem. Consider the stick example from earlier and assume that the world exterior has a small bump on it. The stick can now penetrate the world exterior without any of the two stick particles leaving the world (see Figure 4). We wont go into the intricacies of constructing a collision detection engine since this is a science in itself. Instead we assume that there is a subsystem available which allows us to detect the collision. Furthermore we assume that the subsystem can reveal to us the penetration depth and identify the penetration points on each of the two colliding objects. (One definition of penetration points and penetration depth goes like this: The penetration distance dp is the shortest distance that would prevent the two objects from penetrating if one were to translate one of the objects by the distance dp in a suitable direction. The penetration points are the points on each object that just exactly touch the other object after the aforementioned translation has taken place.)

x2 q q p= x1

Figure 4a. Colliding stick I.
Figure 4b. Colliding stick II.
Take a look again at Figure 4. Here the stick has moved through the bump after the Verlet step. The collision engine has identified the two points of penetration, p and q. In Figure 4a, p is actually identical to the position of particle 1, i.e., p=x1. In Figure 4b, p lies between x1 and x2 at a position of the stick length from x1. In both cases, the point p lies on the stick and consequently it can be expressed as a linear combination of x1 and x2, p=c1 x1+c2 x2 such that c1+c2=1. In the first case, c1=1 and c2=0, in the second case, c1=0.75 and c2=0.25. These values tell us how much we should move the corresponding particles.
To fix the invalid configuration of the stick, it should be moved upwards somehow. Our goal is to avoid penetration by moving p to the same position as q. We do this by adjusting the

Pgina 10 de 16

positions of the two particles x1 and x2 in the direction of the vector between p and q, =qp. In the first case, we simply project x1 out of the invalid region like earlier (in the direction of q) and thats it (x2 is not touched). In the second case, p is still nearest to x1 and one might reason that consequently x1 should be moved more than x2. Actually, since p=0.75 x1 + 0.25 x2, we will choose to move x1 by an amount of 0.75 each time we move x2 by an amount of 0.25. In other words, the new particle positions x1 and x2 are given by the expressions
x1' = x1 + 0.75 x2' = x2 + 0.25
where is some unknown value. The new position of p after moving both particles is p=c1 x1+ c2 x2. Recall that we want p=q, i.e., we should choose exactly such that p ends up coinciding with q. Since we move the particles only in the direction of , also p moves in the direction of and consequently the solution to the equation p=q can be found by solving

p' = q

for. Expanding the left-hand side yields:
p' = (0.75 x1'+0.25 x2' ) = (0.75 (x1 + 0.75 ) + 0.25 (x2 + 0.25 )) = (0.75 x1 + 0.25 x2) + (0.+ 0.) 2 = p + (0.+ 0.) 2
which together with the right-hand side of (**) gives

(q p) . (0.+ 0.) 2

Plugging into (*) gives us the new positions of the particles for which p coincide with q. Figure 5 shows the situation after moving the particles. We have no object penetration but now the stick length constraint has been violated. To fix this, we do yet another iteration of the relaxation loop (or several) and were finished.

x2 x1 p=q=x1 p=q x2

Figure 5a. Collision I resolved.
Figure 5b. Collision II resolved.

Pgina 11 de 16

The above strategy also works for the tetrahedron in a completely analogous fashion. First the penetration points p and q are found (they may also be points interior to a triangle), and p is expressed as a linear combination of the four particles p=c1 x1+c2 x2+c3 x3+c4 x4 such that c1+c2+c3+c4=1 (this calls for solving a small system of linear equations). After finding =q-p, one computes the value
(q p) (c1 + c + c+ c ) 2
and the new positions are then given by
x1' = x1 + c1 x2' = x2 + c 2 x3' = x3 + c3 x4' = x4 + c 4 .
Here, we have collided a single rigid body with an immovable world. The above method generalizes to handle collisions of several rigid bodies. The collisions are processed for one pair of bodies at a time. Instead of moving only p, in this case both p and q are moved towards each other. Again, after adjusting the particle positions such that they satisfy the non-penetration constraints, the six distance constraints that make up the rigid body should be taken care of and so on. With this method, the tetrahedron can even be imbedded inside another object that can be used instead of the tetrahedron itself to handle collisions. In Figure 6, the tetrahedron is embedded inside a cube. First, the cube needs to be fastened to the tetrahedron in some way. One approach would be choosing the system mass midpoint 0.25*(x1+x2+x3+x4) as the cubes position and then derive an orientation matrix by examining the current positions of the particles. When a collision/penetration is found, the collision point p (which in this case will be placed on the cube) is then treated exactly as above and the positions of the particles are updated Figure 6. Embedding accordingly. As an optimization, it is possible to precompute the the tetrahedron inside values of c1-c4 for all vertices of the cube. If the penetration point another object. p is a vertex, the values for c1-c4 can be looked up and used directly. Otherwise, p lies on the interior of a surface triangle or one of its edges and the values of c1-c4 can then be interpolated from the precomputed values of the corresponding triangle vertices. Usually, 3 to 4 relaxation iterations are enough. The bodies will not behave as if they were completely rigid since the relaxation iterations are stopped prematurely. This is mostly a nice feature, actually, as there is no such thing as perfectly rigid bodies especially not human bodies. It also makes the system more stable. By rearranging the positions of the particles that make up the tetrahedron, the physical properties can be changed accordingly (mathematically, the inertia tensor changes as the positions and masses of the particles are changed). Other arrangements of particles and constraints than a tetrahedron are possible such as

Pgina 13 de 16

naturally. Since rotation of legs and arms around the length axis does not comprise the essential motion of a falling human body, this works out okay and actually optimizes speed by a great
Figure 9. The particle/stick configuration used in Hitman for representing the human anatomy.
Angular constraints are implemented to enforce limitations of the human anatomy. Simple self collision is taken care of by strategically introducing inequality distance constraints as discussed above, for example between the two knees making sure that the legs never cross. For collision with the environment, which consists of triangles, each stick is modeled as a capped cylinder. Somewhere in the collision system, a subroutine handles collisions between capped cylinders and triangles. When a collision is found, the penetration depth and points are extracted, and the collision is then handled for the offending stick in question exactly as described in the beginning of Section 5. Naturally, a lot of additional tweaking was necessary to get the result just right. 7 Comments This section contains various remarks that didnt fit anywhere else. Motion control To influence the motion of a simulated object, one simply moves the particles correspondingly. If a person is hit at the shoulder, move the shoulder particle backwards over a distance proportional to the strength of the blow. The Verlet integrator will then automatically set the shoulder in motion. This also makes it easy for the simulation to inherit velocities from an underlying traditional animation system. Simply record the positions of the particles for two frames and then give them to the Verlet integrator, which then automatically continues the motion. Bombs can be implemented by pushing each particle in the system away from the explosion over a distance inversely proportional to the square distance between the particle and the bomb center. It is possible to constrain a specific limb, say the hand, to a fixed position in space. In this way, one can implement inverse kinematics (IK): Inside the relaxation loop, keep setting the position of a specific particle (or several particles) to the position(s) wanted. Giving the particle infinite mass (invmass=0) helps making it immovable to the physics system. In Hitman, this strategy is used when dragging corpses; the hand (or neck or foot) of the corpse is constrained to follow the hand of the player. Handling friction

Pgina 14 de 16

Friction has not been taken care of yet. This means that unless we do something more, particles will slide along the floor as if it were made of ice. According to the Coulomb friction model, friction force depends on the size of the normal force between the objects in contact. To implement this, we measure the penetration depth dp when a penetration has occurred (before projecting the penetration point out of the obstacle). After projecting the particle onto the surface, the tangential velocity vt is then reduced by an amount proportional to dp (the proportion factor being the friction constant). This is done by appropriately modifying x*. See the Figure 10. Care should be taken that the tangential velocity does not reverse its direction in this case one should simply be set it to zero since this indicates that the penetration point has seized to move tangentially. Other and better friction models than this could and should be implemented. Collision detection

One of the bottlenecks in physics simulation as presented here lies in the collision detection, which is potentially performed several times inside the relaxation loop. It is possible, however, to iterate a different number of times over the various constraints and still obtain good results. In Hitman, the collision system works by culling all triangles inside the bounding box of the object simulated (this is done using a octtree approach). For each (static, background) triangle, a structure for fast collision queries against capped cylinders is then constructed and cached. This strategy gave quite a speed boost. To prevent objects that are moving really fast from passing through other obstacles (because of too large time steps), a simple test if performed. Imagine the line (or a capped cylinder of proper radius) beginning at the position of the objects midpoint last frame and ending at the position of the objects midpoint at the current frame. If this line hits anything, then the object position is set to the point of collision. Though this can theoretically give problems, in practice it works fine. Another collision cheat is used for dead bodies. If the unusual thing happens that a fast moving limb ends up being placed with the ends of the capped cylinder on each side of a wall, the cylinder is projected to the side of the wall where the cylinder is connected to the torso. Miscellaneous The number of relaxation iterations used in Hitman vary between 1 and 10 with the kind of object simulated. Although this is not enough to accurately solve the global system of constraints, it is sufficient to make motion seem natural. The nice thing about this scheme is that inaccuracies do not accumulate or persist visually in the system causing object drift or the like in some sense the combination of projection and the Verlet scheme manages to distribute complex calculations over several frames (other schemes have to use further stabilization techniques, like Baumgarte stabilization). Fortunately, the inaccuracies are
Figure 10. Collision handling with friction (projection and modification of tangential velocity).

Pgina 15 de 16

smallest or even nonexistent when there is little motion and greatest when there is heavy motion this is nice since fast or complex motion somewhat masks small inaccuracies for the human eye. A kind of soft bodies can also be implemented by using soft constraints, i.e., constraints that are allowed to have only a certain percentage of the deviation repaired each frame (i.e., if the rest length of a stick between two particles is 100 but the actual distance is 60, the relaxation code could first set the distance to 80 instead of 100, next frame 90, 95, 97.5 etc.). As mentioned, we have purposefully refrained from using heavy mathematical notation in order to reach an audience with a broader background. This means that even though the methods presented are firmly based mathematically, their origins may appear somewhat vague or even magical. For the mathematically inclined, however, what we are doing is actually a sort of timestepping approach to solving differential inclusions (a variant of differential equations) using a simple sort of interior-point algorithm (see [Stewart] where a similar approach is discussed). When trying to satisfy the constraints, we are actually projecting the system state onto the manifold described by the constraints. This, in turn, is done by solving a system of linear equations. The linear equations or code to solve the constraints can be obtained by deriving the Jacobian of the constraint functions. In this article, relaxation has been discussed as an implicit way of solving the system. Although we havent touched the subject here, it is sometimes useful to change the relaxation coefficient or even to use overrelaxation (see [Press] for an explanation). Since relaxation solvers sometimes converge slowly, one might also choose to explicitly construct the equation system and use other methods to solve it (for example a sparse matrix conjugate gradient descent solver with preconditioning using the results from the previous frame (thereby utilizing coherence)). Note that the Verlet integrator scheme exists in a number of variants, e.g., the Leapfrog integrator and the velocity Verlet integrator. Accuracy might be improved by using these. Singularities (divisions by zero usually brought about by coinciding particles) can be handled by slightly dislocating particles at random. As an optimization, bodies should time out when they have fallen to rest. To toy with the animation system for dead characters in Hitman: Codename 47, open the Hitman.ini file and add the two lines enableconsole 1 and consolecmd ip_debug 1 at the bottom. Pointing the cursor at an enemy and pressing shift+F12 will cause a small bomb to explode in his vicinity sending him flying. Press K to toggle free-cam mode (camera is controlled by cursor keys, shift, and ctrl). Note that since all operations basically take place on the particle level, the algorithms should be very suitable for vector processing (Playstation 2 for example). 8 Conclusion This paper has described how a physics system was implemented in Hitman. The underlying philosophy of combining iterative methods with a stable integrator has proven to be successful and useful for implementation in computer games. Most notably, the unified particle-based framework, which handles both collisions and contact, and the ability to trade off speed vs. accuracy without accumulating visually obvious errors are powerful features. Naturally, there are still many specifics that can be improved upon. In particular, the tetrahedron model for rigid bodies needs some work. This is in the works.

 

Tags

DSC-W310 B DEH-1770 Aerostar-1997 Caravan Controller 2 IP100 FZ6-NHG-2008 B3191-5-M Quilt 50 XG-PH50X - A809 DVP3100V 02 Keynote 3 Veritas R8 SC-AK280 KX-TG2621 BB 300 Le32R41B 42PX3RVB Wizooverb W2 LH-T912SB Diagram CL-1 Nimh MAX Plus TE109 Supply KX-FC228FX NP-Q1 MWD-480 Esam6600 Scanmaker V310 DCR-SR300 23PF4321-01 90128 T 1720 MFC06 R-310AW SA10003 Latitude D505 BT205 System All-IN-ONE DI-604 Deluxe 72600 W2253S-PF Hipath 3550 GA-8I915g-MF Rotisserie 21FC1AG Power I SCD463 350SE KD-G722E Sounder 635 B HT762TZR FAX-LAB 460 WD-14331FDK John Ants Ryobi R175 Pokemon SGH-E258 JU5000 PS-52 31 29PT552A-78R CD1401B 24 IS 250C EW914S Yamaha P120 CE1113FL-S BDP-LX08 Of WAR Marquis 2003 I8000 82 IS 32LG20 MP450 DWL-900AP Plus CDX-GT620U KRC-958R TX-32PX10F TXP46U20E CTK-625L EP747 Review PT-LB60NTU Lavamat 970 PSR-520 Voltrex W-865R Frontline Forge FLS572C FT-2400H ICF-C180 RH1F99MHS Centrifugeuse Simulator Quest-1997 KX-FL511

 

manuel d'instructions, Guide de l'utilisateur | Manual de instrucciones, Instrucciones de uso | Bedienungsanleitung, Bedienungsanleitung | Manual de Instruções, guia do usuário | инструкция | návod na použitie, Užívateľská príručka, návod k použití | bruksanvisningen | instrukcja, podręcznik użytkownika | kullanım kılavuzu, Kullanım | kézikönyv, használati útmutató | manuale di istruzioni, istruzioni d'uso | handleiding, gebruikershandleiding

 

Sitemap

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101