Original size 3072x4096

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

PROTECT STATUS: not protected

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

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

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

Для финального проекта по курсу «Программирование для креативных индустрий‎» я выбрал датасет 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 через призму неигровых персонажей
We use cookies to improve the operation of the website and to enhance its usability. More detailed information on the use of cookies can be fo...
Show more