Fully Destructible Levels - New website and domain!

A place to show off your latest screenshots and for people to comment on them. Only start a new thread here if you have some nice images to show off!
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13

Post by nikki »

PolyVox wrote:
nikki wrote:Nice! Is it possible to break pieces off the castle and make them be affected by physics too?
I agree this would be really cool and I am planning to try it. Ken silvermans Voxlap engine allows this so it should be possible. It's such an obvious thing to expect that it looks noticably wrong when it doesn't happen. Not sure when I expect to do it though...
Yeah, that's why I noticed it. :)

Nice work! Keep going! It looks like a nice technology to steal for my next game. :twisted:
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

nikki wrote:Nice work! Keep going! It looks like a nice technology to steal for my next game. :twisted:
Cool, will that be GraLL 2? Or you have somehthing different planned...
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13

Post by nikki »

PolyVox wrote:
nikki wrote:Nice work! Keep going! It looks like a nice technology to steal for my next game. :twisted:
Cool, will that be GraLL 2? Or you have somehthing different planned...
I have an idea of a game where there are two (or more) dimensions (as in parallel worlds), where you switch between the dimensions to get to an objective.

For example, there's a wall in dimension A, and its not there in dimension B. So, you switch to dimension A to B to get past it. This can have lots of twists, such as enemies becoming friends in another dimensions, moving platforms not working in other dimensions, places where you can't change dimensions... there are so many possibilities! Maybe you'll even have to shoot a projectile and keep changing dimensions as it goes through a set of walls. The changing of dimensions will be really frequent, even as you're moving, falling, jumping...

But, right now, I'm pretty busy with school, so I'm learning more about shader programming, reading books and other stuff related to game design (art or programming), or even computer programming in general (like design patterns) before actually starting work on the game. That way, I'll be better prepared for it.
Last edited by nikki on Mon Mar 23, 2009 10:33 pm, edited 1 time in total.
User avatar
twilight17
Goblin
Posts: 297
Joined: Thu Aug 23, 2007 3:47 am
x 1

Post by twilight17 »

nikki wrote: I have an idea of a game where there are two (or more) dimensions (as in parallel worlds), where you switch between the dimensions to get to an objective.

For example, there's a wall in dimension A, and its not there in dimension B. So, you switch to dimension B from A to get past it. This can have lots of twists, such as enemies becoming friends in another dimensions, moving platforms not working in other dimensions, places where you can't change dimensions... there are so many possibilities! Maybe you'll even have to shoot a projectile and keep changing dimensions as it goes through a set of walls. The changing of dimensions will be really frequent, even as you're moving, falling, jumping...

But, right now, I'm pretty busy with school, so I'm learning more about shader programming, reading books and other stuff related to game design (art or programming), or even computer programming in general (like design patterns) before actually starting work on the game. That way, I'll be better prepared for it.
Ummm kind of already been done:
http://www.addictinggames.com/shift.html
http://www.addictinggames.com/shift2.html
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

nikki wrote:I have an idea of a game where there are two (or more) dimensions (as in parallel worlds), where you switch between the dimensions to get to an objective.

For example, there's a wall in dimension A, and its not there in dimension B. So, you switch to dimension B from A to get past it. This can have lots of twists, such as enemies becoming friends in another dimensions, moving platforms not working in other dimensions, places where you can't change dimensions... there are so many possibilities! Maybe you'll even have to shoot a projectile and keep changing dimensions as it goes through a set of walls. The changing of dimensions will be really frequent, even as you're moving, falling, jumping...
I think thats a really cool idea! Have you thought about what style of game it will be? E.g. platformer, first-person, top-down, etc?
That's a really cool concept, though too hard for me :D It's a long way short of what nikki is describing though - for a start it's only 2D and in black-and-white. But it does show how much fun a simple concept can be.

If yu haven't seen it, you should also check out Fez

But neither of these are showing different worlds, they are showing different views on the same world.
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13

Post by nikki »

PolyVox wrote:I think thats a really cool idea! Have you thought about what style of game it will be? E.g. platformer, first-person, top-down, etc?
I think it will be first-person.

For a good idea of the concept in the way I'm talking about it, check out the game 'Dim' on this page (check out the 'Jumper' series too, these games have inspired me a lot, and have the best level design I've ever seen):-
Matt's Games
Peeling
Gnoblar
Posts: 5
Joined: Fri May 02, 2008 3:52 pm

Post by Peeling »

PolyVox wrote:Hmmm, I see. I can understand why they do that - working with lattice deformations is common in many 3D modeling packages so it was probably more natural to them that sculpting the individual voxels. However, it not something I was really planning to implement because (as you noticed) it gets a lot more complicated.
True - but don't forget, most of the additional complication was imposed by our target platform. For instance, if you can regenerate the geometry without timeslicing, or simply retain the old geometry until the new geometry is ready, you can do your collision with the geometry rather than the raw voxel data - at which point deforming the lattices makes no difference at all.
What tools were the artists using for making the voxel models and applying the deformations? Presumably something developed in house? I was instead planning to have objects modeled in a standard package, placed into the world, and then voxelized.
Yes, I wrote an in-house editor. Your plan does have some drawbacks:

1. Voxelised polygonal models simply won't look like the originals. Even if you use prohibitively high voxel densities, the lighting won't look right because you've only ever got the 90/45 angles of voxel corners to work with.

2. You can't hope to animate models converted in this fashion. Even if you have multiple 'frames' of voxel animation you can't extrapolate damage incurred by one frame across the rest.

It's a lot more work, but creating a proper editor and supporting lattice deformation - including animated lattice deformation - will make it possible for your users to get the absolute most out of the engine.
But it sounds like your system does have a limitation - presumably you can't have an object which is a different material inside to outside. So you can't blast through a brick wall and find there is earth behind it? Or shoot a concrete statue and discover it has a steel core?
Sure you can - just embed an indestructible 'core' lattice within the outer one.
Regenerating data over multiple frames is also something I have considered but haven't needed yet. I guess I have the advantage that I'm targeting a considereably more powerful machine. There's a lot more speed I can squeeze out of my marching cubes implementation but it may turn out that the bottle neck is in uploading the data to the graphics card.
Yeah, you've got a lot more headroom. 32mb isn't much, not when it has to accommodate the whole of the rest of the game graphics and code as well :)
Shadowing is a very interesting issue which I haven't addressed yet. But I'm basically planning to use one of the standard approaches (probably shadow maps) and I'm expecting it to 'just work' on fully dynamic scenes. Is this naive? Or were you precomputing the lighting in order to get higher quality or a certain artistic feel?
No, I'm sure your method will be fine - again, you're targeting a far higher spec. The PS2 didn't even have multitexturing, so we had to use vertex lighting (and hence vertex shadowing).
Actually I have thought about computing the lighting by tracing rays through the voxel data and I think it does have potential. The first article in GPU Gems 3 does a voxel based landscape and uses raytracing in the volume data to compute ambient occlusion. I think it will look nice, but I'm concerned that recomputing the lighting whenever part of the world is destroyed will be too expensive for the CPU.
Don't be afraid to timeslice different jobs differently. I timesliced the geometry regeneration in big chunks, with the recalculation of shadows following at a more leisurely pace. You could easily do the same, and simply 'fade' between the old and new when the new is finished.

I'm glad to have been of some assistance :)
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

Peeling wrote:1. Voxelised polygonal models simply won't look like the originals. Even if you use prohibitively high voxel densities, the lighting won't look right because you've only ever got the 90/45 angles of voxel corners to work with.
I do have various ideas for smoothing the models and adding detail via bump/relief mapping, but I accept your point. Though really I think the bigger problem is the lack of control over UV coordinates. I guess the extent to which this matters depends on the type of game it is used in.
Peeling wrote:2. You can't hope to animate models converted in this fashion. Even if you have multiple 'frames' of voxel animation you can't extrapolate damage incurred by one frame across the rest.
Well worlds generally won't be animated, with the exception of lifts, doors, etc. These probably should be seperate volume (whether lattices or 'regular' volumes). Other types of movement (swaying, etc) could possibly be emulated in the vertex shader, though of course then the physics is more tricky.
Peeling wrote:It's a lot more work, but creating a proper editor and supporting lattice deformation - including animated lattice deformation - will make it possible for your users to get the absolute most out of the engine.
Basially I can see the appeal of a lattice based approach in terms of being artist friendly and allowing a good degree of control over the world creation process. But I suspect the resolution of the resulting world will have to be lowerthereby giving less granularity to the destruction which can be achieved.

I realise you can't say your world was X by Y by Z, but can you give an indication of how many voxels you were using?

That said, I don't see why the two approaches can't coexist in the same engine, so I will think about it for the future. Perhaps my approach could be used for the landscape, etc, and yours for things like buildings. With careful design it should be possible to abstract away the differences in implementation.
Peeling wrote:I'm glad to have been of some assistance :)
Thanks again! The technicalities of the project haven't been discussed with many people because it's not a widely used approach. But, when I have discussed it, it's always been productive :D

Btw, how did you find my project? I'm curious as to how widely it's being seen by people in industry. Though the real promotion starts in a few weeks when my website goes live.
Peeling
Gnoblar
Posts: 5
Joined: Fri May 02, 2008 3:52 pm

Post by Peeling »

PolyVox wrote:Basially I can see the appeal of a lattice based approach in terms of being artist friendly and allowing a good degree of control over the world creation process. But I suspect the resolution of the resulting world will have to be lowerthereby giving less granularity to the destruction which can be achieved.

I realise you can't say your world was X by Y by Z, but can you give an indication of how many voxels you were using?
Hmm. If I had the code in front of me I could answer that very easily, but I don't. I think the largest permitted individual lattices were about 30x30x20, or 18000 voxels, but most of the time there were a large number of lattices containing substantially fewer.

I think if we were targeting modern PC hardware rather than the PS2, we could comfortably subdivide all the lattices at least twice. If you look at the screenshots for Mayhem you can imagine the level of detail that would permit - and again, because it's Worms there's no culling possible. We had to operate on a worst-case basis at all times: the whole landscape visible at once. If you're embedding voxels within a traditionally modelled context you'll be able to be a lot more clever about what you draw.

That said, the artists often deliberately scaled the lattices up to give particular effects, like chunky brick walls.
That said, I don't see why the two approaches can't coexist in the same engine, so I will think about it for the future. Perhaps my approach could be used for the landscape, etc, and yours for things like buildings. With careful design it should be possible to abstract away the differences in implementation.
Obviously, a non-deformed lattice is just a special case, so if that's what the artist wants he can just use it.
Btw, how did you find my project? I'm curious as to how widely it's being seen by people in industry. Though the real promotion starts in a few weeks when my website goes live.
I can't remember exactly; I think I was taking a trip down memory lane doing searches for Outcast running on Vista.
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

*** Update - Website Launched***

This is just a quick note to say I have finally launched my project website. Please go to http://www.thermite3d.org and let me know what you think. Now that I have a central location for the project I intend to submit a GameDev 'Image of the Day' in the next few days and hopefully generate some more publicity and interest.

[Edit:] Of course, I will continue to post updates here as well.
User avatar
sinbad
OGRE Retired Team Member
OGRE Retired Team Member
Posts: 19269
Joined: Sun Oct 06, 2002 11:19 pm
Location: Guernsey, Channel Islands
x 66

Post by sinbad »

Congrats on the new website! Looking good.
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

Thanks :) Though of course I owe most of it to Joomla!
DarkPikmin
Gnoblar
Posts: 4
Joined: Fri Jun 06, 2008 6:47 pm

Post by DarkPikmin »

Ahh, sweet engine man! one question though, does it still support implementation of additional addons and code? Like say could I modify the PolyVox and Bullet to include a DMM mockup?
User avatar
nikki
Old One
Posts: 2730
Joined: Sat Sep 17, 2005 10:08 am
Location: San Francisco
x 13

Post by nikki »

Did you use the OgreBullet wrapper for the physics, or did you write your own?
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Post by PolyVox »

DarkPikmin wrote:Ahh, sweet engine man! one question though, does it still support implementation of additional addons and code? Like say could I modify the PolyVox and Bullet to include a DMM mockup?
There are really two parts to the system. 'PolyVox' is the underlying library which handles the generation of the meshes from the volume data. 'Thermite' is the engine which takes the data from PolyVox and feeds it into Ogre and Bullet.

You can take the PolyVox library and integrate it into an existing engine (providing you adhere to the GPL *not the LGPL*). Actually, only today I started writing a simple example of how to feed the data into OpenGL (not Ogre, Bullet, etc). PolyVox is become quite stable now, though Thermite is still very experimental.

That said, PolyVox is not DMM. It doesn't handle any kind of physics, stress, fracturing, etc, and it's quite different internally. But if you want dynamic environments rather than DMM in particular, then it could be useful.
DarkPikmin wrote: Did you use the OgreBullet wrapper for the physics, or did you write your own?
Both! The data which comes from the PolyVox library is never turned into an Ogre mesh - it is loaded directly into index/vertex buffers and also sent directly to Bullet. On the other hand, objects within the scene are Ogre meshes and so OgreBullet is used to keep the data synchronised with Bullet.
db123
Halfling
Posts: 78
Joined: Wed May 21, 2008 5:55 am

Post by db123 »

Thanks a lot for your help !!
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

***** Update - New Release *****

Post by PolyVox »

Once again I've let this thread go for many months without posting, but I have still been working away. And today I'm hapy to release a new demo! So what's new?
  • New game engine framework based on Qt. I have also released the framework separately here
  • Ability to load scenes from .scene files. Only a few xml node types are currently supported, but there is an additional 'volume' xml node type to place the volumes into your scene. In the previous demo the scene and objects were hard-coded.
  • Support for sky boxes (Credit to Hazel Whorley for the one in the screenshots)
  • Support for dynamic shadows via shadow maps. This is actually turned off in the demo as it needs some work but you can see it in the castle screenshot below.
  • New Level-Of-Detail solution. Move the camera a long way back to see this in action. May still need some work!
  • A heightmap to volume converter for creating destructible lansdscapes from heightmaps.
  • Some very basic gameplay, allowing you to control a cannon and destroy the landscape.
And some new screenshots:
Image
Image
Image
Image

You can get the demo here: http://www.thermite3d.org/releases/Ther ... ch2009.zip
Old demo is still available: http://www.thermite3d.org/releases/Ther ... csDemo.zip

The camera is controlled by W,A,S and D and mouse to look around. In the old demo you can destroy the castle with the left mouse button, while in the new demo you have to destroy the terrain using the cannon on the hill.

I have now started working with an artist with the aim of actually getting a game built from this. Some kind of turn based strategy (to keep things simple) which will hopefully be finished by the end of the year.

My attention now really has to turn to the quality of the graphics. There is a lot I can do here, and I'll probably start by increasing the resolution of the volumes. They are currently 256x256x256, and my aim to to support 1024x104x1024. Also need to add VSM shadows, displacement mapping, PN-Triangles, etc...

Rememer, the project has it's own website now at http://thermite3d.org. Keep an eye on that for the latest updates and feel free to post in the forums.
User avatar
yapdakilla
Goblin
Posts: 207
Joined: Fri Nov 23, 2007 8:13 am
Location: Malaysia
x 16

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by yapdakilla »

Awesome stuff. are you planning to complete this project into a full game? Could be the next Worms type game. Only in 3D ! :D
Image
http://TrackVerse.net

Nakama Studios Sdn. Bhd.
http://nakama-studios.com

Liquid Rock Games Sdn. Bhd.
http://www.liquidrockgames.com
Penguin
Halfling
Posts: 83
Joined: Fri Feb 15, 2008 6:39 pm

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by Penguin »

Depending on the license and implementation, I think I'm going to try to use it in my FPS project. It would be fun being able to build new entrances..
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by PolyVox »

yapdakilla wrote:Awesome stuff. are you planning to complete this project into a full game? Could be the next Worms type game. Only in 3D ! :D
Yep, that's the idea. Probaly some kind of turn base strategy with tanks/artillery. Exact details to be decided. Eventually I'd like to make a Descent-style game with 360 degree freedom of movement and cool destructible environments. Bu we're starting small :)
yapdakilla wrote:Depending on the license and implementation, I think I'm going to try to use it in my FPS project. It would be fun being able to build new entrances..
The license is GPL. The implementation still needs some work (I've been more concerned with getting the features in for the artist I'm working with to use) but this will stabilise over the next few months. You can take the whole engine as-is, or alternatively the core code for maintaining the volumes and generating the geometry is available as a separate library for integration into your own engine.
Seboss
Gnoblar
Posts: 1
Joined: Tue Mar 24, 2009 1:33 pm

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by Seboss »

Eww I'd love to see this technology put to work in a XCom like game.
Really amazing stuff.
User avatar
jorrit5477
Gremlin
Posts: 181
Joined: Thu Feb 09, 2006 1:48 am
Location: The Netherlands

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by jorrit5477 »

Looks cool! Worms 3D is exactly what comes to mind as soon as I saw the canon.
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by PolyVox »

Thanks guys! The main reason for going for a turn based strategy is ease of implementation - for me the engine is more important than the game but at the same time it's important to test it in a real world scenario. But I'm sure there are plenty of more interesting concepts which the technology can be used for :-)
alienskull
Kobold
Posts: 33
Joined: Tue Jul 31, 2007 10:21 pm

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by alienskull »

you could make 'Worms 3D' if you could get licensing permissions...
User avatar
PolyVox
OGRE Contributor
OGRE Contributor
Posts: 1316
Joined: Tue Nov 21, 2006 11:28 am
Location: Groningen, The Netherlands
x 18

Re: Fully Destructible Levels - Updated March 2009 - New Demo

Post by PolyVox »

I think I'd struggle to get permission for that. But if you look a few pages back there are actually some posts from the guy who wrote the engine for Worms 3D :)