Це може бути дещо тривіальним питанням, але у мене виникають проблеми з розумінням цього. Буду дуже вдячний за вашу допомогу.
У розробці ігор, використовуючи об’єктно-орієнтований дизайн, я хочу зрозуміти, як AI-агенти отримують необхідну інформацію з ігрового світу для виконання своїх дій.
Як ми всі знаємо, в іграх дуже часто агентам ШІ потрібно «сприймати своє оточення» та діяти відповідно до того, що відбувається навколо них. Наприклад, агент може бути запрограмований переслідувати гравця, якщо він / вона наблизиться досить близько, уникати перешкод під час руху (використовуючи рульове поведінку уникнення перешкод) тощо.
Моя проблема в тому, що я не впевнений, як це зробити. Як агент AI може отримати доступ до потрібної інформації про ігровий світ?
Один з можливих підходів полягає в тому, що агенти просто вимагають потрібну інформацію безпосередньо з ігрового світу.
Існує клас під назвою GameWorld. Він обробляє важливу логіку гри (цикл гри, виявлення зіткнень тощо), а також містить посилання на всі сутності в грі.
Я міг би зробити цей клас одинаковим. Коли агенту потрібна інформація з ігрового світу, він просто отримує її безпосередньо з екземпляра GameWorld.
Наприклад, агент може бути запрограмований на Seek
гравця, коли він / вона поруч. Для цього агент повинен отримати позицію гравця. Таким чином, можна просто запросити його безпосередньо: GameWorld.instance().getPlayerPosition()
.
Агент також може просто отримати список усіх сутностей у грі та проаналізувати його на потреби (щоб з'ясувати, які сутності знаходяться поруч чи що-небудь ще): GameWorld.instance().getEntityList()
Це найпростіший підхід: агенти безпосередньо звертаються до класу GameWorld і отримують необхідну інформацію. Однак це єдиний мені підхід. є кращий?
Як би спроектував це досвідчений розробник ігор? Чи підходить "отримати список усіх сутностей і шукати все, що вам потрібно"? Які існують підходи та механізми, щоб дозволити агентам ШІ отримати доступ до потрібної інформації для виконання своїх дій?