GTA Builder Форум

GTA Vice City => Моды => Тема начата: Shagg_E от Май 16, 2016, 01:47:59 am

Название: Сцена Главного Меню
Отправлено: Shagg_E от Май 16, 2016, 01:47:59 am
Бывает - делаешь что-то важное(диплом, например) - а какая-нибудь безумная идея заполняет разум, не давая ничего сделать(прав был Лёнчик (https://www.youtube.com/watch?v=CsCw4YOysTg)). Пару дней назад такой стала для меня идея мини-сценки в главном меню игры, по типу многих современных(и не очень) игр.
Выглядит это примерно так:
! No longer available (http://www.youtube.com/watch?v=OsYKL08Zpb4#)

Выложил (http://gtabuilder.ru/gta_vc/mods/asi_plugins/129-main-menu-scene.html) на сайт тестовую версию, там же - сурсы.
В принципе - поскольку делалось это изначально для своей мини-глобалки - я добился желаемого результата, однако идея сделать версию "для всех" стала следующей на очереди безумных идей, а тут возникает несколько проблем(все они прописаны в ридми, но я продублирую с комментариями):
- Меню выбора скина игрока вызывает краш игры. Это происходит потому, что меню использует другой img архив, нежели игра.
Игра подгружает модель игрока до того, как я подменяю img-архив. А после подмены, какие-то оффсеты не совпадают и у игры возникает конфликт на ровном месте. Но тут можно заблочить это меню путем временной переделки кнопки вызова этого меню: чтобы кнопка "Player Skin Setup" вела не в соответствующее меню, а обратно в опции. Но я не знаю нужного адреса памяти.
- "Main Menu Scene" не совместим с плагином "GInput". GInput просто блокирует всё это.
Тут фигня какая-то - не знаю, почему так происходит.
- "Тяжелые" модели коллизии для "Main Menu Scene" вызывают краш при загрузке новой игры. Так что, пожалуйста, не используйте их.
Одна и та же col-модель(даже "тяжелая") может спокойно позволять загружать новую игру снова и снова(простейший пример - та недавняя сборка с каньоном - ссылка в конце сообщения (http://forum.gtabuilder.ru/index.php?topic=200.msg2179#msg2179)), однако если сунуть таковую в кол меню - новая игра потом не загрузится. Но это мелочь - всё равно в меню желательно использовать максимально простую и "легкую" сцену для быстрой первоначальной загрузки.
Ну, и - на десерт:
- Загрузка сохранений вызывает краш. Это потому, что игра уже "загружена"(для "Main Menu Scene") и новый scm скрипт "Main Menu Scene" не совместим с сохранением. По этой причине, меню загрузки сохранений заблокировано, так что вам придется запускать новую игру, чтобы загрузить сохранение после этого.
Это большая проблема для почти для всех. Не для меня - поскольку в моей мини-глобалке не будет сохранений, но для всех остальных вариант "запускать новую игру, чтобы загрузить сохранение после этого" может оказаться крайне геморройным. Да и мне самому играть в оригинальный Вайс из-за этого становится неудобно.
Это - основная причина создания темы. Можно сделать рандомные сцены, экспериментировать со звуками, пунктами меню и прочими фантазиями, но без решения этой проблемы дальнейшее развитие проекта бесполезно, ибо любые прикольные менюшки не стоят такого геморроя при загрузки сохранений.

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

Есть второй вариант - остановить выполнение scm путем выставления 0x44FEDD на 0(вернуть - 1), и создавать сценки, к примеру, на Lua (http://gtabuilder.ru/vice_lua_engine.html), НО! Это половина решения, ибо остается аналогичная проблема с картой! Т.е. нужно всё равно найти способ заставить игру перезагрузить всё.
Есть еще вариант - взять предыдущий вариант и просто не использовать новую карту. Но это уныло, и глупо, ибо меню будет загружаться также долго, как и сама игра(скорость загрузки и была изначальной причиной создания своей карты).

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

P.S. Также - подозреваю, что весь плагин написан через одно место, поэтому буду не против, если кто-нибудь переделает всё основательно. Вообще - это типа "open-source", так что, кто захочет - может сделать и опубликовать новую версию самостоятельно. Надеюсь - в финале мы получим что-то стоящее.
Название: Re: Сцена Главного Меню
Отправлено: xanser от Май 27, 2016, 08:02:37 am
- Меню выбора скина игрока вызывает краш игры. Это происходит потому, что меню использует другой img архив, нежели игра.
Игра подгружает модель игрока до того, как я подменяю img-архив. А после подмены, какие-то оффсеты не совпадают и у игры возникает конфликт на ровном месте.

Может быть эту проблему получится решить не заменой img-архива, а подключением его как дополнительного в gta_vc.dat в самом верху через строку CDIMAGE data\maps\menu\menu.img, туда же перенести содержимое menu.dat.
А вообще для чего выделять второй img, разве в сцене используется карта не из gta3.img?

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

Игра подгружает модель игрока до того, как я подменяю img-архив.
Ты же можешь менять адреса еще до вызова SetTimer(0,0, 0, (TIMERPROC)MainMenuScene), добавь перед ним все, что нужно сразу подменить.
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Май 27, 2016, 10:44:27 am
Игра подгружает модель игрока до того, как я подменяю img-архив.
Ты же можешь менять адреса еще до вызова SetTimer(0,0, 0, (TIMERPROC)MainMenuScene), добавь перед ним все, что нужно сразу подменить.
Действительно(протупил чет): это решит проблему со скином, но всё же главная проблема - с сейвами...

UPD: Ах, да - тут проблема: в этом случае уже в "нормальной" игре выбор скина будет вызывать краш, т.к. в меню выбора скина будет загружаться моделька по старому оффсету из img меню, т.е. - несуществующая в "нормальной" игре моделька.
Но в любом случае, скин - это фигня, нужно решить сейвы, т.е. - полную перезагрузку ресурсов при загрузке сейва, как при начале новой игры.
Название: Re: Сцена Главного Меню
Отправлено: GeniusZ от Ноябрь 12, 2016, 11:00:01 am
Радар и худ можно было убрать в menu.scm, а не в исходнике плагина
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Ноябрь 12, 2016, 10:54:33 pm
Худ в scm не убирается в Вайсе(стандартными опкодами) - только через память. Поэтому делал сразу через плагин.
Но вообще - это тестовая версия, в сейчас уже всё с этим ок. Вообще - программная часть закончена, сейчас пилю тестовые менюшки, заодно корректирую по-немногу плагин. Скоро выложу финалку.
Название: Re: Сцена Главного Меню
Отправлено: mfisto от Ноябрь 12, 2016, 11:30:54 pm
Мы ждем)
Название: Re: Сцена Главного Меню
Отправлено: DK от Ноябрь 13, 2016, 09:58:58 pm
Самый оптимальный вариант - отрендерить нужную сцену в камеру и отобразить полученную картинку в меню как бэкграунд.
И не будет никаких проблем с сейвами, худами и прочими вещами.

На написание такого плагина уйдёт день, ещё день на подготовку моделек и тесты.
2 дня получается.
У тебя сколько ушло, Shagg?  :P
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Ноябрь 14, 2016, 02:27:20 am
Самый оптимальный вариант - отрендерить нужную сцену в камеру и отобразить полученную картинку в меню как бэкграунд.
И не будет никаких проблем с сейвами, худами и прочими вещами.

На написание такого плагина уйдёт день, ещё день на подготовку моделек и тесты.
2 дня получается.
У тебя сколько ушло, Shagg?  :P
2 дня :D Ну, первоначальную версию(0.1) придумал и сделал за 2 дня, пусть и с кучей проблем)

Тут один нюанс. Изначально я это сделал для своего мода, а там ни скинов, ни сейвов нет, поэтому вышеописанные проблемы таковыми не являлись и всё работало, как задумано, но...мне вдруг приспичило сделать полноценный инструмент для модмейкеров, чтобы "киданул файлы - и всё заработало". В финалке можно будет "собирать" в каждом меню "мини-гта", т.е. сцены со сложными скриптами и катсценами(скоро покажу примеры). И таких меню можно пихать в спец. папку сколько угодно: каждый раз запускается рандомная. Фактически, получился какой-то модлоадер ;D
Из-за того, что на C++ по-факту начал писать недавно, то всё это дело(базовую) я писал 3 месяца(многие вещи, типа поиска файла по имени, делал впервые), а следующие 3 - устранял косяки, расширял функционал, снова устранял косяки и снова устранял косяки, ибо их было выше крыши. Сейчас вроде всё ок, но по-ходу создания тестовых менюшек, может еще что-то обнаружиться...

Так что в целом я этим занимаюсь 6 месяцев. Чувствую, что больше не полезу писать плагины(слишком затягивает, а мне ведь нужно глобалку свою допилить)..
Название: Re: Сцена Главного Меню
Отправлено: xanser от Ноябрь 14, 2016, 04:21:36 am
Самый оптимальный вариант - отрендерить нужную сцену в камеру и отобразить полученную картинку в меню как бэкграунд
DK, можно подробнее описать, что имеется ввиду, последовательность сохраненных кадров-картинок или типа видео в бэкграунде, или камера может хранить какую-то память сцены и воспроизводить, не очень понятно...
Название: Re: Сцена Главного Меню
Отправлено: DK от Ноябрь 14, 2016, 08:47:30 pm
Камера хранит изображение сцены, которую ты в неё рендеришь.
Надо создать отдельную камеру, рендерить в неё нужные обьекты, и выводить полученное изображение с камеры как спрайт.

По такому принципу работают зеркала в gta sa, только там текстура с камеры цепляется на 3д-плоскость.

Я уже набросал кое-какой код (рабочий), нужно только с моделями решить вопрос.
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Ноябрь 14, 2016, 10:59:45 pm
Я был бы только "за" нормально написанный плагин, но всё же закончу работу, чтобы не пропадало добро. Только из-за отсутствия аналогов я начал работу над этим.
Единственный, как мне кажется, минус варианта, предложенного DK - это бОльшая сложность создания самих сцен для рядового модмейкера...
Название: Re: Сцена Главного Меню
Отправлено: xanser от Ноябрь 15, 2016, 04:13:30 am
DK, немного уже не по теме, но хотелоь бы побольше узнать о таких возможностях камеры, я именно с этим прицелом и поднял вопрос, хорошо бы создать отдельную тему. К примеру интересно, камера хранит только изображение, которое видит пользователь, или можно рендерить любое направление, например задние зеркала получается нужно рендерить где-то в фоновом режиме, пока основная камера показывает изображение впереди. У меня почти получилось создать зеркало заднего вида как элемент HUDа, но как передать туда другую камеру, я не разобрался. Ты еще рассказывал про тень из mvl, что она тоже получена с отдельной камеры, вообще широкие возможности открываются...
Название: Re: Сцена Главного Меню
Отправлено: GeniusZ от Ноябрь 15, 2016, 08:18:20 pm
А возможно ли реализовать рендер с нескольких камер на один экран? (теоритически)
Название: Re: Сцена Главного Меню
Отправлено: Sektor от Ноябрь 18, 2016, 12:43:16 am
Цитировать
А возможно ли реализовать рендер с нескольких камер на один экран? (теоритически)
Теоретически и практически да, но возиться придется над этим не мало. Однако, нужно же еще захватывать педов/транспорт, а не просто карту. Если быть точным, то на один экран имеется введу, где-то еще была бы область для вывода изображения из второй камеры, ну это в обычный вертекс рендерится как из вариантов.
Название: Re: Сцена Главного Меню
Отправлено: DK от Ноябрь 19, 2016, 01:23:30 pm
DK, немного уже не по теме, но хотелоь бы побольше узнать о таких возможностях камеры, я именно с этим прицелом и поднял вопрос, хорошо бы создать отдельную тему. К примеру интересно, камера хранит только изображение, которое видит пользователь, или можно рендерить любое направление, например задние зеркала получается нужно рендерить где-то в фоновом режиме, пока основная камера показывает изображение впереди. У меня почти получилось создать зеркало заднего вида как элемент HUDа, но как передать туда другую камеру, я не разобрался. Ты еще рассказывал про тень из mvl, что она тоже получена с отдельной камеры, вообще широкие возможности открываются...
Новая камера не будет свзяана с основной.
Для зеркала, надо будет развернуть камеру в противоположную сторону, относительно автомобиля.
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Декабрь 31, 2016, 10:54:54 pm
Наконец вроде оправился после потери старого харда и уже почти восстановил все важные данные, так что продолжаю работу над MMS.
Примерно так я изначально задумывал мод, но из-за первоначальных багов лень было это дорабатывать, однако теперь(благодаря вашей помощи и поддержке) баги устранены и всё работает как задумано(меню выбора скина по-прежнему заблочено):
! No longer available (http://www.youtube.com/watch?v=lgB5GZytddQ#)
Как доделаю вторую менюшку(чтобы было понятно, зачем я мучился с катсценами в меню) - выложу сразу всё здесь на бета-тест, поскольку наверняка еще вскроются пара багов...
Название: Re: Сцена Главного Меню
Отправлено: Shagg_E от Сентябрь 16, 2019, 05:17:50 pm
Альфа-бета-гамма недорелиз (http://newrockstar.do.am/load/mods_for_gta/gta_vice_city/main_menu_scene_0_9_public/2-1-0-125)(0.9, т.к. есть еще вещи, которые хочу добавить)
Версия рабочая и вроде без багов, но несовместима с последними версиями Ultimate ASI Loader(из-за этого разработка и встала в 2016 году), оттого распространяется с лоадером от DK(с его разрешения).
Установка: просто кидайте файлы и папки в папку с игрой.
После установки у вас должно появиться меню, как на видео из предыдущего сообщения
UPD: Обновлена ссылка - теперь ведет на public релиз(сам плагин тот же, что и в обычной версии 0.9 - добавились лишь ридми и исходник)