Вопрос

Прочитав довольно много статей об искусственной жизни (предмет, который я нахожу очень интересным) вместе с несколькими вопросами прямо здесь, на SO, я начал играть с идеей создания (очень, очень, очень) простой симулятор. Даже графика не требуется. Если я пропустил вопрос, пожалуйста, не стесняйтесь указывать мне на него.

Как я уже сказал, это вряд ли будет симуляцией уровня симов. Я верю, что он едва достигнет & Приемлемого бесплатного программного обеспечения & Quot; уровень, это просто учебное упражнение и что-то, чтобы поддерживать свои навыки во время перерыва. Основная предпосылка заключается в том, что создается общий человек. Ни имени, ни роста, ни чего-либо подобного (как я уже сказал, просто), единственное, что он получит - это список & Quot; ассоциаций & Quot; и универсальный " используйте " ;, " забрать " и " смотрите " способностей.

Мой первый вопрос касается ассоциаций. Что SO рекомендует как эффективный способ справиться с такими вещами? Я думал о мультикарте, с относительно простой настройкой ключа: то, что он хочет (еда, еда, отдых и так далее), а другая часть (извините, мой разум потерял сознание) - это то, что он связывает с этой потребностью. / р>

Например, скажем, у нас есть холодильник. В холодильнике есть еда (просто базовый базовый объект). Первоначально человек не связывает холодильник с едой, но он связывает еду с голодом. Поэтому, когда его голод растет, он начинает произвольно искать еду. Если еды нет в пределах досягаемости, она & Использует & Quot; объекты, чтобы найти еду. Поскольку у него нет известных ассоциаций с едой, он использует вещи волей-неволей (вероятно, ищет ближайший объект и расширяется). Как только он использует / открывает холодильник, он видит еду, устанавливая связь (читай: вставка пары &; Еда, холодильник & "), Что холодильник содержит еду.

Теперь я понимаю, что это будет намного сложнее, чем кажется, и я готов это решить. Вопрос в том, подойдет ли мультикарта для (возможно) экспоненциально расширяющегося списка ассоциаций? Если нет, то что будет?

Второй вопрос , который у меня есть, вероятно, гораздо проще. Проще говоря, будет ли универсальный интерфейс объекта / элемента подходить для большинства предметов? Другими словами, будет ли общий & Quot; использовать & Quot; работать интерфейс для чего я намерен? Я не думаю, что я объясняю это хорошо.

В любом случае, любые комментарии приветствуются.

Это было полезно?

Решение

Если бы вы делали это как сложный проект разработки, я бы предложил использовать эквивалент отражения Java (замените там язык по вашему выбору). Если вы хотите сделать игрушечный проект в качестве начального усилия, я бы предложил, по крайней мере, применить собственную простую версию рефлексии согласно следующему обоснованию.

Каждый артефакт в вашей среде предлагает определенные возможности. Простая модель этого факта - спросить, что & Quot; глаголы & Quot; применимы к каждому объекту, с которым сталкивается ваш виртуальный персонаж (включая возможную зависимость от текущего состояния этого объекта). Например, ваш персонаж может & Quot; открыть & Quot; холодильник, ящик с хлопьями или книга, при условии, что каждый из них находится в & закрытом & предложении; государство. Как только книга открыта, ваш персонаж может прочитать или закрыть ее. После того, как холодильник открыт, ваш персонаж может & Найти его! чтобы получить список видимого содержимого, удалить из него объект, поместить в него объект и т. д.

Дело в том, что в типичной ситуации ваш персонаж может смотреть вокруг, чтобы увидеть, что видно, запрашивать объект, чтобы определить его текущее состояние или что можно с ним сделать (т.е. " what-state " и " what-can-i-do & "- это общие глаголы, применимые ко всем объектам), а затем используйте знания о его текущем состоянии, состоянии объекта и списке глаголов для этого объект, чтобы попытаться сделать разные вещи.

Реализуя набор положительных и отрицательных отзывов, со временем ваш персонаж может " learn " при каких обстоятельствах он должен или не должен вести себя по-разному. (Очевидно, вы можете сделать эту симуляцию интерактивной, попросив пользователя принять участие в предоставлении обратной связи.)

Выше приведен лишь набросок, но, возможно, он может дать вам несколько интересных идей для игры. Повеселись! ; -)

Другие советы

К первому вопросу:

Насколько я понимаю, у вас есть отношения один ко многим. Так что да, мультикарта мне подходит.

На второй вопрос:

Да, я считаю, что универсальный интерфейс для объектов подходит. Возможно, используйте что-то похожее на REST для управления состоянием объекта.

Некоторое время назад я слышал подкаст с разработчиком The Noble Ape Simulation , который может быть интересным для вас - концептуально и, возможно, в коде, так как вы можете исходный код , а также загрузить двоичные файлы .

Подкаст был FLOSS Weekly 31 с Рэндалом Шварцем и Лео Лапорте.

Жизнь с помощью lisp (sbcl):)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top