Riot's Page
E-mail me.
My last host went under and took my website with it, so welcome to the bare-bones "post-crash edition" of my website. For now it's just a list of the stuff I've done recently.
Can't run something on this page? Make sure you have the Visual C++ 2005 SP1 runtimes installed!
Tertium Bellum : Online modern warfare shooter/RPG
Tertium Bellum is a hybrid tactical shooter and action-RPG. The year is 2032, extraterrestrial artifacts have crashed to Earth and sparked a worldwide war for their control. Some see the artifacts as the perfect natural resource, some see it as the key to immortality, but all wish to see it as theirs. Armies, revolutionaries, merceneries and freelancers all join the fray to claim their stake in the future. Outdoor control-based shooter with strong character customization options, active abilities and powerups, functional secondary objectives, deployables, and vehicles. tertiumbellum.com coming soon, but you can check out the current design draft now!
The source code is available for checkout via Subversion:
svn://svn.icculus.org/teu/trunk/tertius/
Or browse it via ViewSVN:
http://svn.icculus.org/teu/trunk/tertius/
Points of interest:
/src/tsal/ - Tertius Skeletal Animation Library, a skeletal animation toolkit that is independent of the rest of the engine. Software skinning and animation tree blending are currently functional. Hardware skinning and SSE/SSE3 acceleration are pending.
/src/tmedia/ - Tertius Media, utility for importing data into TMRF format. Imports md5mesh, md5anim, PSK, and PSA. COLLADA support in progress.
/src/tdp/ - Main directory for TDP modules, as well as the Tertius Renderer framework and Tertius Bellum Renderer implementation.
The game engine and all utilities except Radiant compile with Visual C++ Express Edition. Based on the Quake 3 engine, with numerous major enhancements:
- Tertius renderer and material system
- Totally-new rendering backend, which will support an innovative template-based asset recognition system that allows quick material prototyping and a profile-based material system with support for hardware as low as DX7 cards with the ability to take full advantage of programmable pixel shaders on DX9 hardware. Unlike many systems, material properties do not have to be specifically defined, templates can determine the features of a texture simply by name or by the presence of other assets, and one template can be defined to cover any number of material names.
Techniques are created on the fly using extremely flexible Lua scripts, then cached for future reuse. This allows for an extremely high number of tightly-optimized rendering paths. Tertium Bellum has over 280 variants for just the base layer on vertex-lit models on DX9-class hardware, all of which are derived from the same rendering profile.
- Optimized tool chain
- Simplifies the compilation of shaders and other assets by generating permutations and compiling them offline. Programmable shaders in the Tertius material system use a hybrid GLSL/HLSL/Cg dialect referred to as "XL" which allows Direct3D and OpenGL shaders to be authored once adapts them to their native bindings through a compatibility layer.
- Optimized VLight compiler
- which will support particle-traced radiosity lighting and static 3D lighting on surfaces.
- Tertius Skeletal Animation Library
- a.k.a. LibAX 3.0, TSAL is also being written as part of it, supporting much more robust animation blending, software and hardware skinning, better tangent vector support, SSE optimization, and the ability to import FBX, COLLADA, LWO/LWS, Doom 3 MD5, Unreal PSK/PSA, Source SMD, OBJ and ASE.
- Tertius Media
- Flexible, heirarchial resource format and parsing library. Currently used by TSAL for models, and the material system for indexing shader permutations.
- Lua gamecode
- allowing mods to be much more modular, including the ability to switch mods without switching basedirs, combine mods, and even implement map-specific gamecode.
-
- Updated collision engine
- supporting arbitrary convex volume collision (so vehicles can be added).
- OpenAL-based sound engine
- supporting EAX effects and surround sound.
Other Projects
- The Evil Unleashed : First-person shooter
- A collaborative project I worked on not too long ago. It's since been cancelled, so this is the latest SVN snapshot. Contains version 2.0 of LibAX, and a heavily-tweaked QFusion engine (which is, in turn, a heavily-tweaked Quake 2). Partially-finished renderer backend supports hardware-based skeletal animation using Unreal's PSK file format and bumpmapped world surfaces and models. Gamecode was rewritten as a C++ based system with hand-made RTTI and simplified map binding. Largely incomplete, but stable enough for deployment and very versatile!
To "play" a map, start the game and hit ~, then type in "map <mapname>" and hit enter.
landingzone5 and demomap2 are the only maps that currently work.
- Cola : A lightweight, general-purpose scripting system
- A scripting system I've been working on. Closer to Java than anything else, but also supports primitive types. Very lightweight, and includes a stub generator to make binding to the native API very easy. The SourceForge page will be updated when the TDP alpha is posted.
- Switchblade 4.0b1 : RoQ video encoder
- Forked off of the FFMPEG port of Switchblade 3, version 4 uses a much better codebook generator and also fixes numerous bugs with audio encoding. Sound merge can now be done through the source AVI. Several improvements to the matcher were added, further improving encode speeds. Uses an experimental VBR rate control algorithm.
FFMPEG supports RoQ encoding now, based largely on a port of Switchblade 3.
- Switchblade 3.12 : RoQ video encoder
- A near-total rewrite based on the concepts of Switchblade 2 that I did in 3 days. Comes with two AVI to RoQ video compressors that use constant bitrate encoding, one of which is command-line and one has a graphical display of encoding progress and the resulting video. Much better rate control than Switchblade 2. Version 3.1 has a portable MPEG to RoQ converter (for Linux/Unix/other stuff that ends in X users) and uses a completely different codebook generator based on NeuQuant, nearly tripling encode speeds and improving quality. Version 3.11 fixes some critical bugs, improving quality even further. Version 3.12 improves encode speed by about 50%. Comes with source code.
- Switchblade 3.12 for FFMPEG : RoQ video encoder add-on
- The Switchblade 3 encoder library, some glue code, and instructions on how to add it to FFMPEG. This will let you encode RoQ videos using FFMPEG! It does audio too! Comes with source code, because... well, it is source code.
- Switchblade 2 : RoQ video encoder/decoder/player
- The older version of Switchblade. Unlike version 3, this one comes with a player, and the library supports decoding. Comes with source code.
- q1rad : Quake 1 radiosity lighting toy
- Port of qrad to Quake, so now you can add a soft, realistic touch to your Quake maps. I can't find the source code, I guess I lost it in a hard drive crash. :(
- Qonverge : The original Quake map compilation package for use with Worldcraft 3 or Hammer
- Lets you build Quake maps with the much-more-stable and prettier Worldcraft 3 instead of 1.6. I can't redistribute Worldcraft 3, but here's Hammer. Comes with source code. Qonverge that is, not Hammer.
- ZipDistiller : A portable drag-and-drop (or command-line) zip recompressor
- Attempts various compaction methods on Zip files, the most important being recompressing with the algorithm used in 7-zip. Generally gets about a 3% savings on Zip files versus those compressed with a Zlib-based utility such as WinZip. Comes with source code.
- Scorch : A scorchmark generation toy
- Generates scorchmarks and splats and stuff. Comes with source code.
- LibAX2 : Skeletal animation library
- A skeletal animation library, and one of my favorite projects. Version 2.0 is heavily-optimized for vertex buffers and hardware skinning. It even supports mesh splitting and influence omission, so accomodating hardware limitations is just a matter of tweaking some parameters. It uses Epic's PSK/PSA formats as a base, allowing you to load files DIRECTLY exported from popular 3D apps like 3dsmax, Maya and Lightwave. Converters from Doom 3 MD5 and Cal3D are also included.
Version 3.0 is TSAL, which is part of the Tertius platform.
- EVM : A virtual machine designed for easy implementation
- VM inspired by the Q3VM (before the source code to it was released) that uses C as a base language. Extremely lightweight, requiring virtually no handling other than directly loading/executing your code and providing native functions. It even compiles to native code on x86 architecture. Comes with an SDCC port, but the LCC port produces faster code and doesn't glitch out on conditionals. Comes with source code.
- EVM-LCC : LCC modified to dump EVM assembly
- Does NOT include the lcc hub app, only includes cpp and rcc. Generally works better than the SDCC port that comes with EVM, also supports passing and returning aggregates (structs and unions). Hosted here because SourceForge's rules don't allow LCC's restrictive conditions.
- R4I : R4I image tool and RiotCompress4 compression library
- Lossless compression library based on a BWT/MTF-0/RLE-0/SM pipeline with a range coder backend. On images, it also uses a per-byte delta encode. RC4 tends to beat bzip1 (which beats bzip2) on most stuff. Uses bzip2's block sorter, so it's still really fast, and decompression is, as always, really fast. Comes with source code, of course.
I'm not developing this any more, and wouldn't recommend this for deployment, the RC backend appears to corrupt data occasionally, probably from not handling carries properly.
Number of times this page has been viewed since 5:54PM EST Nov. 2, 2004: 
Vioxx Counter