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

Как я делал web-INSTEAD
Часть I

Что из этого вышло
   В настоящий момент веб-инстед представляет собой вполне зрелую систему, неплохо проигрывающую достаточно широкий класс инстед-игр. Конечно, в аркадные, динамические игры, наподобие Miner Bold или Lode runner, играть не получится, но ведь они и не относятся к интерактивной литературе, не правда ли? Веб-инстед на ставит перед собой задачу полного, детального копирования движка INSTEAD — это вряд ли возможно, да и не имеет большого смысла. Вместо этого брались и запускались конкретные игры. Причем, как и в случае с движком-прародителем, новый функционал добавлялся в движок постепенно, по мере необходимости для той или иной игры.
   Благодаря значительному количеству уже адаптированных игр, движок развился настолько, что как правило, обычные игры, не использующие какие-то особые технические хитрости, запускаются в вебе сразу, как есть, не требуя дополнительной доработки, кроме оформления визуальной темы игры (это обычный css-файл стиля). Однако, все же попадаются и игры, которые не могут быть запущены на веб-инстеде без некоторого изменения их кода. В качестве примера можно привести игры, которые используют часто срабатывающий таймер (скажем, каждую секунду) для управления фоновым процессом проигрывания музыки.
   Или возьмем метапарсер. Это одно из последних достижений веб-инстеда, ставшее возможным благодаря тому, что @peter доработал оригинальный модуль (мы видим процесс обратного влияния веб-движка на своего прародителя — INSTEAD). И хотя игра «Клара — расхитительница варенья», работающая на метапарсере, уже перенесена в веб, я вообще решил отказался от «парсерного» стиля ввода через командную строку, напротив, используя возможность метапарсера подсказывать допустимые для ввода слова, фактически превратив тем самым игру в «менюшную», которой можно управлять выбирая нужные действия мышкой.
А вот картинка, как это выглядит

Материк 2.0

Перевод игры «Материк» достиг, наконец, стадии беты. На настоящий момент игра полностью переведена, проходима, но, возможно, частично не доделана. Была обновлена также и русская версия. Если кто-то может помочь с тестированием (особенно, англоязычного варианта), то ваше имя навеки останется в анналах русской интерактивной литературы.

Собственно, ссылка:
instead-games.ru/game.php?ID=90

Ladies and gentlemen, please test:
instead-games.ru/game.php?ID=90
Читать дальше

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

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

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

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

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

Конкурс видео-прохождений книг-игр

Уважаемой Аджентой навеяно! ;) Новый конкурс для книго-игроков! Мы ждём от вас видео на котором запечатлён игровой процесс в классическую книгу-игру (т.е. либо чтение pdf/word/txt… с экрана компьютера, либо чтение с бумаги).

Книга-игра может быть любой из опубликованных не ранее 2009года и содержащая не менее 75 параграфов. Допускаются видео-прохождения иностранных книг-игр, если игрок озвучивает хотя бы общий смысл параграфов. Проходить до победной концовки не обязательно, но слишком короткие прохождения рискуют не пройти как «недоделки». Видео можно обрабатывать (музыка, эффекты, всё что угодно) на свой вкус и цвет.
Читать дальше

Правила размещения материалов на ifHub.ru

  • ifHub
Начал оформлять страничку «О нас»: https://ifhub.club/page/about/

Если есть пожелания/уточнения — пишите!
P.S.
Также сделал иконки для типов топика: игра и движок, чтобы они отличались от обычных топиков.
Читать дальше

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

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

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

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

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

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

Нужны ли блоги по платформам?

  • ifHub
Друзья, возник вопрос по поводу необходимости создания блогов по платформам.

Сейчас у нас нет таких блогов, и предполагается, что контент разделяется тегами. Скажем, я пишу урок по INSTEAD в разработку, но помечаю топик тегом INSTEAD.

Другой вариант, когда мы создаем блоги: INSTEAD, AXMA, FireURQ по мере необходимости и пишем туда статьи относящиеся сугубо к платформе.

У обоих подходов есть — и +. Голосуем и высказываемся.
Читать дальше

Динамически генерируемый лабиринт на 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 генерируемой комнаты. Отключение путей при необходимости и прочее. В общем это что-то генерируемого открытого мира без ограничений. Можно написать что-нибудь рогаликопобное. Я пока думаю над стратегией в фентезийном стиле. В общем покажу что-нибудь через полгодика. Может раньше.
Читать дальше