- ... 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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.