Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Программирование игры.




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

Шаг 1. Выбор инструментария.

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

  • Конструкторы игр и прочие инструменты, позволяющие создавать игры без программирования.
    Конструктор – это набор сопрягаемых деталей. Так и программы данной группы – всего лишь готовый набор объектов, которые Вы можете настроить, указать как они будут взаимодействовать, выбрать их расположение, тем самым составив игру.
    Минусы очевидны – Вы полностью ограничены возможностями конструктора. Игры получаются однообразными, довольно простенькими и убогими. Если Вы придумали интересный трюк, то не факт что Вы его сможете реализовать.
    Плюсы также очевидны – разобраться с программой-конструктором очень просто, большинство имеет интуитивно понятный интерфейс и, кроме того, довольно большую аудиторию игроделов, а следовательно, множество примеров и мануалов, написанных понятным языком. Важным также является то, что для создания своей игры не потребуется навыков программирования и знания теории, а сам процесс займет малое количество времени. А начинающие игроделы научатся понимать саму логику и механизмы игры на этих упрощенных моделях.
    В общем, если целью стоит создание простенькой игрушки, на забаву себе и друзьям в короткие сроки, то конструктор игры – вещь как минимум заслуживающая интереса.
  • Готовые движки.
    • Игрово́й движок — это центральный программный компонент компьютерных и видео игр или других интерактивных приложений с графикой, обрабатываемой в реальном времени. Он обеспечивает основные технологии, упрощает разработку и часто даёт игре возможность запускаться на нескольких платформах, таких как игровые консоли и настольные операционные системы, например, GNU/Linux, Mac OS X и Microsoft Windows. Основную функциональность обычно обеспечивает игровой движок, включающий движок рендеринга («визуализатор») для 2D или 3D графики, физический движок или обнаружение столкновений (и реакцию на столкновение), звук, скриптинг, анимацию, искусственный интеллект, сетевой код, streaming, управление памятью, threading и граф сцены. Часто на процессе разработки можно сэкономить за счет повторного использования одного игрового движка для создания множества различных игр.
    • Графический движок (англ. graphics engine; иногда «рендерер» или «визуализатор») – подпрограммное обеспечение (англ. middleware), программный движок, основной задачей которого является визуализация (рендеринг) двухмерной или трёхмерной компьютерной графики. Может существовать как отдельный продукт или в составе игрового движка. Может использоваться для визуализации отдельных изображений или компьютерного видео. Графические движки, использующееся в программах по работе с компьютерной графикой (таких, как 3ds Max, Maya, Cinema 4D, Zbrush, Blender), обычно называются «рендерерами», «отрисовщиками» или «визуализаторами». Само название «графический движок» используется, как правило, в компьютерных играх. Основное и важнейшее отличие «игровых» графических движков от программных рендереров состоит в том, что первые должны обязательно работать в режиме реального времени, тогда как вторые могут тратить по несколько десятков часов на вывод одного изображения. Вторым существенным отличием является то, что начиная приблизительно с 1995-1997 года, графические движки производят рендеринг с помощью графических процессоров (англ. GPU), которые установлены на отдельных платах — видеокартах. Программные рендереры используют только центральные процессоры (англ. CPU).

Как правило, графические движки не распространяются отдельно от игровых. Единственного графического движка без дополнительных компонентов и инструментария недостаточно для создания игры, поэтому разработчики движков продают лишь игровые движки с полным набором инструментов и компонентов. Однако это правило не относится к свободному программному обеспечению. Энтузиасты создают свободные графические движки и свободно их распространяют. Впоследствии разработчики игр могут объединить свободный графический движок с физическим, звуковым и другими компонентами и создать на основе их полноценный игровой движок.

    • Физический движок — подсистема в компьютерных играх и некоторых других приложениях, отвечающая за симуляцию физики абсолютно твёрдого тела (с появлением PhysX - и за поведение "тряпичных" и мягких тел, так же). В силу специфики области применения, основными требованиями, предъявляемыми к физическим движкам, являются высокая производительность и реалистичность. Однако требование «реалистичности» не всегда совпадает с требованием физической точности симуляции, и предполагает только субъективную достоверность поведения твёрдых тел, а иногда — даже всего лишь красоту и зрелищность (тогда это называют «кинематографичной физикой») В августе 2009 года англоязычный журнал Game Developer (англ.), посвящённый разработке компьютерных игр, опубликовал статью о современных игровых движках и их использовании. Согласно данным журнала, наиболее популярным среди разработчиков является движок nVidia PhysX, который занимает 26,8% рынка. На втором месте находится Havok, который занимает 22,7% рынка. Третье место принадлежит движку Bullet Physics Library (10,3%), а четвёртое — Open Dynamics Engine (4,1%).
    • Звуковой движок (англ. sound/audio engine) — программный компонент игрового движка, отвечающий за воспроизведение звука (голосов персонажей, шумовое и музыкальное оформление) в компьютерной игре или другом приложении. Звуковой движок часто отвечает также за имитацию определенных акустических условий, воспроизведение звука согласно местоположению, эхо и т.д. Примеры известных звуковых интерфейсов программирования приложений (англ. API) и программных библиотек, которые используются в звуковых движках — Environmental Audio Extensions (EAX), OpenAL, FMOD, DirectSound3D и др.
    • Игровой искусственный интеллект (англ. Game artificial intelligence) — набор программных методик, которые используются в компьютерных играх для создания иллюзии интеллекта в поведении персонажей, управляемых компьютером. Игровой ИИ, помимо методов традиционного искусственного интеллекта, включает также алгоритмы теории управления, робототехники, компьютерной графики и информатики в целом. Реализация ИИ сильно влияет на геймплей, системные требования и бюджет игры, и разработчики балансируют между этими требованиями, стараясь сделать интересный и нетребовательный к ресурсам ИИ малой ценой. Поэтому подход к игровому ИИ серьёзно отличается от подхода к традиционному ИИ — широко применяются разного рода упрощения, обманы и эмуляции. Например: с одной стороны, в шутерах от первого лица безошибочное движение и мгновенное прицеливание, присущее ботам, не оставляет ни единого шанса человеку, так что эти способности искусственно снижаются. С другой — боты должны делать засады, действовать командой и т. д., для этого применяются «костыли» в виде контрольных точек, расставленных на уровне.
  • Средства разработки и среды программирования.
    Эта группа предназначена для написания собственного движка.
    В контексте данной темы фраза «написать движок» будет означать написание механизмов нашей отдельно взятой игры. Не нужно пытаться писать универсальный движок для множества игр, не нужно усложнять свою программу. Ограничьтесь минимально возможным набором объектов и наиболее простой системой для функционирования Вашей игры.

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

    Какой язык выбрать для программирования игры?
    По поводу выбора языка вряд ли кто возьмется дать какой-либо конкретный ответ. Да, самый распространенный – это C++. Но также это может быть и C#, и Delphi и Basic и любой другой
    (полезная ссылка по вопросу: Кто чем пользуется для написания игр?)
    Какие графические API обычно используются?
    Из графических API традиционно выделяют DirectX и OpenGl, но существуют и другие.

    DirectX — это набор API функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows. Наиболее широко используется при написании компьютерных игр. Пакет средств разработки DirectX под Microsoft Windows бесплатно доступен на сайте Microsoft. Зачастую свежие версии DirectX поставляются вместе с игровыми приложениями, так как DirectX API обновляется достаточно часто, и версия, включённая в ОС Windows, обычно является далеко не самой новой.

    Вообще говоря, DirectX – это не только API для графики.
    В целом, DirectX подразделяется на:
    • DirectX Graphics, набор интерфейсов, ранее (до версии 8.0) делившихся на:
      • DirectDraw: интерфейс вывода растровой графики. (Его разработка давно прекращена)
      • Direct3D (D3D): интерфейс вывода трёхмерных примитивов.
    • DirectInput: интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров.
    • DirectPlay: интерфейс сетевой коммуникации игр.
    • DirectSound: интерфейс низкоуровневой работы со звуком (формата Wave)
    • DirectMusic: интерфейс воспроизведения музыки в форматах Microsoft.
    • DirectShow: интерфейс, используемый для ввода/вывода аудио и/или видео данных.
    • DirectSetup: часть, ответственная за установку DirectX.
    • DirectX Media Objects: реализует функциональную поддержку потоковых объектов (например, кодировщики/декодировщики)
    • Direct2D : интерфейс вывода двумерной графики.

Практически все части DirectX API представляют собой наборы COM-совместимых объектов.

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.
Включает более 250-ти функций для рисования сложных трёхмерных сцен из простых примитивов. Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.
Существует ряд библиотек, созданных поверх или в дополнение к OpenGL. Например, библиотека GLU, являющаяся практически стандартным дополнением OpenGL и всегда её сопровождающая, построена поверх последней, то есть использует её функции для реализации своих возможностей. Другие библиотеки, как, например, GLUT и SDL, созданы для реализации возможностей, недоступных в OpenGL.

Что лучше - DirectX или OpenGL?
У каждого из этих продуктов свои особенности, достоинства и недостатки.
Полезная ссылка по вопросу: DirectX vs. OpenGL.

Шаг 2. Изучение теории.
Следующим логичным шагом будет изучение теории по выбранному инструментарию.

Какие книги можно почитать по ... ?
Я собрал возможную полезную литературу в отдельном разделе: Литература по программированию игр. Надеюсь, это поможет.

Шаг 3. Непосредственное программирование\создание игры.
Самый трудоемкий и вместе с тем интересный процесс. Естественно, его рассмотрение не поместится в рамки ни одного FAQ, поэтому все возникающие проблемы можно обсуждать здесь.


Поделиться:

Дата добавления: 2015-09-13; просмотров: 77; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты