Jordan Опубликовано 15 октября, 2021 Автор Опубликовано 15 октября, 2021 Всем привет. Проект не заброшен. Много времени уходит на написание базового движка. (Графика, GUI ит.д) В последнем обновлении добавил загрузку frm. Кодhttps://github.com/JordanCpp/Commune Ссылка для скачивания https://github.com/JordanCpp/Commune/archive/refs/heads/master.zipСкачайте и запустите Fallout.batСкачайте и запустите Disciples.bat (Если интересно) Ссылка для клонирования репозитария https://github.com/JordanCpp/Commune.git Для компиляции нужна только Visual Studio Community 2019. Все остальные файлы включены в проект.На данный момент закладываю основы. В след обновлении добавлю редактор и вывод карты. Далее улучшить редактор. Добавить редактирование карты. Рад если кто нибудь присоединится к проекту. Советом или кодом. 3
Jordan Опубликовано 19 августа, 2022 Автор Опубликовано 19 августа, 2022 Все больше склоняюсь к тому, что бы перекодировать форматы оригинального fallout 2 в современные форматы текста, изображений и звука. И уже их воспроизводить. На сайте https://github.com/falltergeist/falltergeist как раз есть исходники инструментов. Конечно это будет нарушение прав, но кому сейчас какая разница.
Pyran Опубликовано 19 августа, 2022 Опубликовано 19 августа, 2022 Фолу нужен хороший редактор скриптов, чтоб непрограмисты, простыми словами могли создавать квесты.Напроимер: в интерфейсе пишем идти на карту 11, ждать 2 часа, поговорить с неписем Фред. А код пишется сам. Интеллектуально.Но перекодировка форматов тоже хорошо. Фолтергейст, чтото там пытался в свое время. 2 Fallout 2: Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP Nevada Band: Путеводитель по играм серии | FAQ Fallout Tactics: Путеводитель по модам | FAQ База Данных: YD\YD\MF Цитата: "Помогая другим, не забывай о себе..."
Jordan Опубликовано 19 августа, 2022 Автор Опубликовано 19 августа, 2022 Фолу нужен хороший редактор скриптов, чтоб непрограмисты, простыми словами могли создавать квесты. Напроимер: в интерфейсе пишем идти на карту 11, ждать 2 часа, поговорить с неписем Фред. А код пишется сам. Интеллектуально. Это все от инструментария зависит. Я пишу простой движок вывода спрайтов с альфа каналом. Это если упрощать, там точно не будет такого инструментария. Максимум внедрить lua скрипты и конвертнуть ssl в lua. Я не пилю игру на Unity и иже с ним. Меня больше прельщает писать скрипты на С++, на языке движка. Пример как будет выглядеть скрипт вывода сообщения в консоль игры. void Tester::MapEnter(){ if (Self()->GetStat(Stat::Strength) > 7) { Game::Console("А ты силён!"); }} Наработки по конвертации ssl в С++ есть.
Pyran Опубликовано 19 августа, 2022 Опубликовано 19 августа, 2022 Это все от инструментария зависит. Я пишу простой движок вывода спрайтов с альфа каналом. Это если упрощать, там точно не будет такого инструментария. Максимум внедрить lua скрипты и конвертнуть ssl в lua. Я не пилю игру на Unity и иже с ним. Меня больше прельщает писать скрипты на С++, на языке движка. Пример как будет выглядеть скрипт вывода сообщения в консоль игры. void Tester::MapEnter(){ if (Self()->GetStat(Stat::Strength) > 7) { Game::Console("А ты силён!"); }} Наработки по конвертации ssl в С++ есть.Так все вроде за, я лишь высказал мысль, что гложет не одного диванного сценариста, которые не могут или не хотят по разным причинам работать с кодом игры... На вашем примере:В gui пользователь пишет (выбирает) "сообщение в консоль" и этот код прописывается автоматом. Fallout 2: Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP Nevada Band: Путеводитель по играм серии | FAQ Fallout Tactics: Путеводитель по модам | FAQ База Данных: YD\YD\MF Цитата: "Помогая другим, не забывай о себе..."
Mr.Sталин Опубликовано 21 августа, 2022 Опубликовано 21 августа, 2022 Фолу нужен хороший редактор скриптов, чтоб непрограмисты, простыми словами могли создавать квесты.------------Волшебной палочки не существует. Там был где-то редактор который мог конструировать диалоги, но он такой запутаный и не понятный шо ппц.
Pyran Опубликовано 21 августа, 2022 Опубликовано 21 августа, 2022 ------------Волшебной палочки не существует. Там был где-то редактор который мог конструировать диалоги, но он такой запутаный и не понятный шо ппц.Так не палочка, а код преобразовывать в слова ,(точнее на оборот), написать скажем 30 действий с вариациями и уже можно разнообразный примитив, а крученый и печеный, что никто не разберется, такое и даром не надо Fallout 2: Путеводитель по модам | FAQ | Перевод модов | Путеводитель по RP Nevada Band: Путеводитель по играм серии | FAQ Fallout Tactics: Путеводитель по модам | FAQ База Данных: YD\YD\MF Цитата: "Помогая другим, не забывай о себе..."
Mr.Sталин Опубликовано 21 августа, 2022 Опубликовано 21 августа, 2022 Такой редактор будет строить примитивные диалоги. Всмысле если не шаришь в базовом програмировании, то получишь на выходе примитивный диалог, без логики, без переменых.Так что он посути тебе и не поможет, а те кто хоть как-то понимают в програмировании скриптов такой конструктор и не нужен будет.В качестве помощника только если.
Foxx Опубликовано 21 августа, 2022 Опубликовано 21 августа, 2022 Все больше склоняюсь к тому, что бы перекодировать форматы оригинального fallout 2 в современные форматы текста, изображений и звука. И уже их воспроизводить.Чего-то вспомнилось, для Арканума вроде ты тоже новый движок делал?
Jordan Опубликовано 21 августа, 2022 Автор Опубликовано 21 августа, 2022 Такой редактор будет строить примитивные диалоги. Всмысле если не шаришь в базовом програмировании, то получишь на выходе примитивный диалог, без логики, без переменых.Так что он посути тебе и не поможет, а те кто хоть как-то понимают в програмировании скриптов такой конструктор и не нужен будет.В качестве помощника только если. Да так и есть. Проще писать кодом. Чем бороться с ограничениями такой программы.добавлено позжеЧего-то вспомнилось, для Арканума вроде ты тоже новый движок делал? Да. Я делал такой проект https://github.com/JordanCpp/Commune Он объединял три игры, но один движок. Сейчас я пересмотрел концепцию. В основе останется прежней, единая библиотека по работе с графикой, музыкой и т.д + отдельно игры. Arcanum и Fallou 2 почти идентичны по написанию движка, есть небольшие различия в геймплее. Но в остальном код будет между ними одинаков. Вот отдельный вариант для Arcanumhttps://github.com/JordanCpp/ArcanumWorld Сейчас я у себя в голове окончательно собрал весть проект Теперь можно браться за реализацию. У меня еще много кода на локальном ПК, где я экспериментировал, с 3Д, скриптами и т.д Сейчас я готов воплощать.добавлено позжеВсе так же открытый код, язык С++ (высокоуровневый С++11) не сложнее питона. Внизу SDL2. Скрипты будут писать на С++ и собираться вместе с движком. Редактор будет встроен. В меню добавлю кнопку редактор. Движок будет работать только с новыми форматами изображений png, mp3, xml. Для основы возьму файлы Sonor'ы и сконвертирую в новые форматы. Как раз не будет проблем с распространением ресурсов.добавлено позжеЕщё большой плюс исходники fallout 2 доступны и всегда можно посмотреть как там, что реализовано. Или уже брать и допиливать движок, внедряя новые форматы графики и остального. Возможно это более быстрый и простой вариант, так как он уже работает.добавлено позжеКачество исходников чистый си + глобальные переменные по всему коду. Поддерживать ещё реально. Но вот внедрять фичи, ой как не просто, не поломав все.
Mr.Sталин Опубликовано 21 августа, 2022 Опубликовано 21 августа, 2022 Качество исходников чистый сиподход там говняный))еще и макросы понатыкали вместо констант там где они и ненужны (с начало не было, и читалось хорошо) теперь если смотреть без открывания в редакторе надо еще и эти макросы читать, или догадываться что там за значение.В общем совсем разочаровал подход к тем исходникам.
Jordan Опубликовано 22 августа, 2022 Автор Опубликовано 22 августа, 2022 Добавил болванку нового движка. Сейчас никакой игры нет, просто открывается окно которое вы можете закрыть. https://github.com/JordanCpp/Revival Как юзать. 1. Скачать с гит хаба репозиторий https://github.com/JordanCpp/Revival/archive/refs/heads/master.zip2. Распаковать.3. Перейти в каталог Games/Fallout и запустить Fallout.exe Архитектурно разделил движок на две части. 1. Библиотека скрывающая SDL2 называется Ext2. Сам движок Fallout юзающий данную библиотеку.3. Сам проект называется Revival - Возрождение. Возможно кто то захочет возродить другую игру используя библиотеку Ext. Для этого нужно создать каталог в репозитории и прописать его в cmake. Обо всех изменениях буду писать сюда.добавлено позжеСейчас переношу функционал из данного проекта https://github.com/JordanCpp/Communeдобавлено позжеЧто буду делать.1. Доработать Painter для вывода графики, картинок.2. Написать необходимые менеджеры, типа менеджер картинок.3. Написать простой GUI.4. Реализовать с помощью GUI, UI интерфейс для игры.5. Создать локацию, научить движок сохранять и загружать.добавлено позжеМногое из списка сделано, буду брать код и адаптировать к новому проекту.добавлено позжеРесурсы для игры будут взяты из мода Sonora. Графика frm будет конвертирована в png.добавлено позжеСама игра и ее ресурсы будут находится в данном репозитариq. После каждого обноdления, нужно будет скачать репозиторий и распаковать. Если кто то умеет в плюсы, просто клонируйте репозиторий в Visual Studio. Чуть позже добавлю доработки в cmake, что бы двиг собирался под linux.добавлено позжеБуду рад техническим советам по движку и вообще. Только не нужно советовать брать unity или юзать 3D, тупо долго разбираться. Пока будет простой 2D движок.
Jordan Опубликовано 22 августа, 2022 Автор Опубликовано 22 августа, 2022 Добавил в проект библиотеку rapidjson, все текстовые файлы будут в json формате. добавлено позжеПрототипы объектов, конфиги игры, карты, файлы локализаций тоже будут в json формате.добавлено позжеАнимация будет хранится в png файле. Каждая анимация идёт в комплекте с json файлом. Где описаны свойства анимации и очередность кадров с направлениями, у каждого кадра есть размеры и координаты. Пример https://vsegda-pomnim.com/uploads/posts/2022-02/1645901012_45-vsegda-pomnim-com-p-spraiti-foto-55.pngдобавлено позжеСобираюсь добавить поддержку модулей. Каждый мод будет находится в своем одноименном каталоге. При загрузке их можно подключить. Примерно понимаю как реализовать данную возможность. Я ушел от концепции числовых идентификаторов как в оригинальном движке. Только namespace + имя ресурса.
Jordan Опубликовано 25 августа, 2022 Автор Опубликовано 25 августа, 2022 Что буду делать.1. Доработать Painter для вывода графики, картинок. Готово2. Написать необходимые менеджеры, типа менеджер картинок. Готово3. Написать простой GUI. В процессе, реализованы базовые вещи4. Реализовать с помощью GUI, UI интерфейс для игры. В процессе (Есть главное меню)5. Создать локацию, научить движок сохранять и загружать. Ожидает 1
Jordan Опубликовано 25 августа, 2022 Автор Опубликовано 25 августа, 2022 Пилю главное меню. Кнопка красным выделяется при наведении курсора, на скрине его не видно. Еще обновил SDL библиотеки до последних версий. Понимаю, что не густо добавлено позжеПишу по заветам отцов, каждый класс реализует конкретный функционал. В дальнейшем будет легко написать тесты. Главное не запутаться в классахдобавлено позжеСледующий шаг, сделать переход кнопок. Сейчас они просто нажимаются. Реализовать редактор, с выводом простенькой карты в json формате. И дальше наполнять функционал редактирования.добавлено позжеСсылка на скачивание https://github.com/JordanCpp/Revival/archive/refs/heads/master.zip Распакуйте и запустите Games/Fallout/Fallout.exe
Farvel Опубликовано 25 августа, 2022 Опубликовано 25 августа, 2022 А нельзя достать движок Цвета как-то? Может, это упростит задачу?
Jordan Опубликовано 25 августа, 2022 Автор Опубликовано 25 августа, 2022 А нельзя достать движок Цвета как-то? Может, это упростит задачу?Его движок давно открыт.https://github.com/cvet/fonline Особо не упростит. Каждый движок пишет по своему, свой стиль, набор библиотек. Взять код из другого проекта и адаптировать это возможно, если они написаны хотя бы на одной основной либе, к примеру SDL. Я сейчас пишу по туториалам. К примеру как вывести картинку, сделать анимацию, и т.д Я стараюсь все делать как можно проще, но не проще необходимого. У меня нет идей, как ускорить проект. Переходить на unity:)добавлено позжеЯ пару дней посвящу написанию тестов. Без них время на исправление ошибок увеличивается. Так как не понятно, что и где сломалось.
Farvel Опубликовано 25 августа, 2022 Опубликовано 25 августа, 2022 Не надо на Юнити переходить. Оно - мертвое
Jordan Опубликовано 25 августа, 2022 Автор Опубликовано 25 августа, 2022 Я сам бэкенд разработчик, основная специализация базы данных, обвязка C#. И упор на оптимизацию. Сейчас с новой работой ещё и часть фронта добавилась. Поэтому разработка даже простых 2D игр для меня в новинку.добавлено позжеНе надо на Юнити переходить. Оно - мертвоеДа это больше шутка. Пока изучишь этот юнити, проще по туториалам на С++.добавлено позжеБуду рад советам по реализации движка. Ссылки на статьи или по коду.добавлено позжеРазобрал ресурсы мода Fallout Sonora. Интересно у них можно как то попросить рендеры в 32 битном цвете и в png. Конвертирую утилитой frm2bmp, чёт цвета бледные получаются. 1
Farvel Опубликовано 25 августа, 2022 Опубликовано 25 августа, 2022 Напиши авторам. Они заходят сюда периодически
Jordan Опубликовано 5 сентября, 2022 Автор Опубликовано 5 сентября, 2022 Вкрячиваю в двиг работу с json. Использую rapidjson. Не могу побороть ошибку. Ошибка заключается в том, что при чтении файла, строка заполняется так line = "\t\"Integer\": 42" Ext::Formats::TextFile* Ext::Loaders::TextFileLoader::Load(const std::string& path){_Input.open(path, std::ios::in); if (!_Input.is_open())throw Ext::Core::RuntimeError("Not found file " + path); _Result.clear(); std::string line; while (getline(_Input, line)){_Result += line;//_Result += '\n';} _Input.close(); return new Ext::Formats::TextFile(_Result);} Сам json { "Integer": 42, "Double": 36.6, "Boolean": "true", "String": "Hello, i am String!"} Когда я читаю ключ "Integer" библиотека выдает ошибка нет ключа. Но если читать как "Integer\\" всё ок.Не пойму, помечу в файле есть символ \? Кодировка файла utf8 Есть мысли?
Farvel Опубликовано 5 сентября, 2022 Опубликовано 5 сентября, 2022 Писал бы ты на Java - я бы подсказал. А так, во первых лучше маппить на объект, а не коллекцию - гораздо проще использовать. На C должно быть миллион библиотек мапперов, да и текущая должна предоставлять такие возможности. Вообще, мне кажется, что вот ответ на твой вопрос - ты просто не те методы используешь. У тебя либа эскейпит кавычки из джейсона.https://stackoverflow.com/questions/60410431/writing-normal-c-string-to-rapid-json-is-resulting-in-string-with-backslash
Jordan Опубликовано 5 сентября, 2022 Автор Опубликовано 5 сентября, 2022 Писал бы ты на Java - я бы подсказал. А так, во первых лучше маппить на объект, а не коллекцию - гораздо проще использовать. На C# должно быть миллион библиотек мапперов, да и текущая должна предоставлять такие возможности. Мне C# на работе хватает. Вообще, мне кажется, что вот ответ на твой вопрос - ты просто не те методы используешь. У тебя либа эскейпит кавычки из джейсона. https://stackoverflo...-with-backslash Посмотрю, файл я читаю стандартным способом. А данные символы все равно появляются. Что странно.Сделал пока, что бы работало и тесты проходились, небольшой костылёкhttps://github.com/JordanCpp/Revival/blob/master/Ext/Ext/Readers/JsonReader.cpp#L18 Зато работает, без мам, пап и смс 1
stratego Опубликовано 1 апреля Опубликовано 1 апреля Джордан, жаль что ты снёс репозитарий. Я бы глянул на чём ты остановился... А вообще у тебя склонность к старым технологиям, а тут прям, с первых постов отказ от старого. А идея была правильная, что надо универсальный движок, под арканум и Фаллоут. Но это очень трудная задача. Надо было подходить с другой стороны, создать скриптовый движок, который можно было бы подключить к разным существующим движкам - реализовав определённый функционал. И тоже самое для Арканума. А уж потом делаешь свой движок и подключаешь эти скриптовые, ну ли просто к любому готовому графическому, не заморачиваясь со своим. Скажем, что-то похожее на подход freecivil, там для клиента надо реализовать некоторый функционал, а остальная часть уже готова (сервер, логика, файлы настроек, сценариев). Но пример этот с натяжкой подходит, уровень того что надо будет реализовывать - разный )) А вообще эта тема наглядно показывает, что у всех свои взгляды, на то каким должен быть движок для Фаллоута... Для Сталина, SFML - вообще плохой вариант, для основы для движка, ибо устарел жутко, и сильно тормозной вариант графики будет по умолчанию. Вывести десяток тысяч спрайтов на экран и уже тормозит, даже на железе 12-15 летней давности, можно десятки тысяч спрайтов выводить, при 60 фпс, при полной поддержке прозрачности. Хотя это наверное всё избыточно для фаллоута, я не знаю сколько максимум спрайтов выйдет в кадре... Может там и 8к за глаза хватит. «Прогресс технологии одаряет нас всё более совершенными средствами для движения вспять». ( Олдос Хаксли )
twitchterror Опубликовано 7 апреля Опубликовано 7 апреля (изменено) А почему все сводится к построению самописного движка? А не, скажем, пересборки игры на условных юнити/анрил/годот? Возможно ответ довольно простой и очевидный, но видимо не для меня, сколько не листаю форум всегда речь идет только об именно самописных или модифицирование старого. Вообще есть плюсы или минусы от того или другого варианта? Изменено 7 апреля пользователем twitchterror
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти