Контакты

Достижения

Все достижения (5)

Наибольший вклад в теги

Все теги (40)

Лучшие ответы пользователя

Все ответы (49)
  • В чем разница .NET и C#?

    .NET - платформа, в частности включает в себя CLR, CLS и FCL. C# - один из языков, компилируемых в IL код под эту самую CLR. Также существует альтернативная реализация некоторой части .NET (в т.ч. компиляторы некоторых языков и сама среда исполнения) - Mono.
    P.S. надо же, запомнил наконец эти аббревиатуры.
    Ответ написан
    1 комментарий
  • Каким образом в играх сохраняются данные?

    Стоит сейчас похожая задача, есть pet project по типу КР и других подобных игр. В процессе решения данного вопроса, делаю примерно так:
    1. В игре, разумеется, есть некая модель вселенной. В моем случае это звездные системы, которые являются контейнерами для SpaceObject'ов, в которые уже входят планеты/корабли и другие объекты.
    2. Таким образом, состояние игры можно сохранить как звездные системы и их содержимое, ну и не забыть сериализовать вспомогательные коллекции, типа капитанов кораблей и другой глобальной информации.
    3. Сериализация вселенной происходит в json. Я пишу игру на unity3d, поэтому мне кажется удобным использовать местный JSONUtility, умеющий проводить сериализацию простых классов (т.е. публичные поля и простые коллекции). Процесс таков: для всего, что я хочу (де)сериализовать, создаю класс-прокси, отражающий в простой форме (без всяких конструкторов, свойств, приватных членов и всего такого) содержимое нужного мне класса, с которым я уже и работаю.

    Цикл сохранения/загрузки, к примеру, звездной системы, такой:
    1. Создаем прокси для StarSystem, он в себя копирует информацию о системе.
    2. Когда доходим до списка объектов, для каждого из них создаем уже класс-прокси объекта и результирующий экземпляр уже заносится в прокси StarSystem.
    3. И т.д., пока сложные объекты не закончатся.
    4. В итоге, имеем матрешку из прокси-классов. С помощью JSONUtility она одной строчкой может быть переведена в json или восстановлена из него.
    5. Ну а сами сериализуемые классы должны уметь получать информацию из своих проксей при загрузке из сохранения.


    Собственно, недавно начал это дело реализовывать, т.ч. пока не знаю, насколько оно окажется удобным в использовании. Вполне возможно, многих подводных камней я не вижу, или они всплывут при усложнении игры (например, когда добавятся больше логичесих связей, придется проверять, чтобы не сериализовать одно и тоже по нескольку раз, получая при загрузке разные объекты. Поэтому у всего должны быть некие ID, для предупрежления дублирования).

    Раз уж написал, буду благодарен, если более опытные разработчики укажут на крупные грабли в таком подходе, если они есть.
    Ответ написан
    3 комментария
  • Какая служит для обновления GIT?

    git это все таки не браузер вроде хрома, сам себя обновлять не будет)

    Под linux этим обычно занимается пакетный менеджер, под виндой скорее просто нужно запустить инсталлятор новой версии.
    Ответ написан
    Комментировать
  • JSON.NET Как написать класс, где поле в json может иметь разный тип данных?

    Можно попробовать сделать data типом Object, но не факт, что рантайм сериализация это дело подхватит. И потом работать с ним в стиле if (data.GetType.IsArray) ... (ужас какой).
    Но, как мне кажется, это плохой подход. Если приходят разные данные - нужно и сущности разные делать. Хотя, конечно, зависит от контекста задачи и т.д.
    Ответ написан
    Комментировать
  • Что делает этот код?

    Я так понял из какого-то примера взято. Все нормально, подразумевается, что и a и n объявлены.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (27)