Эффективные методы для симуляции жизни - PullRequest
3 голосов
/ 06 декабря 2008

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

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

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 06 декабря 2008

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

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

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

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

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

1 голос
/ 07 декабря 2008

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

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

1 голос
/ 06 декабря 2008

На первый вопрос:

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

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

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

0 голосов
/ 06 декабря 2008

Жизнь с lisp (sbcl):)

...