Читаем Хочу в геймдев! полностью

Давайте рассмотрим пример. В нашей «Очень счастливой ферме» есть 100 видов ресурсов, 40 различных животных, 75 строений и т. д. Все эти игровые сущности имеют собственные параметры, собираемые из разных компонентов, и должны как-то конфигурироваться и храниться. У нас есть здание «Загон для барашка». Оно обладает параметрами: размер, доступные животные, визуальный арт и т. д. Для его постройки необходимо 2 железа, 100 монет и 3 дерева. Для дальнейшего улучшения – еще какие-то ресурсы. Мы можем описать это в виде списка с соответствиями: уровень здания – список ресурсов.

     

     

          2

          3

     100

     

Теперь программа сможет прочитать это описание и отобразить информацию о строительстве данной сущности в интерфейс пользователя. Или же наоборот: если игрок нажимает «Создать загон для барашка», обратится к этим файлам для проверки, выполнены ли все условия, прежде чем создавать строение.

Рис. 21. Фрагмент XML-кода, описывающего содержимое лутбокса браузерной игры

XML несложен в написании. Есть специальные программы, например, Notepad++ или Jetbrains WebStorm, позволяющие сделать данные нагляднее, используя отступы, разные цвета и т. д. Можно создавать файлы в редакторах и отдавать в игровой движок, а можно писать сразу в редакторе, который вы используете для работы с Unity (к примеру, MonoDevelop).

БАЗЫ ДАННЫХ И SQL

Базы данных позволяют создавать не просто текстовые файлы. В отличие от XML, это уже особым образом структурированные данные, работа с которыми происходит через движок базы данных (БД), позволяющий к этим данным обращаться. У каждого движка свой язык, на котором он принимает команды. Самый популярный тип баз данных в игровой индустрии – SQL (от англ. Structured Query Language – «язык структурированных запросов»).

База данных – это набор взаимосвязанных таблиц. В визуальном редакторе создаются таблицы, куда вносятся данные. В SQL это строка с заголовками, значениями и т. д.

Бывают разные вариации этого языка, используемые разными движками СУБД (MySQL, PostgreSQL, MsSQL, SQLite и другие), но логика одна и та же. Основные команды для работы с БД можно пересчитать по пальцам:

SELECT – выгрузить из базы нужные данные;

INSERT – вставить в базу новую запись;

REPLACE – заменить имеющуюся запись;

DELETE – удалить вхождения данных из базы.

Конечно, в работе вы столкнетесь с гораздо большим набором команд для транзакций[71], но при помощи этих можно закрыть 90 % простых задач. Для более сложных запросов – к примеру, хранимых процедур – потребуется либо более глубоко изучить SQL, либо обратиться к вашему аналитику, если такой есть в команде. Аналитик обязательно знает множество команд и нюансов работы с БД.

Помимо SQL, существуют и другие варианты логики хранения и обработки информации в БД. Мы не будем их касаться, потому что они более редкие и сложные в освоении, – лучше обратиться к специализированной литературе.

Для хранения большого объема данных, особенно если предполагается, что эти данные постоянно меняются, лучше выбирать базу данных, а не XML. Допустим, в нашей игре миллион игроков, и по каждому необходимо собирать метрики. Хранить динамические данные в XML-файле не так эффективно; база данных позволяет быстрее оперировать большим объемом динамической информации. Но это не означает, что статическая информация также должна быть размещена в БД.

Есть примеры сочетания обоих способов: база для динамических данных и XML для статических. Например, гейм-дизайнер решил, что в игре должно быть 20 уровней, и описал их в XML. Эти данные меняться не будут, можно оставить информацию и в этом формате. А вот если нас интересует, на каком уровне сейчас находится конкретный игрок, сколько у него внутриигровой валюты и другие переменные, нужно обратиться к базам данных.

XML легко писать, но тяжело редактировать; базы данных удобнее и быстрее в использовании, но не все гейм-дизайнеры умеют с ними работать. Для онлайн-проектов обычно используются базы данных. Старые игры часто пользовались XML, так как не надо было ничего подгружать в реальном времени.

Базы данных заточены под быструю передачу информации, XML – под удобство описания. Существуют и другие языки, кроме SQL и XML: JavaScript, ActionScript; в Unreal Engine для описания сценариев используют блупринты. Выбор инструментов весьма широкий и зачастую определяется особенностями игрового проекта и личными предпочтениями.

АВТОМАТИЗАЦИЯ РАБОТЫ

Итак, описание XML кода и структуру базы обычно делают программисты или (в крупных студиях) архитекторы баз данных на основе документов от гейм-дизайнера. После того как вся экономика посчитана, для чего чаще всего используется Excel, гейм-дизайнеру предстоит внести в игру получившиеся значения.

Можно, конечно, заниматься «мартышкиным трудом», переписывая каждую цифру вручную. Многие разработчики так делали, пока не допустили первые ошибки. Именно вероятность допустить ошибку, просмотреть что-то и здоровая лень зародили мысль об автоматизации.

Перейти на страницу:

Все книги серии Российский компьютерный бестселлер. Геймдизайн

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных