@holyshitplayer

Как сделать прекомпиляцию модпака Minecraft?

Если вы знаете, то майнкрафт можно модифицировать различными модами. И при запуске сборки с модами, классы модов подгружаются в оригинальный .jar самого майнкрафта. Каждый перезаход в игру происходит одно и тоже. И если сборка большая, то время ее запуска становится очень большим (у меня SSD, и даже на нем достаточно много времени проходит).
Вопрос:
Возможно ли изначально сделать прекомпиляцию, чтобы это не происходило во время запуска, тем самым ускорив скорость загрузки всей сборки?
  • Вопрос задан
  • 581 просмотр
Пригласить эксперта
Ответы на вопрос 3
profesor08
@profesor08
Раньше, давным-давно, открывали .jar файл, и копировали туда классы.

По сути, все эти .jar файлы, это уже готовый к употреблению байт код для java машины. При загрузке всего это зоопарка происходит сущий ад из выделения и перевыделения памяти. И каждый мод, при загрузке добавляет в цепочку кучу своего.
Ответ написан
@antonwx
Так называемая "прекомпиляция", а именно трансляция в байткод уже выполнена. Моды регистрируют себя, подписываются на эвенты, добавляют блоки, текстуры и т.п. В теории возможно сохранить состояние процесса на диск, но на практике это сильно сложно вплоть до практической невозможности. https://stackoverflow.com/questions/712876/save-a-...
Ответ написан
Комментировать
@acwartz
Тут должна быть ваша реклама.
Правильное слово "кеширование".
На подобии того что делают портированные из плойки игры типа Zero Down, при первом запуске/обновлении ресурсы компилируются под конкретные настройки конкретного ПК и лежат в готовом состоянии, потом просто загружаются.

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

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

И тогда, может быть оно и взлетит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы