Вы видите копию треда, сохраненную в 06:51.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
> Что это?
IF - жанр игр, где весь игровой процесс идет через (около)литературный текст.
> Какие IF бывают?
В основном разделяют два типа IF:
- Менюшки (Menu-based)
- Парсерные (Parser-based)
> Где почитать?
ifwiki.ru
> На чём писать?
Парсерные: Inform 6/7, RuTADS
Менюшные: Twine 2
Но есть большое количество и альтернативных движков, и ничего не мешает написать движок самому, благо это не так сложно.
> Обсуждаем разработку интерактивных историй.
Подписываюсь на тред.
За уже три года сидения в этом разделе я пришёл к выводу, что только интерактивки пилить меня и хватит.
мимографоман с сундучком охуительных историй
Да, тащемта, сейм щит. IF-ки самые простые в плане реализации. Писать текст все умеют, а вот красиво рисовать, делать музыку, вот это всё - нет. IF отлично подойдет скучающему программисту.
Моя проблема в том, что я настолько обленился, что даже графоманить лень. Просто мечтаю, глядя в потолок. Это пиздец. Совсем скатился.
На них можно хоть сколько-нибудь заработать? Если это не порнуха.
Сейм щит. Правда, я скорее уперся в теоретическую базу IF. Как создать игру, с полноценным симулированным миром? Вот посмотришь на Game of Life, там буквально насколько правил в основе мира, а зато какое многообразие! Как такого добиться подобного (Simple Rules for Complex Behavior) для IF? Вопрос открытый.
> На них можно хоть сколько-нибудь заработать?
Ну, если ты начнешь попытаться продать свое поделие, то тебя нахуй пошлют. Никому не хочется покупать кота в мешке.
Любопытная тема. Предлагаю устроить итт мозговой штурм. Вброшу тезис для затравки. Использовать для симуляции мира систему навроде GOAP. В тексте это всё гораздо проще реализовать, чем во всяких там анимациях моделек.
>>742022
Главное - реклама, парни. Если грамотно пропиарить, можно продать всё. Даже интерактивную книжку с белыми буквами на чорном фоне. И продаётся же. 10 лет Йоко Таро плохо пропиарил свою ИФку с элементами жрпг. И не продал. А потом хорошо пропиарил вторую часть ИФки (с элементами буллет хелла) и так хорошо пропиарил, что теперь и первая продаётся бойко.
> GOAP
Вот здесь поподробней. Судя по гуглу, эта концепция создана для NPC? Это хорошо конечно, но это никак не объясняет, каким образом можно создать симуляцию полностью процедурного мира. У меня много опыта по этой теме, поделюсь ими в своих постах.
Ну, AI Dungeon к примеру хорошо продается, и пиара много. Даже те, кто плохо знаком с IF играли в него.
Это ты верно конечно сказал. GPT настолько часто несет бред, что это уже никакая игра не получается. Но справедливости ради, интерактивная литература может быть и такой, в которой игрок пишет историю, но используя при этом великую силу рандома и процедурную генерецию. Об этой концепции тоже как-нибудь напишу, её плюсы и минусы.
> эта концепция создана для NPC?
Да. Но я заметил, что любая игровая сущность, будь то НПЦ или, скажем, погода в мире, или миграция стай/стад животных/зомби/самовоспроизводящихся разумных роботов может действовать по заранее расписанному плану с любой нужной тебе степенью сложности и разветвлённости.
... И комплекс этих игровых сущностей, которые вместе образуют целый мир, тоже может действовать по заранее расписанному тобой глобальному плану.
Я тоже заметил, что любой ИИ можно выразить как грубый поиск (брутфорс) решения заданной задачи среди всевозможных действий. То есть можно скрытно всё просчитать не заморачиваясь. Даже если ИМ не знает, как правильно взаимодействовать с предметами, можно всё виртуально переиграть, и выбрать ту стратегию, которая по крайней мере не приводит к смерти.
Ты только что китайскую комнату.
>>742039
И не надо расписывать каждое. Достаточно расписать реакции на 9 действий. 3 негативных, 3 нейтральных, 3 позитивных. Игроку подавать на вход меню с 3-5 вариантами действий, рандомно выбранными из вышеуказанной 9-балльной шкалы. Когда игрок догадается, что его действия не свободны, интерактивка уже к финалу подойдёт и время манибека закончится.
Вы видите курицу, клюющую зёрнышки. Ваши действия:
1. Убить курицу клюшкой для гольфа (если клюшка есть в инвентаре).
2. Кудахтать по куриному (навык общения с животными).
3. Сочинить стих о курице (навык поэзии).
4. Попытаться поймать курицу (ловкость не менее 20).
5. Идти дальше.
> Игроку подавать на вход меню с 3-5
Это менюшка, это другое. Сейчас речь идет о парсерных, где ты можешь брать вещи сувать их в другие вещи, кидать их, жевать их, садиться на них, прыгать на них, чесаться ими.
В менюшках вообще с подобным заморачиваться не нужно. Менюшки - книги как есть. В них важен сюжет, герои. А свобода действий - так, на втором плане. Это не плохо, на самом деле можно на менюшках сделать невероятную годноту. Но у меня, как у Творца Миров, сердце не к этому лежит
Делаю ИФ (рпг) игру, которая сочетает и менюшный формат и парсерный.
Все взаимодействия по клику переводятся в аналог действий парсерных, но пока всё ещё на зачаточной стадии.
Почитал тред - на самом деле по прям совсем имитации реальных взаимодействий - тут просто надо сесть и пилить их, но не для конктретных сущностей, а для каких-то свойств сущностей, а потом их навешивать процедурно. Насчёт процедуронсти - погугли как Dwarf Fortress 250 мать его лет истории мира генерирует перед началом игры. Среднестатистической игре любого жанра столько процедурности конечно совем не надо, но можно по аналогии с рогаликами какие-то вещи перенять. По реакции мира и НПС на действия игрока - тут можно опять же через entity component system навесить шаблонные реакции, которых штук 5 и они только на НПС какого-то региона повесятся, где ты что-то сделал. Тебе не надо влиять на весь мир прям и продумывать эффект бабочки, это просто не рационально.
> сделайте
Я???
Сами делайте. А вообще консолька ван лав. Разрабатывай пердачелло под консольку, сам потом мне спасибо скажешь.
Вполне. Ты видимо не в курсе, о чем в треде пиздели. Вспоминали Нир. Все ебала известны можешь на ютубе посмотреть, когда там посреди сюжета ИФка начинается вместо игоры. И ничо, хавают.
> речь идет о парсерных
I suppose you know English well, because in Russian you will fuck up with all the forms of words with their cases, declines and suits.
Русская грамматика это хуйня. Главное иметь под рукой мощные средства для парсинга. К примеру, я использовал в одном своем неоконченном проекте язык пролог, у которого есть встроенные инструмент парсинга - DCG.
>AI Dungeon к примеру хорошо продается
Уже нет, лол. Тебя и вчерашний шторм не разбудил.
Ну и раз уж речь зашла, предлагаю обсудить использование нейросеток в играх.
Сразу говорю, что я нихера не понимаю в нейросетках, и очень немного понимаю в кодинге, так если кто знает побольше - было бы круто послушать мысли.
Собсно, как >>742033 и сказал:
> GPT настолько часто несет бред, что это уже никакая игра не получается.
Поэтому, естественно, на чистом ГПТ мы далеко не уедем. Что понятно, ибо её оригинальная цель - анализ и генерация текста, а не игрушки.
Но что если совместить его с классической игромеханикой?
Значится, у нас каждый объект в игре имеет атрибуты (характеристики, навыки, трейты, описания и тд), + куча функций определяющих взаимодействие этих объектов.
Соответственно, игрок пишет заявку, нейросетка анализирует заявку, определяет какие объекты, каким образом в заявке взаимодействуют, и выбирает какую функцию из имеющихся выбрать. Вызывает функцию, передав ей участвующие объекты, функция обрабатывает это дело, меняет атрибуты объектов, после чего нейросетка уже на основе заявки, контекста, и изменившихся атрибутов объектов генерирует описание и выводит его игроку.
Я думаю, таким образом можно будет улучшить стабильность и логичность нейросетки, ибо если ты отрубил гоблину ногу, и он получил трейт "безногий" нейросетка не должна внезапно начать описывать, как он быстро от тебя убегает.
Ну и за счёт каких-то фоновых процессов и взаимодействий, игра будет более... игрой и не будет требовать чтобы игрок её за ручку водил.
Ну и из минусов - при такой системе создание сценариев будет гораздо более сложным процессом.
Ну и я хз насчет технической возможности интеграции нейросеток с кодом.
Ссылку нашел, а прочитать ридми не осилил. Это старая версия на гпт-2. За нормальную гпт-3 они требуют 30 баксов в месяц
Мне совершенно не нужен рандомно генерируемый контент. У меня есть конкретные охуительные истории, в которых уже лично мной нагенерировано порядочно авторского контента, сладкого, деревенского, как в деревнях пекли. Соответственно и вариативность мне не нужна, ибо концовка у меня уже совершенно не стесняясь, по диктаторски нагло, цинично задумана одна единственная.
А где твои игры?
Пиши книгу тогда.
> > На них можно хоть сколько-нибудь заработать?
Можно. Месяц назад где-то вышла "Жизнь и страдания сэра Бранте" - и отлично всем зашла. /v ссался в штаны от восторга
Вместо того, чтобы писать километры if a, if b, if c при парсинге чего-либо, я придумал записать все существующие команды в список с объектами, а затем в цикле проходить по массиву одним for (i=0, i<list.size, i++) if (command == list.key) process(list.action); где key команда из базы команд, action описание действия, которое эта команда делает, оно подаётся аргументом в функцию-процессор, а command - это слово введённое в консоль (в самом простом случае слово, потом я усложнил до парсинга целой строки с пробелами, как во взрослых консолях). Потом оказалось, что я просто перенёс огромный свич в процессор и отказался от процессора и в поле action начал хранить имена ивентов, функций и вызывать напрямую.
Я правильно понимаю, что я самостоятельно изобрёл так называемый паттерн "токенизатор"?
Прости, что долго не писал. Есть такой язык богов - Пролог. Он расширяем, и в нем есть такие концепции как DCG и CHR.
DCG (Declarative Grammar Rules) - правила грамматики. Как это можно применить в IF?
Вот пример парсера:
verb("взять") --> "взять".
female("ручка") --> "ручк".
causative(X) --> female(X), "у".
parse(Verb, Obj) --> verb(Verb), " ", causative(Obj).
С помощью этих правил парсинга, можно легко парсить грамматики любой сложности.
Далее, а что такое мир в IF? Это набор фактов. К примеру: "В комнате есть стул, на стуле находится игрок, игрок держит ручку."
Пролог - это про программирование фактами, по этому он идеален для подобного рода задач.
CHR (Constraint Handling Rules) - правила обработки ограничений. Они нужны для прямого логического вывода.
К примеру:
X is item, X is in Room, player is in Room ==> player can take X.
Можно прочитать как "Если X это предмет, X находится в комнате Room, игрок находится комнате Room, то игрок может взять X"
Как видите, ООП сосет с проглотом у логического программирования в задаче создания интерактивных историй.
> Главное !cut не заебаться ставить
В CHR вообще нет cut. CHR это прямой логический вывод (forward chaining), в нем cut просто не имеет какого-либо смысла.
> Это все равно поиск по дереву.
В CHR факты создаются во время исполнения, в стандартном backtracking из статичных фактов исходит доказательство. В CHR просто не нужен cut, ибо ты контролируешь вывод фактов почти что вручную (через замещение одного факта другим).
https://github.com/ostov-larion/noir
Движок еще нужно доработать (скоро выпущу новую версию), однако DSL движка расширяем, потому если нужны какие-то дополнительные функции, то их можно просто добавить.
>Жизнь и страдания господина Бранте
После успеха этого сырого дерьма окончательно убедился, что продать можно все что угодно.
В первое не играл, а парабола на мой взгляд совсем не сырой вышла, а даже интересной. Да и просили за нее, помнится, сильно меньше чем за бранте, а усилий вложено очевидно намного больше.
>В первое не играл
Ыыы. Так никто не играл. Потому что это и не игра была, а просто неинтерактивная говнокнижка.
Но продавалась как игра.
В параболе тоже ходьба, только с разветвлениями. Ну, на ползалупки выше эстер, конечно, да.
По уровню дроча "критиков-инфлюэнсеров" они одинаковы.
Соре, меня не особо волнует кто сколько дрочит
Я про Бранте
Вижу что выгружать в виде текста он умеет только все разом, как для редактуры, а в остальном вроде normalno
> Есть тут пользователи оного
Ну я допустим.
> какие подводные камни?
Никаких. Это прекрасный движок с большими возможностями.
>использование нейросеток в играх
Искусственная нейросеть - грубая модель биологических нейросетей. Поэтому сама по себе она умеет только выводить в себе некие формулы, связывающие между собой вход и выход. Чтобы научить нейросеть делать какую-то полезную для тебя работу, нужно скормить нейросети миллионы примеров, отмеченных метками "правильно" и "неправильно" (можно обойтись без меток, но с ними проще). К примеру, чтобы обучить нейросеть распознавать котят, нужно вручную отсортировать миллион фото котят и миллион фото без котят. А для обучения AI Dungeon, нейросеть кормили книгами и, возможно, записями интерактивных историй из обычных игр. То есть нейронке потребовалось переживать тонны текста, чтобы научиться генерировать что-то подобное тексту.
В твоём же случае тебе придётся каким-либо образом создать огромное число примеров поведения монстров, неигровых персонажей и других объектов игрового мира, чтобы скормить эти примеры нейронке. Так что не думай, что нейронка сама выдумает то, что тебе лень вручную описывать. И не думай, что её результаты будут лучше простого Random(), если ты сделаешь для неё недостаточно правильных примеров. Если бы у тебя был уже готовый массив данных, как в случае с фото котят и электронными книгами, тогда нейронка тебе могла помочь, а так получается что ты будешь делать всё вручную.
Преимущество нейронки - вычислив формулы из ограниченного количества примеров, она начинает применять те же формулы на все остальные возможные комбинации входных данных. Но если в твоей игре возможных комбинаций не так уж много, то смысла в нейронке вообще нет, ты примеров сделаешь для неё почти столько же, сколько возможно комбинаций. Пример: есть 2 типа предметов и 2 места для их размещения, следовательно всего 9 вариантов генерации - для нейронки тебе потребуется описать их все, но какой толк в нейронке, если ты уже описал все возможные варианты? Проще уж через Random().
>Пролог - это про программирование фактами, по этому он идеален для подобного рода задач.
Возможно, но что на счёт компиляторов/интерпретаторов? Интерактивные истории программно настолько просты, что сделать их можно на чём угодно, даже не буду упоминать ассемблер. Следовательно решающим фактором является распространённость/портируемость языка, а не какие-либо другие его качества. В этом смысле сегодня лидирует JS, потому что веб-браузер есть в каждом чайнике, а в браузере - интерпретатор JS.
В частности, насколько сложно разрабатывать на прологе под андроид/иос? Ведь сегодня основная аудитория игр - на мобильных устройствах. И тем более в контексте текстовых игр, которые удобно использовать на любом дисплее, но лучше бы этот дисплей был переносным.
А удобство написания парсера значения не имеет. Парсер пишется всего один раз, всё остальное время нужно писать саму игру. Кроме того, на мобильных устройствах парсерные игры по определению менее удобны для большинства пользователей, следовательно нужно копать в сторону менюшек.
> Возможно, но что на счёт компиляторов/интерпретаторов?
Для веба есть Tau-propog. На десктопе есть SWI-prolog, который кроссплатформенный.
> Интерактивные истории программно настолько просты
Не совсем. Это зависит от мощности симуляции. Как только ты захочешь сделать огромную симуляцию, где можно взаимодействовать с каждым камнем тут могут помочь только встроенные DSL в функциональных или логических языках (Haskell, Prolog, Lisp). Когда приду в общагу, покажу скриншоты своего микро DSL для интерактивных историй.
> В частности, насколько сложно разрабатывать на прологе под андроид/иос?
SWI-пролог есть на андроид, но я не знаком с разработкой под андроид, потому сказать ничего не могу. Однако можно просто прикрутить WebView и запускать Tau-prolog (это самый логичный вариант).
> А удобство написания парсера значения не имеет
Имеет. Нет смысла писать парсер процедурно. Логичней использовать RegExp, или контекстно-свободные или контекстно-зависимые грамматики (в прологе это DCG).
> Кроме того, на мобильных устройствах парсерные игры по определению менее удобны для большинства пользователей
Это факт.
>Как создать игру, с полноценным симулированным миром?
Для начала нужно понять, что такое "полноценная симуляция мира". На самом деле, тебе нужна не игра, а модель мира, в которой описаны все возможные объекты, явления, действия, правила и т.д. Симуляция - это пошаговое выполнение всех правил модели. А то, что мы видим на экране - это интерпретация модели, созданная с помощью какой-либо графики или текста. Для примера, мы можем взять bmp-картинку - это последовательность нулей и единиц на диске. Мы можем изобразить это как цвета пикселей, можем как наборы символов, можем как наборы чисел, можем как символы псевдографики. А можем вообще вывести не сами данные, а их текстовое описание, хоть простое "здесь 120 КБ данных", хоть сложное "кошка лежит на клавиатуре". То есть исходный набор данных не зависит от того, как мы пытаемся его изобразить. И вот симуляция мира - это работа с этим исходным набором данных.
>Вот посмотришь на Game of Life, там буквально насколько правил в основе мира, а зато какое многообразие!
Что тебе мешает реализовать те же правила в интерактивной истории? Представим, что клетки поля - это комнаты, а их состояния - это переключение источника света в комнате. Получается, игрок видит:
>В этой комнате светло.
Или:
>В этой комнате темно.
И может ходить в любую из 4 сторон, ждать на месте, зажигать и тушить свет. Вся симуляция происходит либо по таймеру, то есть независимо от выбора игрока, либо после каждого выбора игрока. На практике игрок может найти комнаты, в которых всегда светло, комнаты, в которых всегда темно, и комнаты, свет в которых мигает с определённой частотой; также он может повлиять на ход симуляции переключением света в комнате.
Понятное дело, что такая симуляция в контексте интерактивных историй не очень-то интересна, и не всякий игрок догадается, что мир имеет строгую модель симуляции - будет казаться, что миром правит рандом. Но ты можешь расширять эту модель, например, добавляя новые предметы и свойства комнат.
...вообще, если вкратце, симуляция мира это:
1. Последовательно перебрать все объекты в мире;
2. Для каждого объекта применить его правила;
3. Вернуться на шаг 1.
Всё остальное зависит от того, какие объекты ты создашь и как ты будешь описывать их текстом, то есть что будет видеть игрок.
>Как создать игру, с полноценным симулированным миром?
Для начала нужно понять, что такое "полноценная симуляция мира". На самом деле, тебе нужна не игра, а модель мира, в которой описаны все возможные объекты, явления, действия, правила и т.д. Симуляция - это пошаговое выполнение всех правил модели. А то, что мы видим на экране - это интерпретация модели, созданная с помощью какой-либо графики или текста. Для примера, мы можем взять bmp-картинку - это последовательность нулей и единиц на диске. Мы можем изобразить это как цвета пикселей, можем как наборы символов, можем как наборы чисел, можем как символы псевдографики. А можем вообще вывести не сами данные, а их текстовое описание, хоть простое "здесь 120 КБ данных", хоть сложное "кошка лежит на клавиатуре". То есть исходный набор данных не зависит от того, как мы пытаемся его изобразить. И вот симуляция мира - это работа с этим исходным набором данных.
>Вот посмотришь на Game of Life, там буквально насколько правил в основе мира, а зато какое многообразие!
Что тебе мешает реализовать те же правила в интерактивной истории? Представим, что клетки поля - это комнаты, а их состояния - это переключение источника света в комнате. Получается, игрок видит:
>В этой комнате светло.
Или:
>В этой комнате темно.
И может ходить в любую из 4 сторон, ждать на месте, зажигать и тушить свет. Вся симуляция происходит либо по таймеру, то есть независимо от выбора игрока, либо после каждого выбора игрока. На практике игрок может найти комнаты, в которых всегда светло, комнаты, в которых всегда темно, и комнаты, свет в которых мигает с определённой частотой; также он может повлиять на ход симуляции переключением света в комнате.
Понятное дело, что такая симуляция в контексте интерактивных историй не очень-то интересна, и не всякий игрок догадается, что мир имеет строгую модель симуляции - будет казаться, что миром правит рандом. Но ты можешь расширять эту модель, например, добавляя новые предметы и свойства комнат.
...вообще, если вкратце, симуляция мира это:
1. Последовательно перебрать все объекты в мире;
2. Для каждого объекта применить его правила;
3. Вернуться на шаг 1.
Всё остальное зависит от того, какие объекты ты создашь и как ты будешь описывать их текстом, то есть что будет видеть игрок.
>Для веба есть Tau-propog
Ок, ладно. Я думал пролог никому не нужен и остался в прошлом веке)
>Это зависит от мощности симуляции
Симуляция не имеет отношения к интерактивным историям. По факту, интерактивная история - лишь интерфейс, такой же, как рендерер любого универсального движка. Почему симуляцию мира для юнити-игр пишут на встроенном в движок C#, а не на божественном прологе? Наверное, потому, что симуляция мира спокойно пишется на любом ЯП. И ООП тут даже в помощь, ибо рассматривает все части программы как материальные объекты.
>Как только ты захочешь сделать огромную симуляцию, где можно взаимодействовать с каждым камнем тут могут помочь только встроенные DSL в функциональных или логических языках (Haskell, Prolog, Lisp).
Не вижу никакой причины использовать перечисленные тобой языки для создания симуляции. Тем более что в них, насколько я знаю, нет концепции объектов, лучше бы взял что-нибудь типа Smalltalk, в котором всё - объект. А в чистом функциональном языке симуляция вообще невозможна из-за свойства иммутабельности, то есть создав что-то, его невозможно изменить, в то время как в реальном мире все объекты непрерывно меняются. ООП ближе к реальному миру.
>Нет смысла писать парсер процедурно.
Ты напишешь его один раз. Возможно, в прологе есть встроенный парсер, но это ничего не меняет - внутри он всё равно опирается на императивные языки (тот же машинный код процессора, или машину JS в случае с Тау-поолог). Вот только парсер пролога ты не можешь разобрать и модифицировать, а свой парсер у тебя под полным контролем.
>Логичней использовать RegExp,
Взять самый сложный синтаксис @ называть это логичным выбором.
>>749803
>А как же они в своих мессенджерах тонны текста высирают?
Так же как я пишу этот пост. Разница в том, что в мессенджере ты высираешь текст другим людям, у которых нет удобных кнопок, а у программы эти удобные кнопки могут быть. Кроме того сейчас популярны аудиосообщения в тех же мессенджерах, а в мобильных клавиатурах есть распознавание речи, но всё это - костыли, которые не подходят для игр. Что лучше - нажать пару кнопок или набрать/произнести несколько слов? Очевидно, кнопки лучше.
Также не забывай, речь идёт не об ИИ, а о простых интерактивных историях. Если игроку нужно набирать текст вручную, ему придётся столкнуться с проблемой не поддерживаемых команд - а это дополнительное время на набор текста и сильное разочарование от зря потраченного на набор текста времени. Ну представь, что ты набрал пост, а вдруг браузер крашнулся и потерял текст, ты его запустил снова, снова набрал текст, он снова крашнулся... это очень сильно демотивирует продолжать, а ведь игрок хотел расслабиться в игре, а не мучиться подбором ключевых слов.
>Сделай игру с закосом под мессенджер и станешь миллионером, дарю идею.
Такие уже есть, называются чат-боты. Толку от этого ноль, пока нет полноценного ИИ, способного заменить собой человека. Хотя некоторым людям для счастья вполне хватает простых чат-ботов...
Кстати, кроме чат-ботов есть игры, которые по скриншотам показывают что-то вроде мессенджера, но с сюжетом. Правда, наверное, там всё-таки менюшки и ограниченная свобода, но не суть - идея давно не нова.
>Для веба есть Tau-propog
Ок, ладно. Я думал пролог никому не нужен и остался в прошлом веке)
>Это зависит от мощности симуляции
Симуляция не имеет отношения к интерактивным историям. По факту, интерактивная история - лишь интерфейс, такой же, как рендерер любого универсального движка. Почему симуляцию мира для юнити-игр пишут на встроенном в движок C#, а не на божественном прологе? Наверное, потому, что симуляция мира спокойно пишется на любом ЯП. И ООП тут даже в помощь, ибо рассматривает все части программы как материальные объекты.
>Как только ты захочешь сделать огромную симуляцию, где можно взаимодействовать с каждым камнем тут могут помочь только встроенные DSL в функциональных или логических языках (Haskell, Prolog, Lisp).
Не вижу никакой причины использовать перечисленные тобой языки для создания симуляции. Тем более что в них, насколько я знаю, нет концепции объектов, лучше бы взял что-нибудь типа Smalltalk, в котором всё - объект. А в чистом функциональном языке симуляция вообще невозможна из-за свойства иммутабельности, то есть создав что-то, его невозможно изменить, в то время как в реальном мире все объекты непрерывно меняются. ООП ближе к реальному миру.
>Нет смысла писать парсер процедурно.
Ты напишешь его один раз. Возможно, в прологе есть встроенный парсер, но это ничего не меняет - внутри он всё равно опирается на императивные языки (тот же машинный код процессора, или машину JS в случае с Тау-поолог). Вот только парсер пролога ты не можешь разобрать и модифицировать, а свой парсер у тебя под полным контролем.
>Логичней использовать RegExp,
Взять самый сложный синтаксис @ называть это логичным выбором.
>>749803
>А как же они в своих мессенджерах тонны текста высирают?
Так же как я пишу этот пост. Разница в том, что в мессенджере ты высираешь текст другим людям, у которых нет удобных кнопок, а у программы эти удобные кнопки могут быть. Кроме того сейчас популярны аудиосообщения в тех же мессенджерах, а в мобильных клавиатурах есть распознавание речи, но всё это - костыли, которые не подходят для игр. Что лучше - нажать пару кнопок или набрать/произнести несколько слов? Очевидно, кнопки лучше.
Также не забывай, речь идёт не об ИИ, а о простых интерактивных историях. Если игроку нужно набирать текст вручную, ему придётся столкнуться с проблемой не поддерживаемых команд - а это дополнительное время на набор текста и сильное разочарование от зря потраченного на набор текста времени. Ну представь, что ты набрал пост, а вдруг браузер крашнулся и потерял текст, ты его запустил снова, снова набрал текст, он снова крашнулся... это очень сильно демотивирует продолжать, а ведь игрок хотел расслабиться в игре, а не мучиться подбором ключевых слов.
>Сделай игру с закосом под мессенджер и станешь миллионером, дарю идею.
Такие уже есть, называются чат-боты. Толку от этого ноль, пока нет полноценного ИИ, способного заменить собой человека. Хотя некоторым людям для счастья вполне хватает простых чат-ботов...
Кстати, кроме чат-ботов есть игры, которые по скриншотам показывают что-то вроде мессенджера, но с сюжетом. Правда, наверное, там всё-таки менюшки и ограниченная свобода, но не суть - идея давно не нова.
> с закосом под мессенджер
Уже есть тащемта. Играл похожую игру, как на пикриле. Интерфейс был как у месседжера
Я думаю, он имеет в виду суть мессенджера (общение с людьми), а не интерфейс. Интерфейс-то сделать легко, сложно сделать ботов, понимающих речь.
>>749811
>голосовой ввод в игре
1. Не всем и не в любой ситуации удобно. Список ситуаций и людей, которым этот способ не подходит, можешь сам составить, проще описать когда и кому это подходит: полностью здоровый не закомплексованный человек, находящийся днём один в тихом собственном жилище. Всем остальным голосовой ввод будет только мешать.
2. Если твоя игра поддерживает стандартную клавиатуру андроида, то голосовой ввод у тебя считай что есть по умолчанию. Кому надо - нажмут специальную клавишу на своей клавиатуре и надиктуют. Шансы того, что одинокий двачер сделает распознавание речи в своей игре лучше, чем сделал гугл... не внушают оптимизма, знаешь ли.
> А в чистом функциональном языке симуляция вообще невозможна из-за свойства иммутабельности
Похоже ты не знаком с функциональным программированием. Иммутабельность не значит, что ты не можешь менять свойства объектов. Функциональщина просто даёт возможность контролировать стейт.
И нет, по сути ты не будешь программировать на этих языках, ты будешь программировать DSL, которые в свою очередь написаны на Haskell/Lisp/Prolog. Эти языки тем и удобны, что на них можно создавать формальные системы на все случаи жизни. Все остальные языки либо вообще не подходят для создания DSL либо эти DSL вообще нельзя верифицировать.
> Взять самый сложный синтаксис @ называть это логичным выбором.
В RegExp простой синтаксис. Для парсинга комманд тебе вообще не придется использовать ничего кроме (word1|word2) и (.+?)
Пример простой команды:
/(взять|поднять) стул(ьчик?)/
> Симуляция не имеет отношения к интерактивным историям.
Имеет и еще какое. Нужно симулировать поведение мира, его стейт. Мир можно описать как набор правил (законов) и текущее состояние мир (факты). Во время игры правила модифицируют состояние мира.
Пример:
Сейчас солнечно.
Когда игрок смотрит в окно: если на окно можно посмотреть И на улице солнечно -> игрок видит солнце.
Если окно НЕ прикрыто шторками -> в окно можно посмотреть.
Если игрок смотрит в шторы -> вывести "Ты видишь солнце".
Т. я описываю мир как факты. В ЯП эти факты можно записать в виде списков слов, или в виде строк.
> Я думаю, он имеет в виду суть мессенджера (общение с людьми), а не интерфейс.
Ну так епта, я же его и создал.
scafe-forum.herokuapp.com
Тип: Парсер.
Концепция: Модель игры представляет собой конечный автомат состояний (FSM). По сути, это гибрид парсера и менюшки, где переход между состояниями представляет из себя ввод команд игроком. Сам движок занимает 62 строки.
>В функциональном языке старый объект удаляется и вместо него возвращается новый, с другими параметрами.
Ага. А теперь представь как будет выглядеть "огромная симуляция", которая должна обновляться каждый тик таймера, на каком-нибудь ARM, и описанная на необычном не императивном языке (т.е. до машинного кода несколько этапов преобразования). У меня не слабый смартфон и некоторые даже старые игры умудряются тормозить из-за того, что какой-то гений геймдева вызывает деструкторы одинаковых монстров в момент их смерти (лол), а умирают они, разумеется, пачками по 20 штук каждую секунду. Так что ФЯП хороши в теории, а на практике потенциальный вред перевешивает сомнительную пользу ("он не позволит тебе изменить твои данные - это так полезно и совсем не похоже на константы!").
Впрочем, хватит холиваров, есть проблемы важнее выбора языка.
>ECS смотри
Смотрел и даже пробовал реализовать. По сути это тот же ООП, только вместо наследования используется агрегация, и вместо описания жёстких классов один универсальный класс набивается произвольным числом классов-компонентов. Это если не ударяться в оптимизации. На практике не всегда удобно - это не золотой молоток. Где-то удобно наследование, где-то агрегация, всему своё место. Но объекты остаются объектами, ецс только вариант ооп.
>>749821
>Похоже ты не знаком с функциональным программированием
Я пытался, но как и 99% кодомартышек ниасилил. Для меня программа - набор приказов "что делать", всё остальное выглядит непонятным. Нет, конечно, ещё я понимаю декларативные языки, и даже сам писал простые интерпретаторы, но это другое.
>DSL
Я писал интерпретатор самодельного языка на Паскале. Это просто. Всё, конечно, зависит от того, каких мозговыносящих извращенств ты запихнёшь в спецификацию языка, но я не вижу причины делать сложный язык для описания игрового контента. И нет, мы тут не на олимпиаде по программированию и не пытаемся написать интерпретатор в 10 строк, мы как бы хотим игру сделать, так что, повторюсь, интерпретатор ты сделаешь за день, а игру будешь пилить очень долго. Своему самодельному языку, я, кстати, практического применения не нашёл и потому забил, всё что мне нужно можно сделать на готовых языках, хотя кого я обманываю, я только в игры играю, аниме смотрю и в интернете сижу, вот и вся моя никчёмная жизнь.
>Пример простой команды:
>/(взять|поднять) стул(ьчик?)/
1. Ты забыл про: подцепить, зацепить, приподнять, поддеть, подвинуть, сдвинуть, придвинуть, надвинуть, задвинуть, забрать, обнять и т.д.
2. Стул и стульчик вещи разные. А в игровом мире несколько стульев могут иметь разные параметры, а называться одинаково "стул".
>Имеет и еще какое
Повторяю, не имеет.
Симуляция мира - это работа с моделью мира.
Текстовая игра - это интерфейс между моделью и игроком.
Ты можешь сделать модель мира и симулировать её жизнь, не обращая внимания на то, какой интерфейс будет использоваться для взаимодействия с этой моделью. Интерфейс не обязательно должен быть текстовым или графическим, не обязан использовать выбор кнопок в меню, ввод текста или нажатия WASD. Интерфейс, по сути, никак не влияет на модель мира, хотя для более сложных интерфейсов может потребоваться более сложная модель (в частности для полноценной 3D-игры имеет смысл учитывать координаты объектов в трёхмерном пространстве, а не просто список имеющихся в комнате вещей, которого достаточно для простой текстовой игры).
Ты слишком много думаешь об инструментах и мало думаешь о самой игре.
>В функциональном языке старый объект удаляется и вместо него возвращается новый, с другими параметрами.
Ага. А теперь представь как будет выглядеть "огромная симуляция", которая должна обновляться каждый тик таймера, на каком-нибудь ARM, и описанная на необычном не императивном языке (т.е. до машинного кода несколько этапов преобразования). У меня не слабый смартфон и некоторые даже старые игры умудряются тормозить из-за того, что какой-то гений геймдева вызывает деструкторы одинаковых монстров в момент их смерти (лол), а умирают они, разумеется, пачками по 20 штук каждую секунду. Так что ФЯП хороши в теории, а на практике потенциальный вред перевешивает сомнительную пользу ("он не позволит тебе изменить твои данные - это так полезно и совсем не похоже на константы!").
Впрочем, хватит холиваров, есть проблемы важнее выбора языка.
>ECS смотри
Смотрел и даже пробовал реализовать. По сути это тот же ООП, только вместо наследования используется агрегация, и вместо описания жёстких классов один универсальный класс набивается произвольным числом классов-компонентов. Это если не ударяться в оптимизации. На практике не всегда удобно - это не золотой молоток. Где-то удобно наследование, где-то агрегация, всему своё место. Но объекты остаются объектами, ецс только вариант ооп.
>>749821
>Похоже ты не знаком с функциональным программированием
Я пытался, но как и 99% кодомартышек ниасилил. Для меня программа - набор приказов "что делать", всё остальное выглядит непонятным. Нет, конечно, ещё я понимаю декларативные языки, и даже сам писал простые интерпретаторы, но это другое.
>DSL
Я писал интерпретатор самодельного языка на Паскале. Это просто. Всё, конечно, зависит от того, каких мозговыносящих извращенств ты запихнёшь в спецификацию языка, но я не вижу причины делать сложный язык для описания игрового контента. И нет, мы тут не на олимпиаде по программированию и не пытаемся написать интерпретатор в 10 строк, мы как бы хотим игру сделать, так что, повторюсь, интерпретатор ты сделаешь за день, а игру будешь пилить очень долго. Своему самодельному языку, я, кстати, практического применения не нашёл и потому забил, всё что мне нужно можно сделать на готовых языках, хотя кого я обманываю, я только в игры играю, аниме смотрю и в интернете сижу, вот и вся моя никчёмная жизнь.
>Пример простой команды:
>/(взять|поднять) стул(ьчик?)/
1. Ты забыл про: подцепить, зацепить, приподнять, поддеть, подвинуть, сдвинуть, придвинуть, надвинуть, задвинуть, забрать, обнять и т.д.
2. Стул и стульчик вещи разные. А в игровом мире несколько стульев могут иметь разные параметры, а называться одинаково "стул".
>Имеет и еще какое
Повторяю, не имеет.
Симуляция мира - это работа с моделью мира.
Текстовая игра - это интерфейс между моделью и игроком.
Ты можешь сделать модель мира и симулировать её жизнь, не обращая внимания на то, какой интерфейс будет использоваться для взаимодействия с этой моделью. Интерфейс не обязательно должен быть текстовым или графическим, не обязан использовать выбор кнопок в меню, ввод текста или нажатия WASD. Интерфейс, по сути, никак не влияет на модель мира, хотя для более сложных интерфейсов может потребоваться более сложная модель (в частности для полноценной 3D-игры имеет смысл учитывать координаты объектов в трёхмерном пространстве, а не просто список имеющихся в комнате вещей, которого достаточно для простой текстовой игры).
Ты слишком много думаешь об инструментах и мало думаешь о самой игре.
Тип: Менюшно-подобный
Концепция: в игре на Noir'е нужно выделять подчеркнутые слова (предметы), и производить над ними действиями. В основе работы с состоянием мира так же лежит FSM. Поддерживает собственный DSL, расширяемый макросами.
Тип: Парсер
Концепция: Самый серьезный с технической точки проект.
Используется CHR и DCG. Для симуляции мира наиболее мощен. Всё что вы видите на пикрилах это ванильный пролог. Просто объявил несколько операторов и подключил библиотеку для CHR. За расширяемость пролог и полюбил.
>Самый серьезный с технической точки проект.
>Для симуляции мира наиболее мощен.
>За расширяемость пролог и полюбил.
Ты меня, конечно, извини, но ты не игрой занимаешься, а сексом с прологом. Сколько бы кайфа тебе не доставлял секс с прологом, не забывай о том, ради чего ты вообще начал. Я понимаю, легко увлечься и начать делать идеальный движок для определённых игр, но потом окажется, что движок никто не использует и ты сам его ни разу полноценно не использовал...
Кроме того, нужно различать текстовые игры и "интерактивные книги". Тред ты создал вроде как для интерактивных книг, а делаешь текстовую игру. Ключевая разница в том, что интерактивная книга - это книга с выбором ветки сюжета, а текстовая игра - это игра с интерфейсом в виде текстовых строк. Ну, я так это понимаю. Так вот для текстовой игры универсальный движок, имхо, не создать, всегда может потребоваться что-то несовместимое, а для интерактивных книг движок, как правило, вообще не нужен, нужен только писатель, прикованный наручниками к рабочему столу с клавиатурой.
Кстати, симуляция мира тебе нужна для песочницы или для сюжетной игры?
>Я писал интерпретатор самодельного языка на Паскале.
Я говорю о embedded DSL (eDSL). Т.е о DSL без собственного парсера. Пример я кидал в >>749833.
>Симуляция мира - это работа с моделью мира.
Про неё я и говорю. И модель в парсерных игр это самое важное для достижения наилучшей интерактивности.
О, я что-то похожее делал, только не для историй, а для генерации любых данных, в том числе бинарных, в том числе из внешних файлов. Что-то вроде декларативного языка, на котором описываются генераторы, при обращении к которым происходит генерация данных. Правда, серьёзного применения не нашёл и забросил (для моих изначальных задумок - текстуры и 3D-модели - такой способ генерации не подходил, с музыкальным форматом мне было лень разбираться, а для генерации внятных текстов нужны переменные, а не просто случайная подстановка).
>Ты меня, конечно, извини, но ты не игрой занимаешься, а сексом с прологом. Сколько бы кайфа тебе не доставлял секс с прологом, не забывай о том, ради чего ты вообще начал. Я понимаю, легко увлечься и начать делать идеальный движок для определённых игр, но потом окажется, что движок никто не использует и ты сам его ни разу полноценно не использовал...
Отчасти согласен, конечно. Из меня плохой писатель, потому мне проще движок дописать, чем текст игры. Скажу ВНЕЗАПНУЮ Истинну™: похуй на чем писать, главное чтобы игра была интересной игрокам. В игре может быть мало интерактивности, но зато интересные персонажи и сюжет. Тот же БЛ, к примеру (правда игру очень вывозит визуал и саунд, без него было бы крайне уныло).
>>749835
>Кроме того, нужно различать текстовые игры и "интерактивные книги". Тред ты создал вроде как для интерактивных книг, а делаешь текстовую игру.
Тред про Interactive Fiction, а этот жанр включает как менюшные игры-книги, так и парсеры (текстовые игры в твоем определении).
Почитать статьи об сабже можно тут: ifwiki.ru
>Что-то вроде декларативного языка, на котором описываются генераторы, при обращении к которым происходит генерация данных.
Долго делал? Много кода? На самом деле подобное делается просто:
Есть функция, которая выберает рандомный аргумент:
choice(arg1,arg2,arg3,...)
А теперь комбинируем эти функции в дерево (которое по является грамматикой).
let bad_or_good_f = () => choice('хорошая', 'плохая')
let weather = () => choice(`${bad_of_good_f()} погода`)
let text = () => `На дворе стояла ${weather()}`
>Я говорю о embedded DSL
Ясно. Имхо, внешние файлы всё-таки лучше. Я пробовал расширяемые языки, но они очень быстро становятся непонятными - все эти расширения накапливаются как снежный ком. Да и отдельный файл защищает программу от внесения опасных модификаций, а сам этот файл - от зависимости от программы (программу можно обновить, не трогая файл, если спецификация языка не меняется).
>модель в парсерных игр это самое важное
Да, но модель эта не привязана к парсерным играм. Судя по скриншотам, ты связываешь в одно целое модель и слова, которые выводятся игроку/вводятся игроком, а это неправильно. Нужна абстракция, чтобы не спотыкаться о нюансы какого-либо языка, пока работаешь над моделью, не связывать модель с особенностями языка, не хардкодить константы. Все системы должны быть отдельны.
Можно описать схему такой игры:
1. Расшифровка ввода игрока;
2. Воздействие на модель мира;
3. Определение следующего состояния модели;
4. Генерация и вывод текстового описания модели;
5. Запрос ввода у игрока и возврат к пункту 1.
Здесь каждый этап должен быть независим от остальных.
Модель может быть вообще набором числовых ID, смысл в них появляется только после обработки генератором описания. Логика в модели, а в описании только внешняя оболочка логики - слова или, например, картинки.
Кстати, если разделение будет чётко соблюдено, перевести игру можно будет на любой язык практически без проблем, т.к. переводить придётся лишь генератор описаний и интерфейс ввода (кнопки/парсер), а модель останется без изменений. В этом и суть - какой бы мы язык не использовали, модель мира не зависит ни от естественного языка, ни от языка программирования.
>Имхо, внешние файлы всё-таки лучше.
Как сказать, это последняя артиллерия. Поддерживать DSL с собственным парсером достаточно сложно. eDSL же бесконечно расширяемые.
>выводятся игроку/вводятся игроком
Как раз таки нет.
Парсер, вывод игрока, и внутренняя модель в >>749833 логически разделены, просто запускаются на одинаковых вычислительных системах. Есть правила только для вывода текста, есть правила, которые контролируют модель, есть правила, которые контролируют ввод. Ничего не смешанно. Всё продуманно.
>В этом и суть - какой бы мы язык не использовали, модель мира не зависит ни от естественного языка, ни от языка программирования.
технически - да, просто придется костылить. К примеру, эту систему придется долго писать на JS. А тут всё уже приготовлено.
Тогда я решил сделать scafe, форум, где можно ролеплеить, играя в полу-консольном интерфейсе. Игра ведется двумя людьми - игроком и мастером. Мастер отвечает за мир и NPC, игрок, собственно, за игрока.
>Из меня плохой писатель
Тогда начинай с малого. Короткий интерактивный рассказ сложнее запороть.
>Interactive Fiction, а этот жанр включает как менюшные игры-книги, так и парсеры
Что на счёт MUD? Это вроде как текстовые ММОРПГ из древних времён, бродишь по подземельям, убиваешь монстров, качаешь персонажа, общаешься или сражаешься с другими игроками, всё в виде текста в консоли. По-твоему это тоже вариант IF?
Вики потом почитаю.
>>749843
>Долго делал?
Самое сложное было придумать удобный синтаксис. Уже описывал где-то на этой доске, но вкратце главная часть синтаксиса выглядит как-то так:
:генератор список ?выбор =текст "длинный текст" @файл $C0DE # комментарий
:имя - объявляет новый блок с именем "имя"
имя - включение содержимого как есть (изначально было так: !имя)
?имя - выбор случайного элемента
=текст - данные без пробелов
“текст" - данные с пробелами
@файл - данные из файла
$ABCD - данные в HEX-формате
# - игнорирует всё до конца строки
Я хотел расширять, но чёт депрессия навалилась и смысл проекта был утрачен. Кстати, вдохновлялся Forth, и даже пробовал писать свой интерпретатор форта, но потом опять депрессия и вообще зачем я этим занимаюсь...
>Много кода?
Твой код на прологе после трансляции разворачивается на огромные конструкции, которые вместо тебя составляли разработчики языка. Так что нечего хвастаться количеством кода.
К тому же у меня противоположная болезнь: люблю писать очень много лишнего, изобретать всякие сложные структуры, даже те, которые есть в стандартной библиотеке языка. Так что мне не по кайфу написать пару строчек и забить, мне по кайфу писать тысячи строк кода с перспективой никогда его не закончить, вот это доставляет мне удовольствие, писал бы так и писал всю жизнь. Но бесцельно писать не хочу, хочу чтобы был Смысл™.
>let bad_or_good_f = () => choice('хорошая', 'плохая')
>let weather = () => choice(`${bad_of_good_f()} погода`)
>let text = () => `На дворе стояла ${weather()}`
Нечитабельно. С моим синтаксисом было бы:
:оценка =хорошая =плохая
:погода ?оценка " погода"
:текст "На дворе стояла " погода
# можно продолжить:
:где "На дворе" "На улице" "В мире" "В комнате"
:кого =телевизор =холодильник =человека =кошку =автомобиль
:обнимала " обнимала " ?кого
:что-делала " стояла" " лежала" " шла" " танцевала" обнимала
:делала-где-то ?где ?что-делала
:текст2 делала-где-то погода # да, это бредогенератор, и она гордится своей ролью
Я вообще не люблю, когда слишком много спецсимволов. Но пришлось использовать в синтаксисе спецсимволы, чтобы не привязывать синтаксис к какому-либо языку и не смешивать визуально пользовательские идентификаторы с символами языка. Т.е. упор на читабельность.
А вообще всё это бред, на одном рандоме ничего толкового не сделать.
>Из меня плохой писатель
Тогда начинай с малого. Короткий интерактивный рассказ сложнее запороть.
>Interactive Fiction, а этот жанр включает как менюшные игры-книги, так и парсеры
Что на счёт MUD? Это вроде как текстовые ММОРПГ из древних времён, бродишь по подземельям, убиваешь монстров, качаешь персонажа, общаешься или сражаешься с другими игроками, всё в виде текста в консоли. По-твоему это тоже вариант IF?
Вики потом почитаю.
>>749843
>Долго делал?
Самое сложное было придумать удобный синтаксис. Уже описывал где-то на этой доске, но вкратце главная часть синтаксиса выглядит как-то так:
:генератор список ?выбор =текст "длинный текст" @файл $C0DE # комментарий
:имя - объявляет новый блок с именем "имя"
имя - включение содержимого как есть (изначально было так: !имя)
?имя - выбор случайного элемента
=текст - данные без пробелов
“текст" - данные с пробелами
@файл - данные из файла
$ABCD - данные в HEX-формате
# - игнорирует всё до конца строки
Я хотел расширять, но чёт депрессия навалилась и смысл проекта был утрачен. Кстати, вдохновлялся Forth, и даже пробовал писать свой интерпретатор форта, но потом опять депрессия и вообще зачем я этим занимаюсь...
>Много кода?
Твой код на прологе после трансляции разворачивается на огромные конструкции, которые вместо тебя составляли разработчики языка. Так что нечего хвастаться количеством кода.
К тому же у меня противоположная болезнь: люблю писать очень много лишнего, изобретать всякие сложные структуры, даже те, которые есть в стандартной библиотеке языка. Так что мне не по кайфу написать пару строчек и забить, мне по кайфу писать тысячи строк кода с перспективой никогда его не закончить, вот это доставляет мне удовольствие, писал бы так и писал всю жизнь. Но бесцельно писать не хочу, хочу чтобы был Смысл™.
>let bad_or_good_f = () => choice('хорошая', 'плохая')
>let weather = () => choice(`${bad_of_good_f()} погода`)
>let text = () => `На дворе стояла ${weather()}`
Нечитабельно. С моим синтаксисом было бы:
:оценка =хорошая =плохая
:погода ?оценка " погода"
:текст "На дворе стояла " погода
# можно продолжить:
:где "На дворе" "На улице" "В мире" "В комнате"
:кого =телевизор =холодильник =человека =кошку =автомобиль
:обнимала " обнимала " ?кого
:что-делала " стояла" " лежала" " шла" " танцевала" обнимала
:делала-где-то ?где ?что-делала
:текст2 делала-где-то погода # да, это бредогенератор, и она гордится своей ролью
Я вообще не люблю, когда слишком много спецсимволов. Но пришлось использовать в синтаксисе спецсимволы, чтобы не привязывать синтаксис к какому-либо языку и не смешивать визуально пользовательские идентификаторы с символами языка. Т.е. упор на читабельность.
А вообще всё это бред, на одном рандоме ничего толкового не сделать.
Ладно, тебе удобно делать на прологе - никто тебя переубеждать не будет. Кроме него есть ещё куча расширяемых языков, тот же Forth или Seed7, но сфера применения ограничена велосипедами-для-одного, потому что никто в твоих велосипедных монстрах разбираться не будет/не сможет.
>бесконечно расширяемые
Они расширяемы ровно до того момента, пока у тебя в голове есть место для всех тех выдумок, которые ты сочинил. Даже на обычном языке через месяц уже видишь свой код как чужой, а на расширяемом будешь видеть как письмена на доисторическом/мёртвом/инопланетном языке. Также со временем у тебя закончатся все короткие идентификаторы и ты начнёшь лепить длинные, а это даже меня выводит из себя. Так что ничего бесконечного...
>>749858
Смотрю на чат. Потом на твою "наработку". Потом снова на чат. Странно, но твоя "наработка" не на коне... В чём отличие твоей программы от чата? Только в графическом оформлении "а-ля консоль"?
К тому же, это банальный ролеплей. Люди родеплеят везде. Вообще везде. В любой онлайн-игре, на любом форуме, в любых чатах. У твоего чата нет никаких преимуществ, ради которых люди могли бы в него заглянуть, тем более вместе с друзьями. Раскрутить можно всё что угодно, конечно, но зачем?
> Что на счёт MUD?
MUD это скорее MMO RPG, чем литература. Хотя, ИМХО, MUD это просто многопользовательские IF. MUD был дедом современных FRPG (зайди в /wr/).
> Нечитабельно.
Потому что тут только семантика. Синтаксис можно и RegExp'ами прикрутить, что я и сделал в Storle.
Формат скриптов там такой:
:качество (ж):
[хорошая / плохая]
:погода:
:качество (ж): погода
:предисловие:
На дворе стояла :погода:
С помощью {% %} можно вставлять обычный JS, на тот случай если не хватает какой-то фичи.
> велосипедами-для-одного, потому что никто в твоих велосипедных монстрах разбираться не будет/не сможет.
Да тащемта это и не нужно. "Рынок" уже поделен такими крупными движками как TADS, Inform, Twine. Главное, чтобы самому программисту было удобно.
> Также со временем у тебя закончатся все короткие идентификаторы
Это работает только с нерасширяемыми языками. На расширяемых языках такой проблемы нет, ибо можно прикручивать такие вещи как глаголы и прилагательные.
> отличие твоей программы от чата?
По сути - чат. Только:
- Анонимный.
- На двух человеков.
- Специализирован под ролеплей.
- Нет цензуры. Никакой. Я как админ могу чистить спам, но из принципа не буду удалять игры потому что они мне не нравятся.
> У твоего чата нет никаких преимуществ, ради которых люди могли бы в него заглянуть, тем более вместе с друзьями.
Это да. Даже не знаю, что туда можно добавить. Есть идеи, с которыми из форума получится вишенка? В основном проблема - ни игорь, ни игроков нет. Где брать - хз, чем привлекать - хз.
> Inform
Честно говоря, я бы очень хотел бы использовать Inform 7. Это такой сексуальный движок. Однако использует только английский язык. Писать русские игры не получится, ибо движок написан на древнем говне (C вроде) и юникод не поддерживает.
>Анонимный.
Анонимные чаты не редкость.
>На двух человеков.
Такие анонимные чаты тоже не редкость.
>Специализирован под ролеплей.
В чём специализация-то? Технически это как-то выражается?
>Нет цензуры. Никакой.
Кагбэ в чатах на двоих и не может быть цензуры.
С другой стороны, если сервис станет популярным, это тебе аукнется.
>Я как админ могу чистить спам
Ага, то есть ты ещё и переписки чужие читаешь, никакой приватности)
Тем более, стань сервис популярнее, тебе придётся этот спам лопатой расчищать, или сервис захватят боты, как это обычно происходит со всеми анонимными чатами. Регистрация в "анонимных" чатиках как раз для этого, чтобы не приходилось вычищать спам лопатами.
>чем привлекать - хз.
Вот это самый главный вопрос, на который ты должен был ответить до того, как сел писать код. Сервис без каких-либо преимуществ не привлечёт к себе никого.
> Ага, то есть ты ещё и переписки чужие читаешь
Это ролеплей, чувак. Но вообще прикрутить RSA шифрование надо бы, но пока на это похуй.
> В чём специализация-то?
Создавался специально для ролеплей, а не для скидывания, к примеру, ЦП.
В тему "менюшки vs парсер".
В феврале этого года сделал грубый прототип текстовой песочницы, которую планировал как симуляцию мира с текстовым интерфейсом. С самого начала меня волновал вопрос графического интерфейса, поскольку парсерные игры крайне неудобны, а обычные книги-игры с набором кнопок накладывают серьёзные ограничения. Поэтому начал этот проект я только тогда, когда меня посетила на первый взгляд гениальная мысль - сделать набор выпадающих менюшек, содержимое которых автоматически меняется в зависимости от ситуации в игре и выбора игрока в соседней менюшке.
Алгоритм был такой: выбираем что-то в первом меню, рядом с ним появляется второе, выбираем во втором - появляется третье, и так пока не введём все нужные параметры команды или не нажмём кнопку "ок" для подтверждения выбора. На практике это оказалось не так-то просто для пользователя, к тому же в мобильных браузерах стандартное html-меню разворачивается на весь экран. Тогда меня посетила вторая, теперь уже точно гениальная мысль: написать своё меню, в котором не нужно будет делать лишних телодвижений.
Так у меня получилось меню, в котором может быть несколько уровней вложенности. Сначала перед пользователем появляется список кнопок первого уровня; нажатие на любую из кнопок открывает список с кнопками второго уровня, который принадлежит данной кнопке; те кнопки тоже могут иметь вложенные варианты, и так до конечных кнопок, у которых вариантов нет. В первых версиях выбор подтверждался повторным нажатием на ту же кнопку, если эта кнопка конечная; однако данный вариант оказался неинтуитивным и поэтому пришлось добавить отдельную кнопку "далее".
Конечно, такой интерфейс не лишён недостатков. К примеру, последняя версия не позволяет игроку принять сразу несколько решений за один ход, хотя версия на выпадающих меню такую возможность в теории поддерживала (т.к. можно добавить сколько угодно выпадающих меню в один ряд, вторичные действия могли добавляться через меню со словом "и" или как отдельный блок). Но в целом, насколько я понимаю, большинство текстовых игр ограничивается одним действием игрока за один ход, поэтому это не такая уж большая проблема. Просто я вдохновлялся порнографической текстовой игрой, в которой игрок во время секса может контролировать сразу несколько частей тела своего персонажа, а для этого нужно несколько отдельных меню. Есть второе ограничение, глубина вложенности меню: вложенные блоки немного меньше внешних, поэтому в какой-то момент текст перестанет умещаться на кнопках. Но у меня с вертикальным экраном уместилось 10 уровней, а это очень много - чаще всего действия в таких играх ограничены 2-3 словами (уровнями меню).
В техническом плане прототип так и остался сырым, т.к. после доведения графического интерфейса до ума я осознал всю сложность разработки подобной игры и потерял к ней интерес. Можно походить по статичным комнатам и осмотреть предметы, вот и всё. Нужно было прорабатывать структуру хранения мира, но... Короче, у меня что-то типа БАР, депрессия волнами накрывает - кажется, в тот раз был очередной эпизод. Хоть что-то делать могу только когда накрывает маниакальная волна, но депрессивные чаще и сильнее.
Прикреплённое:
1. Одна из стадий разработки, сверху видно старую систему с выпадающими меню и кнопкой "ок", снизу набросок новой системы с вложенными кнопками.
2. Тест глубины вложенности новой версии системы с вложенными кнопками, решил располагать кнопки компактнее и выделять уровни разными цветами.
3. Окончательная версия меню, теперь с кнопкой "далее".
4. Сегодня записал видео, так должно быть понятнее.
Да, есть два режима отображения: "страница" и лента. Первый режим полностью очищает содержимое окна после нажатия "далее", второй режим добавляет записи друг за другом, создавая ленту. Не знаю, какой режим лучше, и как избежать дублирования информации в ленточном режиме, но при этом не терять общую информацию о комнате (добавить действие "осмотреться"?). Страничный режим больше подходит для книг-игр, да и мне больше нравится лента. Правда стресс-тест на число сообщений в ленте я вроде бы не делал...
А сегодня, пока читал тред и вспоминал этот проект, задумался: а правильно ли я сделал, что на первом уровне глаголы, а на втором существительные? Может, логичнее группировать как-то иначе? Вообще, как думаете, насколько такая система меню практична для игрока и разработчика?
Подумываю о том, чтобы продолжить разработку, раз эта тема не совсем бесполезная.
Да, всё на голом JS, который мне в целом понравился, хотя раздражает отсутствие простого способа сохранять данные на диск. Без сохранения и загрузки произвольных файлов ни о какой симуляции и песочнице речи быть не может, если только не делать серверную часть. Сам мир описывается не помню уже точно как, но наверняка буду переделывать, т.к. помню что было неудобно добавлять новые сущности.
В тему "менюшки vs парсер".
В феврале этого года сделал грубый прототип текстовой песочницы, которую планировал как симуляцию мира с текстовым интерфейсом. С самого начала меня волновал вопрос графического интерфейса, поскольку парсерные игры крайне неудобны, а обычные книги-игры с набором кнопок накладывают серьёзные ограничения. Поэтому начал этот проект я только тогда, когда меня посетила на первый взгляд гениальная мысль - сделать набор выпадающих менюшек, содержимое которых автоматически меняется в зависимости от ситуации в игре и выбора игрока в соседней менюшке.
Алгоритм был такой: выбираем что-то в первом меню, рядом с ним появляется второе, выбираем во втором - появляется третье, и так пока не введём все нужные параметры команды или не нажмём кнопку "ок" для подтверждения выбора. На практике это оказалось не так-то просто для пользователя, к тому же в мобильных браузерах стандартное html-меню разворачивается на весь экран. Тогда меня посетила вторая, теперь уже точно гениальная мысль: написать своё меню, в котором не нужно будет делать лишних телодвижений.
Так у меня получилось меню, в котором может быть несколько уровней вложенности. Сначала перед пользователем появляется список кнопок первого уровня; нажатие на любую из кнопок открывает список с кнопками второго уровня, который принадлежит данной кнопке; те кнопки тоже могут иметь вложенные варианты, и так до конечных кнопок, у которых вариантов нет. В первых версиях выбор подтверждался повторным нажатием на ту же кнопку, если эта кнопка конечная; однако данный вариант оказался неинтуитивным и поэтому пришлось добавить отдельную кнопку "далее".
Конечно, такой интерфейс не лишён недостатков. К примеру, последняя версия не позволяет игроку принять сразу несколько решений за один ход, хотя версия на выпадающих меню такую возможность в теории поддерживала (т.к. можно добавить сколько угодно выпадающих меню в один ряд, вторичные действия могли добавляться через меню со словом "и" или как отдельный блок). Но в целом, насколько я понимаю, большинство текстовых игр ограничивается одним действием игрока за один ход, поэтому это не такая уж большая проблема. Просто я вдохновлялся порнографической текстовой игрой, в которой игрок во время секса может контролировать сразу несколько частей тела своего персонажа, а для этого нужно несколько отдельных меню. Есть второе ограничение, глубина вложенности меню: вложенные блоки немного меньше внешних, поэтому в какой-то момент текст перестанет умещаться на кнопках. Но у меня с вертикальным экраном уместилось 10 уровней, а это очень много - чаще всего действия в таких играх ограничены 2-3 словами (уровнями меню).
В техническом плане прототип так и остался сырым, т.к. после доведения графического интерфейса до ума я осознал всю сложность разработки подобной игры и потерял к ней интерес. Можно походить по статичным комнатам и осмотреть предметы, вот и всё. Нужно было прорабатывать структуру хранения мира, но... Короче, у меня что-то типа БАР, депрессия волнами накрывает - кажется, в тот раз был очередной эпизод. Хоть что-то делать могу только когда накрывает маниакальная волна, но депрессивные чаще и сильнее.
Прикреплённое:
1. Одна из стадий разработки, сверху видно старую систему с выпадающими меню и кнопкой "ок", снизу набросок новой системы с вложенными кнопками.
2. Тест глубины вложенности новой версии системы с вложенными кнопками, решил располагать кнопки компактнее и выделять уровни разными цветами.
3. Окончательная версия меню, теперь с кнопкой "далее".
4. Сегодня записал видео, так должно быть понятнее.
Да, есть два режима отображения: "страница" и лента. Первый режим полностью очищает содержимое окна после нажатия "далее", второй режим добавляет записи друг за другом, создавая ленту. Не знаю, какой режим лучше, и как избежать дублирования информации в ленточном режиме, но при этом не терять общую информацию о комнате (добавить действие "осмотреться"?). Страничный режим больше подходит для книг-игр, да и мне больше нравится лента. Правда стресс-тест на число сообщений в ленте я вроде бы не делал...
А сегодня, пока читал тред и вспоминал этот проект, задумался: а правильно ли я сделал, что на первом уровне глаголы, а на втором существительные? Может, логичнее группировать как-то иначе? Вообще, как думаете, насколько такая система меню практична для игрока и разработчика?
Подумываю о том, чтобы продолжить разработку, раз эта тема не совсем бесполезная.
Да, всё на голом JS, который мне в целом понравился, хотя раздражает отсутствие простого способа сохранять данные на диск. Без сохранения и загрузки произвольных файлов ни о какой симуляции и песочнице речи быть не может, если только не делать серверную часть. Сам мир описывается не помню уже точно как, но наверняка буду переделывать, т.к. помню что было неудобно добавлять новые сущности.
>Это ролеплей
>прикрутить RSA шифрование надо бы
Лол. Вообще я говорю про то, что если это переписка между двумя людьми, пусть и анонимная, но должна быть какая-то гарантия что никто тайком не подсматривает. Типа, на старых форумах система личных сообщений обычно скрыта от всех, включая админов; зарыться в БД и достать сообщения, наверное, можно, но через обычную админку этого не сделать. Ну или заявляй с порога, что переписки публичные и любой может подключиться как зритель, почему бы и нет.
>Создавался специально для ролеплей,
Это-то понятно. Но чем ты можешь гарантировать, что люди там будут именно ролеплеить? Что им мешает начать любой обычный диалог? Я к тому, что тебе придётся либо вручную всех выгонять, либо смириться с тем, что реально ролевой игрой занимается лишь некоторый % пользователей. В тех анонимных чатах, что я видел, могли быть ролевики, но никто не думал принуждать к ролеплею, всё по желанию, а так это просто чат со случайными людьми.
>а не для скидывания, к примеру, ЦП.
Ну вот что мешает людям завалиться в твой чятик и начать распространять там ЦП, тем более если ты прикрутишь шифрование (лол)? Будет ещё один рассадник ЦП, только с надписью "это площадка для ролевых игр". Ну и если говорить про ЦП, то ролевой отыгрыш маленькой девочки, которую сексуально совращают - это тоже ЦП, пусть и в текстовом виде. Получается, что хотя пользователи и соблюдают правило "только ролевые игры", они всё равно нарушают определённые законы о ЦП, особенно если их переписку можно каким-то образом достать с сервера. Короче, тут больше организационные вопросы, чем технические. И, имхо, не стоит оно того, слишком много затрат, а способы монетизации сомнительны (всё, что приходит на ум - донатные фичи типа "поднять приглашение на чат выше", да классические рекламные баннеры, с которых всё равно нихрена не заработаешь без большой аудитории).
> Ну или заявляй с порога, что переписки публичные и любой может подключиться как зритель, почему бы и нет.
Нет, не могут. Доступ к DB только у меня есть.
В случае с гуглом и фейсбуком всю работу делают машины, какие-нибудь самообучающиеся программы. Даже если люди имеют доступ к письмам и сообщениям, они не могут просмотреть их все вручную, да и времени на слежку за кем-то нет, насяльник и так загоняет. Плюс у таких больших корпораций и отдел безопасности сильный, а он нужен в том числе для защиты корпорации от действий её же сотрудников - любое неловкое движение в сторону данных и усё, пакуй чемоданы. А когда речь идёт о каком-нибудь мелкосервере на 3.5 пользователя, так и представляешь себе какого-нибудь вуайериста, потому что иную причину заводить сервер в его случае трудно представить) Ну и сами подумайте, какие сценки зачастую разыгрывают ролевики (не все, разумеется)? Различные извращения, конечно же. Обычное фэнтези только вершина айсберга, которую видно только потому что никто не запрещает демонстрировать. Анонимность и отсутствие цензуры развязывает руки, соответственно и аудитория набирается соответствующая. Тут как с фурфагами, толпа самых разнообразных извращенцев под скрывающими личность масками животных, одобряющие любого, кто с ними, будь ты хоть некропедозоофил... и это даже не шутка, лол.
Ладно, я слишком сильно акцентировал на этом внимание, на самом деле всё это не так уж важно. Важнее то, что такая "игра" вообще не является игрой, это же просто чат на двоих. Следовательно к разделу/треду отношения не имеет, тут всё-таки видеоигры пытаются делать - это когда человек играет по правилам игровой программы, а не просто базарит с другим человеком через чат, пусть и воображая себя эльфом 80-го уровня.
Да, кстати,
>>749858
>нужно по крайней мере настоящий ИИ.
>Настоящего, сильного ИИ у нас нет,
Если "настоящий сильный ИИ" будет равносилен человеку, то он опять же не будет являться игрой/игровой программой. И договариваться о ролевой игре с ним придётся почти как с человеком. Так что подобное тоже выходит за рамки тематики раздела, имхо. И вообще появление сильного ИИ убьёт большую часть игр, ведь зачем играть, когда можно поболтать с ИИ-другом, или зачем играть в полном одиночестве, если можно поиграть вдвоём. Ну да, всё индивидуально, но большинство всё-таки страдает от скуки и одиночества, а не от желания участвовать в фэнтезийных приключениях.
В случае с гуглом и фейсбуком всю работу делают машины, какие-нибудь самообучающиеся программы. Даже если люди имеют доступ к письмам и сообщениям, они не могут просмотреть их все вручную, да и времени на слежку за кем-то нет, насяльник и так загоняет. Плюс у таких больших корпораций и отдел безопасности сильный, а он нужен в том числе для защиты корпорации от действий её же сотрудников - любое неловкое движение в сторону данных и усё, пакуй чемоданы. А когда речь идёт о каком-нибудь мелкосервере на 3.5 пользователя, так и представляешь себе какого-нибудь вуайериста, потому что иную причину заводить сервер в его случае трудно представить) Ну и сами подумайте, какие сценки зачастую разыгрывают ролевики (не все, разумеется)? Различные извращения, конечно же. Обычное фэнтези только вершина айсберга, которую видно только потому что никто не запрещает демонстрировать. Анонимность и отсутствие цензуры развязывает руки, соответственно и аудитория набирается соответствующая. Тут как с фурфагами, толпа самых разнообразных извращенцев под скрывающими личность масками животных, одобряющие любого, кто с ними, будь ты хоть некропедозоофил... и это даже не шутка, лол.
Ладно, я слишком сильно акцентировал на этом внимание, на самом деле всё это не так уж важно. Важнее то, что такая "игра" вообще не является игрой, это же просто чат на двоих. Следовательно к разделу/треду отношения не имеет, тут всё-таки видеоигры пытаются делать - это когда человек играет по правилам игровой программы, а не просто базарит с другим человеком через чат, пусть и воображая себя эльфом 80-го уровня.
Да, кстати,
>>749858
>нужно по крайней мере настоящий ИИ.
>Настоящего, сильного ИИ у нас нет,
Если "настоящий сильный ИИ" будет равносилен человеку, то он опять же не будет являться игрой/игровой программой. И договариваться о ролевой игре с ним придётся почти как с человеком. Так что подобное тоже выходит за рамки тематики раздела, имхо. И вообще появление сильного ИИ убьёт большую часть игр, ведь зачем играть, когда можно поболтать с ИИ-другом, или зачем играть в полном одиночестве, если можно поиграть вдвоём. Ну да, всё индивидуально, но большинство всё-таки страдает от скуки и одиночества, а не от желания участвовать в фэнтезийных приключениях.
instead
кроме него считай движков и нет
а у него нет гуи))))
метапарсер единственный ру парсер который околоработает
Да, это Instead, благодарю.
>создал тред для серьёзных обсуждений
>сам же флудит в нём однострочным гринтекстом
Ты бы лучше расписал, с чем и почему не согласен. Ты считаешь что гуи не нужен для движка текстовых игр? Только консолька, только хардкор? Или что есть по каким-то параметрам более подходящие движки, чем instead? Или что метапарсер не единственный рабочий русскоязычный парсер? Я вот не понимаю, чему именно ты возражаешь (кроме использования смайликов).
Понимаешь, нуб заходит в тред, смотрит последние посты, а там вот такой пук гринтекстом без каких-либо аргументов кроме указания на употребление скобок, да ещё и от ОПа треда. Что нуб решит? Почитай вот: https://ru.wikipedia.org/wiki/Теория_разбитых_окон
> Ты считаешь что гуи не нужен для движка текстовых игр?
Нет, я просто приебался к вконтактлу-скобкодебилу.
Это была прекрасная идея, использовать Twine для прототипирования. Теперь совершенно не нужно морочить голову о том, как показывать или пересылать кому-то ветки.
К слову о возможностях, я вряд ли когда либо использую хотя бы половину из них. А вы уже что-то написали? Подумал, что интересно было бы взглянуть на сами игры на нем.
Ну, для общего развития.
Кек, я 19 лет назад запилил ReLife, про него даже писали в статье про интерактивные истории.
Сейчас загугли, оказывается маняме с таким названием сделали
> Ага. А теперь представь как будет выглядеть "огромная симуляция"
Ну, для конкретно логического и функционального программирования это не проблема.
В ЛП:
Программа это DB. А DB можно менять. Конкретно в прологе это предикаты assert (добавить запись) и retract (удалить запись). По производительности это тоже самое, что и стейт в OOP. К тому же, для удобного управлением стейта есть CHR, который позволяет представить мир игры как формальный набор законов.
В ФП:
В Haskell есть монада State. Компилятор оптимизирует стек так, чтобы записывать только изменения объекта, а не объект целиком. В этом и прикол персистентных типов данных. В конце каждого цикла программы, в память записываются только итоговое состояние объекта, который получается через монаду.
Парсерки без стронг ии ненужны, чейндж май майнд.
Менюшки не обязаны быть фиксированными, можно менюшки делать в виде конструктора с многими степенями свободы.
А, ну в принципе это довольно похоже на то, о чем я выше говорил (меню со свободой).
Ты несешь хуйню, потому что не знаком с предметом, о котором рассуждаешь.
Мужик сказал - мужик сделал. Мое увожение.
Прикольно, что-то такое и нужно, да. Глаголы или существительные - непонятно, нужно оперировать не конечными инструкциями, а fuzzy-тегами какими-то, чтобы из "хочу то, не знаю чего, но связано с Х" выуживать из игрока конкретную инструкцию. Основная проблема зачастую в дискаверабилити же.
>В случае с гуглом и фейсбуком всю работу делают машины, какие-нибудь самообучающиеся программы.
Нет, у обычных мясных сотрудников тоже есть доступ ко всем твоим письмам и чатикам.
>Вот только его собирать надо.
М? Не, есть десятки мачурных библиотек на любой платформе. Я к тому и говорил, что необязательно ебаться с отдельным япом, можно в любом %мейстримный-язык-нейм% то же самое библиотекой сделать, и даже необязательно встраивать целый логический движок, достаточно его сабсета для этой задачи.
Более того, некоторые прям пишут обычную игровую логику (и не только) на рулес инжинах спойлер: все упирается в производительность с одной стороны и упорядочивание эффектов с другой:
https://github.com/oakes/odoyle-rules
https://github.com/paranim/pararules
Помню пилил что-то на Choice Script, но это было давно и не правда.
У меня есть в голове идея для игры.
Однако, тут надо выбрать: менюшка или парсер. Скорее всего менюшку выберу, или своем движке Noir сделаю.
Заинтересовался вашей темой и решил попробовать поиграть в пару игр, но столкнулся с проблемой. При запуске URQ 1.4 выскакивает ошибка
>Не удаётся продолжить выполнение кода, поскольку система не обнаружила MSVBVN50.dll
Я понимаю, что тред не столько про игры, сколько про их создание, но я бы не обратился сюда, если бы этот софт был хотя бы сколько-нибудь известен интернету. Помогите. компьютер на 10 Windows.
Чел, это легко фиксится. Открываешь папку с URQ, находишь там exe. Затем открываешь браузер и вводишь там MSVBVN50.dll, скачиваешь его и кидаешь в папку рядом с экзешником.
Сделол, теперь проит просит comdlg32.ocx
Я его скачал и в папку к URQ закинул и заодно скопировал в system32, но всё равно требует comdlg32.ocs
Ты где качал то? Может ну это говно, и скачать интерпретаторы для Inform? Типа WinFortz.
URQ? Да вроде с официального сайта... Рипсофт народ или что-то вроде.
>интерпретаторы для Inform? Типа WinFortz
Может, но будут ли они работать? Я то в этих штуках вообще не шарю. В описании игры было указано, что она на ripURQ работает, я и пошёл качать, по пути быстренько разобравшишь, что это 1.4 версия...
> Рипсофт народ или что-то вроде.
Чел, это же типичное название для пиратского форума!
> Может, но будут ли они работать?
А почему не должны?
>URQ 1.4
Попробуй отсюда разные версии скачать: http://urq.plut.info/soft
Сам никогда не пробовал и сайт впервые вижу.
>MSVBVN50.dll
Это часть виртуальной машины Microsoft Visual Basic. Одной этой библиотеки, разумеется, будет недостаточно.
>>769836
>comdlg32.ocx
Это тоже кусок виртуальной машины Бейсика.
Короче, твой URQ написан на Бейсике и предполагает наличие виртуальной машины Бейсика, которую то ли удалили из винды в последних версиях, то ли всегда нужно было вручную ставить. Попробуй другие интерпретаторы того же формата (URQL), либо можешь попробовать поставить Visual Basic (он вроде бесплатным был когда-то, если не ошибаюсь).
>>769846
>Чел, это же типичное название для пиратского форума!
И чо? RipURQ - это название интерпретатора. А народ.ру - полудохлая сеть сайтов, которую Яндекс кинул юкозу, по сути убив большинство сайтов. Пиратских среди них (народных, до юкоза) особо не было, большинство сайтов - хомяки уровня веб 1.0, когда ещё соцсетей не было.
>А почему не должны?
Потому что разные интерпретаторы - разные языки, которые они интерпретируют. Ему нужен именно интерпретатор URQL, чтобы конкретные игры запустить.
>>Рипсофт народ или что-то вроде.
>Чел, это же типичное название для пиратского форума
Лол, нашёл расшифровку:
https://ifwiki.ru/URQL
>Universal Ripsoft Quest Language - язык, служащий для написания игр на платформе URQ.
https://ifwiki.ru/URQ
>Аббревиатура URQ расшифровывается как Universal Ripsoft Quest, по названию первой программы-интерпретатора, выпущенной 5 мая 2000 года.
Так что зря паникуешь, это просто "фирма" такая, Ripsoft.
А сайт - вот он: http://ripsoft.narod.ru/Ripsoft.htm
Как я и предполагал, типичный веб 1.0 хоумпейдж. Только теперь с поганой рекламой от юкоза из-за предательства Яндекса...
>Менюшки (Menu-based)
Можно использовать https://tiddlywiki.com/ в качестве удобной платформы/движка для менюшной текстовой игры или, как минимум, интерактивной книги.
Есть такой пример менюшной игры, там можно ходить по комнатам кнопками, брать предметы в инвентарь и т.д., использует только макросы: http://zorklike.tiddlyspot.com/
>I decided to see if it was possible to make some sort of game using only the core tiddlywiki with no plugins or javascript. I made a very bare bones zork/interactive fiction type game. It is currently the simplest thing I could make and claim it was a game, but I may add on to it in the future. It uses the 5.1.5 prerelease because the action-setfield widget saved lots of work making macros.
>One goal of this is to use nothing besides what is contained in the core tiddlywiki, so there is no javascript and no plugins.
Простую интерактивную книгу вообще очень легко сделать: просто указываем варианты ответа в [[скобочках]] и пишем новую страничку книги после клика по появившейся курсивной ссылке.
Одна из возможных полезностей - по умолчанию новые странички открываются ниже предыдущих, т.е. если в книге все страницы уникальны (без повторов), тогда получается последовательная история. Либо можно переключиться в режим отображения только одной странички за раз. Есть кнопки "закрыть всё" и "закрыть всё, кроме этого".
И, конечно, доступна вся мощь HTML/CSS/JS, если очень надо.
Больше выглядит как некий велосипед, когда есть Twine 2, который по сути тоже самое, но лучше.
>Twine 2
Попробовал только что. Интерфейс глючный в мобильном браузере, смог только создать историю, дальше нужен даблклик, которого на мобильных тупо нет))
>лучше
Чем лучше?
>по сути тоже самое
Нет, не то же самое. TiddlyWiki ты редактируешь на лету, как обычный вики-сайт, только полностью оффлайн без необходимости в сервере. Ты можешь создавать что угодно для своих игр и использовать одну фичу в нескольких играх сразу, если они размещены в одной Вики или если сделаешь эту свою фичу в формате плагина. Можешь построить на этой базе свой личный сайт, в котором игры будут органичной частью, т.е. не нужно разделять пространство на блог и игру, всё в одном месте и в одном формате. На мобильных работает почти точно так же как на десктопе (почему-то недоступен только драг-н-дроп, возможно, проблема в браузере), даже если открывать из локального файла. Вся мощь веб-технологий в твоих руках, исходные коды доступны под свободной лицензией. Алсо, если использовать её на постоянной основе для своих записей, журналов, дизайн-документов и т.д., то становится очень привычно и игру написать будет намного проще, чем переучиваться на сторонний инструмент.
Вообще, я просто предложил как альтернативу, если кто-то интересуется подобными альтернативами. Вряд ли тут кто-то делает текстовые игры с прицелом на рынок и прибыль, это же хобби - как и хобби ковыряния в интересных альтернативных инструментах, движках, исходниках и т.д.
> Чем лучше?
Карта комнат, разные форматы разметки (бери любой, что понравился), режим дебага, и полноценное IDE для всего workflow.
>Карта комнат
Вроде видел плагин для создания графа тидлеров, но сам не использовал. В целом, не думаю, что есть смысл в графической карте комнат, если давать им адекватные имена.
>разные форматы разметки
Зачем? Чтобы потом запутаться в них?
>режим дебага, и полноценное IDE для всего workflow
Звучит как overkill для простой интерактивной книги.
Сап, анон. Юнити-разраб в треде. Юзаю ярн (клон твайна) внутри самой юнити. Есть ли в треде писаки сюжетные, которые бы хотели скооперироваться?
Да захуярить текстовый квест в духе КР с миниигорями и прочим. Благо движок позволяет делать вот чо угодно.
Если те ок, то можно хуйнуть по порнотематике и выйти на патреон. Кодить умею, моделить умею, а вот сука писать НИХУЯ не умею.
я тожо бумер, но кр не фанат. ответь мне, ты случайно не сорокалетний токсик из комьюнити ИНСТЕДА?
я изучал этот вопрос, нахожусь в юрисдикции без ст.242, но я не нейтив англюсика - и это будет проблемой
>ты случайно не сорокалетний токсик из комьюнити ИНСТЕДА?
Никогда Инстед не изучал, анон. С гамака на юнити перепрыгнул.
> но я не нейтив англюсика - и это будет проблемой
В целом не думаю, ес что - переводчика подтянуть, да комьюнити подрубить формирующееся
кмк, делать прон на русском смысла мало, я бы лучше сделал маленькую бсплатную игру для мобилок (чтобы овчарки не смеялись в лицо, когда я показываю им портфолио)
в идеале с парсером или распознавалкой голоса гугла от/через aimylogic - бесплатного тарифа за глаза хватит, а вау эффект (и ебля с поддержкой) многократны
пили фейкопочту или чтото, можно и нефейко
>я бы лучше сделал маленькую бсплатную игру для мобилок
Я и так в этом говне варюсь в гк сегменте. Заебало что пизда, хоть и зп нормальные. Именно по этому чот для души порнушное и хотел. Выйду на 50 баксов на патреоне - уже заебись
ну дык и отлична, значит сумеешь нормально продвинуть часовой проект хотя бы в гк чатиках и на дтф))))
я не против патреона, есть заготовка, прон кто рисовать-то будет? описывать пульсацию вен за щекой у Баффи я изи, но как показывает анализ рынка, чисто на текст никто не будет теребить
если на русском, то ты окупил нашу разработку, кидай прям в тред
Там вроде сейчас есть какие-то бесплатные генераторы тушек и паки таких телец и голов, да?
Да вродь есть, я руками моделирую
Как мне сделать так, чтоб в какой-то сцене количество собранных улик считалось в фоне и игра их навсегда запоминала и выдавала уникальные диалоги, если количество улик из какой-то сцены >= заданному числу?
Алсо, как мне на одной странице сделать интерактивный диалог? Я пытался гуглить, нашел только вот такое, но это буквально одиночная развилка, которая ведет все равно на один текст и сделать это получается один раз на сцену. Я чувствую, что это надо через js делать, но я все равно не могу нихуя нагуглить.
<span id="DIALOGUE1">\
<<link "11111">>\
<<replace "#DIALOGUE1">>\
TEXT
<span class="colortext">"TEXT"</span> TEXT <span class="colortext">"TEXT"</span>
TEXTTEXTTEXTTEXTTEXTTEXTTEXT
<span class="colortext">TEXT</span> TEXT <span class="colortext">TEXT</span>
<span class="color2text">TEXT</span>
TEXTTEXTTEXTTEXTTEXTTEXT [[next->next]]
<</replace>>\
<</link>>
<<link "22222>>\
<<replace "#DIALOGUE1">>\
TEXT
<span class="colortext">"TEXT"</span> TEXT <span class="colortext">"TEXT"</span>
TEXTTEXTTEXTTEXTTEXTTEXTTEXT
<span class="colortext">TEXT</span> TEXT <span class="colortext">TEXT</span>
<span class="color2text">TEXT</span>
TEXTTEXTTEXTTEXTTEXTTEXT [[next->next]]
<</replace>>\
<</link>>
</span>
Как мне сделать так, чтоб в какой-то сцене количество собранных улик считалось в фоне и игра их навсегда запоминала и выдавала уникальные диалоги, если количество улик из какой-то сцены >= заданному числу?
Алсо, как мне на одной странице сделать интерактивный диалог? Я пытался гуглить, нашел только вот такое, но это буквально одиночная развилка, которая ведет все равно на один текст и сделать это получается один раз на сцену. Я чувствую, что это надо через js делать, но я все равно не могу нихуя нагуглить.
<span id="DIALOGUE1">\
<<link "11111">>\
<<replace "#DIALOGUE1">>\
TEXT
<span class="colortext">"TEXT"</span> TEXT <span class="colortext">"TEXT"</span>
TEXTTEXTTEXTTEXTTEXTTEXTTEXT
<span class="colortext">TEXT</span> TEXT <span class="colortext">TEXT</span>
<span class="color2text">TEXT</span>
TEXTTEXTTEXTTEXTTEXTTEXT [[next->next]]
<</replace>>\
<</link>>
<<link "22222>>\
<<replace "#DIALOGUE1">>\
TEXT
<span class="colortext">"TEXT"</span> TEXT <span class="colortext">"TEXT"</span>
TEXTTEXTTEXTTEXTTEXTTEXTTEXT
<span class="colortext">TEXT</span> TEXT <span class="colortext">TEXT</span>
<span class="color2text">TEXT</span>
TEXTTEXTTEXTTEXTTEXTTEXT [[next->next]]
<</replace>>\
<</link>>
</span>
Почему же. Может и с картинками. Но картинки в IF выполняют ту же роль, что и в книгах.
1. Качаешь AXMA (суперпростой редактор вроде Twine, лицуха стоит рублей 500, можно экспортировать в html5+JS).
2. Ссылки на ресурсы делаешь локальными, чтобы новелла не лезла в интернет.
3. Экспортируешь свой высерок в html5 с блекджеком и шлюхами.
4. Обмазываешь в APK в Android Studio, Cordova или даже MIT App Inventor.
5. Выкладываешь в магазин приложений.
6. Ты - еба-разработчик игорь.
неосилятор-гуманитарий
ВН это немного про другое.
IF могут быть и парсерными - то есть игрок вводит команды, которые интерпретирует движок, позволяя игровому персонажу взаимодействовать с миром.
ВНки так не умеют, так что тред не про них.
А нахуй тебе AXMA если уже есть идеальный во всех отношениях Twine?
Особенно Harlowe с его механикой storylets.
> Да есть наверное и такие
В ВН есть взаимодействие с миром, но из-за визуальной составляющей необходимость именно вводить команды отпадает. И важно учесть, что в ВН взаимодействие с миром крайне низкое. Они в основном рид-онли, и выбор дают только для нарративной развилки.
А IF может быть близкой как с "Скайриму" (где можно лизнуть каждый камень), так и к "Мертвые Души" (где ты в основном только читаешь). Внезапно, весьма широкий жанр. ВН куда уже.
Ну или так, да.
Мне бы писателя и художника. Сам я не писатель (и не художник), а дизайнер-программист.
А так бы запилил бы ламповое фентези с атмосферой пикрилов.
Почему? Куда лучше западенщины. Лучше ламповый аниме-мирок плавно перетекающий в гримдарк (передаю привет Цукуши), чем западные скучнейшие поделия.
Во-первых, Harlowe есть сторилеты, а это отличный паттерн для сложной логики и недревовидного повествования.
Во-вторых, кинетик новеллы подразумевают ограниченный выбор, а в Harlowe (как и во всех других форматах) ничто тебе не мешает создавать развилку сюжета на каждый пук ГГ.
И да поясняю мамкиным набирателям текста что все проблемы которыми они мучаются внки переболели ещё 30-40 лет назад. И в движках уже по умолчанию есть уйма инструментов для форматирования текста и палеток, а так же для скриптовой логики, плюс интеграция с полноценными яп, а не огрызками текстовых редакторов.
И да текст это тоже графика, без возможностей создавать хорошие стили, отступы, масштабирование, окантовку, использования всевозможных тегов и прочего он будет выглядеть как бесформенное говно.
Зачем? Используй как текстовый редактор. Но он как минимум из коробки отрисует нормальные градиентные палетки с прозрачностью и предоставит эффекты для их вывода и скрытия, вроде мувов, дизольва, фейда и т.д. Для плавного выведения текста, всяких индикаторов, а для эстетов и любого извращения с текстом через анимацию - типо инвертирования букв по оси, покачивание, дрожание, шлейф, распад строчки, на что фантазии хватит.
Чем css отличается кроме паршивого синтаксиса, тормознутости и раз так в 100 меньших возможностях по сравнению с openGL?
Ренпай говно, братюнь. Питоновский ебучий синтаксис этот, говно говна. То ли дело редакторы на языках разметки.
Я не удивлён почему потом в треде вопросы как перекрасить линию. Может сперва освоите яп на уровне if else или разметку движков прежде чем в раздел заходить?
>Может сперва освоите яп на уровне if else или разметку движков прежде чем в раздел заходить?
Ну вот можешь сидеть, дрочить, а потом ныть как сучка, что люди вопросы задают. А люди зададут вопрос и пойдут делать игру дальше, а ты продолжишь сидеть и ныть.
Но я умею в Питон на этом уровне, функции понимаю тоже.
Банально дольше писать чем на языке разметки. Плюс в Ренпае нет визуального представления параграфов, нет их подсчета, да нихуя нет. Плюс файл экспорта тяжелее.
Короче говно этот ваш Ренпай.
Постой, но ты же умеешь в питон, и не можешь написать пару функций типо подсчёта параграфов? Долго делать командами в духе '''бла бла бла''' at centre? Сдаётся мне кто-то тут нагло брешет.
И да в твайне не сделать интерактив как хотят выше для этого нужен полноценный яп, это поделие для совсем бак скорее, которым сложно неделю потратить на гайды по простым командам.
>не можешь написать пару функций типо подсчёта параграфов?
Я могу написать функцию подсчета параграфов, но зачем мне об
этом думать? Алсо я могу и графику выводить через PyGame, но зачем мне она нужна? Я хочу концентрироваться на тексте, а не на технических вопросах.
>И да в твайне не сделать интерактив как хотят выше для этого нужен полноценный яп
В твайне, если я правильно понимаю, можно запускать сценарии JS, этого достаточно.
То есть желающий попердолиться может попердолиться.
>я могу и графику выводить через PyGame
Но игру ты сделать не можешь на нём. А знаешь почему? Потому что даже 2D движок вроде ренпи подтирает твои все так называемые "ненужности" в 95 случаях из 100. И для игры нужно уйма просто гора разных функций, особенно для игры с развитой интерактивностью, возможность бека, квик сейва где намешано 100500 вариантов поворота. И на твайне это не сделать, поэтому на что это просто приложуха для веба, а не полноценный движок.
Вы напоминаете мне тех бак которые пытаются городить собственный огород вместо того чтобы взять готовые решения по движкам для жанров, которые развивались не один десяток лет. Определись что ты хочешь сделать, игру которую можно издать в стиме и в которую кто-то будет играть или просто имитацию разработки игры чтобы потешить себя ненадолго.
> возможность бека, квик сейва где намешано 100500 вариантов поворота
Всё это можно сделать в браузере. В чем проблема?
Ты какой-то совсем глупый. Harlowe:
:: Меню
#Меню
(set: $gift to nothing)
[Купить ягуану]
[Купить черепаху]
[Вернуться к Славяне]
:: Купить ягуану
Ты купил ягуану!
(set: $gift to "ягуана")
[Вернуться к Славяне]
:: Купить черепаху
Ты купил ягуану!
(set: $gift to "ягуана")
[Вернуться к Славяне]
:: Вернуться к Славяне
# У скомейки
Славяна вопрошающие смотрела на тебя.
(if: $gift is "ягуана" or it is "черепаха")[Какая милая!]
(else:)[Увидев тебя с пустыми руками она надулась, и отвернулась от тебя.]
> :: Купить черепаху
> Ты купил черепаху!
> (set: $gift to "черепаха")
> [Вернуться к Славяне]
Быстрофикс
Функционал больше
Смотри не на объем, а на содержание.
Никому не будет интересно читать текст без сюжета, цепляющих героев, и без нормальной симуляции окружения.
Зависит от типа новеллы. Если у тебя story-driven новелла, то есть 1 параграф = 1 кусок сюжета, пробегаемого без возврата в параграф, то 100 параграфов.
Если у тебя puzzle-driven новелла, и параграфы повторяются как локации, на которые возвращаешься, то хватит и 50, но при условии что на этих локациях есть что делать.
Минимум час-полтора, это в районе 40-50 страниц текста вордовского. Ну или объём обычной повести.
Насчёт лень читать если читателя не забайтить за первый час, то скорее всего ему будет лень читать сколь-нибудь большой объём. Всё как и с обычной игрой.
Где флоучарт, почему выложил сраные квадратики вместо текста? Пили ингейм-скрины или публикуй свое поделие, не украдут, не боись.
Ахаха ну извини
Так сделай проверку переменной, в которую занесешь сведения о посещении параграфа с выбором рандомного варианта. If uzhe_byl_tut == false; randomny variant = rand (huy, pizda) etc.
Используем read, зацикливаем, пару слов $verb $object просто выполняем как bash-функцию.
>это МУДы что ли?
MUDы относятся к жанру текстовых игр, но MUD - это ММО текстовая игра.
>>840685
>Что думаете насчёт того, чтобы просто использовать bash
Конечно, можно сделать текстовую игру и так. Только кто её сможет запустить и кто захочет в неё играть? Целевая аудитория текстовых игр и без того очень маленькая, а ты предлагаешь делать под линуксовую консоль на ПК. Сейчас текстовые игры неплохо заходят на мобилках, но там всё же нужно хотя бы минимальное графическое оформление и GUI-шные удобства, а не голая консоль.
Игра от гика для гиков. Планирую создать расслабляющую минималистичную игрульку.
Создавать крупную игру с огромным миром или сложным сюжетом, или большим разнообразием генеративного контента мне не по силам. Потому решил двигаться в обратном направлении.
Максимальный минимализм.
>Потому решил двигаться в обратном направлении.
>Максимальный минимализм.
Максимально минималистичный интерактивный рассказ можно в блокноте за пару часов набросать, будет несколько страничек и пара-тройка развилок. Нечего решать, садись да пиши - если есть какая-то идея сюжета. Без идеи такая игра не получится, т.к. основа - сюжет, а не геймплей. Если же хочешь геймплей без сюжета, можешь попробовать сделать текстовую бродилку, типа найти ключик от двери в комнате со множеством предметов.
Всё описания так или иначе генерятся программно, так как что-то изменять в мире можно даже с небольшим количеством действий.
Генерятся тексты просто - есть список объектов, и мы поочерёдно выводим их описания.
А по сеттингу - вы живёте с лолей в доме на дереве. Вокруг ни души, нет вообще никого кроме вас. Есть горячие источники, охота, рыбалка, посидушки у костра.
>вы живёте с лолей в доме на дереве. Вокруг ни души, нет вообще никого кроме вас. Есть горячие источники, охота, рыбалка, посидушки у костра.
Слышал про такое еще лет 5 назад в VR.
>ни одной лоли нет
Сочувствую.
Оригинал: https://sgthale.itch.io/game
Опенсурс, в который перешёл оригинал:
https://viva-project.org/
https://github.com/OpenViva
>>840854, опередил меня)
>>840726
Пробовал начать делать что-то похожее, 1.5 года назад постил прототип здесь. С одной стороны это не так уж сложно, но с другой - это полноценная игра со своими проблемами, а не простая интерактивная книга (интерактивную книгу можно изготовить из бумаги).
Так что лучше возьми нормальный скриптовый язык - я не думаю, что bash будет достаточно удобен для разработки полноценной игры, пускай даже текстoвой. Алсо рекомендую всё же выбрать веб как основную целевую платформу, если хочешь чтобы в игру могли поиграть с любого устройства, а не только с компьютера на линуксе. Даже сложная текстoвая игра в современном вебе будет работать как обычный одностраничный сайт с кнопками, без установки и без долгих загрузок.
> я не думаю, что bash будет достаточно удобен для разработки полноценной игры
Да вполне. Одни команды переписывают другие команды, образуя таким образом контекстное дерево, описывающее состояние мира и действия.
> веб
Bloatware.
>описывающее состояние мира и действия
А там есть объекты ООП или хотя бы Dictionary?
>Bloatware.
Ты ж от него никуда не денешься. Сюда ты тоже с какого-то браузера пишешь ведь? И наверняка у тебя это не единственная вкладка браузера. Можно использовать более лёгкий браузер, но поддерживающий основные фичи HTML и JS, чтобы играть в игру.
Тяжёлые, раздутые сайты в интернете рождаются из-за использования тяжёлых фреймворков, библиотек или универсальных генераторов сайтов. Никто не мешает написать сайт/игру на голом JS и она будет летать пулей по сравнению с этими раздутыми сайтами. Просто вебмакакам платят за любое поделие, лишь бы оно открывалось на компьютере заказчика, поэтому вебмакаки вообще не парятся об оптимизациях.
> А там есть объекты ООП или хотя бы Dictionary?
Переписывания функций образует контекстное дерево.
Решил написать текстовый квест на самописном движке под андроид. Оказалось что писать нелинейные тексты в обычном редакторе неудобно. Решил написать редактор. Потом понял что хранить джисонину тоже неудобно, решил генерить код на котлине из сценария.
Короче сейчас у меня есть редактор нелинейных текстов в виде веб сервиса. Он позволяет писать в markdown и сохраняет в json. Есть компилятор из json в код на котлине + ресурсы под андроид. И есть тестовое приложение под андроид.
Сейчас работаю над переменными и условиями чтобы мир менялся от действий пользователя, ну в поняли.
Ах да, ещё я написал пару сцен из продакшен сценария который в голове и вообще куча идей ждёт реализации.
Когда будет более-менее готова хотя бы одна ветка сценария пойду искать художника. Уже сделал пару закладок на индихудожников в вк и инсте, может кто-то заинтересует.
Пикрил - сцена из тестового сценария.
Само собой. Только я не дизайнер, я погромист и писатель. Хз как сделать чтобы нормально выглядело. У меня вообще нет вкуса к интерфейсам, меня любой устраивает. Наверное просто сделаю тёмный текст на белом фоне. Типа как чтение текста в моей любимой мракопедии.
>Может быть нажать одну из них?
Можно не надо?
>на самописном движке под андроид
Подробности опиши. Java?
>Оказалось что писать нелинейные тексты в обычном редакторе неудобно.
Зависит от сложности... Слишком нелинейно всё равно не напишешь, т.к. количество необходимой писанины увеличивается слишком быстро. Не задумывался, почему игры в большинстве случаев линейны, а вся "нелинейность" чаще всего фейковая или ведёт к гейм оверу?
>хранить джисонину тоже неудобно
Это почему? Интересно узнать нюансы.
>>841094
>Наверное просто сделаю тёмный текст на белом фоне.
Как минимум нужна тёмная тема. И чисто чёрная - для OLED.
> Подробности опиши. Java?
Только Котлин. Обычный Android SDK. Для редактора использовал ktor. Парсинг json - gson. Парсинг md - регэкспы. Что ещё интеерсно?
> Зависит от сложности... Слишком нелинейно всё равно не напишешь, т.к. количество необходимой писанины увеличивается слишком быстро. Не задумывался, почему игры в большинстве случаев линейны, а вся "нелинейность" чаще всего фейковая или ведёт к гейм оверу?
Я думаю сделать несколько ключевых сцен куда сходятся предыдущие ветки, потом снова расходятся, за это время набираются разные состояния и финальные сцены разные в зависимости от набраных состояний. Ну и какое-то количество плохих концовок на всему сценарию.
> Это почему? Интересно узнать нюансы.
Во-первых тогда любой васян вытащит её из ресурсов и в лучшем случае узнает все концовки, а в худшем спиздит в свой проект. А так у меня все переходы будут обфусцированны, тоже конечно можно вытащить, но намного сложнее. Во-вторых тогда будет дублироваться логика в редакторе и в приложении. В-последних я просто люблю кодогенерацию и перлолиться с кодом.
> Как минимум нужна тёмная тема. И чисто чёрная - для OLED.
Надеюсь что будет, только бы мне не бросить всё это.
Сейчас это будет параграф сцены. Так и будет `тест`, апострофы специально не парсятся. У меня такая модель: квест, сцена квеста, параграф сцены и действие сцены.
Но я планирую сделать в апострофах скрипты. То есть
* Открыть дверь ключом
`isVisible == hasKey`
будет парситься как действие "Открыть дверь ключом", которое будет видно если у игрока есть ключ.
Ага чтобы ца была ещё меньше.
> не страдай хуйнёй
Какой тогда смысл?
Олсо, я вчера написал токинайзер, сегодня написал простой парсер в дерево, но он работает неудовлетворительно. Завтра буду писать алгоритм Дейкстра для обратной польской нотации и уже её разбирать в граф.
А где в твайне показывается количество слов/проходов в хохлы и прочая статистика? Твайн только недавно накотил, сахарныйкубик разобрал, пасседжи леплю пока.
Выглядит годно. Расскажи какой стек (вижу что си) и какие игровые механики.
Пока нечего особо рассказывать, третий день делаю. Стек помесь C++17 и древнего Си, ncurses/PDcurses, сборка CMake под DOS/WinXP (DJGPP), Windows CMD/PowerShell и Linux.
Механики пока не придумывал, могут быть всякие квесты, миниигры, QTE на реакцию.
Дополнительно к вводу текста, конечно. Но в эту сторону не копал особо пока.
оборачивается в андроедобилд даже гуманитарием типа меня за один день, есть ПАРСЕР
дурак ты ей богу
>обратной польской нотации
Тогда уж можно сразу FORTH использовать...
>>841535
Что ты имеешь в виду?
>>841645
>Ветвление сюжетов это не алгоритм, а структура данных, а именно граф.
Необязательно. Игра может генерировать сюжеты по сложной системе правил, а не следовать заранее заданным в данных маршрутам.
У ИИ в этом есть продвижения. По крайней мере Character AI ведёт себя осмысленно - строит аналогии, имеет абстрактные понятия о вещах не привязывываясь к конкретному языку.
Но ебучая скрытая цензура всё портит.
А альтернатив пока нет. Kobold AI и NovelAI не мультиязычны, в отличии от character AI.
я глубоко копал и для ифни, и для в целом для игр - сраный ЗОРК до сих пор ебёт все данженАИ не вставая с дискеты
>трахать лолек
К твоим услугам: https://vrelnir.blogspot.com/
>В AI-решениях можно.
Эти "AI-решения" постоянно забывают, что происходило, и несут бессвязную чепуху. Это больше напоминает сновидение, только ещё более абсурдное: объекты пропадают и появляются, события то происходили, то уже не происходили, персонажи непрерывно мутируют в нечто новое или пропадают и появляются. В частности, твоя лоля очень быстро мутирует в товарища майора прямо во время секса, а решения этой проблемы в текущих "AI-решениях" не существует.
>>841781
>У ИИ в этом есть продвижения.
Нет никакого ИИ, опомнись. Пока что ни одна компания не заявила о создании полноценного ИИ, кроме нескольких шизофреников и артистов. То, о чём ты говоришь - это нейронки, которым скормили мегатонны нефильтрованных текстов из интернетов, и они нашли в этих текстах какие-то взаимосвязи - после чего им дают на вход кусок текста и ожидают от них внятного продолжения... но внятного ничего не получается, потому что ИИ-то в них как не было, так и нет.
>цензура всё портит
Приличный человек тоже не будет публично рассказывать то, за что его могут наказать - оштрафовать или даже посадить в тюрьму. Однако, внутренняя самоцензура этого человека не делает его рассказ бессвязным бредом шизофреника, правильно? Правильно. Настоящий человек (ИИ) может сочинить рассказ с учётом всех ограничений цензуры и этот рассказ будет приятно читать. Так что не кати бочку на цензуру, в данном конкретном случае она ни в чём не виновата.
> К твоим услугам: https://vrelnir.blogspot.com/
Не парсер. Нельзя выбрать сеттинг, да и нельзя играть за мужика.
Может я хочу повеселиться с лолей на горячих источниках, а потом сесть с ней в повозку и поехать дальше искать приключения на жопу?
Ну или я хочу поиграть за человека, который нашёл божественный артефакт, способный уничтожать целые города в мире крестьян и феодалов?
> Эти "AI-решения" постоянно забывают, что происходило, и несут бессвязную чепуху
У моделей у которых меньше 13 миллиардов параметров - безусловно.
"Stack more layers". Почитай "Bitter Lesson" Ричарда Саттона, хорошая статья об этом.
> Так что не кати бочку на цензуру, в данном конкретном случае она ни в чём не виновата.
Виновата, ибо тот же Character AI прилюбых попытках начать описывать сексуальную сцену с лолей тут же начинает морозиться.
понимаешь, это не тренажёр для даунов с афантазией, у него нет такой медицинской цели
>Не парсер
Так даже лучше.
>Нельзя выбрать сеттинг
Играй в другие игры. Их буквально десятки тысяч на сегодняшний день.
>да и нельзя играть за мужика
Более 9000 игр про мужика в главной роли, а тут тебе дают уникальный шанс играть за лолю, и ты ещё чем-то недоволен? Шёл бы ты в /vg/ или откуда ты сюда пришёл, тебе тут не рады.
>Может я хочу
>Ну или я хочу
Знаешь что, если ты реально хочешь, то почему бы тебе просто не фантазировать? Или ты можешь освоить осознанные сновидения, чтобы управлять своими снами. Графика будет на нереально реалистичном уровне по сравнению со всеми ААА, а возможностей куда больше, чем даже в реальном мире. И никаких затрат электричества! Чем это хуже чтения высеров от нейросетки? Давай сравним по пунктам:
- высер от нейросетки не имеет чёткой структуры, а твоя фантазия/сон - имеют, и не какую-то там выведенную из миллионов рандомных текстов, а твою собственную, которая тебе нравится;
- высер от нейросетки не способен поддержать одного персонажа дольше нескольких абзацев, а твоя фантазия/сон могут поддерживать одного персонажа буквально десятилетиями (тульпа);
- высер от нейросетки не имеет графики и озвучки, а если и имеет - то крайне нестабильно и очень медленно, а твоя фантазия/сон работают мгновенно и практически без ограничений;
- высер от нейросетки ты можешь прочитать только с компьютера или телефона, пока у тебя есть электричество и доступ в сеть, а твоё воображение доступно всегда, а сон - каждую ночь;
- читая высеры от нейросетки ты тратишь силы и устаёшь, а фантазирование и сновидения расслабляют и придают тебе сил, пока ты лежишь на своей кровати или свободно сидишь.
Делаем выводы: нейросетки для таких игр не нужны, т.к. есть куда более эффективная платформа - и эта платформа непосредственно в твоей голове, с самого твоего рождения.
>13 миллиардов параметров
>Stack more layers
>Bitter Lesson
У человеческого мозга 6 слоёв в новой коре мозга. ШЕСТЬ. Площадь большая, да, но глубина отдельной колонки всего шесть слоёв. И каждая колонка занята какой-то одной концепцией. Современные нейронки до такого ещё не дошли, хотя предложения были очень давно. Но проблема куда глубже, чем кажется - одна только новая кора мозга может только впитывать информацию, она не имеет жёстких предустановок и множества важных, стабильных систем. Мозг без некоторых из этих систем вообще лишается всей человечности, так что кора - это просто-напросто огромный накопитель данных с ассоциативными связями между файлами, т.е. ссылками. Мы пока не можем повторить кору по её объёму, но даже когда мы её повторим, без важных нижележащих систем эта виртуальная кора будет только запоминать, что ей скажут. Что мы и видим у современных нейронок - они тупо запоминают всё подряд и всё. Это тупиковый путь, нужно создавать конкретные захардкоженные структуры и системы мозга, а не пихать тонны данных в накопитель данных, пусть даже если в этом накопителе создаются какие-то ассоциативные связи. Конечно, без огромного накопителя эти структуры не смогут действовать очень уж умно, но они будут куда лучше современных бредогенераторов - примерно как некоторые птицы, обезьяны, дельфины и прочие животные обходят любую искусственную нейронку, хотя и не могут запомнить столько же, сколько способен запомнить человек (объёма накопителя не хватает, несмотря на присутствие нужных систем мозга).
>при любых попытках начать описывать сексуальную сцену
Так эти нейронки на любой сцене бессмысленную чепуху несут.
И потом, пытаясь "играть" с такой нейронкой ты, по факту, совершаешь очень много работы самостоятельно - ты сам, лично, своими руками печатаешь много текста в виде запросов нейронке... Скажи мне, зачем это нужно? Не проще ли написать целиком самостоятельно историю про то, как ты поехал с кем-то на горячие источники, потом оправился на приключения, а в конечном итоге нашёл артефакт и всех в мире уничтожил? Ты же, по сути, сделаешь всё то же самое, только быстрее, стабильнее и интереснее, чем нейронка. А ещё ты можешь вообще ничего не печатать, а только фантазировать - что будет намного быстрее и лучше, чем любая игра. Какую задачу в данной ситуации решает нейронка? Задачу генерации рандомного бреда? Не сомневайся, наш мозг способен генерировать бред - нужно только сбавить сознательный контроль, например, с помощью вхождения в транс или засыпания.
>Не парсер
Так даже лучше.
>Нельзя выбрать сеттинг
Играй в другие игры. Их буквально десятки тысяч на сегодняшний день.
>да и нельзя играть за мужика
Более 9000 игр про мужика в главной роли, а тут тебе дают уникальный шанс играть за лолю, и ты ещё чем-то недоволен? Шёл бы ты в /vg/ или откуда ты сюда пришёл, тебе тут не рады.
>Может я хочу
>Ну или я хочу
Знаешь что, если ты реально хочешь, то почему бы тебе просто не фантазировать? Или ты можешь освоить осознанные сновидения, чтобы управлять своими снами. Графика будет на нереально реалистичном уровне по сравнению со всеми ААА, а возможностей куда больше, чем даже в реальном мире. И никаких затрат электричества! Чем это хуже чтения высеров от нейросетки? Давай сравним по пунктам:
- высер от нейросетки не имеет чёткой структуры, а твоя фантазия/сон - имеют, и не какую-то там выведенную из миллионов рандомных текстов, а твою собственную, которая тебе нравится;
- высер от нейросетки не способен поддержать одного персонажа дольше нескольких абзацев, а твоя фантазия/сон могут поддерживать одного персонажа буквально десятилетиями (тульпа);
- высер от нейросетки не имеет графики и озвучки, а если и имеет - то крайне нестабильно и очень медленно, а твоя фантазия/сон работают мгновенно и практически без ограничений;
- высер от нейросетки ты можешь прочитать только с компьютера или телефона, пока у тебя есть электричество и доступ в сеть, а твоё воображение доступно всегда, а сон - каждую ночь;
- читая высеры от нейросетки ты тратишь силы и устаёшь, а фантазирование и сновидения расслабляют и придают тебе сил, пока ты лежишь на своей кровати или свободно сидишь.
Делаем выводы: нейросетки для таких игр не нужны, т.к. есть куда более эффективная платформа - и эта платформа непосредственно в твоей голове, с самого твоего рождения.
>13 миллиардов параметров
>Stack more layers
>Bitter Lesson
У человеческого мозга 6 слоёв в новой коре мозга. ШЕСТЬ. Площадь большая, да, но глубина отдельной колонки всего шесть слоёв. И каждая колонка занята какой-то одной концепцией. Современные нейронки до такого ещё не дошли, хотя предложения были очень давно. Но проблема куда глубже, чем кажется - одна только новая кора мозга может только впитывать информацию, она не имеет жёстких предустановок и множества важных, стабильных систем. Мозг без некоторых из этих систем вообще лишается всей человечности, так что кора - это просто-напросто огромный накопитель данных с ассоциативными связями между файлами, т.е. ссылками. Мы пока не можем повторить кору по её объёму, но даже когда мы её повторим, без важных нижележащих систем эта виртуальная кора будет только запоминать, что ей скажут. Что мы и видим у современных нейронок - они тупо запоминают всё подряд и всё. Это тупиковый путь, нужно создавать конкретные захардкоженные структуры и системы мозга, а не пихать тонны данных в накопитель данных, пусть даже если в этом накопителе создаются какие-то ассоциативные связи. Конечно, без огромного накопителя эти структуры не смогут действовать очень уж умно, но они будут куда лучше современных бредогенераторов - примерно как некоторые птицы, обезьяны, дельфины и прочие животные обходят любую искусственную нейронку, хотя и не могут запомнить столько же, сколько способен запомнить человек (объёма накопителя не хватает, несмотря на присутствие нужных систем мозга).
>при любых попытках начать описывать сексуальную сцену
Так эти нейронки на любой сцене бессмысленную чепуху несут.
И потом, пытаясь "играть" с такой нейронкой ты, по факту, совершаешь очень много работы самостоятельно - ты сам, лично, своими руками печатаешь много текста в виде запросов нейронке... Скажи мне, зачем это нужно? Не проще ли написать целиком самостоятельно историю про то, как ты поехал с кем-то на горячие источники, потом оправился на приключения, а в конечном итоге нашёл артефакт и всех в мире уничтожил? Ты же, по сути, сделаешь всё то же самое, только быстрее, стабильнее и интереснее, чем нейронка. А ещё ты можешь вообще ничего не печатать, а только фантазировать - что будет намного быстрее и лучше, чем любая игра. Какую задачу в данной ситуации решает нейронка? Задачу генерации рандомного бреда? Не сомневайся, наш мозг способен генерировать бред - нужно только сбавить сознательный контроль, например, с помощью вхождения в транс или засыпания.
Все таки фантазировать самому это не тоже самое, что играться с нейронкой. Это как заменитель живого человека
> Так даже лучше.
Не лучше. Ну может при ограниченных вариантах действий и лучше, но точно не для того типа IF, которые пытаются симулировать мир.
> Играй в другие игры
И которые точно подойдут по запросу. В такой-то нишевой среде.
Лучше посоветовал бы играть ролеплеи с реальными людьми, такой совет хотя бы смысл имел. Но у РП с реальными людьми тоже есть очень много минусов, в основном из-за скорости игры и сложности подбора самих игроков.
> Шёл бы ты в /vg/ или откуда ты сюда пришёл, тебе тут не рады.
Никогда не сидел в /vg/
> Знаешь что, если ты реально хочешь, то почему бы тебе просто не фантазировать?
Теряется элемент игры, элемент неожиданности. В этом нет ничего интересного.
> высер от нейросетки не способен поддержать одного персонажа дольше нескольких абзацев
Может, 13B модели могут держать персонажей сколько угодно долго, лишь бы TPU для вычислений было.
> высер от нейросетки не имеет графики и озвучки
Это не нужно в текстовых играх, я бы сказал даже вредно для этого жанра.
> У человеческого мозга 6 слоёв в новой коре мозга
Вот только нейронки и человеческий мозг это совершенно разные вещи, и похожи только если схемы на доске рисовать.
У них буквально ничего общего. Нейронка это просто математическая формула гигантских размеров.
> Не проще ли написать целиком самостоятельно историю про то
> интереснее
Я не хочу быть писателем. Я хочу быть игроком. Быть писателем и персонажем - это не одно и то же.
Как я и говорил выше, элемент игры теряется, ты уже заранее знаешь что произойдет дальше.
Нет, в этом нет никого интереса.
> Так даже лучше.
Не лучше. Ну может при ограниченных вариантах действий и лучше, но точно не для того типа IF, которые пытаются симулировать мир.
> Играй в другие игры
И которые точно подойдут по запросу. В такой-то нишевой среде.
Лучше посоветовал бы играть ролеплеи с реальными людьми, такой совет хотя бы смысл имел. Но у РП с реальными людьми тоже есть очень много минусов, в основном из-за скорости игры и сложности подбора самих игроков.
> Шёл бы ты в /vg/ или откуда ты сюда пришёл, тебе тут не рады.
Никогда не сидел в /vg/
> Знаешь что, если ты реально хочешь, то почему бы тебе просто не фантазировать?
Теряется элемент игры, элемент неожиданности. В этом нет ничего интересного.
> высер от нейросетки не способен поддержать одного персонажа дольше нескольких абзацев
Может, 13B модели могут держать персонажей сколько угодно долго, лишь бы TPU для вычислений было.
> высер от нейросетки не имеет графики и озвучки
Это не нужно в текстовых играх, я бы сказал даже вредно для этого жанра.
> У человеческого мозга 6 слоёв в новой коре мозга
Вот только нейронки и человеческий мозг это совершенно разные вещи, и похожи только если схемы на доске рисовать.
У них буквально ничего общего. Нейронка это просто математическая формула гигантских размеров.
> Не проще ли написать целиком самостоятельно историю про то
> интереснее
Я не хочу быть писателем. Я хочу быть игроком. Быть писателем и персонажем - это не одно и то же.
Как я и говорил выше, элемент игры теряется, ты уже заранее знаешь что произойдет дальше.
Нет, в этом нет никого интереса.
Алсо, графику они имееют. Нейронки способны самостоятельно генерировать изображения для текста. Сделал ход, нейронка сгенерировала текст описания леса, а по нему и изображения. У NovelAI к примеру превосходный генератор изображений.
>И каждая колонка занята какой-то одной концепцией.
Звучит как то толсто, френологию развенчали лет 200 назад.
>это просто-напросто огромный накопитель данных с ассоциативными связями между файлами, т.е. ссылками. Мы пока не можем повторить кору по её объёму
Да ничего больше и не нужно, если напихать в нейронку все что ты видел с детства, примерно такое же сознание и получится
>...играться с нейронкой. Это как заменитель живого человека
Сходи в дурку или в дом престарелых, где у людей мозг полностью рассохся от старости, болезни или таблеток. Вот это будет твой "заменитель живого человека". Кому он такой нужен? Нормальные люди сдают таких "заменителей" в дурку или дом престарелых как раз потому, что те лишь создают проблемы, не принося пользы. С текущими нейронками ситуация идентична - проще написать историю самому, чем через нейронку, потому что сам ты пишешь постоянно вперёд, а с нейронкой нужно отменять бред нейронки и запрашивать снова, и так по 10 раз на реплику. Может быть, уже есть нейронки, которые с первой попытки пишут то, что хочешь именно ты? Сомневаюсь.
>>841900
>для того типа IF, которые пытаются симулировать мир
Даже если у тебя симуляция мира, в каждой конкретной локации с каждым конкретным набором предметов и персонажей может быть ограниченное множество действий. Это не только в играх так, в жизни та же ситуация, только множество действий всё-таки больше. Да только мы говорим об играх, а не о жизни. Какого хрена я должен играть в угадайку с программой, автор которой ПОЛЕНИЛСЯ вывести на экран набор кнопок?
>И которые точно подойдут по запросу. В такой-то нишевой среде.
Сделай сам. Мы в разделе /gd/, а не /vg/. Тут от анона ожидается, что он делает игры, а не играет в них. Или, во всяком случае, получает больше удовольствия от создания новых игр, чем от игры в уже существующие игры (да, такие есть, иначе бы не существовало всех этих геймджемов и видосов "как я создал 100 игр за год"). Впрочем, вряд ли ты сможешь сделать текстовую игру на базе нейронок, ведь ты только нахваливаешь уже существующие, а сам в их устройстве не разбираешься и с нуля сделать не сможешь.
>посоветовал бы играть ролеплеи с реальными людьми
Реальные люди не сильно лучше нейронки - да, они обычно не бредят, но тоже будут тянуть одеяло на себя и выводить тебя на какие-то свои, интересные только им, рельсы. Больше всего свободен ты можешь быть только сам с собой - в своей голове, да ещё при создании своей собственной игры на компьютере...
>Теряется элемент игры, элемент неожиданности.
Предрассудок. В реальности твоё воображение может тебя удивить. Но для этого, конечно, нужно приложить хотя бы минимальные усилия, которые могут показаться непривычными или бесполезными. При желании можно вообще войти в режим, когда ты только зритель, а не сценарист появляющихся перед глазами образов. Без каких-либо посторонних веществ и экстремальных действий. Хотя меня это всё мало интересует, я больше заинтересован в создании чего-то в реальном мире, что меня и привело к геймдеву...
>13B модели могут держать персонажей сколько угодно долго, лишь бы TPU для вычислений было
Не понимаю твоей уверенности. Есть какие-то рабочие образцы? При чём тут "TPU для вычислений", если, по факту, для удержания персонажа в памяти достаточно наличие этой памяти - HDD/SSD или RAM? Просто нужно вместо нейронок использовать другой подход, более приспособленный для компьютеров. Памяти-то у нас более, чем достаточно, мы просто ленимся писать программы для операций с этой памятью.
>Нейронка это просто математическая формула гигантских размеров.
Математическая формула - это модель физической системы. Можно описать мозг как математическую формулу, если знать, из чего состоит мозг. Есть разные виды нейронок, и некоторые из них похожи на кору головного мозга, но всё же полной модели человеческого мозга пока нет - вроде бы удавалось моделировать только мозги примитивных животных примерно с сотней нейронов. Вот когда будет функциональная модель мозга или что-то отдалённо напоминающее её, тогда можно будет говорить о "заменителе живого человека", а пока что это всё не более чем бредогенераторы, в основном бесполезные.
>Я хочу быть игроком. Быть писателем и персонажем - это не одно и то же.
>ты уже заранее знаешь что произойдет дальше.
Во-первых, что хорошего в том, что нейронка сгенерирует какой-то внезапный бред? Ты пишешь "я маг 80-го уровня, отправился на квест по убийству всего зла во всём мире", а нейронка тебе в ответ "ты вышел из города и на тебя упал кирпич, ты умер и жалеешь о том, что не смог спасти мир от зла". Что в этом хорошего? Тебе же нейронка весь кайф ломает. По-моему, такого рандомного бреда ИРЛ более чем достаточно, а игры должны быть как можно более предсказуемыми: если ты прокачал персонажа до максимального уровня, все монстры должны отлетать с одного щелчка, и никакой кирпич на голову тебе больше не страшен. Игра - это набор строгих правил, и если игра высирает на тебя какой-то рандомный бред, то это плохая игра. Да, нейронки могут впитать в себя некие правила из тех миллионов текстов, что им скормили, но эти правила хаотичны, нестабильны - совсем не такие, какие закладывает в игру геймдизайнер. Т.е. нейронка принципиально хуже классической игры.
Я, кстати, именно по этой причине хочу создать свою компьютерную игру вместо фантазирования - потому что моё воображение вываливает на меня всякий рандомный бред, который приходится отматывать назад - прямо как ту нейронку - и переигрывать заново. Только с нейронкой поговорить нельзя, а с воображением я могу хоть какой-то диалог наладить, разобраться, в чём проблема и выбрать более удачный маршрут. Т.е. всё же воображать лучше, чем играть с нейронкой, но хуже, чем задавать жёсткие правила в видеоигре.
Во-вторых, как ты уже, наверное, догадываешься, писательство - это не "знаешь всё наперёд". Я пробовал писать рассказы, и могу подтвердить это. Ты не знаешь заранее, что подкинет тебе воображение - это раз. Два - твои персонажи оживают в воображении и начинают вести себя независимо. Как минимум у 60% писателей наблюдается такой эффект оживления персонажей, остальные, скорее всего, просто не придают значение. То есть писатель не знает заранее, как поведёт себя персонаж, он только ставит какие-то рамки и наблюдает за тем, как ведёт себя персонаж в его воображении, и только потом записывает увиденное. Писатель и его персонаж - это не одна и та же личность, писатель - это ты, а твой персонаж живёт свою собственную жизнь и не подчиняется тебе на 100%, если ты хорошо его продумал. По этой же причине нейронка тупо ломает повествование, т.к. у нейронки, в отличие от твоего воображения, нет никакого чёткого "персонажа", она просто предсказывает следующие реплики, опираясь на статистику обучающих текстов.
>>841909
>френология
Это другое. Френология исследовала строение черепа, а не мозга.
>напихать в нейронку все что ты видел с детства, примерно такое же сознание и получится
Если взять видеокамеру, закрепить на лоб младенцу и вести записи 20 лет, мы получим огромную коллекцию видео, но будут ли эти видео в совокупности идентичны сознанию/психике/личности человека, у которого эта камера на лбу висела? Нет, конечно. Недостаточно записать данные, нужно правильно с ними работать. Вот у нас пока нет программы, которая могла бы работать с данными так же, как человек. Текущие нейронки в лучшем случае повторяют лишь какой-то специализированный отдел мозга, а не весь мозг в целом, поэтому сколько ты слоёв в неё не засунь и какие данные не скорми, получится только бредогенератор.
>>841906
>как там с диалогами в классических IF
Но у текущих нейронок тоже всё плохо с диалогами: да, они высирают кучу бреда, отдалённо напоминающего осмысленную речь, но реально осмысленной речью их бред не является. Нейронке скормили кучу текстов, она статистически вычислила, что на вопрос "как дела" обычно следует ответ "у меня всё хорошо", и выводит этот ответ на этот вопрос, но ведь она не понимает, что такое "она" ("у меня") и не сообщает о своём реальном состоянии ("...всё хорошо"). Обычная, классическая программа способна ответить на вопрос "как дела" с чётким пониманием того, что обращаются лично к ней и запрашивают её состояние, поэтому когда эта классическая программа отвечает "200 OK", мы можем с уверенностью утверждать, что она поняла наш вопрос и ответила на него осмысленной речью - пускай и в виде специального кода, а не витиеватой фразы. В этом разница между нейронками и людьми/ИИ: нейронка высирает рандомный бред, а человек/ИИ отвечает осмысленно. В этом плане любая программа намного больше ИИ, чем нейронка.
>...играться с нейронкой. Это как заменитель живого человека
Сходи в дурку или в дом престарелых, где у людей мозг полностью рассохся от старости, болезни или таблеток. Вот это будет твой "заменитель живого человека". Кому он такой нужен? Нормальные люди сдают таких "заменителей" в дурку или дом престарелых как раз потому, что те лишь создают проблемы, не принося пользы. С текущими нейронками ситуация идентична - проще написать историю самому, чем через нейронку, потому что сам ты пишешь постоянно вперёд, а с нейронкой нужно отменять бред нейронки и запрашивать снова, и так по 10 раз на реплику. Может быть, уже есть нейронки, которые с первой попытки пишут то, что хочешь именно ты? Сомневаюсь.
>>841900
>для того типа IF, которые пытаются симулировать мир
Даже если у тебя симуляция мира, в каждой конкретной локации с каждым конкретным набором предметов и персонажей может быть ограниченное множество действий. Это не только в играх так, в жизни та же ситуация, только множество действий всё-таки больше. Да только мы говорим об играх, а не о жизни. Какого хрена я должен играть в угадайку с программой, автор которой ПОЛЕНИЛСЯ вывести на экран набор кнопок?
>И которые точно подойдут по запросу. В такой-то нишевой среде.
Сделай сам. Мы в разделе /gd/, а не /vg/. Тут от анона ожидается, что он делает игры, а не играет в них. Или, во всяком случае, получает больше удовольствия от создания новых игр, чем от игры в уже существующие игры (да, такие есть, иначе бы не существовало всех этих геймджемов и видосов "как я создал 100 игр за год"). Впрочем, вряд ли ты сможешь сделать текстовую игру на базе нейронок, ведь ты только нахваливаешь уже существующие, а сам в их устройстве не разбираешься и с нуля сделать не сможешь.
>посоветовал бы играть ролеплеи с реальными людьми
Реальные люди не сильно лучше нейронки - да, они обычно не бредят, но тоже будут тянуть одеяло на себя и выводить тебя на какие-то свои, интересные только им, рельсы. Больше всего свободен ты можешь быть только сам с собой - в своей голове, да ещё при создании своей собственной игры на компьютере...
>Теряется элемент игры, элемент неожиданности.
Предрассудок. В реальности твоё воображение может тебя удивить. Но для этого, конечно, нужно приложить хотя бы минимальные усилия, которые могут показаться непривычными или бесполезными. При желании можно вообще войти в режим, когда ты только зритель, а не сценарист появляющихся перед глазами образов. Без каких-либо посторонних веществ и экстремальных действий. Хотя меня это всё мало интересует, я больше заинтересован в создании чего-то в реальном мире, что меня и привело к геймдеву...
>13B модели могут держать персонажей сколько угодно долго, лишь бы TPU для вычислений было
Не понимаю твоей уверенности. Есть какие-то рабочие образцы? При чём тут "TPU для вычислений", если, по факту, для удержания персонажа в памяти достаточно наличие этой памяти - HDD/SSD или RAM? Просто нужно вместо нейронок использовать другой подход, более приспособленный для компьютеров. Памяти-то у нас более, чем достаточно, мы просто ленимся писать программы для операций с этой памятью.
>Нейронка это просто математическая формула гигантских размеров.
Математическая формула - это модель физической системы. Можно описать мозг как математическую формулу, если знать, из чего состоит мозг. Есть разные виды нейронок, и некоторые из них похожи на кору головного мозга, но всё же полной модели человеческого мозга пока нет - вроде бы удавалось моделировать только мозги примитивных животных примерно с сотней нейронов. Вот когда будет функциональная модель мозга или что-то отдалённо напоминающее её, тогда можно будет говорить о "заменителе живого человека", а пока что это всё не более чем бредогенераторы, в основном бесполезные.
>Я хочу быть игроком. Быть писателем и персонажем - это не одно и то же.
>ты уже заранее знаешь что произойдет дальше.
Во-первых, что хорошего в том, что нейронка сгенерирует какой-то внезапный бред? Ты пишешь "я маг 80-го уровня, отправился на квест по убийству всего зла во всём мире", а нейронка тебе в ответ "ты вышел из города и на тебя упал кирпич, ты умер и жалеешь о том, что не смог спасти мир от зла". Что в этом хорошего? Тебе же нейронка весь кайф ломает. По-моему, такого рандомного бреда ИРЛ более чем достаточно, а игры должны быть как можно более предсказуемыми: если ты прокачал персонажа до максимального уровня, все монстры должны отлетать с одного щелчка, и никакой кирпич на голову тебе больше не страшен. Игра - это набор строгих правил, и если игра высирает на тебя какой-то рандомный бред, то это плохая игра. Да, нейронки могут впитать в себя некие правила из тех миллионов текстов, что им скормили, но эти правила хаотичны, нестабильны - совсем не такие, какие закладывает в игру геймдизайнер. Т.е. нейронка принципиально хуже классической игры.
Я, кстати, именно по этой причине хочу создать свою компьютерную игру вместо фантазирования - потому что моё воображение вываливает на меня всякий рандомный бред, который приходится отматывать назад - прямо как ту нейронку - и переигрывать заново. Только с нейронкой поговорить нельзя, а с воображением я могу хоть какой-то диалог наладить, разобраться, в чём проблема и выбрать более удачный маршрут. Т.е. всё же воображать лучше, чем играть с нейронкой, но хуже, чем задавать жёсткие правила в видеоигре.
Во-вторых, как ты уже, наверное, догадываешься, писательство - это не "знаешь всё наперёд". Я пробовал писать рассказы, и могу подтвердить это. Ты не знаешь заранее, что подкинет тебе воображение - это раз. Два - твои персонажи оживают в воображении и начинают вести себя независимо. Как минимум у 60% писателей наблюдается такой эффект оживления персонажей, остальные, скорее всего, просто не придают значение. То есть писатель не знает заранее, как поведёт себя персонаж, он только ставит какие-то рамки и наблюдает за тем, как ведёт себя персонаж в его воображении, и только потом записывает увиденное. Писатель и его персонаж - это не одна и та же личность, писатель - это ты, а твой персонаж живёт свою собственную жизнь и не подчиняется тебе на 100%, если ты хорошо его продумал. По этой же причине нейронка тупо ломает повествование, т.к. у нейронки, в отличие от твоего воображения, нет никакого чёткого "персонажа", она просто предсказывает следующие реплики, опираясь на статистику обучающих текстов.
>>841909
>френология
Это другое. Френология исследовала строение черепа, а не мозга.
>напихать в нейронку все что ты видел с детства, примерно такое же сознание и получится
Если взять видеокамеру, закрепить на лоб младенцу и вести записи 20 лет, мы получим огромную коллекцию видео, но будут ли эти видео в совокупности идентичны сознанию/психике/личности человека, у которого эта камера на лбу висела? Нет, конечно. Недостаточно записать данные, нужно правильно с ними работать. Вот у нас пока нет программы, которая могла бы работать с данными так же, как человек. Текущие нейронки в лучшем случае повторяют лишь какой-то специализированный отдел мозга, а не весь мозг в целом, поэтому сколько ты слоёв в неё не засунь и какие данные не скорми, получится только бредогенератор.
>>841906
>как там с диалогами в классических IF
Но у текущих нейронок тоже всё плохо с диалогами: да, они высирают кучу бреда, отдалённо напоминающего осмысленную речь, но реально осмысленной речью их бред не является. Нейронке скормили кучу текстов, она статистически вычислила, что на вопрос "как дела" обычно следует ответ "у меня всё хорошо", и выводит этот ответ на этот вопрос, но ведь она не понимает, что такое "она" ("у меня") и не сообщает о своём реальном состоянии ("...всё хорошо"). Обычная, классическая программа способна ответить на вопрос "как дела" с чётким пониманием того, что обращаются лично к ней и запрашивают её состояние, поэтому когда эта классическая программа отвечает "200 OK", мы можем с уверенностью утверждать, что она поняла наш вопрос и ответила на него осмысленной речью - пускай и в виде специального кода, а не витиеватой фразы. В этом разница между нейронками и людьми/ИИ: нейронка высирает рандомный бред, а человек/ИИ отвечает осмысленно. В этом плане любая программа намного больше ИИ, чем нейронка.
> Есть какие-то рабочие образцы?
Kobold AI. Он способен самостоятельно вносить персонажей в World Info (постоянную память).
> если, по факту, для удержания персонажа в памяти достаточно наличие этой памяти - HDD/SSD или RAM?
Не совсем. Чем больше нейронке нужно сохранить, тем больше ей нужно обработать. С памятью проблем нет, а вот вычислительные мощности очень дорогие. GPT лучше всего работает на тензорных процессорах. Благо колаб эти возможности предостовляет.
> Во-первых, что хорошего в том, что нейронка сгенерирует какой-то внезапный бред?
Больше слоев, меньше бреда.
А потенциал большой, она сгенерирует тебе описание города, внешность NPC, и множество других полезных вещей.
> Даже если у тебя симуляция мира, в каждой конкретной локации с каждым конкретным набором предметов и персонажей может быть ограниченное множество действий.
Ты явно никогда не был Мастером Подземелий.
Это распространенная ошибка среди начинающих мастеров - попытаться предсказать все решения проблемы, чтобы тут же выдать игрокам результат.
Нет, игроки могут придумать СОТНИ решений поставленной перед ними проблемы.
Нет смысла продумывать всё, потому опытные мастера придумывают всё на лету. Иначе попадут в комбинаторный взрыв.
Игрок всегда может придумать действие, которое было действительно логичным в данной ситуации, но о котором мастер даже не догадывался.
Игроки всё равно не пойдут по твоим рельсам, могут вообще пойти в противоположном направлении, или вообще дрочить в таверне ничего не делая кроме как бухать всю игру. И это абсолютно нормально.
А классические IF (в жанре RPG) не оставляют игроку ничего кроме рельсов.
У разработчика IF по сути стоит задача запрограммировать мастера, который будет реагировать на действия игрока.
И задавая его (по определению) ограниченной системой логического вывода на основе правил (аля пролог какой-нибудь), а может просто графом, ты просто сделаешь очень плохого мастера.
> Игра - это набор строгих правил
Можешь поступить как игроки solo TTRPG, которые используют правила какой-нибудь настолки типа D&D или Ironsworn совместно с ИИ, который играет роль GM и позволяет игроку играть не полагаясь на десятки таблиц для генерации локаций и персонажей.
> Во-вторых, как ты уже, наверное, догадываешься, писательство - это не "знаешь всё наперёд". Я пробовал писать рассказы, и могу подтвердить это. Ты не знаешь заранее, что подкинет тебе воображение - это раз. Два - твои персонажи оживают в воображении и начинают вести себя независимо.
Полный бред. Ты всегда чувствуешь контроль над происходящим. Твой случай может произойти, если только у тебя в голове несколько параллельных сознаний, думающих независимо друг-от-друга.
Ты всегда знаешь, что произойдет до того, как сделает ход твой персонаж (то бишь ты).
Проблему можно решить многогранными дайсами и сотнями таблиц процедурной генерации (вплоть до "Таблица: Что ты увидел за углом дома"). У кого-то есть столько таблиц? И сколько бы у тебя не было таблиц, их всегда будет мало, ибо мир игры бесконечно широк, а таблицы конечны.
> Но у текущих нейронок тоже всё плохо с диалогами
И тут выходит на сцену Character AI, с которым ты можешь обсуждать танатологию, материализм Маркса, и делать это не английском, а на эсператно (грамматически верном эсперанто причем). Нейронки развиваются быстрее, чем люди успевают уследить за их развитием, если не специально наблюдать.
Это конечно всё китайская комната, но тем не менее, такая система диалогов дает богатый выбор.
Нет, конечно ты можешь запрограммировать глубокую симуляцию, где каждый NPC имеет знания, и ты можешь запрограммировать команды "спросить <имя_нпс> о <предмет>".
Однако ты обязательно попадешь в комбинаторный взрыв, причину описал выше.
> Есть какие-то рабочие образцы?
Kobold AI. Он способен самостоятельно вносить персонажей в World Info (постоянную память).
> если, по факту, для удержания персонажа в памяти достаточно наличие этой памяти - HDD/SSD или RAM?
Не совсем. Чем больше нейронке нужно сохранить, тем больше ей нужно обработать. С памятью проблем нет, а вот вычислительные мощности очень дорогие. GPT лучше всего работает на тензорных процессорах. Благо колаб эти возможности предостовляет.
> Во-первых, что хорошего в том, что нейронка сгенерирует какой-то внезапный бред?
Больше слоев, меньше бреда.
А потенциал большой, она сгенерирует тебе описание города, внешность NPC, и множество других полезных вещей.
> Даже если у тебя симуляция мира, в каждой конкретной локации с каждым конкретным набором предметов и персонажей может быть ограниченное множество действий.
Ты явно никогда не был Мастером Подземелий.
Это распространенная ошибка среди начинающих мастеров - попытаться предсказать все решения проблемы, чтобы тут же выдать игрокам результат.
Нет, игроки могут придумать СОТНИ решений поставленной перед ними проблемы.
Нет смысла продумывать всё, потому опытные мастера придумывают всё на лету. Иначе попадут в комбинаторный взрыв.
Игрок всегда может придумать действие, которое было действительно логичным в данной ситуации, но о котором мастер даже не догадывался.
Игроки всё равно не пойдут по твоим рельсам, могут вообще пойти в противоположном направлении, или вообще дрочить в таверне ничего не делая кроме как бухать всю игру. И это абсолютно нормально.
А классические IF (в жанре RPG) не оставляют игроку ничего кроме рельсов.
У разработчика IF по сути стоит задача запрограммировать мастера, который будет реагировать на действия игрока.
И задавая его (по определению) ограниченной системой логического вывода на основе правил (аля пролог какой-нибудь), а может просто графом, ты просто сделаешь очень плохого мастера.
> Игра - это набор строгих правил
Можешь поступить как игроки solo TTRPG, которые используют правила какой-нибудь настолки типа D&D или Ironsworn совместно с ИИ, который играет роль GM и позволяет игроку играть не полагаясь на десятки таблиц для генерации локаций и персонажей.
> Во-вторых, как ты уже, наверное, догадываешься, писательство - это не "знаешь всё наперёд". Я пробовал писать рассказы, и могу подтвердить это. Ты не знаешь заранее, что подкинет тебе воображение - это раз. Два - твои персонажи оживают в воображении и начинают вести себя независимо.
Полный бред. Ты всегда чувствуешь контроль над происходящим. Твой случай может произойти, если только у тебя в голове несколько параллельных сознаний, думающих независимо друг-от-друга.
Ты всегда знаешь, что произойдет до того, как сделает ход твой персонаж (то бишь ты).
Проблему можно решить многогранными дайсами и сотнями таблиц процедурной генерации (вплоть до "Таблица: Что ты увидел за углом дома"). У кого-то есть столько таблиц? И сколько бы у тебя не было таблиц, их всегда будет мало, ибо мир игры бесконечно широк, а таблицы конечны.
> Но у текущих нейронок тоже всё плохо с диалогами
И тут выходит на сцену Character AI, с которым ты можешь обсуждать танатологию, материализм Маркса, и делать это не английском, а на эсператно (грамматически верном эсперанто причем). Нейронки развиваются быстрее, чем люди успевают уследить за их развитием, если не специально наблюдать.
Это конечно всё китайская комната, но тем не менее, такая система диалогов дает богатый выбор.
Нет, конечно ты можешь запрограммировать глубокую симуляцию, где каждый NPC имеет знания, и ты можешь запрограммировать команды "спросить <имя_нпс> о <предмет>".
Однако ты обязательно попадешь в комбинаторный взрыв, причину описал выше.
Все намного веселее, если у тебя амнезия и ты через месяц уже забываешь.
>Kobold AI
https://www.reddit.com/r/KoboldAI/comments/yxsepr/
>Think of it like very powerful auto-complete. If you notice it get more coherent throughout a story, that's just because it has more text to work with.
>That’s a pretty small story that will fit entirely. You’ll find pretty quick that stuff’s left behind. You can see in the console how much has been passed to the AI. The default is about three-four paragraphs worth.
Алсо, тебя не затруднит доставить наглядные примеры игры с этой нейронкой? С "Dungeon AI" было много скриншотов, но все уровня "гы-гы, смотрите какой лютый бред пишет эта штуковина".
>Чем больше нейронке нужно сохранить, тем больше ей нужно обработать.
Зачем? Сколько информации ты обрабатываешь, когда думаешь о чём-либо? Объём твоего мозга не увеличивается, а количество нейронов и нейронных связей непрерывно сокращается несмотря даже на процесс создания новых нейронов. Правильная искусственная нейросеть должна работать без остановки, постоянно принимая входящую информацию и отдавая исходящую, и не имея никаких проблем с объёмом памяти, если её удалось однажды запустить, ведь дальше она будет только "худеть". Только не начинай снова про миллиарды слоёв - у насекомых считанные сотни отдельных нейронов, но на данный момент даже они умнее всех этих бредогенераторов. Потому что насекомое оптимизировано для выживания в дикой природе, а нейронкам тупо скармливают текст и ждут от них чуда. И никакой это не ИИ, вот у насекомых в дикой природе "ИИ" есть, а в бредогенераторе его нет.
Но это нейронные сети. Классические программы могут вообще не обрабатывать сохранённые данные, пока они им не понадобятся. Подумай об играх: игра весом 100+ ГБ на жёстком диске прекрасно работает с оперативной памятью всего 4-8 ГБ, потому что в разные моменты времени ей требуются разные файлы. Пока игрок не прошёл в другую локацию, файлы лежат на диске и совершенно никак не используются процессором. Вот настоящий ИИ без нейронных сетей будет работать примерно так же - даже имея терабайты личных воспоминаний за все годы бесперебойной работы, в каждый момент времени он будет обрабатывать только мегабайты актуальной в данный момент информации. Подумай о ссылках. Тебе не нужно хранить в оперативной памяти все сайты из интернета, достаточно знать, по какой ссылке их можно открыть.
А нейронные сети не умеют в столь эффективное управление памятью, потому что они основаны на горсти изначально независимых биологических организмов (клеток), т.е. на совершенно другой архитектуре. Искусственные нейронные сети - это как запуск эмулятора устаревшего железа на несовместимом с ним современном - полезно для запуска устаревшей программы, но в повседневной работе ты всё же предпочтёшь современную программу для современного железа. Понимаешь меня?
>игроки могут придумать СОТНИ решений
Когда в реальной жизни перед тобой лужа, у тебя всего четыре разумных варианта действий:
1. Обойти лужу стороной.
2. Перепрыгнуть лужу.
3. Пройти прямо сквозь лужу.
4. Развернуться и уйти обратно.
Может, ты сейчас можешь придумать ещё 996 вариантов решения задачи "лужа на дороге", но все они будут как минимум неестественными. Поэтому разработчики игр не парятся, и если ставят на дороге лужу, дают игроку всего 4 варианта действий. В контексте текстовых игр: лучше дать игроку 4 кнопки доступных действий, чем заставлять его брутфорсить варианты, которые нормальному человеку в голову вообще не придут (типа "я толкнул свою младшую сестру в лужу и перешёл по её спине" - ты вообще в своём уме, игрок?) и поэтому в игре недоступны.
>Игрок всегда может придумать действие, которое было действительно логичным в данной ситуации, но о котором мастер даже не догадывался.
Игры так не делаются. Если перед игроком поставлена задача "преследовать поезд", он должен преследовать поезд, иначе будет фейл и рестарт. Разве это так трудно понять? Игры - это аттракцион, и ты должен следовать правилам аттракциона, чтобы получить удовольствие. Текстовые игры - такой же аттракцион, что и графические, только вместо графики описывают всё текстом. Но это не делает их чем-то кроме аттракциона. Да, даже если игра в жанре симулятора без чётко поставленной цели (т.е. песочница), это по-прежнему аттракцион. Для примера можно взять Minecraft - он как будто не ставит перед тобой никакого коридора, никаких сюжетных рельс, но ты по-прежнему находишься в тематическом парке аттракционов, которые работают по строгим правилам и никак иначе. Твои неоправданные ожидания лишь твоя проблема - все аттракционы исправны, пока следуют правилам. Все отклонения от правил - баг, ошибка, неисправность. Только ты виноват в том, что пытаешься сломать аттракцион неправильными действиями и недоволен результатом.
>У разработчика IF по сути стоит задача запрограммировать мастера, который будет реагировать на действия игрока.
Нет, интерактивная литература - это литература с развилками в сюжете. В самом простом случае интерактивную литературу можно рассматривать как стопку книг: ты читаешь заголовки книг и выбираешь, какую книгу из стопки ты будешь читать. Ты просто ожидаешь от книг совсем не то, для чего они созданы. И никакая нейронка не сможет заменить интерактивную литературу, как не сможет заменить человек хорошо написанную книгу. В будущем настоящий искусственный интеллект (не бредогенератор) сможет писать качественные книги, но сам по себе не будет являться заменой книги - он будет писателем, а не книгой.
Правильнее рассматривать ИИ как второго игрока в игре или друга, который пошёл вместе с тобой в парк развлечений - кататься вдвоём на аттракционах. Аттракционы так и останутся глупыми механизмами, но с ИИ кататься на них будет интереснее, как может быть интереснее играть в онлайн-игры. Так и интерактивная литература никуда не денется - может, её будут создавать ИИ на базе своего личного опыта жизни в нашем мире, но эта литература останется аттракционом, не превращаясь ни в какого "мастера подземелий". Это просто разные жанры.
>совместно с ИИ, который играет роль GM
Какой ИИ? Нет пока никакого ИИ. Или его скрывают в секретных лабораториях. Даже Watson, к сожалению, всего лишь продвинутый поисковый движок.
>Твой случай может произойти, если только у тебя в голове несколько параллельных сознаний, думающих независимо друг-от-друга.
Что такое сознание-то? У тебя в голове только мозг. Мозг состоит из множества разнородных частей, и даже однородная кора имеет неоднородную организацию, запоминая разные вещи в разных своих частях. У нас есть некая "петля", которая замыкает деятельность мозга саму на себя: так мы можем запоминать и анализировать свои собственные мысли и чувства. Если эта петля прерывается, человек перестаёт себя осознавать (и обычно падает без сознания, но не всегда). Но кто эти "мы"? Что такое "я"? Совокупность сотен миллиардов независимых клеток, которые мы привыкли называть одним словом "я". Ключевое слово: привыкли. Если пронаблюдать за собой, на время абстрагировавшись от этой концепции "я", можно заметить, что нет никакого монолитного "я". Мы лишь привыкли называть и считать себя неделимой сущностью, но в реальности мы никогда не были и не можем быть неделимым "я". Абстрагируйся от своего "я", и ты увидишь, что его никогда и не было. Когда ты сможешь преодолеть этот барьер, ты сможешь разделить себя на столько частей, на сколько пожелаешь. Эти части не будут отдельными людьми, но они не будут и тобой. Ну, наверное, ты уже понял, к чему я веду.
>Ты всегда знаешь, что произойдет до того, как сделает ход твой персонаж (то бишь ты).
Если ты понял предыдущий абзац, наверное, ты уже знаешь, что я хочу сказать. Твоё "знание следующего хода" не является твоим знанием - это ход мысли твоего персонажа, которого ты сознательно или непроизвольно отделил от своего "я". Ваше сознание (та петля, которая замыкает мозг на себя) одно на всех, но вы не одно и то же. Самое главное здесь - осознать, что мысль не равна речи - мыслим мы без использования речи, а тот комментатор в наших мыслях лишь одна из наших частей. Комментатор может обращать мысли в мысленную речь, может озвучивать всех наших персонажей. Но мысли персонажей возникают куда быстрее, чем может прозвучать речь. Т.е. это вовсе не какие-то там глюки, а твои мысли - мысли без слов, которые ты отделил от своего "я" и присвоил "персонажу". Просто у некоторых людей это всё само собой происходит, без их сознательных желаний или усилий.
>Kobold AI
https://www.reddit.com/r/KoboldAI/comments/yxsepr/
>Think of it like very powerful auto-complete. If you notice it get more coherent throughout a story, that's just because it has more text to work with.
>That’s a pretty small story that will fit entirely. You’ll find pretty quick that stuff’s left behind. You can see in the console how much has been passed to the AI. The default is about three-four paragraphs worth.
Алсо, тебя не затруднит доставить наглядные примеры игры с этой нейронкой? С "Dungeon AI" было много скриншотов, но все уровня "гы-гы, смотрите какой лютый бред пишет эта штуковина".
>Чем больше нейронке нужно сохранить, тем больше ей нужно обработать.
Зачем? Сколько информации ты обрабатываешь, когда думаешь о чём-либо? Объём твоего мозга не увеличивается, а количество нейронов и нейронных связей непрерывно сокращается несмотря даже на процесс создания новых нейронов. Правильная искусственная нейросеть должна работать без остановки, постоянно принимая входящую информацию и отдавая исходящую, и не имея никаких проблем с объёмом памяти, если её удалось однажды запустить, ведь дальше она будет только "худеть". Только не начинай снова про миллиарды слоёв - у насекомых считанные сотни отдельных нейронов, но на данный момент даже они умнее всех этих бредогенераторов. Потому что насекомое оптимизировано для выживания в дикой природе, а нейронкам тупо скармливают текст и ждут от них чуда. И никакой это не ИИ, вот у насекомых в дикой природе "ИИ" есть, а в бредогенераторе его нет.
Но это нейронные сети. Классические программы могут вообще не обрабатывать сохранённые данные, пока они им не понадобятся. Подумай об играх: игра весом 100+ ГБ на жёстком диске прекрасно работает с оперативной памятью всего 4-8 ГБ, потому что в разные моменты времени ей требуются разные файлы. Пока игрок не прошёл в другую локацию, файлы лежат на диске и совершенно никак не используются процессором. Вот настоящий ИИ без нейронных сетей будет работать примерно так же - даже имея терабайты личных воспоминаний за все годы бесперебойной работы, в каждый момент времени он будет обрабатывать только мегабайты актуальной в данный момент информации. Подумай о ссылках. Тебе не нужно хранить в оперативной памяти все сайты из интернета, достаточно знать, по какой ссылке их можно открыть.
А нейронные сети не умеют в столь эффективное управление памятью, потому что они основаны на горсти изначально независимых биологических организмов (клеток), т.е. на совершенно другой архитектуре. Искусственные нейронные сети - это как запуск эмулятора устаревшего железа на несовместимом с ним современном - полезно для запуска устаревшей программы, но в повседневной работе ты всё же предпочтёшь современную программу для современного железа. Понимаешь меня?
>игроки могут придумать СОТНИ решений
Когда в реальной жизни перед тобой лужа, у тебя всего четыре разумных варианта действий:
1. Обойти лужу стороной.
2. Перепрыгнуть лужу.
3. Пройти прямо сквозь лужу.
4. Развернуться и уйти обратно.
Может, ты сейчас можешь придумать ещё 996 вариантов решения задачи "лужа на дороге", но все они будут как минимум неестественными. Поэтому разработчики игр не парятся, и если ставят на дороге лужу, дают игроку всего 4 варианта действий. В контексте текстовых игр: лучше дать игроку 4 кнопки доступных действий, чем заставлять его брутфорсить варианты, которые нормальному человеку в голову вообще не придут (типа "я толкнул свою младшую сестру в лужу и перешёл по её спине" - ты вообще в своём уме, игрок?) и поэтому в игре недоступны.
>Игрок всегда может придумать действие, которое было действительно логичным в данной ситуации, но о котором мастер даже не догадывался.
Игры так не делаются. Если перед игроком поставлена задача "преследовать поезд", он должен преследовать поезд, иначе будет фейл и рестарт. Разве это так трудно понять? Игры - это аттракцион, и ты должен следовать правилам аттракциона, чтобы получить удовольствие. Текстовые игры - такой же аттракцион, что и графические, только вместо графики описывают всё текстом. Но это не делает их чем-то кроме аттракциона. Да, даже если игра в жанре симулятора без чётко поставленной цели (т.е. песочница), это по-прежнему аттракцион. Для примера можно взять Minecraft - он как будто не ставит перед тобой никакого коридора, никаких сюжетных рельс, но ты по-прежнему находишься в тематическом парке аттракционов, которые работают по строгим правилам и никак иначе. Твои неоправданные ожидания лишь твоя проблема - все аттракционы исправны, пока следуют правилам. Все отклонения от правил - баг, ошибка, неисправность. Только ты виноват в том, что пытаешься сломать аттракцион неправильными действиями и недоволен результатом.
>У разработчика IF по сути стоит задача запрограммировать мастера, который будет реагировать на действия игрока.
Нет, интерактивная литература - это литература с развилками в сюжете. В самом простом случае интерактивную литературу можно рассматривать как стопку книг: ты читаешь заголовки книг и выбираешь, какую книгу из стопки ты будешь читать. Ты просто ожидаешь от книг совсем не то, для чего они созданы. И никакая нейронка не сможет заменить интерактивную литературу, как не сможет заменить человек хорошо написанную книгу. В будущем настоящий искусственный интеллект (не бредогенератор) сможет писать качественные книги, но сам по себе не будет являться заменой книги - он будет писателем, а не книгой.
Правильнее рассматривать ИИ как второго игрока в игре или друга, который пошёл вместе с тобой в парк развлечений - кататься вдвоём на аттракционах. Аттракционы так и останутся глупыми механизмами, но с ИИ кататься на них будет интереснее, как может быть интереснее играть в онлайн-игры. Так и интерактивная литература никуда не денется - может, её будут создавать ИИ на базе своего личного опыта жизни в нашем мире, но эта литература останется аттракционом, не превращаясь ни в какого "мастера подземелий". Это просто разные жанры.
>совместно с ИИ, который играет роль GM
Какой ИИ? Нет пока никакого ИИ. Или его скрывают в секретных лабораториях. Даже Watson, к сожалению, всего лишь продвинутый поисковый движок.
>Твой случай может произойти, если только у тебя в голове несколько параллельных сознаний, думающих независимо друг-от-друга.
Что такое сознание-то? У тебя в голове только мозг. Мозг состоит из множества разнородных частей, и даже однородная кора имеет неоднородную организацию, запоминая разные вещи в разных своих частях. У нас есть некая "петля", которая замыкает деятельность мозга саму на себя: так мы можем запоминать и анализировать свои собственные мысли и чувства. Если эта петля прерывается, человек перестаёт себя осознавать (и обычно падает без сознания, но не всегда). Но кто эти "мы"? Что такое "я"? Совокупность сотен миллиардов независимых клеток, которые мы привыкли называть одним словом "я". Ключевое слово: привыкли. Если пронаблюдать за собой, на время абстрагировавшись от этой концепции "я", можно заметить, что нет никакого монолитного "я". Мы лишь привыкли называть и считать себя неделимой сущностью, но в реальности мы никогда не были и не можем быть неделимым "я". Абстрагируйся от своего "я", и ты увидишь, что его никогда и не было. Когда ты сможешь преодолеть этот барьер, ты сможешь разделить себя на столько частей, на сколько пожелаешь. Эти части не будут отдельными людьми, но они не будут и тобой. Ну, наверное, ты уже понял, к чему я веду.
>Ты всегда знаешь, что произойдет до того, как сделает ход твой персонаж (то бишь ты).
Если ты понял предыдущий абзац, наверное, ты уже знаешь, что я хочу сказать. Твоё "знание следующего хода" не является твоим знанием - это ход мысли твоего персонажа, которого ты сознательно или непроизвольно отделил от своего "я". Ваше сознание (та петля, которая замыкает мозг на себя) одно на всех, но вы не одно и то же. Самое главное здесь - осознать, что мысль не равна речи - мыслим мы без использования речи, а тот комментатор в наших мыслях лишь одна из наших частей. Комментатор может обращать мысли в мысленную речь, может озвучивать всех наших персонажей. Но мысли персонажей возникают куда быстрее, чем может прозвучать речь. Т.е. это вовсе не какие-то там глюки, а твои мысли - мысли без слов, которые ты отделил от своего "я" и присвоил "персонажу". Просто у некоторых людей это всё само собой происходит, без их сознательных желаний или усилий.
>Когда в реальной жизни перед тобой лужа, у тебя всего четыре разумных варианта действий:
>1. Обойти лужу стороной.
>2. Перепрыгнуть лужу.
>3. Пройти прямо сквозь лужу.
>4. Развернуться и уйти обратно.
Кстати есть объяснение почему именно столько и именно этих? Я видел у психологов нечто подобное
Возможные решения проблемы
· изменить себя и своё поведение;
· изменить ситуацию;
· выйти из ситуации;
· изменить своё отношение к ситуации.
>Кстати есть объяснение почему именно столько и именно этих? Я видел у психологов нечто подобное
Честно говоря, написал пример от балды, как возможный в реальности и во всех видах игр (в 3D играх могут быть лужи и всё перечисленное там обычно можно осуществить, хотя это ни на что не влияет). При этом можно выдумать огромное количество альтернатив, вроде "бросить что-то в лужу", "повалить дерево", "высушить лужу", "подождать её высыхания", "попросить прохожих перенести тебя на руках", "запрыгнуть на прохожего" и прочий бред. Нужна ли в игре такая вариативность действий для простой лужи? Если это симулятор луж - наверное, да. Всем остальным играм это вообще не нужно, даже если там есть лужи и мокрые ноги как-то влияют на геймплей. В смысле, игрок в любом случае выберет наиболее оптимальное решение и будет использовать его всегда, игнорируя те сотни вариантов, которые можно было бы придумать. Так зачем делать все эти развилки, если они никому не нужны? Кроме, разве что, фетишистов на лужи, которые будут останавливаться перед каждой лужей и дрочить на варианты взаимодействия с ней, насколько бы ограниченной в этом плане ни была конкретная игра (даже если можно просто стоять и смотреть - будут стоять и смотреть, ведь это их любимая ЛУЖА, зачем им что-то другое).
>>841935
>все игры чем-то похожи на головоломки. Не интересно решать головоломку, которую ты сам придумал и знаешь решение заранее.
В таком случае в игры бы вообще повторно не играли, а ещё никто бы не мог вытерпеть повторяющихся действий в играх. Но все игры завязаны на петли геймплея, которые повторяются огромное количество раз, и почти всех это абсолютно устраивает. Посадил растение > собрал урожай > посадил растение... Кто-то скажет, что игра превращается в работу, но ведь люди продолжают играть, значит, им это нравится. Такая же ситуация с решением головоломок - только посмотрите на соревнования по кубику Рубика, лол. Книги, если что, тоже перечитывают, особенно любимые, и им даже никакая вариативность не нужна для того, чтобы было приятно перечитать снова.
>Кстати есть объяснение почему именно столько и именно этих? Я видел у психологов нечто подобное
Честно говоря, написал пример от балды, как возможный в реальности и во всех видах игр (в 3D играх могут быть лужи и всё перечисленное там обычно можно осуществить, хотя это ни на что не влияет). При этом можно выдумать огромное количество альтернатив, вроде "бросить что-то в лужу", "повалить дерево", "высушить лужу", "подождать её высыхания", "попросить прохожих перенести тебя на руках", "запрыгнуть на прохожего" и прочий бред. Нужна ли в игре такая вариативность действий для простой лужи? Если это симулятор луж - наверное, да. Всем остальным играм это вообще не нужно, даже если там есть лужи и мокрые ноги как-то влияют на геймплей. В смысле, игрок в любом случае выберет наиболее оптимальное решение и будет использовать его всегда, игнорируя те сотни вариантов, которые можно было бы придумать. Так зачем делать все эти развилки, если они никому не нужны? Кроме, разве что, фетишистов на лужи, которые будут останавливаться перед каждой лужей и дрочить на варианты взаимодействия с ней, насколько бы ограниченной в этом плане ни была конкретная игра (даже если можно просто стоять и смотреть - будут стоять и смотреть, ведь это их любимая ЛУЖА, зачем им что-то другое).
>>841935
>все игры чем-то похожи на головоломки. Не интересно решать головоломку, которую ты сам придумал и знаешь решение заранее.
В таком случае в игры бы вообще повторно не играли, а ещё никто бы не мог вытерпеть повторяющихся действий в играх. Но все игры завязаны на петли геймплея, которые повторяются огромное количество раз, и почти всех это абсолютно устраивает. Посадил растение > собрал урожай > посадил растение... Кто-то скажет, что игра превращается в работу, но ведь люди продолжают играть, значит, им это нравится. Такая же ситуация с решением головоломок - только посмотрите на соревнования по кубику Рубика, лол. Книги, если что, тоже перечитывают, особенно любимые, и им даже никакая вариативность не нужна для того, чтобы было приятно перечитать снова.
Держу в курсе.
В чём проблема взять готовый?
Алсо, я не представляю себе, как ты умудрился писать парсер без постоянной проверки тестового файла. Если у тебя в тестовом файле строки в качестве ID сцены, то твой парсер должен был эпично зафейлиться, написав в консоль или куда ты там выводишь ошибки - "ошибка при чтении файла". Это же база. Как можно написать парсер и ни разу не протестировать его на данных?
> я не представляю себе, как ты умудрился писать парсер без постоянной проверки тестового файла
Я ж писал на тестах. На реальных данных я его ещё ни разу не запускал.
>"Stack more layers". Почитай "Bitter Lesson" Ричарда Саттона, хорошая статья об этом.
Я прочитал эту статью. Твоя проблема в том, что ты неправильно понял посыл этой статьи. Там ничего не сказано о том, что нужно обязательно использовать искусственные нейронные сети, и тем более ничего не сказано про увеличение количества слоёв. Там сказано только, что в конечном итоге лучшими оказываются методы, которые можно масштабировать, а такими методами являются "поиск и обучение".
Суть в том, что мы не получим функционал целого мозга, взяв одну нейросеть и дав ей миллион слоёв по миллиарду нейронов в каждом. Мозг так не работает. Да, мозг учится, мозг ищет похожие на уже известные ему структуры в поступающей информации. Но структура мозга захардкожена в ДНК. Мутации, дефекты развития мозга - и нет никакого человека, нет того мощного интеллекта, который открыл огонь и изобрёл колесо, есть только организм, забывающий даже дышать, не то что заботиться о себе в самых идеальных условиях. Нет ни писателя, ни мастера подземелий, ни игрока. Т.е. нужно иметь сравнительно строго определённый хардкод с самого начала жизни, иначе не будет никакого человека. Но потом, после начала жизни - да, обучение и поиск.
Ты надеешься, что если мы накидаем больше слоёв в глубокую нейронку, она внезапно обретёт все качества человека и станет лучшим мастером подземелий, заменив собой все текстовые игры. Но это не так. Нужна некая первоначальная структура, захардкоженная человеком или выработанная в процессе эволюции, которая сможет учиться и развиваться, а не одна глубокая нейронка. При этом в твой статье нет ни слова о том, что такой структуры быть не должно; та статья только против закладывания в систему прикладных знаний, вроде "яблоко зелёное" или "вода мокрая". Ты же понял эту статью как указание слепо умножать слои нейронки.
Я не зря упомянул эволюцию. Есть генетические алгоритмы - метод решения задач через симуляцию эволюции, и генетическое программирование - создание программ этим методом. Эти методы можно совмещать с нейронными сетями. Но если мы попытаемся вырастить виртуальный мозг с нуля, нам потребуется слишком много времени; потребуется симулировать целый мир, в котором появятся виртуальные люди с виртуальными мозгами. Поэтому единственный разумный выход - захардкодить виртуальный мозг вручную, используя знания о своём собственном мозге и его работе, а потом обучить этот виртуальный мозг так же, как мы обучаем детей. По сути это та комбинация противоположностей, о которой говорится в приведённой тобой статье. Но это принципиально отличается от "закинуть больше слоёв в нейронку". Слоёв всегда можно докинуть больше, но это не решает проблемы отсутствия изначально захардкоженной структуры полноценного человеческого мозга, который нам и нужен (и который обычно называют "ИИ" в научной фантастике).
При этом такой виртуальный мозг должен будет проявлять качества человека даже с минимальным числом слоёв в его нейронках, как проявляют качества человека многие животные, у которых мозг имеет куда меньшую ёмкость, чем у нас, но очень похожую структуру.
>"Stack more layers". Почитай "Bitter Lesson" Ричарда Саттона, хорошая статья об этом.
Я прочитал эту статью. Твоя проблема в том, что ты неправильно понял посыл этой статьи. Там ничего не сказано о том, что нужно обязательно использовать искусственные нейронные сети, и тем более ничего не сказано про увеличение количества слоёв. Там сказано только, что в конечном итоге лучшими оказываются методы, которые можно масштабировать, а такими методами являются "поиск и обучение".
Суть в том, что мы не получим функционал целого мозга, взяв одну нейросеть и дав ей миллион слоёв по миллиарду нейронов в каждом. Мозг так не работает. Да, мозг учится, мозг ищет похожие на уже известные ему структуры в поступающей информации. Но структура мозга захардкожена в ДНК. Мутации, дефекты развития мозга - и нет никакого человека, нет того мощного интеллекта, который открыл огонь и изобрёл колесо, есть только организм, забывающий даже дышать, не то что заботиться о себе в самых идеальных условиях. Нет ни писателя, ни мастера подземелий, ни игрока. Т.е. нужно иметь сравнительно строго определённый хардкод с самого начала жизни, иначе не будет никакого человека. Но потом, после начала жизни - да, обучение и поиск.
Ты надеешься, что если мы накидаем больше слоёв в глубокую нейронку, она внезапно обретёт все качества человека и станет лучшим мастером подземелий, заменив собой все текстовые игры. Но это не так. Нужна некая первоначальная структура, захардкоженная человеком или выработанная в процессе эволюции, которая сможет учиться и развиваться, а не одна глубокая нейронка. При этом в твой статье нет ни слова о том, что такой структуры быть не должно; та статья только против закладывания в систему прикладных знаний, вроде "яблоко зелёное" или "вода мокрая". Ты же понял эту статью как указание слепо умножать слои нейронки.
Я не зря упомянул эволюцию. Есть генетические алгоритмы - метод решения задач через симуляцию эволюции, и генетическое программирование - создание программ этим методом. Эти методы можно совмещать с нейронными сетями. Но если мы попытаемся вырастить виртуальный мозг с нуля, нам потребуется слишком много времени; потребуется симулировать целый мир, в котором появятся виртуальные люди с виртуальными мозгами. Поэтому единственный разумный выход - захардкодить виртуальный мозг вручную, используя знания о своём собственном мозге и его работе, а потом обучить этот виртуальный мозг так же, как мы обучаем детей. По сути это та комбинация противоположностей, о которой говорится в приведённой тобой статье. Но это принципиально отличается от "закинуть больше слоёв в нейронку". Слоёв всегда можно докинуть больше, но это не решает проблемы отсутствия изначально захардкоженной структуры полноценного человеческого мозга, который нам и нужен (и который обычно называют "ИИ" в научной фантастике).
При этом такой виртуальный мозг должен будет проявлять качества человека даже с минимальным числом слоёв в его нейронках, как проявляют качества человека многие животные, у которых мозг имеет куда меньшую ёмкость, чем у нас, но очень похожую структуру.
https://versificator.itch.io/gruescript
Пик 1 - как это выглядит в редакторе
Пик 2 - как это сохраняется в джисон
Пик 3 - какой из джисона автогенерится код
Пик 4 - как этот код выглядит запущенным
В принципе поддежриваются любые бинарные операции, числовые константы, строковые константы (правда всё хранится как строки, но это другой вопрос), переменные. По мере надобнсти буду допиливать, но пока что глубиной и силой ебли удовлетворён. Спрашивай свои ответы.
inb4 лучше бы цвета интерфейса поменял
Почему используешь переменные для условий, вместо более продвинутого метода симуляции мира?
> я не делаю второй dwarf fortress
Даже если и не делаешь, по мере расширения игры (= мира) код начнет превращаться в лапшу из if-ов.
Смотри на модель мира в Inform или Gruescript.
Объясни в двух словах что там такого особенного.
Алсо, у меня будет именно что интерактивная фантастика, книга-игра с конченым числом вариантов прохождения.
> Объясни в двух словах что там такого особенного.
Предсказуемая объектная модель.
Если есть сундук и его можно открыть, а в нём есть какие-то ранломно сгенерированные предметы, без объектной модели никак не обойтись, особенно если сундуков может быть рандомное количество в комнате.
> Алсо, у меня будет именно что интерактивная фантастика, книга-игра с конченым числом вариантов прохождения.
Тогда там переменнные кроме как для score или еще каких stats не нужны.
Иначе повторюсь, будет каша и недочеты в логике.
Анон, успокойся, есть два класса текстовых игр:
1. Книги-игры. Это натурально КНИГИ, в которых читатель может выбрать, в каком направлении ему играть. Физическая книга-игра имеет страницы с такими надписями:
>Шёл-шёл наш герой, и вдруг - на дороге камень, а от камня две дороги - налево и направо.
>1. Герой пошёл по левой дороге (перейдите на страницу №20)
>2. Герой пошёл по правой дороге (перейдите на страницу №24)
>3. Герой решил развернуться обратно (перейдите на страницу №36)
Также физическая книга может быть стилизована под компьютер с бумажными "кнопками", которые являются по сути закладками на определённые страницы, которые видно только с определённых других страниц. Да, с точки зрения программиста - это кучка if-else.
2. Текстовые симуляторы. Это сложные системы, в которых визуализация внутреннего состояния происходит через описание текстом, а не через вывод графических изображений. В таких играх контент может генерироваться процедурно, может быть инвентарь и разные GUI-ишные фичи. Сделать такую игру в виде физической книги невозможно, если не заставлять игрока держать в памяти кучу параметров, бросать кубик и прочее подобное (настолки).
Так вот большинству достаточно сделать книгу-игру из пункта 1, не ударяясь в реалистичную симуляцию мира из пункта 2 с процедурной генерацией шмоток в сундуках и монстров в комнатах процедурного подземелья. Вся проблема этого треда в том, что выкладывающий свои заготовки анон не конкретизирует, что именно он планирует сделать. Но разделять тред на два бесполезно, потому что у нас и так 1.5 любителя подобных игр на весь раздел.
Можете считать игры из пункта 1 вариантом визуальной новеллы без визуала, но выгонять их в /ruvn/ бесполезно, потому что там любители ВИЗУАЛЬНЫХ новелл и вообще раздел у них дохлый.
Двачую адеквата. У меня скорее 1, но с состояниями. Никоторые действия будут менять эти состояния, а потом это будет влиять на доступные действия в других сценах. Что-то такое было в моей любимой "Подземельня чёрного замка". Но там по очевидным причинам не могло быть много состояний (там бло наличи заклинаний, инвентарь, статы персонажа), а я могу много. Аналогично у меня будет инвентарь, тоже наличие и качество каждого предмета будет состоянием.
> с точки зрения программиста - это кучка if-else
С точки зрения плохо программиста, пофиксил тебя. Я-то хороший программист. Если интересно расскажу как у меня организована объектная модель, а вы меня обоссыте.
>>843276
> Inform
Я таки почитал пдэфку у них на сайте. Ну как прочитал, пробежался глазами. Нет, слишком конкретно. Как напирмер в этой модели комнат организовать воспоминания героя? "Вы вышли из воспоминания_1 и вошли в воспоминание_2"? Или диалоги? Или какие-то сцены (кат-сцены), не связанные с перемещением по комнатам. Хотя может я и невнимательно читал.
>>с точки зрения программиста - это кучка if-else
>С точки зрения плохо программиста
Но ведь в книгах-играх действительно тривиальная логика:
ЕСЛИ ты выбрал вариант Xi, ТОГДА переходишь на страницу Xip.
Конечно, ты можешь обмазать это ООП или ещё чем, но сути это не меняет.
Плохой погромист:
showScene(1)
val action1 = requestAction()
if(action1 == "a"){
showScene(2)
val action2 = requestAction()
if(action2 == "a"){
...
}else{
...
}
}else if(action1 == "b"){
showScene(3)
...
}else{
showScene(4)
...
}
Хороший погромист:
val state = initState()
while(state.isAlive){
val scene = getScene(state.sceneId)
val action = requestAction(state, scene)
action.process(state)
}
Плохой погромист:
showScene(1)
val action1 = requestAction()
if(action1 == "a"){
showScene(2)
val action2 = requestAction()
if(action2 == "a"){
...
}else{
...
}
}else if(action1 == "b"){
showScene(3)
...
}else{
showScene(4)
...
}
Хороший погромист:
val state = initState()
while(state.isAlive){
val scene = getScene(state.sceneId)
val action = requestAction(state, scene)
action.process(state)
}
Плохой программист фокусируется на конкретном коде.
Хороший программист мыслит абстракциями, а не кодом.
Для самых маленьких, это:
>while not book.end:
>_ show_page(book.page.text)
>_ var action := ask_user(book.page.actions)
>_ book.page = action.page
То самое "если... то... если... то... если... то..." в огромном количестве. Да, тут нет ни одной команды "if". Но концептуально это огромное количество "если... то...". И я даже могу доказать это примером. Все эти "если... то..." записаны в той книге, которая грузится из файла book_name.json:
>[..., {
>"page": 123,
>"text": "текст на странице",
>"actions": [ { "text": "действие 1", "page": 124, }, { "text": "действие 2", "page": 125, } ],
>}, ...]
Разве ты не видишь тут "если... то..."? Вот же оно, прямо здесь - в данных.
Программа без "если... то..." - это программа без развилок. Программа без развилок всегда даёт один и тот же ответ: print(2 + 2), без каких-либо вариантов. Если у тебя калькулятор print(X + Y), то он уже не без развилок, только "если... то..." ты вводишь извне, с клавиатуры, выбирая два числа (X и Y) и получая соответствующий ответ, зависящий от ввода.
Для примера, нейросети - это КОЛОССАЛЬНЫЕ "если... то...", там каждый нейрон больше напоминает switch/case на стероидах, чем простой if/else. Да, в программе, которая симулирует нейросеть, может быть ни одной команды "if", но данные нейросети - это невероятно сильно разветвлённая структура, ветви которой могут в процессе обучения очень сильно изменяться. Органический мозг ещё более разветвлённая система, т.е. там "если... то..." на порядки больше. Если кто-то говорит, что у ИИ не должно быть "если... то..." - он либо плохой программист, либо его мозг сродни музыкальной шкатулке, т.е. глупее калькулятора, не то что ИИ.
Но ты это, не расстраивайся. Со временем дойдёшь до моего уровня.
Этапы развития программиста:
1. Первые попытки написать код, который сработает без ошибок.
2. Понимание, что код писать нужно так, чтобы человек мог его понять.
3. Понимание, что код ещё нужно расширять, исправлять, "поддерживать".
4. Понимание, что код - лишь малая часть одной из реализаций "системы".
5. ??? (выше 4 я пока не продвинулся, крыша и без того уже протекает)
Отвлекись от конкретного кода, попытайся мыслить более абстрактно. Система может иметь множество воплощений (реализаций в коде и данных), но суть у неё всегда одна. Поэтому мы можем думать о ней, не прибегая к частным деталям. Вот настоящее мастерство программиста может быть достигнуто только если ты вырвешься из ограничений частных деталей (кода, данных) и сможешь увидеть желаемую/требуемую систему в её наиболее абстрактном виде.
Наверное, этому всему есть более точные термины. Я всего лишь самоучка-любитель.
> Для примера, нейросети - это КОЛОССАЛЬНЫЕ "если... то..."
Вот только там никаких if нету. If - дорогая операция, там используется математическое суммирование, которое, естественно, транслируется в байт-код. Всякие пайтоны это всего лишь API.
Нейронки почему так взлетели? Потому что они оперируют нечёткой логикой, то есть есть множество состояний между условными 0 и 1.
И вообще апеляция к НЕЙРОНКАМ это детектор пориджа, который датасатанизма не нюхал. Кроме нейронок есть ещё множество других моделей. И вообще самый буст метрик даёт подготовка и обработка данных и выделение признаков. А выбор модели это внезапно менее важная задача. Но пориджу с нейронкой межушного ганглия этого не понять.
А кроме слоёв с нейронами есть и ещё более интеерсные слои, свёрточные функции например.
К if-then всё свели, пиздец просто. Увидели картинку с ПЕРЦЕПТРОНОМ и пошли срать на двачах.
> Пик 1 - нейрон который и правда будет как if-then.
Даже так не будет. Линейная функция активации у перцептрона (пик 1) - булева функция (x => x >= 0 && 1 || 0), там нет if.
Но в целом ты прав.
Рефанднул 4 игру кста. Думал там будет реиграбельность и генерация, а там очевидно какой-то сюжет жестко прописанный.
> этой модели комнат организовать воспоминания героя?
А чем условное воспоминание отличается от реальной локации с точки зрения движка? Никак.
Игрок пишет "пройти через дверь", движок пишет, что ГГ видит игрушечный вертолетик, и перемещает ГГ в комнату-флешбек.
> Даже если у тебя симуляция мира, в каждой конкретной локации с каждым конкретным набором предметов и персонажей может быть ограниченное множество действий.
Неограниченное же. С помощью человеческих частей тела можно делать неограниченное количество действий.
Представим обычную комнату в жилом доме. Движок должен обрабатывать такие действия как "лизнуть монитор", "опрокинуть шкаф", "сесть на стул", "почитать книгу", "лечь под кровать", "отжиматься", список можно продолжать бесконечно. А если рядом есть NPC, то он должен уметь еще и как-то реагировать на происходящее, и отвечать на произвольные изречения игрока.
И это только одна комната. А теперь представь, что перед тобой средневековый город.
Ни одному разработчику и жизни не хватит, чтобы написать ТАК много правил обработки комманд.
Шизик, у тебя то непрерывная диффиренцируемая функция декомпозируется до конечного числа логических условий, то из конечного числа элементов получается бесконечное количество сочетаний. Ты либо определись, либо выпей свои таблетки.
> конечного числа логических условий
Угу, а теперь напиши движок который будет обрабывать команду say.
Прямо тебе в шизоклюв.
чем отличается от новелл?
много букоф почти без кортинок в буквелле
Меньше картинок (можно вообще без картинок), и можно вводить команды, а не выбирать из трех вариантов.
>>843173-кун
За IF'ил тебе за cheeks, check it out.
>состояние мира
>лайвхаки
1. Декомпозиция.
2. Разработка снизу вверх.
3. ??? //фикс багов
4. Эмерджентность!
Окей, как сконструировать систему управления состоянием мира, какие методики используются, и так далее. Естественно в контексте текстовых игр.
Ну ты и душнила. Смотря что у тебя за мир, насколько детализированный.
У меня например заведено тупо несколько переменных. И затем некоторые сцены и некоторые действия появляются и исчезают в зависимости от этих переменных. Вот я выше кидал пример >>843173 действие "Взять ключ" становится видимым если соответствующая переменная равна нулю, то есть ключа нет. То есть мир описан конечным множеством состояний.
Но такой подход не подойдёт если ты захочешь чтобы ключ можно было положить в любом месте или воткнуть в любое отверстие. Но в моей задаче этого и не требуется.
Кстати может мне как-то назвать свой движок? Уже написано очень много кода, а названия всё ещё нет.
> Смотря что у тебя за мир, насколько детализированный.
Желательно открытый, процедурно сгенерированный мир.
Тогда мой подход тебе не подойдёт. Как ты представляешь игровой процесс в своей игре?
Главная задача - выжить как можно дольше. А так - иди куда хочешь, делай что хочешь.
>>849483
> Главная задача - выжить как можно дольше. А так - иди куда хочешь, делай что хочешь.
> Главная задача
Как игрок об этом узнаёт? Какие есть второстепенные задачи? Как о них узнаёт?
> выжить
От чего можно умереть?
> как можно дольше
Как измеряется время?
> иди куда хочешь
Как игрок взаимодействует с персонажем и миром? Как укзаывает куда идти? Куда вообще можно пойти, чем ограничено передвижение?
> делай что хочешь
Какие действия и над чем возможны? Как игрок совершает эти действия? Как результаты действия влияют на персонажа и на мир?
Вот ответишь на эти вопросы - возможно это будет КОНЦЕПТ. А пока что это только пук.
> От чего можно умереть?
От чего угодно. Тебя могут пристрелить где-то, ты можешь утонуть в болоте, или на твою повозку могут напасть волки.
> Как измеряется время?
В днях.
> Как игрок взаимодействует с персонажем и миром?
Путем ввода комманд через клавиатуру или через мышь.
> Куда вообще можно пойти, чем ограничено передвижение?
Передвижение ничем не ограничено, локации генерируются в реальном времени.
Для упрощения, передвижение можно ограничить линейно. Т.е у игрока будет только действие "идти дальше", без возможности вернуться. Такое подходит для роадмуви, но убирает целый ряд других ролеплейных моментов, что не желательно.
> Какие действия
Чем больше, тем лучше.
> и над чем возможны?
Так как локации полностью процедурные, то вообще с каждым предметом в локации.
> Как игрок совершает эти действия?
В мире игры - физически, используя части тела.
> Как результаты действия влияют на персонажа и на мир?
Зависит от собственно симуляции, т.е к самому изначально заданному вопросу. В этом и заключается сабж.
Анон, ты почему мой пост >>849455 проигнорировал?
Тебе что, непонятно, как сделать декомпозицию твоей задачи? Ты не можешь отличить разработку сверху вниз от разработки снизу вверх? Ты не слышал про явление эмерджентности в сложных системах?
Или ты хочешь, чтобы тебе на твои абстрактные, самые общие вопросы дали конкретный список действий с примерами готовым кодом, чтобы ты скопировал себе и сразу начал играть в игру?
Окей, я пробовал делать текстовую игру и пришёл к следующей системе. Мир текстовой игры делится на условные локации. Локация содержит некое множество объектов - предметов, персонажей и т.п. Локация может иметь состояние. Но главное, локация имеет описание, которое игрок получает, чтобы понимать, где он вообще находится, а находиться игрок может только в какой-то одной локации. Локации соединяются между собой проходами, через которые игрок перемещается.
Итак, весь мир игры представляет собой граф, узлами которого являются локации, а рёбрами - проходы между ними. Для начала сделай эту систему перемещения по локациям, ведь это самое простое. Цикл такой: игра сообщает игроку описание локации и переходов из этой локации в другие локации, игрок выбирает один из переходов, игра переносит игрока в эту локацию и переходит на следующую итерацию цикла. Этого более чем достаточно для создания, например, чисто процедурного лабиринта, где игрок пытается найти выход, блуждая по комнатам и коридорам.
Теперь предметы. Предмет как и игрок находится в любой локации. Игра описывает предмет как и переходы между локациями. Игрок читает описание предметов в комнате и выбирает действие с каким-либо предметом. Это действие изменяет состояние предмета, его положение или другие свойства. Игрок, скажем, может забрать предмет с собой и выложить его в другой локации. Сам по себе предмет ничего не делает - это просто кусок данных, который может перемещаться с места на место.
Неигровые персонажи. Они как предметы, только имеют собственное поведение. Т.е. игрок получает описание персонажей в комнате и может выбрать действие над персонажем. Но дополнительно персонажи могут сами, как и игрок, влиять на мир вокруг них, переходить в другие локации или даже действовать на игрока. Чтобы это правильно происходило, нужно определиться со временем, то есть сколько времени нужно на каждое действие игрока и персонажей и когда именно персонажи решают что-то сделать. Скажем, если чтение книги у игрока отнимает 5 часов, то за это время неигровые персонажи могут сделать много действий в других локациях. Естественно, игра выдаёт описание действий персонажей только в той же локации, что и игрок, хотя моделирование жизни персонажей может происходить и в любой другой локации.
После того, как сделаешь простое перемещение по локациям, делай предметы, которые можно осмотреть, взять в руки, положить и т.д. Это тоже несложно. Куда сложнее будет сделать персонажей, но до них сначала сделай локации и предметы.
Дальше ты просто делаешь генератор мира, создающий локации и размещающий в них предметы и персонажей. Поскольку все объекты независимы друг от друга, игра может иметь любой мир, любую комбинацию объектов. Это может привести к неожиданным эффектам.
Более технические детали зависят от выбранного тобой инструментария. Если не планируешь графику, то бери что угодно и начинай кодить.
Анон, ты почему мой пост >>849455 проигнорировал?
Тебе что, непонятно, как сделать декомпозицию твоей задачи? Ты не можешь отличить разработку сверху вниз от разработки снизу вверх? Ты не слышал про явление эмерджентности в сложных системах?
Или ты хочешь, чтобы тебе на твои абстрактные, самые общие вопросы дали конкретный список действий с примерами готовым кодом, чтобы ты скопировал себе и сразу начал играть в игру?
Окей, я пробовал делать текстовую игру и пришёл к следующей системе. Мир текстовой игры делится на условные локации. Локация содержит некое множество объектов - предметов, персонажей и т.п. Локация может иметь состояние. Но главное, локация имеет описание, которое игрок получает, чтобы понимать, где он вообще находится, а находиться игрок может только в какой-то одной локации. Локации соединяются между собой проходами, через которые игрок перемещается.
Итак, весь мир игры представляет собой граф, узлами которого являются локации, а рёбрами - проходы между ними. Для начала сделай эту систему перемещения по локациям, ведь это самое простое. Цикл такой: игра сообщает игроку описание локации и переходов из этой локации в другие локации, игрок выбирает один из переходов, игра переносит игрока в эту локацию и переходит на следующую итерацию цикла. Этого более чем достаточно для создания, например, чисто процедурного лабиринта, где игрок пытается найти выход, блуждая по комнатам и коридорам.
Теперь предметы. Предмет как и игрок находится в любой локации. Игра описывает предмет как и переходы между локациями. Игрок читает описание предметов в комнате и выбирает действие с каким-либо предметом. Это действие изменяет состояние предмета, его положение или другие свойства. Игрок, скажем, может забрать предмет с собой и выложить его в другой локации. Сам по себе предмет ничего не делает - это просто кусок данных, который может перемещаться с места на место.
Неигровые персонажи. Они как предметы, только имеют собственное поведение. Т.е. игрок получает описание персонажей в комнате и может выбрать действие над персонажем. Но дополнительно персонажи могут сами, как и игрок, влиять на мир вокруг них, переходить в другие локации или даже действовать на игрока. Чтобы это правильно происходило, нужно определиться со временем, то есть сколько времени нужно на каждое действие игрока и персонажей и когда именно персонажи решают что-то сделать. Скажем, если чтение книги у игрока отнимает 5 часов, то за это время неигровые персонажи могут сделать много действий в других локациях. Естественно, игра выдаёт описание действий персонажей только в той же локации, что и игрок, хотя моделирование жизни персонажей может происходить и в любой другой локации.
После того, как сделаешь простое перемещение по локациям, делай предметы, которые можно осмотреть, взять в руки, положить и т.д. Это тоже несложно. Куда сложнее будет сделать персонажей, но до них сначала сделай локации и предметы.
Дальше ты просто делаешь генератор мира, создающий локации и размещающий в них предметы и персонажей. Поскольку все объекты независимы друг от друга, игра может иметь любой мир, любую комбинацию объектов. Это может привести к неожиданным эффектам.
Более технические детали зависят от выбранного тобой инструментария. Если не планируешь графику, то бери что угодно и начинай кодить.
Конечно же ничего лучше ты не предложишь.
Твой пост - вода. Речь идёт о методиках симуляции мира. Ты хотя бы конечные автоматы, или марковские процессы в пример привел, инфоцыган.
> Ребят, как летательный аппарат?
> Тебе какой? Самолёт, вертолёт, воздушный шар.
> Мне чтобы летал и чтобы им управлять с помощью управления
> Подробнее
> Чтобы летал по воздуху
> Начни с изучения физики
> 2023 @ физика
> Твой пост вода
> методиках симуляции.
Нео, залогинься. Можно быть тебе интересна не симуляция, а генерация?
Просто симуляция это подражание. Есть столько способов СИМКЛИРОВАТЬ реальные процессы на компьютере, начиная от математических моделей процесмов и заканчивая устройствами для стимуляции, что или нахуй с такими вопросами.
>марковские процессы
>бросаем монетку, идем или влево или вправо, получаем рандомное блуждание
Мда. Одну воду на другую поменял.
Итак, моя джисонина выросла до 2,5к строк. Теперь я понимаю насколько я правильно сделал что написал редактор. Без этого я бы зарылся в таком большом файле.
Олсо хотел завести новый акк в гугл плей, оплатил местной картой, теперь они требуют армянский документ. А у меня только российские. Не знаю как быть.
А ещё я теперь буду подписаться лес.
лес
лес
лес
Вагую что в основном органически. Во вторую очередь наверное тематические сообщества. А тем более сейчас для Русостана монетизация всё, так что только органический рост. Я думаю через месяц-другой я сам выложусь в общий доступ, если меня не депортируют обратно и не застявят рыть окопы.
Один квест (Рассвет) вообще представлен в Стиме, а в ГП это скорее дополнение.
Кстати я уверен что автор Рассвета сидит итт или хотя бы на абучане. Я прошёл всё что было под андроид и оценил двачерские шуточки.
лес
> если меня не депортируют обратно и не застявят рыть окопы
От души желаю тебе, братишка, депортации и окопов. Потом охуенные квесты напишешь, после такого-то экспириенса.
Лучшие книги были написаны ветеранами.
лес
> Gruescript
Нравится объектная модель, возможность локализации на русский , простота ЯП, ну и для игрока кнопки тыкать более интуитивно, чем команды писать.
> Как там вообще, пользуются популярностью текстовые игры?
Точно не знаю. Но как хостинг игры платформа хорошая (впрочем у меня есть и свой VPS, могу хостить игру на нём).
ты чё пёс я геймдевелопер
А ещё я добавил поддержку картинок и списался с художник-тян, она обещала нарисовать мне иллюстраций. Надеюсь всё получится.
держу в курсе, ваш лес
>разработку интерактивных историй.
Самое бесперспективное направление игростроя, пустая трата времени, остановись сейчас, чтобы еще больше не проебаться
Они смогли https://store.steampowered.com/app/1676550/Dull_Grey/
До этого джва года джавили другую игру в виде пробы пера https://dtf.ru/gamedev/55393-vagon-vagon-klubok-tehnologiy-vnutri-prostoy-tekstovoy-igry
мимопроходил
А знаете что меня привлекает в этом деле? Часто, идя по улице, я спрашиваю себя, что там в этих домах? Как там живут люди, и люди ли там живут? Вот бы залезть на ту крышу, спуститься в подвал, перелезть через перила. И тут же начинаю фантазировать что там и как.
И вот у меня наконец-то есть инструмент чтобы закрепить свои фантазии. Любой подвал, любая крыша, было бы только время записать! Хоспади, как же круто.
на фото - мой город, любитель таких крыш и подвалов
лес
720x1280, 0:18
>что там в этих домах? Как там живут люди
Так же как и все. Недавно иду на остановку, стоит тралик, мимо бежит женщина лет 55 с двумя детьми на этот троллейбус, одета бедно, выглядит как пидараха. Видно, что у нее ноги больные, медленно двигается. Меня обгоняют и она запыхиваясь на бегу говорит детям - всё, сейчас помру, назовите в честь меня троллейбус. - Вот думаю, так пренебрежительно относишься к людям, а у нее чувство юмора есть, может человек хороший с глубоким внутренним миром. Перед самым траликом она еще и упала немножко
Это не чю, это типичная пидорашкинская манипуляция детьми. Без цели, просто по привычке напоминает о своей смерти чтобы поддерживать нервозность в детях.
Ох сейчас умру, ах сейчас помру, как же не бомбит от них! Эти хабалки до 80 изи живут, когда их мужья уже в 60 всё.
>бредогенератор
Даун не разобрался с настройками и несет чушь. Этот тред не имеет смысла, NovelAI даёт просто безграничные возможности для отыгрыша.
Я серьезно спрашиваю. Было бы заебато иметь что-то систему, которая работает с состоянием мира, а автору нужно лишь писать текст. Алгоритмы с подкреплением в теории могут это обеспечить, но это весьма сложные системы.
Конечно.
for (o1 in objects):
for (o2 in objects):
if (o1 is something and o2 is something): do_something
else: ....
Это явно не будет работать.
Просто если так подумать, бессмысленно заниматься state hell самостоятельно. Комбинаторный взрыв выходит. А вумный компьютер способен и миллионы связей просчитывать и веса им расставлять.
Не очень понял причем тут state hell. Если ты про то, что он "сам" посчитает какой-то пайплайн, в каком порядке считать связи... Я в прошлом году угорел по SAT/SMT солверам, но и они не панацея, комбинаторный взрыв сложно обмануть. Смотрел Дениса Юричева, читал книжки.
В нейронках и генетических не разбираюсь совсем, никогда ими не занимался.
Хз нужен ли сложный алгоритм? Вон игра Жизнь, полтора простейших правила, а комбинации получаются сложные. Как и в жизни, просто атомы летают по довольно простым правилам, а получается химия, молекулы всякие. Например потоки жидкостей/газов реально не посчитать. Да и вообще, я у себя пытаюсь склеивать такие объекты в один "объем газа", а там уже работают просто статистические методы. Вот нам же не надо знать скорость каждой молекулы газа, мы можем работать всего с единичными значениями температуры, давления, плотности.
Я не понимаю какие задачи стоят в IF. (Для меня IF это что-то из 80-х, где автор просто ручками прописал все действия на сцене или над объектом - то есть я бы делал через ООП).
С помощью SAT можно решить задачку Эйнштейна (которая, в красном доме живет Элвис, Боря живет в доме слева от Элвиса). Еще используют в пакетных менеджерах для разрешения зависимостей. Вот и подумалось, что может быть это можно приспособить для автоматического упорядочивания кто с кем взаимодействует.
Внутри приложения я сделал экран отладки чтобы можно было вручную установить значение каждой переменной. А для сцен я даже сделал список сцен с понятными именами чтобы легко переключаться.
Всего сейчас у меня 346 сцен, 32 переменные и 1 иллюстрация.
лес
>претти джисон
Это пробовал? https://hjson.github.io/
>>852314
>не связывал с основным графом
Пробовал визуализировать граф сцен? SVG?
>>856065
>Как там живут люди, и люди ли там живут? Вот бы залезть на ту крышу, спуститься в подвал, перелезть через перила. И тут же начинаю фантазировать что там и как.
>И вот у меня наконец-то есть инструмент чтобы закрепить свои фантазии. Любой подвал, любая крыша, было бы только время записать!
Но... ты же текстовую игру делаешь?
>>857862
>алгоритм, который сам бы настраивал работу с симуляцией мира, тысячими взаимосвязей объектов
При чём тут алгоритм? Ты сначала объекты создай. Вот когда определишься, что у тебя за объекты, тогда и "симуляцию мира" сделать сможешь.
>>849761
>Речь идёт о методиках симуляции мира.
Садишься за комп и пишешь код, вот и вся методика, если обсуждать тему на твоём уровне абстракции.
>конечные автоматы
Конечные автоматы - это инструмент решения задач. Опиши сначала задачу, а потом уже будешь выбирать инструменты для её решения.
Нет, "симуляция мира" - это не задача. Ты сначала придумай какой-нибудь мир, потом придумай, что в этом мире есть и кто в этом мире живёт, придумай, какие события в этом мире могут происходить и какие действия могут совершать его жители, какие свойства могут иметь предметы и так далее. Потом запрограммируй среду, предметы в этой среде и жителей этой среды. Запрограммируй процессы, протекающие в среде над предметами и жителями, и поведение жителей. Запусти все процессы на выполнение, и внезапно ты обнаружишь, что у тебя происходит так называемая "симуляция мира". Каких-то специфических алгоритмов в общем случае для этого не нужно; алгоритмы могут потребоваться для оптимизации слишком большого мира, т.к. даже в текстовой игре ждать несколько минут следующей порции текста игроку будет неприятно.
> Это пробовал? https://hjson.github.io/
Нет, впервые вижу. Сейчас мельком посмотрел, не вижу как мне это поможет. Олсо, размер джисона не является для меня значительной проблемой на текущем этапе.
> Пробовал визуализировать граф сцен? SVG?
Да, я заюзал https://github.com/mermaid-js/mermaid-live-editor Посмотри выше по треду, я выкладывал пару скринов.
> Но... ты же текстовую игру делаешь?
Да, что не так?
лес
>как мне это поможет
Я подумал, раз ты хвастаешься числом строк, то ты этот файл вручную набиваешь... Потом заметил, что у тебя свой редактор и теперь не понимаю, зачем ты жсоном хвастался, раз не вручную пишешь его.
>mermaid-js
Интересная штука, я как раз мучаюсь составлением диаграмм для проектирования игры и не мог найти удобного инструмента. Спасибо.
>Да, что не так?
Сам я предпочитаю визуальные игры, особенно 3D, и твой текст напомнил мне мемное "...чтоб в каждый дом заходить можно было". В 3D или даже 2D игре ты можешь зайти в дом и своими глазами увидеть, что в нём находится, но в текстовой игре ты только читаешь описание "ты зашёл в прихожую и видишь: шкаф, сапоги, ваза, дверь в комнату", а картинку должен сам представить. Так вот, если игрока в визуальную игру можно понять, то что такого в текстовом описании очередной квартиры? Ты же можешь и без игры навоображать себе кучу планировок квартир и домов.
Вообще, это в каком-то роде близко мне. Я тоже в числе прочих попыток сделать игру пробовал делать текстовые игры, даже реализовал минимальную бродилку по комнатам, но забросил. Как-то не впечатляет, голый текст просто не затягивает меня, а сил в такую игру нужно вложить много. Нет фана - нет мотивации продолжать. Мой основной проект - 3D, и в нём я могу/хочу создать нечто отдалённо подобное фотографии из твоего поста >>856065, т.е. домики, крыши и блуждание по ним и вокруг них. Конечно, я не добьюсь фотореализма и не стремлюсь к нему, но так ли он нужен, этот фотореализм? Зато можно погрузиться в перемещение по локациям, даже если они и выглядят просто и грубо, но они всё равно кажутся настоящими, в каком-то смысле живыми, или, скорее, оживающими перед твоими глазами. Естественно, 3D делать сложно, я это понимаю, но эмоции от наблюдения за всем этим на экране компенсируют затраты. А пофантазировать я могу и так, без компьютера и каких-либо описаний...
Ну, не важно, я понимаю, что это очень похоже на спор "книга или фильм" (текстовая игра ≈ интерактивная книга, а визуальная игра ≈ интерактивный фильм), тут просто восприятие или вкусы у людей принципиально разные. Я просто удивился, что мысли похожие, а результаты - в том числе игры - такие разные.
>как мне это поможет
Я подумал, раз ты хвастаешься числом строк, то ты этот файл вручную набиваешь... Потом заметил, что у тебя свой редактор и теперь не понимаю, зачем ты жсоном хвастался, раз не вручную пишешь его.
>mermaid-js
Интересная штука, я как раз мучаюсь составлением диаграмм для проектирования игры и не мог найти удобного инструмента. Спасибо.
>Да, что не так?
Сам я предпочитаю визуальные игры, особенно 3D, и твой текст напомнил мне мемное "...чтоб в каждый дом заходить можно было". В 3D или даже 2D игре ты можешь зайти в дом и своими глазами увидеть, что в нём находится, но в текстовой игре ты только читаешь описание "ты зашёл в прихожую и видишь: шкаф, сапоги, ваза, дверь в комнату", а картинку должен сам представить. Так вот, если игрока в визуальную игру можно понять, то что такого в текстовом описании очередной квартиры? Ты же можешь и без игры навоображать себе кучу планировок квартир и домов.
Вообще, это в каком-то роде близко мне. Я тоже в числе прочих попыток сделать игру пробовал делать текстовые игры, даже реализовал минимальную бродилку по комнатам, но забросил. Как-то не впечатляет, голый текст просто не затягивает меня, а сил в такую игру нужно вложить много. Нет фана - нет мотивации продолжать. Мой основной проект - 3D, и в нём я могу/хочу создать нечто отдалённо подобное фотографии из твоего поста >>856065, т.е. домики, крыши и блуждание по ним и вокруг них. Конечно, я не добьюсь фотореализма и не стремлюсь к нему, но так ли он нужен, этот фотореализм? Зато можно погрузиться в перемещение по локациям, даже если они и выглядят просто и грубо, но они всё равно кажутся настоящими, в каком-то смысле живыми, или, скорее, оживающими перед твоими глазами. Естественно, 3D делать сложно, я это понимаю, но эмоции от наблюдения за всем этим на экране компенсируют затраты. А пофантазировать я могу и так, без компьютера и каких-либо описаний...
Ну, не важно, я понимаю, что это очень похоже на спор "книга или фильм" (текстовая игра ≈ интерактивная книга, а визуальная игра ≈ интерактивный фильм), тут просто восприятие или вкусы у людей принципиально разные. Я просто удивился, что мысли похожие, а результаты - в том числе игры - такие разные.
Количество строк я писал чтобы отслеживать прогресс. Ну хоть какая-то числовая метрика чтобы понимать в каком темпе я работаю. Впрочем сейчас я всё равно разбил джисонину на несколько мелких, уже лень считать строки.
> что такого в текстовом описании очередной квартиры?
Разумеется не следует делать текстовую игру в духе "перед вами развилка, пойдёте на лево или на право". Ну то есть такие сцены могу быть, но должны быть сведены к минимуму. В текстовой игре имхо должны описываться более крупные действия, типа "вы блуждаете по лесу", а не "обойти дерево справа или слева".
Про "зайти в каждую дверь" я писал в смысле что я могу это сделать, у меня теперь очень мощный инструмент. Разумеется делать это я не буду.
Хороший пример был в одной текстовой игре про зомбиапокалипсис. Там можно было обыскивать многоэтажки на предмет хабара и за это тебе выпадали рандомные предметы и даже рандомные события. Например тебя могла застать ночь, или зомби могли блокировать выход и тп. Огромное разнообразие, но при этом без шизы "поверните налево-направо".
> Мой основной проект - 3D
А чё как, дай посмотреть.
>mermaid-js
Какая-то фигня без задач. Начал накидывать схему классов для игры, но оно постоянно перекидывает блоки с места на место, рисует кривые линии абы как, рандомно перемещает всё и т.д. Если у тебя сколько-нибудь сложный проект, это будет месиво из линий, в котором после каждого изменения хрен что найдёшь из-за автоматического перемещения блоков. Самое главное: на графическом представлении нет никакой навигации, это просто картинка. Нельзя, например, скрывать ветки или переходить с блока на блок стрелочками клавиатуры. Т.е. если получилась огромная схема, придётся мышкой возиться и глазами бегать, чтобы что-то найти. Короче, для меня это выглядит неюзабельным, т.к. я хотел вообще весь проект на одну схему уложить и иметь способ навигации по ней. Наверное, нужно просто разбить всё на несколько схем... Но пока что из всех вариантов мне Freeplane больше нравится, удобная навигация хоткеями и нет хаотичной перестановки.
>>861791
>В текстовой игре имхо должны описываться более крупные действия, типа "вы блуждаете по лесу", а не "обойти дерево справа или слева".
Зависит от игры. Если игра больше про повествование, то ты прав, будет лучше описывать длинные сцены как будто это интерактивная книга с редкими развилками. Если же игра больше про геймплей, то лучше делать сухие описания коротких сцен и действий, чтобы игроку не приходилось читать лишнюю воду на каждом шагу. Это вроде как два противоположных направления в жанре текстовых игр.
>Разумеется делать это я не буду.
Почему? Если применить процедурную генерацию, то можно сделать целый город, в котором можно будет зайти куда угодно и подействовать на любой предмет или жителя, и изменения будут сохраняться и взаимодействовать друг с другом. Я задумывал именно что-то такое, процедурное, чтобы была максимальная свобода без сценарных рельс, но пришёл к выводу, что, выбирая между текст/2D/3D, мне больше подходит 3D, даже если оно будет примитивным.
>Огромное разнообразие, но при этом без шизы "поверните налево-направо".
Почему шиза-то? Если игра подробно описывает, скажем, жизнь в доме, ты хочешь иметь возможность пройти, например, с кухни в прихожую и из прихожей в спальню, и взаимодействовать со всеми предметами и жителями данных помещений, и чтобы результат всех твоих действий сохранялся и влиял на дальнейшие события. А иначе зачем в такое играть? Без глубокого интерактива (управления персонажем - куда он идёт и что делает) это просто книга с развилками получается. Вернее, другое направление в жанре, которое ближе к книгам, чем к играм.
>А чё как, дай посмотреть.
Смотреть особо не на что, не так давно вообще начал практически с нуля мир переделывать. Скриншот с середины прошлого лета: процедурная планировка города с процедурными домами. Модели и текстуры чисто для тестов. В оконных проёмах думаю сделать непрозрачные стёкла, скрывающие интерьер, но интерьер (интерактивный) отображается, если игрок заходит внутрь дома. Т.е. в идеале хочется бесшовный мир с интерьерами везде, где они могут быть, даже если в них нет особого смысла (заброшенные дома и т.п.). И, конечно, множество NPC, которые в этом городе будут жить (по тестам, как минимум сотню движок должен тянуть на моём компьютере, но можно будет оптимизировать сильнее).
Недавно пришёл к выводу, что мой подход к генерации мира тупиковый, и поэтому решил сделать внутриигровой редактор мира (долго объяснять). Общая планировка города/мира для игрока от первого лица не так уж важна, а вот локально хотелось бы иметь более плотную детализацию (и разнообразие). Геймплейно игра планируется ближе всего к ГТА, т.е. экшн-эдвенчур песочница в городе с жителями и машинками. Понимаю, что идея слишком обширна (типичная кирилльская "убийца ГТА"), но я никуда не тороплюсь.
Чему я удивился, так это тому, что мой проект лучше всего описывается твоими словами здесь: >>856065
>А знаете что меня привлекает в этом деле? Часто, идя по улице, я спрашиваю себя, что там в этих домах? Как там живут люди, и люди ли там живут? Вот бы залезть на ту крышу, спуститься в подвал, перелезть через перила. И тут же начинаю фантазировать что там и как.
>И вот у меня наконец-то есть инструмент чтобы закрепить свои фантазии. Любой подвал, любая крыша...
Только до играбельной версии ещё далеко (если не считать играбельной езду вокруг пустых кубов по пустым дорогам, хотя меня даже это впечатляет).
Я иногда прогресс в тред Godot кидаю, свой тред пока заводить нет смысла (слишком редко что-то делаю). Если доберусь до фазы играбельной демки, то, возможно, создам тред (или нет). А пока как-то так, мечты да фантазии, не считая 3.5 неиграбельных прототипов. Но все остальные мои игровые проекты завершались заморозкой намного быстрее, поэтому это мой основной проект.
Также, одной из важных фич я задумываю диалоги с персонажами, так что моя игра чуть ближе к текстовым, чем может показаться на первый взгляд. Я уже примерно накидал текстовый чат и тестировал "диалог", по задумке оно должно быть как чат в ММО игре, только с сильно ограниченным радиусом "слышимости" и полностью оффлайн, без внешних сервисов (никаких зумерских API к облачным нейронкам, они фу-фу-фу, объяснять долго). Думал добавить отдельное меню для диалога, но не хочу блокировать управление персонажем/транспортом, поэтому чат - самое оптимальное решение. Не питаю особых надежд, но как минимум попытаться стоит.
Собственно, я думал, что можно сделать базовую версию игры совсем без графики, только условные локации и персонажи, чтобы вести с ними диалоги или какие-то текстовые взаимодействия. Но потом понял, что мне всё-таки ближе графика, чем текст, даже если эта графика сама по себе не будет сложной (главное чтобы был объём, ибо бегать по 2D плоскости не хочется).
>mermaid-js
Какая-то фигня без задач. Начал накидывать схему классов для игры, но оно постоянно перекидывает блоки с места на место, рисует кривые линии абы как, рандомно перемещает всё и т.д. Если у тебя сколько-нибудь сложный проект, это будет месиво из линий, в котором после каждого изменения хрен что найдёшь из-за автоматического перемещения блоков. Самое главное: на графическом представлении нет никакой навигации, это просто картинка. Нельзя, например, скрывать ветки или переходить с блока на блок стрелочками клавиатуры. Т.е. если получилась огромная схема, придётся мышкой возиться и глазами бегать, чтобы что-то найти. Короче, для меня это выглядит неюзабельным, т.к. я хотел вообще весь проект на одну схему уложить и иметь способ навигации по ней. Наверное, нужно просто разбить всё на несколько схем... Но пока что из всех вариантов мне Freeplane больше нравится, удобная навигация хоткеями и нет хаотичной перестановки.
>>861791
>В текстовой игре имхо должны описываться более крупные действия, типа "вы блуждаете по лесу", а не "обойти дерево справа или слева".
Зависит от игры. Если игра больше про повествование, то ты прав, будет лучше описывать длинные сцены как будто это интерактивная книга с редкими развилками. Если же игра больше про геймплей, то лучше делать сухие описания коротких сцен и действий, чтобы игроку не приходилось читать лишнюю воду на каждом шагу. Это вроде как два противоположных направления в жанре текстовых игр.
>Разумеется делать это я не буду.
Почему? Если применить процедурную генерацию, то можно сделать целый город, в котором можно будет зайти куда угодно и подействовать на любой предмет или жителя, и изменения будут сохраняться и взаимодействовать друг с другом. Я задумывал именно что-то такое, процедурное, чтобы была максимальная свобода без сценарных рельс, но пришёл к выводу, что, выбирая между текст/2D/3D, мне больше подходит 3D, даже если оно будет примитивным.
>Огромное разнообразие, но при этом без шизы "поверните налево-направо".
Почему шиза-то? Если игра подробно описывает, скажем, жизнь в доме, ты хочешь иметь возможность пройти, например, с кухни в прихожую и из прихожей в спальню, и взаимодействовать со всеми предметами и жителями данных помещений, и чтобы результат всех твоих действий сохранялся и влиял на дальнейшие события. А иначе зачем в такое играть? Без глубокого интерактива (управления персонажем - куда он идёт и что делает) это просто книга с развилками получается. Вернее, другое направление в жанре, которое ближе к книгам, чем к играм.
>А чё как, дай посмотреть.
Смотреть особо не на что, не так давно вообще начал практически с нуля мир переделывать. Скриншот с середины прошлого лета: процедурная планировка города с процедурными домами. Модели и текстуры чисто для тестов. В оконных проёмах думаю сделать непрозрачные стёкла, скрывающие интерьер, но интерьер (интерактивный) отображается, если игрок заходит внутрь дома. Т.е. в идеале хочется бесшовный мир с интерьерами везде, где они могут быть, даже если в них нет особого смысла (заброшенные дома и т.п.). И, конечно, множество NPC, которые в этом городе будут жить (по тестам, как минимум сотню движок должен тянуть на моём компьютере, но можно будет оптимизировать сильнее).
Недавно пришёл к выводу, что мой подход к генерации мира тупиковый, и поэтому решил сделать внутриигровой редактор мира (долго объяснять). Общая планировка города/мира для игрока от первого лица не так уж важна, а вот локально хотелось бы иметь более плотную детализацию (и разнообразие). Геймплейно игра планируется ближе всего к ГТА, т.е. экшн-эдвенчур песочница в городе с жителями и машинками. Понимаю, что идея слишком обширна (типичная кирилльская "убийца ГТА"), но я никуда не тороплюсь.
Чему я удивился, так это тому, что мой проект лучше всего описывается твоими словами здесь: >>856065
>А знаете что меня привлекает в этом деле? Часто, идя по улице, я спрашиваю себя, что там в этих домах? Как там живут люди, и люди ли там живут? Вот бы залезть на ту крышу, спуститься в подвал, перелезть через перила. И тут же начинаю фантазировать что там и как.
>И вот у меня наконец-то есть инструмент чтобы закрепить свои фантазии. Любой подвал, любая крыша...
Только до играбельной версии ещё далеко (если не считать играбельной езду вокруг пустых кубов по пустым дорогам, хотя меня даже это впечатляет).
Я иногда прогресс в тред Godot кидаю, свой тред пока заводить нет смысла (слишком редко что-то делаю). Если доберусь до фазы играбельной демки, то, возможно, создам тред (или нет). А пока как-то так, мечты да фантазии, не считая 3.5 неиграбельных прототипов. Но все остальные мои игровые проекты завершались заморозкой намного быстрее, поэтому это мой основной проект.
Также, одной из важных фич я задумываю диалоги с персонажами, так что моя игра чуть ближе к текстовым, чем может показаться на первый взгляд. Я уже примерно накидал текстовый чат и тестировал "диалог", по задумке оно должно быть как чат в ММО игре, только с сильно ограниченным радиусом "слышимости" и полностью оффлайн, без внешних сервисов (никаких зумерских API к облачным нейронкам, они фу-фу-фу, объяснять долго). Думал добавить отдельное меню для диалога, но не хочу блокировать управление персонажем/транспортом, поэтому чат - самое оптимальное решение. Не питаю особых надежд, но как минимум попытаться стоит.
Собственно, я думал, что можно сделать базовую версию игры совсем без графики, только условные локации и персонажи, чтобы вести с ними диалоги или какие-то текстовые взаимодействия. Но потом понял, что мне всё-таки ближе графика, чем текст, даже если эта графика сама по себе не будет сложной (главное чтобы был объём, ибо бегать по 2D плоскости не хочется).
лес
> 2 пик
Выглядит годно! Там в каждый дом прям можно зайти? Сколько всего домов, сколько помещений в каждом доме? Сразу всё держишь в памяти или подгружаешь?
> Какая-то фигня без задач.
Ну хз. Описанные проблемы правда есть, но мои задачи решает. Я концентрируюсь на том чтобы как можно скорее сделать демку. Ну и чтобы высрать итт побольше постов, само собой.
> Если применить процедурную генерацию
Согласен. Опять же имхо в тексте это будет выглядеть тупо. А вот в график это топчик, пример майнкрафта у всех перед глазами.
> до играбельной версии ещё далеко
Ну так работай. Вот то что ты показал на скришоте выглядит классно. Доведи хотя бы до состояния чтобы выложить версию для анона. Я б побегал там, серьёзно.
> даже если эта графика сама по себе не будет сложной
Я вспомнил ещё пример unturned или как там. Тоже простая графика, но офигенный геймплей. Хотя понятно это совсем другой жанр.
лес, колорист от бога
>числовая метрика чтобы понимать в каком темпе я работаю
Я думаю, для текстовых игр главной метрикой является количество слов или символов литературного текста (без учёта пробелов, спецсимволов, меток, вставок кода и т.д.). Ты ведь, по сути, делаешь интерактивную литературу, игрок будет всё время что-то читать. Количество сцен не показатель: они могут содержать разное количество текста и вообще могут генерироваться процедурно. Количество строк в JSON вообще смешно, т.к. оно зависит от форматирования, а на одной строке у тебя может умещаться очень длинный абзац или всего одно слово. Но при этом количество слов хорошо описывает объём текста в игре, даже если игра с процедурной генерацией текста, потому что от количества слов зависит не только общий объём текста в игре, но и разнообразие генерируемых сцен, то есть чем больше слов, тем лучше.
>>862017
Ты только в эмуляторе тестируешь? На твоём бы месте я тестировал преимущественно на реальном устройстве, если ты ориентируешься на мобилки. Другие ощущения и всё такое, понимаешь. Особенно напрягает, что у тебя кнопки прижаты к тексту - они будут прыгать где-то наверху современной длинной лопаты, это дико неудобно, но из-за эмулятора ты этого косяка не замечаешь, привычно кликая мышкой.
>слушать анекдоты по радио, пока едешь в машине
Немного странное оформление, глядя на скриншот не видно ничего, кроме радио и анекдотов. А если игрок отвлечётся от игры на время и потом вернётся? Он уже не помнит, что персонаж едет в машине, а игра об этом ничего не говорит. Да и невозможность сделать что-то кроме прослушивания радио выглядит как пытка (связали и заставляют слушать). Одно дело, когда передача по радио рассказывает основной сюжет игры, а у тебя это выглядит как забавная фича без цели - ну, как всякие декоративные предметы на столах в 3D шутерах, с которыми можно взаимодействовать, но не нужно.
>>863874
А почему обрезки фраз? Это ты специально режешь для визуализации, оно так обрезано в JSON или это какое-то ограничение софта визуализации?
>>862018
>>Если применить процедурную генерацию
>имхо в тексте это будет выглядеть тупо
Всё зависит от игры и её целей. Опять же, если игра рассказывает историю с развилками - это одно, а если игра - и не игра вовсе, а песочница с игрушками - то другое. Не вижу ничего странного в существовании чисто текстовых песочниц, не ставящих перед игроком цели и не дающие никаких конкретных сюжетных рельс. Текст - это способ визуализации игрового мира и событий.
Кстати, как думаешь, слепые часто играют в текстовые игры? Стал бы ты как-то адаптировать игру для них, чтобы им было удобнее/проще? С одной стороны, часть описаний они просто не могут представить (если слепы с рождения), но с другой, для полноценного игрового процесса им нужен только TTS сервис, который сейчас везде встроен. В отличие от графических игр текстовые, в теории, лучше всего доступны для слепых (не считая аудио-игр, которых всего в мире, наверное, 1.5 штуки, и то на мёртвых консольных платформах). Но практическая доступность зависит от того, что ты используешь для вывода текста на экран, потому что TTS сервисы не всегда оснащены распознаванием текста (обычно они читают только тот текст, что выводится средствами ОС), а также от того, как устроен твой GUI (в идеале тоже должен быть построен средствами ОС).
>Выглядит годно!
>Вот то что ты показал на скришоте выглядит классно.
Спасибо за добрые слова, но сам я не вижу чего-то особенного в своих поделках... Часто в голове всё выглядит очень интересно, а на практике получается вот такой грубый/детский примитив, и дальше мотивация стремительно снижается. Хуже всего, когда вижу чужие игры, которые в сотни раз лучше того, что я могу сделать сам, неизбежно возникают мысли: "такого я никогда не достигну" или "для такого уровня очень много тяжёлой работы, которую я не потяну". Хотя сейчас результаты намного лучше, чем мои попытки в 2012~2019, но это в основном заслуга готового движка.
>Там в каждый дом прям можно зайти? Сколько всего домов, сколько помещений в каждом доме?
На том скриншоте один из прототипов, в котором я сделал только наружные стены, полы у этажей и крышу. Выяснил, что мой подход слишком сложен (т.е. много избыточного кода и вычислений в голове) и нужно что-то другое, так что вставлять внутренние стены и другие декорации было бы слишком сложно. Недавно придумал новую систему, но её пока предстоит реализовать и я не знаю, получится ли, но в теории должно стать намного проще ("проще" код --> более сложная графика, больше предметов).
Количество "домов" разное накидывал, были карты размером больше 5х5 км, но такой масштаб требует чанковой системы... которую я тоже реализовал, и тоже, скорее всего, буду переделывать. Уже не первый раз)
>Сразу всё держишь в памяти или подгружаешь?
Т.к. системы сохранения в том прототипе нет и вся карта генерируется каждый раз заново, никаких подгрузок там нет. Вообще, много думал об этом: т.к. игра про симуляцию жизни - для работы NPC нужна хотя бы частичная информация обо всём городе сразу (где какие дома и куда ведут дороги), иначе они не смогут перемещаться "за кадром". Так что выгружать из памяти я могу только часть графики и физику, и по этой же причине я сразу отказался от "бесконечного" мира. Но поскольку в прототипе ничего толком нет, я выгрузкой из памяти не занимался.
>Доведи хотя бы до состояния чтобы выложить версию для анона. Я б побегал там, серьёзно.
Не могу ничего обещать)
>Я вспомнил ещё пример unturned или как там. Тоже простая графика, но офигенный геймплей. Хотя понятно это совсем другой жанр.
Да, я играл в него, в разные версии. Это одна из игр, которые меня вдохновили и мотивировали в своё время, хотя стиль её графики мне не нравится. И я даже думаю, что сделаю свою игру полностью бесплатной, чтобы как и в Unturned люди могли свободно играть, даже если не имеют возможности платить. И в перспективе опенсурс, чтобы игра имела возможность жить без меня, а то очень обидно, когда игры умирают без возможности продолжить разработку силами заинтересованных игроков. Но перед этим нужно сделать что-то достойное)
>числовая метрика чтобы понимать в каком темпе я работаю
Я думаю, для текстовых игр главной метрикой является количество слов или символов литературного текста (без учёта пробелов, спецсимволов, меток, вставок кода и т.д.). Ты ведь, по сути, делаешь интерактивную литературу, игрок будет всё время что-то читать. Количество сцен не показатель: они могут содержать разное количество текста и вообще могут генерироваться процедурно. Количество строк в JSON вообще смешно, т.к. оно зависит от форматирования, а на одной строке у тебя может умещаться очень длинный абзац или всего одно слово. Но при этом количество слов хорошо описывает объём текста в игре, даже если игра с процедурной генерацией текста, потому что от количества слов зависит не только общий объём текста в игре, но и разнообразие генерируемых сцен, то есть чем больше слов, тем лучше.
>>862017
Ты только в эмуляторе тестируешь? На твоём бы месте я тестировал преимущественно на реальном устройстве, если ты ориентируешься на мобилки. Другие ощущения и всё такое, понимаешь. Особенно напрягает, что у тебя кнопки прижаты к тексту - они будут прыгать где-то наверху современной длинной лопаты, это дико неудобно, но из-за эмулятора ты этого косяка не замечаешь, привычно кликая мышкой.
>слушать анекдоты по радио, пока едешь в машине
Немного странное оформление, глядя на скриншот не видно ничего, кроме радио и анекдотов. А если игрок отвлечётся от игры на время и потом вернётся? Он уже не помнит, что персонаж едет в машине, а игра об этом ничего не говорит. Да и невозможность сделать что-то кроме прослушивания радио выглядит как пытка (связали и заставляют слушать). Одно дело, когда передача по радио рассказывает основной сюжет игры, а у тебя это выглядит как забавная фича без цели - ну, как всякие декоративные предметы на столах в 3D шутерах, с которыми можно взаимодействовать, но не нужно.
>>863874
А почему обрезки фраз? Это ты специально режешь для визуализации, оно так обрезано в JSON или это какое-то ограничение софта визуализации?
>>862018
>>Если применить процедурную генерацию
>имхо в тексте это будет выглядеть тупо
Всё зависит от игры и её целей. Опять же, если игра рассказывает историю с развилками - это одно, а если игра - и не игра вовсе, а песочница с игрушками - то другое. Не вижу ничего странного в существовании чисто текстовых песочниц, не ставящих перед игроком цели и не дающие никаких конкретных сюжетных рельс. Текст - это способ визуализации игрового мира и событий.
Кстати, как думаешь, слепые часто играют в текстовые игры? Стал бы ты как-то адаптировать игру для них, чтобы им было удобнее/проще? С одной стороны, часть описаний они просто не могут представить (если слепы с рождения), но с другой, для полноценного игрового процесса им нужен только TTS сервис, который сейчас везде встроен. В отличие от графических игр текстовые, в теории, лучше всего доступны для слепых (не считая аудио-игр, которых всего в мире, наверное, 1.5 штуки, и то на мёртвых консольных платформах). Но практическая доступность зависит от того, что ты используешь для вывода текста на экран, потому что TTS сервисы не всегда оснащены распознаванием текста (обычно они читают только тот текст, что выводится средствами ОС), а также от того, как устроен твой GUI (в идеале тоже должен быть построен средствами ОС).
>Выглядит годно!
>Вот то что ты показал на скришоте выглядит классно.
Спасибо за добрые слова, но сам я не вижу чего-то особенного в своих поделках... Часто в голове всё выглядит очень интересно, а на практике получается вот такой грубый/детский примитив, и дальше мотивация стремительно снижается. Хуже всего, когда вижу чужие игры, которые в сотни раз лучше того, что я могу сделать сам, неизбежно возникают мысли: "такого я никогда не достигну" или "для такого уровня очень много тяжёлой работы, которую я не потяну". Хотя сейчас результаты намного лучше, чем мои попытки в 2012~2019, но это в основном заслуга готового движка.
>Там в каждый дом прям можно зайти? Сколько всего домов, сколько помещений в каждом доме?
На том скриншоте один из прототипов, в котором я сделал только наружные стены, полы у этажей и крышу. Выяснил, что мой подход слишком сложен (т.е. много избыточного кода и вычислений в голове) и нужно что-то другое, так что вставлять внутренние стены и другие декорации было бы слишком сложно. Недавно придумал новую систему, но её пока предстоит реализовать и я не знаю, получится ли, но в теории должно стать намного проще ("проще" код --> более сложная графика, больше предметов).
Количество "домов" разное накидывал, были карты размером больше 5х5 км, но такой масштаб требует чанковой системы... которую я тоже реализовал, и тоже, скорее всего, буду переделывать. Уже не первый раз)
>Сразу всё держишь в памяти или подгружаешь?
Т.к. системы сохранения в том прототипе нет и вся карта генерируется каждый раз заново, никаких подгрузок там нет. Вообще, много думал об этом: т.к. игра про симуляцию жизни - для работы NPC нужна хотя бы частичная информация обо всём городе сразу (где какие дома и куда ведут дороги), иначе они не смогут перемещаться "за кадром". Так что выгружать из памяти я могу только часть графики и физику, и по этой же причине я сразу отказался от "бесконечного" мира. Но поскольку в прототипе ничего толком нет, я выгрузкой из памяти не занимался.
>Доведи хотя бы до состояния чтобы выложить версию для анона. Я б побегал там, серьёзно.
Не могу ничего обещать)
>Я вспомнил ещё пример unturned или как там. Тоже простая графика, но офигенный геймплей. Хотя понятно это совсем другой жанр.
Да, я играл в него, в разные версии. Это одна из игр, которые меня вдохновили и мотивировали в своё время, хотя стиль её графики мне не нравится. И я даже думаю, что сделаю свою игру полностью бесплатной, чтобы как и в Unturned люди могли свободно играть, даже если не имеют возможности платить. И в перспективе опенсурс, чтобы игра имела возможность жить без меня, а то очень обидно, когда игры умирают без возможности продолжить разработку силами заинтересованных игроков. Но перед этим нужно сделать что-то достойное)
> главной метрикой является количество слов или символов
Годно. Очевидная мысль, но мне почему-то в голову не приходила. Благодарю.
> Ты только в эмуляторе тестируешь?
Там можно поскролить предыдущую историю. Кнопки всегда внизу текста. На скриншотах я специально скрыл предыдущие сцены. В целом хз, посмотрим какие будут отзовы на зкарытом тестировании.
> Кстати, как думаешь, слепые часто играют в текстовые игры?
На моей основной работе приложение внезапно адаптировано для слепых. Играют ли? Хз, можно будет в одной из следующих версий ападтпировать, там по идее не сложно. Не понятно как они их находят в гугл плей, там нет же специальных ответом что приложение подходит для слепых.
> Не могу ничего обещать)
Ну лан, что поделаешь.
> неизбежно возникают мысли
Я так или иначе начинал писать текстовые игры уже много лет как, текущую штуку я начал писать (придумывать) в январе 2020. Но всерьёз начал писать только этой осенью, спасибо сами знаете кому что я переехал в Хаястан, у меня появилось много времени и новых впечателний. А ещё спасибо художнице которая со мной рабоатает, ей работы меня прям мотивируют. Мне многие говорили мол зачем тебе в 2к23 живой жудожник, юзай нейронки. Но от нейронки нет отдачи, нет чувства совместной работы, она совсем не мотивирует, она только делает. А сейчас я вернулся в РФ, задел у меня уже большой, надеюсь я не остановлюсь.
>ррряяя текстовые игры нинужны яскозал
Зачем ты в этот тред зашёл?
>>864490
>весь тред изобретаете велосипеды
Так-то это самое весёлое в геймдеве...
>кроме парсера ру яз
Думаю, он тоже где-то есть, но малоизвестен, потому что парсерные игры вообще непопулярны, ведь кнопочный интерфейс и игроку, и разрабу проще.
Хммм, интересно, а чатбот - это текстовая игра?
Где грань между чатботом и текстовой игрой?
>наполнение главнее технической части
От технической части зависит удобство и скорость наполнения, а от этого зависит, сколько своей графомании ты сможешь запихнуть в игру.
лес
>65548
Неожиданно близко к 2 в 16 степени, максимальному значению двух байт: 65536. Совпадение, наверное.
Молодец.
>Я даже удивлён что так много.
В среднем 186 символов на сцену, это что-то среднее между старыми твитами (140) и новыми (280). Не так уж и много, меня больше количество сцен удивляет - их ведь не только написать нужно, но и связать.
Не знаю, зачем тебе в листах А4, я бы на твоём месте считал число строк консоли, по 80 (819) или по 120 (546) символов на строке.
Когда поиграть можно будет?
Спасибо.
> Неожиданно близко к 2 в 16 степени, максимальному значению двух байт
Меня тоже это насторожило. Но я честно искал ошибку, пересчитывал несколькими способами, вроде всё так.
> Не знаю, зачем тебе в листах А4
Я раньше писал рассказы и повести, мне так привычнее оценивать.
> число строк консоли,
Лол.
> Когда поиграть можно будет?
Закрытое тестирование я планирую начать в течении недели-двух. Если хочешь порыться принять участие, напиши на
Если нет то где-то через месяц будет открытое тестирование, ссылку выложу здесь.
> их ведь не только написать нужно, но и связать
А тут спасибо моему редактору.
Я заметил что у меня получается два типа глав: главы-повествовательния и главы-действия.
Обычно процесс написания повествовательной главый выглядит так. Я пишу основную ветку почти как обычный текст, с минимумом разметки, только отмечаю где должны быть ветвления; Затем возвращаюсь к сцене, где должно быть ветвление и пишу другую ветку. И так далее.
Если что-то забыл, то редактор мне показывает где незаконченные ветвления.
так же у меня есть система тегов, можно ответить тегами TODO или DRAFT места где я что-то не дописал.
После этого я расставляю переменные, юзаю переменные из предыдущих глав и тп. Напирмер, если он уже видел что-то в предыдущей галве, то увидев в этой реакция будет чуть иная.
Сложность внезапно оказалась чтобы свести эти ветки в одну, но тут на помощь приходит визуальное представление дерева.
А вот с главами-действия всё интереснее, для каждой я придумываю свой механизм. Например для главы с радио я завёл две переменных: сколько времени прошло и текущая частота. После каждого прослушивания время инкрементится. Каждая частота - это отдельная сцена, которая выводит разные тексты в зависимости от времени. Таким образом если первая станция играет ABCD, а вторая EFGH, то мы можем послушать AFGH или EFCD или AFCH и так далее. Прямо как жизни не получится полностью послушать сначала одно, потом другое. Надеюсь ты понял о чём я.
Для других сцен я придумывал другие прикольные решения, но всё в рамках моего движка, пока что ни одного костыля не было использовоано.
Ладно, вот еще одна разработка.
Успешность действия определяется не состоянием мира, а броском кубика. Вдохновился системой из одной настолки.
Из особенностей:
- Дайс игрока (1d6) и дайс мира (1d10)
- У игрока есть навыки: холод, нрав, сталь, тень и ум.
Навыки дают прибавку к броску кубика игрока.
К примеру: действие "сильно ударить" будет использовать модификатор стали.
Навыки можно будет прокачивать.
- Полностью процедурный текст.
- Повышающаяся сложность.
У дайса мира тоже есть бонус - сложность, которая будет будет увеличиваться через н-ое количество пройденных локаций.
>мне так привычнее оценивать.
петух графоманский.
оцениваю в КОЛИЧЕСТВЕ ЗНАКОВ ПЛЕЙН ТЕКСТ.
ИДИ НАХУЙ ЧМО.
Причина тряски?
У меня уже 43 страницы текста и версия 0.11. Скоро начну закрытое тестирование.
лес
Ух как я волнуюсь, пишу это а сердце так и колотиться.
лес
лес
В обозримом будущем точно не будет. Может быть много позже, не раньше чем через полугода, если будет успех, попробую сделать. Если очень хочется, но нет андроида, можно поставить эмулятор.
Лол нет. Это дело точно не одного дня.
Во-первых там весь юай нативный андроидный. Нужно переписать юай. На чём переписать? JavaFx? Swing? И то и другое мне ещё нужно изучить чтобы переписать. Unity? Я его вообще не знаю, не уверен что он может с явой-котлином работать.
Во-вторых логика отображения там тоже завязана на андроид, всякие ViewModel, LiveData и прочее.
В-третьих сейвы, ачивки, прогресс игры там завязан на андроид.
Логика самой игры да, она отвязана от андроида в той или иной степени. Но гемплей там чисто под мобилку. Редикие картинки и абзацы текста. На десктопе это будет максимум тупо. Возьми например Бесконечно лето, там много разнообразых фонов.
Дальше сами картинки, у меня их тупо мало, недостаточно чтобы был нормальный геймплей (в духе вызуальных новелл) на десктопе.
И последнея дистрибьюция. Я вообще не знаю как распространять десктопную игру. Выложить файл на гугл диск? А как потом обновлять? Как собирать статистику с дектопного приложения? В стим? Вообще не знаю какие там требования.
Сейчас перечитал написанное и понял что основные проблемы это то что у меня нет опыта написания под десктоп (какой фремворк, какой тулинг?) и не понятно что с дистрибьюцией. Если мне кто-то с этим поможет хотя бы советом, то может что-то и получится.
Сам я планировал заюзать kotlin native и следующим шагом сделать версию под айос.
И кстати там не просто джисон. В нём ещё описаны переменные и операции с ними. Ну то есть если у тебя есть ключ, то в сцене с дверью появится пункт "открыть ключом". Если ты узнал чьё-то имя, то потом будет возможность обратиться к нему по имени. И так далее.
Иллюстарций уже 7, а ещё я нашёл подходящую музыку и договорился с её авторами.
лес
Не один.
Нейронки могут приблизиться как минимум, у детерминированного подхода шансов нет особых.
Нейронки могут приблизиться как минимум, у детерминированного подхода шансов нет особых.
Похоже это самый тупой пост года в нашем гд, поздравления этому подебителю.
бро, ты не один, нас как минимум n-1
Я конечно не ИФщик, но вот прям сейчас пилю сижу в меру своей поехавшести текстовый рпг-квест на Instead
Не один, я захожу раз-два в год.
мимописака с десятком забытых новелл и одной Самой Главной Ненаписанной
Ну я могу аргументировать.
1. Величие днд слегка преувеличено, среди илитных ролевиков это жвачка сорт оф вкусиочка. Там довольно штампованные сюжеты типа вы познакомились в таверне, потом пошли резать орков, потом дварф упал с обрыва и выкинул 20. Условный шэдоуран поинтереснее.
2. Насколько можно судить по /ai, аноны давно перекатились в ролки с нейросетями, так что компы тут уже возможно достигли такого величия.
мимо
Пока нейросети тупят сильно, а запустить локально, как правило, возможности нет.
А ещё создал тредик в ruvn https://2ch.hk/ruvn/res/147200.html (М) не знаю правда, может меня оттуда погонят тряпками.
Вот мой первый пост >>841091 С тех пор прошло уже пять месяцев.
лес
https://qsp.su/index.php?option=com_sobi2&sobi2Task=sobi2Details&sobi2Id=419&Itemid=55
Ты зачем насилуешь труп, перекатывайся в Twine.
В этой версии довёл до конца две сюжетные ветки. Осталось ещё две или три.
лес
Порог вхождения и туллинг, чел. На условном QSP можно сразу сесть и написать игру без особых навыков. Юнити нужно какое-то время осваивать + знание c#, а уже самому написать движок даже аналогичный qsp это дело многих месяцев.
> На условном QSP можно сразу сесть и написать игру без особых навыков.
Хуй ты игру напишешь без особых навыков. Даже на QSP.
Надо уметь программировать, уметь рассуждать с точки зрения игрока, уметь в игровые механики, попытаться предсказать все действия игрока, чтобы не портить погружение.
потому что эти специализированные движки итак ничего не ограничивают, можно хоть как извращаться, просто есть удобные штуки для очень часто необходимых в каждой игре вещей, но можно ими не пользоваться
есть божественный instead, на котором игры пилятся в одно удовольствие и он гораздо лучше архитектурно продуман, чем даже qsp и другие
Если про твайн говорим то в ДОЛе, например, это выполнено через менеджмент ресурсов и плохие концовки. Если не хочешь нежелательный исход - делай менеджмент, хочешь облегчить менеджмент - исследуй игру.
А если без ресурсов и циферок?
Обычные квесты, где просто нужно искать предметы чтобы пройти дальше это скучно, как по мне.
Интересно было бы пообсуждать сабж.
Цель подобного вызова, имхо, это сделать игроку неприятно, чтобы цель игры не доставалась ему слишком легко. Можешь сделать джрпг-подобную боевую систему и сделать битвы, можешь сделать какие-нибудь мини игры. Думай об этом как о том, где нужно причинить игроку боль, чтобы усилить удовольствие от получения награды.
Надо. Жаль, отдельного твайнотреда нет, я как раз ебу пейсочницу/эрпоге на нём. Хотелось бы с ебиномышленниками поговорить.
Обсуждай здесь в более общем треде. Если внезапно появятся десятки единомышленников, тред улетит в бамплимит, вы перекатитесь в отдельный тред. Это база имиджборд, это классика. А так-то можешь создать очередной пустой тред, наподобие тредов по скретчу/снэпу или крайэнджину. И где эти треды теперь? Утонули.
Так это и так ясно что будет как в меме а опом и его тредом.
Тут сильно не хватает ссылкоты.
Чем тут твайнозависимые занимаются? Что делают? Какие жанры? Форматы истории?
Я сам безыгорный нуфак. Вкатываюсь в сахарный кубик, пытаясь сделать с нуля песочницу/рпг, пока всё норм идёт, привык почти уже к новому инструменту, выезжаю в основном за счёт того что могу немного в жс и намного больше в css, html. Ставку делаю на взаимодействие, гриндан, дроч механический, ни в коем случае, не на нарратив, ибо в нём нихуя не смыслю. Планирую интереса ради попробовать прикрутить мультиплеер(именно ради эксперимента, я не собираюсь его в релизе держать) и я знаю, как сделал бы это уже.
А пока я занят больше продумыванием логики повидения неписей, их генерацией и как реализовать взаимодействие с ними в устраивающем меня объёме и попутно делаю интерфейс, который будет покрывать все нужды.
Я на работе сделал, понял как и стёр. Решение на крайний случай если сахарный кубик не даст мне сделать нормально. Там неполное решение, а лишь конкретная часть, которая я не знал как себя ведёт. Потому что я жс прямо совсем немного знаю.
player = {
items: {
book: {
name: "book",
quantity: 3,
equippable: false,
equipped: false
},
card: {
name: "card",
quantity: 5,
equippable: false,
equipped: false
}
}
}
for (let item in player.items) {
console.log(player.items[item].name + ": " + player.items[item].quantity);
}
console.log(Object.values(player.items)[1].name + ": " + Object.values(player.items)[1].quantity);
Вот такой кусок я написал. Мне нужно было выяснить как тянуть из объектов жс данные, когда одно из названий полей неизвестно и представлено в виде индекса с последующим свойством. Я выяснил, что хотел.
Генерация нпс будет в значительной степени опираться на это, т.к.неписи будут генерироваться по шаблону в виде объекта в цикле с заданным количеством и хотя будут у непией имена в ключах, именной ключ будет итератором.
В инвентаре мне потребуется лепить лист из предметов с разными кнопками.
Как-то так.
Я на работе сделал, понял как и стёр. Решение на крайний случай если сахарный кубик не даст мне сделать нормально. Там неполное решение, а лишь конкретная часть, которая я не знал как себя ведёт. Потому что я жс прямо совсем немного знаю.
player = {
items: {
book: {
name: "book",
quantity: 3,
equippable: false,
equipped: false
},
card: {
name: "card",
quantity: 5,
equippable: false,
equipped: false
}
}
}
for (let item in player.items) {
console.log(player.items[item].name + ": " + player.items[item].quantity);
}
console.log(Object.values(player.items)[1].name + ": " + Object.values(player.items)[1].quantity);
Вот такой кусок я написал. Мне нужно было выяснить как тянуть из объектов жс данные, когда одно из названий полей неизвестно и представлено в виде индекса с последующим свойством. Я выяснил, что хотел.
Генерация нпс будет в значительной степени опираться на это, т.к.неписи будут генерироваться по шаблону в виде объекта в цикле с заданным количеством и хотя будут у непией имена в ключах, именной ключ будет итератором.
В инвентаре мне потребуется лепить лист из предметов с разными кнопками.
Как-то так.
Увидим. Я пока не занимался ими, буду разбираться в кубике, тогда точно решу, а пока у меня лишь абстрактные мысли уровня "сохраню геймстейт, характеристики и позиции персонажей в жсоне". Короче, пока не знаю, как дойду - узнаю. Я вроде кроем глаза видел, но могу и ошибаться, что в доках по сейвам есть инфа какая-то.
Вы тоже пишите, если есть что-то.
Сейчас ещё подумал, что, может быть, сделаю одну вещь, которую вообще пока не видел в играх на твайне: при условии наличия файлов сохранения, грузится самый новый, то есть, не нужно загружать сейв.
Ни в коем случае. Я не хочу чтобы в гд набежали различного вида долбоёбы, которые там обитают. Я знаю, о чём говорю, я сам в б регулярно бываю.
Чел. Ты неправ. Не создавай, подумой. Там вся досках в хохлозависимых, инцелах-блэкпильщиках и пидорах. Они нахуй тут не нужны.
предметы юзабельны, но там каждому придётся прописывать эффекты при использовании и надеваемые предметы я точно поменяю, потому что там говнокод говнокодович.
https://pastebin.com/U1qbxA59
Я тоже долго думал над инвентарём. В итоге надумал несколько подходов
1. Каждое использование каждого предмета описано в коде. Хорошо если предметов мало. Но если их много, можно использовать любой предмет в любом месте или даже комбинировать между собой то сложность квадратичной (каждый из n предметов с каждым это n*n) растёт вплоть до невозможной. Зато можно сделать очень неожиданные взаимодействия.
2. Описать взаимодействие абстракций предметов. Это лучше, например ключ-дверь, осталось проверить тот ли это ключ.
Где описывать взаимодействия тоже несколько вариантов.
1. В коде. Но тогда для каждого нового предмета нужно менять код. Не айс.
2. В файлах сценария (джисон например). Тогда придётся изобретать свой формат (язык), состоящий из атомарных взаимодействий, и их комбинацию описывать в файле сценария.
Я к этому моменту нашёл решение и нашёл обходное решение.
Большая часть предметов будет использоваться в 2-3 окнах. Я не буду буквально каждое применение прописывать, я буду прописывать как предмет действует внутри пассаджа инвентаря, который уже будет апдейтит значения в паре с ключами в объекте. А там посмотрим. Предметов будет умеренно много. Я ручками в объекте пропишу их свойства, но эффект будет применяться в инвентаре, да. Для тестов пока соду и энергетик впилил в инветарь, как дойдёт до надеваемого, запилю одежду красные труселя и буду развлекаться.
Комбинировать предметы я не стану. В рот пусть ебутся, это не душный квест, это душная гриндилка.
> А как планируешь делать сохранения?
Мне нравится способ сохранения, при котором есть ЖСОН-данные в памяти, в которые можно писать и читать при помощи двух методов, принимающих путь/к/элементу/данных/с/названием/элемента и значение элемента.
> T read<T>(str item_path, T default_value)
> int write<T>(str item_path, T value)
например:
> int conversation_with_username_page = read<int>("characters/username/conversations/tier1/active_page", 0) #Данный псевдокод как будто бы получает страницу диалога с неписем, на которой игрок остановился. В случае ошибки, функция вернёт значение по умолчанию из второго аргумента.
> error = write<bool>("locations/street1/characters/bill/mark_for_delete", true) #А вот этот псевдокод установит некоему Биллу маркер удаления, чтобы в следующий раз он не появился на локации "улица1" при её загрузке. В случае ошибки функция вернёт код ошибки. Если всё прошло успешно - вернёт ноль.
Соответственно, если каждый подлежащий сохранению объект, при своём изменении использует функцию записи, то когда нам нужно сохранить игру, у нас уже готовый набор данных в памяти, мы просто берём и выгружаем его в файл, или в отдельную переменную-чекпоинт в памяти, как нужно так и выгружаем.
Ну и разумеется, в вышеуказанных функциях должно реализовать все необходимые блокировки, чтобы, например, нельзя писать, пока идёт сохранение.
>альтернативных движков
Кто-нибудь на Godot пробовал делать интерактивную историю? GDScript достаточно удобен + есть аддоны.
Я вот уже почти год пишу свой движок именно движок где-то месяц или два писал, остальное время сценарий и тулинг для движка
лес
Неважно насколько удобен скрипт. Само наличие кодинга отпугивает жудожников с писателями. Им подавай но-кодин-энжинс.
Вот когда в ро сидел и листал тред этот, было как раз ощущение что большая часть контингента как раз пейсаки с художниками, которые боятся кода, как кот воды.
К слову, я обосрался ночью снова в коде, но у меня ещё есть решения и я не отстану от него пока назуй не заебу.
Хотел немного ещё вдобавок с окошками пошаманить но чёт дефолтное решение из учебника на чистом жс/css привело к исчезновению окна, но это решение и более длинное, перепейшу на жкваери, не буду выёбываться на этот раз.
Я хочу очень дохуя свистоперделок прикрутить, чтобы игрок мог менять всплывающие окна и поля, как ему захочется.
А я вот наоборот, кодер, и боюсь рисования до усрачки. Вкатывался несколько раз, получались палочные человечки уровня древнеегипетской графики, разочаровывался и дропал.
Допустим игрок делает действие, NPC на него реагирует репликой.
Затем игрок повторяет это же действие, и видит, что NPC повторяет предыдущую реплику слово в слово.
Есть какие-либо эффективные способы борьбы с этим не прибегая к написанию 1000 реплик для каждого действия?
Это очень бьет по погружению, на самом то деле.
Опытный манчкин не пожалеет бесцельно проведённого времени и тысячу раз кликнет одно и то же действие, чтобы на тысячу первый раз услышать повтор, прибежать на форумы и сказать всем что вот у тебя в игре тысяча реплик повторяется.
Поэтому не парься и делай по три четыре шесть реплик на действие. Игроку, ориентированному на погружение этого будет достаточно.
Я не боюсь, у меня тупо лапки. Если пойму как то буду генерить пэйпердоллы неписей.
>>905696
Дадая.
Ну чё, я заебал инветарь. Он работает хоть и неидеально.
Решение к окошкам на жкваери не работает, видать где-то штаны стали коричневыми, но я не заметил и не постирал.
Но в крайнем случае можно и без того что я делал на жкваери.
Тактеперь самое время сгенерировать локации и тысячу тянчек.
>игрок повторяет это же действие, и видит, что NPC повторяет предыдущую реплику
>очень бьет по погружению
На самом деле нет. Если игра увлекательная, то она погружает в свои условности так, что окружающий мир вообще перестаёшь замечать. А если твоя игра - унылое говно, то хоть миллион реплик напиши, игрок будет недоволен и быстро бросит играть.
Если хочешь реализьмь, тогда пусть нпц посылает нахрен после второго повтора, бьёт на третий и убивает на четвёртый. Или убегает и деспавнится. Представь, что к тебе ирл кто-то домогается с одним и тем же запросом сто раз в минуту...
А торгаши и прочий обслуживающий персонал обязаны по долгу службы говорить шаблонными фразами, если твой торговец имеет 100 вариантов фразы "спасибо за покупку", это нереалистично.
>>905696
>делай по три четыре шесть реплик на действие
Избыточная, бесполезная сложность.
>манчкин
Значение знаешь?
>чтобы на тысячу первый раз услышать повтор, прибежать на форумы и сказать всем что вот у тебя в игре тысяча реплик повторяется
Манчкину плевать на текст, он на числа дрочит. Он будет жаловаться на форуме, что больше не выходит выбить 999 уровень после патча, фиксящего баг.
>боюсь рисования до усрачки
>получались палочные человечки
>>905701
>Я не боюсь, у меня тупо лапки.
Рекомендую почитать Andrew Loomis - Fun With a Pencil, он даёт базу самым простым языком, а ещё помогает справиться со страхом:
>ALL THAT YOU NEED TO KNOW, TO START THIS BOOK, IS HOW TO DRAW A CIRCLE. . .
>And it can be as lopsided as the family budget, and still work out.
>Don’t start out with that old gag, “I couldn’t draw a straight line.” Neither can I, freehand. If we need a straight line, we can use a ruler. Now please try it, just for fun.
Скачать pdf без смс и регистрации:
https://archive.org/download/andrewloomiscreative.illustration
Алсо, пикрил 100% корректен: JUST DRAW. Чтобы рисовать хорошо и быстро, нужно очень много рисовать, а техника не столь важна. В какой бы технике вы ни пытались рисовать, для рисунка нужен кропотливый труд. Ускорение работы можно ожидать только когда ваши нейронки в мозгах перестроятся, автоматизируя рутину на подсознательном уровне, но для этого нужно очень много раз повторить эту рутину сознательно. Часть рутины можно переложить на компьютер, но тут нужно смотреть на желаемый уровень контроля над результатом и удобство инструментов.
Под лапками я имел ввиду что у меня мелкая моторика говна и цнс въёбана.
К ТЕБЕ ПОДХОДИТ ИГРОК И НАЧИНАЕТ ФЛИРТОВАТЬ
@
"ОТВАЛИ ЧМО"
@
СНОВА ФЛИРТУЕТ
@
"'ОТВАЛИ ЧМО"
@
8 ГРЁБАНЫХ МИНУТ СПУСТЯ
@
"ОТВАЛИ ЧМО"
@
С ЛИЦОМ ЛЯГУШКИ ПОКОРНО ОТВЕЧАЕШЬ НА ПОДКАТЫ, ПОНИМАЯ, ЧТО ТЕБЯ ИСПОЛЬЗУЮТ ТУПО ПОТОМУ ЧТО ГЕЙМДЕВ РЕШИЛ, ЧТО СКИПЫ ВРЕМЕНИ В ИГРЕ НЕ НУЖНЫ
Хороший вопрос. Я вот какие штуки сделал:
1. Для каждого персонажа есть репутация. Большинство реплик не проходят бесследно для репутации. Если она станет слишком мала, персонаж откажется разговаривать, вообще уйдёт и тп
Например, в начале у меня диалог с водителем. Если мы его подзаебём, то он откажется дальше разговаривать и поезда пройдёт в молчании.
2. Диалоги имеют явное или неявное ограничение по времени. Каждая реплика уменьшает счётчик времени. Когда он доходит до 0, происходит необратимое событие: собеседник уходит, кто-то формированно перрывает диалог и тд и тп
Напирмер диалог с медсестрой. Она торопит нас уходить, но мы всё равно можнем задать ей несколько вопросов. Если продолжить задавать вопросы сверх меры, то в санчасть ворвутся солдаты и нам придётся убегать.
Мне даже кажется это делает игру более реиграбельной, так как нет возможности прокликать все варианты. Хочешь посмотреть другие ветки - изволь загрузиться, дойти до этого момента и выбрать другоей вариант. Но это только догадки, потому что в "Чужой дом" почти никто не играет, плак-плак
лес
В Хонкае это обыграли. Там попадаешь в сон где прощаешься с Химеко, но после разговора она остается, но при попытке поговорить посылает. Но через 10 попыток разговаривается и выдает еще рассказ на 100 строк, после которого игрок плачет как сучка.
https://www.youtube.com/watch?v=VqInDtfkots
>>905724
Просто я сейчас на Gruescript пишу игру-тамагочи, и там лишь один NPC, но он обязан быть очень проработанным.
Подход как в Dark Souls, где NPC это просто ± статичный объект к которому можно подойти и послушать одну реплику тут не сработает.
Я планирую сделать так:
У NPC есть распорядок действий, что запускаются глобальным событием (к примеру, смена периода суток), и зависят от того, где находится NPC, какое сейчас время, какая на улице погода.
Сами реплики так же зависят от глобальных праметров + внутренне состояние NPC (настроение и т.д).
К примеру, начинается день, NPC проспается.
- Если на момент пробуждения игрок находится рядом с неписью, непись начинает сладкие потягушки.
- Если игрока рядом нет, неписью начинает делать зарядку, оставляя сам момент пробуждения "за кадром".
В такой игре нужно создать эффект, что непись как бы живёт своей жизнью и её действия не зависят напрямую от игрока.
> Если игрока рядом нет, неписью начинает делать
Но зачем? Если игрока рядом нет, непись не существует, выгружен из памяти. У него есть распорядок ГОАП, хорошо. В отсутствие игрока поблизости, у всех игровых сущностей должен существовать только невизуальный компонент, который по таймеру роллит чем закончились действия по распорядку и как они повлияли на настроение непися, и куда непись после этого предположительно мог пойти. И только в том случае, если этот компонент (менеджер) высчитает, что непись приближается к локации, в которой игрок находится, только тогда происходит загрузка визуального компонента и непись начинает отыгрывать свою роль перед игроком.
я передумал. Впизду сохранения. Их не будет, будет лишь возможность продолжить игру и это решение связано с геймдизайном. Легко откинуться перс может лишь в определённый период, после нет. С определённого момента перс сможет перемещаться буквально в любой день. Но эта вещь будет связана именно с достижением определённого момента когда гг станет по уровню как Йог-Сотот: будет знать всё, обо всём и существовать сразу в настоящем, будущем и прошлом, будет всем сразу.
Сделай ещё процедурную генерацию карты и квестов, или что там у тебя. И получится каноничный рогалик.
1. У меня не рогалик.
2. Я уже думал об этом. И я могу сделать, но решил, что хочу ручками прописать карту и локации, как минимум, из-за кнопок петушествий между локами. Их расположение не позволяет генерировать их процедурно. Да и просто желание прописать вручную есть.
Я сейчас больше думаю, как лучше 10к нпс сгенерить в игре так чтобы при сейвах геймстейта(для таймтревелла)/обработке инфы(погнале, щас десять к неписей дружно решат перейти в другую локацию, пойти срать, ебать друг друга в жопы, нет, деспавна не будет, мне нужно чтобы изменения их стат носили естественный характер) и хочу уже в 5 раз переписать инвентарь, я хочу попробовать его иначе сделать.
Насчёт квестов хуй знает, как разве что просто какой-то скелет сюжета вокруг гг(в душе не ебу зачем, а главное, нахуя мне сюжет там, потому что это как клей пва - приклеить, чтобы меньше был шанс заскучать,но только я не оченб понимаю как в условиях гринда я буду скучать).
Между делом накотил пару вещей, чтобы кириллить было удобнее. Вообще, я бы расширил шапку треда в плане твайна добавив полезной ссылкоты. Нам пора думоть о перекате.
> как лучше 10к нпс сгенерить в игре
Внезапно меня посетила идея, может быть тебе поможет. Опиши состояние каждого непися функцией от времени или игрового состояния.
Простейший пример. Если непись всю свою жизнь движется линейно в одномерном пространстве, то его положение можно описать функцией x = x(t) = at + b
Обоищим это и получим что-то типа
data class WorldState(
val t: Int
)
data class NpcState(
val x: Int
)
fun getNpcState(worldState: WorldState): NpcState {
val state = when(worldState.timeOfDay){
MORNING -> утром срём
DAY -> днём жрём
EVENING -> вечером ебём еот опа
NIGHT -> ночью спим
}
return state
}
Код максимум общий, чтобы показать саму идею.
Таким образом нам не нужно будет хранить состояние каждой неписи, достаточно храниь состояние мира, а при подгрузке локации получать состояние каждого нпц.
лес
> как лучше 10к нпс сгенерить в игре
Внезапно меня посетила идея, может быть тебе поможет. Опиши состояние каждого непися функцией от времени или игрового состояния.
Простейший пример. Если непись всю свою жизнь движется линейно в одномерном пространстве, то его положение можно описать функцией x = x(t) = at + b
Обоищим это и получим что-то типа
data class WorldState(
val t: Int
)
data class NpcState(
val x: Int
)
fun getNpcState(worldState: WorldState): NpcState {
val state = when(worldState.timeOfDay){
MORNING -> утром срём
DAY -> днём жрём
EVENING -> вечером ебём еот опа
NIGHT -> ночью спим
}
return state
}
Код максимум общий, чтобы показать саму идею.
Таким образом нам не нужно будет хранить состояние каждой неписи, достаточно храниь состояние мира, а при подгрузке локации получать состояние каждого нпц.
лес
Я думал об этом. Пока идея такова: до расписания(типа твоего по плану) нпс будут петушествовать внутри стран в зависимости от генерирующегося на каждый пук игрока npc[id].locationid который будет math.random характерный для страны. После генерации сверяется с ид локаций и нпс оказывается если выбрасывается true. Потом, как руки дойдут будет расписание с перерывами на посрать в районе локации(ну например у нпс есть ключ bladder, зависимый от времени, при заполнении значения которого на 70%, нпс пиздует искать где посрать). Есть ещё нюанс, что например, ты в ниппонии сидишь, а неписи в америке ходят кокочалочку и качают стамину/стренгу индивидуально, а не слетевшись как негры всем гетто.
>>906271
Нам не привыкать, выебем нулл.
Мы будем предохраняться!
fun ebatEot(eot: Eot?){
if(eot==null){
self.fap()
}else{
eot.ebat(self.ud)
}
}
try-catch присунем и то в что в catch выебем.
ОП, в следюущем кате для твайна запили следующую инфу (важный нюанс, я не расписываю все 4 формата историй, а пишу про тот, с которым сам работаю и с которым знаком, если кто-то пишет в другом формате - пишите в тред, что ещё впилить стоит) :
Twine:
SugarCube 2 установка, плюс, плагины:
https://www.motoslave.net/sugarcube/2/
SugarCube 2 доки:
https://www.motoslave.net/sugarcube/2/docs/
Рекоммендуемый редактор кода - VSCode, потому что под него есть расширение T3LT - "Twee 3 Language Tools", который позволяет работать с кодом в VSCode.
620x720, 0:11
> Таким образом нам не нужно будет хранить состояние каждой неписи, достаточно храниь состояние мира, а при подгрузке локации получать состояние каждого нпц.
Годно. Я тут подумал, что можно вообще подойти к вопросу заполнения мира непиями с тозиций ленивого программирования. Изначально существует общее описание мира, события, происходящие в нём, описания уровня "торговая гильдия города N наложила заградительные пошлины на продукцию ферм из города M" и пока игрок не интересуется этим вопросом, никакие персонажи не созданы и не существуют. Но! Имеется подробная схема каких персонажей и с камими графиками GOAP создавать, если игрок забредёт в офис гильдии. В этот момент появятся секретарши, клерки, чиновники, заживут своей жизнью.
Вот только как всё это закодить так, чтобы без глюков.
> с тозиций ленивого программирования
Я думаю это правильно. И даже больше, когда ты выходишь с локации, неписи перестают существовать, остаётся только состояние мира. Когда возвращаешься - они снова пересчитываются исходя из состояния. Я так понял у тебя будет оче большой мир, могут быть проблемы если не освобождать память.
> как всё это закодить так, чтобы без глюков.
Это чисто ремесло. Один раз кодишь, другой, а на сотый раз уже без компилятора в одном блокноте можешь писать код. Я так понял ты на яваскрипте пишешь, тут я конечно не советчик. А если не котлине то могу что-то подскзаать.
Ну это все клево но есть вопросики
Что же получается люди только в офисе и никуда не выходят? Или даже так, никогда между городами не ездят? Откуда же тогда каждый день такие пробки на выездах в реале
Как глубоко готов ты детализировать, только до челиков? Как насчет органов, клеток, молекул, атомов? Ведь все еще трудности сделать какую-то способность вроде "превращать железо в золото" включая кровь людей...
Короче, аноны треда собираются в одного супер-анона и пилят игорей разных жанров.
Я тебя услышал.
> аноны
Ты абсолютно не понимаешь сути. Это не пикабу и не вк, где пользователи могу собраться. Здесь один, единый анон. Ему не нужно собираться, он таким был и таким будет, пока Бибизян платит за хостинг.
> Да, так бывает что анон пишет несколько похожих игр, находясь в разных местах.
Респект олдфагу, постигшему суть борд.
>>906655
> Я так понял ты на яваскрипте пишешь
Бэк на расте, фронт на годоте.
> А если не котлине то могу что-то подскзаать
Можешь подсказывать хоть на фортране, я суть улавливаю, а не синтаксис.
>Допустим игрок делает действие, NPC на него реагирует репликой.
>Затем игрок повторяет это же действие, и видит, что NPC повторяет предыдущую реплику слово в слово.
>Это очень бьет по погружению
>>905853
>пишу игру-тамагочи, и там лишь один NPC, но он обязан быть очень проработанным.
>В такой игре нужно создать эффект, что непись как бы живёт своей жизнью
У виртуального питомца нет "погружения" и такой персонаж не обязан быть "очень проработанным". Игрок прекрасно понимает, что имеет дело не с биологическим животным, а с программой. Её суть заключается в заботе о виртуальном питомце.
Возьмём, к примеру, растения. Они медленно растут, практически неподвижны и в домашних условиях большинство не зацветают, тем более не приносят полезных плодов. Без регулярной заботы домашнее растение рано или поздно умрёт, заставляя хозяина регулярно поливать, вносить удобрения, защищать от болезней и вредителей и т.д. Всё ради чего? Ради какой-то зелёной фигни, которая постоянно мусорит желтеющими листьями и может опрокинуть горшок, рассыпав натуральную грязь по полу. Несмотря на это, люди заводят комнатные растения, заботятся, дают им имена, беспокоятся об их состоянии...
В общем, я хочу сказать, что виртуальному питомцу совершенно нет необходимости изображать из себя то, чем он не является. Его цель - быть объектом заботы хозяина, выглядеть миленько и вызывать позитивные эмоции у хозяина. Никто не ожидает от него быть человеком, как не ожидают от зелёного питомца каких-то особых достижений. Это было бы странно, "погружаться" в питомца, приписывая ему характеристики, которых у него, очевидно, нет.
> Всё ради чего?
Имхо там буквально клеточный автомат работающий по правилам природы (физики/химии/ботаники) и владелец ставит себе "игровую" цель не потерять растение, потому что оставленное в дефолтном состоянии в горшке оно погибнет. Реализация требует найти правильную последовательность шагов/действий, по сути алгоритм.
Иными словами, мотивация не в том что "цветок не умер", а в том, что "я не обосрался и не дал ему умереть, смог вырастить".
Но в целом с твоим посылом я не согласен. Это и делает картонных персонажей.
Это как с экшн играми, где все больше девушек сражается на высоких каблуках, в пышных платьях. Это физически невозможно. И слишком явно становится что это фишка, а не человек. А ведь потом кто-то насмотрится и решит повторить и сломает свою настоящую ногу.
Вообще, я считаю это уже на грани мошенничества. Такие неписи зачастую просто хибоксы. А иногда даже не хитбоксы, а просто хитпоинты. А иногда даже не хитпоинты.
Но при этом их рисуют людьми, подсовывая игроку, который думает что купит игру про людей.
Давайте тогда делать честнее. Если непись ведет себя как доска объявлений, то и не надо рисовать ее бородатым гуманоидом воспроизводящим анимацию открывания рта. А так и надо рисовать доской объявлений. Если непись умеет себя вести только как тренировочное чучело, тои не надо придавать ему человеческие черты, пусть это и будет набитый соломой мешок.
все кто делают не текстовый квест и не книгу-игру в текстовом формате - официально щизы, хер ли вы тут делаете? зочем все это?
Ебусь с твайном в попытках реализовать свои хотелки, хули доебался? Иди пиши свою книгу, я тут ебашусь по хардкору, не мешай мне ААА-велосипед писать.
Никак. Я конечно программист и могу хоть свой движок написать, а вот сценарист и геймдизайнер из меня никакой.
Хуёво. А у меня графен понемногу появляется(уровня внок), в процессе прикручивания его вариативности к неписям пока.
Показывай епт все равно мы тут точно одни нас никто больше не видит не стесняйся будь как дома че как не родной братанчик
Я бы рад похвастаться, но пока оно не в кондиции, чтобы выёбываться. Пока что сегодня прикрутил неписям функцию смены батиных труханов, расширил фунцию апдейта списка неписей в локе, прикрутил адейт стат и внешности для всех неписей в зависимости от стат их. Это ещё не конец, мне ещё ебать как много прикручивать логики с менеджментом труханов и стат, которые на них вляют. Вот собственно, как оно пока.
upd.: сейчас, пока подрубал игоря, чтобы заскринить, обнаружил, что последняя введённая мной в объект для неписей переменная заруинила всю игру, потому что я по привычке ";" вместо "," в конце строки поставил.
upd. #2: ещё пару вещей в css прописал вдобавок.
Сейчас увидел на пикче косяк с css небольшой который со стороны не видно, надо будет поправить.
Поскольку я выкатывать не собираюсь, там будет много инфы и зрение у меня збс, то и шрифт я не хочу увеличивать. Я уже как-то другим людям в твайне пишущем показывал, они про шрифт сказали, потому я в курсе.
Но с чего ты подумал про койкацу? Там буквально ничего нет оттуда.
Ага, спасибо.
Надо бы ещё апдейты состояния мира прикрутить к апдейтам времени, но это чуть позже. Я хочу сначала неписей допилить до какой-то точки, когда интеракция с ними не начнёт походить на что-то нормальное, а не кринж с болванчиками, пока я не начал локациями обмазываться и пока они не начали разбредаться.
Вы видите копию треда, сохраненную в 06:51.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.