Подтвердить что ты не робот

Что должно быть в 2D игровом движке?

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

Это то, что в движке:

  • Физика (Физика Фарсера)
  • Двигатель частиц (проект Mercury)
  • 2D-камеры
  • Обработка ввода
  • Управление экранами (меню, экран паузы и т.д.)
  • Sprite (анимация, листы спрайтов)
  • И материал XNA, например Sound.

Я пропустил что-нибудь, что может иметь решающее значение для игрового движка?

4b9b3361

Ответ 1

Тема или рынок для вашего движка. Если вы делаете что-либо помимо базового базового графического движка, вам нужно сосредоточиться на рынке вашего движка, например, RPG, стратегии, головоломки, платформера, действия или FPS (нормально, а не FPS).

Это поможет вам указать себя в том направлении, в котором вы должны идти, чтобы сделать дополнительные усовершенствования для двигателя, не спрашивая нас. Двигатель, например, Unreal Engine, может делать несколько вещей, но то, что он стремится делать лучше всего, это то, что он сделал для игр FPS. Аналогичным образом, вы должны адаптировать свой движок так, чтобы он соответствовал конкретной области, представляющей интерес, и поэтому подбирается для этого типа игрового процесса.

Вы можете сделать его общим до определенного момента, но реализовать более обобщенный ваш движок, тем сложнее программировать, как временный, так и умный. Другие программисты также с меньшей вероятностью заберут общий движок (если только это не все), если доступна более конкретная платформа. Или просто написать свои собственные, так как изменение обобщенного движка примерно так же сложно, как создание собственного.

Ответ 2

Вы приближаетесь к нему в обратном порядке.

В вашем движке должно быть следующее:

Весь код, который оказался обычным для вашей первой и второй игр.

Сначала напишите игру. Не пишите движок, потому что, как вы выяснили, вы не знаете, что он должен содержать, или как он должен быть разработан. Вместо этого напишите игру.

Как только у вас есть эта игра, напишите еще одну игру. Затем, когда вы это сделаете, изучите второй игровой код. Сколько из них было повторно использовано в первой игре?

Все, что было повторно использовано, должно быть реорганизовано в отдельный проект. Этот проект теперь является вашим игровым движком.

Это не означает, что вы не должны планировать или не должны пытаться писать хороший код. Но убедитесь, что вы работаете над чем-то конкретным, что-то, где вы можете сказать хорошую реализацию от плохого. Хорошая реализация игры - это то, что работает, это весело и не сбой. Напишите свой код для достижения этих целей в первую очередь.

Хорошая реализация движка? Это сложнее. Какая хорошая реализация средства визуализации? О структуре ИИ? О системе частиц? В конечном счете, единственный способ определить, есть ли у вас хороший движок, - это увидеть, насколько хорошо он работает в реальной игре. Поэтому, если у вас нет игры, у вас нет возможности оценить ваш движок. И если у вас нет возможности оценить ваш движок, вы не можете судить, действительно ли полезен какой-либо код, который вы пишете.

Ответ 3

Еще несколько вещей:

  • Поиск путей - очень полезно для AI
  • AI - возможно - зависит от того, насколько вы хотите, чтобы движок был.
  • Высокие баллы
  • Replays - делает результаты намного интереснее, так как вы можете их реально наблюдать.

Ответ 4

Несколько идей:

  • Искусственный интеллект (возможно, просто простые утилиты AI, такие как алгоритмы поиска пути)
  • Сохранение всего или части состояния игры (для приостановки и перезапуска в более позднее время или сохранения высоких результатов).

Ответ 5

Я думаю, что вы рассмотрели общие требования 2D-движка. Единственное, что я пропустил в этом списке, будет:

  • Библиотека графического интерфейса пользователя

Также упростить процессы разработки:

Вы также можете добавить еще один слой поверх существующего материала XNA:

  • Простая реализация сети/Лобби.
  • Более абстрактная обработка нескольких контроллеров (DropIn/DropOut во время игровых сессий, например, Resident Evil 5 Coop) - возможно, на основе событий

Наконец, вы можете добавить некоторые "готовые" шейдеры. Может быть, получить вдохновение от прекращенного FaceWound (от разработчика Garry Mod).

Ответ 6

Это зависит от игры, но еще одна вещь, которая часто необходима, - это хорошая сетевая инфраструктура.

Многие современные игры, в том числе 2D-игры, похоже, имеют определенную форму сетей.

Ответ 7

Физический движок, который может делать наполовину приличное движение волны сиськи, как в этой баскетбольной игре DOA.

Ответ 8

3D Ускорение должно быть в 2D-двигателе.

Использование 3D-оборудования, которое большинство людей в наши дни является лучшим способом получить потрясающую производительность для ваших 2D-игр...

Ответ 9

  • Анимационная структура, чтобы вы могли сказать: возьмите этот спрайт, переместите его в этом направлении, следуя этому пути, используя эту скорость, ускорение и такие
  • Базовая система графического интерфейса. Не реализуйте целую Windows, но основные вещи, такие как указатель и кнопка, и т.д. - сохраняйте ее основной
  • Отладка компонента для отображения FPS, количества спрайтов и т.д.

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

Ответ 10

Хорошее обнаружение столкновений очень полезно. Если вы его эффективно реализуете, это действительно сокращает время, необходимое для каждого кадра. Кроме того, в моем движке (для Pygame) у меня есть способ разделения главного экрана на несколько подэкранов, которые я считаю полезными.

Ответ 11

Простое обнаружение столкновения с помощью пикселя. НЕ ФАЗА. Простые процедуры рисования, такие как drawline, drawcircle и т.д.

Ответ 12

  • 2d система освещения - хорошая передовая функция. Вы можете использовать Krypton для этого.
  • Редактор карт. Или даже лучше поддерживать любой формат карты плитки, совместимый с Tiled Map Editor". Поэтому вы можете просто использовать Tiled.
  • Планировщик/Таймер для игровых действий.
  • Эффекты очистки экрана, такие как поворот страницы, выцветание и т.д., чтобы сделать приятные переходы между экранами.
  • Также будут полезны игровые уровни со сборкой в ​​параллаксе.
  • В игровой консоли для обработки команд или сценариев без перезапуска.
  • Легкая загрузка текстурного атласа как спрайтов или анимации.

Ответ 13

Хорошая работа, Мы (я и некоторые из моих друзей) тоже работаем над игровым движком, У нас уже есть все, что вы упомянули, но более того, у нас есть следующее.

  • аудио-менеджер: простой класс для обработки фоновой музыки и звуков эффекты в XNA.
  • менеджер видео: это не сложно, простой класс для обработки видео играя в XNA.
  • менеджер эффектов: отвечает за такие вещи, как цветение, размытие, черно-белые цвета и т.д.

Удачи:)

Ответ 14

Инструмент повторения фрагментов. Что-то, что позволяет пользователю добавлять/создавать плитки и манипулировать ребрами для плавного шаблона повторения.

Ответ 15

В зависимости от типа целевой игры включите навигационный график с помощью node и аннотаций края. (Хорошо для многих игр, но не столько для прокрутки маркеров, которые сделаны с 2D-графическими движками)

  • Компонент для их создания (через алгоритм заполнения заливки).
  • Обязательно включите все основные алгоритмы поиска/планирования пути (A */Dijkstra/etc.), чтобы пройти эти графики.

Ловушка заключается в том, что вам нужно будет определить, что такое "карта" для двигателя, что может ограничить пользователей движка.

Связанные вещи:

  • Триггеры, основанные на местоположении (игрок входит в невидимый круг, и что-то происходит - очередь на сцену, запуск засады и т.д.). Я бы сказал, предоставить базовый класс для триггера и реализовать некоторые базовые, чтобы показать, как это делается (например, оружие и т.д.).
  • Некоторые игровые движки реализуют сети (хотя это своего рода часть "xna stuff" )

Ответ 16

Самой полезной вещью, которая должна включать выше всего, были бы инструменты, которые могли бы легко использовать ваш движок. Возможно, используйте свой движок для создания инструментов. Я уверен, что вы найдете много недостатков таким образом.

Ответ 17

Um. Этот список является "внутренним" списком. Сделать отличный движок - сделать отличный "внешний" список. Посмотрите, например, на UE3 - здесь есть отличные инструменты. Вам нужны инструменты для создания мира, создания оптимальных пакетов ресурсов (он также должен быть во внутреннем списке;-)), для спецификации объекта столкновения и т.д. Кроме того, чтобы добавить в ответ Organiccat, вы должны принять решение о техническом уровне. Вы можете пойти на простые спрайты или вы можете захотеть причудливых эффектов (поэтому нужны шейдеры, и вам нужна инфраструктура)