{"id":57,"date":"2013-05-15T18:23:28","date_gmt":"2013-05-15T18:23:28","guid":{"rendered":"http:\/\/www.the-netizen.com\/?p=57"},"modified":"2013-05-15T18:24:04","modified_gmt":"2013-05-15T18:24:04","slug":"gah-ive-been-doing-it-all-wrong","status":"publish","type":"post","link":"http:\/\/www.the-netizen.com\/?p=57","title":{"rendered":"Gah! I&#8217;ve been doing it all wrong!"},"content":{"rendered":"<p>I&#8217;ve been spending some time checking out these new fangled design\u00a0methodologies\u00a0that throw out typical object oriented programming and replace it with an &#8220;entity component system&#8221; or ECS (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Entity_component_system\">http:\/\/en.wikipedia.org\/wiki\/Entity_component_system<\/a>)<\/p>\n<p>TL;DR , an ECS system creates uses components to compose objects rather than using elaborate &#8220;is-a&#8221; relationships. This allows programmers to more easily mix and match components which makes your game more\u00a0flexible.<\/p>\n<p>The holy grail is the end point, where you&#8217;ve got such a wide breadth of components that you can let your game designers simply mix and match them to create new content. Each game object&#8217;s component composition is stored as data which can be\u00a0manipulated\u00a0outside of the program. And each component can contain knobs that allow the game designers to change things on a per component or per object basis. Quite powerful.<\/p>\n<p>It turns out that my head has been in the sand and this trend has completely passed me by, its been vetted first by Dungeon Siege (<a href=\"http:\/\/scottbilas.com\/games\/dungeon-siege\/\">http:\/\/scottbilas.com\/games\/dungeon-siege\/<\/a>) and now large scale frameworks such as Unity\u00a0embrace\u00a0this model. (knowing the motivation behind the model would have helped my adventures in Unity) =P<\/p>\n<p>It&#8217;s currently &#8216;too-late&#8217; to incorporate much of this into the civcraft project, but for my next project, this will be fun to play with!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve been spending some time checking out these new fangled design\u00a0methodologies\u00a0that throw out typical object oriented programming and replace it with an &#8220;entity component system&#8221; or ECS (http:\/\/en.wikipedia.org\/wiki\/Entity_component_system) TL;DR , an ECS system creates uses components to compose objects rather than using elaborate &#8220;is-a&#8221; relationships. This allows programmers to more easily mix and match components [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-57","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/posts\/57","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=57"}],"version-history":[{"count":3,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/posts\/57\/revisions"}],"predecessor-version":[{"id":60,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=\/wp\/v2\/posts\/57\/revisions\/60"}],"wp:attachment":[{"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=57"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=57"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.the-netizen.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}