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 essential data.

You can download the demo from our web site at

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.

    Darryl Long
    Project Manager

    Image of the Day Gallery



    Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
    Please read our Terms, Conditions, and Privacy information.