rainbow six siege engine This is a topic that many people are looking for. bluevelvetrestaurant.com is a channel providing useful information about learning, life, digital marketing and online courses …. it will help you have an overview and solid multi-faceted knowledge . Today, bluevelvetrestaurant.com would like to introduce to you The Art of Destruction in Rainbow Six: Siege. Following along are instructions in the video below:
In this 2016 GDC session, Ubisoft’s Julien L’Heureux discusses the process of developing and integrating Realblast, a destruction engine, as a core gameplay feature to Rainbow Six: Siege, a multiplayer first person shooter, and all the technical hurdles encountered along the way.
Register for GDC: http://ubm.io/2gk5KTU
Join the GDC mailing list: http://www.gdconf.com/subscribe
Follow GDC on Twitter: https://twitter.com/Official_GDC
GDC talks cover a range of developmental topics including game design, programming, audio, visual arts, business management, production, online games, and much more. We post a fresh GDC video every day. Subscribe to the channel to stay on top of regular updates, and check out GDC Vault for thousands of more in-depth talks from our archives.
Hi. Everyone i would remind you to shut down your devices. Or you demo released.
Released. And also if you can answer. The survey.
After the talk would be interesting right you guys all ready okay alright. So my name is julian uber. And i’m a technical lead at ubisoft montreal.
And this is the art of the destruction. So how many of you have played rainbow six alright well that’s pretty good so as you probably know there’s a lot of instruction. There in blue six each and i mean did literally the core feature of the game as far as gameplay is concerned so how do we actually make it so that’s a lot of the things happening and i’ll cover that and you know we start from pretty humble beginnings and made it into a really nice feature so let’s start so what’s procedural destruction.
Well first thing it can be a lot of different things different techniques. But let’s just generalize. It and say it’s a change in this ticket of an object that’s really generated at runtime.
So you can have a different input different output. So the outcome can be really unique. Which is totally in a position to be fragmented destruction.
Which most games do where the outcome is really fixed. I mean you have a face that breaks. It’s always going to break the same always going to be the same pieces.
Whether you ram it with a car a baseball bat or you know put a bullet. So let’s go back to our story in late 2012. We were given the mandate to come up with priscilla glass for rainbow six.
So that was we already had done like a lot of destruction before. But you know we came up with something like this so. This is looks pretty simple.
But we’re really creating new geometry at run time it looks good we change normals with light decals that was you know three years ago. Or more in that that really was a changing point for the project. They they really liked it so we generalized to other materials.
And then they kind of clicked. Wow. We could actually have a game based instruction.
So do you have something they gave some some resources and we did a concept tech demo in early 2013. Which is very cool. And it’s more or less place and montreal studio.
So there was really a benchmark for distraction for a really long time internally a lot of people worked on it and i mean doesn’t look very good for something that’s three years old it’s a year with you know we with boolean 3d instruction at the time we’ve wood breaking bricks breaking with windows floors ceilings what have you explosions bullets love particles that looks very cool of course pre fragment destruction. I mean you might as well do it. And that worked really nicely of course at that time that was in 60fps that wasn’t robust that was not online.
We had literally no tools for it so we had a lot of work to cover to make it in our real feature you know didn’t run awhile. But you get the idea i mean you started with something super clean you should shoot destroy and you end up something like this it does really strike. The imagination a bit right so all right fast forward to the late 2015 leaf release rental six it’s a pretty good success it worked really nicely so the actual tech and you know the concept.
Didn’t change a lot in those three years right or in nearly three years. But we’ve a lot of steps to do to make it work. So that’s why i’m actually going to talk about in this talk right so first i’ll talk about the real blast.
Which is really the team the product everything then you know our destructions made rainbow six siege. Now you could actually think about your your potential distraction. Solution.
Or you know whatever feature you want to do would actually interact with the game then really dive in our you know variety of destruction technology and then talk about performance and online. Which are really two two topics for rainbow six and finally conclude all right so real last for a really small team mostly programmers. We’ve been at it for a bit more than five years now and we’re a part of the technology group which i will come to a bit later first out shout out to alexis we man that me a lot for a presentation and i mean he’s my esteemed colleague.
So i worked with him every day. Alright technology group that’s some kind of separate division inside ubisoft where we do rnd and develop common technologies and promote sharing between productions.
So we build up expertise on you know destruction dynamic navmesh you are networking animation a lot of different things which i mean in the end we accumulate expertise and we essentially do mandates and productions and in the end make bigger better gains. So real blast. The product itself is thus a complete destruction solution.
We’ve preforming to destruction receive destruction in runtime. So of course in the engine. But there’s also some tools behind that so everything that used to generate the content like fragmentation tools.
Which can use in in max or amaya. We have a distraction properties editor. Which is used to set up you know let’s say what kind of physics you want to use what kind of principle technique you want to use and finally an external debugger.
So we can keep track of whatever is that thing because as you might know if you try to debug you know complex geometry all the rooms and you don’t see anything it’s really painful. But the last three points. I’m not actually going to talk about in this presentation.
Because that would be a bit wrong. But we are going to cover that in ubisoft booth at for today. If you guys are interested all right collaborations as i said before we’ve been at it for a while so we did the mandates on a few productions.
Some worked out some didn’t but we really first ship destruction with ac 4 black flag with the naval forts and it was it don’t work nicely too liked it and then recently of course. It’s a core feature of randall. 6.
Siege. So let’s ivan to rainbow. Six siege.
Furrows. Who didn’t play the game. Let me summarize.
It really simply you have attackers on one end. They want to get in neutralize accept or rescue. The hostage.
It used means like destruction to get in and do everything and then you’ve defenders on one end on the other hand sort that one up block dispatcher. The attackers invaders and funnel so there’s really a nasa metric gameplay terrorism. We’re on the one any of destruction is a gameplay opportunity so you can actually make paths that you can go true or you know maybe you can make murder oles or kills or you can shoot your walls.
And on the other set. The other end you can you know barricade reinforced walls to prevent your opponent’s to go true. So it really opens up opens up a lot to gameplay and makes it fresh.
So that every game is really different so in practice in the game. The the environments are really like destructible elements or you know there’s only four isn’t but they’re really prevalent in game. So we have trapdoors three control a verticality of levels.
If barricades that you know they don’t block a lot. But they’ll block visibility and make a lot of sound are broken line of sight floors. So these you break.
And you can actually shoot true or send grenades true. But you can the player will never go to be able to go true and of course you’re reachable walls. Which is definitely the iconic destruction of rainbow.
Six things so okay. I mean you think you’ve use your destruction tag. That’s on simple right.
That’s it i mean it worked three years ago. Let’s just put it in game. Yeah.
That’s not that simple so let me drink a bit all right in reality does come out at a pretty ice price because you need if you want to go with coherence and of environments. That work for your players you need to model destruction rating. Because you’ll be able to see through walls.
You’ll be able to see inside cupboards. So what’s there in your cupboards.
So it really ends up with a lot of destruction creating some some stuff you wouldn’t see before you need to model. Now. So that’s a lot of more work.
It’s your artist thing to do and they need to do it in a good way so that it’s physically valuable in your project. So you need to do some artists ringing because it’ll change their modeling style. You need to know a bit more about physics.
Because sometimes they don’t and then it’s also a really huge game changer for designers you’ll need to come up with a visual language for instruction. But at the same time it’s a really cool new variable and you already can play with and it finally of course. Nothing’s ever free it does got something it’ll cost more in the physics side because you’ll more dynamic objects.
And it’ll cost more in a rendering side for plus. Every reason. Which i’ll come back to later and finally your runtime instruction itself.
It’s not gonna be free. So. Let’s say you still want to bite in and you do it.
Then how do you actually interact with the other systems in the game. So one way to do it. Which is the way we did.
It is really simple. I mean the game feeds you inputs right and that drives destruction destruction itself. It can be some kind of black box.
But in the end you can make it so that your output. The information you give back to the game. It’s the structure in a way that everyone every stakeholder as the information it needs to do its job.
So it can be you know what broke what weapon was used where are the parts. Now and all kind of details. So you can feed that information for sound effects.
Ai. And for example. Just for ai.
Navigation. You’ll need to update your own avatars broken or if you just breached your wall. You don’t want your ai to be stuck and waiting by an open wall.
Right also if you make your information good enough. Well. It candis for everything is also can be used for ai.
Visibility. You can make sure that you don’t over recast for nothing. So you don’t make your ai.
Too smart. So it can attach you through off at any moment. And then it’s also used for a song preparation.
Which is a really huge feature in rainbow six siege so depending on you know parallel openings and in walls. It’ll change the acoustic or rooms. I’d it’s a really important feature of a game because players really rely on that and then they rely on the i call even everything the information.
We give them and finally well you know it’s a game every gameplay programmer is gonna expect some kind of behaviors sometimes right you want something that will break all the time and not rely on chance or you know pursue obstruction you need to feed that you need to address that kind of problem because we’re making a game. It’s not just attack. It’s it’s a game right so.
There’s a lot of things you need to think about but in the end. If you do that so it’s really manageable so alright a bit more about their real tech. This will be pretty high level of course.
I mean if you do instruction technology. It could be super different it could be super similar.
But in the end like three five models are pretty sooner. So our basic concept is simple objects that are made of different parts should be model differently or i mean separately in your objects. That i guess it does seem logic you don’t grow glass out of trees or you know everything’s made of different parts.
And you can put a lot of effort and intelligence in your materials. And then you know once everything small in different parts. It’s super easy to the fragmentation will be coherent.
That will make sense physically and on that topic fragmentation itself it creates a are key right you start from something not broken. And then you break it in multiple parts. The intermediate steps you can actually keep them.
And you reuse them for efficient rendering or efficient physics. Which is something we do and finally you want to have some kind of instruction model so you can simulate your state of your objects. And there are so thing we did is really simple right the fragments the leaf fragments in your tree our nodes in a graph and edges in the graph our physical connections between fragments so if you if you have depth and you end up with a really nice graph and i mean everyone knows what a graph is there’s plenty of algorithms in graph you can use you know my min flow.
Max flow. Min cut for example in you know a lot of interesting. All variants.
It’s it’s a good concept to talk about and then that graph you can use it to manage the state of your objects if connections are broken or you know no edges in your graphs well it means that things aren’t touching anymore they can be totally independent objects in your game later on as furthermore you can actually integrate your personal destruction. In that kind of model. You can just decide that your leaves or in the theater perceivably destructible depending on your topology or your techniques.
And then the residual can change the collision can change you can remove them from the graph and replace them with tied fragments and that works really nicely is a fully current model. So what about the special thing. We did for rainbow six well we develop something which we call surface destruction exclusively for rainbow six.
You know we start from the glass and generalizing anything. But you know it might find some like limit limiting that you say oh it works only on planar like objects. But in practice you know in closed environments.
And the wall and houses and everything. There’s a lot of planes around and the great strength of it is that you you can use whatever you want to cut it it’s super easy to have your artists come up with a model laura or generate new models method mathematically that will create 2d 2d patterns and in general as far as the algorithms go. It’s pretty robust.
It’s fast. It’s not too hard to implement conceptually. It’s pretty simple so what would you actually do that well first step.
You think you’re a planner and like objects you just tricked. A 2d model out of it you just find a projection basis. You protect it that’s it and let’s say later you get some input from the gameplay you you correlate the input with your material.
You decide it should break this way or that kind of pattern. You generate the pattern end up with new polygons and then your intersect your 2d polygons with your cutter. So you can use a lot of all versions.
I mean. It’s not nothing new as far as this tree is concerned. But you know for example where everything this is really simple conceptually and you can generalize.
It to work for pretty complex polygons and you know once you’re done with that you can interpolate new properties in your you v’s and so on. But you know in the end you want to push it to do physics or different rendering. So you triangulate just a lot of solutions for triangulation you know you could use the lone.
A or you know any other algorithms as far as the range elastic is concerned we use your clipping. It’s not the most optimal algorithm that’s for sure. But it’s pretty robust and it did endl the most common cases.
Which is really simple small holes in walls. So that was a great success for us. So once you’re done with the triangulation well it’s trivial to just make a treating model out of it you just extrude you reuse your projection basis you just invert.
It and then voila you have a 3d mesh. So a bit more on the topic of cutters. Well there’s a lot of different cutters out there or you can think about but in general there’s like really three families you have some that will define a parameter like you know an ellipse or a square or something that could be driven by the gameplay or not if some that will define inner fryman slike.
Afro noise. And you have something that might mix a bit of the two like the glass cutter.
I’ve seen you and also the wood in the in the video actually the wood texture cutter was used for the wood is a really cool concept right you or the artists more or less. Draws exactly what he wants movie space and a terrible title ghouls. Rufus and then once you get the inputs from a game.
Play you can you can just find. Where you are in your uv space. Do your query bring that back to you visa to 2d space and use that for your intersection.
And you’ll have something that’s i mean really interesting a really high detail and you know artists will have to model that manually so it’s it’s a really nice and racing thing so what do we have now except some water. You might end up with something like this that’s programmer art of course. Even my soul.
There’s a lot of vertices looks kind of organic that’s interesting. But there’s something missing right you want to improve that visual look so normally what you would do and you know some kind of shooting game. Or whatever you would use deck holes or decals or whatever you call them.
But we we were kind of hoping for a better solution. So we want for something that’s a bit more generalized which we call decorations essentially these are really full geometry like they can be either managed like surfaces. But that are going to be only 2d and then you can place them.
However you want it can be inside of transparency. You have jack’s they can be placed on top back. What have you so they’re super flexible.
But and and you can actually manage them through the lifetime of your wall or object. If it splits in multiple parts you can still keep them it’s easy to manage but on the flip side you’ll pay more for that iterator cpu rendering or memory. And good thing also that it kind of feels like a normal thing for artists also to work with they’re used to placing decals and you know visual stuff and walls or you know just to dress up so there’s basically fact basically two types of decorations yocum.
If the ones are really deco like so you they’re really basically stickers on the surface. They’ll get they can get cut along with the surface and that’s pretty easy to manage and then you can have some they’re really violent features so a your vertices or edges. So you can place things inside and play some color and the trick about it is that once the feature your attach to is gone.
Well. I can just remove them. It’s easy to look up whether your edge is still present.
Or your vertex is still present. So that’s a really good way to approach your problem. So that might end up with something like this definitely looks better.
It’s still programmer art. But i mean these are real textures. Looks like what you’re expecting you still keep the real residual feel of it and it’s looking at it better so in practice.
I mean in the game. It can look something like this so. That’s interesting all right performance now as you might know rainbow.
Six siege is really running at 60 fps in pvp. So just that by itself is a huge talent enough even without destruction so say you go for with the destruction. You’ve done.
What you needed to give the info. Well that’s still going to impact the other systems your ai or navigation in your sound preparation. They kind of need to be dynamic.
Now so they will need to invest some time in some effort into that durin during sight. You know you can barely use static lighting. There’s a lot more dynamic shadows.
You’re less occluders because your walls might be broken at any moment and you can see more objects. Because your walls can be broken at any minute. So that topic is complex by itself so if you’re if you guys are interested in that you can go see giles talk actually just after the socket 3 30.
I’m sure it’ll be really interesting. So what about physics you know once you’ve destroyed. Something the physics shapes are really bound to be really concave.
So you might think i’ll carol just use for that and let my physics. Malware do it.
That’s really going to be super. Costly. And so you don’t want to add towards that so what you can do is you can massage your data a bit you can remove the small holes because they’re not really useful you won’t be able to navigate to them anyway you can reduce desolation.
But you gotta take i mean you got to be careful about the original shape the surface. And then you can do a lot of other things we went for some kind of a collection of convex shapes. So because we know the front and back planes.
Then we already only do like convex hulls in 2d. So it’s faster alright so what about debris. If you i guess you guys might have played the game.
There’s a lot debris in the game. When you’ve just fully like you just ruction and that’s all non procedure cut debris. We decided pretty early in the project that this would be a cost we could actually avoid so.
If you remember again back to the event system already the output. If you give a lot of good quality input outputs are you can place really nice meshes of the right places with the right physics and look really good and then you can in sense. Those.
And you can recycle them super aggressively and that’ll tell them that will make it really attractive as far as physics is concerned so bit other tricks you can make sure that timing fragments won’t collide. Together. You know you have an explosion with something that’s super complex.
Maybe you don’t need to see the five hundred fragments in the end maybe for them is going to be sufficient and you can also you know of course use boxes all the time and if you’re lucky you can just use avec effects for really small details alright. So what about destruction performance itself drink. Some water first well they said.
Before rainbow. Six siege 60fps that was a given and it was requested of us that we do not impact framerate. I found simple of course.
It is not but you know this this section is about it and we need to be indeterministic for online play. Because every players should see the same thing so as far as budgets are concerned. We didn’t really have a clear budget.
I’m improving into destruction because it was a really big risk i mean we which ship black flag before and it’s easy to manage but personal destruction that was a different beast. Altogether. So we were given roughly six milliseconds for a wall.
So really to procedural layers. As far as memory is concerned approximately 25 miles on gpu and 350 mags mary. Mary itself was not a huge issue during production.
We made sure to keep our footprint as lean as possible. But again that was not where with a lot of effort really we worked a lot on performance. I mean.
It was the most risky part with issues for a while because it’s it’s really data driven right. If the artist decided that it should be super complex and really cool looking or might cost something in the end and one thing. Though it was really pumped wrong so we use the collection techniques that i used to make it work so first my thing okay i’ll just multi trade everything if that works i mean.
It’s super trivial to make sure that the object basis distraction works. Independently maybe you can do a bit of order and make sure that you know once your objects are open multiple parts. Yeah.
All of these can be simulated independently that’ll work also then you can make sure that pursue instruction itself. If you have multiple destruction and to doing the same object you can multi get them i work also but still not out you can confer turf or multi traded aliens. But that’s a lot of effort which we didn’t do what we did instead is really make sure and synchronous that made distraction really manageable.
Even if we we said okay in this case at the moment he’s taking hundred milliseconds it doesn’t affect the kingsley feel it doesn’t affect your rendering. So that really like the blood pressure a lot of people in the project. Lord quite a bit of course you’ve bad thing really to depth you have some delay in there the actual game perception and did the destruction itself.
But you know with the facts and uneven forwarding mechanism. Because you know the engine is always sing something from the past potentially that’ll working away so in practice. Oh you can do that is that you know in your engine.
Sticking you every frame. So you get woken up because you have an input and you start you’re a big job and you send out to the some kind of a synchronous job scheduler that’s not gonna mess up.
Too much with the rest of the engine. Then you gotta talk with your engine guys and then you say okay. I don’t i don’t need to update.
Until my jobs are done and then later on you say i’m done i push my results in the engine and that’s it so you see it doesn’t reduce some kind of lag. But if your destruction is not to slow its we’re going to be very noticeable and one thing you can actually do. Which is very cool is you can do pre distraction.
So if you know destructions coming along and i don’t know ten frames. Because the players starting the animation or an explosion might as well do it early so that it’ll really syncs up at the end of your animation. So you similarly you get the input from the game’s limit early and with some kind of singing mechanism and then you start your thing.
And when to get once the game. Pls says. Oh i want my results now.
And you just put your results. And that we did for example for the sheet. Chars and it worked really nicely.
We could actually have put a lot more details in those and that would have worked of course might impact some systems that we didn’t do it. But that’s something we could could have done all right next up times icing. If distractions.
The synchronous and you’re still taking hundred milliseconds well your engine guys are not going to like you because you might be pushing yeah. He said that you might be pushing other things that were in a critical path. So you might end up affecting your frame rate.
So one thing you can do is that you can make sure that you can split up your work in smaller parts. So that i love the side effect that might take more time in long term. Because you feel the overhead of being scheduled more.
But that really helps out so. What we did is really we split in multiple steps. The basic level and then we went with our more complex time slicing in the lower levels.
So there’s no really super obvious solution in c. And there’s a star here. Because yes.
I know about futures and then maybe you could just stop your threads or something. But you know we’re in a game environment. We try to be scheduler friendly so we’re scheduled like everything else so what you can do and which we did is that you keep some kind of state variable a pretty huge state variable that says exactly where you are and what you’re doing.
But you can actually like make it so that this is a really huge thing that you can use for you know temporary arrays. So the indiana. It’s useful because you’ve a lot less allocations.
So in practice you might have something like this you can see the girl that’s good that’s a really super simple example in prep. You know in our code. It doesn’t look like this.
But you can have macros that you can turn off easily and you have some kind of state variable that can be either is in or visible. And you can check whether you’ve time left to continue working and essentially decide some kind of do while with the switch that works raining nicely. But then you’re trying to debug.
It’s super. Painful to debug because you do a few steps and then goes out and come in and then every few steps and it’s really super painful. But you know if you have a macro or something you can turn it off well might as well do it because in the end if you need to do back your algorithms you don’t want to you know suffer the cost of context switching yourself so general it will help you debug all your problems.
And that’s a great way to make it work. So you don’t have talked about the synchronicity time singing a song. But in general you know once that’s really working correctly your review you get a point.
Where you can actually run the full engine and release you can run your instruction code in the bug and you won’t even notice it so i guess. It proves the point that is useful so optimization is always going to be your boss or the engine team thing or cut. It could be faster or algorithms could be faster.
So of course you’re expected to optimize that’s given its games as its the games industry after all. But you can do make it.
Maybe a bit harder you can measure your performance. And then optimize your bottlenecks really making it better so we’re super. Lucky in rainbow.
Six with a great expertise by pairing ceo. That develop you know telemetry and captures for testers game. Sessions and with automatic tests and everything that made it really i would i wouldn’t say easy.
But was simpler to find our problems. So if you guys are interested in that i would really advise you to see our isa stock. Which is an f.
I’d telemetry building infrastructure for big data and games development tomorrow at five three and i mean. That was a really cool guy also all right next up limit degenerate cases thumbs logic. But you need to talk to the artists.
And maybe that was you don’t play it always the same language who you kind of need to do some training about that and then you can also disable features that you don’t need you know for example. The copper example maybe after an explosion whatever parts are the ground. They might not need to react a lot except being pushed away from the physics.
And then finally you can be creative about it you can have features that will help you bound complexity. So one example. We did is the cell structure.
So when a player shoots. Multiple bullets near so instead of making it so it looks like cheese. We decided we’ll make a bigger hole because in the end.
It just looks better and the game designer guys like it the players like it. And it’s better for performance so might as well do it all right next up runtime locations. That’s something we fixed later later in the project.
Where i get not too lazy. But not too super careful about it but for on time allegations. They do cost something as most of the time you’ll lock and multi drills and environments for your locator.
So that does because of course in some cases. You’ve no choice you need to allocate because it’s something you’re gonna keep forever. But you gotta have some kind of better strategies you can have ibrid each stack aries so for some things that you expect that most of the time will be small could have working data structures.
I mean really big buffers for your work or you know you can have pools of first lived objects you know for example date. The events. I was talking about they don’t live that long they’d have a couple frames.
So instead of creating new wins deleting. Them you can just keep them and of course. You can have any small good news.
All right so as far as benchmarks go these are really not i wouldn’t i wouldn’t stake my life on it we identified a couple of times at most so takuto we take with a heap of salt so on pc. It’s kind of fast bullets are pretty cheap. So we’re clear the first numbers actually personal chakram second number is the visual update and the physics update so as far as bullet holes were concerned we never change of physics that’s pretty cheap for explosions all that comes a bit more because we do change a lot more things so on pc.
We’re still way way under the approximate tree milliseconds mark. But you know when you put in more things like walls with layers of wood on top and everything in canon goes a bit crazy. But we’re synchronous a lap in two frames later three frames leader.
And the engine guys aren’t too too angry about it all right. It’s a lot about online. Now that’s had before issue of a gameplay feature er needs to be deterministic.
Because every player needs to see it the same way or experience in the same way any of course. It means it needs to be replicated. So you might think i’ll just on all my meshes already desk work well that’s not really gonna work you’re still always trying to minimize bandwidth usage.
So instead of you know doing that we just send events over d over to a network and then we expect the destruction system to be entirely deterministic that itself is not as somewhat of a problem. But we’ll come to that later as far as physics are concerned the rule of thumb here is don’t do it you’ve seen it destructions like an asynchronous so just thinking when destruction is happening or finishing. Not going to be super simple characters will impact your dynamic object.
So that’s that’s a problem by itself. So if you don’t need to do it don’t do it as far as rainbow six is concerned every dynamic object is really small this is impact gameplay.
So i mean shooting goes true structural and dynamic objects. Is mary is not even replicated. Because it might not make sense for the other players go back to determinism.
What we did is we sold a contract between a game and destruction system. So we asked for the same inputs. Exactly the same inputs in the same word.
So we made it so that our system wouldn’t actually react well to that so same inputs. A last review. All right yeah.
Maybe not a lot of the times. You’ll have data compression because maybe you don’t need a full full range of values. But if you do that then locally you also need to apply data compression and then if you’re a client your compressor your data send it to the hosts looks at it so impressive and compresses.
It and then the recompress is it incentives and our client. Well everyone needs that exactly get some value. So you need to have some kind of symmetric compression.
Doesn’t mean lossless. I mean the first the first compression will lose some information. But if you just stick around with compressed values.
You shouldn’t always end up with the same thing. So. That’s what i actually written there here as far as ordering is concerned normally nuts not to complex.
We were lucky in rainbow six siege the network layer was guaranteeing that so we didn’t have to do anything. But you might have network bursts everything so you need to make it so that your destructions not sensitive to having multiple inputs in the same frame. So that’s one thing you can possibly just process one every frame and maybe it’ll work out as far as the randomness is concerned i mean we’re talking about priscilla destructions.
So you think the outcome must be unique whatever items. Well. If you want to still have that kind of randomness input or randomness.
Feeling or you can have a random number generator that’s really based on that some kind of common value you can use so in rainbow. Six siege. I mean with perfect replication of inputs the actual it position that’s really going to be a pretty good value so you can use that and senor random number generator in there.
And you know if your granary is good enough. No one’s ever going to notice that not totally random. And as far as random number generators are used in in c.
You can start them in tread. Local storage and makes it super easy to use just get out take some care about time sizing all right so what about different states. I mean you’ve messages from the past from you know other clients or when your nose for example or just because you’re a synchronous or you can have messages from the future.
Because the host is quite possibly in events than you so you need to be tolerant of that and robust so in our case. We have some kind of history of what happened before so we can not rollback. But to retarget inputs and then we have some kind of mechanism and and the information.
We have so we can roll back for expected past values. That’s that’s it for that so what about some feedback you know when you blaze shooter. You expect you expect some kind of instant feedback and shooting so in the context of rainbow.
Six siege. That you expect to have a whole when you shoot something if it’s supposed to great game of course so when you play online. Maybe sending your message to us and getting back might not be that matter problem when when you’re playing on the internet.
That’s a lot of latency. So you can’t you can’t actually make it work this way. But if you do instruction locally then does break ordering so the game broke its contract.
So how do you actually cope with that well and if only it was a really problem because you’ve seen the self destruction feature before you know a lot of small holes becomes a big girl well if the ordering of that changes you might end up with they’re really different old and then everyone’s just diverging to different values and it just breaks the game. So what we did is well we separated this feature in two parts. There’s the small hole happening and then there’s the actual damage for the surface.
That’s you’re gonna be used for the the bigger damage so as far as this is concerned you’re the originator you shoot on something usually small. And then you send a message to the host with the full full information and the o’s sends back the message to everyone.
But you you get the special message just for you you just do that on the damaged thing for the big rolls and then that makes it that every damage that’s dealt. I was always gonna be done through the host so it’s fully order so you might think well. It’s not really perfect solution.
You might have ended up with something different you know the originator might have some small differences and individuals or might have if doles are really wrong gleaming or bing or something might end up different. But in practice. We’ve we’ve done a lot of death and we end up with the same number of vertices in the same places you know you might have some small differences.
But it’s so many of all it is not a problem okay other solutions. We know there was talk at some point well maybe that’s not good enough so we we thought about the solution that would be really a good solution super boss. We called it to roll back.
Essentially. If you’re a client and you do something locally you can keep track of it and then when you receive messages from the host. If there are not messages from your from here.
It’s tack. You undo your changes apply deals messages and redo your messages that seems super. Logical that’ll work oh of course when you get the message that’s your message your music you just remove your stack.
But that’ll work really nicely. If your latency is not too bad. Because your stack might be become a really really really tall and then just on doing your to work in a redoing network.
Might be a lot of effort you’re wasting that might not be good for you so of course. We didn’t do it we might actually think about it for a land environments in the future. But so far so good so i know i talk really fast that i’m kind of in now.
So what about future you know i talked very briefly about tools. But we’re still in process and make it making it easy and fun to work with because there’s a lot of things you can do right for every different input. You can have a different output.
So how would you actually prison that to the artists and make it clear that’s some work in itself. We’ve also worked on curved surfaces so we think extended a bit concept so you can have curved walls and so on and we actually already ship that and season one for rainbow six and then your mind the other destruction types we can go with yeah plastic deformations stress on us is fully treating boolean technique and then jurong will just optimize and make it look better. So.
That’s kind of confusing huh. So what about takeaways. If you want to do destruction.
Give yourself a favor and take a full team of it there’s so many different technical frauds. You know whether that’s your technical your runtime destruction. Or the impact you have in gameplay or in the tools.
You really need multiple people or and up. And then the only in also some kind of technical advisory for the artist. They don’t need training.
That’s for sure and then you also need a really clear production volume. You know you might come up with a really best technique whatsoever. If if the production says.
I i don’t think we have the budget to you know tim today is what it works. It’s not gonna make it in a game. So as far as the you know environments or destructible environments are concerned you’ve got to do it really early because it’s a lot of investment and there’s a lot of inertia to fight sometimes also so finally dynamic environments like destructible or you know just living environments to stay it’s we’re not going backwards to fully static worlds.
So you might as well embrace. It and of course destructions also kick ass so promote innovation and change bite. The bullet do it alright finally remember.
John’s talk tomorrow three three let’s talk tomorrow at 5 30. And you guys can reach me at point doppler sorry at ubisoft point calm calm for questions or eight males or love letters. I am open for it any questions applause applause.
What are your thoughts in general on sparse voxels and how that compares to your technique both in terms of performance and easy enough implementation that’s a really really interesting question as far as voxels and as far as voxels in general. I’m sure that they’re really great. But you might not end up exactly what a visual.
You look you want and it’s it’s a huge step for an engine to switch to voxels if they’re actually working on a game whatsoever and didn’t do that’s a lot of inertia when you’re off and now somewhat big company. It’s a huge huge change so when you work on really like normal geometry or meshes. It makes it a say more and swallowable no more simpler for them to accept it other questions if you’re too shy.
I’ii be sticking around for a couple of minutes or you can actually meet me and alex at the u visa. Flange at four. We’ll talk a bit about tools and answer questions in general all right thank you applause.
Thank you for watching all the articles on the topic The Art of Destruction in Rainbow Six: Siege. All shares of bluevelvetrestaurant.com are very good. We hope you are satisfied with the article. For any questions, please leave a comment below. Hopefully you guys support our website even more.