Ответы пользователя по тегу Разработка игр
  • Каким образом в играх сохраняются данные?

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

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


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

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

    Функциональность редактора идентична. Сборка под win/lin точно работает, под остальной зоопарк вроде тоже. Есть мелкие глюки, на работу особо не влияют (в моем случае, по крайней мере).
    Ответ написан
  • Как соединить модели с помощью мышки в Unity3d?

    Может оказаться полезным посмотреть устройство редактора крафтов в Kerbal Space Program. Там он толково сделан (по крайней мере процесс соединения деталей). Там и радиальное крепление, и по определенным точкам (на "ноды").
    Ответ написан
    Комментировать
  • Как написать игру только с использованием скриптов в Unity?

    Возможно вам поможет описание моей игры - тоже новичок, но делаю уже более полугода, общая архитектура более менее устаканилась. Суть игры вдохновлена Космическими Рейнджерами - вселенная, состоящая из звезд, основное место действия - звездные системы, игра протекает внутри них. Соответственно до старта игры ни одного объекта практически и нет - только пустышки и скрипты на них, ну и UI. При старте игры из сохранения (либо случайно генерируется) вселенная - массив звезд, которые в свою очередь содержат планеты, пояса и т.д. Эти данные никак не связаны с MonoBehaviour, просто статический массив (List на самом деле, но не суть). При старте игры опять же из сохранения берется местоположение игрока, информация о его корабле и в соответствии с этим
    1)Спаунится текущая система: солнце, планеты (есть префаб планеты, при спауне висящий на нем скрипт накладывает случайно генерируемую текстуру, а другой скрипт размещает в пространстве в соответствии с заданными параметрами орбиты) и т.д.
    2)Спаунится игрок (а в будущем и другие игроки)
    Таким образом сцена содержит только пустышку игрока с повешенными на него скриптами и объекты UI. Все остальное создается по ходу игры.
    Ответ написан
    Комментировать
  • Люблю физику(механику) и математику - стоит ли попробовать себя в game dev и как?

    И в чем проблема? Придумываешь игру мечты (или модифицируешь понравившуюся идею), создаешь репозиторий на bitbucket.org, там есть вики - можешь заюзать в качестве диздока, начинаешь писать (unity3d или unreal engine 4). Я так уже пол года живу, не надоедает, конца-края не видно. Очень интересно, т.к. пока еще только на первый курс поступаю - все в новинку. Главное - не браться за что-то простое и казуальное, вроде flappy bird, арканоидов, карт, шариков - сразу за долгострой, по хардкору, чтоб ничего не понятно было и мозги закипели (поначалу). Сразу скука пройдет.
    P.S. тут нужно программирование любить, а не физику/математику. Вся физика/математика уже создателями движка написана.
    Ответ написан
  • Как работать совместно на Unity3D?

    Пользуюсь git + bitbacket.org, клиент консольный. Проблем не знаю, разве что небольшое добавление - нужно в .gitignore прописать:
    #Нахрен все
    /Папка с проектом юнити/*
    
    #Только ассеты и настройки
    !Assets
    !ProjectSettings

    Тогда не будет проблем с метадатой в Library, она у каждого будет генерироваться своя.
    Ответ написан
    Комментировать