четверг, 29 сентября 2011 г.

Parallel rewards

Аддиктивность

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

Экспериментируя и наблюдая, как эти награды работают в играх, я отметил для себя, что случайные награды – очень цепкие и при этом ими очень просто научиться пользоваться в игровом дизайне. А вот параллельные награды – это более комплексный тип аддиктивности. Возможно из-за этого игры с ними являются более глубокими.

Исследуя дальше, я разложил параллельные награды на базовые кусочки, хорошо разобрался в них и в результате основал баланс боевой механики в Collapse: Ярость на этом типе аддиктивности.

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


 

Параллельные линейные награды

Это система, при которой к одному игровому действию привязано несколько разных типов наград с разной длительностью. Формула: награда + ожидание награды.
 
Поясню на примере. Есть игровое действие - выстрел.
  • Игрок стреляет в стену - ничего интересного не происходит. За выстрел в стену награды нет.
  • Игрок стреляет в противника, и противник умирает. Это награда, ведь тем самым игрок приближается к прохождению уровня, уменьшает количество препятствий. (Режим подкрепления с постоянным соотношением)
  • Теперь пусть за каждого убитого врага главный персонаж получает опыт - это уже добавляет интерес. Ведь одним действием игрок не только уменьшает количество препятствий, но и приближает момент получения классной награды - нового уровня.  (Модифицированный режим подкрепления с постоянным соотношением)
  • А теперь добавим врагам 5% вероятность выпадения чего-то приятного: аптечку, патроны, броню, энергию и т.д. Убивать становится еще интереснее.  (Режим подкрепления с вариативным соотношением)
  • Увеличим вероятность выпадения бонуса за хедшот до 20%. Величина (или частота выпадения) награды теперь также зависит и от мастерства игрока. Здесь мы разделяем игроков на тех, кто готов напрячься, но получить награду и на тех, кто просто хочет пройти игру и посмотреть сюжет или просто не хочет напрягаться.
  • Добавим разнообразия. Десять хедшотов подряд дают игроку возможность использовать управляемую ракету. Становится еще веселее.
  • Напоследок, следуя веянию времени, добавим бронзовое достижение за 1000 убийств, серебряное - за 2000 и золотое - за 3000.

За попадание по противнику игрок получает награду. А уже от того, как игрок стреляет, зависит тип и величина награды. И если до этого стрельба была скучной, то теперь она может стать  веселее. Все, что мы сделали - это "навесили" на нее несколько разных типов наград и разбили их по времени.

Параллельные линейные награды я еще называю наградами за одинаковые действия. Они обычно используются для прокачки какой-то игровой возможности. Также их можно использовать и для того, чтобы поощрять игрока делать определенные действия. Именно такой подход я использовал в Collapse: Ярость для того, чтобы игроки не боялись использовать ближний бой.

Вспомните, как приятно, когда в РПГ (из современных, например, серия The Elder Scrolls) те навыки, которыми вы пользуетесь, параллельно прокачиваются. Вы своими действиями уже получаете какой-то результат. Например, убили врага мечом. Но при этом осознаете, что навык пользования мечом прокачивается. В Borderlands таким образом прокачивались навыки пользования разными типами огнестрельного оружия. Нередко во время очередной перестрелки мысль о том, что оружие прокачивается, греет не устающую от гринда геймерскую душечку.

Читать дальше: Parallel rewards

понедельник, 26 сентября 2011 г.

Что заставляет игроков переигрывать игры по несколько раз

Недавно меня спросили: “Есть ли у меня забавные игрушки с высокой реиграбельностью?” Немного подумав, я понял, что почти ничего не знаю о том, как сделать игру, в которую игроки будут возвращаться снова и снова. Следующие несколько недель я рыскал по интернету в поисках всего по заданной теме. Полученная информация вылилась в доклад для GameDevSat в Днепропетровске, который проходил 24.09.11.

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

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

Читать дальше: Что заставляет игроков переигрывать игры по несколько раз

четверг, 15 сентября 2011 г.

Пьеса «Разработка многопользовательской сетевой игры.» Часть 3: Клиент-серверное взаимодействие



Часть первая: Архитектура
Часть вторая: Протокол

С третьей частью я немного задержался. Но как говорится лучше поздно чем никогда…

Итак, продолжаем разговор.

В третьей части нашей постановки мы реализуем протокол, напишем сервер и клиент которые будут взаимодействрвать по сети. И (ОМГ!) танки будут ездить!
Под катом то, что вы давно хотели, но боялись спросить…

Пьеса «Разработка многопользовательской сетевой игры.» Часть 3: Клиент-серверное взаимодействие

Уроки по Alternativa3D для новичков

На вики опубликованы новые уроки:

Данные уроки разработаны для тех, кто мало знаком с миром Alternativa3D 8. Уже после прочтения первого из них вы сможете сами создавать проекты с использованием нашей библиотеки.

Также размещены 2 урока по подключению библиотеки Alternativa3D (7 и 8 версии) к наиболее известным средам разработки:

Все уроки представлены как на русском, так и на английском языке.

Читать дальше: Уроки по Alternativa3D для новичков:

среда, 14 сентября 2011 г.

Как я делал игру

Всем привет, меня зовут Марк, я — Flash-разработчик. Я доволен своей работой, с помощью которой я могу сейчас зарабатывать достаточно для достойного существования в городе на букву М, да чтобы ещё и была возможность потихоньку копить сбережения на будущее. Даже несмотря на то, что в этой стране само слово «будущее» является каким-то очень странным и непонятным термином.

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

И вот, на фоне всеобщего помешательства инди-играми, бешеной популярности App Store и девайсов на базе Android, а так же нескольких шумных историй о том, как несколько разработчиков стали безумно богатыми за невероятно короткий срок, меня не покидают мысли о том, что я тоже могу, да что-там, я просто обязан заниматься разработкой игр в свободное от работы время.

Как я делал игру

воскресенье, 11 сентября 2011 г.

Создание очередной казуалки на Flash-платформе с физикой. Часть II

Привет хабра-сообществу.

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

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

Создание очередной казуалки на Flash-платформе с физикой. Часть II

Создание своего Java Socket Server. Первый контакт

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

В этой части мы создадим сервер при помощи библиотеки Netty, сделаем библиотеку на AS3 и проверим её. Чтобы понять процесс остановимся на простой реализации — клиент будет отправлять серверу сообщение, а сервер будет отправлять его обратно (это называется echo-сервер).

Делать мы это будем путем расширения кода, написанного в предыдущих частях.

Создаем java-socket сервер.

Создание сервера на Netty – процесс очень простой. Достаточно раз понять архитектуру этой библиотеки. Подробно с работой этой библиотеки можно познакомиться на сайте проекта.

Создаем новый канал.

Первым делом создаем фабрику для создания и управления Каналами и связанными ресурсами. Она будет обрабатывать все I/O запросы и генерировать ChannelEvent, которые мы уже будем обрабатывать [...]

Создание своего Java Socket Server. Первый контакт

суббота, 3 сентября 2011 г.

Создание своего Java Socket Server. Создание заготовки. Код в студию!

Написание сервера работа довольно объемная, поэтому описание функций я планирую делать методом добавления новой функциональности в демо-версию сервера.

Начнем с небольшой заготовки, которая будет содержать:

  • логгер
  • считывание параметров
public class JavaServer extends BaseJavaServerLoggedClass {

	public static JavaServerProperties properties;

	public static void main(String[] args) {
		prepare();
		info("String server...");
	}

	private static void prepare() {
		try {
			loadProperties();
			initLogger();
		} catch (Exception e) {
			System.out.println(e.getMessage());
			System.exit(-1);
		}
	}

	private static void loadProperties() throws Exception {
		properties = new JavaServerProperties();
		properties.loadProperties();
	}

	private static void initLogger() {
		org.apache.log4j.PropertyConfigurator.configure(properties.getProperty("log4j.propertyFileName"));
	}
}

Тут все предельно просто:
1. в методе initLogger() мы инициализируем логгер. Сами методы логера спрятаны в классе BaseJavaServerLoggedClass, чтобы не отвлекать от основного [...]

Читать дальше: Создание своего Java Socket Server. Создание заготовки. Код в студию!

Прототипирование игр с помощью JavaScript и CSS3

Я хотел бы поделиться прототипом игры, созданным всего за несколько часов. Надеюсь, что он вдохновит нескольких из вас! В индустрии однопользовательских браузерных игр, кажется, очень не хватает воображения и умения рассказывать истории, хотя, возможно, я просто не заметил таких игр ;), но мне не хватает таких игр, как Grim Fandango.

Ниже приведен скриншот из демонстрации, состоящей из нескольких узлов DOM, представляющих составные части главного героя, птиц и сцену. Большинство анимаций осуществляется CSS-переходами/анимациями, некоторые из которых являются динамическими и используют библиотеку move.js.

Grim Fandango

Читать дальше: Прототипирование игр с помощью JavaScript и CSS3: