Делать игру как учебник? [закрыто]

19

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

В основном я хочу сделать очень простую игру. Что-то вроде шутера сверху вниз, куда приходят враги, чтобы вы убили их и собрали добычу. Тем не менее, я хочу, чтобы все было очень легко изменить. У людей в клубе мало опыта разработки игр, поэтому, если бы я мог настроить свою игру таким образом, чтобы люди могли легко изменять и добавлять функциональность, это было бы здорово для них.

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

Benixo
источник
1
Посмотрите на этот ответ на переполнение стека.
Эндрю Рассел

Ответы:

16

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

По сути, это означает, что код не реализует определенный тип оружия (оружие) с явно определенными значениями для его диапазона / урона / проникновения, а заполняет общие концепции оружия дальнего боя (дальность / урон / проникновение ...) из внешнего (к коду) источника данных. Этот внешний источник может варьироваться от разбираемых (возможно, XML) файлов, считываемых с диска, до двоичных файлов или элементов базы данных, созданных с помощью инструментов, внутренних или внешних для самого игрового движка.

Определяя что-то наподобие врага, система ИИ может быть спроектирована для поддержки некоторого количества общих поведений (агрессивных, оборонительных, поддерживающих, трусовых), которые затем настраиваются элементами, управляемыми данными.

«Мой новый враг» начинается с агрессивного поведения базового ИИ с управляемыми данными значениями для: -игнора игроков> моего уровня + Х-преследования игроков до X юнитов вне точки возрождения-бой, когда здоровье <Х-приоритеты способностей -приоритеты-приоритеты способностей (когда игроки подходят слишком близко)

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

Все это, конечно, больше, чем просто кодирование поведения, но это интересная задача, позволяющая пользователям создавать контент без изменения источника.

Есть бонусные баллы, которые должны быть достигнуты:

  • если вы можете динамически обновлять данные и отражать изменения в игровом движке без перезапуска приложения
  • если вы создаете удобный пользовательский интерфейс поверх данных, позволяющий пользователям использовать интерфейс для взаимодействия с данными, а не напрямую редактировать текстовые (xml или любые другие) файлы

Для обучающей игры, нацеленной на более техническую аудиторию, большая часть работы заключается в разработанных классах / объектах, которые предоставляют пользователям чистые интерфейсы для расширения, что, в свою очередь, также может управляться данными.

Кристофер Ларсен
источник
Хороший ответ! +1
AttackingHobo
Спасибо за ваш вклад :)! Вы случайно не знаете какие-нибудь сайты, которые показали бы мне, как реализовать этот вид кода? Я никогда не делал игры с такими внешними источниками. Хотя я определенно хочу, чтобы они закодировали в XNA в клубе, поэтому я, вероятно, сделаю что-то более похожее на классы и объекты, которые они могли бы легко унаследовать в своих собственных классах. Но я определенно посмотрю на это,
Бениксо
Отличный способ сделать это требует вашего собственного синтаксического анализатора, позволяющего загружать очень простые структуры, управляемые данными. По сути, ключ к любому учебному пособию - обучение в блоках, поэтому абстракция является абсолютно ключевой. Хорошим упражнением может быть создание простого графического интерфейса, который позволяет пользователю определять и создавать новые типы оружия.
замедленная
Наиболее распространенными аспектами, управляемыми данными в играх, являются уровни. Даже если все остальное жестко запрограммировано, дизайны уровней (т. Е. Где расположены декорации, где находятся враги и т. Д.) Почти всегда определяются в файлах данных, которые загружает игра. Его второе бонусное очко описывает инструмент редактирования уровня.
Джоккинг
Процесс записи / чтения объектов на / с диска известен как «де / сериализация». Вы можете найти некоторые полезные учебники под этим термином.
Exilyth
1

Если вы ищете несколько идей о том, как начать свой проект и создать его шаг за шагом, чтобы его можно было преобразовать в учебное пособие, посмотрите XNA Game Programming Adventures . Автор имеет несколько учебных пособий с пояснениями и исходным кодом, который постепенно увеличивается.

Барт
источник
0

Я бы посоветовал взглянуть на учебник по разработке игр для Java на сайте www.thenewboston.com.

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

Jonny
источник