Submitted by , posted on 02 May 2002
Image Description, by
These are screenshots from the Pythian Project's first technical demo (Don't
take the frame rates too seriously; my video card is 4 years old). We
finished the demo a few months ago after 3 years of development.
The Pythian Project is a team of Delphi coders working together to create a
CRPG. At the start, no one had any real graphics experience and we didn't
have a clue how to write a game. When we decided to write a 3D engine, most
people figured it was impossible with Delphi and they quit. It's a language
most people associate with databases, not with real-time 3D games. We've
worked hard to prove them wrong. Although nothing in this demo hasn't been
done before, most of it has never been done with Delphi, so we try to help
the Delphi community by keeping our code Open Source.
This demo shows the third iteration of our engine. The first pass was
something like Wolfenstein, and the second pass slightly resembled Doom.
This third attempt is more ambitious as we learned a lot from the first two.
It's a Portal Engine, although pretty slow because it doesn't use triangle
strips or any algorithmic optimizations for the world geometry.
For the first two years of the project we didn't have any artists, and no
one knew how to use (or afford) 3D Studio, so we wrote our own Level Editor.
It's nowhere close to being a real modelling app, but it was good enough. I
modelled all the world geometry for the demo, and I don't know the first
thing about modelling. We "borrowed" all our character models from Quake II
fan sites. Our skydome texture is generated from a filtered Perlin noise
function so we can have different degrees of cloudiness and dynamically
light the clouds based on the sun position. Sounds great to a coder, but the
artists keep telling me it looks bad. They just don't understand! ;)
It took us such a long time to finish the demo because for the last year or
so we were concentrating on adding gameplay elements, including the ability
to talk to people and move things around with real physical simulation. We
added a bunch of simple AI and integrated Python as a run-time scripting
language for triggering events and driving the AI. We spent a lot of time
working on our VGL, an OpenGL user-interface with all the bells and whistles
you'd expect from a windowing system, including running like molasses.
I could go on for a really long time about all the little things that added
up to making this tech demo actually playable instead of just some art and
an engine, but I'll resist. I should mention the modules that didn't make
it into the demo. The ROAM terrain engine seemed like a good idea 2 years
ago but these days I think the CPU time is more valuable than the GPU time,
so I removed it. The multi-player network implemention was ripped out and
is being rewritten for the next demo. (Yeah, it's fun to play Quake 3
against your friends but nothing beats fragging them in YOUR game :) We
learned really quickly that TCP/IP is way too slow for gaming over the
internet, so we're changing it to use UDP for most data and TCP/IP for
You can download the demo from our web site at http://www.pythianproject.org
Here's the list of buzzwords:
a.. Portal Engine
b.. Keyframed models from Quake II
c.. Uses OpenGL (windowed or full screen)
d.. Custom-built, re-usable GUI
e.. Python for run-time scripting
f.. Conversation Engine
g.. Real-time physics simulation
h.. Multi-layer Skydome (for many cloud layers)
i.. Pre-calculated lightmaps using multi-texturing and JPEG compression
j.. Easy-to-extend scriptable AI system
k.. Particle Systems (can even use physics on the particles)
l.. Camera Animations
m.. Level Editor modelling tool
Now that the first demo is complete, we've started on the next phase of our
project. This includes using optimizations such as space partitioning,
triangle strips and shaders. I've already got the triangle strip generation
and rendering code working, and I was rewarded with a 10-15 FPS boost. We
have a few really talented artists now, so all our geometry is imported from
3D Studio or Maya and we will only use the Level Editor for placing objects
and writing scripts. The Phase 2 demo will include multi-player support and
skeletal animation (using Cal3D) so we'll have some actual combat gameplay.
Our team is really excited about the next phase, and we think our little
Delphi engine will go a long way.