Horde3D

Next-Generation Graphics Engine
It is currently 18.01.2018, 15:08

All times are UTC + 1 hour




Post new topic Reply to topic  [ 7 posts ] 
Author Message
 Post subject: Northern War
PostPosted: 29.09.2009, 23:40 
Offline

Joined: 01.06.2009, 11:15
Posts: 14
Hello

Last summer we (bunch of students) took a task to implement a little game-demo based on 1700's scandinavian history. We had a schedule of 3 months and five human resources with very little to moderate game programming experience. After many hours and countless cups of coffee and energy drinks, we finally managed to get something semi-decent on the screen. See and judge yourself: http://www.youtube.com/watch?v=WGAc_szIX4s

:wink:

Beta 3 was just released when we started, and just a week or two before finishing the work, we ported the code to beta 4, simply because of performance issues. Beta 4 more than doubled the framerate, but came with a share of it's own problems (as seen here, here and here)

Overall Horde3D behaved very well, and it was (mostly) a pleasure to work with. However, here are couple of obstacles we encountered and a few suggestions for the future:

- Horde could probably use a few more test-cases/demos so removenode etc bugs would be spotted earlier, and atleast would not make to official releases.

- Static geometry batching would be *extremely* useful. Couple of times our 3d-artist had to combine several meshes to one in 3ds max, simply because batch-count grew up too high, even for OpenGL. It could be something as simple as Ogre's StaticGeometry class (just combining multiple vertexbuffers to single one).

- Better 2d/overlay handling routines. showOverlay() is far from ideal :D

- Billboards!

- Performance could still be better, I believe?

Also more documentation of hordes internals and how to program extensions would be useful and help people to contribute to the Horde3D project.

Other than that, great work!!!
:)


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 30.09.2009, 02:16 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
torsk wrote:
Last summer we (bunch of students) took a task to implement a little game-demo based on 1700's scandinavian history. We had a schedule of 3 months and five human resources with very little to moderate game programming experience. After many hours and countless cups of coffee and energy drinks, we finally managed to get something semi-decent on the screen. See and judge yourself: http://www.youtube.com/watch?v=WGAc_szIX4s
Looks very nice!
Quote:
- Billboards!
These are high on my list of priorities, but unfortunately I haven't been able to dedicate any time to Horde lately.

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 30.09.2009, 06:52 
Offline
Tool Developer

Joined: 13.11.2007, 11:07
Posts: 1149
Location: Germany
Awesome work!!! And thanks for doing it with Horde3D.
We're always happy if someone contributes to the community and even if it's only by doing bug reports :-)
Concerning demo cases you are definetly right. We should add more of them, the only problem is that we don't have so much time anymore for Horde3D
as we had when we were at the university two years ago. So we have to concentrate on the engine itself. Maybe someone in the community want's to write some
simple demos that can be added to the project.


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 01.10.2009, 20:21 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
Impressive work! And thanks a lot for your little postmortem.

torsk wrote:
- Horde could probably use a few more test-cases/demos so removenode etc bugs would be spotted earlier, and atleast would not make to official releases.

Yeah that is true. However, at least we usually try to be quick in fixing bugs as soon as someone reports them.

torsk wrote:
- Static geometry batching would be *extremely* useful. Couple of times our 3d-artist had to combine several meshes to one in 3ds max, simply because batch-count grew up too high, even for OpenGL. It could be something as simple as Ogre's StaticGeometry class (just combining multiple vertexbuffers to single one).

What did you batch together? Whole parts of the world (e.g. a group of trees) or just meshes for single entities (e.g. a single character or building). A solution different from the static geometry batcher is to use real instancing. Horde could detect automatically if many small objects with the same geometry are drawn and apply instancing in this case. However, the OGL instancing extension is quite new and we need to check where it is already available. Another thing to consider is that draw calls have still a considerable overhead in Horde itself which will be optimized away in the future.

torsk wrote:
- Better 2d/overlay handling routines. showOverlay() is far from ideal

What would you like to have here? Just being able to draw a bunch of arbitrarily shaped 2D polygons?

torsk wrote:
- Billboards!

Not a perfect solution but simple billboards can be emulated with a particle system which has just a single particle that does not move.

torsk wrote:
- Performance could still be better, I believe?

Right, there are still many opportunities to optimize Horde. The models represented as scene graphs cost more performance than "atomic" models and the whole string based material and context handling can be optimized (e.g. by using hashes or material class flags instead of class names). We will add some better spatial culling and there are also many opportunities on the GPU side (e.g. using 2 instead of 3 tangent space vectors, light volumes instead of 2d quads for deferred shading, etc.). Horde is certainly not slow at the moment but it has still a lot of potential to get really fast :)


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 02.10.2009, 11:05 
Offline

Joined: 01.06.2009, 11:15
Posts: 14
Quote:
torsk wrote:
- Static geometry batching would be *extremely* useful. Couple of times our 3d-artist had to combine several meshes to one in 3ds max, simply because batch-count grew up too high, even for OpenGL. It could be something as simple as Ogre's StaticGeometry class (just combining multiple vertexbuffers to single one).

What did you batch together? Whole parts of the world (e.g. a group of trees) or just meshes for single entities (e.g. a single character or building). A solution different from the static geometry batcher is to use real instancing. Horde could detect automatically if many small objects with the same geometry are drawn and apply instancing in this case. However, the OGL instancing extension is quite new and we need to check where it is already available. Another thing to consider is that draw calls have still a considerable overhead in Horde itself which will be optimized away in the future.


Yes we batched groups of trees and houses. Real instancing would of course be great, but only if majority of hardware supports it... With NVIDIA cards there probably aren't much problems, but it looks like ATI is less and less interested in supporting OGL nowadays.


Quote:
torsk wrote:
- Better 2d/overlay handling routines. showOverlay() is far from ideal

What would you like to have here? Just being able to draw a bunch of arbitrarily shaped 2D polygons?

Something which allows easier manipulation of 2d sprites and such. Perhaps 2d polygons yes, then you could go easily rotate/skew bitmaps and even do a modern 2d spaceshooter/platformer with horde :-) It also annoys me that you are forced you to go through material system for load and draw each single bitmap (and create material file for each and so on), but I understand that's to keep resource handling consistent..

Quote:
torsk wrote:
- Performance could still be better, I believe?

Right, there are still many opportunities to optimize Horde. The models represented as scene graphs cost more performance than "atomic" models and the whole string based material and context handling can be optimized (e.g. by using hashes or material class flags instead of class names). We will add some better spatial culling and there are also many opportunities on the GPU side (e.g. using 2 instead of 3 tangent space vectors, light volumes instead of 2d quads for deferred shading, etc.). Horde is certainly not slow at the moment but it has still a lot of potential to get really fast :)

Beta 3 -> Beta 4 performance increase was excellent, and I hope we will see similiar leapforward on beta 5 then too;-)

Oh btw, talking about features, how would you implement projective decals with horde3d at the moment? I.e. mouse-coordinated crosshair on the terrain, or bloodstains on the character meshes etc? We were looking for a ways to project some stuff on a snowy terrain, but couldn't figure out a straightforward method enough, so idea was then ditched because of lack of time.


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 03.10.2009, 11:05 
Offline
Engine Developer

Joined: 10.09.2006, 15:52
Posts: 1217
torsk wrote:
With NVIDIA cards there probably aren't much problems, but it looks like ATI is less and less interested in supporting OGL nowadays.

I think it is getting a lot better again. They added many new extensions, at least for their latest products. See here: http://www.geeks3d.com/opengl-extensions/

torsk wrote:
Oh btw, talking about features, how would you implement projective decals with horde3d at the moment?

Decals are a non-trivial thing. Usually you have a rectangular polygon that you need to project along a ray into the scene. This gives you a rectangular prism and you need to detect where this prism intersects the world geometry first. The intersected polygons are extracted and clipped against the prism. After that you can adapt the texture coordinates and the new geometry can be rendered on top of the existing. This works for static objects, dynamic or even skinned objects make things more complicated.
Since you need a lot of control for creating decals, I think they should be implemented as an extension (special scene node) in horde and not on the application side. However, jimbo has already implemented simple decals for his project. Maybe he has some more pointers for you.


Top
 Profile  
Reply with quote  
 Post subject: Re: Northern War
PostPosted: 03.10.2009, 14:15 
Offline

Joined: 22.11.2007, 17:05
Posts: 707
Location: Boston, MA
marciano wrote:
torsk wrote:
With NVIDIA cards there probably aren't much problems, but it looks like ATI is less and less interested in supporting OGL nowadays.

I think it is getting a lot better again. They added many new extensions, at least for their latest products. See here: http://www.geeks3d.com/opengl-extensions/
My ATI card has full GL 3.1 support as of the latest drivers, and most of 3.2 :)

_________________
Tristam MacDonald - [swiftcoding]


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group