• Stars
    star
    499
  • Rank 88,341 (Top 2 %)
  • Language
    Rust
  • License
    BSD 3-Clause "New...
  • Created over 11 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Quake 3 like game with voxelized, destructible maps; written in Rust

Q³ Build Status

(NOTE: q3 should build on Rust f4bedde) Screenshot

What is Q³?

Q³ is a project using Mozilla's Rust language and OpenGL to create a Quake 3 like game that takes Quake 3 and QuakeLive maps, voxelizes them, and allows groups of players to blow the shit out of everything in a fast-paced Quake-esque first person shooter with 100% destructible environments.

What's the current state of Q³?

Q³ is not a game yet! It's still a side project that I'm working on in my spare time.

  • Multithreaded OpenGL rendering
  • Half-baked BSP renderer (Quake 3 and Quake Live)
    • Quake Live map rendering is... buggy
  • Skeletal animation
    • Using Quake/Doom's MD5 format
  • TTF renderer
  • Arbitrary mesh voxelizer (for BSP maps)
    • Using Separating Axis Theorem and instance rendering
  • Basic UI with drop-down console that provides in-game tweaking/debugging
  • Tested on Linux and Mac OS X
  • Documentation on a wiki

How do I get Q³ running on my system?

I run on the (nearly) latest Rust master; I generally pull every few days. Q³ currently has glfw3, glfw-rs, rust-opengles, rust-stb-image, and ncurses-rs, as submodules. To configure, simply run (in source and out of source builds are acceptable):

./configure

From there, you should be able to compile and run a release build with:

make && ./bin/client

The server can be executed via:

./bin/server

You may also individually build server/client or specify a debug build:

make server && make client # Make either separately
make MODE=debug # Debug symbols and faster compilation

NOTE: Ensure that you have Freetype2 installed.
NOTE: I don't have access to a Windows machine at the moment, so I'm not sure yet what will go into building this under something like MinGW. This should be coming with r0.3, as per #26.