После этого гайда вы научитесь кодить как профессионал!
P.S. Не пугайтесь, это шутка.
Глядя на файлы игры, вы можете помочь получить ценную информацию об игровой механике, а также предоставить более качественные изображения для использования на страницах вики.
Файлы игры можно найти через Steam, щелкнув правой кнопкой мыши по игре в вашей библиотеке и выбрав вкладку «Свойства», «Локальные файлы», «Просмотреть локальные файлы» …
Код[]
Чтобы посмотреть на код, вам нужен C# декомпилятор. Вы можете использовать вот эти — dotPeek, ILSpy и dnSpy (у каждого из них есть свои сильные и слабые стороны, вы можете использовать несколько декомпиляторов одновременно). Когда у вас есть декомпилятор, вы можете декомпилировать OxygenNotIncluded_Data/Managed/Assembly-CSharp.dll — файл, который содержит большую часть кода игры. Есть ещё один код, связанный с движком игры, он находится в соседнем Assembly-CSharp-firstpass.dll файле.
Обратите внимание, что декомпилированный код не так прост для чтения, как обычный исходный код, поэтому может быть трудно исследовать его некоторые части (например, локальные имена переменных выводятся декомпилятором и они могут быть довольно бесполезными, а все комментарии могут быть потерянными). Вот несколько советов по организации кода:
STRINGSчасто является хорошей отправной точкой для просмотра кода, потому что вы можете сначала найти внутриигровое имя сущности, а затем имя переменной сообщит вам, то что код вызывает. Например, «Wheezewort» приводит к «Coldbreather»TUNINGсодержит много информации о балансе, но она не всегда может быть привязана к коду, который использует его, из-за оптимизации компилятора- Большинство игровых кодов находятся в корневом пространстве имен
- Большинство объектов имеют два объекта в коде: основной объект, который, как правило, обрабатывает информацию о состоянии машины (также как они контролируют свое поведение во времени) и конфигурационный объект, который устанавливает большинство своих компонентов и присваивает значения главному объекту; основной объект полезен для понимания поведения, в то время как конфигурационный полезен для понимания баланса
- Иногда вы будете сталкиваться с сообщением, которое отправляется как длинное число. Это хеши; вы можете искать более информативное имя в GameHash, SimHash, SimMessageHashes и т. д.
- Иногда dotPeek будет иметь проблемы с декомпиляцией некоторого кода и отображает его как много генерируемых компилятором полей. dnSpy часто обрабатывает эти разделы лучше
Ресурсы[]
Некоторые настройки и много изображений находятся в пакетах ресурсов, которые являются файлами .assets непосредственно внутри OxygenNotIncluded_Data. Они могут быть открыты с помощью AssetStudioGUI или Unity Assets Bundle Extractor. Один совет для последней программы: вы можете выбрать файлы для извлечения, но только если вы начнёте перетаскивать их с правой стороны от списка.
Экстрактор пакетов может извлекать текстуры в виде png-изображений, что полезно для получения материала для вики. Однако в настоящее время у нас есть нерешенная проблема: как использовать файлы анимации и частей объектов для сборки более сложных текстур и воспроизведения их анимаций. Вероятно, это формат Klei, и при проверке, похоже, он похож на тот, который они использовали в Don’t Starve (Together). В файлах KAnim может быть больше информации, чем в Assembly-CSharp-firstpass.dll, а инструменты, созданные для Don’t Starve, могут стать хорошей отправной точкой для нашего собственного инструмента для работы с этими анимациями.
Обратите внимание, что некоторые текстуры имеют не очевидные имена, такие как «cuprite» для медной руды и «CookedEgg» для омлета. Вы можете раскрыть внутреннее имя, создав желаемый предмет или вещество в игре, сохранив его как шаблон, а затем посмотрев поле id в файле YAML. Также обратите внимание, что заглавные буквы сортируются перед строчными буквами, а также что капитализация поля id может отличаться от имени ресурса. Например, id для омлета — «CookedEgg», но имя текстуры начинается с «cookedegg».
Многие свойства веществ, включая их свойства и точки замерзания/плавления, можно найти в файле «sharedassets2.assets» в виде текстовых активов с именем «Solid», «Liquid» и «Gas» с твердой, жидкой и газообразной формой каждого вещества. Другие расширенные/необязательные свойства, такие как декор вещества, находятся в классе LegacyModMain.
Сохранения[]
Сохранения располагаются по этим адресам:
- для Windows — C:\Users\USERNAME\Documents\Klei\OxygenNotIncluded\save_files
- для macOS — ~/Library/Application Support/Klei/Oxygen Not Included/save_files
- для Linux ?— ~/.config/unity3d/Klei/Oxygen Not Included/save_files
Удобно редактировать сохранения можно с помощью редактора сохранений (англ./кит.)
Туториалы[]
Источники[]
- Guide/Working with the Game Files (95 % статьи)
- Save file locations