LINUX.ORG.RU

Выбор языка программирования для разработки текстовых игр

 


0

1

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

Есть две основные цели:


1. Писать (составлять, разрабатывать — не знаю, какой термин правильнее) текстовые и аудио игры.
2. Писать и оформлять электронные книги с возможностью перемещения между их частями (словами, главами, страницами и т.д.) в формате epub.

Образование далеко не «информатика и вычислительная техника», но некоторые силы в себе, всё же, нахожу..

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

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

Словом, прошу помочь, посоветовать, покритиковать )
Спасибо

Подскажите, правильно ли будет писать игры под Instead и учить для этого Lua.

есть текстовые игры, ориентированные на меню (движки Instead, QSP, RenPy :-)

обзор на хабре

и ориентированные на парсер, текстовый ввод. здесь наиболее популярны Inform6, Inform7, TADS и несколько самопальных

рогалик на Inform 7 ещё один ещё

и т.п.

anonymous
()
Ответ на: комментарий от anonymous

glknode — проигрыватель .glorb файлов (которые умеет делать Inform7) в виде node.js сервера.

можно скриптовать команды в текстовую игру через это вот

anonymous
()
Ответ на: комментарий от Sasazuka

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

Infocom-овский лозунг, с плакатика :-)

Присоединяюсь к этим людям и считаю, что развлечение должно иметь созидательные цели и соответствующие средства.

человекопонятный язык Inform 7, например :-)

ну и реализация Glk/glorb VM через браузер, для недостаточно олдскульных младо хипстеров :)

пределов воображению в Inform 7 истинно нет :) — всё, что можно придумать, можно запрограммировать в Infrom rulebooks и расширениях

например, lines of conversation.i7x. расширение, которое позволяет управлять внешними программами (пример игры в шахматы через консольный gnuchess)

а по сути, чем угодно.

можно вытащить в веб через parchment , glknode или например сделать irc-бота.

anonymous
()

Есть еще TWINE/Sugarcube (HTML), RAGS со своим форматом (win-only, емнип), Quest Soft Player (есть на винде, линуксе и ведроиде)

pekmop1024 ★★★★★
()
Ответ на: комментарий от Sasazuka

Тут надо определяться со значением слова «маргинально».

ты рисовать хочешь и менюшками обвешаться, как в INSTEAD, QSP, мангу и визуальные новеллы в RenPy? :)

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

или именно текстовый парсер, как в Zork, Infocom-овских играх и Inform?

например, расширение Planner например — можно ботов NPC заболтать. они сами умеют ставить себе цели, планировать, изменяют отношение к тебе в зависимости от твоих действий.

графика, рогалики

Inform 7 REPL здесь

в общем, вопрос: у тебя лучше получается рисовать или писать сюжетные тексты?

anonymous
()
Ответ на: комментарий от saahriktu

Текстовые игры надо писать на C + ncurses.

не совсем. например, есть виртуальная машина Glk (*.glorb), а раньше была актуальной Zork VM (*.z5, *.z8)

там фактически описан API текстовых игр, с гиперссылками, управлением размерами консоли, нескольких фреймов, с расширениями для поддержки ресурсов и графики

транслироваться в Glk можно из нескольких языков: Inform 6 который ООП, Inform 7 который NLP (человекопонятный псевдоестественный язык), TADS и т.п.

реализации Glk есть разные: команднострочные, консольные CUI, в браузере через JavaScript и т.п.

подозреваю, можно прикрутить IRC-бота, или через Gopher сервер (тут интересно откопать что-то вроде Gopher VR с Gopher+ сервером, с OpenGL)

anonymous
()
Ответ на: комментарий от anonymous

MUD-оподобное

mudlet — MUD клиент, evennia — младохипстерское МУДоподобное на Python

anonymous
()
Ответ на: комментарий от anonymous

если вроде книг с ветвлением сюжета (такие и бумажные были),

«книги-игры», CYOA, BYOA

то хватит гипертекста (html+css) плюс скрипты генераторы случайных чисел а-ля «кости» для боёвки и, может быть, ещё случайного выбора событий.

не хватит. почитай например про GURPS или D20 или DnD 3.5 и т.п.

там полноценная ролевая система.

простого гипертекста не хватит, нужен какой-то rulebook.

хотя бы простенький, как в Inform-е

anonymous
()
Ответ на: комментарий от Sasazuka

Какой язык изучать

русский литературный, кроме шуток. диздок записать.

вот возьми и простым понятным языком запиши себе историю: сюжет, завязку-напряжение-развязку (время) и локации (место), (персонажи), (мотивация), (противоречия)

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

anonymous
()
Ответ на: комментарий от saahriktu

LИSP как текстовая адвентюра

Lists and Lists by Andrew Plotkin --- текстовая адвентюра на Inform 6 (который ещё не человекопонятный, старый) в которой реализован интерпретатор Scheme, и обучалка Scheme

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

поиграть в браузере (JavaScript должен быть включён)

1996-ой год, вот так-то.

anonymous
()
Ответ на: комментарий от saahriktu

IRC-ботоводство

на самом деле очень простая штука.

описание протокола IRC + бот на Perl

бот на питоне

... теперь прикручиваем CheapGlk, либо берём glknode + node.js + curl, и пишем на верном Inform 7 человекопонятный движок адвентюры с сюжетом

обмазываемся расширением 'Lines Of Conversation'.i7x чтобы скармливать ввод пользователя в консольную утилиту, брать выхлоп и его выводить в игрушку

ещё берём Planner и т.п. для пролог-подобной логики

... потом обмазываемся каким-то OpenGL-движком, где боты заходят сразу на IRC-канал (типо как в Quake) и получают с него команды

команды выдаёт IRC-бот через Inform7 движок.

и пишем свой GopherVR MMORPGFPS на своём тёплом ламповом языке написания Zork-а, на естественном человекопонятном языке.

anonymous
()
Ответ на: комментарий от Sasazuka

Infocom paper, presentation

«Лучшая компьютерная графика — это человеческое воображение».

история фирмы Infocom, разработчика Zork-а и 10500 других текстовых адвентюр

публикация презентация (11 страница: плакатик «Лучшая компьютерная графика — это человеческое воображение» )

anonymous
()
Ответ на: комментарий от saahriktu

Xanadu 3D browser

кстати, зацени браузер векторного гипертекстового фидонета Xanadu изначального канонiчного от Теда Нельсона

есть два варианта: Python + C++ + OpenGL, старый

и новый — в браузере.

.... туда можно прикрутить Inform 7, Literate Programming + Emacsy (уже есть: Guile Scheme + C + OpenGL)

и написать свою текстовую, даже круче того: кибертекстовую игрушку, адвентюру с OpenGL движком и GopherVR с профурсетками

и разрабатывать далее инкрементально, в такой вот среде типа Emacsy

anonymous
()

Образование далеко не «информатика и вычислительная техника»

У адекватного разработчика игр образование не системного администратора, тут всё правильно.

peregrine ★★★★★
()
Ответ на: комментарий от saahriktu

тоссер, мейлер и голдеда, имхо, вполне должно быть возможно написать на каком-нибудь человекопонятном почти естественном недоязычке Inform 7 под Glk/Glulxe VM .

anonymous
()

Мудрость

Если хочешь сделать игру, надо не играться с движками, а делать игру. Иначе наиграешься с движками и не сделаешь игру.

anonymous
()
Ответ на: комментарий от saahriktu

кибертекст и "грамотное программирование"

ещё такая вот мысля посетила по поводу кибертекста.

векторного гипертекстового Xanadu, например.

у Xanadu в его текущем состоянии есть один фатальный недостаток: нет толковой среды для авторинга. с другой стороны, среда для «грамотного программирования» (Literate Programming), или вот текстовых игр типа Inform 7 (написанного, как LitProg надстройка над Inform 6, см. доступные исходники на офф.сайте)

-- это оно самое и есть.

так что, можно совместить, чтобы недостатки каждого из них и друг друга закрылись достоинствами другого друга.

такая вот идея, про гиперссылки.

в Xanadu ссылки хранятся отдельно от текста. как пример, смотрим xanadu viewer в браузере, копипастим в окно 'EDL' Edit Decision List отсюда, с комментариями, или отсюда

открывается гипертекст со ссылками. как он устроен? разбирается этот EDL, там есть две секции: span, с гиперссылками (хранятся отдельно от текста, как оверлеи; а не внутри, как в XHTML) и xanalink.

сам гипертекст представляет из себя набор оверлеев, span. есть ссылки разных типов: трансклюзии (включения/цитирования), ссылка перехода, скриптовая ссылка (вызов функции на каком-то языке программирования), произвольный тип ссылок.

движок браузера 'viewer' гипертекстового Xanadu накладывает оверлеи и вычисляет гипертекст в реальном времени, компонуя из оверлеев различного типа.

исходный текст при этом не меняется. то есть, гиперссылки хранятся как аннотации к static write-only контенту, опубликованному в какой-то версии.

в Xanadu изначальном была нейтральность от транспортного протокола. ну почти как фидопочту можно флоппинетом таскать.

или гофером.

anonymous
()
Ответ на: кибертекст и "грамотное программирование" от anonymous

второе. берём человекопонятный сорец Vorple demo (смотрим демо в браузере)

что видим в story.ni? фактически, движок шаблонизатора:

Book 1 - Setup

The Hallway is a room. "From here there are several doorways leading to different feature demonstrations.
[ul][li][link to north]: Core features.[/li][li][link to east]: Command Prompt Control.[/li][li][link to south]: Multimedia.[/li][li][link to west]: Screen Effects.[/li][li][link to up]: Notifications.[/li][/ul]Hyperlinks are used throughout."

To say ul:
	if Vorple is supported:
		open HTML tag "ul";
	otherwise:
		say line break.
	
To say /ul:
	if Vorple is supported:
		close HTML tag;
	otherwise:
		say paragraph break.

то есть, основная мысль: EDL в стиле Xanadu (оверлеев span и гиперссылки с трансклюзией) вполне себе можно генерировать таким вот кибертекстом, человекопонятным шаблонизатором.

только сделать его надо наоборот: сейчас из embedded XHTML-style разметки (considered harmful) вида 'суп тегов' нужно расплетать ('untangle' в стиле LitProg) в разные файлы, каналы, потоки текста отдельно оверлеи, отдельно xanalinks, генерируя EDL.

profit: сохраняются преимущества (мнимые) XHTML: 'текст легко писать в notepad'. просто потом натравливаем на такой метатекст парсер кибертекста, генерирующий гипертекст в отдельных потоках, в нужных форматах:

метатекст >>= кибертекст --> гипертекст

здесь всю дорогу моноиды в категории эндофункторов: и для публикации/генерации, и внутри фидобраузера, при просмотре. только там их не видно, в стиле FRP.

Xanadu-шный фидобраузер в реальном времени компонует оверлеи и xanaссылки, генерируя гипертекст как кибертекст — программным образом.

при этом исходный текст не меняется.

profit#2 от Xanadu: исходный текст не меняется. то есть, можно его хранить в каком-то Gopher-е, и потихоньку добавлять аннотации, разворачивая в многомерное гиперпространство. как GopherVR и виртуальная реальность, собственно.profit#3 от Xanadu: нейтральность от форматов и транспортных протоколов. например, про редактирование видео в Emacs-е: gneve. очевидно, это xanalinks другого типа, другая разновидность EDL.

идея Xanadu была стать расширяемым гипертекстом для всего: видео, 3D-анимации с кейфреймами, кибертекста типа ссылок в interactive fiction,irc-ботов и гипертекста универсального, в наиболее общем виде.

а в качестве транспорта вполне себе можно тот же gopher прикрутить.

или фидопочту.

profit#4 от Xanadu: если осилить мысль про ZigZag с zzCells и многомерной программируемой гиперсредой виртуальной реальности, Xanadu можно разрабатывать в Xanadu, из неё самой, метациклически.

зайчатки этой идеи видим в отладочном режиме старого браузера, на python + OpenGL.

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

потом это можно развернуть в полноценную среду разработки гипертекста.

получается некая VM, ZigZag VM. если её скрестить с Glk VM, и приправить некоторым Literate Programming для программирования, получается по формуле

'гипертекст := кибертекст(гипертекст,виртуальные_миры, пользовательские_настройки, авторские_настройки)'

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

.... далее на этом пишем фидобраузер, мейлер и тоссер.

и векторный гипертекстовый Xanadu воссияет во славу.

невозбранно достигнув желаемого.

anonymous
()
Ответ на: комментарий от anonymous

considered harmful

воистену этот ваш недовеб ниасилил Xanadu-шные permalink, которые не меняются и не пропадают после публикации.

магнето-ссылки, например. или фидопочту с FGHI.

иба ваистену.

anonymous
()

Блин, столько всего...

Адекватно могу лишь ответить, что изучаю всё предложенное и соотношу с конечной целью, а так же с идеей проекта.

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

Sasazuka
() автор топика
Ответ на: комментарий от Sasazuka

наверное, проще начать с TWINE — не сложнее, чем вики.

и далее написать несколько макетов-прототипов, проверить идею. и потом уже углубляться либо в картинки и движки на основе меню: QSP, URQ, INSTEAD и игрушку типа «Бесконечное Лето» или в олдскульный Inform и игрушку типа Zork-а, с консолькою.

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

anonymous
()
Ответ на: комментарий от anonymous

Пока по-диагонали посмотрел все ссылки про TWINE. Мне нравится. ПОнравилось, что можно упаковывать программу в html и воспроизводить где-угодно.

Разобраться подробнее пока не хватает времени.
Ты уверен, что удачнее будет делать так, как ты предложил, а не приступать сразу к Lua ?
Сейчас с грехом пополам изучаю основы программирования. Тема ваша для меня, мягко говоря, сложна. Но, блин, надо дойти до конца )) Потом — Lua и INSTEAD.
В — назовём его так — режиме отладки игру оформляю в простых .txt, связанных между собой обычными пояснениями. Ну, типа, как когда-то в книжке «Лабиринт Колдуна»

Sasazuka
() автор топика

Вот это да — мне дали звезду.
Что на ЛОРе принято делать в этом случае? ) Кому проставляться? Что наливать в стакан, чтобы бросить звезду туда и выпить залпом?

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

Sasazuka
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.