b'\n_START_ARTICLE_\nEntity-component-system\n_START_PARAGRAPH_\nEntity-component-system, cz\xc4\x99sto u\xc5\xbcywany skr\xc3\xb3t ECS \xe2\x80\x93 wzorzec architektoniczny wykorzystywany g\xc5\x82\xc3\xb3wnie przy tworzeniu gier komputerowych i pozwalaj\xc4\x85cy na du\xc5\xbc\xc4\x85 elastyczno\xc5\x9b\xc4\x87 w projektowaniu ca\xc5\x82o\xc5\x9bciowej architektury oprogramowania. Wzorzec wyr\xc3\xb3\xc5\xbcnia trzy kluczowe elementy: jednostki (ang.\xc2\xa0entities), komponenty (ang.\xc2\xa0components) oraz systemy (ang.\xc2\xa0systems). Bazuje na podej\xc5\x9bciu zwanym kompozycj\xc4\x85 ponad dziedziczenie (ang.\xc2\xa0composition over inheritance) i rozwi\xc4\x85zuje problem obecny w programowaniu obiektowym, gdzie poprzez dziedziczenie tworzone s\xc4\x85 rozbudowane hierarchie klas, kt\xc3\xb3re s\xc4\x85 trudne do modyfikowania oraz wyst\xc4\x99puje w nich redundancja. ECS zapewnia izolacj\xc4\x99 poszczeg\xc3\xb3lnych element\xc3\xb3w, przejrzysto\xc5\x9b\xc4\x87, modularno\xc5\x9b\xc4\x87 i \xc5\x82atwo\xc5\x9b\xc4\x87 rozszerzania kodu, jednak\xc5\xbce problematyczne mo\xc5\xbce okaza\xc4\x87 si\xc4\x99 tworzenie komunikacji pomi\xc4\x99dzy poszczeg\xc3\xb3lnymi systemami._NEWLINE_Jednostki (ang.\xc2\xa0entities) maj\xc4\x85 identyfikator; sprawiaj\xc4\x85, \xc5\xbce \xc5\x9brodowisko jest \xc5\x9bwiadome istnienia indywidualnego obiektu oraz funkcjonuj\xc4\x85 jako obiekty, na kt\xc3\xb3re sk\xc5\x82adaj\xc4\x85 si\xc4\x99 komponenty. Komponenty (ang.\xc2\xa0components) to elementy zawieraj\xc4\x85ce dane, a nie logik\xc4\x99. Mog\xc4\x85 by\xc4\x87 do\xc5\x82\xc4\x85czane do jednostek, zapewniaj\xc4\x85c im w\xc5\x82a\xc5\x9bciwo\xc5\x9bci. Np. \xe2\x80\x9ekomponent zdrowia\xe2\x80\x9d mo\xc5\xbce by\xc4\x87 do\xc5\x82\xc4\x85czony do \xe2\x80\x9ejednostki rycerza\xe2\x80\x9d i zapewni\xc4\x87 mu zmienn\xc4\x85 typu integer lub float, kt\xc3\xb3ra b\xc4\x99dzie odpowiada\xc5\x82a za zdrowie postaci. System operuje i manipuluje komponentami. Uruchamia on logik\xc4\x99 na jednostkach w celu wykorzystania lub zmiany danych zawartych w komponentach. System to \xe2\x80\x9ezamkni\xc4\x99te \xc5\x9brodowisko\xe2\x80\x9d, kt\xc3\xb3re nie ma na w\xc5\x82asno\xc5\x9b\xc4\x87 jednostek i komponent\xc3\xb3w oraz ma do nich dost\xc4\x99p tylko poprzez niezale\xc5\xbcnego managera obiekt\xc3\xb3w, kt\xc3\xb3ry zajmuje si\xc4\x99 ich cyklem \xc5\xbcycia. Wyst\xc4\x99puj\xc4\x85 dwa podej\xc5\x9bcia przy tworzeniu system\xc3\xb3w. Pierwsze wymaga, aby dla ka\xc5\xbcdego komponentu by\xc5\x82 stworzony oddzielny system, np. je\xc5\xbceli w grze wyst\xc4\x99puje \xe2\x80\x9ekomponent kolizji\xe2\x80\x9d, to powinien istnie\xc4\x87 tak\xc5\xbce \xe2\x80\x9esystem kolizji\xe2\x80\x9d. Podej\xc5\x9bcie to jest bardzo restrykcyjne i nie przewiduje, \xc5\xbce komponenty mog\xc4\x85 na siebie oddzia\xc5\x82ywa\xc4\x87. Natomiast drugie podej\xc5\x9bcie pozwala na grupowanie komponent\xc3\xb3w w jeden system, np. je\xc5\xbceli istnieje \xe2\x80\x9ekomponent kolizji\xe2\x80\x9d i \xe2\x80\x9ekomponent cia\xc5\x82a sta\xc5\x82ego\xe2\x80\x9d, to mo\xc5\xbce by\xc4\x87 stworzony jeden system nazwany \xe2\x80\x9esystemem fizyki\xe2\x80\x9d._NEWLINE_Sk\xc5\x82adowe elementy wzorca komunikuj\xc4\x85 si\xc4\x99 pomi\xc4\x99dzy sob\xc4\x85 poprzez tzw. \xe2\x80\x9epozyskiwanie zdarzenie\xe2\x80\x9d (ang.\xc2\xa0event sourcing). Zdarzenia s\xc4\x85 dystrybuowane poprzez managera zdarze\xc5\x84 (ang.\xc2\xa0event manager) i wszyscy zainteresowani zdarzeniami mog\xc4\x85 ich nas\xc5\x82uchiwa\xc4\x87. Je\xc5\xbceli jednostka, system, lub nawet komponent ma wa\xc5\xbcn\xc4\x85 zmian\xc4\x99 do zakomunikowania (np. zmian\xc4\x99 pozycji obiektu), to mo\xc5\xbce on przekaza\xc4\x87 to do managera zdarze\xc5\x84, a ten nada t\xc4\x99 informacj\xc4\x99 do wszystkich, kt\xc3\xb3rzy oczekuj\xc4\x85 na to zdarzenie._NEWLINE_ECS jest zaimplementowany w silniku CryEngine oraz Amazon Lumberyard. Jest on dost\xc4\x99pny tak\xc5\xbce w wersji preview silnika Unity. Aktualnie trwaj\xc4\x85 prac\xc4\x99 nad pe\xc5\x82n\xc4\x85 implementacj\xc4\x85 tego wzorca w tym \xc5\x9brodowisku.'