Vance:
What's the biggest misconception people have about trying to make an FPS
in QB?
Pauli:
They underestimate the QB. You can push the limits of QB with some external
libraries and some well written C/ASM code. It's also quite easy to rewrite
the bottlenecks of your QB program in C. Most of the FPS is still algorithmically
quite simple. You can also speed up your programs by using fixed-point
math instead of floating points.
Vance:
What were some of the things you were working on during MUX where you were
like, "Yeah! Betcha they didn't expect that to be done on QB!"
Pauli:
The lighting engine and high-resolution graphics. No anime characters...
Vance:
What level in MUX really illustrates some of the best things that the MUX
engine can do?
Pauli:
I think Level 7, "Dark Tunnels". Basically you see nothing except some
light spots. You can destroy some of the lights, making the level even
darker. You see enemies' silhouettes in front of the light sources. You
hear
their roars echoing in the corridors. It's kind of eerie.
Vance:
What kind of AI do the enemies in MUX use?
Pauli:
They use the following algorithm: First, they count their direction vector
which points to layer. The AI engine tries to move enemy "vectorwards".
If there's a wall it makes a double check whether the enemy can move to
the directions of X and Y components. If they can, they move "componentwards"
1.5 times the vector component length. If they see you in front of you
(basically same algorithm as the raycaster, but only one ray fired) they
start firing.
Firing angle is the
same as their direction angle, plus or minus some random number depending
on the enemy's weapon accuracy. The enemy firing accurary is somewhat character
related but every enemy is individual in MUX. Some might fire more accurately,
some might fire with greater firing rate or some might be a sort of "hawks"
which start shooting at the player immediately when he's in front of their
guns.
Vance:
What are some of your favorite enemies and weapons to program and see in
action while developing MUX?
Pauli:
For the weapons, definitely the chaingun. It's so nice. Firing rate is
about 4000rpm. Eats ammo like popcorn. And I like the sound it does. For
the enemies, the Muncho is my favorite. It's so grotesque, even though
it's not very dangerous. And it dies nicely... you can see it's intestines
falling on the floor. POOF!
There was basically
no difference programming the weapons or enemies because each enemy and
player weapon uses same routine. The enemies and weapons are just a pack
of integers ;-)
Vance:
Where did the idea for the MUX OS come from?
Pauli:
From DOOM Operating System. I was too lazy to code menus and I decided
to make a Quake-styled hotkey/console interface. (I decided to develop
MUX less than a year!)
Vance:
You said that MUX uses a combination of QBasic and C. Where was the C part
of the code used, and could it have been feasibly done using QB?
Pauli:
At first, MUX was a full QB-game but it was soooooooooooooooo slow that
I decided to rewrite the raycasting part in C. MUX uses some perverse optimizations
that aren't available in QB (i486 instructions, binary shifts, unsigned
ints instead of LON.) It cut down the system requirements of MUX. It runs
smoothly on my 166mhz Pentium MMX laptop, and on a 350mhz P2 it flies.
In fact it's so fast that you have to limit its speed to keep it playable.
Not bad for a QB game ;-)
Vance:
How far along would you consider MUX compared to commercial FPSes? (Wolfenstein
3D, Doom, ROTT, etc.)
Pauli:
MUX has some techniques which weren't implemented even in Duke Nukem 3D.
ROTT had dynamic lights, but in MUX they also affect on floors and ceilings,
not only walls.
Most of the "older"
FPSes had awfully drawn textures and actors, think about Wolfenstein. Neon
colors!
I tried to keep in
mind that no pure hues exist in real life when I created the MUX color
palette. Every color is somewhat mixed with gray, which makes MUX look
more realistic. The wall textures are also blurred, which makes them look
less "pixelated". It's also good to keep in mind that MUX has "tall-res"
mode which isn't popular with coders (why? it's a lot of better looking
than 13h), although it's an easy hack.
Vance:
Do you think QB can handle an online or network FPS?
Pauli:
Definitely yes. If someone wants to make "MUX Tournament", don't let ME
stop you!
Vance:
In your opinion, which of the big four (PC, PS2, Gamecube, XBox) is furthest
along in terms of benefitting FPS fans and offering potential for more
FPS goodness?
Pauli:
I think PC. The innovations will come first to PC, then to consoles. PC
is always one step ahead. Consoles have some pros against PC: games always
work without hardware problems and there's no CPU-speed sucking parasite
called Windows.
Vance:
Are you interested in working on a commercial FPS for any of these four
platforms?
Pauli:
I'm mostly interested in story-based adventures and epic strategy games.
I thought MUX's going to be a demo, but it expanded to whole game (quite
big indeed). Creating an FPS is very difficult task. But I'm not disappointed
with that fact. Download MUX to see what's it all about! |