Перейти к содержанию

Почему движок Fallout 2 такой "костыльный"...


Jordan

Рекомендуемые сообщения

Приветствую!

 

Наверное каждый мододел спрашивал себя, почему двиг настолько дубовый. Сейчас объясню о чем я.

 

Фолыч разрабатывался с 1994 года, первый фолыч выпущен в 1997 году, второй в 1998. Движок Fallout 2 более юзерфрендли, многие настройки вынесены из таблиц движка (exe файла) в текстовые файлы, которые можно редактировать в блокноте и тем самым изменять игру.

 

Вот мой список костылей.

 

1. Проблема бинарных форматов игры. Карты, прототипы. Еще и зависимость от порядка байт.

Я понимаю, что в 1997 году еще не было xml и json. Но почему не использовали для прототипов ini формат. Легко редактируется любым блокнотом. Нет зависимости от размеров структур игры.

 

Те же проблемы наследуют карты. Можно было написать или свой текстовый формат в 300 строк или читать fscanf функцией, на ее основе можно считывать любые текстовые данные из файла.

 

2. Проблема хранения не имен файлов, а номеров файлов.

Каждый ресурс в игре прописан в lst файле, где номер строки с названием ресурса является его числовым идентификатором. Обращение к ресурсу идет через данные идентификаторы, это все ресурсы картинки, скрипты, карты, прототипы. И поэтому добавление чего то нового в игру так затруднено. Еще существует проблема несовместимости модов, так как несколько модов используют одни и теже идентификаторы для разных объектов.

 

Лучший вариант это хранить путь + название ресурса. Обычная текстовая строка с уникальным названием.

 

3. Скрипты в бинарном формате. Так как есть компилятор, то его следовало встроить в движок и хранить скрипты в текстовом формате, а при загрузке локации компилировать скрипты, это бы даже на тех маломощных ПК занимало несколько секунд. (Кеш скомпилированных скриптов можно хранить в папке игры)

 

Претензий нет к форматам dat, acm, frm, так как хранение в данных форматах позволяло сильнее сжать итоговые  ресурсы.

 

Типичный компьютер тех лет это pentium 100 mhz и 16 мб озу это без шуток не мало. 

 

У меня есть ответ, что это было сделано для скорости загрузки ресурсов, так как бинарные данные читаются быстрее. Но не думаю, что это было решающее значение. Сжатый текстовый файл читается по скорости не менее быстро.

 

Текстовые форматы добавили бы удобство редактирования игры, при ее создании. Еще есть вариант, что все изменения вносились через редактор карт, но он настолько дубовый, что у меня есть сомнения в том, что именно данный редактор выложенный разработчиками использовался для создания карт. У них возможно был более нафичеванный реактор.

 

Поделитесь пожалуйста своими мыслями на этот счет.

Ссылка на комментарий

Потому что это делалось в бородатых годах на голом энтузиазме во время, когда культура кодинга только формировалась) Без всяких ООП и такого похожего. Все пилили по хардкоду

Ссылка на комментарий

Каждый ресурс в игре прописан в lst файле, где номер строки с названием ресурса является его числовым идентификатором. Обращение к ресурсу идет через данные идентификаторы, это все ресурсы картинки, скрипты, карты, прототипы.

 

О-о! Это зло, да. Но я разобрался. Незабываемое ощущение того, что ты победил зло.

Ссылка на комментарий

Каждый видит удобство по своему...

Гениальные идеи. кривое исполнение или проф.исполнение идеи никакущие, а по середине что-то с чем-то.

добавлено позже

Претензий нет к форматам dat, acm, frm, так как хранение в данных форматах позволяло сильнее сжать итоговые  ресурсы.

относительно форматов видео и звука, не уверен.

Там просто была взята уже отработанная ранее технология. кмк.

Ссылка на комментарий

Потому что это делалось в бородатых годах на голом энтузиазме во время, когда культура кодинга только формировалась) Без всяких ООП и такого похожего. Все пилили по хардкоду

 

ООП так то с 80-ых. 

 

Тим Кейн был молодым, ипал я ваши стандарты, чик чик и в прод.:)

Ссылка на комментарий

Каждый видит удобство по своему... Гениальные идеи. кривое исполнение или проф.исполнение идеи никакущие, а по середине что-то с чем-то.

 

Возможно, Тим Кейн использовал подход из раннего опыта программирования игр. Кстати в игре Arcanum у него абсолютно такой же хардкорный подход. Концепции движков почти одинаковы.

добавлено позже

слышал, что редактор был выпущен позже

 

Да лет через 5.

Ссылка на комментарий

такой же хардкорный подход

он уже привык, ему так проще, лень переделывать\переориентироваться, менять, о модах тогда речи не шло, о патчах и фиксах, боюсь тоже)

 

Можно потратить месяц на обучение и гибкость будущих систем или за этот месяц настрочить железный код, который "могём"... не исключаю такой подход.

Ссылка на комментарий

Как мне кажется, разрабы не рассчитывали на то, что кто-то будет ковырять их игру через 20 лет, когда подходы, которые они использовали морально устареют. Думаю, они вообще не рассчитывали на то, что кто-то кроме них будет ковырять игру.

 

Вообще, с организацией ресурсов и идентификаторами это кажется сложным, пока не врубишься в структуру. Потом всё воспринимается нормально. Для своих нужд я сделал такую табличку в Excel для scenery и items. И да, я знаю, что всё это уже давно разобрано Pixote, но мне нужно было самому в это влезть, чтобы понять как оно устроено внутри.

 

Screenshot-42.png

Ссылка на комментарий

он уже привык, ему так проще, лень переделывать\переориентироваться, менять, о модах тогда речи не шло, о патчах и фиксах, боюсь тоже)

 

Как раз в Arcanum, он реализовал поддержку модов из коробки. Назвал их модулями. Интересно он мог делать двиг Arcanum на движке Fallout 2 (допиливая конечно до неузнаваемости), доступ к исходникам у него был. Хотя маловероятно, у них все с копирайтом строго. Скорее всего по памяти пилил аналог.

Ссылка на комментарий

Да просто был говнокодером, работающим на результат. Т.е. главное, побыстрее реализовать идею и приступить к реализации следующей. Это очень хорошо работает для быстрой разработки одного проекта, но потом это ад для тех, кто с этим будет работать.

В целом, учитывая те годы разработки, такой подход вполне понятен

Ссылка на комментарий

Как раз в Arcanum, он реализовал поддержку модов из коробки. Назвал их модулями. Интересно он мог делать двиг Arcanum на движке Fallout 2 (допиливая конечно до неузнаваемости), доступ к исходникам у него был. Хотя маловероятно, у них все с копирайтом строго. Скорее всего по памяти пилил аналог.

На чем там Балдуры и Торменты были - на infinity?

Ссылка на комментарий

На чем там Балдуры и Торменты были - на infinity?

 

Да. Но Балдуры не содержали понятие тайлов как в фоле. Локации рисовали всю с нуля, потом нарезали на тайлы или что то в этом роде. Это я подчерпнул из истории создания игры.

 

Локации содержали минимум общих ресурсов. Что и позволило менять диски при игре. Или хитро поделил данные на зоны, для возможности смены дисков.

Ссылка на комментарий

Да. Но Балдуры не содержали понятие тайлов как в фоле. Локации рисовали всю с нуля, потом нарезали на тайлы или что то в этом роде. Это я подчерпнул из истории создания игры.

 

Локации содержали минимум общих ресурсов. Что и позволило менять диски при игре. Или хитро поделил данные на зоны, для возможности смены дисков.

я про Arcanum, мне казалось, что технология ближе к балдурам и айсвиндам

Ссылка на комментарий

я про Arcanum, мне казалось, что технология ближе к балдурам и айсвиндам

Я чуть моддил Arcanum, он очень скож с движком Fallout 2. Конечно он более гибок, но концепции едины. И почти все настройки вынесены в текстовые файлы. Кроме карт и прототипов. Скрипты упрощены, логику диалога хранится в самом диалоге. Вроде как проще. В скрипты следует лезть не часто, многое реализуется в текстовых файлов диалога.

Ссылка на комментарий

Jordan

Не забывай что 97 год это всякие пентиумы в 166мгц (тогда еще и ммх не везде был), и чтение всяких лишних текстовых форматов это дополнительная растрата времени загрузки этих ресурсов.

У меня тогда фол минуты 2 грузился, а карты загружались при переходе секунд 30.

добавлено позже

слышал, что редактор был выпущен позже

редактор был как единое целое с движком, только выложили сборку маппера позже.

добавлено позже

Сейчас программисты тупые шо ппц- говнокодят налево и направо, никакой оптимизации просто пишут как смску своей шмаре)).

В ОПП некоторые куски кода могу выполняться по нескольку раз (хотя толку от этого никакого).

Программисты 90-х самые лучшие программисты.  :help:

Ссылка на комментарий
Я в этой теме мало чего понимаю, но вроде как не стоит также забывать о жесткой стандартизации со стороны Microsoft в те времена. Возможно это тоже какой-то отпечаток привнесло в разработку.
Ссылка на комментарий

Не забывай что 97 год это всякие пентиумы в 166мгц (тогда еще и ммх не везде был), и чтение всяких лишних текстовых форматов это дополнительная растрата времени загрузки этих ресурсов. У меня тогда фол минуты 2 грузился, а карты загружались при переходе секунд 30.

У меня 133 пень был и не так всё печально было, как ты описываешь. :) Но суть верна. Плюс, некоторые утверждают, что компиляторы из Watcomов (10-x и 11-й версии, которые использовались даже при разработке второй части) плохо умели в оптимизацию, безотносительно кода на входе.

Ссылка на комментарий

Не забывай что 97 год это всякие пентиумы в 166мгц (тогда еще и ммх не везде был), и чтение всяких лишних текстовых форматов это дополнительная растрата времени загрузки этих ресурсов. У меня тогда фол минуты 2 грузился, а карты загружались при переходе секунд 30.

 

Я гонял fallout 2 на эмуляторе 86box - 75mhz, 32 озу, windows 95. Работает вполне приемлемо. Но это эмулятор. Лет 10-15 назад запускал fallout 2 на pentium 166, но точно помню, что таких тормозов не было.

добавлено позже

Сейчас программисты тупые шо ппц- говнокодят налево и направо, никакой оптимизации просто пишут как смску своей шмаре)). В ОПП некоторые куски кода могу выполняться по нескольку раз (хотя толку от этого никакого). Программисты 90-х самые лучшие программисты. 

 

Да и еще раз да, полностью согласен и подписываюсь под каждым словом. 

добавлено позже

Но суть верна. Плюс, некоторые утверждают, что компиляторы из Watcomов (10-x и 11-й версии, которые использовались даже при разработке второй части) плохо умели в оптимизацию, безотносительно кода на входе.

 

Вполне вариант, 25+ лет назад компиляторы были еще тупы. Это сейчас компилятор на 80% состоит из кода отвечающий за оптимизацию.

добавлено позже

Возможно это тоже какой-то отпечаток привнесло в разработку.

 

Из выступления Тим Кейна, видео с привязкой ко времени. Он рассказывает почему они не прошли сертификацию Windows NT

 

https://youtu.be/MCRsDGJtpPI?t=2068

Ссылка на комментарий

 

Из выступления Тим Кейна, видео с привязкой ко времени. Он рассказывает почему они не прошли сертификацию Windows NT

 

И хорошо, что так было. Именно поэтому сейчас эта игра запускается без танцев с бубном на любом чайнике

Ссылка на комментарий

И хорошо, что так было. Именно поэтому сейчас эта игра запускается без танцев с бубном на любом чайнике

 

В этом плане, игра запускается и работает на всех Windows, интересно на Windows 3.1 запуститься. Есть только один недостаток, не встроили в игру ограничитель фпс, если играть без sfall, ноут греется и разряжается.

Ссылка на комментарий

У меня нет. Может это проблема конкретного ноута?

 

Очень может быть. У меня ноут ryzen 5 3500U, если дать нагрузку на 1 ядро, греется и кулер шумит. Не сильно, но ноут горячий.

добавлено позже

Я в основном на десктопе, потому уже не актуально.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...