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; normal offset adjustment in addition to depth biasv1.6
- 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 and PBR renderingv1.6
- 2D sprites and particles that integrate into the 3D scenev1.31
- Task-based multithreading
- Hierarchical performance profiler
- Scene and object load/save in binary, XML and JSONv1.6 formats
- 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, macOS, iOS, tvOSnew, Android, Raspberry Piv1.3 including other generic ARM boardsv1.6, 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 all the platforms except Web platform
- Networking using kNet + possibility to make HTTP requestsv1.3
- Pathfindingv1.23 and crowd simulationv1.4 using Recast/Detour
- Inverse kinematicsnew
- Image loading using stb_image + DDS / KTX / PVR compressed texture support + WEBP image format supportnew
- 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, CodeLitev1.6, 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 Urho3D license as seen in LICENSE.
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
- Wei Tjong Yao
- Aster Jian
- Ricardo Abreu
- Eli Aloni
- Vivienne Anthony
- Christopher Augustus
- Colin Barrett
- Erik Beran
- Gauthier Billot
- Loic Blot
- Danny Boisvert
- Sergey Bosko
- Lisandro Bruzzo
- Steven Burns
- Thomas Böhm
- Carlo Carollo
- Pete Chown
- Christian Clavet
- Sebastian Delatorre (primitivewaste)
- Stanislav Demyanovich
- Rainer Deyke
- Josh Engebretson
- Nicholas Farshidmehr
- Simon Flores
- Manuel Freiberger
- Chris Friesen
- Alex Fuller
- Konstantin Guschin
- Henrik Heino
- Mika Heinonen
- Victor Holt
- Johnathan Jenkins
- Jukka Jylänki
- Graham King
- Jason Kinzer
- Cameron Kline
- Jan Korous
- Eugene Kozlov
- Gunnar Kriik
- Aliaksandr Kryvashein
- Artem Kulyk
- Rokas Kupstys
- Ali Kämäräinen
- Sergey Lapin
- Pete Leigh
- Pengfei Li
- Arnis Lielturks
- Frode ‘Modanung’ Lindeijer
- Thorbjørn Lindeijer
- Nathanial Lydick
- Pavel Matcula
- Xavier Maupeu
- Iain Merrick
- Justin Miller
- Jonne Nauha
- Huy Nguyen
- Neal Nicdao
- Paul Noome
- David Palacios
- Alex Parlett
- Jordan Patterson
- Georgii Pelageikin
- Anton Petrov
- Vladimir Pobedinsky
- Franck Poulain
- Pranjal Raihan
- Alexey Rassikhin
- Svyatoslav Razmyslov
- Mariusz Richtscheid
- Nick Royer
- Jonathan Sandusky
- Miika Santala
- Anatoly Sennov
- Matan Shukry
- Bengt Soderstrom
- Hualin Song
- James Thomas
- Joshua Tippetts
- Konstantin Tomashevich
- Yusuf Umar
- Mateus Vendramini
- Daniel Wiberg
- Kaikai Zhang
- Steven Zhang
- AGreatFish
- BlueMagnificent
- CG-SS
- Enhex
- Fastran
- Firegorilla
- Gordon-F
- Igor Segalla
- LordGolias
- Lumak
- Magic.Lixin
- Mike3D
- MonkeyFirst
- Ner’zhul
- Newb I the Newbd
- OvermindDL1
- Polynominal
- PredatorMF
- PsychoCircuitry
- Scellow
- Skrylar
- SuperWangKai
- TheComet93
- Y-way
- 1vanK
- ab4daa
- andmar1x
- amadeus_osa
- atship
- att
- att-kin9
- celeron55
- chenjie199234
- codexhound
- cosmy1
- damu
- dragonCASTjosh
- error408
- feltech
- fredakilla
- gleblebedev
- hdunderscore
- holyfight6
- hsnabn
- lhinuz
- lvshiling
- marynate
- meshonline
- mightyCelu
- MystMagus
- neat3d
- nemerle
- ninjastone
- orefkov
- pat2nav
- pflat
- proller
- r-a-sattarov
- raould
- rasteron
- reattiva
- rifai
- rikorin
- skaiware
- smortex
- ssinai1
- sssooonnnggg
- stievie
- svifylabs
- szamq
- thebluefish
- tommy3
- yushli
- zlum
- ChrisDenham
- Katekov Anton
- SirNate0
- tederis
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) but was renamed to Urho3D in his honor.
For more of Urho’s legend, see also the music project http://www.mikseri.net/Urho/.