Система сохранений v1.1 (by SIZZZ)
Цитата: SIZZZ от 19.02.21, 23:17Система сохранений v1.1 (Разработчик: SIZZZ)
Данный модуль позволяет добавить в вашу игру систему сохранений на 6 слотов. Все данные сохраняются в localStorage вашего браузера. Слоты сохранений для каждой игры отдельные, а не совместные, как во встроенной функции сохранения AXMA (которая, к слову, не работает в JS версии). Сохранения привязываются к названию вашей игры (StoryTitle), и если вы его измените, то все сделанные ранее сохранения пропадут.
Чтобы в вашей игре работала система сохранений, все переменные, которые вам нужно сохранить, объявляйте как свойства объекта sv.
Например: sv.Атака = 100, sv.счет = 2, sv.оружие = 'Нож' и так далее.Новое в версии 1.1
- Добавлена функция автосохранения
- Добавлена возможность сохранения и загрузки игры из файла.
На смартфонах функция сохранения в файл работает не во всех браузерах. Работоспостобность проверена на Google, Opera, Opera Touch, Opera Mini, Yandex Browser. В некоторых браузерах файл может сохраняться под именем из множества символов, например "c8143231c-68a5a546547cd-38", просто переименуйте его по своему усмотрению, расширение файла значения не имеет. Загрузка из файла работает во всех браузерах, которые поддерживают загрузку из файловой системы. На ПК загрузка и сохранение работает без проблем.Подробную инструкцию к модулю можно прочитать в файле save.sm. Я постарался все подробно описать, чтобы было понятно любому начинающему разработчику.
Система сохранений v1.1 (Разработчик: SIZZZ)
Данный модуль позволяет добавить в вашу игру систему сохранений на 6 слотов. Все данные сохраняются в localStorage вашего браузера. Слоты сохранений для каждой игры отдельные, а не совместные, как во встроенной функции сохранения AXMA (которая, к слову, не работает в JS версии). Сохранения привязываются к названию вашей игры (StoryTitle), и если вы его измените, то все сделанные ранее сохранения пропадут.
Чтобы в вашей игре работала система сохранений, все переменные, которые вам нужно сохранить, объявляйте как свойства объекта sv.
Например: sv.Атака = 100, sv.счет = 2, sv.оружие = 'Нож' и так далее.
Новое в версии 1.1
- Добавлена функция автосохранения
- Добавлена возможность сохранения и загрузки игры из файла.
На смартфонах функция сохранения в файл работает не во всех браузерах. Работоспостобность проверена на Google, Opera, Opera Touch, Opera Mini, Yandex Browser. В некоторых браузерах файл может сохраняться под именем из множества символов, например "c8143231c-68a5a546547cd-38", просто переименуйте его по своему усмотрению, расширение файла значения не имеет. Загрузка из файла работает во всех браузерах, которые поддерживают загрузку из файловой системы. На ПК загрузка и сохранение работает без проблем.
Подробную инструкцию к модулю можно прочитать в файле save.sm. Я постарался все подробно описать, чтобы было понятно любому начинающему разработчику.
Загруженные файлы:- Вам нужно войти, чтобы просматривать прикрепленные файлы..
Цитата: Einharr от 20.02.21, 15:11Моё почтение. Хорошо написанный модуль, развивающий ту самую концепцию, о которой я говорил в своей статье. Респектую.
Моё почтение. Хорошо написанный модуль, развивающий ту самую концепцию, о которой я говорил в своей статье. Респектую.
Цитата: Upasa от 03.07.21, 16:40У вас сказано, что все переменные для сохранения следует записывать как свойства обьекта $sv. А можно ли сохранить в этом $sv не переменную или массив, а другой обьект? Ведь обьекты не простые переменные, а "набор переменных в переменной". И как это "писать"?
У вас сказано, что все переменные для сохранения следует записывать как свойства обьекта $sv. А можно ли сохранить в этом $sv не переменную или массив, а другой обьект? Ведь обьекты не простые переменные, а "набор переменных в переменной". И как это "писать"?
Цитата: SIZZZ от 03.07.21, 22:23Цитата: Upasa от 03.07.21, 16:40У вас сказано, что все переменные для сохранения следует записывать как свойства обьекта $sv. А можно ли сохранить в этом $sv не переменную или массив, а другой обьект? Ведь обьекты не простые переменные, а "набор переменных в переменной". И как это "писать"?
Да, можно. Например, вот так:
sv.игрок = {
максхп: 100,
хп: 100,
атака: 0,
защита: 0,
};
Цитата: Upasa от 03.07.21, 16:40У вас сказано, что все переменные для сохранения следует записывать как свойства обьекта $sv. А можно ли сохранить в этом $sv не переменную или массив, а другой обьект? Ведь обьекты не простые переменные, а "набор переменных в переменной". И как это "писать"?
Да, можно. Например, вот так:
sv.игрок = {
максхп: 100,
хп: 100,
атака: 0,
защита: 0,
};
Цитата: Upasa от 04.07.21, 17:17Вопросы прибывают.
Вопрос 1. Как понимаю, ваши сохранения позволяют сохранять в любой нужный момент, так чтобы в остальное время доступ к сохранениям отсутствовал, как в космосиме Х-3 Terran Conflict, где без страховки можно сохраняться только на станциях. Верно я понимаю?
Вопрос 2. Можно ли сделать так, чтобы юзер не мог использовать какой то другой способ/тип сохранения, а мог только лишь созданную мной кнопку в определенном месте?
Стоит цель, чтобы юзер не смог изменить сохраненные данные, в связи с чем
вопрос 3. Легко ли изменить данные, сохраняемые "в файл"? И можно ли добраться до данных внутреннего сохранения в localStorage браузера?
Предполагается сохранение большого количества данных, а значит
вопрос 4. Вряд ли есть ограничение обьема данных при сохранении в файл, но меня больше интересует способ внутреннего сохранения. Нет ли ограничений по обьему сохраняемых данных в localStorage?
Вопросы прибывают.
Вопрос 1. Как понимаю, ваши сохранения позволяют сохранять в любой нужный момент, так чтобы в остальное время доступ к сохранениям отсутствовал, как в космосиме Х-3 Terran Conflict, где без страховки можно сохраняться только на станциях. Верно я понимаю?
Вопрос 2. Можно ли сделать так, чтобы юзер не мог использовать какой то другой способ/тип сохранения, а мог только лишь созданную мной кнопку в определенном месте?
Стоит цель, чтобы юзер не смог изменить сохраненные данные, в связи с чем
вопрос 3. Легко ли изменить данные, сохраняемые "в файл"? И можно ли добраться до данных внутреннего сохранения в localStorage браузера?
Предполагается сохранение большого количества данных, а значит
вопрос 4. Вряд ли есть ограничение обьема данных при сохранении в файл, но меня больше интересует способ внутреннего сохранения. Нет ли ограничений по обьему сохраняемых данных в localStorage?
Цитата: Chris Nerson от 10.07.21, 15:32Дорогой друг, сохранения работают именно в тот момент, когда вызывается функция сохранения. Она может вызываться кнопкой либо скриптом в игре. И в ваших силах где-то позволить игроку сохраняться, а где-то нет.
Плюс, внутри кода есть переменная cansave, которая если равна 1, позволяет игроку сделать сейв, или 0 - когда запрещает. Плюс есть функция автосохранения.
Совет, попробуйте пробежаться глазами по коду, почитайте и поймите логику. И будет понятно, как все работает
Дорогой друг, сохранения работают именно в тот момент, когда вызывается функция сохранения. Она может вызываться кнопкой либо скриптом в игре. И в ваших силах где-то позволить игроку сохраняться, а где-то нет.
Плюс, внутри кода есть переменная cansave, которая если равна 1, позволяет игроку сделать сейв, или 0 - когда запрещает. Плюс есть функция автосохранения.
Совет, попробуйте пробежаться глазами по коду, почитайте и поймите логику. И будет понятно, как все работает
Цитата: Einharr от 20.07.21, 15:13Цитата: Upasa от 04.07.21, 17:17Вопросы прибывают.
Вопрос 1. Как понимаю, ваши сохранения позволяют сохранять в любой нужный момент, так чтобы в остальное время доступ к сохранениям отсутствовал, как в космосиме Х-3 Terran Conflict, где без страховки можно сохраняться только на станциях. Верно я понимаю?
Вопрос 2. Можно ли сделать так, чтобы юзер не мог использовать какой то другой способ/тип сохранения, а мог только лишь созданную мной кнопку в определенном месте?
Стоит цель, чтобы юзер не смог изменить сохраненные данные, в связи с чем
вопрос 3. Легко ли изменить данные, сохраняемые "в файл"? И можно ли добраться до данных внутреннего сохранения в localStorage браузера?
Предполагается сохранение большого количества данных, а значит
вопрос 4. Вряд ли есть ограничение обьема данных при сохранении в файл, но меня больше интересует способ внутреннего сохранения. Нет ли ограничений по обьему сохраняемых данных в localStorage?
Попробую я ответить, раз SIZZ не спешит.
1) Здесь Крис уже дал нормальный ответ. Сохранение происходит в момент вызова функции. А где её вызывать — это уже вы сами решаете.
2) Прямо проистекает из первого. Куда вы функцию сохранения привяжете — там её пользователь и сможет вызывать.
Если вы этот вопрос задаёте в контексте взлома игры — теоретически человек, знающий как пользоваться консолью браузера сможет вызывать функцию в любой момент.
3) Посмотреть содержимое localStorage можно в инспекторе браузера. Все данные там хранятся в формате строк. Доступ туда в пару кликов. Без какого-нибудь шифрования прочитать содержимое не трудно. Изменить данные тоже не трудно. Нужно всего лишь изучить структуру готового сохранения, и через консоль вызвать localStorage.setItem('Переменная', 'значение'); Ну, это грубо говоря. На самом деле самую малость сложнее.
4) Ограничение таки есть. Примерно 5MB данных, в зависимости от браузера. В целом — это дохрена, но лучше не злоупотреблять. Нагрузка на localStorage может привести к замедлению работы мобильных браузеров. В идеале, нужно ограничиваться ~500kb.Вроде более—менее ответил. Обращайся, если что.
Цитата: Upasa от 04.07.21, 17:17Вопросы прибывают.
Вопрос 1. Как понимаю, ваши сохранения позволяют сохранять в любой нужный момент, так чтобы в остальное время доступ к сохранениям отсутствовал, как в космосиме Х-3 Terran Conflict, где без страховки можно сохраняться только на станциях. Верно я понимаю?
Вопрос 2. Можно ли сделать так, чтобы юзер не мог использовать какой то другой способ/тип сохранения, а мог только лишь созданную мной кнопку в определенном месте?
Стоит цель, чтобы юзер не смог изменить сохраненные данные, в связи с чем
вопрос 3. Легко ли изменить данные, сохраняемые "в файл"? И можно ли добраться до данных внутреннего сохранения в localStorage браузера?
Предполагается сохранение большого количества данных, а значит
вопрос 4. Вряд ли есть ограничение обьема данных при сохранении в файл, но меня больше интересует способ внутреннего сохранения. Нет ли ограничений по обьему сохраняемых данных в localStorage?
Попробую я ответить, раз SIZZ не спешит.
1) Здесь Крис уже дал нормальный ответ. Сохранение происходит в момент вызова функции. А где её вызывать — это уже вы сами решаете.
2) Прямо проистекает из первого. Куда вы функцию сохранения привяжете — там её пользователь и сможет вызывать.
Если вы этот вопрос задаёте в контексте взлома игры — теоретически человек, знающий как пользоваться консолью браузера сможет вызывать функцию в любой момент.
3) Посмотреть содержимое localStorage можно в инспекторе браузера. Все данные там хранятся в формате строк. Доступ туда в пару кликов. Без какого-нибудь шифрования прочитать содержимое не трудно. Изменить данные тоже не трудно. Нужно всего лишь изучить структуру готового сохранения, и через консоль вызвать localStorage.setItem('Переменная', 'значение'); Ну, это грубо говоря. На самом деле самую малость сложнее.
4) Ограничение таки есть. Примерно 5MB данных, в зависимости от браузера. В целом — это дохрена, но лучше не злоупотреблять. Нагрузка на localStorage может привести к замедлению работы мобильных браузеров. В идеале, нужно ограничиваться ~500kb.
Вроде более—менее ответил. Обращайся, если что.
Цитата: Upasa от 24.07.21, 17:23Большое спасибо, вроде почти все. Да, второй вопрос связан с взломом игры. Как и третий, со взломом и шифрованием. Тут вопрос конечно, стоит ли задумываться об этом в принципе, и он тоже стоит на повестке дня и еще не решен. Для первого проекта все это не нужно, а вот дальше.. Кстати, эта тема вообще интересна, так что хочется поработать с подобными механиками, независимо от того, будут ли они применяться а практике в ближайшее время или нет.
Там во втором вопросе была отсылка к другим видам сохранений, например к встроенным от разработчика. Вдруг он их реализует, они мне не помешают? Конечно этот вопрос скорее к самому разработчику, так что.. Надеюсь, он реализует их с возможностью отключить. Когда начинал работать, не думал, что буду рад возможности отключения сохранений)
Большое спасибо, вроде почти все. Да, второй вопрос связан с взломом игры. Как и третий, со взломом и шифрованием. Тут вопрос конечно, стоит ли задумываться об этом в принципе, и он тоже стоит на повестке дня и еще не решен. Для первого проекта все это не нужно, а вот дальше.. Кстати, эта тема вообще интересна, так что хочется поработать с подобными механиками, независимо от того, будут ли они применяться а практике в ближайшее время или нет.
Там во втором вопросе была отсылка к другим видам сохранений, например к встроенным от разработчика. Вдруг он их реализует, они мне не помешают? Конечно этот вопрос скорее к самому разработчику, так что.. Надеюсь, он реализует их с возможностью отключить. Когда начинал работать, не думал, что буду рад возможности отключения сохранений)