Thanks for hilighting the typos - silly mistakes, easy to fix.
On the more complex items:
On 9 February 2014 17:48, Yggy King <
yg...@zeroandone.ca> wrote:
> - you say "Runtime execution has to operate on "all the Components for
> Entity X" at a time (anything else causes worst-case behaviour for a modern
> computer/CPU architecture)" -- wouldn't a modern (streaming) architecture
> prefer to operate on "all the Components of type Y for all Entities"? You
...together with:
> I need more
> convincing that it's rare. Coming from an OOP background, references between
> entities are ubiquitous -- if that's not true in an ES-oriented architecture
I wanted this to be "assumed knowledge" for the post. I see what you
mean that it's treated as fact, when it's arguable - but IMHO that's
enough of a tangent I can justifiably skip it here?
(Incidentally ... my short answer would be: it's different because the
architectures are fundamentally different (and incompatible) in how
they define and treat "data" and "code".
My original 5 x blog posts on ES's are (IMHO) poor writing. But I
wrote them for 2 specific purposes, that they did well: to increase
take-up, and to ram-home this idea that "everything you expect ... is
wrong". Switching to an ES is a paradigm-shift, and it's easier if you
start by discarding your existing knowledge, and re-learning from
scratch which bits still apply - and which ones don't)
> then where did that information go? If the references became reference
> between Components (I can buy that) then how does that make it any less
> random / performance-crippling?
Your algorithms become more batch-oriented and context-free.
...which is a such a short statement, maybe I can/should include that
at start of the post, as a "recap"?
> - you mention the Artemis Bag class -- I just looked at the source and it
> appears virtually identical to the standard List<T> in its interface and
Yeah ... I only wanted to call it out as "see how small a change you
can make and get a boost".
Is it a distraction? Should I remove mention of this entirely?
> has anyone benchmarked the Artemis Bag vs. standard List?
I haven't, but ... Arni's been a java coder for a long time, and I'm
pretty sure he wouldn't have built it unless it gave a substantial
boost / convenience improvement on the JVM's he was using.
> - in Iteration 3, you suggest use of a "hint" for the "Component Types that
> entity is likely to acquire" -- this suggests that the entity _could_
> acquire other component types. If an entity gets a component that was not
> mentioned in the hint, what happens? Are its components no longer
> contiguous? How does it get stitched back together for processing?
This was meant to be covered by the 3 sentences immediately following:
what goes to CPU is a skiplist / "only read the data in these ranges".
Not clear enough? Covered too quickly?
(towards the end, I was feeling bad about the excessive length, and
it's possible I took brevity much too far )