Как мне писалось о "неизбежных вещах"

Было это в далеком 2013, когда на форуме INSTEAD еще превалировали синие тона, а я использовал QWERTY. В воздухе витала праздность да леность, когда vorov2 выступил с инициативой третьего Инстедоза в лаконичном формате до 16 кБ. Кратко, без иллюстраций и на космическую тематику — как тут можно устоять? Я и не пытался.

Начало положено - можно и отдохнуть
Читать дальше

Как я делал web-INSTEAD, и что из этого вышло. Часть I

Как я делал web-INSTEAD
   Для тех, кто еще не знает, поясню, что веб-инстед — это паразитический игровой движок, который, собственно, не придумывает ничего нового, а пытается эмулировать INSTEAD, заимствуя из него все хорошее. Чем же тогда он отличается от оригинального инстеда? Разумеется, приставкой веб! Вся затея состоит в том, чтобы сделать инстед-игры доступными в интернете сразу, без скачивания и установки.
А дальше?

Клара - расхитительница варенья

Клара - расхитительница вареньяПредставляю вашему вниманию ремейк игры Николая Жарикова (2006, платформа 6 days) на INSTEAD метапарсере.

В игре использованы иллюстрации Максима Ганенко. За что ему большое человеческое спасибо! Если бы не эти иллюстрации, ремейка бы не было.

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

Игра совсем маленькая, но очень милая. Сложность невысокая, скорее всего вы сможете пройти ее за четверть часа, даже если не играете в парсерные игры.

Надеюсь, вам понравится этот ремейк!
Читать дальше

Динамически генерируемый лабиринт на INSTEAD

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

Код под спойлером
-- $Name:Нанотест$
-- $Version:0.01$
-- $Name(ru):Нанотест$
instead_version "1.8.0"

require "xact"			-- подключаем модуль xact
require "hideinv"		-- подключаем модуль hideinv
require "para"			-- догадайтесь, что мы подключили в этот раз ;)
require "dash"			-- подключаем dash
require "quotes"		-- подключаем quotes

game.codepage="UTF-8";

game.act = 'Не получается.';
game.inv = 'Хм, странная штука.';
game.use = 'Не сработает.';

global {
x = 0;
y = 0;
z = 0;
roomname = 'room0_0_0';
myrooms = {};
};

function myconstructor()
	local v = {};
	v.nam = roomname;
--в dsc выводится номер текущей комнаты, но также можно генерировать сюда любое описание.
	v.dsc = roomname;
        v.disp = 'Название';
	v.way = {vroom('Север', north), vroom('Восток', east), vroom('Юг', south), vroom('Запад', west), vroom('Вверх', up), vroom('Вниз', down)};
	v.exit = function(s, t)
		if t == north then
			y = y + 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		elseif t == east then
			x = x + 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		elseif t == south then
			y = y - 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		elseif t == west then
			x = x - 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		elseif t == up then
			z = z + 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		elseif t == down then
			z = z - 1;
			roomname = 'room'..x..'_'..y..'_'..z;
			if myrooms[roomname] then
				p 'Все гут';
			else
				myrooms[roomname] = new('myconstructor()');
			end;
			walk(myrooms[roomname]);
		end;
	end;
	return room(v);
end;

---Начало---------------------------------------------------------------------------------------------------------------

main = room {
	forcedsc = true;
	nam = 'Начало';
	enter = function()
		myrooms['room0_0_0'] = new('myconstructor()');
		start = myrooms['room0_0_0'];
		take 'stone';
	end;
--	pic = 'gfx/01.jpg';
	dsc = '';
	way = {vroom('Играть', 'start')};
};

--пачка комнат-заглушек, т.к. vroom надо ссылаться на реальную комнату.

north = room {
	nam = 'Заглушка';
};

east = room {
	nam = 'Заглушка';
};

south = room {
	nam = 'Заглушка';
};

west = room {
	nam = 'Заглушка';
};

up = room {
	nam = 'Заглушка';
};

down = room {
	nam = 'Заглушка';
};


Дальнейшие планы: генерация контента при помощи рандома в enter генерируемой комнаты. Отключение путей при необходимости и прочее. В общем это что-то генерируемого открытого мира без ограничений. Можно написать что-нибудь рогаликопобное. Я пока думаю над стратегией в фентезийном стиле. В общем покажу что-нибудь через полгодика. Может раньше.
Читать дальше

Как выбрать книгу-игру

Если хочется что-нибудь прочитать, но сложно выбрать, можно попробовать воспользоваться этой схемой :)



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

За Façade: модель диалогов в играх

Это перевод статьи Эмили Шорт от 12 мая 2009 года

В прошлом году Брент Эллисон опубликовал статью о системах построения диалогов на сайте Gamasutra. Чуть позже Джонатан Блоу открыл в своем блоге дискуссию о создании диалогов между персонажами в играх. Затем в феврале Кристиан Мажевски написал о диалогах в Emerald City Confidential, размышляя о трудностях представления казуальным игрокам диалогов со множеством решений.

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

В частности, большинство существующих анализов объединяют в одно пользовательский интерфейс (как представлены пункты диалога? как они появляются на экране? предлагается ли игроку полный текст его реплики или же ее обрезанная версия?) и лежащую в его основе модель (как игра решает, какие реплики будут доступны в следующий момент? как ограничить варианты для игрока или наоборот сделать их доступными? что влияет на то, когда и что NPC [неигровые персонажи] говорят сами по себе?)

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

Однако лежащая в основе модель значит очень много.
Читать дальше

Мир из слов: интерактивные текстовые приключения

Предлагаю вашему вниманию… нет, не совсем перевод. Это слегка сокращенный пересказ выступления Джона Ингольда “Мир из слов: интерактивные текстовые приключения” на конференции Independent Games Summit. Джон — один из создателей компании inkle, создающей текстовые приключения для мобильных платформ. В журнале IFprint было несколько статей, посвященных играм этой компании.

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

Читать дальше

Интерактивное повествование: Использование разумных систем

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

http://tinyurl.com/qjqtqcc
Читать дальше

Свободу ифхабу!

  • ifHub
Я хочу, чтобы развитие нашего ресурса было максимально открытым, поэтому я выложил текущее состояние движка на github: https://github.com/gl00my/www.ifhub

Там два коммита. 1 — й — ванильный livestreet, 2-й — текущее состояние этого livestreet, допиленного для ifhub.

Таким образом, теперь если вы хотите помочь технически, вы всегда можете это сделать! Просто шлите свои изменения. А я буду держать git репозиторий в актуальном состоянии. Конфигурация также находится там — вы можете посмотреть все текущие настройки по карме и так далее.

Естественно, паролей и базы там нет. База ифхаба также будет бекапиться (кроме моей машины и машины vvb ) еще и на машину fireton .

Таким образом, ifHub принадлежит нам всем! Сделаем его лучше! :)
Читать дальше

QSP-Compo 2015: Перекрёстки миров.

Встречайте ежегодный qsp-конкурс. :)

Полный простор для фантазии авторов — приветствуются игры в любом сеттинге или даже в смешении сеттингов.

Сроки проведения:
* Конкурсные работы принимаются до 30 апреля 2015 года (включительно).
* Правки к конкурсным работам принимаются так же до 30 апреля 2015 года (включительно).
* Публикация игр – 1-3 мая 2015 года.
(время Московское)

Члены жюри в этом году:
Серый Волк, Byte, Newsash, Nex, Fireton.

Все конкурсные работы присылайте на (ajenta [собака] qsp.su).

Полные правила конкурса доступны здесь — Правила

Призовой фонд пока не утверждён. Ищутся спонсоры!
Если вы настолько добры и хотите оказать нам честь стать спонсором конкурса, пишите мне в личку или же по адресу, обозначенному выше. :)

На конкурс принимаются только игры написанные на платформе qsp. Но, даже если вы никогда на ней не писали, может быть пришло время попробовать? :)

Всем удачи и вдохновения!
Читать дальше