About
Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE and Horde3D.
Features
- Direct3D9, Direct3D11v1.4, OpenGL 2.0 or 3.2v1.4, OpenGL ES 2.0 or WebGLv1.4 rendering
- HLSL or GLSL shaders + caching of HLSL bytecode
- Configurable rendering pipeline. Default implementations for forward, light pre-pass and deferred rendering
- Component based scene model
- Skeletal (with hardware skinning), vertex morph and node animation
- Automatic instancing on SM3 capable hardware
- Point, spot and directional lights
- Shadow mapping for all light types; cascaded shadow maps for directional lights
- Particle rendering
- Geomipmapped terrain
- Static and skinned decals
- Auxiliary view rendering (reflections etc.)
- Geometry, material & animation LOD
- Software rasterized occlusion culling
- Post-processing
- HDR renderingv1.31
- 2D sprites and particles that integrate into the 3D scenev1.31
- Task-based multithreading
- Hierarchical performance profiler
- Scene and object load/save in binary and XML format
- Keyframe animation of object attributesv1.32
- Background loading of resourcesv1.32
- Keyboard, mouse, joystick and touch input (if available)
- Cross-platform support using SDL 2.0 (currently runs on Windows, Linux, Mac OS X, Android, iOS, Raspberry Piv1.3, and Webv1.4 with Emscripten toolchain)
- Physics using Bullet
- 2D physics using Box2Dv1.32
- Scripting using AngelScript
- Alternative script interface using Luav1.3 or LuaJITv1.31 (on Windows, Linux, Mac OS X, Android, Raspberry Pi, and iOSnew)
- Networking using kNet + possibility to make HTTP requestsv1.3
- Pathfindingv1.23 and crowd simulationv1.4 using Recast/Detour
- Image loading using stb_image + DDS / KTX / PVR compressed texture support
- 2D and “3D” audio playback, Ogg Vorbis support using stb_vorbis + WAV format support
- TrueType font rendering using FreeType, AngelCode bitmap fonts are also supported
- Unicode string support
- Inbuilt UI, localizationv1.5, and databasev1.5 subsystems
- Scene editor and UI-layout editor implemented in script with undo & redo capabilities
- Model/scene/animation/material import from formats supported by Open Asset Import Library
- Alternative model/animation import from OGRE mesh.xml and skeleton.xml files
- Supported IDEs: Visual Studio, Xcode, Eclipse, CodeBlocks, CodeLitenew, QtCreator, CLionv1.5
- Supported compiler toolchains: MSVC, GCC, Clang, MinGW, and their cross-compiling derivatives
- Supports both 32-bit and 64-bitv1.3 build
- Build as single external libraryv1.3 (can be linked against statically or dynamically)
Discussions, support and contributing
- Use the Urho3D forum for questions and discussion.
- For bug reports and contributing, please use the GitHub issue tracker and pull requests pages.
- When you contribute, you have to agree that your work will be released under the license as seen at the top of License.txt.
Limitations
Though Urho3D already contains several useful features and implements a framework for 3D games and applications, it is not yet a complete out-of-the-box game creation toolkit. Some things you can expect having to work on, or to require skills for: (contributions to the project are naturally welcome)
- C++ for performance-critical code and improving existing subsystems such as networking, physics and animation, depending on your needs
- HLSL and GLSL shaders: the provided shaders give only basic examples of what is possible
- Additional optimization for mobile devices
- Editors and additional asset conversion functionality
- Integration of additional 3rd party libraries, for example a more complete UI library, HTML rendering, or additional network protocols
Engine development, contributions and bugfixes by
- Lasse Öörni (loorni@gmail.com, AgentC at GameDev.net)
- Wei Tjong Yao
- Aster Jian
- Vivienne Anthony
- Colin Barrett
- Erik Beran
- Danny Boisvert
- Carlo Carollo
- Pete Chown
- Christian Clavet
- Sebastian Delatorre (primitivewaste)
- Josh Engebretson
- Chris Friesen
- Alex Fuller
- Mika Heinonen
- Jukka Jylänki
- Graham King
- Jason Kinzer
- Gunnar Kriik
- Ali Kämäräinen
- Pete Leigh
- Frode ‘Modanung’ Lindeijer
- Thorbjørn Lindeijer
- Xavier Maupeu
- Jonne Nauha
- Paul Noome
- David Palacios
- Alex Parlett
- Jordan Patterson
- Anton Petrov
- Vladimir Pobedinsky
- Pranjal Raihan
- Nick Royer
- Miika Santala
- Hualin Song
- James Thomas
- Joshua Tippetts
- Yusuf Umar
- Daniel Wiberg
- Steven Zhang
- AGreatFish
- BlueMagnificent
- Enhex
- Firegorilla
- Lumak
- Magic.Lixin
- Mike3D
- MonkeyFirst
- Newb I the Newbd
- OvermindDL1
- Skrylar
- TheComet93
- 1vanK
- andmar1x
- amadeus_osa
- atship
- att
- celeron55
- cosmy1
- damu
- dragonCASTjosh
- feltech
- hdunderscore
- lvshiling
- marynate
- mightyCelu
- neat3d
- nemerle
- ninjastone
- raould
- rasteron
- reattiva
- rifai
- rikorin
- r-ku
- skaiware
- ssinai1
- svifylabs
- szamq
- thebluefish
- tommy3
- yushli
Logos
Origin of the name
Urho (Finnish for “hero” or “brave fighter”) was a legendary, tyrannical king among the fish. He always hunted without mercy. Sadly, he passed away on 6th November 2009. This engine was originally called Bofh3D (hinting at the covert goal of reimplementing the game BOFH: Servers under Siege in 3D, which still stands) but was renamed to Urho3D in his honor. For more of Urho’s legend, see also the music project http://www.mikseri.net/Urho/.
