Я написал платформу 2d в java, и мне было интересно, как я сохраню игру. Я рассмотрел только сериализацию всей игры с использованием XMLEncoder или ObjectOutputStream, однако они не сохранили нити правильно. Когда я снова начал игру, нить не работала. Итак, я попробовал запустить запуск во всех потоках после загрузки игры, но это создало серьезную проблему с тем, что потоки были в недопустимых состояниях, и игра начала сбой. Каков наилучший способ просто написать всю игру в файл сохранения.Сохранение многопоточной игры
ответ
Сохранение игры редко будет таким же простым, как сохранение всех объектов точно так же, как они находятся в памяти во время выхода/сохранения, а затем после этого погрузить их обратно в их точное состояние.
Скорее всего, вам понадобится/захочет создать структуру данных для представления состояния вашей игры, которое вы затем будете записывать на диск. Многопоточность вряд ли будет вашей главной задачей. Вы захотите запустить эти потоки заново, когда загрузите свое состояние игры.
Учтите, что многие игры сохраняют/загружают через меню. Если ваша игра начинается с заставки или, по крайней мере, главного меню, вы все равно не захотите загружать объекты из своего точного состояния при запуске. Найдите минимальные важные элементы, которые вам нужны , необходимо восстановить все, что важно для состояния игры, и сохранить это на диске. Большая часть состояния игры может быть неявно воссоздана из очень небольшого количества данных.
К сожалению, точный способ сохранения или загрузки вашей игры нелегко ответить на веб-сайте Q/A, поскольку это будет зависеть от точных структур данных, которые вы используете, и от всей природы вашей игры.
спасибо, плохо сделайте это –
Жаль, что я не мог больше помочь; на самом деле это не краткое одноразовое решение для вашей проблемы. – BlackVegetable
Вы должны сериализовать только данные своего бизнес-домена, а не потоки. При повторной загрузке данных необходимо создавать потоки. ObjectOutputStream в порядке, если ваши классы домена являются Serializable.
- 1. Сохранение состояния игры Android
- 2. Сохранение в ходе игры
- 3. Сохранение состояния игры в файл
- 4. Сохранение игры с помощью Javascript
- 5. Сохранение рекорда для игры python
- 6. Java - Сохранение текстовой приключенческой игры
- 7. Сохранение тонов данных для игры
- 8. Сохранение данных игры в SQL
- 9. Сохранение игры карты в SQL
- 10. Сохранение прогресса игры Unity в изолированном хранилище
- 11. Сохранение адреса в C++ хакерском коде игры?
- 12. Сохранение игры приостановлено после активации приложения?
- 13. iOS - Извлечение и сохранение результатов игры
- 14. Сохранение игры Currency Swift 3.0 Xcode
- 15. Сохранение и загрузка данных игры не работает
- 16. Сохранение и загрузка игры в vb.net
- 17. Сохранение прогресса игры на iCloud: лучшее решение?
- 18. Создание UID в многопоточной и многопоточной среде
- 19. с многопоточной
- 20. многопоточной Java
- 21. многопоточной Loop
- 22. Лучший способ обработки многопоточной очистки
- 23. Профилирование памяти многопоточной программы haskell
- 24. Как сохранить настройки игры?
- 25. Сохранение состояния игры на Android OpenGL ES app
- 26. Создание и сохранение текстового файла для игры Battleship в Python
- 27. Сохранение и загрузка настроек и прогресса игры в iOS
- 28. разработка windows phone 7 с помощью XNA, сохранение игры
- 29. Uint8 не конвертируется в Int (сохранение игры самое лучшее время)
- 30. Сохранение заблокированных и разблокированных уровней игры в spritekit
Можно ли сохранить состояние ваших потоков, а затем создать новый поток, установить его состояние в том, что вы сохранили, а затем запустить? Трудно дать хороший совет без какого-либо кода или даже намек на то, что проблемы –
Ну, было бы сложно опубликовать код, так как это 1000 строк, но если бы я создал новый поток, это не было бы в той же части его выполнения, если я создал новый поток. –
Вы могли бы работать с группами нитей или отслеживать и сохранять все зависимости между различными потоками? –