New project template


I will continue the post started here: Urho3D from the scratch

A while ago I decided to start this repo:
The main idea is to create some sort of template for any project that I might start in the future using Urho3D engine.It should contain all the basic functionality that is needed for almost every project - configuration file reading/saving, level management (switching between scenes etc.), UI window management, control mapping to allow players to set up the controls themselves, modding - adding new scripts to the game that engine picks up automatically and many other things.

It’s been more than a week since my last update, so here are the things that I was able to do in this time:

  • Replaced Urho3D UI with Nuklear UI (
    I have ported almost all of the existing views to Nuklear. Previously console could be opened by pressing F1, now it’s replaced with the NuklearUI console which can be opened by pressing F4. It still is missing some nice features but it’s usable.

  • Added spltiscreen sample which currently supports up to 4 players. To launch it just start the game. Additional players can be added either by adding new controllers before the game or while in it, it will adjust the viewport count automatically.

  • Settings window now contains joystick and mouse settings. Everything that you are able to change in the settings window will also be saved in the Data/Config/config.cfg file.
    All the settings (including mapped control keys) will be saved in the same file

  • Fixed a lot of different bugs related to new Subsystems like WindowManager, LevelManager. It should be a lot more stable now

  • I added CircleCI as a continuous integration tool to help testing out my changes on multiple platforms (currently Windows[MinGW] and Linux[GCC]). Config file for the build system can be found here:
    Config file actually is pretty readable for someone who want to build the project themselves since it contains all of the bash commands to do that.
    CircleCI uses docker container which was built with the following repo:

@smellymumbler already gave some good ideas that I could add in the future and if you have any ideas how this can be improved even further, share them!


GameState Manager implementation for Urho3D games

Curious: Why the move to Nuklear? Is it faster? Does it have a better architecture?



Wow you’re doing great, many thanks! keep it up please :smiley:



I always thought that it looks kinda unpolished, it does it’s job good, but when you wan’t something a bit more different you end up rewriting the engine UI code just for this particular case. And of course you have to maintain it yourself when new engine version comes out. That’s why I started looking at other solutions. I looked at couple GUI libraries and ended up with Nuklear just because it was very easy to set up, thanks to rokups repo:

Nuklear is not faster than Urho’s built in UI system, but it is much more powerful since it contains a lot of components already. Main difference in the architecture is that Urho uses event system to deal with UI interaction, Nuklear is not. At first I thought that it’s a bad thing but in the end I ended up writing less code and it was more readable.

1 Like



Had second thought in the past months regarding the Nuklear implementation. Stumbled upon a problem with Nuklear and CI which kinda broke the MinGW build process. I was feeling lazy and couldn’t figure out how to fix it and decided to move back to Urho3D UI system.
Besides moving back to Urho3D UI I’ve added a lot of small improvements like -

  • in-game settings menu,
  • control mapping updates,
  • config file saving structure,
  • multiline achievement texts,
  • additional video settings added.
  • LUA script mods are now supported

All the things that are planned for future are available here:

Let me know if there is something else that you’d like to see in this repo.



Whoa! Huge wave of amazing updates. Glad to know you opted for Urho’s UI instead! It makes for a perfect project, specially if in the future people consider adding this to the main repo.

Thanks a lot for your effort, dude. This is pure awesome.



Not sure if this will ever be merged in the main repo since the sample is quite large but the good thing about this is that it gives me ideas how to further improve the engine. Also I’m happy if others might find this useful.

I myself will probably take this sample app for a spin for the upcomming game jam - GGJ.

1 Like


It’s been a while since the last update, here’s what I’ve got so far:

What I’m planning to do next:

  • Mod library application - web app with the list of all available mods, don’t want to bloat this repository with too many mods + I just wanted to do that and there is no one who can forbid me to do that
  • Compile this sample for the Android devices
  • Seperate control mapping for each controller
  • Maybe add networking sample? This will require additional stuff for the engine itself - multiple control sending to server for 1 client connection.
  • Does anyone know how I could achieve the brightness, gamma changing for the video? Do I need to create shaders to achieve that? I wan’t to add these options in the settings window.


There is gamma and color correction post-processing render paths included with the engine in bin/Data/PostProcess/.



Holy crap that’s a lot of stuff. This is one of the most exciting community projects I’ve ever seen. You should definitely setup a patreon so we can buy you a few beers.



Oh, right! Totally forgot about that.

1 Like


Thanks! I have big plans for it in the future but at the moment I’m just doing it because it’s fun and interesting.



Small update:

  • Spent few days creating automated builds using TravisCI and CircleCI

  • Created project site to test out the build mechanisms and artifact upload - . The archives which are uploaded there contain both - Linux and Windows executables with all the assets. Grab the latest build and test it out. You can easily map these builds with the Github to follow up with the progress.

  • added Gamma settings in the video tab - probably will add the PR to the master branch with the changes to allow dynamic gamma changing at runtime.



Another update:

  • Got the Android builds fully working with the sample, check the there are windows, linux and Android binaries available.
    It still have to do some tweaking with the CI how the Android app actually gets built, for now it’s a bit chaotic but at least the app ir runnable on the Android devices.
    Also I haven’t yet finished the control management for Android devices, but it’s one of the next things in my to-do list. I’m planning to use this:
    Hope that it will result in the PR in the end since the default engine UI controls are horrible.

  • I implemented so called “Loading Steps” which allows to hook up your own methods when the loading screen appears, it will move forward only if all of the loading steps have finished. It uses simple ACK mechanism to check for “inactive” loading steps and move forward with the next step if no ACK message was received for a certain amount of time. For the full example see the mod:



Pardon my ignorance, but what would be the point of those steps? So I can multithread loading of assets? Load levels in one thread, textures in another, sounds in another?



Pretty much everything you want. It’s main idea is to indicate in the GUI what exactly is happening and to indicate how much there is left to load to start the actual game.



I love your idea, thank you for sharing your work. Adding my thoughts on the UI, you can ignore my comments if you disagree.

The integrated UI from Urho3D seems flexible enough to do everything a game needs, it just needs some work on top. I just made this “Options subsystem” using Urho3D UI:

Controls are navigatable (using arrow keys) and can be customized using the Urho3D editor. There are
bunch of controls on top of the standard UI controls like UIBoolOption, UIMultiOption, UISliderOption, UIEditOption. With some trivial work, more controls and dialogs could be added.
I can share the code when I’m done with it.



Looks really good. I would like to try it out and maybe implement it in this sample.



This is my WIP version without code from my project. It only needs the 2 cpp files added to the project and registering object factories at engine start:


I’m still working on it, trying to make controls as simple as possible and still usable on any device - PC/Tablet/Phone



I’m thinking it would be cool (and even more N00B-friendly) if this were to be implemented as wizards like: