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

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


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

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

в смысле сам файл dll ?

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

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

не понимаю о каких требованиях ты говоришь... главное чтобы все работало на w7 32 (с XP уж ладно в топку его).

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

получится сохранить совместимость с форматами оригинального ф2. 

не понял ты о чем. какие форматы?

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

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

 

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

В основном под Linux, но сейчас собираю двиг под windows.

 

Мы о каких шейдерах говорим DirectX9,10,11?

 

в смысле сам файл dll ?

 

В сами исходники движка добавить исходники miniz.  Все библиотеки которые юзает движок, собираются с движком.

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

не понимаю о каких требованиях ты говоришь... главное чтобы все работало на w7 32 (с XP уж ладно в топку его).

 

Да под винду вплоть до Windows 95 будет работать, если юзать MinGW определенной версии. Под linux нужно допилить, поддержку xlib.

 

 

не понял ты о чем. какие форматы?

Бинарные форматы файлов, скрипты, карты, прототипы. Любые изменения добавляющие новые данные, автоматом ломают старые файлы. 

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

Не хочется зацикливаться  только на винде. Если бы данный проект был сразу под Linux я бы в винду не перезагружался. Разрабатывал на Linux и только для сборки бинарников для релиза юзал винду. 21 век уже.

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

Мр. Сталин если тебя интересует только винда, какой смысл в минимализме. Будет дополнительная библиотека SDL2.dll вместе с экзешником игры распространяться. По шейдерам проблемы. Sdl2 умеет в opengl3. Код отрисовки остаётся прежним, но можно написать систему шейдеров. Пример рисуем картинку после чего вызываем систему шейдеров и она конечную картинку преобразовывает. Нужно только портировать шейдеры dx, в opengl. Возможно есть трансляторы.
Ссылка на комментарий

В общем надо создать два проекта у тебя свой у меня свой и обмениваться.

Иначе конфликт интересов будет нам мешать.

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

Мы о каких шейдерах говорим DirectX9,10,11?

в sfall реализации под DX9 (микрософтовский язык)

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

Бинарные форматы файлов, скрипты, карты, прототипы. Любые изменения добавляющие новые данные, автоматом ломают старые файлы. 

а зачем ты собрался их ломать? - нужно стараться добавлять так чтобы была обратная совместимость - иначе это будет провал.

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

Не хочется зацикливаться  только на винде. Если бы данный проект был сразу под Linux я бы в винду не перезагружался. Разрабатывал на Linux и только для сборки бинарников для релиза юзал винду.

объясни мне тупому

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

чето это какая-то очень тупая схема, кто это так придумал? наверное очередной американский гений)))))

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

В сами исходники движка добавить исходники miniz.  Все библиотеки которые юзает движок, собираются с движком.

я не смотрел что там, и как у вас - а разве Zлиб не добавляется таким же образом, или у вас там динамическая библа используется.

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

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

 

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

 

 

я не смотрел что там и как у вас - а разве Zлиб не добавляется таким же образом, или у вас там динамическая библа используется.

Как там у нас, а у вас?)

 

У автора проекта собирается все в один единый бинарник. Без смс и dll.

 

а зачем ты собрался их ломать? - нужно стараться добавлять так чтобы была обратная совместимость - иначе это будет провал.

 

 Да, поэтому особенный упор на скрипты. Что бы не ломать совместимость.

 

 

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

Еще даже не начинали проект пилить уже конфликт интересов))

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

В общем вот мой глобальный план на годы вперед.

  1. допиливавшие недореализованных фич sfall, их много всяких разных.
  2. разделить на слои общую картинку, чтобы отрисовка была в разные текстуры, как я это планировал и в sfall чтобы реализовать нормальное взаимодействие шейдеров с картинкой - а не как сейчас один на все.
  3. добавление 32-битных изображений, .wav (другие форматы под вопросом) 
  4. добавление функционала маппера (это на втором плане, долгоиграющая тема).

 

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

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

Как там у нас, а у вас?)
У автора проекта собирается все в один единый бинарник. Без смс и dll.

А у нас - мы пока отдыхаем) думаю к концу следующего месяца зайду к вам в гости посмотрю что вы там навояли с движком)))
 
ну так в чем разница zlib и miniz

просто меньше кода?

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

 

ну так в чем разница zlib и miniz просто меньше кода?

 

Да.

 

 

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


Здесь у нас расхождений нет. Гуй для маппера, с нуля будем пилить или возьмем либу типа ImGUI https://github.com/ocornut/imgui , ее можно встроить в SDL2 проект.
Ссылка на комментарий

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

очень хочется. очень =) ну это глупо брать их в руки.

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

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

Мр.Сталин? Братцы!?

unknown.png

 

от куда скрин? это точно не Ф1\2, Сонора, Невада или Resurrection.

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

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

 

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

 

Так-так-так. Кажется у меня появился новый герой!

Я не знаю технических ограничений. Выше предложил вариант с перком, ну может он ещё сложнее в реализации.

 

Так то мы уже ранее выяснили, что улучшенного графония не реализовать. И системы поломки оружия\брони тоже не будет. Но хоть бы очки. Кажется у Мр.Сталина на мой счёт есть пунктик.

 

Хм. Я могу ошибаться. Но вроде теперь радар и счётчик Геймера работает из инвентаря (в руки брать не надо)?

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 | ВК

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

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

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

Данная карта из темы про fonline.

 

Поэкспериментировал с кодом. Преобразовал несклько файлов в static class'ы. Переименовал методы. Использую ide msvc, поэтому на файл трачу меньше 5 минут. В принципе не такая уж и безумная мысль все преобразовать в классы. Кстати если это осуществить, будет легче потом разрывать зависимости между классами. К примеру класс А зависит от Б и В. Тогда в конструктор класса А передать ссылки на Б и В. Причесать код возможно.

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

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

 

Сейчас код в таком состоянии, что просто невозможно, что то нормально сделать.

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

Код реально мешанина, нужно рефакторить. В текущем состоянии непригоден для нормального моддинга.
Ссылка на комментарий

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

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

Данная карта из темы про fonline.

Распишу подробнее своё видение, ну на всякий случай:

 

1. В инвентаре жмём "использовать" на Очки.

2. Очки не исчезают.

3. Игрок получает перк "Глазастый".

4. Повторное использование Очков отменяет перк "Глазастый". Второй раз перк выдаваться не должен.

 

далее

 

5. Жмём "использовать" на Солнцезащитные очки.

6. Перк "Глазастый" отменяется.

7. Получаем перк "Солидный" от Солнцезащитных очков.

8. Повторное использование Солнцезащитных очков отменяет перк "Солидный".

 

далее

 

09. Если есть несколько одинаковых очков: использование не дублирует перки.

10. Исчезновение очков из инвентаря (как минимум могут оставаться в руках) должно отменять перк.

11. В идеале:

11.1. надевание СиловойБрони должно отменять перк "Солидный". Т.к. чисто логически ношение Солнцезащитных очков на\под шлемом не должно вызывать эффекта (ХР+1) у окружающих.

11.2. но ношение простых Очков всегда должно сохранять эффект (ВС+1). Правда и здесь можно задуматься над логикой, я проблем не вижу. Многие люди (я в том числе) носят очки и под шлемом, проблем со зрением это не вызывает.

12. Мод должен работать с RP.

13. Эффект от ХР и ВС должен отображаться в характеристиках.

 

Аргумент:

12. очки в Фолле уникальный предмет, но почти не используются. Лично мне лениво перемещать очки из инвентаря в руки.

13. и никакой логики в этом нет. тем более работа некоторых предметов реализована через инвентарь, вроде Счётчик Гейгера и Радр.

14. очки на баланс не влияют по многим причинам. очки не сразу получишь. планировать билд под ВС или ХР такое себе занятие.

15. очки становятся более актуальными и практичными.

 

 

я был бы очень признателен за реализацию, знаю много волшебных слов =)

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 | ВК

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

Честно Дебильная схема - после 3-го пункта схема летит в тартарары т.е очки выкидываются в мусорное ведро. Игрок остается с перком но без очков.

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

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

Движок уже портанули под linux.

 

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

 

Дописываю программу, которая преобразует функции си в классы С++ и по всему коду заменяет вхождения этих функций. Пока отлаживаю, чет глючит обработка h файлов. Обмазался С++ 17 с regex и filesystem'ом :)

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


Сам код, пока в процессе реализации.

 

https://github.com/JordanCpp/Refactor

 


Сейчас цель перевести код на классы. Разорвать зависимости между классами. Без изменения функционала движка. Потом уже можно фичевать. С текущим комком кода, не реально, что то сделать.

 

Утилита стала лучше. Осталось добавить обработку пограничных случаев.

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

Честно Дебильная схема - после 3-го пункта схема летит в тартарары т.е очки выкидываются в мусорное ведро. Игрок остается с перком но без очков.

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

объясни. почему через перк нельзя? мне казался этот вариант проще.

 

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

 

--

кажется уже несколько раз движок переписали. а некоторые плюшки так и не появились.

 

--

кстати. а нельзя очки одевать в один слот вместе с бронёй? поверх друг друга.

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 | ВК

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

да в задницу!

Запустил - тормозит безбожно около 5фпс - к черту тормозной SDL.

Под linux? В виндовой версии есть ограниченияе в 60 fps. Загрузка проца 1-3 процента. Ноутбук ryzen 3500u

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

Тормозить не должно, sdl просто обновляет текстуру пикселями. Напиши какая ось и железо.
Ссылка на комментарий

Взял готовый ехе который на гитхабе строится.

Запустил на win7 чем больше разрешение тем больше тормозит. Игровой пень4 того времени для которого такая игра априори не должна тормозить. На fullнд слайдшоу.

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

Взял готовый ехе который на гитхабе строится.

Запустил на win7 чем больше разрешение тем больше тормозит. Игровой пень4 того времени для которого такая игра априори не должна тормозить. На fullнд слайдшоу.

Понял. Gpu только выводит картинку но все картинки и анимацию рисует в буфер проц. При увеличении разрешения, увеличивается и количество пикселей для копирования в буфер. Это нормально. Не в SDL дело. Как вариант можно заложить на 30 кадров.

 

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

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

Старые процв вывозили, потому, что разрешения были маленькие и цвет 8 бит. То есть скопировать 60 раз в секунду нужно 640x480x8, при fullhd 1920x1080x4. Пикселей стало больше на порядок.
Ссылка на комментарий

Ну как это не в sdl дело, если тоже самое делать в diretx то уже будет под 800 фпс. Значит такая реализация в sdl дерьмовая.

Может это твой костыль ограничения fps, так влияет.

Сделай мне без лимита.

 

Движок нормально все отрисовывает на directdraw еще больше фпс чем под directx, так что не в оптимизации там дело, и не в проце дело.

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

Ну как это не в sdl дело, если тоже самое делать в diretx то уже будет под 800 фпс. Значит такая реализация в sdl дерьмовая.

Может это твой костыль ограничения fps, так влияет.

Сделай мне без лимита.

Движок нормально все отрисовывает на directdraw еще больше фпс чем под directx, так что не в оптимизации там дело, и не в проце дело.

Sdl юзает под капотом и OpenGL и directx. Возможно можно включить принудительно directx. Проблема явно не в sdl.

 

Вечером соберу двиг без ФПС лимита и скину в тему.

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

А зачем ты дебуг версию собрал?

- ну жесткие тормоза пропали, но фпс не выше где-то 20 при скролигне карты, видимо из-за дебуга.

 

Собрал релиз версию.

https://disk.yandex.ru/d/epJRtRtTv4u8ow

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

Как и положено дебаг занижает производительность, но картинка все рано slowmove, на глаз в районе где-то 40фпс, в общем sdl не на уровне, как если запустить под directx в sfall.
(надо будет точно померить)

 

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

 


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

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

Не пойму, где тема по Community Edition? Нашёл только эту. Хотел бы обратить внимание на то что уже заехала поддержка сфалл массивов, и вот только что - поддержка глобальных скриптов:

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

 

Всем любителям ассемблерных костылей в виде sfall скоро можно будет сушить вёсла ))

On 5/15/2022 at 7:25 PM, Jordan said:

Sqlite это встраиваемая файловая реляционная база данных. Бд это просто бинарный файл, позволяющий хранить любую информацию. Язык запросов использует sql, как редактор можно взять dbeaver.

Конфиги в sqlite.. вот это истинная наркомания)) если уж выносить то в yaml/json, формат должен быть удобен для git и мержей, и чтобы с любого блокнота можно было легко править. sqlite подходят для хранения каких-то внутренних реляционных данных, не для конфигов.

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

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

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

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

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

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

Войти

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

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

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