T-Machine

t-machine.org · Personal blog · on HN since 2009

T-Machine is the blog of a game developer who writes about entity systems for online games, freelancing, recruiting, and startups.

What HN saysHN cites it as the origin of the entity component system naming, in particular its 2007 entity systems posts on MMOG development.
15HN people shared it
10linked it in comments
5stories submitted
164story points
3 years agolast shared
2009people per year2026

Most-shared posts

  1. 1
  2. 2
  3. 3
    Homepage
    2 people · first shared 2015
  4. 4
    When GitHub kills Open Source
    1 people · 84 points · first shared 2012 · 49 comments on HN
  5. 5
    Recruiters: My fee for referrals is 5%
    1 people · 72 points · first shared 2011 · 28 comments on HN
  6. 6
    Should freelancers in gamedev industry sign NDA’s?
    1 people · 5 points · first shared 2014 · discussion on HN
  7. 7
    VCs, Angels and ghetto testing: They are wrong
    1 people · 2 points · first shared 2010 · discussion on HN
  8. 8
  9. 9
  10. 10

What HN people wrote when they linked it

teamonkey · 2023-06-26
Same here. I still find it a bit misleading too. The game didn’t make it to AC:Valhalla, a texture-packing library that was made during its creation did[1] (not wanting to downplay that achievement, it’s worthy of a post in its own right, IMO). It’s also a bit of a stretch to claim it was the source of the ECS system used in Unity. I was using a game engine which used ECS prior to 2010. In the game engine world it seems to originate with Operation Flashpoint[2] (post from 2007). [1] https://github.com/TeamHypersomnia/rectpack2D [2] https://t-machine.org/index.php/2007/09/03/entity-systems-are-the-futu…
CmonDev · 2015-07-10
Related: a guy trying to fix the Unity3D's broken core - http://t-machine.org.
dkersten · 2010-07-01
Maybe I'm naive, but I don't think the problem is what everyone always says - that parallel programming is super hard and most programmers cant effectively program for multicore systems. Instead I think the problem is one of education and training. How many programmers actually get decent training and education in multicore programming? I don't think its very many. Of all the programmers complaining how hard it is to write effective multicore programs, how many have actually read books and research papers on the subject? Again, I'd wager not many. For example, In my four year computer science degree, a lot of time was spent on high level languages like Java, C, C++, Haskell, even prolog. A good bit of time was spent on low level details (two computer architecture modules, an "advanced" computer architecture module, an assembly programming module). Some time was spent on computability, complexity and parsing. Of course, we had a number of math modules too, including probability, statistics and linear algebra. A lot of time was spent on object oriented programming, data structures and algorithms. A little bit of time was spent on other topics like network programming, databases, operating systems (we did cover deadlock and some concurrent programming stuff in great detail here) and AI. The rest was split between single (optional!) modules on niche areas: digital signal processing, cryptography, compression, 3d graphics and so on.. including concurrent programming. We spent…
Jare · 2021-02-27
It would be fair to attribute the ECS naming (specifically, making "Systems" an integral concept to the, ahem, system) to this from 2007: http://t-machine.org/index.php/2007/11/11/entity-systems-are-the-futur…
sago · 2015-02-09
Mostly modern game engines use an entity system[1], which is a form of database (global data, I guess, in as much as any database is). The main loop then steps through each component (of which physics would be one) and lets it update the entity data for all entities. This pattern took over from class/inheritance based architectures about 10 years ago. There have been some suggestions that Functional Reactive Programming is a better approach. I've used it in some prototypes, but I couldn't scale it to engine-size, and I'm not aware of it having been used successfully for a full game engine. So, this approach is pretty much it. You keep a database of state, then you run a system (the physics system, say) to update that database. [1] http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-futur…
wtetzner · 2014-03-26
You might want to look at how people are approaching components now. Instead of components containing logic, components only contain data. You then have systems that operate on the components. This solves the problem of needing components to interact with each other, since a system can look at as many components as it wants. https://en.wikipedia.org/wiki/Entity_component_system http://t-machine.org/index.php/2007/11/11/entity-systems-are-the-futur… http://piemaster.net/2011/07/entity-component-artemis/
Markku · 2011-08-23
This is really not a good example as games have (read should have) entity systems. See e.g. these two links for an introduction. http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-futur… http://www.purplepwny.com/blog/?p=215 There should be no Draw() in your game object (read entity) base class. Not every entity is rendered. You should have instead a component Renderable. And if it happens to be so that your special snowflake has a Renderable component then you can render it on screen. E.g. AI pathing nodes would not usually have one unless you are debugging them you can add one. In your example you end up with Movable extending GameObject, Camera extending GameObject and then you have no way of combining these two behaviours.
cellis · 2009-11-22
Wow, cool. I was wondering when these would show up here on HN. For a more thorough treatment, you may want to read this series of posts by Adam Martin : http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-futur…
DonHopkins · 2019-10-23
There are some abstract similarities, but neither COM nor Unity GameObjects/Components are an "implementation" of that pattern, since they were both invented a long time before 2007 when Adam Martin defined ECS in "Entity Systems are the future of MMOG development": http://t-machine.org/index.php/2007/09/03/entity-systems-are-the-futur… ECS builds on top of some of the ideas of COM and GameObject/Component, but loses much of the baggage, takes it much further in a different direction, and has a lot of other advantages, like storing the data in separate contiguous cache-friendly buffers. https://en.wikipedia.org/wiki/Entity_component_system >In naïve ECS implementations, every system iterates through the complete list of all entities, and selects only those entities that are needed. The total iteration cost for all systems becomes too costly if the number of systems grows or the number of entities is large. In other ECS architectures, every component type is stored in a separate list, so whatever systems operate on a given type of component are only iterating over objects they care about by default. In this common ECS architecture, the described disadvantage actually becomes a major performance advantage, by more efficiently leveraging the CPU instruction and data caches. http://t-machine.org/index.php/2014/03/08/data-structures-for-entity-s… >Net effect: Contiguous memory is King >If you store your data contiguously…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close