Игровая алхимия и алхимическая онтология

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

    Задумался — можно ли сделать взаимодействия игровых елементов более алхимично.
    Так, чтобы взаимодействия их происходили не на основе списка известных разработчику реакций, а на основе свойств элементов, котрые они приобретают в результате других реакций или по своей структуре.
    Чтобы, например, все производные горючего элемента оставались горючими, и не нужно было бы прописывать для всех их реакцию с огнём.

    Или чтобы можно былобы получить золото(металл+солнце) путём объединения руды(металл+земля), мёда(солнце+воск) и отделением воска и земли с помощью огня и воды, а также кучей других способов соединить металл с солнцем.


    Характеристики элементов.



    Элементы получаются с тремя характеристиками:
    название, компоненты, свойства.

    Компоненты образуют иерархию. Где-нибудь на максимальной глубине должны быть базовые элементы (атомы Аристотеля) — земля, вода, воздух, огонь.
    Возможно, имет смысл учитывать количественный состав, как и в настоящей алхимии.
    /* Например, металлы там образовывались различными пропорциями ртути (эталон металличности) и серы (эталон горючести). Количество серы определяло, видимо, степень плавкости металла. */

    Свойства, по большому счёту, определяются составом компонентов и субкомпонентов.
    /* Например, наличие серы определяет горючесть. */
    Но очевидно, что некоторые свойства не выводятся из составляющих, но только из их сочетания.
    /* Например, сочетание негорючих компонентов может образовать дерево, которое само по себе горючее. */
    Иначе вообще не получится образовывать принципиално новые свойства,
    развечто описывать их сложными иерархическими шаблонами.

    Взаимодействие элементов должно происходить на основе их свойств.
    Свойства сами по себе организуют элементы в классы по типам возможных взаимодействий.

    Взаимодействие может происходить не на уровне элементов в целом (как в реализации по ссылке), а на уровне компонентов.
    Скорее всего, такой способ нужно использовать как дефолтовый, когда у элемента нет особых свойств.
    Имеет также смысл попробовать указывать/вычислять степень активности свойств,
    которая бы угасала на больших уровнях вложенности компонентов.
    /* Типа того, что на 1ом уровне элемент огня жгёт: солнце(эфир+огонь), а на более глубоких уже нет: мёд=воск+солнце(эфир+огонь) — не жгёт, но греет. */

    Может быть, можно утсроить так, чтобы элемент сам по себе (своим составом) определял особое свойство. Тогда дополнительно свойства описывать не нужно.
    С одной сторны, это даёт большую гибкость, потомучто позволит в однотипных реакциях получать разный результат.
    С другой стороны, придётся перечислять одинаковые реакции для всех однотипных элементов.
    Оптимально было бы определить и то и другое, с приоритетом более конкретных реакций.

    Онтология


    получается из двух частей:
    — каталог элементов;
    — каталог реакций;

    Каталог элементов

    приписывает соединениям компонентов названия(или пиктограммы) и особые свойства этих соединений.

    В результате интенсивных махинаций могут образоваться неизвестные заранее вещества.
    /* Например, железо(ртуть+марс) + мёд(воск+солнце) = (ртуть+воск+марс+солнце) */
    Тут можно объединять компоненты в уже известные вещества, а остальные считать примесями.
    /* (ртуть+воск+марс+солнце) = золото(ртуть+солнце) + примеси(воск+марс) */
    Для этого нужно каким-то образом определять степень устойчивости каждого соединения.
    Какие-то весовые критерии (например, подсчёт общего количества атомарных элементов) тут не подходят, потомучто общее количество их не меняется.

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

    Каталог реакций

    должен определять, во что превращаются элементы с определёнными свойствами.

    Тут возможно два подхода:
    — реакции определяют превращения элементов;
    — реакции определяют превращение свойств;

    Если указывать только элементы (считая их самоопределяющими свойства), формулы получаются простые:
    foo +bar → baz, foobar
    /* огонь + дерево → огонь, уголь, дым */

    Если указывать превращение свойств, формулы получаются сложнее:
    foo{propfoo} + bar{propbar} → foo{propbaz} + bar{propbabaz}
    /* нечто{горючее} + что-нибудь{горящее} → нечто{сгоревшее} + что-нибудь{потухшее} */

    При этом отдельно надо обозначать элементы с изменившимися свойствами.
    /*
    дерево{сгоревшее} = уголь{},
    огонь{потухший} = 0 — сам по себе огонь исчезает
    лава{потухшая} = лава{горящая} — тоесть не тухнет.
    */
    И это получается весьма удобно.
    При описании элемента можно указать все его превращения используя универсальные свойства.

    При более универсальном способе формулы должны включать и то и другое.
    Это получается весьма сложно как для создания так и для применения,
    зато даёт возможность описания реакций с катализаторами /* типа соединения компонентов в присутствии огня или воды */. Впрочем, катализаторы можно описать и с помощью специальных свойств.

    Реализация


    может получиться весьма интересной и сама по себе, и в составе каких-нибудь виртуальных миров.

    Однако, очевидно, что для создания онтологии мало-мальски целостного мира в одного столько не выкурить.
    Имеет смысл сделать что-то наподобие вики-лаборатории, чтобы все желающие могли экспериментировать, придумывать и называть новые вещества и свойства.
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 22
    • +2
      А Вы все элементы там открыли? :)

      Идея сделать «настоящую алхимию», конечно, интересна, но получится ли такой же веселой? С элементами вроде «Ходячее Дерево» и рекциями «Дракон + Человек = Дракон + Пепел»?
      Эта игра вообще сделана на логике, что и делает ее на мой взгляд интересной.
      • 0
        Нет, я открыл примерно 70, мне стало интересно, как оно устроено, и я полез внутрь скрипта.

        Все реакции для лулзов вполне реализуемы и во всех рассмотренных мной вариантов описания.
        Но в той алхимии дракон+человек не работает для дракон+алкаш, а в случае более универсальных взаимодействий — будет.

        • 0
          Логика, говорите? Я один там всё пытаюсь рецепты составлять и проверяю, что идёт под водку, а что нет? =)
          • +3
            водка совместима только с человеком :))
            • +1
              Хм, я предпочитаю более лёгкие закуски =)
          • 0
            моя идея заключается в том, чтобы перенести логику в сам механизм алхимии, а не в дизайн правил.

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

          • 0
            Мда, спорим до кварков не доберетесь?
            • 0
              алхимия на то и алхимия, что не нужно моделировать кварки, а можно подняться на какой-то уровень абстракции.

              аристотелевские «атомы» взяты просто как обычная для всякой эзотерики модель.
              можно и вовсе без них обойтись.
            • 0
              В общем идея мне кажется не плохой. Но тут ещё, как и в любой игре, главное реализация. Конечно если игра будет полностю серьёзной, т.е. без всяких интересностей и забавностей (ну вроде того же человек+дракон), то она наверное будет не интересна.
              Хотя мне кажется что в такой игре ещё нужно как-то побороть потенциальную скучность. ну например при большом кол-ве элементов можно забыть что с чем уже скрещивал, а что нет. Собственно что мне не понравилось в той алхимии — не было кнопки вроде (показать что с чем я уже скрещивал а что нет). А вот как это реализовать — тоже отдельный вопрос, ведь вариантов может быть множество.

              А так… если вдруг вы или кто-то реализует, то с удовольствием поиграю)
              • 0
                ну я пока сооружаю саму систему, а не игру.

                в формате вики-лаборатории оно будет, наверно, не очень интересно само по себе.
              • 0
                Идея сама по себе интересная. Но мне кажется большой шанс, что ничего путного не выйдет. В итоге будет либо очень сложная (так сказть ориентированая на гиков), либо однообразная, так как вы предлагаете описать универсальную модель поведения. Но можно сделать гибрид, хотя вроде как в оригинале так и есть. У вас все равно идет каталог реакций, а св-ва нужны чтобы добавить немного реальности. Как например с огнем, чтобы любой организм мог сгореть, либо яд — любое живое сущест-во погибает. В итоге получается, что классический вариант уже неплохо продуман (наверное поэтому он и получил такое широкое распространение).
                Единственное, я бы с удовольствием посмотрел на ремейк с применением сегодняшних эффектов и ресурсов, а также с введением некоторых игровых моментов. Вот пара примеров того, что я имею ввиду:
                — нарисовать почти на каждый элемент иконку. Естественно оставить тултип. Мб в 3D.
                — анимированые реакции. В большинстве случаев они будут конечно же одинаковы, ибо трудно сказать насколько реально все реакции проанимировать. Но смотрелось бы эфектно: дракон сжигающий любое существо и то что горит, эволюция организмов и т.п.
                — в оригинальной версии был один интересный момент: все вещества нужно было создавать с нуля, а точнее с огня, воды, воздуха, земли.В хтмл-версии же, каждый элемент можно восстановить из списка (не нужно проходить всю цепочку). В классической версии это немного угнетало, но вот в html-версии получилось очень легко. Нужен компроммис, например вам дается 3-6 ячеек где можно хранить элемент.
                Вообще можно много придумать. Взялся бы кто )
                • 0
                  а что вы называете классическим вариантом? :)
                  я умудрился пропустить и видел только html-реализацию.

                  • 0
                    ага. уже нашол.
                  • 0
                    универсальность всёравно нужна, чтобы была возможность превращения веществ и смешивания чего угодно с чем угодно.
                    иначе игрок оказывается ограничен фантазией разработчика, но не своей.

                    а каталог реакций нужен, потомучто на одной универсальной химичности ничего интересного в принципе не получится.

                    нужен именно что гибрид из обоих подходов.
                    я пока не очень представляю как это эффективно сделать.
                  • +3
                    Можно сделать вебдванольно: пусть посетители шлют свои варианты реакций, если реакция не идёт. При достижении определённого количества сходных ответов и после модерации эти реакции добавлять. Очень быстро наберутся всевозможные комбинации и много новых элементов.
                    Только есть сомнение, не пострадает ли процесс от ещё большего числа элементов.
                    • 0
                      здравая мысль!

                      можно даже сделать так: «непрописанная реакция» происходит просто нестабильно, с несколькими равновероятными результатами (это легко сделать исходя из чисто «химических» свойств).
                      если посетитель сохраняет куда-нибудь или использует один из вариантов — то его вероятность повышается.
                      в результате более используемые реагенты становятся более «стабильными»
                      • 0
                        Сомневаюсь что их этого выйдет что-то путное. Точнее скорее всего появятся колизии (когда к-во элементов будет превышать тысячу), как например вполне реальна ситуация, что сгорая человек/животное/растение будет давать пепел, а если дракон сожжет — то мертвый организм. Пример может не совсем корректный, но получится что-то в таком духе. Нужна будет жесткая модерация. На ста элементах это легко, а вот дальше?
                      • 0
                        Вот это вы здорово придумали! Есть такая вещь — Годвиль (Godville) — это ZeroPlayerRPG. Так там игроки сами придумывают бОльшую часть контента и он реально доставляет. Тут тоже получится хорошенькая гремучая смесь, зуб даю.
                      • 0
                        Сделали бы лучше игру, которая будет основана на естественной химии.
                        • +2
                          в естественной химии элементов меньше, чем в хтмл-версии,
                          и они не доставляют.
                          • 0
                            Так а зачем только элементы? Создавайте в-ва, а точнее молекулы, а таких, я думаю вы и сами знаете, очень много.
                            Другое дело что нет интереса в естественной химии. Суть алхимии — поиск комбинаций (порой самых неожиданных, а иногда очень забавных), а в любом учебнике химии будет прохождение «естественной химии».
                          • 0
                            в любой теме про алхимию находится кто-то, кто хочет химию:) Алхимия потому и стала популярной, что она простая и не требует специальных знаний. А кто бы стал в нее играть, если бы нужно было из атомов получать какой-нибудь неведомый нитрат полихлорвинилэтила?

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое