Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

1    0    #1
18.05.2019 18:37

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Подскажите базовые технологии для текстовой игры

Никогда особо не увлекался текстовыми играми, но решил попробовать.

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

Основные идеи:
1) Возможность свободно переключаться между локациями по клику мышки.
2) Отсутствие текстового парсера (все варианты ответов заранее прописаны).

Я так понимаю, что требуется базовая память на переменные (взял/не взял предмет, посетил/не посетил место), а также возможность их менять.

Может ещё какие то техники стоит предусмотреть?

P.S. Пишу на python, работа среды предполагается в вебе.

Неактивен

4    1    #2
18.05.2019 20:41

Zlobot
Участник (+201, -36)
Зарегистрирован: 28.09.2017
Сообщений: 92

Re: Подскажите базовые технологии для текстовой игры

Ну я бы хотел не столько что-то дельное посоветовать, сколько предостеречь. Дело в том, что написание тестового движка только на первый взгляд занятие простое. Если для себя лично и для какой-то одной конкретной игры, то еще куда не шло, но если что-то универсальное для авторов в целом, то это настоящая каторга. Хороший движок, это десять или более лет упорной работы не только автора программного продукта, но и комьюнити вокруг этого движка. Один в поле не воин. Скажем так времязатратное хобби, оно как вторая работа за которую никто не платит. Альтруизм в чистом виде.

1). Зачем вообще писать еще один текстовый движок? Причина как правило не из разряда банальных. Например, автор осознает, что для его задумки нет подходящего готового решения. Каждый движок занимает свою нишу. Если повезет, то подтянутся единомышленники, которые будут отлавливать баги, помогать советами, подавать идеи и самое главное писать игры под новую платформу. Увы активных участников и авторов в тестовом комьюнити с годами все меньше. Новичков почти нет, а "старички" уже давно нашли свой излюбленный шест.

2). Python 2 или Pyhton 3? Это принципиально важный вопрос. Если вторая версия, то мог бы посоветовать написать какой-то модуль для RenPy. Наверно кто-то что-то давно хочет или кому-то нужна помощь. Это ВН, но не все ли равно для чего писать код, если просто хочется набить руку выполняя осмысленную задачу. Не могу обещать, что в комьюнити RenPy, кто-то будет рад новому человеку, там такой же рунет, как и везде со всеми его плюсами и минусами. Просто не знаю где еще в рамках ТГИ сообщества может пригодится Python.

3). Боюсь никто не сможет выдать ТЗ для написания текстового движка. Это сложно, долго и очень индивидуально в плане подхода к разработке. Надо играть в текстовые игры, возможно даже попробовать их писать и тогда придет озарение. По другому никак.

4). Тут тухло. Можете присоединится к каналу в дискорде #IFRUS, там теоретически могут помочь, посоветовать во что стоит поиграть или испортить настроение. Это как повезет:) В общем все они в чартиках сидят. Там треньдеть удобно.

Вообще единственный плюс в новом движке где все крутится на Python я вижу пока только один - змеюка могучая и для нее много подключаемых библиотек. То есть выбранный язык отчасти плюс, а в остальном не ясно.

P.S. Я не гуру и не эксперт. Делаю сосиски в тесте и тушу мясо в квасе. Это сегодня. Такое я умею, а игры там или движки - сложно. Диванный эксперт свое выступление закончил.

Неактивен

2    0    #3
19.05.2019 06:40

Oreolek
Модератор (+409, -165)
Откуда: Кемерово
Зарегистрирован: 02.11.2009
Сообщений: 611
Вебсайт

Re: Подскажите базовые технологии для текстовой игры

Для текстовой игры с выбором вариантов достаточно вывода текста, ввода номеров вариантов и кучи условий if-then-else. Это интересно как упражнение в программировании, но не очень полезно остальным.

Для движка текстовых игр необходимо строить формат игр, сохранения и загрузку состояний, инструменты отладки ошибок в самих играх и движке и какой-никакой интерфейс для игрока. См. статью на вики.

По-моему, самое оптимальное как следующий шаг после "пойти налево или пойти направо" по простоте и осмысленности - это написать программу, которая генерирует игру. Например, заменяет часть текста или перемешивает ссылки, а там уже на что хватит сил и фантазии.

Неактивен

1    0    #4
19.05.2019 12:33

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Re: Подскажите базовые технологии для текстовой игры

Зачем вообще писать еще один текстовый движок?

Говорю же, как дополнительная практика. Вообще у меня есть определённые задумки для текстовой игры, но там нет ничего особо сложного. 50% мотивации это просто практика программирования. Поэтому я пишу строго только на стандартной библиотеке. Т.е. вообще без дополнительных библиотек. Ни о каких годах разработки речи не идёт, как я уже говорил, я не собираюсь писать текстовый процессор. По сути это будет граф из XML документов, по которым можно двигаться в произвольном направлении.

Для текстовой игры с выбором вариантов достаточно вывода текста, ввода номеров вариантов и кучи условий if-then-else. Это интересно как упражнение в программировании, но не очень полезно остальным.

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

Ну так, просто размышления на тему. Я недавно поменял область деятельности и заделался python-разраотчиком. На работе то я пишу код как положено, а это просто pet-project для себя.

Ну, собстенно наброски я сюда склыдваю:
https://github.com/IgorZyktin/Essence

Неактивен

0    2    #5
19.05.2019 15:03

blinovvi
Участник (+562, -114)
Зарегистрирован: 16.11.2014
Сообщений: 207
Вебсайт

blinovvi.blogspot.com

Re: Подскажите базовые технологии для текстовой игры

Nicord написал:

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

В случае сложной логики неплохо иметь многомерные массивы и циклы, а также возможность каким-либо образом писать процедуры и функции (в виде "технических" параграфов, как это делается в большинстве движков сейчас или в виде натуральных функций, это уже зависит от целевой аудитории разработки движка). Для интересной геймплейной подачи через текст неплохо иметь возможности вроде появляющегося текста, "перемотки" вебстраницы на нужное место, всплывающих подсказок: все эти мелочи позволяют сделать из просто набора команд игру со своей атмосферой, отличающейся от остальных. Плюс для веба полезно иметь возможность настраивать стили css, вставлять изображения, ссылки.

Вообще можно посмотреть тот же twine, например.

А ещё, наверное, полезно определиться, зачем это делать -- и отталкиваться именно от этого: какая цель, какая целевая аудитория, какие у неё запросы, каким видится конечный продукт.

Отредактировано blinovvi (19.05.2019 15:04)

Неактивен

0    0    #6
19.05.2019 15:15

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Re: Подскажите базовые технологии для текстовой игры

Основная мысль, лежащая под всем этим делом, помимо собственно практики, это старое аниме из 80-х под названием Bubblegum crisis. Мне давно хотелось сделать игру на его тему, но после нескольких попыток я понял, что никаких других вариантов кроме текстовых я реализовать не смогу. По нему есть куча фанфиков, но 99,9% из них на английском языке. Я подумывал прикрутить возможность автоматического перевода через google-translate. Т.е. в самом базовом варианте это пролистывалка страниц с автоматическим переводом текста. В качестве первичного варианта я просто возьму фанфик и нарежу его на отдельные страницы. Будет только кнопка "Далее" smile.

У RenPy кстати классный формат документа. Я сначала пытался такой сделать, но устал и перешёл на xml. Сейчас подумал что зря, надо добить эту тему, так гораздо удобнее.

Неактивен

1    4    #7
19.05.2019 19:02

Irremann
Участник (+327, -192)
Зарегистрирован: 24.11.2012
Сообщений: 222

Re: Подскажите базовые технологии для текстовой игры

Lua говорят норм и движков много под него smile.

Неактивен

0    2    #8
20.05.2019 09:47

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Re: Подскажите базовые технологии для текстовой игры

Мне не нужен готовый движок, мне свой нужен.

Неактивен

0    0    #9
02.06.2019 15:11

qwerty
Участник (+225, -105)
Зарегистрирован: 21.12.2005
Сообщений: 194

Re: Подскажите базовые технологии для текстовой игры

Nicord написал:

Никогда особо не увлекался текстовыми играми, но решил попробовать.

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

Основные идеи:
1) Возможность свободно переключаться между локациями по клику мышки.
2) Отсутствие текстового парсера (все варианты ответов заранее прописаны).

Я так понимаю, что требуется базовая память на переменные (взял/не взял предмет, посетил/не посетил место), а также возможность их менять.

Может ещё какие то техники стоит предусмотреть?

P.S. Пишу на python, работа среды предполагается в вебе.

Во-первых, хорошо бы сразу определиться с основным моментом:

A) будет ли это CYOA, вроде "найди лучшую из 20 концовок" где игрок видит текст + варианты выбора, кликает на один из вариантов и получает следующую порцию текста + варианты выбора. Продвинутые CYOA-игры, могут включать собирание и использование предметов, боёвку, учёт и изменение каких-то характеристик игрока, скрытые триггеры и прочее.

Б) будет ли это заданный автором мир, в котором игрок может бродить, собирать предметы и взаимодействовать с персонажами и объектами мира?


1.A) CYOA похожа на постепенно раскрывающийся рассказ и переключение между локациями в ней, как правило, неуместно. Хороший пример возможностей CYOA можно увидеть благодаря редактору Митрил. Посмотрите его, там есть обучалка. Ознакомитесь с возможностями.

1.Б) Уместность свободного переключения между локациями зависит от конкретной игры. Например, почему бы игроку не идти последовательно из локации А в локацию Б, потенциально имея возможность столкнуться по дороге с чем-то новым? Или наоборот - что если, по сюжету, в какой-то момент в локации завёлся дракон, мимо которого теперь нельзя пройти? Тем не менее, для каких-то игр эта идея может оказаться годной.

2) Нужно будет прописывать "условные варианты", зависящие от наличия предметов, триггеров и прочая. Надо продумать, как будет выглядеть использование предмета. Допустим, у героя есть еда - как дать понять, в каких случаях её можно есть? А если есть фонарик - как дать понять, в каких случаях его можно включать/выключать? Как вообще будет выглядеть собирание/выкладывание/использование предметов.

И если у вас вариант Б, то неплохо было бы иметь возможность в любой момент осмотреть любой предмет, который герой тащит с собой. И, возможно, применить.

3) Собственно, "выделить переменные и их менять" - это всё, что требуется для текстовой не парсерной игры практически любой сложности))

Неактивен

0    0    #10
03.06.2019 18:06

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Re: Подскажите базовые технологии для текстовой игры

A) будет ли это CYOA, вроде "найди лучшую из 20 концовок" где игрок видит текст + варианты выбора, кликает на один из вариантов и получает следующую порцию текста + варианты выбора. Продвинутые CYOA-игры, могут включать собирание и использование предметов, боёвку, учёт и изменение каких-то характеристик игрока, скрытые триггеры и прочее.

Нечто среднее. Я не планирую делать строго кишку сюжета, т.к. сюжета как такового нет у меня. Просто хочу возможность бродить по локациям. Но большого количества инвертаря тоже не планирую. Основа для меня это старый квест Blade Runner. Можно свободно ходить по локациям, хотя предметов игре всего несколько штук.

Пока только создаётся впечатление, что без графического редактора узлов тяжко управлять графом локаций. Сильно много надо в голове держать.

Неактивен

0    0    #11
21.06.2019 17:36

Nicord
Участник (+2, -2)
Зарегистрирован: 18.05.2019
Сообщений: 6

Re: Подскажите базовые технологии для текстовой игры

Работа продвигается медленно. Собрал вот бинарник для пробы, можно немного погонять.
https://yadi.sk/d/8f32pjfW-rjl3w

Неактивен

Powered by PunBB
© copyright 2001–2019 iFiction.Ru