The Road So Far

Originally published at: https://grangerhub.org/blog/the-road-so-far/

Quick introduction.

My name is Dušan Jocić and I am the original developer of the OpenWolf engine.
The agreement I have with GrangerHub is to provide a game engine for development of future versions of Tremulous.

Current process

With this milestone, engine is capable to compete with many other GPL and commercial engines.

Pure engine capabilities.

  • Only 64bit versions of the operating systems are supported.
  • MySQL database support. Engine sends and writes game statistics to the master MySQL database. With that, it would be much easier to create PHP based webpage where players can see their progress and statistics.
  • Engine<->HTTP interaction. Engine has capability to interact with any web based pages.
  • Full support for the Razer Hydra motion and orientation detection game controller.
  • Auto-update system. Easiest way for everyone to update game client. With opening game, engine check if there is a new version, if there is, it will show message and the client can download and install new version.
  • Maps are compiled with custom and new Q3Map2, what is generating ".world", ".cm" and ".bullet" files now.
    • Maps are compiled with a new BSP number, and the extension is not ".bsp" anymore. it's changed to ".world".
    • Collision model support. New map file. Whole map collision is stored in a new ".cm" file.
    • Bullet physics support. Engine expects ".bullet" file where which contains the entire physics serialization.
  • PK3 files are gone with the wind and new are replaced with the PAK files which have better compression.
    • All assets and maps are compressed differently then other forks of the idTech3 engines, and with that you cannot simply copy-paste it from other games and try. New compression is much better then old ZIP.
  • AI. There is support for the AI inside the engine and the gamelogic, just it is a basic support. Don't expect much from them at this moment and now.
  • Multiple language in-game support (support for other languages).
List of engine GPU features and capabilities. Graphical features - Anamorphic blur, Bloom, Bokeh blur, Depth blur, Depth of field, Dynamic lighting, FXAA, Gaussian blur, Lens flare, SSAO (Screen space ambient occlusion), SSGI (Screen space global illumination), HDR (High-dynamic-range) with Tone mapping and auto-exposure, PBR (Physically-based rendering), Vibrancy, HDR lightmaps, Cascaded shadow maps, Texture up-sampling, GPU vertex skinning ...
  • There is a initial support for OpenCL.
    • Engine is reading ".opencl" files from the "renderWorkerProgs" folder.

 

All photos are taken on (and at time of writing this blog) with the current source code of the engine.

The source code is on the GitHub and reader of the post can have a sneak-peak there.

Shader and textures for this map (map-UTCSUD_1.3_1.1) what is presented here need to be changed and rewritten by someone who is much better then me.

Plans for the next milestone version of the game engine:

  • Oculus VR support. Already exist some code and some build of the engine with Oculus VR, just at this moment it is not published on the GitHub page.
  • New model format. There is already MD4 (name can be changed) support. It's a export plug-in for the Maya application. Assets creator can create model inside the Maya application and export it to the format what engine can read. In the current milestone version, all models what are exported from the Maya are Bullet physics friendly and are controlled via Bullet physics.
  • Multithread parallelization here and there inside the code.
  • Full Bullet physics integration inside the engine.
  • Integration with https://www.stomt.com/ for collecting feedback in-game and building a community around that feedback.
  • Sound system is buggy at this moment and it will be replaced with something new and better. Personally I wanted to do it with FMOD or with some other sound library.
  • AI. Personally I would like to see "Omni-bots" support for the Tremulous video game.
  • GLFW as a replacement for SDL 1.2 (what is currently in the source code).
  • Updated network code with support up to 96 (32 players per team) players per server and per map. (or 84 max players - 24 players per team).
Plans for the next milestone version of the game logic: I don't know what GrangerHub is doing with the game logic, but I can write only about my plans at this moment.

I wanted to introduce new and unique (because they are never presented) gameplay changes to the Tremulous.

  • Objectivity based maps
    • Both aliens and humans have several map objectivity to complete in order to win. Idea is simple.
  • Map script system.
  • Full Bullet physics integration inside the gamelogic.
  • Introducing the third team inside the game. I can elaborate this...
Map creation and map compiling.
  • Custom version of the GTKRadiant level editor and Q3Map2 compiler.
    • Q3Map2 and Radiant are updated and they are supporting Bullet physics along with other updates what are unique for the new engine.
Wishlist:
  • I would like to remove and to replace all MD3 (old assets formats) inside the game and to replace it with models what are based on the IQM or with the new MD4 (models what are created with the Maya application.)
  • There is some code for other platforms (iOS, Android, Linux, MacOS ...), but at this moment only 64bit version of the Windows is supported. Linux and Mac builds are broken at the moment.
    • Support for the iOS and Android isn't pushed at the GitHub because I would like to see Linux and MacOS be fixed first.
  • Single player campaign.
If needed I can elaborate (full explain) and document everything what I wrote here.
5 Likes

This sounds insanely great, im very curious to see this in action.

One thing i might want to request is collada or even assimp support so people can use more standard model formats instead of having to fight with converters and such.

4 Likes

Looks fantastic, quite exciting. Do you know roughly the minimum required specs?

Depends, I changed a lot since that post.

I have introduced authentication server and made GUID bulletproof.
With that system engine generate GUID on load and while connecting to the game server check it. If GUID is invalid, authentication server will not allow client to connect to the server.

Next thing what is added from the major things is community server. That server is used to post player statistics to the MySQL table and show it on game website. It is recording player death/kill ratio, play time, bans, … etc.

For minimal system requirements, GPU what is supporting OpenGL 3.x is must have, while CPU any old quad core from 10 years ago will be sufficient to run. I have tested all this on Intel Q9500, 8GB DDR2 and with Radeon 270x with all eye candy effects I have >100 FPS on the UTCSUD map.

You can use lower settings and you will have 200-300 FPS.

Also I have tested Android support and support for the Oculus Quest. Everything is working good.
For the Android port I added on top of the current renderer support for the OpenGLES 2. There is no logic in supporting multiple renderers when you can have only one with different backends only.

1 Like

I have assimp support for the renderer and for the custom q3map2 compiler, just people are freaking and acting weird if you, me or anyone else provide something what is not standard. If this is must have, I may commit code and provide binaries for Windows and Linux without any problems.

1 Like

:open_mouth: awesome about the GUID and the FPS. To be honest it sounds like the best engine in the world. Perfect for Stellar, really looking forward to using it! Good work!

1 Like