Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (325 стр)

Страницы: 1324 325 326 327337 Следующая »
#4860
12:00, 21 сен. 2021

Алексей Патрашов
> А что мешало сделать сразу так?
То, что для реализации такого нужно написать функции сохранения/загрузки.
А так можно ПОДЫ сразу пихать, без каких либо дописываний.
Да и если сохранять туже факторио в xml то файлики по 1-10 гб выйдут.

Aroch
> state["value"] = value;
> state["some_table"]["value"] = another_value;
И что это за state такой? В стд подобного точно нет. Помню как-то пытался заставить вариант в мапу зафигачить зацикленно, не ело.

Aroch
> еще скажи что нельзя ее использовать и к плюсам это отношения никакого не имеет
> и еще какую-нибудь глупость выдумай до кучи.
Изначально игра в C++. Вся.

struct Player{
  float x;
  float y;
};
И просто взять луа это по факту: переписать всю игру на луа и потом уже...

#4861
12:07, 21 сен. 2021

1 frag / 2 deaths
> В Ржавом даже конвертор любой структуры в джсон и обратно сам генерится.
А в C++ всё ещё нет рефлексии... И не предвидится в ближайшем будущем.

#4862
(Правка: 13:05) 13:02, 21 сен. 2021

1 frag / 2 deaths
> Только каков размер файла по итогу и какая скорость парсинга?
поэтому lua файл ты можешь скомпилировать и получить банарник.
samrrr
> И просто взять луа это по факту: переписать всю игру на луа и потом уже...
признавайся, ты никогда не имел дело с lua, я угадал? У меня lua это саб проект, то есть всё тот же плюсовый код который собирается и линкуется статически. При этом мне что-то там нужно было что не хватало в lua, залез в кишки и добавил для себя. Благо MIT лицензия позволяет делать что хочешь.

#4863
21:44, 21 сен. 2021

Aroch
> У меня lua это саб проект, то есть всё тот же плюсовый код который собирается и линкуется статически.
И каким боком это решает проблему сохранения плюсовой структуры?

Всё также:

struct Player{
  float x;
  float y;
};
И всё ещё нужно её сохранить в файл и загрузить из него.

#4864
1:45, 22 сен. 2021

samrrr
> И каким боком это решает проблему сохранения плюсовой структуры?
пишешь функцию сохраняющую/загружающую её, в чём проблема? При желании можно автоматизировать и генерировать код автоматом, расставив подсказки для генератора.

struct Player{
  // [serialize]
  float x;
  // [serialize]
  float y;
};

ты изначально не понял проблему, проблема не в том что придется писать код загрузки/сохранения, а в том как его придется писать. Одно дело когда ты пишешь тупой линейный код в котором не нужно беспокоится о версии твоих сэйвов, и другое дело когда ты пишешь кучу условий с проверкой версии что ты привел ранее.

#4865
9:22, 22 сен. 2021

Aroch
> расставив подсказки для генератора.
В Ржавом из коробки такая функциональность. Вернее, возможность в сторонней либе прописать свои теги, чтоб была такая функциональность.

#4866
(Правка: 10:45) 10:45, 22 сен. 2021

Aroch
> struct Player{
> // [serialize]
> float x;
> // [serialize]
> float y;
> };
Тоесть ты предлагаешь путь кодогенерации. Ну чтож предположим я переименовал hits в hp. И мне всеравно прийдётся писать ифчики для него.

А ещё предположим я решил сменить углы эйлера на кватернион, и при этом название оставил прежним. И выйдет у меня кватернион (180,60,40,1) .

#4867
11:24, 22 сен. 2021

samrrr
> И мне всеравно прийдётся писать ифчики для него.
не придется.
после загрузки скрипта, загружу патч к сохранялке в котором будет:

state["hp"] = state['hp'] or state["hits"]
всё. Какие тут проверки на версии? Если сэйв старый в нём будет state["hits"] который будет учтен, если сэйв новый в нем уже не будет state['hits'].
Если ты потом решишь снова добавить state['hits'] в сохранение, то патч ничего не поменяет и будет использоваться уже загруженное значение в state['hp'] из сохранения.

> Тоесть ты предлагаешь путь кодогенерации.
это для особо ленивых, можно и ручками писать тупой линейный код.
> А ещё предположим я решил сменить углы эйлера на кватернион, и при этом
> название оставил прежним. И выйдет у меня кватернион (180,60,40,1) .
ну так и смотри что ты там загрузил в поле, не совпал тип, отбрасываешь и значение по умолчанию/ну либо для отдельных типов можешь допускать преобразование. Да, тип поля тебе также придется сохранять. Заметь, нам всё также наплевать на версию.

#4868
11:33, 22 сен. 2021

samrrr
и кстати представь что ты будешь писать когда у тебя сотня версий и в каждой версии ты будешь, то добавлять то удалять разные поля. Как долго ты продержишься с своим подходом? Забьешь на версии и скажешь "все что не самые последние в мусорку так как мой подход породил комбинаторный взрыв и мне до конца жизни не хватит разрулить все конфликты"?

#4869
12:30, 22 сен. 2021

Aroch
> и кстати представь что ты будешь писать когда у тебя сотня версий и в каждой
> версии ты будешь, то добавлять то удалять разные поля.
Утилита патчер.
save_ver_convert_0_to_1.exe
save_ver_convert_1_to_2.exe
save_ver_convert_2_to_3.exe

#4870
12:33, 22 сен. 2021

samrrr
> Утилита патчер.
> save_ver_convert_0_to_1.exe
> save_ver_convert_1_to_2.exe
> save_ver_convert_2_to_3.exe
удачи 😂

#4871
(Правка: 14:36) 14:24, 22 сен. 2021

Бывает так:
https://tomforsyth1000.github.io/blog.wiki.html%23%5B%5BSaving%2C… bugging%5D%5D

#4872
(Правка: 16:17) 16:08, 23 сен. 2021

Видео со странички конкатенативного языка Aim (Code Mesh 2017)
(можно в настройках установить русские субтитры и смотреть видео)

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#4873
18:22, 23 сен. 2021

KPG
Главное успевать читать.

#4874
(Правка: 23:17) 23:16, 28 сен. 2021

Как побороть данную проблему? Запускаешь 64бит программу, делаешь утечку памяти, и программа съедает всю память, и не вылетает, а ОС зависает. Как-то бы зделать так чтобы программа закрывалась а не ела память.

Страницы: 1324 325 326 327337 Следующая »
ФлеймФорумПрограммирование