RU

Открытый мир в текстовой игре

Ajenta Moderator 05.02.2014 15:34 66 comments 34804 views

KOLANICH:


Попробуйте написать игру с открытым миром и на своей шкуре ощутите отсутствие ООП.

А теперь очень любопытно, как вы вообще представляете себе открытый мир в текстовой игре.

Ajenta, ответил в личке. Можно было запилить отдельную тему, но зачем?

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

Хм. Как же странно это слышать.
Открытый мир - всего-лишь вид структуры уровней\локаций, позволяющий игроку свободно перемещаться в игровом мире. То бишь его не под ручку ведут из одной локации в другую, а дают спокойнейше идти куда ему взбредет.
Тут и обсуждать толком нечего. Вопрос гейм-дизайна, но не программирования. В “Куртуазная баллада”, например, открытый мир и язык QSP никак этому ну никак не мешает.

Другое дело процедурная генерация в открытом мире. Уже не так просто. Но только из-за того, что речь о текстовых играх, а не о 2д или 3д пространстве. Опять вопрос скорее гейм-дизайна.

Выделил в отдельную тему.

А что вообще подразумевается под открытым миром в текстовой игре? Доступность всех ее локаций для посещения изначально? Если место действия игры замок из 20 комнат в любую из которых игрок может беспрепятственно попасть с момента начала игры - то это игра с открытым миром? Или игра должна быть еще и большой что бы быть таковой? То же, но с замком из 100 комнат - открытый мир?

Такое ощущение, что часть людей в этой теме считает, что для текстовых и не текстовых игр критерии открытости разные. А ведь на открытость игрового мира способ его представления не влияет.
Лично мне больше нравится термин “песочница” (sandbox), чем “открытый мир”. И критерий довольно простой - если игрок может полностью забить на продвижение по основному сюжету и ему есть, чем при этом заняться, то это оно.

В таком случае открытый мир несовместим с жанром текстового квеста в принципе, так как в них сюжет - это краеугольный камень. Не могу представить гибрид песочницы и квеста. Если только квест - парсерный… тогда что-то еще может быть. Но играбельность (да и смысл) такой игры вызывают сильные сомнения. В любом случае, для песочницы нужна куча рандома, вариативность. Затраты времени на создание такой игры будут неизмеримо выше, а вот будет ли от этого отдача… Скорее всего, нет. Я сам подумал было над тем чтобы сделать рпг-игру на qsp (отчасти подходящую под определение песочницы), но после того как начал и прикинул сколько времени для того чтобы сделать что-то стоящее (для моей идеи полгода-год - было бы крайне оптимистичным сроком), отказался от этой затеи. Лучше уж делать что-нибудь простое и прямое как палка). Еще бы идею хорошую где-нибудь отыскать…

newsash,
Stag_Beetle,
всё уже придумано до вас :)

Глупости какие. Прочитайте хоть это - клац.
Не нужно думать что в 2д или 3д делать игру с открытым миром легче. Там тоже нельзя щелкнуть пальцами чтобы родился самобытный мир который интересно исследовать.
Как я уже сказал, “Открытый мир” это тип организации уровней\локаций. Игрока не ведут под ручку, а дают свободно выбирать что ему делать. Одной из целей или главной целью является исследовать окружающий мир. Приведенный Вами пример для гиперболизации про замок неудачный. И из замка можно сделать открытый мир. Напичкать его таким количеством разнообразия… Ого-го! Целый замковый мир! Магия! Катакомбы! Забей на сюжет и иди исследовать это чудо!
Текстовые игры не все же как одна про какой-то замок в 20 комнат, где мы попадаем из одной в другую только найдя ключ от двери. Который в подвешенном ящике, который спустится нажми мы на три рычага в правильной очередности.

В “Куртуазная баллада” тех замков десяток. И не на них игра сосредоточена. В этой игре Вы можете спокойно перемещаться и исследовать мир. При желании пойти в таверну или в магазин. В каждом городе есть. Заглянуть на турнир и все такое. Можно два реальных дня пробегать в игре забив на “сюжет”. Настоящий открытый мир. И это текстовая игра. А “Фобосдэй”? А “Зона”? Какой-то там симулятор жизни дракона? Может даже “Стальная крыса”? Текстовые игры с открытым миром бывают. Они есть. И отдача в них высокая сопоставимая с вложенными человекочасами.
Так почему же по Вашему понятие открытый мир так уж не совместимо с текстовой игры?

Потому что Вы путаетесь в понятиях и сильно загоняетесь в рамки условностей. “Думать в пределах коробки”.
А каким образом Вы дошли до жизни такой - я не знаю :D
Ну, а самое главное. На самом деле ничего особенного в концепции “Открытый мир” нет. Сотни таких игр. Но не все же из них культовые, только из факта что в них мир открытый? Да нет конечно. Хорошо продуманная игра и без открытого мира может быть гораздо и гораздо лучше любой с открытым миром. Главное делать с любовью C:
Люблю я песочницы. Люблю игры с открытым миром. А еще больше люблю разработчиков, которые немного понимают в гейм-дизайне и умеют направить свои навыки как им угодно под любым углом :)

Кхем-кхем… С любовью Сир.
P.S.: Не подумайте что говорю от балды. Это опыт. Знаю что говорю. Может тут меня никто не знает, но не нужно думать что я вчера открыл для себя гейм девелоп. Уже лет восемь моим хобби является эксперименты с разработкой компьютерных игр. И вообще. Я бородат. Бородатым нужно верить. Дорогу бородатым.
P.P.S.: Спасибо что тему отдельную запилили, товарищ Nex.

Интересно. Спасибо за ссылку на Википедию, теперь я понял, о чём идёт речь. Действительно, “открытый мир” есть и в Fallout, и в “Куртуазной балладе”.

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

Следствие - наличие или отсутствие сюжета для игр “открытого мира” второстепенно. Хотя в бессюжетных играх “открытый мир” встречается чаще.

Aleks Versus Moderator 06.02.2014 07:31 (12 years ago)

Stag_Beetle:

полгода-год - было бы крайне оптимистичным сроком

пять лет - для меня крайне оптимистичный срок.

Сириус безусловно прав.

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

Если же брать за “открытость” именно возможность пойти куда угодно… Не знаю, тут начинают возникать сложности с ростом уровней монстров и тому подобными рпг вещами.

Ajenta,
не бывает “безразмерных” локаций. Если она не заканчивается, значит она просто зациклена. А зацикленную можно и в текстовой игре сделать.

Ajenta, Вы вот зачем, открытость мира измеряете количеством локаций?). Давайте измерять открытость мира свободами игрока и самобытностью мира который игрок может исследовать?) Так будет правильнее. Большой мир и много пространства может быть и в игре закрытого плана. Просто там, нас проведут по локам за ручку.
Конкретный пример попробую привести. Ваша замечательная игра “Цветохимия”. Поиграл. Очень классно, спасибо что Вы есть и делаете такие игры… Но, я ж вот к чему. И Цветохимию, если бы хотелось - можно было бы сделать с открытым миром. А чтобы сравнится с скайримом, Цветохимии мешает не то что она текстовая… А то что её делала не компания Bethesda состоящия из группы лиц обладающих бюджетом, мотивацией, идеей и уже готовой&придуманной вселенной..
А делала милая и замечательная Вы.

Это участь инди-разработчика. Разработчикус-независимус. Нам не тягаться в мощностях с корпорациями.
Зато в оригинальности - запросто. Вечно бабахаем всякие майнкрафты, дварф фортрессы, Цветохимии и что там еще… Много инди-игр.
Так что не нужно гнаться за скайримом, нужно его обгонять ^_^
Тем более он мне быстро надоел. Глупый скайрим. Глупый обливион. Дорогу морроувинду.

Кстати, у скайрима карта не то чтобы безразмерная. Вполне себе размерная. И не очень то и большая, вон, в даггерфоле карта здоровая какая, хе-хе. Все и не обойдешь.

Edited at 06.02.2014 10:28 (12 years ago)

О том, почему на куспе сделать нормальный открытый мир не получится.
В открытом мире должно быть огромное число взаимодействующих сущностей, причём с каждой сущностью одного типа можно взаимодействовать определённым образом.
Например “куст”, “ветка”, “куст травы”, “пси-собака”, “карусель”, “стол, просто стол”, “стол с ящиком”, “деревянный стол”, “земля-пещера”, “земля-луг”, “эльф 80 уровня”, “некромант”, “локация”, “квест”, “стадия квеста”, “условие” и т д.
Всё это напрашивает объектно-ориентированность или хотя бы наличие структур.
Ни того, ни другого в куспе нет, что вынуждает сильно извращаться
На самом деле тут даже функций и циклов нормальных нет.

Глянем, например, исходник, Зоны+
локация talk1

if quest[0]=5:
 act '- Я достал амброзию, целый ящик':
  quest[0]=6
  del act '- Я достал амброзию, целый ящик'
  *clr & 'Бармен' & $msg='"Хорошая работа, сталкер. Правда, расценки изменились. Понимаешь... Я только что услышал, что Федька, лаборант наш, совсем того, концы отдал. Говорят, белым весь от этой амброзии стал. Мхом покрылся, говорят. Короче, я даю тебе за этот ящик 400 монет. 500? Будь по-твоему, хоть эта дрянь того не стоит. Вот. Что дальше, выпьешь на дорожку?"'
  gp[pt]=gp[pt]+500
  exp[pt]=exp[pt]+100
  gs 'printTextMain'
 end
end
if players=1 and quest[0]=0:
 act '- Пиво у тебя Зоной отдает':
  del act '- Пиво у тебя Зоной отдает'
  quest[0]=1
  *clr & 'Бармен' & $msg='"А ты что думал? Но это еще что, один парень как-то принес такую штуку, он "амброзией" ее назвал. <>"'
  gs 'printTextMain'
  $journote[6]='Задание - расспросить лаборанта Федьку про "амброзию"'
 end
if quest[1]=0 and quest[0]<=4:
 act '- Есть работа?':
  del act $selact
  quest[1]=1
  *clr & 'Бармен' & $msg='"А, настоящую работу ищешь? Даже и не знаю. О! Слушай, заходил сюда недавно один взлахмоченный ученый, сталкера искал для дела. Как же его там звали?.. Знаешь, а ты спроси моего знакомого, лаборанта Федьку."'
  gs 'printTextMain'
  $journote[10]='Задание - поговорить с Федькой'
 end
end
end

локация institut.

if quest[0]=3:
 act 'Отыскать Федьку':
  del act 'Отыскать Федьку'
  quest[0]=4
  *clr & 'Федька' & $msg='"<тут реплика, убрана чтобы не спойлерить>"'
  gs 'printTextMain'
  $journote[8]='"<тут запись в журнале квестов, убрана чтобы не спойлерить>"'
 end
end
if quest[0]=1:
 act 'Отыскать Федьку':
  del act 'Отыскать Федьку'
  quest[0]=2
  *clr & 'Федька' & $msg='"<тут реплика, убрана чтобы не спойлерить>"'
  gs 'printTextMain'
  $journote[7]='<тут запись в журнале квестов, убрана чтобы не спойлерить>'
 end
end

Что здесь не так? Да всё не так!
Это должно было выглядеть как (опишу на яваскрипте)

world.addQuest(new Quest({
	name : "Амброзия",
	init : function (quest) {
		quest.barman = world.getNpc("Бармэн");
		var barmanChat=new Chat({
			pivo:new Replic({
				text : "Пиво у тебя зоной отдаёт",
				cb : function(char){
					quest.barman.say('А ты что думал? Но это еще что, один парень как-то принес такую штуку, он "амброзией" ее назвал.....');
					quest.activateStage("talkToFedya");
				}
			}),
		});
		barmanChat.addChat(chat);
		......
		quest.barman.addChat(barmanChat);
		quest.fedya = new NPCs.MIFCEmploee({
			name : "Федька",
			.....,
			onKill:function(){quest.fail("Федьку убили");}
		});
		world.addNpc(quest.fedya);
	},
	stages : {
		talkToFedya : new QuestStage({
			title : 'расспросить лаборанта Федьку про "амброзию"',
			descr : "Бармен сказал, что Федька обладает важной информацией.",
			onActivate : function(stage){
				stage.chat=new Chat({
					chuvak:new Replic({
						text:'Привет. Слышал чтоты знаешь, где достать амброзию...',
						cb:function(char){
							var me=world.getMe();
							if(me.reputation>50){
								//послать за амброзией
								stage.quest.activateStage("acquireAmbrosia");
							}else{
								//послать подальше
							}
						}
					});
				});
				stage.quest.fedya.addChat(stage.chat);
			},
			onDeactivate : function(stage){
				stage.quest.fedya.removeChat(stage.chat);
			}
.....
		});
	}
}));

что это даёт?
1 квест ничего не знает о МИЭВК (например в баре с федькой тоже можно поговорить)
2 квест ничего не знает о федьке (федьку можно заменить на ваську)
3 федька обладает всем свойствами непися
4 федьку можно убить
В куспе это тоже можно всё реализовать, но это чрезвычайно осложнится тем, что
1 нет структур - придётся обходиться массивами и извращаться с dynamic и строковыми функциями
2 массивы одномерные
3 нет ассоциативных массивов => придётся помнить числовые индексы
4 нет нормальных функций, замыканий, областей видимости
и т д

Вывод - qsp специально был сделан непригодным для сложных игр. Как в твиттере ограничение на 140 символов.

Log in or Register to post comments.