Original size 3072x4096

Анализ мира The Elder Scrolls V Skyrim через призму неигровых персонажей

PROTECT STATUS: not protected
7

«Раньше меня тоже вела дорога приключений, но потом мне прострелили колено.» 🏹🦵

— Стражник Вайтрана

📝 Описание проекта

Для финального проекта по курсу «Программирование для креативных индустрий‎» я выбрал датасет People of Skyrim с портала Kaggle. Датасет содержит более 1000 рядов и около 40 колонок, описывающих различные характеристики NPC (non-playable characters, рус. неигровые персонажи) из компьютерной игры The Elder Scrolls V: Skyrim. Я посчитал, что изучение данного датасета даст возможность наглядно отследить, как разработчики отразили особенности мира игры через наполнение мира персонажами. Мне захотелось пронаблюдать определённые особенности мира Skyrim путём анализа принадлежности персонажей к определённым местам, расам, классам и фракциям.

Обложка проекта выполнена в  Ideogram [1] с ручной доработкой в Photoshop


1. «A realistic old paper styled cover for an Elder Scrolls Skyrim data research project about game NPCs. There are various icons of Skyrim NPCs, including a bard, a bard, a mage, a warrior, and a thief. There is also the Skyrim logo in the center. The background is a parchment text

🎯 Что анализируем и как?

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

  1. Круговую диаграмму
  2. Стековую столбчатую диаграмму
  3. Классическую столбчатую диаграммму
  4. Облако слов
  5. Тепловую карту

Для анализа датасета использовал язык Python и его библиотеки:

pandas (чтение .csv датасета) mathplotlib.pyplot (построение некоторых диаграмм) seaborn (заготовленные цветовые схемы) mathplotlib.font_manager (импорт шрифта) wordcloud (облако слов) random (назначение случайных цветов из палитры для облака слов)

🖌️ Графическое решение

big
Original size 2346x1095

Поиски графического решения для проекта: внутриигровые книги из Skyrim

Графическое решение для оформления графиков в проекте я нашел, вдохновившись стилистикой внутриигровых книг из Skyrim. Мне было важно запечатлеть фентези-настроение в графике, для чего был использован рукописный шрифт Magic Cards, который плотно ассоциируется со вселенной Elder Scrolls (использовался в более ранних играх серии) + гранжевые бумажные текстуры с тёплым цветофильтром, наложенные поверх изображения в Photoshop.

✨ Введение

🎮 Что такое Skyrim? Контекст игры

Скайрим — самая северная, суровая и холодная процинция на материке Тамриэль. Это родина расы нордов, которые от природы отлично приспособлены к выживанию в ней. Скайрим соседничает с другими провинциями, которые игроки могли исследовать в прошлых играх серии, все из них являются родиной для других рас. С запада это Хайрок и Хаммерфел (расы — bretons и redguards, рус. бретонцы и редгарды), с юга — Сиродиил (раса — imperials, рус. имперцы), а с востока — Морровинд (раса — dark elfes, рус. тёмные эльфы, в лоре так же — данмеры). В мире игры представлены все традиционные для вселенной расы, куча различных городов, персонажей, занятий и тд. В сумме, все элементы Skyrim, которыми славились и другие игры серии до этого, делают эту и предыдущие игры одними из самых детализированных компьютерных RPG в индустрии видеоигр. Детальнее про игру и вселенную можно почитать, например, на  Фанатской Вики или на  Классической Вики

👤 Демография Скайрима

Столбчатая диаграмма

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

0

Диаграмма & код диаграммы

При построении первой диаграммы вскрылись некоторые неудобные моменты, потребовавшие доработки кода. Датасет основан на данных о персонажах с  Unofficial Elder Scrolls Pages , которые, в свою очередь, построены на технических данных из кода игры. В коде игры граница между персонажем и существом может быть размыта в виду технических особенностей движка и из-за этого в датасете среди тысяч персонажей встречаются не только непосредственно NPC, но и животные, нежить и другие существа, которым присвоены «технические» расы. Поделать нечего! Код игры мыслит иначе, чем игрок :)

Например, в датасете я точно обнаружил существ (животных), которые классифицируются как NPC с технической расой «Animal», а некоторые старики в игре, независимо от их фактической расы, относятся к технической расе «Elder». Подобных моментов оказалось довольно много, и они искажали данные на диаграмме. Чтобы исключить подобные ошибки, я строго определил список валидных рас: в него вошли 10 игровых рас, доступных для выбора персонажу. Эти же расы считаются основными во вселенной The Elder Scrolls. Данная фильтрация применялась и для всех последующих диаграмм.

0

2. Определение 10 валидных игровых рас, отсекая технические 1. Отсечение городов с населением меньше 14 NPC

То же самое, в прочем, коснулось и городов. Если развязать коду руки, он построит диаграмму по абсолютно всем местам, которые в игре классифицируются поселениями. Но их просто ужасно много, по сравнению с действительно важными и крупными городами! К тому же, в большинстве из них проживает меньше 6-14 персонажей. Подобный момент превращал диаграмму в нечитаемый бардак из мелких елеразличимых столбцов, поэтому я решил написать фильтр, который будет пропускать в нашу диаграмму только города с населением больше 14 персонажей.

🤔 Интересные инсайты из диаграммы

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

Original size 3138x2280

Пример: Расселение данмеров (dark elf) и бретонов (breton). Больше всего данмеров в городах Dawnstar, Winterhold, Windhelm и Riften (восток) Больше всего бретонов в городах Markarth и Solitude (запад)

Примечательной так же является следующая деталь: если мы рассмотрим на диаграмме города восточной части Скайрима, граничащей с Морровиндом, то наглядно проследим, что в местных городах доля данмеров (dark elf, рус. тёмный эльф, данмер — альтернативное лорное название расы) значительно выше, чем в других частях провинции. Это не случайность, а следствие исторических событий. Около двухсот лет назад на родине данмеров (Морровинд) произошла масштабная катастрофа — извержение вулкана, которое привело к разрушению значительной части провинции и сделало многие её территории непригодными для жизни. Вынужденные покинуть родные земли, данмеры расселились по границам соседних провинций, включая границу Скайрима.

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

⚔️ Распространённые классы

Облако слов & стековая столбчатая диаграмма

Чтобы отобразить распространённость классов в игровом мире, я решил составить облако слов при помощи библиотеки WordCloud и Random (Назначение случайных цветов из указанной палитры). Так же, я составил стековую диаграмму, которая отображает процентные отношения количества представителей тех или иных классов среди 10 игровых рас.

0

Облако классов (чем крупнее класс — тем он популярнее) & код облака

0

Стековая диаграмма & код стековой диаграммы

Классы в датасете постигла так же судьба, что и расы. Присутствует крайне много «технических» классов, представителей у которых может быть от 1 до 2 персонажей. Многие из них не поддаются категоризации. Например, отдельные классы для стражников, классы для единичных важных персонажей и т. д. Было найдено следующее решение

Я попросил ChatGPT (модель o3-mini) [1] прочитать столбец с классами персонажей в моём датасете, определить наиболее частые классы (по кол-ву представителей) и распределить их на три большие группы: воинские, магические и плутовские. Данную фильтрацию реализовал в коде. Все классы, выпадающие за заданные рамки, не учитываются в диаграмме.


1. «Read the column containing character classes from my dataset. Identify the most common classes and categorize them into three groups: magical, combat, and rogue classes.»

Original size 2440x1389

Категоризация классов в коде

🤔 Интересные инсайты из диаграммы

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

Вопреки распространённому стереотипу о хаджитах-разбойниках, именно данмеры чаще всего оказываются представителями плутовских классов. Это интересно ещё и потому, что во вселенной «Древних Свитков» стереотипное мышление широко распространено не только среди игроков, но и среди персонажей. Норды, как и следовало ожидать, почти не встречаются среди магов, в то время как у альтмеров (high elf, рус. высокий эльф, альтмер — альтернативное название расы) практически отсутствуют воины — их раса по лору считается наиболее одарённой в магии. А вот босмеры, которых часто представляют исключительно как искусных лучников, на деле далеко не всегда выбирают этот путь.

⛓ Популярные фракции &
Законопослушность рас

Круговая диаграмма & тепловая карта

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

0

Круговая диаграмма & код круговой диаграммы

Повторяем уже знакомую историю: имеем кучу различных технических фракций, которые нам не нужны. Благо, тут помощь ChatGPT нам не требуется, поскольку основных фракций не так много и каждый игрок с ними знаком. Занесём в faction_groups только их. Дополнительно напишем функцию, которая заставит код учитывать множественные записи (в датасете в ячейке с фракцией записей для одного персонажа может быть очень много)

Original size 2440x1389

Определяем только нужные фракции + учитываем множественные записи

0

Тепловая карта & код тепловой карты

Для тепловой карты, в целом, логичным было бы использовать уже определённые ранее фракции, но я столкнулся с проблемой того, что расовый состав в них не очень разнообразный, что в случае с тепловой картой не играет нам на руку (ячейки получаются очень неконтрастными для большинства рас => результат непрезентативный), так что попросим ChatGPT [1] прочитать все наши фракции из датасета, найти наиболее многочисленные (количество членов больше 3-5), и попробовать распределить уже их на легальные и преступные. Я проверил это распределение согласно своим знаниям о вселенной и оно оказалось довольно правильным. Занёс эту фильтрацию в код.


1. «Read all faction names from my dataset. Identify the most numerous ones (with more than 3-5 members) and attempt to classify them as either legal or criminal factions.»

Original size 2440x1389

Фильтрация фракций на легальные и преступные

🤔 Интересные инсайты из диаграммы

  1. Данмеры входят в топ-4 самых криминальных рас, вопреки стереотипу о самой преступной расе в лице хаджитов (среди преступников их почти нет). И это весьма логично, учитывая что данмеры находятся на территории Скайрима на правах нищих беженцев и довольно часто сталкиваются с угнетением своих прав со стороны коренного населения Скайрима.

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

  3. Внезапным оказалось открытие, что имперцев и бретонцев среди криминальных элементов оказалось действительно немало. Они занимают 2 и 3 места по численности в криминальных организациях, после нордов. Гораздо больше, чем в легальных организациях! Это необычно, потому что Сиродиильская Империя и её ключевая раса — имперцы, как правило, ассоциируются с порядком и законом. Но у разработчиков игры, по-видимому, на это другое мнение :)

🌟 Итоги

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

🤖 Описание применения генеративных моделей

Chat GPT — Обращения с целью генерации инструкций и рекомендаций по улучшению кода, вопросы по тому, как правильно имплементировать те или иные функции, библиотеки и т.д Topaz Gigapixel — Увеличение всех представленных изображений: сгенерированных картинок, диаграмм, скриншотов кода Ideogram - Обложка проекта

Анализ мира The Elder Scrolls V Skyrim через призму неигровых персонажей
7