Re: sparse components
Richard Fabian <[email protected]>
| Newsgroups | gmane.games.devel.sweng |
|---|---|
| Message-ID | <[email protected]> |
I've read all the Mike Acton's stuff I can find. He's a really interesting read for performance, I especially liked his small bit on branch optimisation, went and implemented the stuff only to find that it's not just faster on Cell's but on CISC out-of-order CPUs as well. He's also very clued up on concurrency and I've definitely learned from him in that area. Without what he had written, I'd have had a couple of problems trying to perceive some of the other benefits to using my collected techniques. My general work is almost like an attempt to bring a lot of "right thought" to the general coders rather than go for ultimate throughput, because I've found that optimising conceptually wrong code can be a nightmare of refactoring before you even get to doing any real performance tuning. I guess what I'm doing is trying to make it possible to enable the less clued up to write code that easier for performance guru's like Mike to make a bigger impact by having things laid out in a simple to grasp format. On 28 May 2010 16:18, Javier Arevalo <[email protected]> wrote: > You might enjoy this: > > http://www.insomniacgames.com/blogcast/blog/mike_acton/1500756 > > Sorry I can't elaborate much, but I can tell you you're not the only one > thinking in that direction. > > > On 5/28/2010 16:44 PM, Richard Fabian wrote: > >> I'm working on some stuff at the moment, a kind of collection of >> techniques that I've started pulling together into a more coherent single >> way of thinking. >> >> One of the techniques is something I've been calling Existence Based >> Processing, and it was born of my early implementations of component based >> development. I've now heard someone call it Push Processing, but can't find >> any references on Google, and wondered if anyone knew of the right search >> phrase. >> In my component system, I oriented the component processing to a per >> component type rather than per entity, which meant I was keeping the I cache >> warm all the time. I was lucky, I hadn't noticed this benefit at the time, >> and now I do. Also, because components only existed for entities which >> needed them, there was no processing done for entities without that >> component. At the time I had simple finite state machines for AI that >> switched in and out which component the AI was using as a hierarchical FSM, >> but I've seen now that this rabbit hole goes deeper. >> >> So, what's this stuff called normally, and also, why aren't we taught >> anything about it, and why aren't we using it? >> >> I've seen speed ups in my own code due to rewriting small sections in this >> style, so can't fathom why we're not using it in general, or for that >> matter, taught it at all. >> >> I've breathed even more life into this technique with my current work on >> writing up my experience with data oriented development by adding or at >> least clarifying what this sparse existence component technique can offer, >> including some work on making your components behave as states for an FSM, >> or even, because now I only have the concept of an implicit core entity, the >> ability to generate multiple entities from one when needed (such as level of >> detail change), and also collapse multiple entities down to one when the >> level of detail is no longer necessary. >> >> A bit of background,: I was spurred on a bit by the "OOP is bad" talk into >> putting a bit more effort into what I was doing so that other people might >> benefit. The basis of my stuff is really a revisit to old computer science, >> relational databases to be specific, and leveraging what has been learned >> over the decades into something more useful for games. I've found that there >> are a number of parallels in database technology and current high >> performance game development, and I think it's because we're effectively in >> the same hardware situation, just scaled up a lot. I think of the old DB >> hard drives as our main memory, and their old small computers as being >> equivalent to our modern CPUs and parallel machines. That is, we're using >> powerful but small processing machines, committing transforms on the data >> set that is in a slow medium. >> >> I'm currently doing general research to find out if there are other old >> science techniques that we've forgotten, or not repurposed, while also >> writing a proof of concept rogue-like in 3D. This does mean I have to write >> two whole games that are exactly the same, as best I can, just to prove any >> of my research, but I hope that doing so I may come across some other >> unexpected discoveries. >> >> > -- > Javier Arevalo > http://www.iguanademos.com/Jare > > _______________________________________________ > Sweng-Gamedev mailing list > [email protected] > http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com > -- fabs(); Just because the world is full of people that think just like you, doesn't mean the other ones can't be right. _______________________________________________ Sweng-Gamedev mailing list [email protected] http://lists.midnightryder.com/listinfo.cgi/sweng-gamedev-midnightryder.com