Хочим работать... Давайте!
Иерархия - это скелет. От нее будет зависит быстрота и надежность дальнейшей разработки, по этому решил подключить всю команду. Сам пытался объединить свои идеи в логическую цепочку, но как видите... т.е. не видите результаты Пришел к выводу что диздок нуждается в доработке по мере развитии иерархии - в более детальном описании (Archon уже работает). Т.е. надо работать над тем и другим параллельно.
И-так, поехали!
Пока моя картинка всего происходящего в логике игры таковая:
Есть игровой мир, где протекает жизнь наших юнитов (дома тоже относятся к этой категории, надо подумать над оружием). У каждого з них есть свой интеллект - способ реагировать на событие, собирать информацию (сенсорные органы СО). Его мы обзовем Ai юнита. Он позволяет игроку и глобальному Ai (для игрового мира нету разницы между ними) не следить за каждым шагом их подопечных, а задавать более общие задания: патрулировать или охранять территорию или, даже просто, стоять, ведь при этом задействованы их органы чувств, постоянно собирающие и анализирующие информацию. Все эти разведданные направляются в очередь сообщений (структуры хранения данных на этом этапе не обсуждаем). В этих данных может храниться вся информация о юните, а также все что он воспринимает своими СО. Таким способ мы реализовываем односторонние средство общения между игровым миром и Ai с игроком, создавая вспомогательный транзитный уровень. Т.е. моя цель - поделить всю игру на логические уровни, что позволить каждому заниматься тем, что умеет, а в случае смены инструментов, локализовать изменения.
6 уровней
1 игровой мир ИМ: все что "живет", Ai юнитов
2 централизации информации о ИМ: различные структуры данных, с него снимают информацию уровень вывода и ИИ
3 ИИ
4 уровень вывода: монитор
5 уровень ввода: мышка, клава
6 уровень управления ()или уровень команд), чем-то похож на 2-ой, так как служит промежуточным между ИМ с ИИ и уровнем ввода
Ну, пока вот... Честно говоря не хочется перечитывать написанное - не легкое это задание сформулировать словами ту белиберду, что твориться в голове.. Но пока основная идея состоит в этих уровнях и их взаимодействии между собой, что скажите по этому поводу?
PS для тех, кто не в курсе - сайт Обреченных http://doomed-game.narod.ru/
Вот, как я это вижу (описал более подробно, чтобы понятней было):
1 World. Тут все как у тебя. Еще: Этот уровень отправляет сообщения в Environment, сообщая таким образом о своем изменении).
2 Environment - посредник между World и Game. Содержит очереди сообщений, а также все необходимые функции для их отправки и получения. Выполняет команды, полученые от игрока и АИ (то есть меняет World).
3 Game - обобщает AI и Human. Проходит циклом по всем игрокам (их же несколько) и обеспечивает взаимодействие между каждым игроком и AI/Human (в зависимости кто играет).
3 AI - запрашивает через Game информацию о мире, принимает решения, и отправляет комманды в Environment (тоже через Game).
4 Human - запрашивает через Game информацию о мире, выводит все что надо на экран и на колонки (используя граф-движок), считывает данные с клавы и мышки и отправляет комманды в Environment через Game.
Добавлено через 1 мин.
Кстати, может Environment и Game объединить?
После обсуждения с Hardcase`ом система притерпела изменения. Во первых рекомендую прочитать статью об уровнях исскуственного интеллекта: http://pmg.org.ru/ai/ai_rt.htm.
Уровни World и Environment слились. Общие очереди команд были признаны ненужными. Теперь у каждого юнита есть своя очередь приказов. В последствии специальный обработчик (он включен в объект юнита), последовательно считывает эти приказы и вызывает соответствующие методы.
1 World. Включает в себя все внутриигровые объекты, карту, объекты на ней, юнитов, здания...
2 Game. Главный элемент. Отвечает за внутриигровую логику. В целом, все как в предыдущем посте.
3 Human/AI - можно, их, конечно, разделить... но с точки зрения Game, Human и AI идентичны. Human получает информацию из World, затем выводит ее на экран с помощью уровня Graphics. Также он реагирует на нажатия клавиш/движения мыши и дозаписывает юнитам/зданиям команды в их очереди приказов. AI действует аналогично, только информацию он не на экран выводит, а использует ее, чтобы выработать стратегию действия и отдать юнитам нужные приказы.
4 Graphics. Графический движок.
Народ, включайтесь. Без обсуждения мы ничего не родим .
Давным-давно, в самом начале, я давал ссылки на книги по созданию игр(правда на С++), там прекрассно написано, что куда и как...
Мысль понял, полностью согласен. Но, имхо, это относится к реализации модуля искусственного интеллекта в целом, а уж как он там подразделяется на тактический и стратегический уровни - это вопрос программирования AI, а программирование AI еще не началось. Схему эта идея, похоже, не затрагивает. Сейчас важнее вопрос, что стоит менять в схеме. Если ничего, то пора ее уже наконец углубить, реализовать в коде и получить скелет будущей проги.