[size=150]idTech2 running on Urho3D[/size]
[video]https://www.youtube.com/watch?v=_eSRhcfeb_U[/video]
[size=120]What is this and why?[/size]
A fun weekend project to see how well using Urho3D as a rendering/platform layer for idTech2 would work. This was a test and and a proof of concept.
I’ve wanted to make a game using idTech2 and learn GTKRadiant for a long time. This prototype pushes that desire forward another notch.
I also worked a bunch on some Urho3D tech last winter including a Unity3D exporter (VIDEO: youtube.com/watch?v=m3ehQwfbjGg). I have been working more on the Unity3D exporter and I think this will be a very good content path for Urho3D projects.
[size=120]Goals[/size]
A feature complete idTech2 renderer and platform layer built using Urho3D which supports both demo playback and actually playing Quake2.
It needed support for transparency, animated lightmaps and world textures (lightstyles!), dynamic lights, alias morph models, water effetcts, particles, and moving/rotating brush models. The parts that I haven’t gotten to being “beams” and some view blends. However, dynamic lights casting shadows and Urho’s refracting water all working kind of make up for these
I wanted to run on both OpenGL and Direct3D. I developed using QtCreator on OSX and spent maybe 30 minutes at the end getting the Windows/D3D build working, again with QtCreator
The platform layer isn’t “feature complete”, though it would be easy to make it so. The biggest missing thing is that I didn’t hook up WAV loading/playback. However, I did get keyboard/mouse input working and the game is fully playable.
[size=120]Anti-Goals[/size]
I didn’t want to add/change anything in the stock Urho3D rendering code. I also wanted to make sure idTech2 stayed intact without any core changes. idTech2 has a nice rendering “plugin” system, so all the Urho3D stuff is completely opaque to it.
[size=120]Why idTech2?[/size]
idTech2 solves a lot of really hard problems (which modern engines continue to struggle with) in a very elegant and small codebase.
It has really smooth networked physics, excellent PVS and PHS support (which is still really important especially when doing per pixel lighting!), and is a game engine with working content pipeline and processing tools (GTKRadiant is still in use by major studios!). This is an interesting review on idTech2: fabiensanglard.net/quake2
[size=120]Why Urho3D?[/size]
Urho3D is a fantastic engine, I really love working with it. I think Urho is a great fit for indie developers due to its (extremely) clean design and relatively small footprint. It also has excellent cross platform support.
[size=120]What does the code look like?[/size]
It is very much a prototype ATM: gist.github.com/JoshEngebretson … f793fbe422
However, it is a quite small amount of code and would be easy to refactor it for OOP and for better Urho3D styling. I think this will be a good project, for next weekend!
- Josh