ну это касается не только ООП :) это и про функции можно сказать, только будет не взаимодействие, а комбинация.
И из такого понятия системы строим практические принципы удобного построения игрового мира:
Ключевое для максимальной полезности элементов в сети – самостоятельность каждого элемента (объекта) в виде инкапсуляции и сокрытия, что он хранит свой стейт и работает с ним полностью сам. Чтобы не приходилось с ним по пустякам нянчиться кому-то снаружи. Юниту можно что-то приказать и он это либо сделает, либо выкинет исключение, либо сделает потом и уведомит наблюдателя.