Не так давно в открытый бета-тест вышла довольно занятная игрушка под названием ECO Global Survival Game. Это песочница, заточенная под совместное прохождение. Здесь есть как традиционные в таких играх крафт, возможность строить и копать, так и неожиданные вещи, вроде возможности создания игроками своей валюты для торговли или принятие внутриигровых законов. Также есть симуляция экологии на маленькой планете, где мы играем.
Но это все лирика, я думаю если вы оказались здесь, то про игру скорее всего уже знаете. А я лучше расскажу о том, как эту игру можно модифицировать. Это довольно несложно, по крайней мере в рамках, которые нам предоставляют разработчики.
Основных направления изменений два. Первое – это изменение конфигурационных файлов (конфигов). Здесь хранятся общие настройки игры и игрового мира. Также в конфигах настраивается генерация мира игры.
Второе – это изменение мод файлов. Изменяя эти файлы, мы можем изменять свойства различных объектов и предметов в игре, а также рецепты крафта.
ВАЖНО! Перед любыми экспериментами делайте резервные копии изменяемых файлов и сохранения игры (если вы экспериментируете на уже созданном мире). Сохранения хранятся здесь:
\Eco.v0.7.2.\Eco_Data\Server\Storage (файлы Game.db и Game.eco, где Game – это название мира по умолчанию)
Configs
Итак, пойдем по порядку. Конфиги хранятся по такому пути:
\Eco.v0.7.2.\Eco_Data\Server\Configs
Конфиги представляют собой файлы формата JSON, хотя имеют расширение .eco. Открываются любым текстовым редактором, например, стандартным блокнотом. Хотя я бы рекомендовал для удобства использовать что-то помощнее, что покажет вам код в более удобоваримом виде, например, Notepad++ или Sublime text.
На самом деле, данные в конфигах можно редактировать используя GUI сервера, но можно и напрямую через изменения вносимые в файлы. Тут уж кому как проще.
Давайте на каком-то конкретном примере посмотрим как это работает и что мы можем сделать. Наверное вы знаете, что для роста деревьев нужно 96-120 часов реального времени игры, для растений в среднем около 20 часов. Аналогично для животных. Конечно, если человек играет много, или сервер включен круглосуточно – это не так страшно, а если нет? Заходит вечерком поиграть на часик, отдохнуть после работы. И ждать ему пару недель созревания урожая и месяца три для того, чтобы выросло дерево? Не пойдет. Посмотрим, что с этим можно сделать. Находим файл EcoSim.eco и открываем его. Далее вбиваем в поиск по тексту MaturityAgeDays и находим первую запись:
"Name": "Camas",
"DisplayName": "Camas",
"MaturityAgeDays": 0.8,
"CalorieValue": 5.0,
В строке DisplayName мы видим о каком растении/дереве/животном идет речь, а в строке ниже значение MaturityAgeDays определяет сколько дней нужно для полного роста растения/дерева/животного. Это десятичное число, где 1.0 – это один день или 24 часа реального времени проведенного в игре (следовательно 0.5 – это 12 часов и т.д.). В данном примере мы видим, что число 0.8 – это 19,2 часа или 19 часов 12 минут. Чтобы не заморачиваться, можно, к примеру, взять и уменьшить значение в 10 раз. Тогда у нас станет значение – 0.08 или приблизительно 1 час 55 минут.
Одно значение поправили, дальше просто идем по тексту документа с поиском MaturityAgeDays и меняем значения по своему усмотрению.
Mods
Второй путь для модифицирования игры – это редактирование мод файлов. Они расположены по такому пути:
\Eco.v0.7.2.\Eco_Data\Server\Mods
Это текстовые файлы, которые имеют расширение .cs и являются исходными файлами языка программирования C#. Открыть можно как с помощью интегрированной среды разработки, например, Visual Studio, так и с помощью любого текстового редактора (точно также как и конфиги). Компиляция файлов после внесения в них изменений не нужна, игра при старте сама их скомпилирует. То есть мы просто работаем с кодом как с текстом.
Здесь у нас открываются возможности побогаче. Разберем сначала те вещи, которые я лично использовал у себя.
Первом делом меня раздражало то, что когда киркой рубишь каменный блок или блок руды, он обычно распадается не на 4 части, а на две маленьких и одну двойную часть, которую еще нужно одним ударом разбить на два куска. Вот этот дополнительный удар очень мешал и я решил сделать так, чтобы блок всегда распадался на 4 части. Первая мысль была изменить настройки кирки, однако оказалось, что это никак не влияет на рубку блоков. Настройки кирки влияют только на расход калорий при рубке. Тогда я пошел иным путем и полез в настройки блоков. Таким образом я нашел следующую папку:
\Eco_Data\Server\Mods\Objects\Rubble\
Здесь у нас есть пять файлов – настройки каменного блока и блоков 4 видов руды (уголь, железо, медь и золото):
StoneRubble.cs
IronRubble.cs
GoldRubble.cs
CooperRubble.cs
CoalRubble.cs
Код в них идентичный, поэтому я покажу на примере одного, что я делал. Как я думаю, было несколько вариантов исправить ситуацию, но я решил задачу не усложнять.
Открыв первый файл с настройками камня, увидел некий блок кода в самом начале, который судя по всему и генерирует результаты рубки блока камня. Там было 4 строки, в трех из них было по три объекта, в одной 4. Насколько я мог судить по игре, как раз с таким соотношением обычно рубились блоки на 3 или 4 части (3 к 1). Таким образом моей задачей стало сделать так, чтобы все 4 раза генерировались по 4 куска камня. В итоге у меня получилось следующее:
Аналогичным образом я поступи и с остальными блоками (код аналогичный, просто вместо Stone в названии объектов (StoneRubbleSet2Chunk1Object) там идет Coal, IronOre, CooperOre и GoldOre).
В итоге у нас после каждого удара киркой по блоку образуется ровно по 4 куска, без необходимости дополнительного удара.
Далее я решил увеличить количество ячеек для груза у экскаватора. Для этого нам понадобиться файл Excavator.cs, который лежит в папке:
\Eco_Data\Server\Mods\Objects
Изначально ячеек 6 и они довольно быстро наполняются землей при работе. Не мудрствуя лукаво я решил увеличить их число, но при этом стараясь сильно не нарушать баланс. Я сделал вместо 6 ячеек – 8:
Так как экскаватор довольно быстро потребляет топливо, желающие могут в этом же файле подкорректировать значение 50 в строке:
this.GetComponent<FuelConsumptionComponent>().Initialize(50);
Это и есть потребление объем потребления топлива в секунду.
ВАЖНОЕ ПРИМЕЧАНИЕ! Если у вас уже установлен экскаватор в мире игры, то внеся изменения и войдя в игру, вы увидите что количество ячеек у экскаватора не поменялось. Уберите его сначала в инвентарь и разместите в мире игры заново – вуаля – количество ячеек изменилось!
Далее давайте посмотрим на сундук. Изначально в нем 16 ячеек. Мне постепенно стало мало. Я увеличил их число до 26 (два полных ряда). Для этого находим файл StorageChest.cs в папке:
\Eco_Data\Server\Mods\AutoGen\WorldObject
Находим строку
storage.Initialize(16);
и меняем значение 16 на то количество ячеек которое вам надо.
В сундуки нельзя класть большие блоки, чтобы обойти это ограничение можно удалить следующую строку (в этом же файле):
storage.Storage.AddRestriction(new NotCarriedRestriction());
или можно не удалять, а просто закомментировать:
//storage.Storage.AddRestriction(new NotCarriedRestriction());
Далее о тележках. Есть три типа тележек – маленькая, обычная и самобеглая (с двигателем). В них тоже можно изменить количество ячеек для груза, однако здесь еще важно не забыть про перевозимый вес, ибо часто бывает что по весу тележка уже под завязку (например, забита землей или железной рудой), а пустых ячеек еще полно.
Переходим в папку:
\Eco_Data\Server\Mods\AutoGen\Vehicle
Здесь нас будут интересовать три файла:
SmallWoodCart.cs
WoodCart.cs
PoweredCart.cs
Находим в этих файлах следующую строку:
this.GetComponent<PublicStorageComponent>().Initialize(6, 750000);
Здесь есть две цифры. первая – это количество ячеек. Вторая – это вес в граммах. То есть 750000 – это 750 кг. Правим по своему желанию.
Если вы хотите поиграться с рецептами крафта (а также зависимости от навыков специализации и некоторые другие вещи и настройки различных предметов и объектов), то стоит посмотреть файлы в папке (и вложенных папках):
\Eco_Data\Server\Mods\AutoGen\
ВАЖНО! Большая часть внесенных ваши изменений не будет сразу видна в игре. Так, если вы увеличили количество ячеек в сундуке, то в уже установленных сундуках вы увидите прежнее количество ячеек. А вот если создадите и установите новый – увидите в нем уже то значение, которое вы выставили. Если убрать и заново поставить старые сундуки – в них тоже будут видны изменения. То есть объекты получают некоторые свойства при их инициализации – в момент установки в мире игры.
IgorLutiy (c) |