Как вышло, что игра 1998 года заполучила неофициальный ремейк?
“Орда: Северный Ветер” и “Орда: Цитадель” не имеют пафосных титулов, но обладают более важным качеством. В них вложена частичка души разработчиков, та самая искра, которая, однажды, разгорелась огнем. Тогда-то, спустя 15 лет, стратегия получила не только сторонний редактор карт, но и неофициальные патчи и даже любительские моды! А это лишь начало...
Скриншот из оригинальной игры. Кто скажет, где это место?!
Во время разработки редактора и патчей, мне удалось очень подробно изучить внутреннее устройство движка игры. Оказалось, что его возможности очень и очень сильно ограничены. Действительно, а чего ждать от игры 1998 года?
“Но ведь на современных технологиях можно же сделать гораздо лучше!” — подумал я и вскоре приступил к разработке ремейка Орды под названием “Орда: Возрождение”.
^^^ Программирование всегда сопровождается багами. Иногда они забавные :)
Тогда не мог и вообразить все сложности, любезно поджидавшие меня впереди. Дело в том, что работу над ремейком начал “с нуля”. Т.е. это совершенно новая игра без использования каких-либо наработок. Решил, что из оригинальной Орды достаточно взять лишь сеттинг, а также графику и звуки, а код написать самому. Сложно, зато — своё. Такой подход позволяет в любой момент заменить все позаимствованные ресурсы.
В данный момент ведется активный поиск стиля для обновления графики. Апскейл нейронками не предлагать :)
Изначальный план был в том, чтобы сделать полный клон игры. Так, чтобы все было как раньше, но без глюков и тупящих воинов, а также с возможностью сетевой игры, поддержкой моддинга и другими особенностями современных игр. Позже, стало понятно, что это неправильный путь, в то время, когда есть возможность сделать в разы круче! Об этом расскажу в следующих постах.
Разработка ведется неспешно, в свободное время. Со старта прошло более 11 лет. На данный момент сделано многое: воины ходят и воюют, сделан сетевой режим, работают моды и скрипты, а за прошедший год был внедрен и оттестирован компьютерный игрок (бот) Мара. В ближайших планах показать игру сообществу. Но перед этим важно доделать кое-какие жизненно необходимые фичи...
Моя история исправлений игры "Орда: Цитадель" началась с безобидных и невинных ассемблерных вставок ещё в 2014 году (если, конечно, правки на уровне машинных кодов вообще можно назвать безобидными). В этом посте расскажу историю о том, как от простейших правок я постепенно перешел к исправлению сложнейших багов, а также про адаптацию Северного Ветра (игры под MS-DOS) к современным системам.
"Информации, получаемой из Орды, гораздо больше, чем ты можешь расшифровать. Ты привыкаешь к этому. Я уже даже не вижу код."
Во время работы над редактором карт (см. пост) я часто занимался изучением дизассемблированного кода Орды. В нем однажды обнаружил, что нехитрыми манипуляциями можно улучшить поиск пути воинами. От того они не стали значительно умнее, но все же какой-то эффект от исправления оказался заметен. И это было очень важно, ведь являлось ответом на вопрос "А так можно было?!" и положило начало целой истории.
Ни один фикс не запретит воинам идти на эти ёлки!
Потихоньку начали накапливаться небольшие улучшения: исправил отображение времени в меню сохранения/загрузки, поправил работу скриншотов, зафиксил кое-какие вылеты, активировал дополнительные чит-коды и т.д.
Значительный шаг случился в начале 2016 года, когда подготовил сборку, названную "Большой патч для Орды". "Большой", потому что неожиданно для себя удалось адаптировать игру под разрешение 1024х768. Выше - нельзя, ибо мешают непреодолимые ограничения движка. Все равно, даже такой бонус оказался значительным улучшением.
Работа над большим патчем в самом разгаре! Осталось перенести кнопки меню. На скриншоте наглядно видно насколько увеличился игровой обзор.
Затем воплотил мечту многих игроков. Подготовил мод, который позволяет строить воина с дубиной! А чтобы удобнее было переключать накопившуюся к тому времени небольшую базу моих модов, сделал лончер.
Ещё через месяц, сделал мод Зимняя Орда, в котором изменил время года. Теперь в Орде выпал снег, пение птиц сменилось завываниями ветра, а реки замерзли и перестали быть препятствием для воинов. Получилось очень аутентично. Спасибо Алексею Скворцову за подготовленные избражения зданий со снегом!
Секрет заключается в подборе палитры тайлов. Зеленый заменил на оттенки белого, а синий на голубой. По-моему вышло очень правдоподобно. А вот здания уже пришлось перерисовывать.
Дополнительно про Зимнюю Орду можно прочитать в группе: раз, два.
К концу того же 2016 года подготовил "Легендарный багфикс", в котором удалось исправить уйму критических багов: несколько вылетов и одно зависание. Легендарный, потому что мне впервые удалось исправить именно причины багов так, чтобы они полностью исчезли, а не бороться с симптомами.
Этот фон должен быть известен фанатам Орды 😀
Тогда же был и другой примечательный случай. Многие игроки, так или иначе во время прохождения, замечали, что иногда Князь мог поменять своё оружие на копье, лук или даже ядра от катапульт. На эту тему было много спекуляций: что это? Прокачка персонажа или действие одного из предметов, или технология из лаборатории, или что-то ещё? Так вот выяснилось, что это не какая-то там фича, заложенная в механику игры, а всего лишь баг, который проявлялся при весьма специфических условиях. Пришлось переступить через себя и отключить одну из интересных фишек игры, ведь другие побочные эффекты этого бага могут провоцировать критические ошибки.
Не нашел видео, где персонаж меняет оружие. Вместо этого загадка для знатоков. Каким образом можно провести героя внутрь стен Ворежа без читов и редактора на ванильной версии игры?
В какой-то момент я так преисполнился патчингом, что однажды обнаружил возможность перенести СЮЖЕТ Северного Ветра на движок Цитадели. Это было очень заманчиво, ведь поиграть очень хотелось: в интернете писали, что "Ветер" интереснее "Цитадели", но меня каждый раз отталкивал геймплей в разрешении 600х400 через DosBox. Теперь же появилась надежда на возможность сыграть в уже пропатченной игре, да еще и с разрешением 1024х768! Потому я с головой окунулся в этот проект.
Внимание знатокам Северного Ветра! Кто отгадает, где конкретно сделан этот скрин?
Более двух месяцев продолжался скрупулезный перенос ассемблерного кода. Было очень сложно, несмотря на уже имевшиеся наработки и проведенные исследования. Затем пришлось фиксить множество ошибок и нестыковок, когда путались диалоги и квесты разных сюжетов, когда персонажи выполняли чужие действия, когда что-то переставало работать. Порой аукались некоторые фичи из "Цитадели". Например, поджигатели никого не могли зажечь на карте Магуса потому что это прописано в коде "Цитадели": лучники на центральной карте (та, что с Драконом) всегда промахиваются... Таких затыков было полным полно.
Лучники всегда промахиваются на центральной карте в Цитадели (она же карта Дракона). При промахе отображается анимация "отскока" стрелы, что как раз видно на этой гифке.
В конце-концов все исправил и проверил. Все работает замечательно! Все вышло настолько хорошо, что сохранились все-все оригинальные баги фичи "Северного Ветра". Огорчало только одно. В процессе низкоуровневых работ над кодом полностью заспойлерил себе сюжет 😔 Но, как оказалось, это ни капли не помешало мне по полной насладиться замечательной игрой!
Сейчас Северный Ветер сделан в виде подключаемого через лончер мода к Цитадели. Работает на Windows 10/11. Дополнительно, для полного погружения я добавил ещё один мод, отключающий каменные здания, чтобы все было, как раньше!
Активация необходимых модов в лончере.
Скачать сборку Цитадели с Северным Ветром можно в группе Орды в VK.
Затем мой взор устремился на следующую крупную проблему Орды: через небольшой промежуток времени после начала игры, боты переставали развиваться и переключались на вялотекущий режим функционирования, из-за чего их было очень просто победить.
Задача: починить ботов. Это даже звучит сложно! Решение оказалось совсем не простым. Для определения причины бага пришлось разработать свой анализатор оперативной памяти Орды, чтобы в реальном времени отслеживать изменения данных в ОЗУ компьютера. Оказалось, что в какой-то момент бот очень-очень хотел построить воинов с дубиной (прям как и всем игрокам Орды), но игрой этого не предусмотрено! Тогда бот начинал грустить, полностью зацикливался на своей проблеме и напрочь переставал развиваться 😔 Замечательно. Причина ошибки выявлена. Самое сложное сделано. Накатать патч на ассемблере это уже дело техники.
Тот самый анализатор памяти Орды. Здесь видно, что бот №5 (оранжевый) создал запрос на тренировку пяти воинов с индексом 2/26 (т.е. воинов с дубиной). Но его нет в казарме! Упс.. В игре это выглядит так, будто бы бот "сдался" и больше не хочет играть.
Кстати, первую версию анализатора делал ещё при разработке редактора карт (см. пост), тогда через него я определял структуру внутриигровых данных.
Один из раздражающих моментов игры заключается в том, что быстро пропадают фразы собеседников. Иногда текст пропадает даже ещё до того, как пропечатается до конца. Я, честно, предпринял очень много попыток исправить, но баг сидит так глубоко, что удалось лишь совсем чуть-чуть улучшить ситуацию, но не избавиться полностью.
Благоприятный исход открытия кувшина с золотой каёмкой. Вопрос: что джинн сделает с кристаллами?
А ещё, увы, иногда бывает и так, что баги появляются уже после моих исправлений, ибо на языке ассемблера весьма легко допустить ошибку. Пока что был зафиксирован только один такой случай. Баг заключался в том, что часть воинов из отряда прекращала подчиняться и выполнять приказы. После исправления все стали слушаться приказов (хотя, раз уж речь про Орду, то слушаться до тех пор, пока воину не взбредет в голову что-то другое).
Что случилось через пару секунд? Вопрос с подвохом 😎
Также в Цитадели много некритических багов, которые постепенно проявляются во время игры, но не ломают её сразу, а имеют накопительный эффект. В какой-то момент - раз и всё! Больше не получается поиграть: либо не загружается сохранение, либо черный экран при переходе на следующую карту, либо главный герой умирает, казалось бы, на ровном месте. Причины появления таких ошибок пока раскопать не удалось. Но я научился их исправлять, убирая последствия в файлах сохранений. Для этого игроки скидывают мне сохранение, а я через матрицу Орды выполняю необходимые манипуляции. Такая тонкая работа позволяет исправить следующее:
Излечение персонажа от страшной болезни (см. пост в группе);
Исправление теневой карты, когда отмечается что в пустой клетке будто бы кто-то стоит;
Поиск/восстановление потерянных предметов.
Так выглядит тонкая работа по снятию порчи с Князя и его дружины.
Ещё чуть-чуть и корона Ольги была бы разбита ёлкой.
Помимо указанных заметных исправлений сделано очень-очень много других правок, которые хоть и остаются незримыми, но порой являются не менее сложными в реализации:
Встроенная поддержка оконного режима
Улучшение обработчика ввода
Множество правок интерфейса
Изменен механизм скриншотов
Корректировка пропорций изображения на широкоформатных мониторах в полноэкранном режиме
Добавление возможности изменения игровых текстов модами
Добавление опции для "безумной" скорости игры
Исправление сворачивания игры на "Alt+Tab", ведь раньше после разворачивания картинка сжималась и отображалась в розовых цветах.
И много-много других исправлений…
Попытка увеличить количество игроков на карте. Игра работает, и дополнительные игроки развиваются, но почему-то не дерутся 🤷♂️
Про баги Цитадели и Северного Ветра я могу рассказать ещё очень многое! Если интересно, пишите в комментах, если не интересно, то не буду трогать эту тему.
🚀 Сейчас подготовлены и другие изменения с исправлениями, но чтобы сделать сборку нужно отвлечься от основной задачи, от разработки ремейка игры: “Орда: Возрождение”. Об этом напишу в других постах...
"Орда: Северный Ветер" - игра далекого 1999 года, которую в своё время называли русский Warcraft! Она давала свежий и необычный для своего времени геймплей на стыке RTS и RPG с самобытным миром про набеги кочевников и быт славян среди дремучих лесов.
Колдун-отшельник гневно кидает молнии из своего леса. А сверху лежит несколько трупов - им непосчастливилось встретиться с волками.
Тогда геймер мог закрыть глаза на недоработки, проблемы интерфейса и прочие недостатки, поэтому игра, несмотря на некоторые технические огрехи, оказалась очень удачной и на то время весьма популярной.
Пару лет спустя, выходит продолжение "Орда 2: Цитадель". В силу сложившихся обстоятельств, ни в графике, ни в геймплее изменений практически не оказалось, но при этом были добавлены баги, зависания, краши. Этого геймер простить уже не мог. К величайшему сожалению Орда не выдержала конкуренции с другими играми того времени и отправилась на полку полузабытых проектов.
Где-то и у меня лежит такой диск.
Но были и такие игроки, кто пробрался через тернии досадных ошибок и разобрался, как совладать с этой не совсем обычной RTS. Каждый такой игрок отмечал, что в Орде есть нечто, что из раза в раз заставляет возвращаться к игре. Что-то, что делает ее по настоящему живой наперекор всем багам, ошибкам и ляпам. Здесь на атмосферу работало все: от оформления и музыки главного меню, завывания ветра у скал, звуков птиц в лесу, кузнечиков в степи, до необычного мира и загадочных персонажей игры. Чувствуется, что разработчики вложили частичку души в свое творение.
Меню игры. Для тех кто играл - картинка со звуком.
Моё знакомство с Ордой началось именно с Цитадели. Ещё будучи школьником, вчитывался в найденные свитки про Уннов, про некий алмаз, про драконов. Пытался осмыслить и осознать происходящее в этом мире. Причем тогда не мог пройти даже половину игры из-за неочевидных механик. Кто же знал, что нужно пройти через четыре карты, найти камень на острове (то ещё приключение), а затем вернуться на первую карту и постоять у определенного места, чтобы открылся дальнейший путь! Потому, каждый найденный кусочек информации подвергался детальному анализу, будь то свиток, надпись, новая реплика, предмет и т.д. Порой такие фрагменты приходилось выписывать на бумагу, а потом тщательнейшим образом перевариварить мозгом, чтобы получить подсказку для раскрытия всех секретов этой игры.
Одна из загадок Орды.
Помимо загадочного мира, к разгадкам подстегивал и сугубо геймплейный интерес. Хотелось узнать как получить все виды воинов в том числе дубинщиков, которые чаще были именно у врагов, а у меня появлялись редко. Хотелось поиграть шатром кочевников, который "рожал" войска с невероятной скоростью. Не говорю про интерес к замку Теймура с его необычными глинянными зданиями.
Город Теймура.
Хотелось поиграть колдунами, сжигая противников молниями. Интересно было найти все возможные предметы и узнать, для чего же они все-таки нужны. Ведь так и оставалось неясным, что делает тот самый меч Уннов, который с трудом можно было забрать с карты Игоря, посохи колдунов и некоторые другие предметы.
Иногда, на некоторые вопросы удавалось найти ответ из внутриигровых подсказок, но чаще приходилось идти на ощупь методом тыка и искать закономерности по косвенным признакам..
В предыдущем посте я рассказал о ходе разработки моего редактора карт к Орде. В процессе этой работы продолжал знакомиться с тонкостями игры, пока не пришло озарение, что в моих силах поправить некоторые из тех печально известных ошибок, которые не дали Орде конкурировать с другими играми. Так был начат патчинг Орды, который продолжался много лет. Периодически я выкладывал результаты в сообщество. На данный момент актуальный патч находится здесь: https://vk.com/wall-63967485_3428
▷ В следующем посте расскажу подробнее о внесенных исправлениях и изменениях..
Есть некоторые игры, которые увлекают всерьёз и надолго. Этот пост как раз про такую серию "Орда: Северный Ветер" и "Орда: Цитадель". Все началось в декабре 2013-го года, когда в порыве ностальгии решил поиграть в Орду. Пробежал по игровым картам, которые ещё с детства заучил наизусть: знал каждую «живую елку», каждый камнепад, каждую яму, знал где какие лежат предметы. Вместе с тем, каждый новый запуск игры непременно чему-то удивлял. То найду какой-нибудь забавный глюк, то раскрою что-то свежее о сюжете, то наткнусь на ещё что-нибудь новенькое. Так было и в тот раз, но вместо изучения игрового процесса, начал копать игровые ресурсы!
Карта Семиречья - здесь развиваются события игры.
С самого детства, когда ещё даже не мог пройти игру до титров, мечтал, чтобы в Орде была возможность создания карт, как в Warcraft 2 или в Age of Empires и многих других стратегиях! Поэтому свое исследование начал с того, что открыл файл карты в HEX-редакторе и понял..
Содержимое этого файла выглядело вот так. Впрочем и сейчас оно выглядит именно так.
Понял, что смотрю на эту матрицу с каракулями и вижу не препятствие, а вызов! Вызов, который бросает Орда, и на который я в силах ответить! Честно, до этого я никогда не копался с бинарными данными, не писал крупных программ, а потому предстояло множество чудных открытий.. Но в тот момент чувствовал, что сейчас хватает навыков, терпения и желания, чтобы сделать тот самый редактор карт, который всегда так хотел получить.
Покопавшись пару часов, действуя совершенно наугад, мне удалось заменить обычный начальный деревянный замок на замок Теймура. Это было невероятно и воодушевляюще! Оглядываясь назад, даже боюсь подсчитать вероятность этого события. Ведь, зная всю поднаготную структуры игры, настолько оно кажется невозможным! Но тогда удача была на моей стороне. Этот случай позволил поверить в себя, и теперь я знал точно, что должен завершить исследование, и что смогу сделать настоящий редактор карт.
Получить замок Теймура - одна из желанных целей игры. В игре есть и "законный" способ, но он сложен в реализации.
На следующий день я разобрался как кодируется ландшафт карты. Это оказалось довольно просто. Правда, к сожалению, все простое на этом и закончилось. Осталось только сложное..
Первая версия редактора с возможностью изменения ландшафта.
Дальше был мучительный процесс по декодированию данных зашитых в файл сцены, а именно: графика тайлов, информация о поселениях, данные воинов и зданий на карте и прочее. Исследование вел различными способами: научный метод тыка, дизассемблирование, по наитию в конце-то концов!
Много сил потратил на создание и переделку интерфейса редактора, ведь как уже написал выше, это была одна из первых моих крупных программ. Также больших трудов стоило разобраться с кодированием воинов. Малейший промах крашил игру, которая и без редактора-то не отличалась стабильностью.
Спустя около 9 месяцев было готово все: работа с воинами, редактирование ландшафта с поддержкой автотайлинга, изменение стартовых условий и дипломатии, а также изменение всего остального, что позволяет движок Орды. Это был Триумф! Мой первый крупный проект начат и завершен.
Интерфейс редактора уже ближе к релизу.
Редактор позволил сделать набор различных карт, которые я с радостью обыграл. Со временем появились и карты от сообщества. Это было интересно. Интересно, но не так, как разработка самого редактора. Уже во время исследования было ясно, что возможности движка Орды весьма ограничены. Нельзя ни добавить новых воинов или предметов, ни изменить сюжет, ни сделать вообще что-то сколько-нибудь значимое. Потому параллельно с редактором я начал делать новую игру...
▷ О новой игре, о редакторе, о классической Орде буду рассказывать в следующих постах.
▷ Пишите, что интересует, о чем постить дальше: сюжет оригинальной игры, история патчинга Орды, история Возрождения, планы и т.д. Про тот же редактор есть много технической информации: как оно там закодировано, как устроено, с какими проблемами столкнулся, как решал, и как улучшал.