Хотя в игровом дизайне электронные таблицы служат главным образом для отслеживания поведения различных игровых элементов, они могут иметь и другие функции. В частности, наличие сетки на рабочем листе таблицы позволяет использовать его подобно листу клетчатой бумаги.
Одна из полезных особенностей электронных таблиц — то, что они позволяют изменять размер строк и столбцов. Чтобы изменить размер отдельной строки или столбца, нужно поместить указатель мыши между двумя заголовками строк или столбцов, сделать щелчок и перетащить указатель. Если нужно задать точный размер строки или столбца, выделите один или несколько заголовков строк или столбцов, щелкните правой кнопкой мыши в любом месте выделенной области, выберите в меню команду Resize (Изменить размер) и укажите нужный размер (рис. 30.1).

Рис. 30.1
Иногда требуется объединить несколько ячеек в один прямоугольный блок, главным образом для облегчения форматирования документа (изменять размер одной ячейки проще, чем сразу нескольких строк или столбцов). Например, когда таблица содержит много заголовков столбцов, часто требуется сгруппировать эти заголовки по категориям. Хотя это можно сделать, выделив каждую категорию цветом, лучше добавить дополнительные заголовки с названием каждой категории. Например, в следующей таблице (рис. 30.2) были добавлены заголовки категорий Core Stats (Основные параметры), Damage Range (Диапазон урона) и Spells (Заклинания).

Рис. 30.2
Как видите, такое превращение нескольких ячеек в одну не является чем-то необычным. В редакторе электронных таблиц эта функция называется объединением ячеек. Выделите ячейки, которые нужно объединить, щелкните на кнопке объединения ячеек на панели инструментов и выберите команду Merge All (Объединить все).

Рис. 30.3
После этого выделенные ячейки превратятся в одну ячейку. Если потребуется снова разделить результат объединения на отдельные ячейки, выделите объединенную ячейку, щелкните на той же кнопке и выберите команду Unmerge (Отменить объединение ячеек). Функциональность объединения ячеек доступна также в меню Format (Формат) (рис. 30.4).
Возможно, вас интересует, какой адрес следует указывать, когда нужно сослаться на значение объединенной ячейки? Это значение помещается в ячейке, расположенной в левом верхнем углу. Например, если вы объедините ячейки E2:H5 и поместите число в объединенную ячейку, то извлечь его можно будет, сославшись на ячейку E2, но не на другие.

Рис. 30.4
Иногда требуется логически сгруппировать несколько ячеек, не объединяя их. Допустим, вы разместили на одном рабочем листе несколько таблиц и хотите визуально отделить их друг от друга. Это опять же можно сделать, выделив эти области ячеек с помощью разного цвета фона. Еще один способ состоит в том, чтобы нарисовать вокруг этих областей границу (рис. 30.5).

Рис. 30.5
Чтобы нарисовать границу вокруг одной или нескольких ячеек, выделите их, щелкните на кнопке инструмента для рисования границ и выберите команду для создания внешней границы вокруг выделенной области (рис. 30.6).

Рис. 30.6
Возможно, вы заметили, что во втором примере этой главы, где была представлена таблица с параметрами монстров и заголовками категорий, использовались несколько толстых вертикальных и горизонтальных линий. Они были созданы выделением всей строки или столбца и добавлением границы по одному из их краев.
Наконец, подобно тому, как можно менять цвет фона для визуального выделения отдельных ячеек или групп логически связанных ячеек, можно менять цвет текста в ячейке с помощью инструмента Text Color (Цвет текста) (рис. 30.7).

Рис. 30.7
Как видите, типичная компоновка электронной таблицы выглядит следующим образом: строки представляют различные виды игровых объектов: противников, оружие, карты, классы персонажей и т.д., а столбцы — различные атрибуты или свойства объектов, сгруппированные по категориям. Каждая ячейка показывает, обладает ли привязанный к этой строке объект соответствующим атрибутом, и если да, то в какой степени.
С правого края таблицы может размещаться столбец с формулой, оценивающей характеристики соответствующего объекта посредством суммирования преимуществ и вычитания ограничений и издержек. Это дает итоговое значение, которое показывает, в каком месте кривой стоимости/мощности находится конкретный игровой объект (подробнее о том, как проводится такой анализ, было написано в главе 8). Если после вычитания издержек из преимуществ у вас получается кривая тождественности, то нулевое значение говорит о том, что объект сбалансирован, положительное — что он находится выше кривой (слишком мощный), а отрицательное — что он располагается ниже кривой (слишком слабый). Это очень логично: чем больше значение объекта, тем он мощнее, и чем больше он отклоняется от нуля, тем сильнее разбалансирован.
В общем случае желательно разбивать сложные формулы на несколько более простых. Это не только делает формулу более простой для понимания и использования, но и упрощает процесс выявления ошибок. В электронной таблице с данными кривой стоимости/мощности будет уместно как минимум выделить дополнительные столбцы с промежуточными суммами издержек и преимуществ. Если таблица содержит данные по ряду различных механизмов, стоит поместить данные по каждому механизму в отдельную категорию с вычислением промежуточного итога по ней в отдельном столбце. Обычно также полезно выделить вычисляемые столбцы с помощью другого цвета фона или иным образом, чтобы было понятно, что эти ячейки не следует заполнять вручную. Так, в приведенном на рис. 30.8 примере цветом выделен столбец Mana Subtotal (Общая стоимость маны), в котором вычисляется общая стоимость различных видов маны.

Рис. 30.8
Если у вас больше строк или столбцов, чем может поместиться на экране, то вы быстро обнаружите, что читать такую таблицу крайне неудобно. Допустим, вы изучаете игровой объект, находящийся в строке 70. Чтобы просмотреть несколько значений в ней, вам придется несколько раз возвращаться к верхней строке с заголовками столбцов, чтобы не запутаться в том, что представляет собой то или иное значение.
В таком случае можно существенно облегчить себе жизнь, воспользовавшись командой Freeze (Закрепить). Она позволяет закрепить на месте одну или несколько верхних строк или левых столбцов таблицы, после чего эти заголовки будут оставаться на экране вне зависимости от того, в каком месте таблицы вы работаете. В редакторе Google Sheets эта команда находится в меню View (Вид) и позволяет независимо закреплять строки и столбцы. Это значительно облегчает чтение данных таблицы. При необходимости закрепление можно отменить, выбрав соответствующую команду в том же меню (рис. 30.9).

Рис. 30.9
Закрепленные строки или столбцы отделяются от других строк или столбцов толстой линией. Кроме того, их легко заметить, попробовав прокрутить содержимое таблицы. Вот, например, как будет выглядеть рассматриваемая нами таблица после того, как пользователь немного прокрутит ее вправо (рис. 30.10).
В связи с форматированием также следует отметить, что в столбце Benefits Minus Costs (Преимущества минус издержки) можно задействовать еще две функции, чтобы быстрее выявлять наиболее проблемные карты. Одной из этих двух функций является условное форматирование. Она позволяет применять к ячейке определенный формат (обычно некий цвет фона или цвет текста, хотя это может быть и любой другой вид форматирования, например курсивное или полужирное начертание) только в том случае, если ее содержимое соответствует заданным вами условиям. Можно активировать несколько условий и выбрать порядок их выполнения.

Рис. 30.10
Чтобы посмотреть, как это работает, добавим два правила форматирования, одно из которых будет делать ячейки в столбце Benefits Minus Costs (Преимущества минус издержки) красными, если их значение меньше нуля (то есть находится ниже кривой), а второе — зелеными, если значение больше нуля (то есть находится выше кривой). Выделите ячейки, к которым необходимо применить условное форматирование (в данном случае нужно щелкнуть на заголовке столбца S, чтобы выделить весь столбец Benefits Minus Costs (Преимущества минус издержки)), и выберите команду Conditional Formatting (Условное форматирование) в меню Format (Формат) (рис. 30.11).

Рис. 30.11
При этом в правой части экрана откроется боковая панель следующего вида (рис. 30.12).

Рис. 30.12
Здесь при необходимости можно скорректировать диапазон ячеек, затрагиваемых правилом форматирования, и задать применяемое условие (в данном случае нужно выбрать условие Less than (Меньше) и ввести 0 в следующем поле), а также настроить стиль форматирования, выбрав нужный цвет фона или другие параметры форматирования. Добавив первое правило, щелкните на боковой панели на ссылке Add another rule (Добавить правило) и задайте правило, делающее фон зеленым, если значение ячейки больше 0. После этого при выделении отформатированных ячеек на боковой панели будут отображаться используемые в них правила условного форматирования (рис. 30.13).

Рис. 30.13
Если навести указатель мыши на одно из правил, появится значок мусорной корзины, позволяющий удалить это правило. Слева появятся четыре точки: щелкнув в этом месте и перетащив указатель, вы можете изменить последовательность применения правил. В редакторе Google Sheets эта последовательность играет важную роль, поскольку он, обнаружив правило с выполняющимся условием, применяет все указанные в этом правиле параметры форматирования и уже не рассматривает прочие правила.
Теперь отформатированный нами столбец выглядит следующим образом (рис. 30.14).

Рис. 30.14
И мы сразу можем увидеть, какие карты отклоняются от кривой. Но что, если нужно пойти еще дальше и сделать так, чтобы цвет ячеек был тем насыщеннее, чем дальше от кривой отклоняется ее значение, то есть чтобы цветовое форматирование носило более детализированный характер? В таком случае мы должны удалить созданные ранее правила и снабдить столбец с итоговым результатом новым правилом (рис. 30.15).

Рис. 30.15
В верхней части боковой панели, отображаемой при добавлении правила условного форматирования, можно выбрать не один цвет, а градиент. Это позволяет задействовать для окрашивания ячеек либо градиент с изменением от одного цвета к другому (например, от черного к белому), либо градиент с тремя цветами, один из которых будет соответствовать максимальному, другой — среднему и третий — минимальному значению. Вы можете указать, какие цвета следует применять для максимального, среднего и минимального значений и что использовать в качестве них: заданные числа, минимальные/максимальные значения в пределах форматируемого диапазона ячеек или заданные процентили. В показанном ранее примере мы используем в качестве минимального и максимального наименьшее и наибольшее из содержащихся в столбце значений и форматируем их красным и зеленым фоном соответственно. В качестве среднего значения указан 0, хотя он не является здесь ни средним значением, ни медианой столбца, и в соответствие ему поставлен белый фон. Теперь столбец будет выглядеть немного иначе: фон ячеек со значением +4 будет чуть более насыщенным, чем ячеек со значением +1 (рис. 30.16).

Рис. 30.16
Теперь мы сразу увидим, какие игровые объекты находятся выше или ниже кривой. Следующий логичный шаг — отсортировать игровые объекты в порядке убывания от объекта с наибольшим отклонением вверх до объекта с наибольшим отклонением вниз, чтобы близкие по мощности объекты располагались рядом. Для этого в редакторах электронных таблиц предусмотрена возможность сортировки.
В общем случае сортировка выполняется следующим образом: выделяете диапазон строк, который нужно отсортировать, и выбираете в меню Data (Данные) команду Sort Range (Сортировать диапазон) (рис. 30.17).

Рис. 30.17
В открывшемся диалоговом окне необходимо указать, по какому столбцу следует сортировать данные и в каком порядке — от A до Z (от A до Я) или от Z до A (от Я до A). Обратите внимание: хотя эти варианты подразумевают сортировку буквенных данных, они позволяют сортировать в порядке возрастания или убывания также числовые данные и значения даты и времени (рис. 30.18).

Рис. 30.18
В данном случае мы сортируем по столбцу Benefits Minus Costs (Преимущества минус издержки) и в порядке убывания, чтобы самые мощные карты располагались вверху, а самые слабые — внизу. Если бы выделенные строки включали в себя строку заголовка, мы бы также установили флажок Data has header row (Данные со строкой заголовка), чтобы программа не сортировала заголовок вместе с другими данными, но обычно просто не нужно выделять строку заголовка.
Поскольку в нашей таблице много карт с одинаковым значением (нулем) в столбце Benefits Minus Costs (Преимущества минус издержки), можно использовать второй столбец для дополнительной сортировки таких позиций. Для этого нажмите кнопку Add another sort column (Добавить еще один столбец для сортировки) и укажите второй столбец. В данном случае можно выполнить вторичную сортировку по имени карты или, возможно, в порядке возрастания значений в столбце Cost Subtotal (Общая стоимость). Вы можете добавить любое количество столбцов для дополнительной сортировки тех позиций, у которых оказались равными предыдущие критерии сортировки. После этого щелкните на кнопке Sort (Сортировка), и все строки будут отсортированы в соответствии с заданным вами способом. В данном случае сначала производится сортировка по столбцу P (по убыванию), а затем — по столбцу O (по возрастанию) (рис. 30.19).
Если сортировка приведет к неожиданным результатам, не стоит думать, что все пропало: вы легко можете ее отменить, выбрав команду Undo (Отменить) в меню Edit (Правка), щелкнув на кнопке отмены на панели инструментов или нажав сочетание клавиш Ctrl+Z.

Рис. 30.19
Наконец, рассмотрим полезные средства повышения читабельности ячеек, доступные на панели инструментов (рис. 30.20).

Рис. 30.20
Выделив одну или несколько ячеек, строк или столбцов, вы можете щелкнуть на одной из показанных здесь кнопок для изменения формата чисел: для отображения их в денежном формате (со знаком денежной единицы и двумя знаками после запятой), в виде десятичного числа с заданным количеством знаков после запятой. Если для представления числа требуется больше разрядов, то в таблице будет отображаться его округленный вариант, но это никак не скажется на реальном значении, используемом в вычислениях. Например, если вы отформатируете ячейку так, чтобы она отображала целые числа, и введете в нее число 1,4, то в ней будет отображаться число 1, но если в другой ячейке вы умножите ее содержимое на 10, это даст в результате 14, а не 10. К тому же реальное значение выделенной ячейки всегда отображается в строке формул.
Панель инструментов содержит еще четыре кнопки форматирования, о которых полезно знать (рис. 30.21).

Рис. 30.21
Крайняя левая кнопка позволяет указать, какой способ горизонтального выравнивания текста следует использовать в ячейке. По умолчанию текст выравнивается по левому краю, а числа — по правому, но вы можете задать и другой способ выравнивания — так, заголовки столбцов лучше выравнивать по центру. Следующая кнопка позволяет указать, какой способ вертикального выравнивания следует применять в ячейке — по верхнему краю, нижнему краю или по центру. Поскольку по умолчанию высота ячейки равна высоте одной строки, эта настройка обычно не играет никакой роли, но если вы измените высоту ячеек, она может сделать текст более читабельным.
Третья кнопка позволяет указать способ переноса текста для ячейки. По умолчанию если текст в ней не помещается, он просто перекрывает расположенные справа соседние ячейки или обрезается, если те содержат какие-либо данные. Но если выбран вариант Wrap (Переносить по словам), то все непомещающиеся слова будут переноситься на следующую строку с автоматическим изменением высоты ячейки. Вот, например, как изменится таблица, если мы применим перенос по словам в столбце A с названиями карт (рис. 30.22).

Рис. 30.22
Четвертая кнопка позволяет повернуть текст в ячейке так, чтобы он располагался вертикально или под определенным углом. Это может быть полезным, например, когда таблица содержит много больших заголовков и вы хотите сделать ее более компактной, сохранив возможность чтения заголовков (рис. 30.23).

Рис. 30.23
Эти параметры форматирования доступны также в меню Format (Формат).
Попробуйте изменить размер всех столбцов так, чтобы их ширина была равна высоте строки, получив таким образом виртуальный аналог клетчатой бумаги. Нарисуйте рамку вокруг сетки размером 20 × 20. Затем сделайте черным фон в некоторых ячейках, чтобы получился кроссворд, лабиринт или схема подземелья. Как видите, ничто не мешает вам применять редактор электронных таблиц в качестве простейшего редактора уровней!
Создайте макет экрана для видеоигры. При этом предполагается, что разрешение экрана составляет 1280 × 960 пикселов и каждая ячейка представляет собой блок пикселов размером 32 × 32 (то есть размер экрана — 40 ячеек в ширину и 30 ячеек в высоту). Попробуйте сделать следующее.
• Разработайте экран управления инвентарем для игры жанра Action-RPG.
• Создайте главный экран для шутера от первого лица, на котором будет показано, где должны отображаться различные элементы игрового процесса (количество здоровья, количество боеприпасов, статус персонажа и т.д.).
• Разработайте для игры главное меню, включив в него кнопки для запуска новой игры, загрузки из сохранения, просмотра информации о разработчиках, выхода из игры и любые другие, наличие которых посчитаете уместным. Укажите при этом, где должна располагаться каждая кнопка.
• Найдите снимок экрана, показывающий, как выглядит любой из перечисленных ранее видов экранного макета в реальной игре. С помощью графического редактора определите, в каком диапазоне пиксельных координат должен находиться каждый элемент интерфейса, после чего попробуйте воспроизвести эту компоновку в электронной таблице.
Укажите, где должны располагаться те или иные элементы интерфейса, используя цвет и текст и отделяя их друг от друга границами.
Чтобы попрактиковаться в форматировании таблицы с данными кривых стоимости/мощности, сначала выполните один из основных квестов главы 8 или побочный квест 8.2. В последнем случае добавьте справа столбец, в котором стоимость потраченного золота будет вычитаться из преимуществ от DPS таким образом, чтобы у оружия, находящегося на кривой, результат был равен нулю, и поместите в таблицу еще несколько видов оружия с разной степенью отклонения вниз или вверх от кривой.
Если хотите освежить в памяти материал предыдущих глав, вставьте сверху новую строку и, используя функцию объединения ячеек, создайте в ней общие категории для групп логически связанных заголовков, такие как «Преимущества» и «Издержки», или с большей степенью детализации, если это имеет смысл в вашем случае. Выделите каждую категорию цветом, не трогая пока лишь крайний справа столбец Benefits Minus Costs (Преимущества минус издержки).
Крайний слева столбец (A) должен содержать названия игровых объектов, а две верхние строки (1 и 2) — заголовки. Закрепите этот первый столбец и первые две строки, чтобы они всегда оставались на месте. Попробуйте прокрутить страницу вправо и вниз, чтобы убедиться, что они остаются на месте, а затем быстро вернитесь в левый верхний угол, нажимая клавиши со стрелками с удержанием клавиши Ctrl.
Для столбцов с числовыми значениями примените подходящий формат чисел: отформатируйте их как целые числа, проценты, простые или десятичные дроби.
В столбце Benefits Minus Costs (Преимущества минус издержки), который должен содержать 0, если игровой объект сбалансирован, отрицательное значение, если он находится ниже кривой, и положительное значение, если выше нее, примените условное форматирование для выделения объектов с большим отклонением от кривой. При этом можно выделить три группы объектов: слишком слабые (у которых значение меньше нуля или заданного вами отрицательного порога, если вы не считаете большой проблемой некоторое отклонение вниз), слишком сильные (с довольно большим положительным значением) и сбалансированные (которые нельзя отнести к первым двум категориям). Также можно посмотреть, чему равны максимальное и минимальное значения при наибольшем отклонении от кривой вверх и вниз, и отформатировать столбец, используя градиент, изменяющийся в этих пределах.
Наконец, отсортируйте таблицу по столбцу Benefits Minus Costs (Преимущества минус издержки) (как лучше это делать, по возрастанию или по убыванию, решайте сами), чтобы все объекты с наибольшим отклонением от кривой расположились вверху и внизу. Проследите за тем, чтобы вместе с остальными строками случайно не были отсортированы и две верхние строки заголовков!
В редакторе Excel эта функция называется Freeze Panes (Закрепить области). При чем здесь области или панели? Дело в том, что изначально редактор Excel был предназначен для операционной системы Windows, а на заре программирования для Windows каждое отдельное окно (одно из работающих в данный момент приложений) можно было разделить на несколько отдельных областей, каждая из которых вела себя как мини-окно и называлась панелью. Сегодня этот термин почти не используется, но, как видите, еще присутствует в электронных таблицах.
В некоторых редакторах электронных таблиц можно указать, должна ли программа прекращать рассмотрение оставшихся правил или применять следующие правила поверх предыдущих. Например, если вам нужно, чтобы числа, превышающие 10, были выделены курсивом, а числа от 5 до 15 — полужирным шрифтом (так, чтобы числа от 11 до 15 были выделены и курсивным, и полужирным начертанием), это можно сделать, используя лишь два правила и указав, что программа не должна прекращать рассмотрение оставшихся правил после выполнения первого. В редакторе Google Sheets для этого придется задействовать три правила форматирования: одно — для выделения полужирным начертанием чисел от 5 до 10, второе — для выделения и курсивным, и полужирным начертанием чисел от 11 до 15 и третье — для выделения курсивом чисел, превышающих 16.