1.1 Rendering modes 1.1.1 What are the different rendering code paths supported by Halo PC?
Halo supports 4 different rendering code paths:
Pixel shaders 2.0 (DirectX 9.0) In this code
path, you are making absolutely no compromises on the visual quality of the game. You are seeing everything as best as possible,
as engineered by our team. All the effects are in their most demanding form (as complex of a calculation as necessary to generate
the best visual result possible).
Having said this, for many simple effects, even if you are running PS2.0, the game
will automatically use a 1.4 or 1.1 shader because the visual result is exactly the same.
Pixel shaders 1.4 (DirectX
8.0) When running in PS1.4, you are compromising only a subset of effects. Specifically:
- No bumped mirrored surfaces
- Some video effects are two-pass
Pixel shaders 1.1 (DirectX 8.0) PS1.1 is probably the most widespread pixel shader version currently. When running
in the PS1.1 rendering code path, the visual compromises are (in addition to the PS1.4 compromises):
- No model self-illumination (excluding some specific environmental models)
- No animated lightmaps
- Fog calculations are triangle based, not pixel based
- No specular lights
Cards that support Hardware T&L (fixed function - DirectX 7.0) This is the most basic rendering code path
for Halo. When running in that mode, you have to accept many visual compromises but are still getting a compelling Halo visual
experience. The compromises are:
- No shadows
- Simple active camouflage effect
- No glows or flares
- Very basic fog, water and lighting
Note that you can always scale down your video card but you cant scale up. Check your video cards documentation to determine
witch version of DirectX / pixel shaders it supports. If, for example, your card supports PS2.0, you can choose to compromise
many of Halos effects by forcing it to run PS1.1. However, if your card supports PS1.1, you cant force it to PS2.0 - this
is actually happening in hardware, not in software.
1.1.2 How do I force the game to use a different rendering code path?
You force Halo to use a difference rendering code path by adding an argument to its command line. The arguments
are -use20, -use14, -use11 and -useff. For example, to force Halo to run in PS1.4 mode, you would launch Halo by typing: halo.exe
-use14. If you are using the shortcut installed on your desktop, follow these steps to add an argument to your shortcut:
- Right-click on the shortcut and choose Properties.
- In the target field, you will see C:\Program Files\Microsoft Games\Halo\halo.exe (assuming youve installed in the default
directory). Add -use14 at the end of it.
1.1.3 The explanation is cool and everything but whats the bottom line on rendering code paths?
Bottom line is, experiment. Figure out what works for you and your system for single player campaign play and
for online multiplayer.
For example, in single player, I would rather compromise resolution, sound variety, effect
details and a few frames-per-second than forcing PS1.4. However, others on the team will gladly force PS1.4 to run on a higher
resolution. For multiplayer, Im absolutely forcing PS1.1, compromising shadows, decals and sound variety to get a consistent
high framerate at a higher resolution. This is a matter of personal preference.
1.2 Framerate modes 1.2.1 What are the different framerate modes supported by Halo PC?
Halo supports 3 different framerate modes:
30 FPS When running in this mode, Halo will render
at a consistent framerate of 30 frames-per-second (assuming your system is capable of sustaining a constant 30 FPS framerate).
VSYNC In this mode, Halo will render as fast as possible but never faster than your currently set monitor
refresh rate.
NO VSYNC The final mode will allow Halo to render as fast as possible. This means Halo may
refresh its image faster than your monitors currently set refresh rate, resulting in horizontal tearing (visual anomalies).
Cinematic cut-scenes are always played back at 30 FPS, however you set your framerate mode. These were all originally
authored to look best when played back at 30 FPS.
1.2.2 How do I change my framerate mode?
To change your framerate mode, follow these steps:
- From Halos Main Menu, click Settings.
- From the Settings menu, click Video Setup.
- Change the Framerate option (its the third one) to whichever one you want to try.
- Click Ok.
The change will only take effect once youve clicked Ok. Note that as for every video setting, the framerate mode is a per-profile
option so if you use a different profile to play online, you should double-check the settings to make sure it is set to your
liking.
1.2.3 Why the heck did you guys leave 30 FPS in there? For the love of God, this is a PC game...
We know its a PC game... We actually had long discussions about this and many of us felt that consistent framerates
were a much more pleasant experience than variable framerates so we left an option to force it to a consistent rendering speed.
If you just want to run consistently as fast as your computer can, simply set this option to NO VSYNC and youre all set.
1.3 Hardware specific options 1.3.1 Is hardware anti-aliasing supported?
No. Halo renders everything to multiple off-screen surfaces instead of directly to the D3D back buffer and hardware
anti-aliasing is applied on the back buffer only. For Halo, we have to do this because some of the effects (such as the active
camouflage or the zoom scope) require the back buffer as source data.
1.3.2 So whatever I set in my video cards control panel makes no difference, right?
Actually, it does make a different - it will slow you down. When playing Halo, you should disable full screen
anti-aliasing in your video cards control panel.
1.3.3 What about some of the other popular video card options?
As documented in our readme file, we recommend leaving the Mipmap Detail Level to High Quality for ATI Radeon
9800 PRO 128 cards. We also recommended disabling hardware anti-aliasing for both nVidia and ATI cards.
Many of these
video cards hardware specific options (available through the video cards control panel) will cause graphics anomalies with
Halo and we strongly suggest leaving them disabled.
1.4 Video Setup screen 1.4.1 Do I really care about all these options for performance? Shadows, decals, all that
stuff...
Yes and no. Heres the breakdown:
Resolution and refresh rate You are used to these ones, every
PC game will give you control over resolution and refresh rate. You know that the higher the resolution gets, the more demanding
it gets on your system. So this has a direct impact on performance.
Framerate This one was explained above.
The setting doesnt impact performance at all. However, if you leave it set to 30 FPS and your system could render faster,
it obviously wont.
Specular Its beyond the scope of this FAQ to explain what specular lighting is. The
performance impact of enabling or disabling specular lighting is about 1-3%, depending on your system.
Shadows
Shadows are pretty much self-explanatory. Their impact on performance is about 4-7%, depending on your system and your game
resolution.
Decals Decals are, for example, bullet marks left on walls when firing on them or blood left
on the ground after a fight.
Enabling decals means whenever you fire your weapon, for every bullet that hits a surface,
two triangles are created (to form a quad), their projection on the surface is calculated (the surface is usually not flat)
and they are rendered (textured with the appropriate bitmap and blended with the surface, of course).
Obviously, all
of this comes at a cost, which is minimal for 1 decal but grows linearly with the number of decals on screen. These decals
are created in a circular buffer so at one point, to create a new decal, one will have to be removed. They will also disappear
with time. All of this is very standard across games.
So, disabling decals means all of this is skipped and results
in and average of 1-2% performance improvement, independent on the resolution you are running at.
Particles
Particles impact the visual density of effects such as grenade explosions and the muzzle flash resulting from firing your
weapons. The choices are Off, Low or High. Much like for decals, rendering particles involves rendering more triangles for
every frame. The performance variation is about 3-5%, independent on the resolution you are running at.
Texture
quality Textures in Halo have different level of details (mip-maps), making them visually more compelling depending
on the distance from which they are viewed (an enemy close to you will use a higher-resolution mip-map compared to a rock
in the distance). Every game has a similar system to manage texture memory efficiently. When this is set to medium or low,
the higher mip-maps level is adjusted accordingly. The impact on performance can be anywhere between 1-5% depending on your
system and your game resolution.
Gamma The gamma setting has absolutely no impact on performance. It allows
you to brighten or darken your screen image in game.
1.4.2 What about the Defaults button? How does it pick its defaults?
Yeah, good question. The defaults are pre-programmed, depending on the following properties Halo detects from
your computer: your CPU speed, how much system memory (RAM) is available and how much video memory is available. Specular
and decals also require certain hardware specific functionality and may be disabled if your video card doesnt support them.
When running in safe mode, specular, shadows and decals are turned off, texture quality is lowered and the game runs
in 640 * 480.
1.5 Is there a real-time framerate graph in-game?
Yes. Hit CTRL+F12 and a nice real-time framerate graph will overlay the game. Note that its a very basic one.
It wont keep track of low / high / average numbers.
2.1 Audio setup 2.1.1 Do audio settings have any impact on the games performance?
Well, lets break them down as we did for video settings.
Master / Effects / Music volume No
impact on performance whatsoever.
Hardware acceleration First, your sound card must support this, not all
sound cards do. If your sound card does support it, this will allow it to mix the sound buffers on the sound card, freeing
the CPU from having to do this. If hardware acceleration is not supported or enabled, the environmental sound option (explained
below) will be grayed out since it is not available in software mode.
Sound quality The difference between
Low / Medium / High is the number of voices made available to Halo as well as the quality of the final output mix sent to
the sound card. On most cards with hardware enabled, the impact on performance is negligible; however, sound cards mixing
in software will likely see a difference in performance with each setting.
Environmental sound Once again,
this is dependant on your hardware and is specifically for sound cards which support EAX such as Creative, Turtle Beach, and
Hercules since our environmental sound is EAX based. There is minimal impact on performance when enabling this (assuming your
sound card is capable of doing it).
Sound variety Believe it or not, our audio designers are so cool that
theyve recorded about 15 different sounds for firing the Assault Riffle (and every other weapon). When a weapon is continually
fired, it randomly selects one of the sound files and plays it. By keeping the sound variety on low or medium, you reduce
the pool of random sounds the game picks from, forcing re-usage of already cached sounds. This not only saves CPU cycles since
every sound in Halo is compressed, but this also helps to reduce memory usage. The amount of performance gained depends on
your system. Mid to high level machines may notice a slight gain, whereas lower end machines will most likely see a larger
gain.
2.1.2 Anything to note about these defaults?
No. These will provide the best balance between audio quality and performance for most users.
2.2 Non-graphical hardware specific questions 2.2.1 Are there any specific hardware devices for which there
are known performance issues with Halo?
Assuming all your devices are running using their latest available drivers, no, there is no specific hardware
devices for which we know of performance issues with Halo.
However, the key is to get your latest drivers! Ive heard
of some pretty drastic performance improvements under certain Via 4-in-1 motherboards when their drivers were updated.
2.3 Operating systems specific questions 2.3.1 Anything I should know if Im using Windows 98 SE or Windows
98 ME?
Yes!
Enable Direct Memory Access (DMA) for your IDE controller. To enable DMA, follow these steps:
- Close all programs that are running on your computer.
- Click Start, point to Settings, and then click Control Panel.
- Double-click System.
- Click the Device Manager tab.
- Click the PLUS SIGN (+) next to Disk Drives.
- Click IDE/Disk (hard drive), and then click Properties.
- On the Settings tab, select DMA.
- Click OK, and then click OK again.
- Restart the computer.
Note: when you enable DMA, you increase the access speed to the CD-ROM drive and the hard disk. Some drivers do not support
DMA access. If the DMA check box remains selected after you restart your computer, DMA access is supported.
If
your system has 256 MB RAM or more, run in server mode rather than workstation mode. To run in server mode, follow these
steps:
- Right-click on My Computer and select Properties.
- Click the Performance tab.
- Click File System.
- Select Network Server as the typical role of the PC.
2.3.2 What operating system do you recommend?
Halo runs best under Windows XP. While weve tested for compatibility with more versions of Windows (and in more
languages) than you can think of, performance has always been optimal on Windows XP.
This is unsurprising: all the
latest hardware is being optimized for feature only found under Windows XP and drivers are been written to take advantage
of the stability and reliability of Windows XP.
2.3.3 Any other general advice?
Yes!
Make sure you have the very latest video drivers installed. You may want to try going
directly to the manufacturer of your video card for the most recent version of the video driver. We have worked closely with
the graphics companies to make sure their most recent drivers are optimized for playing Halo.
Make sure you have
the very latest audio drivers installed. You may want to try going directly to the manufacturer of your audio card
for the most recent version of the sound driver.
Make sure you have the latest motherboard drivers installed. Most
motherboards have firmware updates available that can be obtained from your computer manufacturer or the maker of your motherboard
chipset directly. These updates are critical to make sure your AGP bus is running as efficiently as possible and the amount
of sound, disk and network data sent across the PCI bus do not interfere or cause problems.
Motherboards with VIA
AGP chipsets, particularly with AMD CPUs require the latest '4-in-1 drivers available from for best performance and system
stability.
Make sure you have the latest BIOS updates for your motherboard. The BIOS is critical at reading
and initializing the defaults for all your hardware and the very latest versions of the BIOS are often required to get the
best performance out of some of the latest 4x and 8x AGP video cards. Once again, you should go directly to your motherboards
manufacturer to get the latest BIOS and read carefully the instruction included with the updated driver.
3.1 What is the timedemo feature?
Timedemo is a feature we implemented during the development of the game to help us make repeatable and reliable
performance comparisons across a wide variety of system. On a daily basis, we would run timedemo on 5-8 different popular
configurations with different settings at least 5 times, knowing immediately if a recent change was improving or decreasing
performance.
3.2 What does timedemo do, specifically?
Timedemo will launch the game and load 4 cinematic sequences from the game, specifically these four:
- Intro sequence to the second level, Halo.
- Intro sequence to the fourth level, The Silent Cartographer
- Intro sequence to the sixth level, 343 Guilty Spark
- Intro sequence to the ninth level, Keyes
These 4 cinematic sequences total 4700 frames.
Timedemo will get a begin time, start loading everything, render
everything and get an end time for the whole sequence. When dividing 4700 by this total time, you get an average number of
frames rendered every second.
3.3 Sounds like a bizarre idea to call this a representation of the games framerate, doesnt it?
Yes, it does because everyones interpretation of these results varies.
Specifically in our case, with
the original Halo executable, for every frame rendered in the timedemo sequence, we look at how much memory we are using (to
get the maximum memory consumption and the average memory consumption numbers reported by timedemo). This is very expensive
and slows the whole sequence by anywhere between 30-60%. Of course, the game itself doesnt do that for every frame it renders...
Now keep in mind that the definition of a benchmark is to run two things one next to the other and reliably say: hey,
this one is running much better than this one. Timedemo successfully accomplishes that. For any two machines, if you run timedemo
side by side over and over again, you will know for a fact which machine gives you the best performance for loading these
4 cinematic sequences, rendering every frame, playing every sound, loading all the assets, checking on memory...
3.4 So with the upcoming 1.02 patch, are you doing anything to timedemos functionality?
Yes, we are doing two things:
- For every frame we render, we will not look at the memory footprint anymore.
- We are reformatting the output to display which graphical / audio settings are enabled / disabled. (so timedemo.txt will
tell you if shadows were on or not, for example).
These are the only two changes. Any changes in the average frames-per-second numbers you use to see with halo.exe version
1.00 or 1.01 is only the result of not looking at the memory consumption anymore.
We had a debate about whether we
should factor in loading times or not in the timedemo results and we have decided to keep loading times in the results. Actually,
we dont really have a choice. For any given frame, we have no trivial way of separating loading time from actual rendering
time. This means that a given Windows 98 system running with DMA enabled on the IDE hard drive will render the whole sequence
faster than the exact same machine running with DMA disabled. Similarly, two high-end Windows XP systems running with different
performing hard disks (5400 rpm VS 7200 rpm, for example) will produce different results.
We think that it is fair
for a benchmark to factor these in. After all, benchmarking is not exclusively about raw rendering power - the performance
of the other components in your system should also be taken into account.
3.5 How do I use the timedemo?
Simply run halo.exe -timedemo. If you are using the shortcut that was installed on your desktop to run Halo, follow
these steps to run timedemo:
- Right-click on the shortcut and choose Properties.
- In the target field, you will see C:\Program Files\Microsoft Games\Halo\halo.exe (assuming youve installed in the default
directory). Add -timedemo at the end of it.
3.6 How does timedemo report its results?
Timedemo will create a file named timedemo.txt in your install folder.
3.7 Will timedemo take any other arguments into account?
Yes. If you run halo.exe -nosound -use11 -timedemo, timedemo will run without sound and will use the pixel shader
1.1 rendering code path.
4.1 Give me some tips to improve the framerate performance of my multiplayer game, now!
Force the renderer to use a different rendering pipeline by using the -use14 or -use11 command. As
weve seen above, a few key effects in the single player campaign look significantly better when theyre using the 2.0 version
of the pixel shaders. However, none of these effects are used in the multiplayer game. If youre loading up Halo to fight online,
force the renderer down to 1.4 or 1.1.
Turn off decals and shadows under Video Setup. These are super-cool
for the single player campaign and really add to the visual experience of playing Halo. However, for online mayhem, I would
compromise them to get better performance. Still, I wouldnt turn down particles or effects - they are helpful to keep a visual
representation of the radius of different explosions.
Under the Audio Setup, keep the sound variety on low or medium.
4.2 Im all fine on framerate performance. Whats the deal with bandwidth?
All right, this could be a lengthy discussion but well keep it short. From one multiplayer game to another, many
different things will affect the size and the number of packets transmitted from the server to the clients. These things vary
from the game type to the number of vehicles, from the weapon set to the number of players and with what is actually happening
in a specific game. On average, a client will send 8 Kbps and receive 35 Kbps, meaning a 56Kbps modem player can join any
kind of game. That is, obviously, assuming the server has a wide enough pipe to send up all that data to each client.
4.3 Blah, blah, blah... Just tell me how to avoid lag as well as humanly possible...
Go to network settings and dont lie about your connection speed! Halo servers are smart - they will
throttle how much packets they send your way depending on the connection speed you are reporting. Not only that, should the
server choose to send you less data, it will be smart about the tradeoffs it has to make and optimize your experience. For
example, lets say it needs to reduce the amount of information it is sending you. It will choose to send you less about a
weapon on the ground being accelerated by an explosion rather than compromising how much information its sending you about
the player you are fighting against (its position, its actions, ... all that critical information).
However, if you
are on a 56Kbps modem and you report being on T1 / LAN, the server may send you more information than you can handle and you
will start experiencing stuttering and lag.
Play on dedicated servers. Play on them! If you want to play
a game type thats not on there, send Bungie an e-mail, they will get it in rotation. Better yet, set up your own! These have
plenty of upstream bandwidth and they are your best bet to the highest possible quality of experience online.
5.1 Where can I find information about command line arguments?
Check out the readme.rtf file included in the game or type halo.exe -help to get the list of console commands.
Whatever I would write here would be a copy-paste of that information
|