WillowTree

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

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

Суть[править]

Если отбросить сарказм, то WillowTree# — это инструмент, который позволяет вскрыть файл сохранения .sav (для ПК, PS3 и даже Xbox 360, что требовало отдельного героизма с распаковкой CON-контейнеров) и устроить там тотальный дерибан. Хочешь миллион денег? Пожалуйста. 69-й уровень за пять минут? Легко. Все скиллы вкачаны на максимум, рюкзак размером с черную дыру, а в руках пушка, собранная из самых имбалансных частей? Заверните два.

Программа позволяет редактировать практически всё: от уровня и опыта персонажа до его наличных, размера инвентаря и количества очков навыков. Особого внимания заслуживает возможность полного потрошения оружия и предметов. Можно вручную перебрать все составные части пушки, от ствола до приклада, создав нечто, что заставило бы Красного Текста плакать кровавыми слезами. Квесты, локации, логи ECHO — всё это поддаётся хирургическому вмешательству со стороны любопытного хомячка. И всё это под соусом из кастомных контролов, написанных, видимо, потому что стандартные винформовские авторам показались недостаточно брутальными для мира Пандоры.

Отцы-основатели и их индусский код[править]

Разработка сего чуда велась группой энтузиастов, чьи имена навеки впечатаны в копирайты исходников. Среди них выделяются Matthew Carter, он же matt911, взявший на себя, похоже, основную ношу по поддержке и развитию проекта в 2011 году. Компанию ему составляют XanderChaos и, что самое лулзовое, некто JackSchitt, чей никнейм уже сам по себе является тонким намёком на возможное качество кода и стабильность работы.

При взгляде на исходники у любого мало-мальски опытного программиста начинает дёргаться глаз. Тут вам и героическая борьба с массивами через ручное создание нового и копирование старого (ResizeArrayLarger, ResizeArraySmaller), в то время как весь цивилизованный мир уже давно использовал List<T>. И, конечно же, вишенка на торте — жёстко захардкоженный массив XPChart на 71 элемент, представляющий собой таблицу опыта. Видимо, авторы свято верили, что уровни в игре — это константа, незыблемая, как законы физики.

Отдельной драмы добавляет зависимость от .NET 3.5 SP1. Настолько сильная, что в коде присутствует специальная функция CheckFrameworkVersion(), которая при запуске лезет в реестр и проверяет, установлен ли у пользователя этот замшелый артефакт. Если нет — программа с достоинством отказывается работать, отправляя юзера в увлекательное путешествие на сайт Microsoft за древними библиотеками.

Как оно работает (если работает)[править]

Внутренности программы представляют собой клубок из C#-классов, отчаянно пытающихся распарсить бинарный формат сейвов. Центральным элементом этого балагана является класс WillowSaveGame, который берёт на себя всю грязную работу. Он умеет читать и писать данные, борясь с разным порядком байтов (LittleEndian для ПК и BigEndian для консолей), что само по себе является маленькой войной. Для коробочников предусмотрена отдельная магия с распаковкой и запаковкой STFS-контейнеров, для чего в комплекте идёт даже файл KV.bin.

Данные об игровых предметах, навыках и локациях хранятся не в какой-нибудь вшивой базе данных, а в россыпи .ini и .txt файлов, которые программа при первом запуске мучительно конвертирует в XML. Этот процесс, получивший название ConvertIni2Xml, является хрупким и гениальным одновременно, создавая из текстового мусора структурированный хаос, с которым потом и работает остальная часть программы.

Венчает всё это великолепие лицензия GNU GPL, которая честно предупреждает:

WillowTree# is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Что в переводе с юридического на человеческий означает: «Мы дали вам эту лопату, а будете ли вы ей копать или проломите себе голову — ваши проблемы».

Telepuz 2.jpg Человек нонче игры разные ценит весьма, дык
МетаRPGИгровая консольШтампы в компьютерных играхИгровой движокТиммейтМассовый запрет игровых видео на YouTubeРейтыАгроWarcraft III — не канонАвтокликерДонат в игры из РоссииАрхидьявол (Герои 3)Лесные тени (Герои 3)Это собака?Blizzard измеряет соцсправедливостьЭто игра?Дроп (видеоигры)Надо, чтобы на КЧ напалПол это лаваКоллекционная играШахматная доскаВизуальная новеллаКонсольТяжёлые танки (World of Tanks)САУФлеш-игрыЛёгкие танки (World of Tanks)Консоле-холопыСредние танки (World of Tanks)Кризис переводов современных видеоигрКомпьютерное зрениеТокенОтсутствие МефистоБоязнь женской грудиSteam для пиратовБонусЗахват движенияВырезанный контентПазлЗаконы жанраA-Life 2.0Red Dead RedemptionDxvkVkd3dСэм ХаузерClaw EngineCuckpointMi hermano no estáO3DEВыбор зомбиЧувак (Postal)Евгений ГришаковКрипыBaba YetuWarhammerСписок персонажей Sword Art OnlineГовноигрыБронечайка (Гвинт)ShovelwareШахматный рендерингDirectStorageAdventureЭкшн-триллерШутерыШутерыCRPGRTSTBS
ЯвленияЖульничество в шахматахРусская кибердеревняОткрытый мирКастомизация персонажаElden Ring против The Witcher 3ПапкаDarksiders GenesisЧекпоинтCheat EngineРед (персонаж)Speedrun.comМоей сестры нетЕврейские корни BioshockМитаСтиль миллениаловFextralifeДжонатан РоджерсМетание шахмат в оппонентаСломанная механикаПрокачкаПешкаЗемля свободныхФарм клоуновБольшая чёрная светящаяся сфераВойдзонаТень ОробиссаРаспуджовкаWho's Lila?Убийство АрхимондаПочему не ВайперНейтан ДрейкR.G. МеханикиГенеральский эффектОгромный боссЭпоха ремейковАлексей Воктаков (Катков)Травля Илона Маска псевдогеймерамиААА-игрыОптимизацияТройная буферизацияRTXSpeedrunБетрезенПацификаАльваро КалметTerminals.ioCs.rin.ruGaiminВайфугеймКвадратные кроссвордыПочему титаны слишком большого размера? (Хроники Хаоса)Души тьмыSegaФоллаут-онлайнГейлендКамень, ножницы, бумагаBASKACombats.ruАббревиатуры имени МедоксаОлег СтавицкийМобильные игрыАвтобаттлерОнлайн-игрыMOBABeat 'em upСкурвившиеся игрыТанки free-to-playZumaLuxorТапалки в ТелеграмеGLaDOSХейтеры про Ведьмак 3Деградация Equestria at WarDirectXValveБезумная сложностьСложностьМинусы Ведьмака 3The Elder Scrolls Travels: Oblivion (PSP)Найди невидимую коровуMindsEyeДизлайк из Бравл Старс
ЭпическоеНайди отличияУльтаГриферыКрестики-ноликиДонатная помойкаМультиплеерГамблингАзартные игрыСеранаArdub92СасикSupermassive GamesСтарый богХагги ВаггиИл-2Шахматная партияВнутриигровая валютаГриндилкаКатсценаБэктрекингГлорхМясной жукВидениеRMTEMPRESSМемные карточки ХСЕкатерина СтадниковаЦарь Соломон и шахматыМасонские шахматыАвтошахматыСигма-гармонайзерЧёрная стражаTeam SpiritНиколай АрмоникБойкот лаунчеровАвтохукБуст аккаунта в ДотеДота как медитацияWraith KingFFAДмитрий РоммельДэвид МайерсБагоюзерствоАчивкаВетераны ВОВРуслан ДиденкоМоршуОлег ЯворскийЧерноруссияRagDollСаня ТропинGiboSteam MachinesЭльф-торговецHD-изданиеИнди-хитыМидирGrimtoolsИгра в настольные игрыМетарабыПавел БурзаNetHackГюнтер о'ДимКирилл Баранов (Пятёрка)FunpayКанобуТюрягаРенфриКастомизация оружияГенератор случайных чиселDisable Core 0HvHРомхакингИгры из репозиториевProton GEМегатекстураPS4-Fake-PKG-ToolsВидеоигры про АстериксаОказуаливаниеThe SinПовестка SJWКартриджи для восьмибитки от NintendoStop Killing GamesSmekta: The Game7LauncherИнди-клише
ЛегендарноеТактические шутерыВиртономикаE3Настольные ролевые игрыМеркиSonyChris-chanSourceНастольная играГнилецБорьба с задницей ТрейсераКамбиВпук Дагона на рядДагон на токенахКотовухаБерашна а, бегашийна аДелает ли прокачка титана его сильнее или слабее? (Хроники Хаоса)Нужен ли Тесак? (Хроники Хаоса)На чём ездит Марта? (Хроники Хаоса)КибердемонЩитспавнRedotAsset FlipФайтингиMoswar.ruXbox Турция: Алярм, суки, аккаунты горят!Игру убилиЖенщина на корабле к бедеУправление рандомомИвентТрассировка фотоновHZB OcclusionTressFXОбъективный обзор игрПлотваChangedПочему плотва это лошадь?Расстрел НильфгаардаОрден смертного бденияУроборукКолдовские богиМусилакШтормовая плетьАнастерияНадзиратель ПотустороннегоЗвук пердежа в видеоиграхФракции Grim DawnКлючникКейранДевятая силаPay2WinБитва против 7 противников в Red Alert 2Гача-игрыMMORPGARPGRTSКвестFatCatDDrawCompatLOVE the gameПАНЕЛЬКИEurasian Game ShowMy name is You and it's the only unusual thing in my lifeNEEDY GIRL OVERDOSERiotlocThe Tomorrow WarEchoMindustry
Моды, карты и васянствоЛегенда о ТильдеParagonHorn of the AbyssJebus CrossX-PiratezOpenXComJebus OutcastThe World of Terrifying Silence6lm10a (шаблон)VANOMAS DEMO5 ночей с Тимохой 2: ДеревняСильная прокачкаSteampassФреймрейтNVidiaВзрыв лутаGTA: Криминальная РоссияМод-сообщество Рога и Копыта (Barnyard)Шахматный корольПасьянс КосынкаPity SystemЛегендаркаИгровые ресурсы
Игры реалаLEGOMagic: The GatheringБерсеркГоДоминоКамень-ножницы-бумагаКубик РубикаМонополияНа раздеваниеПокерПреферансРусская рулеткаСтрайкбол / Пейнтбол / ХардболШахматыЭкономические игры с выводом средств