есть классы с функциями, объявляемыми в 3_game, а есть те, что в 4_world. Вот те, что объявляются в 4_world - их в 3_Game не получится использовать. Это как данное примите. НО вы можете объявлять, использавать и-или вызывать классы и функции в 4_World те, что объявлены в 3_Game. Тем самым, например, вы можете сделать нужные вам классы в 3_game, наследоваться от них в 4_world и уже там проводить нужные вам обработки. Либо создать заведомо пустую функцию в классе 3_Game, а уже в 4_World ее замоддить и заполнить нужными вам вычислениями, которые в 4_World уже смогут работать.
Условно говоря, да, есть границы, но если 'прикинуть' как построить код, то это можно обойти.
А так у любого объекта в игре есть базовый класс Object и EntitiAI как его наследник и базовый класс движка для всего. Все остальное в каком-то смысле (даже InventoryItem) наследуется от него. Разумеется, большинством все это в 4_world обитает. Но это вы можете сами изучить, выполняя поиск в родных скриптах игры.