... cause1
Large Scale C++ is a book almost entirely dedicated to showing how object oriented development needn't destroy the productivity of large scale software projects
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... data1.1
unless they are a Lisp programmer
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... success3.1
Gas Powered Games, Looking Glass Studios, Insomniac, Neversoft all used component based objects
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... article3.2
Gas Powered Games released a web article about their component based architecture back in 2004, read it at http://garage.gaspowered.com/?q=su_301
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... type3.3
GPG:DG uses GO or Game-Objects, but we stick with the term entity because it has become the standard term.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... rendered3.4
or is updated while the rendering is happening on another thread
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... AI4.1
I beleive this was half-life
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... track4.2
Ridge Racer was one of the worst for this
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... once4.3
Populous did this
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... well8.1
Tony Albrecht proves this point in his article on sorting networks http://seven-degrees-of-freedom.blogspot.co.uk/2010/07/question-of-sorts.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... cache8.2
It might be wise to have some templated inline sort functions in your own utility header so you can utilise the benefits of miniaturistion, but don't drop in a bloated std::sort
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... strings9.1
There are existing APIs that present strings in various ways dependent on how they are used, for example the difference between human readable strings (usually UTF-8) and ascii strings for debugging. Adding sounds, textures, and meshes to this seems quite natural once you realise that all these things are resources for human consumption
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... filename9.2
in fact, the filename is the primary key of the filedata on the storage media, filesystems are simple key-value databases with very large complex/large values
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... big10.1
dependent on the target hardware, how many rows and columns, and whether you want the process to run without trashing too much cache
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... lookup10.2
often a lookup join is called a join by hash, but as we know our data, we can use better row search algorithms than a hash when they are available
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... memory10.3
This would be from false sharing, or even real sharing in the case of different bits in the same byte
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... interpretation10.4
Take a look at the section headed The Massively Vectorized Virtual Machine on the bitsquid blog http://bitsquid.blogspot.co.uk/2012/10/a-data-oriented-data-driven-system-for.html
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... either11.1
If you discount the possibility of other code changing the floating point operation mode
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... coherent11.2
cache coherency is the system by which changed data is propagated to other caches so that consistent state is achieved.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... debug12.1
anyone remembering developing on a PS2 will likely attest to the minimal benefit you get from optimisations when your main bottleneck is the VU and GS. The same was true here, we had a simple bottleneck of the size of the data and the operations to run on it. Optimisations had minimal impact on processing speed, but they did impact our ability to debug the service when it did crash.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... console12.2
The target platforms of the engine included the Playstation 2 and the Nintendo Wii along with Win32.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... scene12.3
sometimes multiple cameras belonged to the same scene to the scene graph would be walked multiple times
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... traffic12.4
dead men don't care about bullets and don't really care that much about what other players are doing
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... caverns12.5
due to concerns that a 2D space game might be misinterpretted as the next elite I imagine
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... branch12.6
profile guided optimisation might have saved a lot of time here, but the best solution is to give the profiler and optimiser a better chance by leaving them less to do
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... little12.7
Position, Velocity, PlayerInputMapper, VelocityFromInput, MeshRender, SkinnedMeshRender, MatrixPalette, AnimPlayer, AnimFromInput, and CollisionHandler
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... components12.8
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... faster15.1
http://keithlea.com/javabench/ tells the tale of the server JVM being faster than C++. There's some arguments against the results, but there's others that back it up. Read, make up your own mind.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... layouts17.1
Parallax Propeller is a really interesting microcontroller that's been out for some time, but provides a unique perspective on parallel computing
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... beasts17.2
Parallela was a successful 2012 Kickstarter campaign for Adapteva, in which their roadmap points to 1024 core boards being produced in 2014
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... arsenal17.3
One really good reason for an FPGA is to allow for future proofing of output connectivity. FPGAs can be used to test out new standards such as a new HDMI specification or a completely different encoding
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.