О проекте

Данный сайт попытка повысить коммуникацию самых активных разработчиков на CMS Drupal - блоггеров. Если Вы ведете свой блог о Друпале, значит Вы готовы делиться вашими знаниями, помочь другим. Не всегда ваши знания доходят до потребителя. Задача данного сайта агрегировать знания различных блогов в единую ленту и привести на Ваши блоги активных пользователей.

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

Удачи во всех Ваших начинаниях!

Drupal, как игровая платформа. Часть 1.

-8 votes
+
-

На одном из докладов я говорил, что делать просто сайты мне не интересно. Мне интересно создавать проекты, которые выходят за рамки сайта, предоставляющего информацию о компании "Абырвалг" + инернет-магазин с носками. Мне интересны делать проекты, в которых идёт активное взаимодействие с пользователем. И таким образом мне в голову пришла идея сделать игру. Говорю сразу, что я (пока) не профессиональный гейм-разработчик и поэтому могу ошибаться. Я лишь делюсь своим опытом.
Начало
Исходя из особенностей Drupal, игра должна быть браузерной. И не просто скрипт или флеш, встроенный в ноду, а полноценная игра, которая именно построена на Drupal. C самого начала делать что-либо сложное мне не особо хотелось, было интересно реализовать саму идею. Я выбирал между экономической стратегией и файтингом. Выбор всё-таки пал на последнее, потому, как мне показалось, что это несколько попроще.
Начинаем строить
Итак, нам понадобятся:

  • Игрок
  • Вещи
  • Рынок
  • Реализация поединка

Игрок
Персонажа, управляемого человеком, я сделал при помощи модуля Profile2. Тут, как раз всё достаточно просто. Накидал пачку полей с характеристиками. Группировать поля лучше всего при помощи Field group, а поля, значение которых нужно получать программно при помощи Computed fields. Часть полей нам понадобится закрыть от редактирования (например деньги, здоровье и прочее). Сделать это нам поможет Field permissions. Процесс "экипировки" реализуется при помощи Entity reference и views. Хотя сайт без views ещё поискать надо.
Вещи
С игроком разобрались. Давайте разбираться с экипировкой. Тут, как ни странно, тоже нет ничего особо сложного. Обращаемся к моей статье про товары с атрибутами и делаем классы товаров "Оружие", "Броня", "Амулеты" и прочее. И да, нам таки понадобится Ubercart.
Рынок
Упомянутый выше Ubercart нам понадобится и для реализации рынка вещей. Процесс присвоения конкретному игроку конкретной вещи из базы я реализовал при помощи модуля Flag и Rules. Делаем флаг (не глобальный!) "my" и при покупке вещи вешаем на эту ноду флаг "my" от имени покупателя. Через это же реализуется "экипировка" игрока. Инвентарь отображаем также при помощи Views. Просто выводим все ноды с флагом "my" и группировкой по "классу" вещей.
Реализация поединка
Тут самое интересное. Реализуя это я, на самом деле, впервые близко познакомился с именно программированием в Drupal. Нам понадобится включить PHP Filter в модулях. Основной моей идеей при продумывании игры была фишка, что нападать на человека можно было только тогда, когда он был к этому готов. Поэтому в "анкете" я сделал поле "готовность к поединку" и при помощи Views выводил всех игроков готовых к драке. Далее делаем флаг "напасть на игрока" и на присвоение этого флага навешиваем правило, которое считает:

  • Урон оружия
  • Эффективность брони
  • Количество здоровья
  • Поправки на урон и здоровье от амулетов

Итог
В итоге - игра на Drupal вполне себе возможна. Это только первая статья из цикла игростроения. Также буду рассказывать и показывать работающий прототип на сентябрьском DrupalCafe в Москве.
Tags: gamedev

Полный оригинальный материал:

ASZh.com