Original size 832x1248

Визуализация данных неигровых персонажей The Elder Scrolls V: Skyrim

PROTECT STATUS: not protected
The project is taking part in the competition

The Elder Scrolls V: Skyrim — компьютерная игра в жанре action RPG в уникальном фэнтези сеттинге, выпущенная компанией Bethesda в 2011 году. Несмотря на давнюю дату выхода, игра все еще является одной из самых известных игр компании.

The Elder Scrolls V: Skyrim — компьютерная игра в жанре action RPG в уникальном фэнтези сеттинге, выпущенная компанией Bethesda в 2011 году. Несмотря на давнюю дату выхода, игра все еще является одной из самых известных игр компании.

Как и во всех игр подобного жанра, в Skyrim есть множество неиграбельных персонажей или же NPC (non-playble characters). Они выполняют важную роль для игрового мира — населяют и оживляют его, тем самым добавляя игре проработанности и реалистичности. Анализ существующих NPC позволяет лучше понять вымышленный мир, а также понять его глубину проработки с точки зрения создания самой игры.

Анализ основывается на данных о персонажах Skyrim. В работе большая часть внимания уделяется анализу характеристик, таких как раса, уровень, здоровье, выносливость, важность для сюжета и агрессивность.

Для анализа используются датасет People of Skyrim с сайта KAGGLE, содержащий информацию о более чем 1000 NPC и их характеристиках

Для визуализации данных были выбраны следующие типы графиков:

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

Горизонтальная столбчатая диаграмма — используется для демонстрации среднего уровня NPC каждой расы и количества NPC в городах.

Гистограмма — используется для демонстрации динамики уровня NPC в зависимости от уровня игрока.

Точечная рассеянная диаграмма — используется для демонстрации соотношения показателей выносливости и здоровья персонажей, что позволяет наглядно показать диапазон, в котором в основном колеблются значения.

Круговые диаграммы — используются для демонстрации соотношения сюжетно важных и неважных NPC, а также агрессивных и неагрессивных персонажей. Визуализация частей одного целого позволяет наглядно соотнести параметры и сделать вывод о численном превосходстве того или иного значения.

Обработка данных

Первым этапом работы был импорт библиотеки pandas в среду Google Colab, импорт самого датасета и выяснение его объема и содержания. После отчёркнутой линии демонстрируются выходные данные ячейки.

Original size 2192x538

Из полученных данных видно, что в датасете содержится информация о 1009 существующих NPC и 40 параметрах. Следующим этапом на экран выводится наименование каждого столбца таблицы, то есть, название параметра.

Original size 2192x794

Множество имеющихся параметров сугубо технические, такие как источник или ID, поэтому было принято решение анализировать лишь некоторые из них: параметр расы, уровня NPC и показателей здоровья и выносливости при фиксированном уровне игрока (PC=10), важность, агрессивность, родной город.

Визуализация данных

Визуальный стиль графиков был вдохновлен основными мотивами интерфейса игры: текст и инфографика выполнены в светлых тонах на темном фоне, а шрифт подобран близкий тому, что используется в самой игре. Чтобы повторить ощущение интерфейса игры, на фон были вставлены скриншоты из Skyrim.

Original size 1920x1080

Для того, чтобы все графики были выполнены в едином стиле, а код для каждого из них не был громоздким, были изменены глобальные настройки matplotlib.pyplot с помощью команды rcParams.update, а изображения загружены через библиотеку matplotlib.image и команду imread.

Original size 2192x2368

Для визуального оформления кода использовался Carbon

Распределение фиксированных рас NPC в Skyrim

Для анализа распределения рас использовалась функция счёта, чтобы продемонстрировать, сколько персонажей какой расы встречается в игре. Однако в датасете некоторые значения расы были обозначены как Radiant, что означало, что раса персонажа в игре определяется случайным образом. Поэтому для выведения графика это значение было исключено из расчётов.

Original size 1224x743
Original size 2192x1220

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

Распределение уровней NPC при 10 уровне игрока

Для построения графика распределения уровней NPC при фиксированном уровне игрока использовались значения из столбца Level (PC=10). Столбец Level не подошел, так как данные были внесены с пояснениями, из-за чего не обрабатывались программой должным образом. Вследствие этого было решено использовать столбец с фиксированным уровнем игрока, где значения были внесены без пояснений. После была построена гистограмма, показывающая частоту встречаемости NPC разных уровней. Такой тип визуализации позволяет наглядно оценить, какие уровни NPC наиболее распространены и как устроено масштабирование персонажей в игре относительно уровня игрока.

Original size 1224x743
Original size 2192x1050

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

Соотношение здоровья и выносливости NPC при 10 уровне игрока

Для анализа соотношения здоровья и выносливости NPC при уровне игрока, равном 10, использовались значения показателей здоровья и выносливости, рассчитанные для этого уровня. Принцип выбора данных был использован тот же, что и в предыдущем графике, после чего была построена диаграмма рассеяния, где каждая точка соответствует отдельному персонажу. Такой формат визуализации позволяет выявить характер взаимосвязи между двумя характеристиками, а также увидеть общие тенденции в распределении параметров NPC.

Original size 1224x743
Original size 2192x1092

На получившемся графике можно увидеть, что большая часть NPC имеет достаточно низкие показатели выносливости и здоровья в соотношении один к двум. Однако существуют также персонажи с достаточно высокими показателями. Вероятнее всего, это сюжетно важные личности, внушительная сила которых объяснена логикой вымышленного мира.

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

Средний уровень NPC по расам при 10 уровне игрока

Для построения графика среднего уровня NPC по расам при 10 уровне игрока, данные были сгруппированы по расовой принадлежности персонажей и было вычислено среднее значение уровня NPC внутри каждой группы. Такой способ обработки данных позволяет нивелировать влияние отдельных значений и сосредоточиться на общих различиях между расами. Визуализация средних значений на графике наглядно показывает, как уровень NPC распределяется в зависимости от расы.

Original size 1235x743
Original size 2192x1134

На получившемся графике видно, что самый большой показатель среднего уровня имеют старейшины. Это демонстрирует, что, по логике мира, старейшины имеют больший опыт, что, в свою очередь, отражено в распределении уровней.

Доля сюжетно важных NPC

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

Original size 1224x743
Original size 2192x1176

Из полученных данных можно сделать вывод, что важные и второстепенные персонажи соотносятся в пропорции примерно один к четырем. С учетом того, что в игре более тысячи NPC, это демонстрирует грамотный подход разработчиков к созданию системы персонажей, где упор в разработке ключевых героев был сделан не на количестве, а качестве проработки.

Уровень агрессии у NPC

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

Original size 1224x743
Original size 2192x1176

Исходя из полученного графика, можно сделать вывод, что большинство NPC в игре относятся к неагрессивному типу поведения, более двух третей персонажей не проявляют враждебности к игроку. Это логично, поскольку значительная часть NPC выполняет функции торговцев, квестодателей или фоновых персонажей, предназначенных для взаимодействия, а не для боя. Агрессивные NPC составляют заметно меньшую долю и, как правило, представлены врагами или персонажами, связанными с конфликтными игровыми ситуациями. Категории с неопределённым и очень высоким уровнем агрессии встречаются крайне редко, что подчёркивает их ситуационную роль в игровом процессе.

Родные города NPC

Для анализа распределения NPC по родным городам использовались данные, указывающие населённый пункт, с которым персонаж связан по происхождению или месту проживания. Выводимые данные были сокращены до десяти самых крупных городов, чтобы не перегружать график деревнями и шахтами, которые в датасете указаны в значении родного города персонажа. После подсчёта количества NPC, относящихся к каждому городу, полученное распределение представлено в виде столбчатой диаграммы. Такой формат визуализации позволяет наглядно сравнить, какие города являются наиболее населенными, и объяснено ли это сюжетом игры.

Original size 1255x743
Original size 2192x1262

В полученном графике видно, что самым населенным городом Скайрима является Рифтен. С первого взгляда это может показаться парадоксальным, с учетом того, что он не является столицей провинции, которая занимает второе место. Однако по сюжету игры, Рифтен считается городом отверженных, в который стекаются люди, не прижившиеся в остальных городах Скайрима. Также в этом городе располагается самая многочисленная гильдия в игре, а именно, Гильдия воров.

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

Вывод

В ходе данного проекта был проведён анализ датасета, содержащего информацию о неигровых персонажах из игры The Elder Scrolls V: Skyrim. Использование различных типов визуализаций позволило рассмотреть данные с нескольких точек зрения и выявить как количественные, так и поведенческие особенности NPC. Анализ распределения уровней и характеристик персонажей продемонстрировал принципы масштабирования сложности, заложенные в игровых механиках, а также общие закономерности в распределении параметров при опоре на логику мира игры.

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

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

Используемые ресурсы

Steam, Duskworld, GameUI Database — источники изображений

ChatGPT — исправление ошибок в коде

Krea  — генерация обложки

Carbon — визуальное оформление кода