Бывает - делаешь что-то важное(диплом, например) - а какая-нибудь безумная идея заполняет разум, не давая ничего сделать(
прав был Лёнчик). Пару дней назад такой стала для меня идея мини-сценки в главном меню игры, по типу многих современных(и не очень) игр.
Выглядит это примерно так:
Выложил на сайт тестовую версию, там же - сурсы.
В принципе - поскольку делалось это изначально для своей мини-глобалки - я добился желаемого результата, однако идея сделать версию "для всех" стала следующей на очереди безумных идей, а тут возникает несколько проблем(все они прописаны в ридми, но я продублирую с комментариями):
- Меню выбора скина игрока вызывает краш игры. Это происходит потому, что меню использует другой img архив, нежели игра.Игра подгружает модель игрока до того, как я подменяю img-архив. А после подмены, какие-то оффсеты не совпадают и у игры возникает конфликт на ровном месте. Но тут можно заблочить это меню путем временной переделки кнопки вызова этого меню: чтобы кнопка "Player Skin Setup" вела не в соответствующее меню, а обратно в опции. Но я не знаю нужного адреса памяти.
- "Main Menu Scene" не совместим с плагином "GInput". GInput просто блокирует всё это.Тут фигня какая-то - не знаю, почему так происходит.
- "Тяжелые" модели коллизии для "Main Menu Scene" вызывают краш при загрузке новой игры. Так что, пожалуйста, не используйте их.Одна и та же col-модель(даже "тяжелая") может спокойно позволять загружать новую игру снова и снова(простейший пример -
та недавняя сборка с каньоном - ссылка в конце сообщения), однако если сунуть таковую в кол меню - новая игра потом не загрузится. Но это мелочь - всё равно в меню желательно использовать максимально простую и "легкую" сцену для быстрой первоначальной загрузки.
Ну, и -
на десерт:
- Загрузка сохранений вызывает краш. Это потому, что игра уже "загружена"(для "Main Menu Scene") и новый scm скрипт "Main Menu Scene" не совместим с сохранением. По этой причине, меню загрузки сохранений заблокировано, так что вам придется запускать новую игру, чтобы загрузить сохранение после этого.Это большая проблема для почти для всех. Не для меня - поскольку в моей мини-глобалке не будет сохранений, но для всех остальных вариант "запускать новую игру, чтобы загрузить сохранение после этого" может оказаться крайне геморройным. Да и мне самому играть в оригинальный Вайс из-за этого становится неудобно.
Это - основная причина создания темы. Можно сделать рандомные сцены, экспериментировать со звуками, пунктами меню и прочими фантазиями, но без решения этой проблемы дальнейшее развитие проекта бесполезно, ибо любые прикольные менюшки не стоят такого геморроя при загрузки сохранений.
Нужно как-то убедить игру, что игра не начата и чтобы при загрузке сохранения игра загружала всё заного, как в случае старта новой игры. Но я понятия не имею, как это сделать(хоть подозреваю, что это возможно).
Есть второй вариант - остановить выполнение scm путем выставления 0x44FEDD на 0(вернуть - 1), и создавать сценки, к примеру,
на Lua, НО! Это половина решения, ибо остается аналогичная проблема с картой! Т.е. нужно всё равно найти способ заставить игру перезагрузить всё.
Есть еще вариант - взять предыдущий вариант и просто не использовать новую карту. Но это уныло, и глупо, ибо меню будет загружаться также долго, как и сама игра(скорость загрузки и была изначальной причиной создания своей карты).
Короче - не знаю, что делать... Во вложении дубликат исходника, что идет в комплекте с модом(если кому понадобится глянуть по-быстрому)
P.S. Также - подозреваю, что весь плагин написан через одно место, поэтому буду не против, если кто-нибудь переделает всё основательно. Вообще - это типа "open-source", так что, кто захочет - может сделать и опубликовать новую версию самостоятельно. Надеюсь - в финале мы получим что-то стоящее.