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

Fallout 2 - Reference Edition: Изучаем и улучшаем движок игры


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

Автор проекта перенес графическую часть движка на кроссплатформенную библиотеку SDL2.

 

Сам проект

https://github.com/alexbatalov/fallout2-ce

 

Его сообщение об этом

https://github.com/alexbatalov/fallout2-re/issues/87

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

Автор проекта перенес графическую часть движка на кроссплатформенную библиотеку SDL2.

Мне фиолетово куда он там перенес.

Ты делай на SFML, с++ приятнее, и перспективнее.

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

 

Мне фиолетово куда он там перенес.
Ты делай на SFML, с++ приятнее, и перспективнее.

 

Нужно взять SDL2 версию, и заменить на SFML.

 

Так осталось исправить 60 ошибок.

 


После исправления 100500 ошибок удалось скомпилировать как C++ код. При загрузке игры сразу run time error:)

Удалось собрать код как С++ и исправить падения. Немного поиграл, падений не было.

 

Теперь можно разрабатывать на С++.

 


Теперь осталось понять как мержиться с основной веткой и получать исправления багов.

 

Залил на свой гитхаб.
https://github.com/JordanCpp/Fallout-2---Reference-Edition

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

На гит физически добавил библиотеки zlib и fpattern. Собирается студией 2019 и 2022.

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

Нужно смержиться с SDL версией движка. После чего выделить основные файлы движка в библиотеку. Для возможности писать тесты.

Внес изменения из SDL2 версии. Пришлось поправить код. Игра запускается, но в главном меню не работает курсор. Невозможно даже начать игру.

 

Как поправлю, сделаю коммит на гитхаб.

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

Немного не по теме, но меня всегда удивляло, почему в Fallout 1 и 2 нет возможности пользоваться "горячими клавишами" в главном меню? В играх прошлых лет это ведь была распространённая практика.

Поправьте меня, если я не прав, но, вроде на титульном экране работает только мышь. 

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

Немного не по теме, но меня всегда удивляло, почему в Fallout 1 и 2 нет возможности пользоваться "горячими клавишами" в главном меню? В играх прошлых лет это ведь была распространённая практика.

Поправьте меня, если я не прав, но, вроде на титульном экране работает только мышь. 

 

В главном меню из горячих клавиш работает Esc и Ctrl-R.

 

Поправка. Оказывается горячие клавиши работают, к примеру N для новой игры. И код это подтверждает.

Воть, только через 20 лет узнал:)

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

В главном меню, нажмите N и при выборе персонажа T.

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

Перенес поддержку SDL2. Корректно работает в полно экранном режиме. если играть в окне проблемы с мышью.

 

Вот архив с исполняемым файлом. https://github.com/JordanCpp/Fallout-2---Reference-Edition/blob/master/fallout2-re.zip

 

Распаковать в папку игры и запустить fallout2-re.exe

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

Думаю, что правильнее перенести изменения по поддержке С++ в проект автора https://github.com/alexbatalov/fallout2-ce. Так как автор продолжает фиксить баги. И уже от этой ветки сделать форк.

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

https://github.com/alexbatalov/fallout2-ce

 

Данный проект является переводом движка на SDL2 + автор перевел исходники на C++.

 

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

 

Предлагаю переносить функционал Sfall именно в эту ветку.

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

Предлагаю переносить функционал Sfall именно в эту ветку.

Я не буду участвовать в этой оргии - для меня в этом нет смысла.

У русских все рано будет свой проект, зачем нам эти забугорные.

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

Сделал форк. Первым изменением добавил класс FpsLimiter, для ограничения fps в игре. Теперь ноут не шумит.

 

Вот форк.

https://github.com/JordanCpp/fallout2-ce

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

Я не буду участвовать в этой оргии - для меня в этом нет смысла.

У русских все рано будет свой проект, зачем нам эти забугорные.

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

 

Я могу добавить в описание Russian Edition:)

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

Мр. Сталин делай форк вноси изменения. Как только в проекте поправят баги внесённые при декомпиляции, можем залить на Gitflic и уже дорабатывать там. Или давай зальем проект на Gitflic, я буду в свой форк вытягивать изменения и делиться с тобой. Будем разрабатывать вместе и изменениями делиться.

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

Работы полно, нужно интерфейс подправить для высоких разрешений как размер, так и позиционирование.


Вот прошляпил. Отправил реквест от мастера:)
https://github.com/alexbatalov/fallout2-ce/pull/8

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

Мр. Сталин как ты видишь разработку? Объясни план действий.
Ссылка на комментарий

Я пока отдыхаю (от кода движка F2).

а то мозг уже закипает от этого с/с++, я пока на с#/vb.net проги по обновляю. уже соскучился по .net
 

Мр. Сталин как ты видишь разработку? Объясни план действий.

Пока думаю, обдумываю.

Но походу планы у нас с тобой будут расходится. Ты слишком на глобальные планы замахнулся.

Хотя может я буду параллельно и твоим форком заниматься и sfall не бросать.

 

Работы полно, нужно интерфейс подправить для высоких разрешений как размер, так и позиционирование.

окна да там легко все, да и для HRP все есть уже в sfall, надо скопировать код.

блин щас реально нет желания, пока заниматься этими исходниками.

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

Я пока отдыхаю (от кода движка F2). а то мозг уже закипает от этого с/с++, я пока на с#/vb.net проги по обновляю. уже соскучился по .net

 

Я наоборот отдыхаю от C#, соскучился по байтоложеству на С++ :)

 

 

Пока думаю, обдумываю. Но походу планы у нас с тобой будут расходится. Ты слишком на глобальные планы замахнулся. Хотя может я буду параллельно и твоим форком заниматься и sfall не бросать.

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

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

окна да там легко все, да и для HRP все есть уже в sfall, надо скопировать код. блин щас реально нет желания, пока заниматься этими исходниками.

 

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

 

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

 

Или параллельно  переносить переработанный функционал движка, в новый. Но это так просто мысли.

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

Зачем нужен режим в окне?

 

Вот если бы вы сделали возможность активировать очки из инвентаря (но только одни), т.е. без надобности брать их в руки. Ещё лучше добавить отдельный слот в куклу (как это в Ван Бурен), но то уже вообще мечта. И с очков снимается эффект при надевании силовой брони (как минимум с солнцезащитных).

Fallout 1&2, RP, Nevada, Sonora, Resurrection, Olympus, Fallout 3 - создание персонажа и подсказки.
Wasteland 2: DC и Wasteland 3 - создание отряда, проверки, спутники, секреты.
TOP 100 CRPG - мой рейтинг | DTF - мой блог по CRPG | realmsdenis@list.ru | Telegram @QweSteR | Discord QweSteR2221 | ВК

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

А ты все со своими очками)) неположено так.

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

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

 

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

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

Ты меня пугаешь всякими такими мыслями аля добавления lua и новых xml форматов - с такими целями тебе новый двиг делать надо - мне с этим не попути.
Ссылка на комментарий

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

 

Если, что я создам ветку от проекта и буду впиливать свои программерские фантазии в виде lua и остального непотребства.:)

 

Мой внутренний перфекционист ужасается, но да делать нужно, как ты предложил. Перепиливать все на классы, это точно нет.

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

В общем.

Из основных идей которые бы я делал - это реализация встроенного маппера. Т.е. перенос функций кода из базы маппера в двиг.

 

Разделить слои рисования карта рисуется в один буфер, интерфейс в другой буфер к каждому буферу применяется свои sfall шейдеры.

Курсор также отделить от этих слоев.

В общем по графике там делов полно.

 

Еще меня напригает sdl/sfml я бы их вообще не использовал а заменил на собсвенные реализации где мы бы имели полный контроль над кодом а не то что там папояли сторонние говнокодеры.

- так как не понятно как использовать шейдеры sfall, растяжение тексур и прикручивать другой функционал.

 

Все фичи уже есть в sfall - просто пренести.

Нет таких фич которые нельзя было бы сделать в sfall (структуры только нельзя менять в sfall)

 

Перечисли свои фичи которых нет в sfall.

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

Сука смотришь на все эти структуры и ужасаешься от этого говна в стили С - сколько переписывать то нужно. Легче забить на это все))))
Ссылка на комментарий

Из основных идей которые бы я делал - это реализация встроенного маппера. Т.е. перенос функций кода из базы маппера в двиг.

 

Поддерживаю, только физически не разделять маппер с двигом, просто в главном меню будет кнопка редактор. При нажатии загружается редактор и обязательно реализовать запуск карты, для тестирования.

 

 

Еще меня напригает sdl/sfml я бы их вообще не использовал а заменил на собсвенные реализации где мы бы имели полный контроль над кодом а не то что там папояли сторонние говнокодеры. - так как не понятно как использовать шейдеры sfall, растяжение тексур и прикручивать другой функционал.

 

Родная душа, тоже любишь писать велосипеды. :)

Вот мой проект LDL  - типа понял на что намек.

https://github.com/JordanCpp/LDL

 

Примеры

https://github.com/JordanCpp/LDL/tree/master/examples

 

Поддерживает OpenGL 1.2 и рисование в буфер. Не содержит явных внешних зависимостей. Только файлы типа stb header  only library. Сам не люблю лишние громадные зависимости. Посмотри может следует его допилить.

 

Можем добить до требуемого состояния для движка.

 

 

Сука смотришь на все эти структуры и ужасаешься от этого говна в стили С - сколько переписывать то нужно. Легче забить на это все))))

 

Понимаю, всю боль)) 

 

Пойду дальше погружаться в код))

trebuetsya-vykopat-kolodets-pod-vodu-dly

 

 

Перечисли свои фичи которых нет в sfall.

 

Не то, что бы фича но есть желание, прикрутить компилятор скриптов в двиг. Что бы скрипты из ssl компилировались пр загрузке локации. Компилятор есть, интерпретатор есть. Нужно только соединить. Возможно компилировать не сразу в озу, а в кеш скриптов - каталог в папке с игрой.

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

Еще предлагаю отказаться от zlib на miniz https://github.com/richgel999/miniz

 

Всего два файла .c и .h

 

Но с zlib не полностью совместим, нужно будет переписать работу с gzip файлами. Заменить api на miniz. На уровне api в двиге ничего не поменяется.

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

Еще можно брать код из https://github.com/falltergeist/falltergeist. С++ и ООП во все стороны))

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

Еще хочу поддержку таких карт

 

unknown.png

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

Намодим так намодим))

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

Зачем нужен режим в окне?

 

Вот если бы вы сделали возможность активировать очки из инвентаря (но только одни), т.е. без надобности брать их в руки. Ещё лучше добавить отдельный слот в куклу (как это в Ван Бурен), но то уже вообще мечта. И с очков снимается эффект при надевании силовой брони (как минимум с солнцезащитных).

 

В окне удобно играть когда запущен мессенджер, что бы оперативно отвечать. Переключение к другим программам быстрее. Оконный режим необходим для маппера. Что бы переключаться между утилитами по моддингу. 

 

Слот для очков могу добавить в виртуальный бэклог. Добавление слота, сразу создаст несовместимость со старым фолом на уровне карт. К примеру если криттеру дать очки, то инвентарь хранится в карте. 

 

Изучу вопрос. В любом случае будем проект развивать и добавлять новый функционал.

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

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

Всякие доп. слоты на лобке у игрока тоже в мусорку. Нарисуйте для начало новый интерфейс потом предлагайте.

 

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

Для очков и сейчас скриптовой мод сделать чтобы они работали в инвенттаре только это стремная задумка нафиг не нужна кроме одного человека)
Ссылка на комментарий

Для юзания шейдеров нужен современный opengl 3. Нужно будет написать всю графическую часть на opengl 3. Думаю нужно начать с чего то простого.

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

К примеру берём LDL допиливаем работу с альфа каналом изображений. Добавит обработку клавиатуры. Уже минимальный фреймворк без лишних зависимостей готов. Растяжение текстур работает автоматом при задании размера текстуры при рисовании.

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

Потом можно прикрутить шейдеры. Главное Api будет прежним. Создать окно, вывести изображение, обработать ввод. Добавить систему шейдеров.
Ссылка на комментарий

прикрутить компилятор скриптов в двиг. Что бы скрипты из ssl компилировались пр загрузке локации.

вот ты опять всякую фигню придумываешь - скрипты имеют макросы, условную компиляцию, или ты собираешься все .h файлы для каждого мода таскать с движком - для начало семь раз подумай потом предлагай)

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

Еще хочу поддержку таких карт

а я хочу тридэээ, ну детский сад.

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

Еще предлагаю отказаться от zlib на miniz

в чем разница?.

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

Родная душа, тоже любишь писать велосипеды.

не то что велики, просто минимализм.

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

Как раз в LDL реализовал изображения в ОЗУ как массив байт CpuImage, так и непосредственно изображения как текстуры GpuImage. Следует добавить функционал обновления GpuImage байтами из CpuImage. GpuImage может выступать как буфер экрана.

Посмотри под твои требования подходит?

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

вот ты опять всякую фигню придумываешь - скрипты имеют макросы, условную компиляцию, или ты собираешься все .h файлы для каждого мода таскать с движком - для начало семь раз подумай потом предлагай)

 

Забей, это я опять я борюсь с бинарными форматами.

 

 

в чем разница?.

 

Не тащить всю библиотеку zlib в проект.

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

Потом можно прикрутить шейдеры.

по шейдерам - вообще куча вопросов, и не понимания как и их прикручивать с этой кросcплатформеностью сраной.

 

ты на люних сидишь?

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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