Archive 17/01/2023.

Random projects shots

dakilla

Hi

A topic to quickly share screenshots from your projects wip or works using urho3d.
I can’t wait to see cool graphics using this great engine :wink:

magic.lixin
dragonCASTjosh

I dont think i will beat having life is strange in Urho, but i do have some work to show. I have been working on improving Urhos renderer as many of you know, recently i started work on Sub-Surface Scattering that can be use on many many materials including skin. Here are some images of my work.


ghidra



dakilla

@magic.lixin: really cool
@dragonCASTjosh: you make an awesome work
@ghidra: strange, what’s that ?

A particle editor with emitter hierarchy I’m workin on:

Lumak

@dakilla, I like the idea. How’s your progress?

dakilla

Most parts are done… It remains to finish the editor and tune all :wink:

godan

We are hard at work on a new IOgram release. A few of the recent successes:

Runs great on linux! And you can target Linux in the build system…

Same with OSX, although the Retina thing has proved a bit of a challenge. Found a fix, though.

Sweet new LineRenderer:

cosmy

Working on a Debug UI

cosmy

@godan Did you use the standard Urho3D UI?

hdunderscore

Some shader work I have recently started working on again.

godan

@cosmy yep, urho ui all the way.

JTippetts1

After a months-long hiatus, I’ve started working again on my game, Goblinson Crusoe which is a turn-based RPG taking place on a hex grid. You play the role of a young goblin wizard apprentice working to pass your trials and become a full-fledged goblin wizard. Some shots:



hdunderscore

That’s looking pretty good.

Looks like the lights are burning the textures though, I’d suggest looking at loading textures with sRGB=true and then maybe using gamma correction post process.

hdunderscore

Added a metallic effect with screen-space IBL.

Liichi

Liichi

hdunderscore

hdunderscore

Experimenting with vector field terrains, I wrote an export script in blender to export sculpted terrains into vector field texture, and made some hacks to urho terrain to load them (incomplete progress):


TheTophatDemon

I’m working on an FPS where the guns fire automatically and your goal is to not shoot people. I’m kind of aiming for Quake II graphics so I can finish the game eventually, but I have this neat thing going on with the diffuse shader that makes it look kinda cartoony.

hdunderscore

Reduced the restrictions on the blender exporter, now designing terrains is much more practical.

hdunderscore

I was finding blender a little on the slow side to work with on larger resolutions, so I started experimenting with my own in-urho terrain editor that mimics blenders modifier stack, with optimisations directed at working with terrains. At first I implemented it in angelscript, now I’ve moved the main parts to C++.

So far I have a basic fractal terrain generator, a ‘hook’ displace (ala blenders hook to vertex), a road excavator, smoothing and also toyed with using physics to erode terrain.

godan

Prototype of Urho’s Navigation mesh and Crowd manager system in IOGRAM:

GoldenThumbs

Dang, I feel less original now…

GoldenThumbs

I’m working on a survival fps with old-school shooter elements. Very early in development though. I say I’m not original because I’m going for an artsyle similar to your other thing.Arcadius_EarlyDevSceenshot0

GoldenThumbs

Something more up-to-date on the project.Arcadius_EarlyDevSceenshot3

rku
TrevorCash

Super awesome to see this in action!

rptr

Screenshot%20at%202018-04-20%2023-09-16

Sinoid

@rku, I’ve lightened my attitude a bit and the dump @ https://github.com/JSandusky/Blocks is MIT’d, lift whatever you want from it if there’s anything useful to you there … though it’s like 50% robot generated so yeah … whatever you can get from it great.

I’ll update the dump in a couple of days, after I’ve trimmed out the stuff I care about and that won’t work in anyone’s repos but my own.

I’ve abandoned the approach I took there and now regard docking as a bullshit excuse to let poor UI slide under the guise of customization. Current reincarnation is like Akeytsu mashed with zBrush … though I still stick with WPF for the stuff I sell.

Modanung

Progress video of A-Mazing Urho, the LucKey Productions entry for the Open Jam 2018.

EDIT: And another video…

Sinoid

NoesisGUI implementation (drawn overtop of ImGui here).

image

Has not been fun, quite painful actually with interfaces for this and interfaces for that and whole lot of “nope, you really have no idea WTF anything is … so query and pray it’s there”.

Still a ton to do with it before it’s plausibly usable - even then, I don’t see how it’s mappable to any generic use with MVVM/extension registration and the like plus the extra steps in making Blend and the runtime coherent.

Elendil

Hi Sinoid, do you have your project on github? I tried integrate Noesis GUI too in to Urho, but I am not successful. How you render gui? You use NoesisRenderDevice or you create cusom?

Sinoid

@Elendil

I’ve only implemented for DX11, so I don’t know what I’ll face should I try for OpenGL (which I never ever will).

The biggest thing was GPU-state. Noesis’ prewritten renderers do not save or restore state. To do that I lifted the state save/restore from the DearImGui implementations. I call a SaveGPUState before Noesis does anything and I call RestoreGPUState function after Noesis does offscreen rendering and primary rendering.

That’s in a loop because right now I support multiple views, basically it’s:

Save GPU State
foreach view
    view -> UpdateSize
    if view needs offscreen render?
        view -> Render Offscreen
        Restore GPU State
    view -> Render
    Restore GPU State
end foreach

Noesis Renderer: I used the example D3D11RenderDevice from the NoesisApp sources. I just changed it to not have any ID3D11Device/ID3D11DeviceContext ownership - it receives them from Urho3D - all functions for creating/disposing those is removed.

Noesis Interfaces: pretty crude, I construct them with an Urho3D context so they can access the ResourceCache. Textures always go through the wrapper API as in the Noesis D3D11 example (wrap the native handle).

Urho3D::Graphics: I had to modify Graphics::ResetRenderTargets to force a rebind to defaults. The current implementation is soft, I forced impl_->renderTargetsDirty_ = true; inside of the function to make it hard.

Input Handling: still a work in progress, just mouse at the moment - more concerned with data/view management right now.

View management: really crude, XAMLGui is a Subsystem (like ResourceCache) that is used to construct XAMLView instances. Those views have a few helpers for storyboards, setting the root datacontext, etc. Otherwise it’s all still early and raw.

I’m doubtful that it’s really possible to do outside of an extremely raw setting, it’s GUI though - there is no such thing as generic GUI. Angelscript bindings do look to be hell though.

Building: Noesis has a completely psychotic SDK folder layout, I use Premake so my build is not relevant to anyone using CMake, however. The stuff I use from the NoesisApp/example sources is straight copied over rather than referenced because the paths are stupid nuts (D3D11RenderDevice).

rku

Progress. C# fields for subclasses of Serializable are automatically exposed to editor and included in serialization.

Dave82

Cool rain and dynamic light effects :smiley: No special shaders just Diffuse texures and the character uses a DiffSpecular with a slight specular power.
EDIT : Except the Color correction / desaturation fullscreen shader i’m using

Sinoid

@Dave82 nice as usual


Starting to put that CivetWeb dependency to work for something other than websockets, embedded info server:

Resource_Cache_Content_-_Mozilla_Firefox_2018-11-28_21-25-37

Not planning to do anything crazy with it, really just about being able to serve Image/text-blobs up for diagnostics on demand with some basic querying, attribute editing at the absolute maximum.

I’m absolutely horrid at web development anyways and CivetWeb runs connections in threads which locks a lot off (angelscript debugging only works because it freezes things), so I can’t go bonkers.

dakilla

rku Nice, your editor looks very good. can it be launched as an in-game editor ? do you have a base version that works with the original urho3D ? I’d like to integrate it independtly of your engine fork.

GodMan

screenshot

Don

I like the look of that a lot! Where’s it heading?

GodMan

Now that I have more free time. I’m going to try and make a better environment.

rku

can it be launched as an in-game editor ?

Editor is a wrapper around the game, not the other way around. You can launch your game inside editor much like in unity. Of course it is way easier to crash editor from your own code because c++ and because engine was not designed with this functionality in mind. Not a big deal though, because editor starts fairly fast and it is no different than debugging your game without editor and crashing it.

do you have a base version that works with the original urho3D ? I’d like to integrate it independently of your engine fork.

There is an older standalone version that i ported from my fork. https://github.com/***/Urho3D-Toolbox
It was not updated for a long time and i do not intend to continue on it. This is both because dealing with build system of upstream Urho3D is annoying and because at times changes are needed to the engine to make certain things work (C# especially). Also i have zero desire to deal with manual script integration of upstream Urho3D, especially angelscript.

Sinoid

Worked a bit more on the embedded server thing today:

image

Scenes/Nodes/Components are inspectable (not all fields editable, not sure if they all should be),

image

Lambda commands can be registered (run in E_BEGINFRAME) in addition the existing text/image publishing.


Only a few fingers of things left to go and I’ll toss it onto github (just “wow, I really botched that” stuff).

GodMan

demo

Demo with halo 2 masterchief. Has controls for running, jumping, moving left,right, and backwards.

GodMan

Untitled-1

Physics Fun

GoldenThumbs

Making a halo fan game? Or is this all just tests?

GodMan

Yeah fan game lol. I was always a big fan of halo ce, and halo 2. I use to mod them on halo ce, so I know the models, and animations very well. Also 3d max like the back of my hand.

GoldenThumbs

Cool, let me know if you need anything graphics related (art, shaders, etc.). I’ve been practicing and giving out my work when I feel it’s ready.

GodMan

Untitled-1

Added proper color changing to the default shaders that come with urho3d. This allows you to set any color for a character based off a texture lookup that defines the areas of a texture that you want to be affected by color change.

GodMan

Custom passes for skies.

Untitled-1

GoldenThumbs

Very cool! Aside from colors being a bit washed out this is looking really nice.

GodMan

I think some of that is due to the hdr, and eye adaptation effect. Some of the background items are lacking there detail textures. I have not made a shader for this yet.

GodMan

Added new blending modes to urho3d. I used them to blend the stars in the sky model. I also tweaked the AutoExposure, and HDR. They still look the same to me I could be wrong.

Untitled-1

GodMan

Added detail textures for the bland look on some things. This helped the tone mapping grey-out affect on some things in the scene.

Untitled-1

smellymumbler

How did you do detail textures? Really cool!

GodMan

I just extended the shader that comes with Urho3d. Then you call the custom pixel shader define for that particular material that is using the detail texture.

GodMan

@smellymumbler Do you want the code? It’s for HLSL though. It can easily be applied to GLSL.

smellymumbler

That would be great! Did you follow any tutorial or article?

GodMan

No. I have a lot of experience with shaders from my time working with Irrlicht Engine.

GodMan

Here is a demo of my crappy rocket launcher.
Rocket Launcher Demo

GodMan

Added multiplayer emblems:
multiplayer_emblems

@smellymumbler

Here is the code for the LitSolid.hlsl shader. Make sure you are using forward rendering otherwise this will not work.

// Get material diffuse albedo
    #ifdef DIFFMAP
        float4 diffInput = Sample2D(DiffMap, iTexCoord.xy);
        #ifdef ALPHAMASK
            if (diffInput.a < 0.5)
                discard;
        #endif
		float4 diffColor = cMatDiffColor * diffInput;
				#ifdef CHANGECOLOR		
                               // Removed this code becuase you don't need this part.
				#endif
				#ifdef DETAILNOCOLORCHANGE		
					float4 detail = Sample2D(detailMap, iTexCoord.xy * 32.0f);
					diffColor = cMatDiffColor * Multiply(diffInput , detail);	

				#endif
    #else
        float4 diffColor = cMatDiffColor;
    #endif

Put this in your material file:
<shader psdefines= "DetailNoColorChange" />

zedraken

GodMan

@zedraken

Are you using HDR?

zedraken

No, I do not use HDR. In fact, I have never used it and may be I should look out at what it is exactly and how can I set it up.
If you have already used HDR in images, I can be interested to have your feedback.
Thanks!

GodMan

I’ve used HDR in Urho3d, but not hdr images such as an hdr skybox.

Modanung

Know HDRI Haven if you do.

GoldenThumbs

Love that site. It’s great

glebedev
glebedev

GodMan

Fixed HDR greyout effect. Also added a cheap shield effect. It’s hard to see it animate in a picture though.
Untitled-1

Dave82

Just finished my navmesh based pathfinding system. I currently gave up on Recast because it handles things very strangely.Also i ran into problems every time i rebuild recast navmesh the detour crowd becomes invalid (the internal crowd_ pointer is null for some reason.) So i picked up my clunky navigation , polished it and this is what i have so far.

The purple line is the path , the red lines are the bounding edges.Works so far , i tried it with very complex zig-zaggy mesh and always worked flawlessly. Some diferences between Recast an mine :

  • Works on XZ plane. No slopes and other unrealistic crap. The pathfinding is done in 3d but the final Y is decided by the level geometry not the navmesh.
  • Automatically picks the closest layer to the character feet. With Recast i had some issues if the enemy is slightly above the navmesh it just doesn’t work anymore (probably i miss some setting)
  • I use the real mesh when i build the nav mesh and keep the distance from walls corners by pushing the path points towards normals using the NPC/ Character radius. As i see Recast does this totally the opposite. Builds the navmesh by pushing the navmesh points using the radius. This could led to a problem if the mesh has narrow paths the navmesh is not built (no enough space). Both solutions lead to the same pitfall except in my version i have full controll what happens if the NPC is off navmesh.

So all in all if i can’t get the steering working properly i will most likely return to Recast but i just want to try something new. :smiley:

QBkGames

We should also consider updating the Recast/Detour library to the latest (stable) build which could have useful bug fixes and improvements. I (might be wrong but I) suspect it hasn’t been updated in a while. Might be more efficient than reinventing the wheel.
It’s cool though that you have know-how to write your own pathfinding system :+1:.

GodMan

So your saying I should use your project lol.

Dave82

Haha . The “project” (if we can even call it that) , is far from usable. The pathfinding works nicely but still struggling with realistic path smoothing and collision avoidance…

GodMan

Ah I see. Smoke and Mirrors.

GodMan

Untitled-1
Play as the bogeyman from SilentHill.

Modanung

Working on Masterchief vs. Bogeyman? :wink:

GodMan

LOL. No just a bunch of character demos.

GoldenThumbs

Working on a comic book shader. Adds some nice crosshatching. Everything is per-pixel so you can use this with normal maps and specular highlights.Monster_Inky_3

Leith

Pretty cool - “Sin City” style. It’s quite a unique look with the cross-hatching. Very lo-fi comicbook. I like it :slight_smile:

Pencheff

Slightly different usage of the engine - a video player :slight_smile:
video-player

GoldenThumbs

Now I have an outline post processing shader. Kinda looks like Borderlands now.PNG

glebedev

Something to consider :wink:

Dave82

@Pencheff
That looks awesome. May i ask which library did you use ? Urho really needs a video player…

Pencheff

Its my own library for playing videos, sadly I cannot share it since its my company proprietary code. Its using FFmpeg (LGPL version) with hardware decoders where available. Its actually not that big of a deal to make one, but there are plenty of pitfalls I was stuck on while developing it, especially the Linux and Android versions. FFmpeg license would not fit with Urho3D, however.

There’s this tho: Video playback example.

glebedev

On android you can play a video into texture via media player.

green-zone

Very good shader
Exist a chance to see shader code?

GoldenThumbs

Sure, when I feel like they are good enough. Which one would you like to see? The outlines post effect or the material shader for the crosshatching?

green-zone

Totality, but preferably crosshatching part
It look like ink graphics.

smellymumbler

The outline effect is really good. Can you apply AA only to it?

GoldenThumbs

Worth a shot.If you want to test the renderpath out you can get it here: https://github.com/GoldenThumbs/Urho3D-Toon-Shaders

green-zone

Many thanks
I need to complete current work to experiment with it.
But fantasy already began to play
Thank you once again.

green-zone

Yes, it work for my.
I need time to experiment with it.

GoldenThumbs

Bit of an update to this: Switching from a forward renderpath to a deferred renderpath. Makes my life easier and it also gives better results.

green-zone

I can not confirm. In Deferred mode I get such result:

There are not shadows
When I comment addition of Outline.xml shadows exist, but no crosshatching.

green-zone

Forward without Outline

Forward with Outline

Deferred without Outline

Deferred with Outline

With small (default character demo)
Camera SetFarClip distance (for Forward and Deferred):

GoldenThumbs

Some of these issues are because I was calculating normals from the depth map in the outline shader. Using deferred (well, prepass now because I was having a few small issues with deferred. Could probably figure it out.) I have access to an ACTUAL normal buffer. That makes calculating outlines way easier and less buggy.

GoldenThumbs

Also: Did you convert the outlines to a post effect? Outline.xml is a modified forward renderpath.

GoldenThumbs

And the outline material wouldn’t work with deferred because (as far as I’m aware) deferred calculates lighting inside the renderpath instead of inside the material. I made that material for forward since (at the time) I didn’t want crosshatching on everything. since I am now using a prepass renderpath (which still calculates lighting in the renderpath) I now am also doing the crosshatching in the renderpath.

green-zone

Added to renderpath that by default (Forward, Deferred) like posteffect.
Now I replaced default (Forward, Deferred) renderpath with Outline.
He looks as “Forward with Outline” (see screen above)

Pencheff

Another CEF UI integration:
ui-cef
I can share most part this implementation later, it has an UIWebView component and WebView component for attaching to nodes with model/sprite/billboard/particle in 3D. It also support transparent painting, calling javascript methods and sending Urho3D events from browser javascript.

GoldenThumbs

https://www.youtube.com/watch?v=18J47bWRgXo&feature=youtu.be Custom PBR stuff.

Leith

Nice work :slight_smile:
I often wondered what PBR would look like in combination with Spherical Harmonic Lighting, in a game based on cell-and-portal-network technology: your video goes part of the way to answering that question, thanks mostly to the high specularity.

GodMan

Looks great. Have you got good results from using urhos hdr?

lezak

PhysX stress test:

  • 10 000 cubes;
  • 50 mushrooms (triangle mesh colliders);
  • 5000 spawned objects (random pick between teapot, jack and mutant, all with convex mesh colliders).

For comparision, bullet sample with same amount of cubes run at 4-6 fps, so I didn’t even bother to spawn any additional objects.
WangKai

So what’s wrong with Bullet’s implemetation?

S.L.C

Should we ask about the used hardware? And whether a GPU was used for acceleration in PhysX?

But I wouldn’t be surprised about Bullet tbh. It stopped being a game first physics engine for quite some time. As an open source and free project it was a valuable project. But now that PhysX has gone the opensource/free route. It became a bit hard to take Bullet as a serious alternative.

There’s code in Bullet that hasn’t been maintained or refactored in years. If you look closely at it you realize it’s a bunch of code dumped together in the hopes it would work.

Also, will you release the code for the PhysX component you made? Or it’ll be just something you experimented with.

QBkGames

PhysX implementation looks impressive, any chance of sharing some code with the community?

GodMan

Screenshot_Sat_Apr_13_11_54_54_2019

My crappy attempt to get static lighting, and dynamic shadows to work together.

Leith

shot Experimenting with kinematic versus dynamic character controllers (Bullet)

GoldenThumbs

Looks good. Also, here’s some more screenshots of the PBR stuff.PBR_ForumExample_0 Rim Lighting PBR_ForumExample_1 Shiny plastic, stone, and generic gold-ish metal PBR_ForumExample_2 PBR metalness & roughness chart PBR_ForumExample_3 Lil’ test asset I got off Sketchfab (same one as in the video)

GodMan

Looks great. What are your HDR settings? I fill like I always gets HDR wrong.

lezak

i7-2600 with gtx 1050Ti. GPU acceleration was used, but after posting video I’ve noticed that I made mistake in setup and didn’t take full advantege of it in collision detection.
@QBkGames my plan is to share it in form of library (kind of ‘addond’), but right now I cannot tell when it will be ready (or at least in a state that will allow me to share it).

Modanung

@lezak Sharing has a potentially incredible progress:effort ratio at any stage. :alembic:

TheComet

It’s asteroids, but 3D

extobias

Particles with normal mapping and light correction, still needs some art’s work but I like so far :grinning:

Modanung

Smoking mushrooms, eh?

I recently did something similar replacing the Razors in heXon with animated billboards that have a diffuse, normal and emissive texture:

Textures



extobias

That looks very nice!

I did not realize haha I always use that scene for the tests

How did you correct the rotation of the particle? so that the lighting looks good.
This was the result without passing the rotation to the shader

Modanung

I was unaware of that problem because the razor sprites do not rotate, but the lighting may be a bit off. How did you fix it?
Also, did you consider adding a depth texture? And maybe some colorful lights in the test scene.

extobias

I pass the rotation instead of the color in the vertex, and then in shader
apply the rotation to the vector of the bitangent. I still need a better way to pass the rotation.

I had not considered a depth texture, but it may look good. I plan to improve the scene with lights and maybe add more cloud shapes.

This is inspired by this tweet
https://twitter.com/lunasorcery/status/1057444245320003585

Modanung

I think this technique could make some awesome fires using a pre-rendered smoke/fire simulation. Though I guess it would be tricky to extract a normal map from a point cloud, AwesomeBump may do.

Leith

Computing the normal map from the distribution map of a point cloud could help to accelerate that concept - in other words, if we have a parametric definition of a surface, we can easily extract local information - spherical harmonic lighting is a good example of baking 3d detail into a queriable equation with minimum number of parameters

TheComet

Got networked multiplayer working. We don’t have client side prediction yet, but the components were written with this in mind

Leith

Asteroids? lol! I grew up in an arcade, where the owner held the current world record for asteroids. Later I became a family friend. Asteroids? Lol. It’s not that I don’t like the twist on the concept, but it’s rather old news in terms of gameplay? Still, I do like the execution! Best of luck, it could catch on.

TheComet

Thanks!

I think the core mechanics of asteroids are just as valid today as they were in 1979. It’s just a matter of building on those mechanics to make it a new experience.

The addition of walls will add more focus on maneuverability and I plan on having a skill tree for weapons/health/movement upgrades. I think there’s a lot of potential here.

Modanung

@TheComet Do you know Geometry Wars 3? It may inspire and help you be original.

…maybe cross-breed it with Marble Marcher? :eyes:

See also:

Modanung

Not a screenshot, but graphics none the less: I think I have the gangs for OG Tatt down including emblems and colours. Pick your favourites, if you like. Poll results will guide development priority.

  • Tourists
  • X-Terminators
  • Chaos Squad
  • Lagoonies
  • Police Force Now!
  • Untied Morons o’ Murky
  • Obscurinati
  • Confusians
  • Hippies
  • Luciferians
  • SubGenii
  • Bio-Front
  • Association of Autonomous Astronauts
  • Zebratools Inc.
  • Panterae Byssi

0 voters

LagoonyCar LuciferianCar UMoMBike

lezak

After posting PhysX test video I got some other stuff to do, so it’s been a while, but finally in this week or at the beginning of next one, I’ll be able to share this with community.
Just some really small editor & joints preview:

SirNate0

Minecraft-style voxels with slopes (run in a re-purposed copy of one of the samples). Eventually this will be an editor used to make the landscape for my game.

TheComet
codexhound



Teknologicus

Playing with cubic voxel procedural terrain, simplex noise and height fields.



Teknologicus

3D ridged terrain subtracted from a very simple heightfield terrain.
Untitled

Sinoid

Is it an optical illusion that your cube strata have different angles or are you using a distortion pass after the initial surface? I’m calling bullshit on you screenshots.

Teknologicus

When a heightfield generator runs, its output goes into 3D volumes of voxel data and is therefore is no longer technically heightfield data but 3D voxel terrain. The 3D noise pass (3D terrain) cuts into the heightfield data in the 3D voxel volumes data which was generated in the first pass, so the 3D noise makes what you see no longer a heightfield. To put it another way: Heightfield is just a generator and the voxel volume code handles everything as 3D volumes regardless of how it was generated.

P.S. The first set of three screenshots represent purely heightfield generated data passes, whereas the forth screenshot posted later is both heightfield generated and 3D noise (subtractive 3D terrain) generated.

JTippetts

I think it might just be an optical illusion. I noticed similar weirdness back when I was playing with cube worlds and noise a few years ago. It sometimes looks like strata are tilted or something. I can really see it in the last screenshot there, but I think it’s just illusion from a particular feature being sort of elongated toward the viewer.

Leith

Experiments with navmesh support

Bananaft


extobias

This is awesome, there is some playable demo or something like that?

Bananaft

A very old one, sorry.

Modanung

Still deserves some reward. :trophy:

:penguin: …and a Linux version

Earlier versions could be run it on Linux by simply using a different Urho3DPlayer.

codexhound

Fractals are amazing. Really cool stuff.

Bananaft

Have you tried it? It should not work.There are custom components and minor c++ changes.

Wine should work fine though.

Modanung

Ah, too bad. It worked earlier, so then I guess this is the latest Linux version?
Archive

Bananaft

I never did Linux version. This one happens to work because there is no physics, but lighting is a bit broken compared to exe you can get on itch.

Modanung

Indeed, I replaced the binary (as you instructed a while ago) and added a shell script that runs game.as instead of game2.as because that is what works with an earlier version I still had somewhere. :slight_smile:
…making it “the latest Linux version”, in my view.

Teknologicus

It can now save and load node graphs and respective node data to/from YAML files. I’m using yaml-cpp and (with dependencies cleaned up) filedialog from grumpycoders/pcsx-redux (github).


Leith

I love ALL the editor ideas. I will pick and choose, but they all have a place.

Leith


We have similar ideas

restless

Doing a tree generator (75000verts on this one, around 20000tris). Just for fun.Tree looks a bit jerky (need to “spread” the branches properly, not just random shuffle). A lot of stuff to improve, and yet I’m already thinking on how to generate lower level of detail and impostors for it to be useful in a game…

I wish the UI was easier to layout programmatically, like all modern UI libraries do (Qt and gtk from my own experience).

Modanung

Maybe this could be a part of ManaWarg?
I’d love to have planting trees as one of the first options for placing objects. :smile:

Then I guess it would be nice to be able to (de)serialize tree types to and from XML. These could also be used to generate previews of the trees in the resource browser.

restless

It could be fun, but at the moment it’s not so greatly usable (it’s neither realistic, nor game ready in terms of poly count/performance). Also, I use my own (made it a long ago) configuration framework, so there would be quite some work if you want to get it in your thing.

Anyway, here’s the code (I hope I didn’t miss to push everything needed to the repo). https://gitlab.com/fiasco/urhoworlds

EDIT: after you launch the demo, you can see the tree settings are kinda bad, here are some better ones: https://www45.zippyshare.com/v/6G2h33b1/file.html

Also, looks like I forgot to push grass textures to git repo…

Modanung

You could also turn what you have into a separate tree editor that uses Qt by combining it with QUrho.
It could then be implemented as a dock widget in ManaWarg with little effort.

Teknologicus

Added support for voxel blocks with transparencies in side textures. There is only a minor performance hit on world generation times thanks to some optimization in how I did this. :slight_smile: This will be useful for water, tree leaves and numerous other block types. I tested it with temporary “hanging” water blocks where stone should be.
1
2

Teknologicus

P.S. Transparent sides includes top and bottom of blocks. Small performance hit is in surface generation times. I did find and corrected a prior inefficiency in surface generation, so over all for what it does, it’s faster.

Teknologicus

Implemented strata! Block types are now defined in YAML file so I can easily add more block types without recompiling.
Untitled

Modanung

6 posts were merged into an existing topic: Urho3D cubic voxel surfaces

GodMan

My crappy attempt to get lightmaps, and dynamic shadows working. Next I am going to port my directional ligthmap shader I made years ago for Irrlicht engine.
The map is using all static lighting. The characters receive one directional light. The characters simulate casting shadows on static mesh.

GoldenThumbs

(Edit: realized people could be confused by this. I was replying to an old post of mine. It was the one about crosshatching.)

So, I have some ideas looking back at this. I have no PC RN so I can’t try them, but I still could make mock-up shader code. First change: instead of depth-based post effect outlines, I could do thin fresnel outlines. I feel it could look better and be easier to make. Another idea is to make a whole deferred renderpath for this stuff. Last is PBR. Probably really simple PBR, but I want to find a way to make IBL work in this style.

Dave82

@GodMan That looks absolutely amazing ! So you telling me that you found a way of casting dynamic shadows on meshes while they’re not affected by lights (a shadow pass without a light pass) ? if that’s true please tell me more about your solution. I started experimenting with this 2 years ago and still have achieved nothing. Is it complex ? Do you use a custom renderpath ? Did you modified the Urho source ? :smiley: Sorry for all the questions but i’m really curious how you did this
Thanks !

GodMan

Thanks for all the comments guys. I can’t wait to get my Radiosity Normal Mapping Shader I made years ago working on Urho3d.

@Dave82 I feel like the shadows look bad, but it is so much better than not having them at all. I am still working on other methods when I get some more free time. Yes the map only uses a custom light mapping I made. Only dynamic objects see any dynamic light. The map is unaffected by dynamic lights only lightmaps “which is what we want :smile:” .

GodMan

I’ve been researching other methods as well. Halo had shadows on static lightmapped meshes. So it can be extremely complicated.

Dave82

It is so cool that the terrain is unaffected by lights and still have that nice dark shadows on it… i can’t even imagine how did you do it. Will it work with other light types too or just with directional lights ?

GodMan

The map uses a lightmap. That is how the shadows should look. I use 3ds max much like yourself. The problem with other solutions is that the light or even the ambient light or whatever you are doing in your urho3d app will ruin your result of your lightmap. Why go through all that trouble of lightmapping, and ruin it in the application.

I have not tested other light sources. I will keep this thread updated.

Dave82

Please do a tutorial or submit a pr for this thing. The additive lights that ruin the lightmap is a common problem in all popular game engines. Unity solves this by projected shadows using so called projectors. If this thing works you just found a solution for one of the bigest problems people facing with all engines…

GodMan

@Dave82 You give me too much credit. I have not tested this on very much.

Modanung

You could create a modified shader for the terrain to ommit ambient lighting.

Dave82

That alone won’t solve the problem.Standard lighting (used by every game engine) requires an additive light pass to make the shadow visible. To have shadows without illuminating the scene you should use a very game specific custom lighting technique or use projected shadows.Hoever projected shadows could be a performance killer if the engine isn’t optimized for things like that.
In Urho3d AFAIK it is only possible to :
1 .render the dynamic mesh white with a black background to a render target from the light point of view.
2. set this render target as the light’s shape texture and use the light to project the texture onto the level.

GodMan

I’ve been researching shadow techniques. It seems halo used shadow buffers. I’m not sure if this is correct though. I research about halo because I know for a fact they use lightmaps on there static meshes. They cast dynamic shadows as well.

Dave82

Yep , i’ve read that somewhere too. I did a research myself but unfortunately there are no real code or detailed explanation whatsoever. I also searched the whole web for shadow techniques used in games with pre-rendered backgrounds (like Resident Evil HD Remastered) but literaly there are 0 articles about how they did it.

GodMan

@Dave82 I agree this is what I am starting to notice. I did read some tech paper on Halo 2. On the lightmapping it says that per-vertex dominant light-direction + ambientness. Also it says objects sample lightmaps and build fake lights. They may be doing something similar to your approach, but they just did a better job LOL.

Also they are using photon mapping in the baking process.

GodMan

I have researched an idea I had for working on shadows for static lighting. It turns out Halo 3, and some other big titles use this same idea that I ended up coming up with before I even found it. This shows I’m on the right track. :stuck_out_tongue:

GodMan

Been working on Bloom and HDR for my skies. Trying to make the colors stand out more.

Messing with HDR and Color Grading. It is hard to make HDR look good in Urho3d. I’m not sure if bloom looks better on its own or HDR.

evolgames

JK0HzJ qpGpNd

This is my first project with Urho3d. It’s a walking evolution simulation where Jack learns to “walk,” by evolving his movements and timers. It isn’t AI, just natural selection-based. He can also modify things like his shape and have unnatural joints. I’m very satisfied with how straight-forward it was. Could definitely use some more improvements, though.

patnav

First screenshoot of my game “Battle space royal”

I’m currently working on the resources that will be found when an asteroid is broken !

GodMan

After using the RibbonTrail demo. I decided to make my own code for bullet contrails. I’m trying to add more to it and release it for others.

evolgames

Nice man! That’s some good nostalgia there

GodMan

Thanks man. I’m basically recreating the multiplayer except they are NPCs.

GastaGaming

Hi everyone :slightly_smiling_face:
The first post in the Urho forum. :smile:
I and seven of my classmates created a mobile game called Valhalla Cannon.
Valhalla Canon is story-driven 2D-game where you have to solve levels by shooting Vikings out of a cannon.

Development took us a couple of months, but we had no prior knowledge of c++, Gradle, CMake or Urho3D witch took a lot of time to figure out. We are planning to release all the sources for the public, but I need to clean up our project folders and files first. :sweat_smile:

Here some screenshots from the game.



evolgames

Been working on a colony management sim! In the second month of progress and it’s going real well. Think Rollercoaster Tycoon + Dwarf Fortress + SimCity. If that makes sense. It will combine different aspects of all of those games from macromangaing your economy and making sure your colony as a whole is happy and well situated. Got lots of plans and ideas for this! Put in a Celtic name generator and clothing/beard randomization.

magma

This is a short timeline of the first month of work before the above

lezak

Some screens from setting up and testing PBR




dertom

Sry, I know this thread is not for asking, but @lezak is this urho3d’s default PBR or did you alter anything? It looks stunning :+1:

lezak

Only changes I made was changing order of channels with metalness and roughness to fit schema I’m using in different software and adding additional map to control specularity of non-metallic surfaces. Only the first model in the video is using this third texture, so yes, it’s default Urho PBR. Big part of final result is postprocessing - here I’ve used (in that order): tonemap (ReinhardEq4 - I’ve been tweaking values a lot, so I cannot give the exact values used for screenshots), bloom HDR (with high threshold, to get glare only on smooth surfaces in places directly reflecting the sun), fxaa and gamma correction.

glebedev

I’ve tweaked PBR export from Unity to Urho:

Terrain is also supported now but only first 3 materials work kinda fine.

Dave82

Working on a pipe organ. It uses a very simple texture and a hand made trim set. Just few more details and it’s done.It turned out really nice. Too nice according to my other models :smiley: That wood texture just looks really cool.

GoldenThumbs

Started writing my own PBR shader and I think I’ve figured out why I didn’t like the built-in shader so much… (I added gamm correction to the shader I made)
Gonna compare with the post process gamma correction on now.


EDIT:
Post Process gamma correction seems to help the original shader a bit (as well as wash out my shader, which I expected) but it still doesn’t look quite correct.

GoldenThumbs

Here’s the model I used.

lezak

I’ve also started working on custom shader. Here’s what i got at the moment:





And compared with default shader (upper one):

EDIT:
(Changed last screen, origally posted comparison was wrong, I didn’t take into account that there’s default .5 roughness in new materal)

GoldenThumbs

Nice! Which HDRI is that? I looks like an HDRI Haven one but I can’t tell which.
EDIT: I think this is the one https://hdrihaven.com/hdri/?c=outdoor&h=kiara_6_afternoon

KatekovAnton

Hi! Can you explain how to convert hdrihaven textures to urho cubemaps with irradiance maps? Thank you.

GoldenThumbs

There are tools for it. I use cmftStudio. I’ve also seen some people use IBLBaker. Hope this is helpful!

Modanung

@KatekovAnton I use a Blender scene with only a camera and world background for the mapping. The camera is animated to cover all directions over six frames. The file naming could use some automation.

Although in the case of PBR you’d probably want to use the HDRIs directly, instead of turning them into regular images (which do not have a high-dynamic-range).

Also, welcome to the forums! :confetti_ball: :slightly_smiling_face:

GoldenThumbs

That would require writing some sort of custom shader logic for reading a lat-long image, would it not? Converting HDRIs to cubemaps doesn’t mean you have to lose HDR data. You just have to export your resulting cubemap to a format that supports HDR data.

KatekovAnton

Hi. I was not able to convert with CMFT… I created a separate topic - can you take a look?

@lezak can you give me an example of skybox and converted zone texture?

Thank you

weitjong

11 posts were merged into an existing topic: Improving and discussing Urho3D’s PBR

KatekovAnton

Experimenting with particles. Goal was to create a projectile hit effect. In total this effect is composed of 5 particle emitters and decal.

cosar

First time sharing screenshots from my project (early prototype):

glebedev

Fixed a lot of small issues with the Unity to Urho exporter. Now Specular PBR materials exported correctly into Urho3D. Also fog and reflection probes are baked into zones + zone priority is calculated based on zone size (smaller zones has higher priority).

Dave82

Finished a dagger model. 500 polys

GodMan

My shitty GTA Vice City port. I wrote some code in 3ds max that converts all mutli/subobject materials to materials that urho3d can understand while keeping their bitmap images.
No vehicles yet.

glebedev

Made a PBR shader of terrain:

Now it doesn’t look different from the rest of the scene as it used to be.

throwawayerino

Imagine vice city with scripting support!

GodMan

I agree. Alot of things I can do with urho3d

extobias

Deferred Decal

deferreddecal

glebedev

Finally I solved issues with Unity Specular setup shader and SRGB textures. Quite usable result for Urho3D:

glebedev

glebedev

Grab a PBR test scene here if you need one:

Also there are more than 300k faces in the scene. Great for raycast optimization tests :wink:

Dave82

Just finished a low poly ornate chair found textures , created the model… when suddenly , BAMM lightning hits near to my house and restarts my computer. After i rebooted , i could’t open the file… i could scream i was so angry almost 7 hours of work was destroyed. When thankfully found out my autobackup system was turned on so i could load an earlier verson of the model. What a luck. So here it is :

KatekovAnton

Latest screenshot from my game


Urho can provide good graphics by GPU gets very hot with pbr and ssao.

Scene and assets was exported from Unity using Gleb’s exporter https://github.com/gleblebedev/Unity2Urho - building scenes in Unity3D and exporting it into Urho seems to me the only reliable and convenient flow right now.

Water was also exported in the same way

If you are interested - you can track project progress here https://discord.gg/***

JSandusky

Implemented single-pass stereo a few weeks ago. Was super invasive tearing through pretty much everything, completely worth it though in perf gain.

Making shadows work was tons of fun since the instancing code originally didn’t like the idea of varying input-formats even if it’s just because of the step-rate.

Uses double-wide instanced offset+clip approach. Turns everything into an instanced draw and doubles the instance count of instanced draws while using a stride of 2 instead of the usual 1.

// HLSL: vertex-shader
uint iInstanceID : SV_InstanceID;
float oClip : SV_ClipDistance;
float oCull : SV_CullDistance

float4x3 modelMatrix = iModelMatrix;
float3 worldPos = GetWorldPos(modelMatrix);
#ifdef VR
    oPos = GetClipPos(worldPos, iInstanceID);
    float eyeOffsetScale[2] = {-0.5, 0.5};
    float4 eyeClipEdge[2] = { {-1,0,0,1}, {1,0,0,1} };
    
    uint eyeIndex = iInstanceID & 1;
    oCull = oClip = dot(oPos, eyeClipEdge[eyeIndex]);
    
    oPos.x *= 0.5;
    oPos.x += eyeOffsetScale[eyeIndex] * oPos.w;
#else
    oPos = GetClipPos(worldPos);
#endif

used for my OpenVR stuff: https://gist.github.com/JSandusky/99502966989ceb6652d711bcc9124c75

glebedev

https://assetstore.unity.com/packages/3d/environments/seed-hunter-143414

johnnycable

looks really good! :smile:

elix22

Amazing
Did you use Unity2Urho for this ?

glebedev

Yes, indeed. It is quite capable already.

evolgames

Making a little sniper game for fun. It takes into account bullet travel time, gravity drop, and windage. The player must compensate and adjust zeroing in order to get longer shots. The result is actually very realistic and fun. If I add a video I’ll show it but you can hold your breath to steady the shot, too.

Also, the npcs are not full models but actually just scaled primitive shapes animated together. Then, upon death, they are turned into ragdolls. The road is also made at runtime with cubes, planes, and generated materials. Gun and ambulance are CC0 placeholders but I’ll do something similar with them. I’m gonna add modular, randomly generated buildings next.

tvault

Amazing work here! It’s great to see!

evolgames

ezgif.com-gif-maker (2)
Survival horror short project. Challenging myself to finish it before Halloween. I’m very happy with my modeling of the torch and I’m getting better at getting particles how I want them.

Made a little easy level creator system based on a 3d grid. The map is created with preset chunks, which could be a floor, a blank wall, a wall with a torch, a crawlspace, spawn point, water, key on a table etc. All made using a handful of .mdl files (mostly planes) at runtime with preset parameters (offset, rotation, iterations). Every combination used in game (<100) is registered in a legend. Using my reference a map is as simple as:
{
{12,12,12,12,12},
{12,12,14,16,12},
{10,10,50,10,10},
{10,17,31,10,10}
}

Result is very easy to look at and is quickly learned.
While this was kind of tedious to set up, it makes level creation from here on out a breeze, and it’ll make custom levels extremely easy to create for players.

P.s. a minecraft-like 3d block grid makes more sense in code…but you can’t visualize that in a text file for a human to look at, plus this game won’t have upper or lower levels anyway, just corridors and rooms.

glebedev

Tweaking kinematic character controller to match Quake 1 movement:

glebedev

And one more test after tweaks:

lebrewer

How did you do that? It’s awesome! :open_mouth:

glebedev

This one use btKinematicCharacterController wrapped in a component. There are few glitches but I start to suspect they won’t be easy to fix :frowning:

glebedev

Urho3D (***) running on XBox in developer mode.

evolgames

Rewrote my Ether simulation in Urho. Does fairly well with thousands of sprites. I really, really love Urho’s built-in UI. It’s easy to learn and saves a ton of time.
ezgif.com-gif-maker
ezgif.com-gif-maker (1)

GodMan

Halo 2 Backwash
Still working on lighting with lightmaps, fog and dynamic objects.

GodMan

Working of first person arms and weapons.

GoldenThumbs

Sure some of you saw that I’ve been working on SSAO stuff. Got it looking like this

GodMan

How does it look with everything rendered?

GoldenThumbs


It’s a subtle effect
Edit: Another screencap

Eugene

This one looks really cool, like it.

GodMan

Seems hard to notice in some areas. Works well on the character though.

JSandusky

Huge improvement from the heavy dithering.

Dave82

Just before anyone think i don’t work on my project anymore here’s a fresh screenshot form an unfinished library segment. I also added a point light shadow caster so now the dynamic models will cast more realistic shadows (until now only directional light was supported)

johnnycable

Interesting shot. Would do for a good “alone in the dark” setup… :hocho: :hocho: :hocho:

GodMan

Looks like Resident Evil with the library area.

lebrewer

Wow, that looks awesome. Is it composed of many layers so it “joins” so well with the main character?

Dave82

I use a bit of desaturation to bring the mismatching colors closer and tweak ambient light color and intensity to match the background “lighting” and 3d objects close as possible. This works most of the time but there are still scenarios that doesn’t look good. In these cases i add extra 3d lights to fit the 3d objects better.
Also the character looks pretty basic with not much details going on (no cloth wrinkles , AO etc) so it might help if i just change the character to a more professional one. Unfortunately finding a good looking free legal 3d female character is PITA.

GodMan

I have had similar issues with my project. It seems hard to try and get the characters to sort of blend with the lighting in the scene. Since my environments use lightmaps, and my characters use dynamic lighting.

GoldenThumbs

You really need spherical harmonics.

GodMan

I have seen @Lumak work on lightprobes. I have it compiled and everything. I just have not tried to incorporate it into my project yet.

I have read up on spherical harmonics lightmaps like they use in halo 3.

GodMan

Fixed first person arms shaders for better specular, and normal mapping.

JSandusky

Boring shadow-atlasing shot (image is of the shadow-atlas for a spot + point-light, spot on the left, point on the right). I wanted to add shadowed lights into my clustered-shading so naturally I had to atlas them.

Used the existing AreaAllocator. Major headache was with the CalculateShadowMatrix(...) in Batch.cpp the LightBatchQueue now needed to know about the assigned space beyond just the viewport as the offset matrix would be calculated incorrectly creating a lot of odd behaviour where shadows would vanish based on camera position and so-on.

Barely any shader changes, just passing the assigned UV space along and sticking a FitShadowCoords(...) function in there to remap the coords to that assigned space.

Next step is hashing the queues to only render shadow-views when dirty and replacing AreaAllocator with a quad-tree allocator that can handle persistence (AreaAllocator wasn’t made for regions becoming invalid/free). Not even considering touching the VSM can-o-worms, PCF will do.

glebedev

Thanks to @rku’s UWP build fixes I can run c# Urho3D app on PC and XBox.

JSandusky

That black thing is screaming for Alembic support.

glebedev

Just published a test version (discoverable by link) of my radio app:

Screenshot:

Please submit bugs and recommendations at Psychedelic Radio Player

glebedev
elix22

Nice Visuals
On which hardware is it running ?

glebedev

On my PC. But the asset is very low-poly and doesn’t use PBR so it should run fast even on mobile.

I’ll publish it with the source code later today.

elix22

Thanks for sharing .
I generated an Android APK (but used my framework , not sure how to use yours for mobile)
Wanted to check how well does it run on mobile , Seems that it runs very well on mid-range devices .

Several notes & questions

  • I didn’t use the KinematicCharacterController (don’t have it yet in my framework), I used the default Character/RigidBody component , Are you using @Lumak’s implementation ?
  • Map_v2.xml is pointing to “adaptive-combat-rifle” folder , but it’s missing , I copy pasted the “Weapons/AdaptiveCombatRifle/” folder to the “adaptive-combat-rifle” folder
  • I am assuming that you used Unity2Urho to export the scenes , and Urho3D editor to add CollisionShape & RigidBoy components , is that right ?

Link to the Android APK

glebedev

Hey, thanks for interest!

Eugene

Just playing with PBR, and I like how it looks
PS. Yes, I forgot to enable shadows

Update I fixed gamma correction and specular:

Modanung

witchapple

GodMan

Is PBR at a point were someone can make a game using it? Or only still simple static scenes.

Eugene

I can answer this question only if you specify what set of features you expect from PBR to consider it “usable in real game”.

As a person who released exactly 0 games with PBR I cannot really answer it otherwise.

Modanung

Dave82

@Eugene I tried the PBR renderer but i get very poor performance on my HD7850. The fps seems acceptable but the GPU fan goes crazy after 10-15 seconds. No game does this to my GPU (I tested with the demo scene and DX9) . Did you experienced similar things ? And which renderer you use ?

Eugene

I tested it on GL ES 2, GL3 and DX11.

Did you experienced similar things ?

I dunno, you can try it yourself.
Last sample “RenderingShowcase” in the list, there are two scenes available.
https://eugeneko.github.io/Samples/Samples.html

Modanung

glebedev

Have to share this anim bug:

image

johnnycable

Does it attack me when I go around the dungeon?

Modanung

Not at all… deskblob is your friend. :stuck_out_tongue_winking_eye:
I intend to turn it into a Cyberplasm component. Any help would be welcome. The algorithm I’m working on generates this particular blob - with an arbitrary number of subdivisions - based on eight animated (position & normal) vertices, arranged as a hexagonal bipyramid. I wonder what it would do to a simple soft body or animated model.
It has an (n > 1)-dimensional normal-based curve formula at its core which I call a witch.

witchbound

The latest (Linux 64-bit) build artifact of the oscillator I showed earlier can be found here.

Modanung

Before taking it to 3D I’ve done a series of flat experiments. For example this random “oakleaf”. It might give you an idea of what lies ahead. Feel free to play around with the Callis parameters.

I’m not drawing yet, but the results so far combined with the seeming absence of this method make me think it could have widespread applications, and outperform many of the available 2D and 3D options. It might even be implemented as a shader.

johnnycable

Vic 20, LoL… I remember having played something called Pitfall on it…

Eugene

I’m working on synchronizing my lightmapper and renderer.
From top to bottom:

  1. Dynamic ambient and direct lights
  2. Baked ambient, dynamic direct lights
  3. Dynamic ambient, baked direct lights
  4. Baked ambient and direct lights

Baked and dynamic ambients look significantly different due to natural occlusion

Modanung

Modanung

Combining tris and quads:

Modanung

3D callis operational! :smiley:



George1

Why not record a gif animation?

Modanung

Takes times; halts progress. Also I prefer fixing bugs over parading them in carbonite. :slight_smile:
But you can play with the artifact if you’re on Linux.

Eugene

\o/ I found out how to render transparent stuff

Modanung



Modanung



GodMan

Same thing for me as well.

evolgames

Whoa thats awesome. What am I looking at? Procedural terrain?

Modanung

I guess you could call it that. But at its core is something more widely applicable: A curve that I think I may have invented, or at least not given up on early. :slight_smile:
WIP of course, but it seems to provide an alternative to splines while doubling as a subdivision algorithm. The terrain is one of the test programs, which subdivides a sheet of randomized quads.
I did another quick and dirty test using a cube grid the next day:

The colour difference is just a simple shader modification, btw. (if normal.y < …)

Modanung

johnnycable

The new Santa house project, Lapland. Inside shot.

Modanung

:slight_smile:

GodMan

Reminds me of like Zelda link to the past, and mario like landscape.

evolgames

Still need some smoke, exhaust, and explosions, but I think it’s looking pretty good so far. Going to be fun making some other vehicles.

ezgif.com-gif-maker ezgif.com-gif-maker (1) ezgif.com-gif-maker (2)

Eugene

Finally managed to make water that I like

1vanK

https://github.com/1vanK/Urho3DDeepWater

evolgames

whoa this looks really good

Eugene

I like how it looks. Maybe I need to adjust color and fade?..

Actually, the biggest change I made is making water lit-able:


It looks somewhat decent even w/o true planar reflections.
It would be the best if I added Screen Space Reflections, but I don’t have energy to dive into that rabbit hole.

SirNate0

Micro game I am working on as a prototype for the character controller for my larger game. All you can do is smash the rocks (pale yellow color) by causing them to explode or cutting them along a plane. But it’s rather fun for a few minutes with all the explosion sounds.

Ka-Wiz

was bored and made sample 5 into a little random star fox game last night lol

HappyWeasel

Nice movie … the shooting sound made me laugh a bit :wink:

evolgames

added helicopters, some basic terrain, and buildings. gonna make a boat for exploration

GodMan

Cartonny version of GTA.

glebedev


Looks like an abstract art, isn’t it?

evolgames

Neat, is that a racing game?

glebedev

I had a project in mind when I started to use Urho 5 years ago. This is a reincarnation of the racing game project, now with stock assets and @Eugene 's new renderer.

evolgames

Been working on this recently

evolgames

Having so much fun with this, I’m so happy with how stable I got the physics on the hinges.
ezgif.com-gif-maker (3)

glebedev

glebedev
evolgames

That lighting looks really nice

evolgames

ezgif.com-gif-maker (7)

evolgames

Added pistons. Super fun. Constraints are a headache just until they pay off
ezgif.com-gif-maker (17)

Eugene

I always liked the idea of Inverse Kinematics
Animation3

evolgames

Using viewports to make my menu fancier.
ezgif.com-gif-maker

GodMan

My attempt at making a shield shader like in the halo games that uses a offset along the vertex normals.
ezgif.com-gif-maker(1)

evolgames

Looks real to me! I can’t remember how it looked originally

GodMan

Thanks everyone for the likes. Bungies shield shader is still better than mine. This is a good start though.

@evolgames

Halo 3 Version:

GoldenThumbs

I’ve always assumed they did something like a cubemap for this, but just mapped to the object normals of the shell mesh. Not sure how well that would animate though…

GodMan

@GoldenThumbs I think they are doing something like that, but they use a 3D noise texture to make the shield effect.

glebedev
throwawayerino

Is that with a geometry shader or plain old vertex?

glebedev

Plain old vertex shaders for now. It uses a pregenerated MDL file with lods and stretches vertices into grass blades.

Eugene

I have just finished GLTF importer and I feel more proud than I probably should :laughing:

throwawayerino

But did you have fun while making it?

GodMan

So I finally got around to porting my directional lightmaps shader I made for Irrlicht engine in maybe 2014 to Urho3D. You can now use Normal Mapping with lightmaps. My specular is approximate, but works okay. Still needs work.





GodMan

Added a custom shader for shorline waves which has a blending and animating effect too help blend between water and land effect.

lebrewer

That looks incredibly good. Congrats, dude!

GodMan

Thanks man. Been working on better shaders.

GodMan

My crappy attempt at first-person legs.

GodMan

So I got first-person weapons with custom reticles working in Urho3d like they do in Halo.

Modanung
Modanung
GodMan

Zombie Christmas.

Modanung

Deck the halls!

Nice hat btw. :dizzy_face:

Modanung
GodMan

Been working on a refraction shader for particle effects, and active camo for characters.

GodMan

My sentinel shader. No Lights yet.

SirNate0

Experimenting with YCrCb to generate a flame from simple gradients (by using the GIMP’s Colors>Components>Compose… tool):

glebedev

Some photogrammetry baked into texture in Urho3D:

Eugene

I have finally got client-side prediction of decent quality.
Left is acting client, right is replicating “remote” client, both clients have the same (poor) quality of server connection.

lebrewer

Oh, that’s actually impressive. Are you adding constant lag and interpolating on the server side? Source Multiplayer Networking - Valve Developer Community

Eugene

Yep, I am doing very close to this article. I don’t think there are that many approaches to how one can do realtime networking. Delays, interpolation, extrapolation, prediction, lag compensation…

I think it’s possible to add more client-side delays and actually implement client-side prediction for other actors, but I wouldn’t try that. Sounds more complicated than it’s worth for me.

JTippetts1


A couple years ago I played with a grass system using a fixed circle of grass instances that follow the camera, and using a vertex displacement shader to rotate/scale/translate the grass instances to a heightmap. I’ve recently started working on it again, trying to make it look decent. These are some of my results so far.

The system creates a StaticModelGroup of a grass billboard cluster, and creates instances arranged on a grid within a specified radius. The vertex shader looks up the height of a vertex in the heightmap used to construct the terrain, and computes a hash based on the floor() of the vertex coords to generate a randomized rotation matrix. Vertical scale factors are computed from a coverage map (limiting the grass/vegetation to a specified blend channel in the terrain coverage map) as well as based on the distance from center, to have the vegetation smoothly scale into existence at the edges of the circle. The node holding the static model group snaps to the floor() of the camera’s location as it moves, so that the group of instances is always centered on the camera. Vegetation gradually “grows in” at distance, and gradually “fades out” as the camera moves on.

GodMan

Looks great. The grass color saturation seems to be a little high though.

Eugene

More experiments on CSP and replication, I’m trying to make netcode that has acceptable quality even on poor connection.

These are connection properties:

Just to give an idea how bad this connection is, Urho cannot even connect to server with this amount of corruption, I have to enable lags after connection.
NinjaSnowWars also stays completely dead and unresponsive.

GodMan

New water shader I’ve been working on for Urho3d that does not use render to texture. Still need some more work, but getting close.

SirNate0

How does it work without rendering to a texture? (It looks great, by the way)

GodMan

I’m using cubemaps for the water shader.

lebrewer

Holy crap, that’s awesome! This would enable people to do so much more with Urho, including kart racing games and even fighting.

GodMan

Got my custom water shader to have almost the same quality as real-time water shader. Been working on making custom cubemaps for my environments. Cubemap still needs work though.


lebrewer

I just realized the character has no shadow. Are dynamic shadows disabled?

GodMan

@lebrewer Yes the environment uses directional lightmapping. So I have to come up with a way for dynamic shadows.

GodMan

So I’ve been working on improving the specular effect of my directional lightmapping shader. This screenshots incorporates cubemaps for specular reflections. Directional lightmaps suffer from specular approximations. Still needs more work, but much better than default specular calculations.


glebedev
GodMan

@glebedev Looks great. I like the glow effect. Is this a particle editor for Urho3d?

evolgames

This is so cool! Makes me want to mess with networking again

glebedev

This is a new graph based particle effect. It has multiple layers, curves, mesh renderer, etc. Way more advanced than Urho3D particle effect.

GodMan

Okay I see. Will this be available for Urho3d?

glebedev

If someone port it from *** to vanilla Urho3D then yes.

Modanung

This post was flagged by the community and is temporarily hidden.

Modanung

This post was flagged by the community and is temporarily hidden.

glebedev

Yeah, would be nice if they curl more. I may tweak it before publishing.

Eugene

I added interpolation limit so the clients with shit connections don’t have advantage and use extrapolation instead. In this case, client has a ping of 500ms with interpolation limit of 250ms, so it extrapolates other 250ms (and may be wrong about it).

The error corrections become much less jarring at the ping of 250ms and completely disappear below 200ms.

KatekovAnton

Hi. Made a summary video about my project that uses Urho3D. I implemented few simple game mechanics, then got blocked with paricles, UI and HDR. Now I migrated it to ***.

Nice engine! Gleb thank you for particles.

Main issue now is the UI system.

Eugene

Okay, I am very happy now.
I’ve got basic animation sync going (as a sample for now, not a generic component).
Animation frames are actually in-sync between client and server, so animated models can be used for hit detection.

Client vs server comparison:
image

GodMan

@Eugene Great work. I always thought about if Urho3d could handle things over an internet connection.

Eugene

Yep. Whereas Urho transport layer is okay, at the level of messages and events, I don’t have any hopes about Scene Replication system itself.

Scene Replication may be a okay-ish tool for prototyping on localhost, but I don’t believe it’s even remotely usable in any practical scenario. Scene Replication does one job: it makes sure that if you apply some changes on the server, these changes will somehow end up on the clients at some point in time, without any care about bandwidth spent.

There is InterceptNetworkUpdate which can be used to rewire some parts of Scene Replication, and you can use events instead… But it would be “networking in spite of Scene Replication” instead of “networking based on Scene Replication”.

I wanted to have a generic system that is actually useful for practical tasks.
So I just slapped independent replication system on top of transport layer, with its own messages.
Instead of having generic Scene Replication that doesn’t allow user to do anything else, I implemented generic API for running much wider scope of networking logic, including, but not limited by the replication itself.

Eugene

Okay, sorry, it’s the last time me spamming about my networking stuff.
I am just really satisfied with the end result.

Interpolation, extrapolation, client-side prediction, lag compensation for server-side raycasts, update throttling for irrelevant objects, partial scene replication for each client, everything works even on poor connection…

I think that’s enough for actual low-scale shooter if only I had high-level gameplay code and not just basic networking sample.

PS: In case anyone is curious, this is semi-permanent link to the code. It’s MIT, so take it if you feel like it.

vmost

This is pretty exciting, it isn’t spam from my pov :). Is your implementation server-authoritative?

Eugene

Yep. The client is trusted only with raycast direction, raycast time, and movement direction (I don’t check max speed on the server now, but that’s the matter of one “if”).

I thought about partial client authority, but I didn’t bother with implementing it. Custom components allow to send arbitrary data to the server, so the user can give as much authority to the client as they want.

Well, this architecture doesn’t really support true p2p, but true p2p is a mess anyway. I cannot imagine generic p2p solution without server at all. But my solution may be able to handle elected server in p2p network.

lebrewer

I don’t think you are spamming at all! Keep it coming. The devblog nature of this thread is awesome and it is encouraging and motivating to see what other people can do with Urho. Coming here to check if you guys made any updates is quite a dopamine release. :smiley:

glebedev

Here is more to the new network:

lebrewer

Did you guys test with projectile collision? For example, a slower-moving rocket or bouncing grenades.

glebedev

Is this a question about new network? You can get details from https://github.com/***/***/wiki#multiplayer-and-networking

Eugene

Update for @glebedev work: I added support of soft particles.

SirNate0

What do you mean be smooth particles?

Eugene

Huh, I wanted to say “soft particles” and somehow forgot the word. Thanks for pointing it out.

SirNate0

So this sort of effect?

1vanK

We already have soft particles:

Eugene

Yep, I know that standard urho shaders have soft particles. However, custom shaders used by Gleb didn’t fully support soft particles until today.

I just very much like soft particles in general, it always looks so nice and smooth.

count0

This brings me back to XPilot - Wikipedia but better.

glebedev

IKSolver to keep hands in fixed position:

SirNate0

Looks pretty nice! I’d suggest adding some motion to the gun as well so it looks more realistic, maybe bobbing up and down with the torso or swaying back and forth a little.

GodMan

@glebedev I agree with @SirNate0 looks good though. I needed something like this in the past for an NPC two keep one of his hands fixed to a grip.

lebrewer

I think the problem lies in the fact that the current IKSolver does not allow you to blend animations with the fixed bones.

evolgames

Got a new laptop (finally). First things first, time to see how many npcs I can spawn in u3d. I don’t know why they are missing eyes lol this was just the model I had on hand from mixamo. Maybe I’ll do some simple zombie shoot-em-up game. Was thinking (with a proper zombie model) swapping individual models/rigid bodies of their limbs, torso, head at time of death would be better than a ragdoll in the case of zombies.
ezgif.com-gif-maker (1)
ezgif.com-gif-maker (3)

Eugene

Well, it’s been a while…

I have implemented Unity-like reflection probes with blending and box projection.
All cubemaps in this gif are static, there are 3 local cubemaps and the skybox itself.
Cubemaps can be baked on the disk, pre-rendered on launch, rendered on demand or updated in real time.

Nerrik

wow looks very nice :heart_eyes:

GodMan

What about if you just want diffuse lighting? Like standard light probes without the reflection data.

Eugene

I already have light probes for diffuse lighting, although they work as separate system from reflections. Reflections are created by rendering to texture and light probes are created by ray tracing as part of lightmapping. However, you can also fill light probes via code, so it’s not that hard to create light probes from reflection cubemaps.

glebedev
evolgames

Live stream of this creature learning to walk. No machine learning but natural selection.

elix22

Cool !
I guess you are using some kind of a Genetic algorithm , promoting the creatures (chromosomes) with the best score to the next generation (which is also some kind of a machine learning ) .

evolgames

Yup so each has typical traits. It’s genes can define the way it is shaped, all of it’s segments and connections, and movement patterns. Whichever goes farthest to the right is the new winner and reproduces for the next generation.

The mutations are random. I was considering it could be cool to add AI that learns the best mutations for success for any given round. Would speed up the process.

elix22

You might want to read the excellent book “AI Techniques for Game Programming” written by Mat Buckland
Specifically chapter 7 , page 244 , “The Smart mine sweepers”
It’s a example of an hybrid implementation of a Neural network with genetic algorithm.
Might give you some ideas …

evolgames

Oooh thanks that sounds perfect. Will check that out

JSandusky

@evolgames Here’s the best set of locomotion slides I’ve ever come across with duty-factor tables for most gaits and leg configurations. I’ve used it for reference everytime I’ve had to rig insects to automate the initial walk in maya.

SirNate0

That was a really informative set of slides. I’ve seen some parts of the information before on other sources, but never that detailed and compiled into a single document. Thanks a lot for sharing!

JSandusky

Yeah, super useful. I just rig up the IK and then in python key up each limb’s effector vertical on sin((time/animTime) * loops) * dutyFactor * strideHeight (it’s actually more complicated, but the gist of the cycle is basically that) clip if below zero and normalize for max stride height and then the initial work is done in minutes and it’s off to tweaking.

Regrettable that those slides don’t account for service-time (contact) and is just duty-factor but that and lift are really a function derived from velocity. Faster you go the less service time is required.

JSandusky

Bask in the beauty of 4x4 variable rate shading (nvapi).

glebedev

Pattern matching animation state machine + character configuration

dertom

Testgame(urho.net). Initially for testing LeoECS (we consider using this for Endzone2(EDIT: not urho though :expressionless: :wink: )).
I built an Ecs-Net-Synchronization so this is a multiplayer game (all on a proof of concept base). Started actually without ambition but now is actually really fun to watch and develop. Still not sure where it ends though… I will add at least some kind of attacking-mechanism… :smiley:
At the moment you can only build a barrack to “produce” settlers and convert those to soldiers. Houses to raise the maximum amount of possible settlers/soldiers. And a “resource-miner” to pickup stone or wood

1vanK

The best license I have ever seen xD

elix22

I must admit the author has some sense of humor :slight_smile: ,
But the license is not bullet proof , what if one hates 1 specific Russian and doesn’t hate all the rest , is he allowed to use the license ?

1vanK

If one, then you can, if two, then usage is no longer possible

Eugene

It is amusing jest, but I am not sure how good it is as practical decision.

I think this license is technically incompatible with MIT and most other open source licenses, therefore you cannot use this library in any open source product without adopting custom license.

Moreover, requirements of this license are extremely hard to enforce even in court. You would need the violating user to make a unambigous public statement. Like, explicitly tweeting “I support using open source software in military”. And when you wasted your money in the court, the user can just say “sorry I got hacked/sorry I changed my mind” and get away with everything.

So, this license both limits the usability of the library and doesn’t offer any practical guarantees

And there’s a possibility that this license is just void, without any legal substance, because I am not sure you are legally able to require user to have a specific opinion. In this case this license basically means nothing and this library is unlicensed.

1vanK

I see a contradiction in your reasoning. The part that is the translation of the MIT license is still legal license. And if it is impossible to prove a violation of some part of the license, then this part is not an obstacle to using a product.

So this license compatible with other licenses.

Eugene

You cannot just take a half of the license and say “yeah we are good”.
Just like you cannot sign half of the contract.

I would even argue that License in LeoECS is self-contradictory.

если хотя бы одно из них невыполнимо - использование Продукта запрещено

Данная лицензия разрешает безвозмездно использовать Программное обеспечение без ограничений

This license literally says that you can use product without restrictions, but with restrictions. Therefore it’s void and nonsense from legal point of view.

That’s what happens when not a lawyer tries to make their own license

1vanK

As you said - it is impossible to prove that the terms of the license were not met.

This license literally says that you can use product without restrictions, but with restrictions

original license has the same phrase, the author of the new license simply formulated his idea incorrectly. He had to write that everything is allowed under certain conditions.

Eugene

Meanwhile me working on editor…

glebedev
JSandusky

Finally got time to get OpenXR working (D3D11, haven’t set up GL yet). Single pass stereo. Projection matrices are pretty bungled (thus the cyan tint so I can see the lens glow and know if I’ve totally botched stuff before I bother putting the headset on). Have to fix up those projection matrices (possibly transforms too) and verify actions work.

Also, space actions in OpenXR (grip/aim pose) bloody suck.

Eugene

Still me working on the Editor: it supports embedded play now.

The end goal is to run user application in Editor and standalone with the same user code. User code knows (almost) nothing about the fact that it’s running in the editor and not by itself.

User code receives some hints about current state of editor, so it is able (but not required to) load selected level and spawn camera at current position.

elix22

Nice !
I have also written a similar editor in C# (.NET 6 , Unity light like clone) with all the bells and whistles , dock-able resizable Tabs with instant hot reload (<100 ms) and fast provisions to mobile and web , using it in my projects , will do some demonstration video in the future.

I am curious about how did you handle/tackle the following items:

  • Exception handing , i.e. divide by zero in the user code will cause the editor to crash

  • Hierarchy view ,updated during run without causing slowdown of the user app , handling large amount of Nodes/components (>10000) additions , deletions , enable , disable, name change

Eugene

I don’t really have hard boundaries between Editor and user code.
Which is nice for debugging and general usability, but bad for exception handling.
I am not sure there exists any nice solution. If I want exception safety, I should just launch separate process.

I am using ImGUI, which is both a blessing and a curse. On bad side, rendering 10k item list with ImGUI is much slower than 10k item list with normal UI. On good side, ImGUI doesn’t care about total item count, it only cares about visible ones. I may have 10k nodes, but if they are mostly collapsed and hidden in the tree, I will not pay for them. And with ImGUI I have 0 lines of code to handle updates. It is just 100% automatic with ImGUI. So I’d say using ImGUI is net positive trade.

elix22

Would it mean multiple Rendering contexts ? I personally would want to avoid that .
I didn’t check it yet , but it would be interesting to know how Unity and Unreal are handling it.
.NET 6 has a good exception handling , my editor got it mostly covered but not all of it (I might be missing something ) , I guess I will continue to search for the optimal solution .

I am using customized Urho3D UI , using Urho3D ListView in my Hierarchy window tab .
The slowdown is caused due to addition/insertion of new entries/items (the ListView already contains > 10K items).
I guess I will write my own customized ListView UIElement

Good luck with your editor

Eugene

More editor stuff. I implemented asset importing (from glTF for now, but it can process any file), was quite annoyting to handle asset processing cache without redundant re-imports and with automatic imports when needed. Also improved plugin system: I can select sample plugin and it will run sample with scene generated in code. I want to make all samples run-able in Editor at some point.

extobias

Nice job
pull request when?

evolgames

Got Steamworks working for lua with ffi! Now I can make an online p2p multiplayer game using steam’s servers for free, without need for port forwarding or server setup. Here’s what I’ve got so far: basic menu set up, creating a lobby, and viewing the lobby list, which will update when a new lobby is created. In the gif I open two instances of the game and create a lobby with one so I can join it on the other. The lobby is not locally hosted, but instead the game finds it from steam’s servers based on the game’s appID.
The next step, after gathering all players in the lobby, is to start the game and use packet sends to manage/play the game (simple p2p, not authoritative). I plan to make a simple 2d fighting game. I’m fine releasing only on steam, so this makes online multiplayer in urho 100 times easier. I can also do achievements, leaderboards, friend invites and all that other stuff. The best part is any multiplayer game would use the same lobby setup so I only have to do the hard stuff once really.
P.S. lowered the framerate on the gif to post

ezgif.com-gif-maker

hunkalloc

That is exciting! Anyone can use the servers, or do you have to have a game registered? Can free and open-source games be registered?

evolgames

You’re supposed to register a game ($100 and 30 day wait before publishing) to get your game’s appid. But you can use steams testing appid during development. I’m not sure about their rules exactly but I imagine if you set up a developer account and registered a game (even open source) you can still get your own appid, after paying.

hunkalloc

Thanks for the info! And how does the server thing actually work? Do you push a Docker image with your game server code and they just host it and auto-scale?

Or is it just a STUN server to do the middle-ground between peers?

evolgames

You dont need any game server code or docker images or even need to know anything about ports or addresses or punchthroughs. I dont know exactly how steamworks p2p works but you connect to steam by just having the application open and add the api to your project. It’s awesome because all the hard work and security is done by them (plus you don’t pay for nor maintain servers). A user launches your game on steam as normal and is automatically connected.

This is how my game integrates it. I use lua so I needed this ffi wrapper but steamworks is c++ so that would be different if you are making a game that way.

steam = require("sworks.main")
assert(steam.init() and steam.isRunning(), 'Steam client must be running')
assert(steam.isConnected(), 'Steam is in Offline mode')
user = steam.getUser()

Then I can do stuff like:

steam.queryLobbies(filters, limit, callbackFunc)

And get available lobbies (that steam takes care of specific to your game only) as a table, connect to them, create them with another function, send chat messages, etc. It’s very easy. As far as gameplay, once you are in or made a lobby, you already have all the other player’s steamid. You use the send packet function to communicate with them. Since it’s p2p you don’t need a host controlling gameplay but you could make the host collect controls and relay things out if you wanted to. I’ll probably just have players send packets to all others with where and what their character is doing (casual game anyway, so it doesnt really matter). The reason some would want the host dictating stuff is if one player had a bad connection they might start glitching and teleporting.

From the Steamworks api page:

Our newest APIs relay packets through the Valve network by default, which ensures that players and gameservers are protected. It is higher performance and uses a higher-quality reliability layer. It also supports ordinary UDP connectivity. An open-source version is available on github.

hunkalloc

Oh, wow. That takes away a lot of gruntwork for setting up a game session. My game is also casual and coop, so I don’t care about the hard things such as authoritative servers.

Thank you so much for sharing this! I’ll dig into it and play around with the SDK.

evolgames

Yeah sure thing. Took me a while to figure out you could do this stuff since most posts about steamworks integration online seem to be only focused on achievements and leaderboards, rather than p2p connections. I’ll post another gif when I have more done with it.

Eugene

(joined effort with @glebedev)
Implemented object outlines. It should work with any vertex shader, but it’s not very smart since it just replaces pixel shader with either solid fill or ALPHAMASK cutout fill.
For now I use only one temporary texture and do edgedetection between colors, so I cannot do intersecting contours of different colors now. At least it’s more efficient…


hunkalloc

That’s a fun way to do celshading. :smiley:

Eugene

Also suboptimal and limited way to do celshading, I think…

Main reason I wanted outlines is to have nice selection highlight in the Editor:


glebedev

SSAO with kuwahara filter

Eugene

Editor takes forever to make…

Eugene

Yeah… It took some time (and hacks questionable design decisions) to make it work.
But I almost finished the Editor.

I can now run extrenal games fully embedded (one process with the Editor), yet in optionally separate OS window. Games will need some minimal glue code, sure, but it actually imposes much less restrictions on the game code than I anticipated.

It took maybe 30 minutes to port my existing game to be perfectly run-able in the Editor… and maybe 2 days to fix all the bugs on the engine/editor side. Fixing mouse handling was very annoying and I am still not sure I fixed all places…

glebedev

New built-in SSAO in *** fork:


glebedev

Deferred decals.

Before:

After:

glebedev

Forward render:

Forward + SSAO:

Deferred + SSAO +Deferred Decals:

Eugene

Working on better UI sample.
It’s very basic, but it automatically works with mouse, keyboad and controller, which is very important for me. Also it has UI sounds but you can’t hear them from GIF xD

elix22

Looks nice .
I browsed the code a little bit , should be fairly easy to integrate into Urho3D .
Several questions :

  • What are the benefits of using RmlUI compared to other UI solutions (besides using HTML/CSS for UI creation)
  • How do you create and verify the UI (which tools , hot reload ? ) , specifically in this case AdvancedUI.rml.
  • How is the performance in case of more complex UI layouts (hundreds or thousands of UI elements)
  • Lottie and SVG plugins were not integrated , is there a reason ?

So far I used the Urho3D native UI (with my own extensions) , I even used it in my fully fledged .NET 6 Unity like Game editor , it works quite well even for big scenes with 20000 nodes and more but I am always on the search to adopt new UI solutions

Eugene

I genuinely cannot find any good open-source UI solutions. RmlUI just sucks the least.
There is no solution on par of e.g. NoesisGUI and other propietary UIs.
For me it is important to have built-in animations, decent extensibility, mobile support and DPI-agnostic layouting.
RmlUI does all these things.

RmlUI repors errors and it has “visual debugger” to inspect DOM.
We also have hot reload for it. So I basically had it opened side by side, code and UI, and edited the layout in VSCode.

Below average. HTML/CSS renderer is heavy, so UI elements have big memory and CPU footprint.
Hundreds of elements will do, thousands will take noticeable chunk of RAM and CPU, especially in Debug builds.

For me it’s reasonable trade-off. I would rather render small UI with good quality and little code (animations and styles) rather than huge and bland UI.

RmlUI is obviously not for Editor or any kind of tooling, it’s just too much of an overkill. But it’s quite a good fit for game UI.

Nope, we just didn’t bother.

elix22

Yep ,
So far I didn’t find a good open source solution neither .
I guess I am “stuck” with Urho3D native UI (it’s not so bad actually)

Eugene

What kind of extensions? Also, how much of your UI ends up data-driven, and how much requires code written?
I have several fundamental issues with Urho UI, I wonder how you deal with them.

elix22

I added NanoVG support (SVG) , so basically I use it in conjunction with the native Urho UI
SliderZ (https://play.google.com/store/apps/details?id=com.elix22.sliderz)
is a good example of Native Urho3D UI + SVG UI

I always like to create UI programmatically (it’s my personal taste)
One of the drawbacks of the Urho UI is that the size is defined in pixels , so basically I adjust the size of UI elements programmatically when they are created based upon the Graphics size (Graphics.Height , Graphics.Width).
I also subclass/derive Native UI elements on the application side in order to add or modify some
behaviour.

In addition in case of My Game Editor I also play with UI.Scale , (I modify it with Ctrl ‘+’ and Ctrl ‘-’)
Will do some Youtube Demo video of my Editor once I will finish my vacation

Some UI samples

I have also implemented a fully working Avalonia UI solution inside Urho.Net context.
This framework is using a Microsoft style of UI creation (XAML) , but it’s not my cup of tea , I like to code my UI.

evolgames

Very happy with the progress I’ve made on this. Two connected peers (via steam lobby). Earlier post has more on the lobby. Added chatting, ready status, countdown, etc. This gif is after the game has started. Tested with one steam account on one pc on mobile tether internet and the other steam account on another pc on home wifi. No noticeable delay at all. Next step, characters, guns, fun stuff.
ezgif.com-gif-maker(1)

Steamworks p2p online multiplayer. Uses steams servers as relay, no nat punchthrough needed. Using a discontinued steamworks ffi lua wrapper (the guy actually removed the github/docs, no idea why, luckily I saved his documentation and the webpages first). Needed to adapt the wrapper to add more functionality though.

codewalkerdan

I started implementing ECS on top of Urho3D’s library (not modifying the source code: I need more experience) and I decided to tackle the Chracter Demo project.

Still a work in progress, but the collision events, nodes, animation ,and even inputs are being handled by the ECS

SirNate0

Sounds interesting. Is the goal just to lean ECS or are you attempting to improve performance? If so, how does that work when the underlying structure hasn’t changed?

codewalkerdan

The goal is to learn ECS and make a game with it as I go.

The attempt is to not improve performance but learning the other advantages of ECS that I heard of such is being more extendible and flexible in the long term as the project scope increases.

When it comes to performance there are tradeoffs, since there is conversion between entities and Nodes in some systems (such as physics, animation, creation, destruction) you do in more steps what the Urho3d standard can do, which means more code being executed. However, you also get gains in separating data from the Urho3D world as your game data is more agnostic. Thus, you can use the Job system to execute many things on separate threads (AI, state machines, movement without physics, etc).

Will the gains be better than the losses? I think it depends on the game.

The goal will be in the future to implement ECS inside Urho as an alternative and separate from the typical node system we have

Eugene

You are working on interesting task that I investigated at some point before.

Once, I tried to move entire Urho Scene-Component model to EnTT ECS, which turned out to be bad idea. ECS is great for ingame database, but it’s very inconvinient to have it in the engine. For example, I can easily use custom Component types from DLL in the Editor and they work just as well as builtin components, but it would be extremely hard to do this for ECS flat structures of EnTT. In general, ECS adds a lot of requirements and limitations on what Scene could be, compared to “fat components”. Moreover, Urho component design (with inheritance) just doesn’t map well on ECS design (composition).

Now I think that these two systems will have to coexist. How to make them coexist well is a big question, because synchroninzing two complex data structures is quite hard.
I wonder if you can share the code of your ECS integration, it would be interesting to know how exactly you sync Urho Scene and ECS.

Eugene

My Editor has customizable asset transformers which are primarily used to automatically import GLTF/FBX/Blend files to native Urho format, but they can be used for everything.
Here I have created sample transformer that automatically creates pixel art from images in folder.

codewalkerdan

So far the approach that is helping me a lot is that I created an EcsLogicComponentcomponent for the urho Scene. it becomes the main hub for ECS using EnTT. It helps a lot because all the update events that we can subscribe to in this component can be sent to all the systems that will process the ECS (without having a LogicComponent become a system), and it can also be the only receiver for node collision events and pass that to a any system that will handle the collision accordingly (like physics for example).

at first I considered a component with a Node pointer, but it proved to have issues. So I have a map where if an entity has a node or a node corresponds to an entity I can move between worlds; and it helps when I have a node collision event, I know which entity corresponds to.

Another thing is that not all entities/nodes conversions need to be updated all the time. I use tags(empty structs) to determine if they need to be updated every frame (Like the rigidbody of the character you control) or use an “update once” tag to perform the conversion once and done (Like spawning a big rock). Also, I use the Update/FixedUpdate to update from ECS to Node and PostUpdate/PostFixedUpdate to update ECS from Node (maybe on EndFrame would work better, I don’t know).

When it comes to systems, so far I have the system that updates Nodes <=>ECS to be the last system, after physics, inputs, animations, etc. The good thing about EnTT is that it works wonderfully with Urho3D’s Job System for multi-threading, so I plan to have the system that can operate using work queues first.

I am still making changes to my implementation. but as I am learning and testing, I am happy with what I have found so far. For example, I found that I can implement a system that can handle btDynamicCharacterController without creating a character controller logic component. I will post an update once I have it working

codewalkerdan

First test using btDynamicCharacterController on ECS. Needs some tweaks

I also noticed something peculiar when you are climbing a slope that you should not climb using the edge between triangles… Reminds me of climbing mountains in Skyrim

evolgames

2d rpg with world generation. Here it makes some maps of 1,048,576 square meters. But it can easily do ten times that. No physics engine used, and the game dynamically loads so frame rate is generally 1700fps in game no matter the map size. I’m going to make an option for the map to be unlimited, so it’ll just keep extending beyond the boundaries of the preview forever (using the same procedural perlin noise seed).

For now, I just made some cool waves. I always liked the idea (but not implementation) of dwarf fortress adventure mode so this is kind of inspired from that. I’ll make some spawned enemy crabs or something next.

ezgif.com-gif-maker(3)
ezgif.com-gif-maker(2)

rku
Nerrik

First rendered take / scene of the trailer of my game 18seconds.

Rendered with self programmed Urho3D - Renderer / Pointcloud Particle Emitter.
Millions of Particles and small Planemeshes. One frame rendered in ~50 seconds.

Its just a Prototype (very very early version of that take) and will be improved and overworked with filters, better dragonfire and more love :wink:

Music from a friend of mine.

Lady / Dragon scream from https://www.zapsplat.com

Eugene

Still working on better IK.
Now I have to do something with spine and arms…
I’m unsure if I will manage true “full body IK” tho.

Eugene

It looks funny so I’ll share it here too.
(working on spine IK)

count0

Almost ready for Bullet Time ^^

Eugene

IK animation from only 6 position tracks and 1 rotation track, compared to reference.
I am… happy with the result? I think the basic minimum for IK is ready now.

evolgames

More of that rpg I’m doing
ezgif.com-gif-maker(8)

1vanK

IK animation from only 6 position tracks and 1 rotation track, compared to reference.
I am… happy with the result? I think the basic minimum for IK is ready now.

Good job. When you’re done, I’ll port your work to Urho3D.