Урок # 16 - simple game 3d
read paper in english
На предыдущих страницах урока 1 simple game мы подробно ознакомились со всеми вопросами, которые могут возникнуть при создании самой минимально необходимой функциональности, которая присутствует в любой игре: использование спрайтов, игровых объектов, создание игровой сцены (уровня, комнаты), управление перемещением, системы координат экранная и векторная, загрузка и перемещение (скроллинг) для сцены (уровня, комнаты), декорирование внешнего вида, проверка столкновений (коллизий), простейший AI (искуственный интеллект) управляющий NPC (игровыми объектами, которыми управляет программа, а не игрок), начисление игрового счёта, и наконец воспроизведение в игре звуков и музыки.
Однако все, что мы рассматривали, относилось в основном к созданию 2d игр. Игра также была 2d. Несомненно, что 2d игры создавать проще, поскольку не нужно знать особенности программирования 3d графики и прочих нюансов, касающихся плотной работы с 3d. Кто-то останавливается на 2d играх и дальше уже не двигается. Если же Вам интересно продолжить свой путь и узнать основы на которых строится создание 3d игр - тогда дальнейшее повествование Вас заинтересует.
Содержание
страница 1 - Спрайты
страница 2 - Объекты
страница 3 - Наложение объектов
страница 4 - Код - Настройка параметров Scene Editor fge и написание кода для вывода спрайта шарика в вашем первом игровом приложении
страница 5 - Отображаем прыгающий шарик
страница 6 - Загрузка игровой сцены
страница 7 - Перемещения игровой сцены
страница 8 - Закрываем часть сцены от пустот при помощи черной текстуры с прорезью, ограничиваем перемещение сцены
страница 9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика
страница 10 - Проверка столкновений
страница 11 - Игровой счёт, звуки, музыка
урок #2 страница 1 - Создание новых сцен для игры simple game, расширенная версия simple game extended
13. Скроллинг больших локаций
14. использование переменных в игре на c++ directx 9c
15. Мульти анимация
Чем же так отличается 2d от 3d, что его гораздо сложнее программировать ?
Ответ прост: работа с 3d требует гораздо более качественной математической подготовки, нежели знания по 2d. Аспекты 3d достаточно обширны и могут сбить с толку или попросту отпугнуть большим объемом информации, который надо сразу же знать уже на начальном этапе работы.
Конечно Вы можете возразить на это, что есть же готовые движки. Да, они есть, но если знаний по 3d у вас нет, то движок вам ничем не поможет. Движок не сможет сделать игру за Вас. Поэтому знать то, как работает 3d и как его программируют нужно в любом случае. К тому же чужой движок может быть частично или полностью закрыт от изучения его исходников, что таит в себе скрытые подводные камни и может оказаться барьером на пути к вашей цели.
Поэтому выход один: использовать такие движки где исходный код не является закрытым, или где хотя бы есть много примеров успешно выпущенных на нем игр. Ну и конечно же нужно всегда начинать изучение с азов и писать сначала самые простейшие приложения. А уже потом из этих кусочков собирать что-то более серьезное и сложное. Чем мы собственно сейчас и займемся.
На показанном выше скриншоте Вы могли уже видеть готовую 3d сцену. В любой 3d сцене есть камера и есть какие-то объекты сцены, которые нужно отображать. В нашем случае их 3 вида: плоский объект представляющий пол, кубики то и дело падающие сверху и зеленовато-синий туман.
Что умеет делать это приложение: можно управлять 3d камерой - перемещаться по осям x, y, z. Вращать камеру в любом направлении. Ну и конечно есть код, который отвечает за создание и перемещение кубиков, вывод плоского пола и наконец туман, который реализуется средствами directx 9c ну совсем просто. В качестве бонуса есть проигрывание mp3 музыкальных треков. :)
Туман время от времени меняет свой цвет. Кубики падают, достигнув определенных пределов исчезают и создаются снова. Ну а Вам, нужно будет узнать следующие аспекты, чтобы понять как работает простое 3d приложение:
a) Инициализация для работы с 3d;
b) трансформации 3d объектов: перемещения, вращения, масштаб;
c) Собственно чем отличается управление камерой от управления любыми другими игровыми объектами (кубиками, полом);
На перспективу:
d) Как создать 3d загружаемую сцену, создаваемую в редакторе 3d сцен (SceneEditor);
e) Простейший игровой процесс похожий на simple game, но уже в 3d.
Итак, приложение наше будет называться game craft, а туман я использовал, потому что хотел имитировать некую подводную сцену. Давным давно я начинал изучение directx именно с того, что создавал подводные сцены для будущего проекта Тайны Морских глубин.
Ответ на вопросы a и c можно получить из цикла статей game craft -
Game craft - игровая камера в d3d9 - приложении
Теоретические и практические основы создания 3d игр
Новый сон Зеленого.
Предвкушение.
Когда Зеленый погрузился в сон, он увидел странные вещи.
Сначала себя, но почему-то красного, потом себя же - но уже зеленого.
Еще были какие-то непонятные существа на двух ногах. Они говорили.
Их речь была не совсем понятна, но это явно был разговор двух
интересных людей.
Еще он увидел другое незнакомое существо. Оно стреляло.
Сначала Зелеными шарами, затем почему-то черными.
А потом ... из него вылетел самый большой зеленый шар и превратился
в ... Зеленого.
Иногда когда видишь такие вот странные сны, но понимаешь, что
видишь себя как бы со стороны, то ощущаешь что-то необыкновенное.
Ты как будто завис между двумя мирами. Существуешь в одном,
но понимаешь, что это лишь иллюзия и на самом деле ты совсем
в другом месте.
И то что кажется одним, на самом деле может таить в себе
совсем другое.
Многие вещи воспринимаются не совсем объективно потому что
на них накладывается слой за слоем искажений, которые
представляют объект уже не тем, чем он является на самом
деле, а другим.
И все-таки он найдет путь на котором все его истинные свойства
покажут себя в самом наилучшем, выигрышном свете, даже если
окружающие обстоятельства не то что будут способстовать этому,
а наоборот - даже мешать.
Мешать.
Иногда предвкушение. Ожидание. Препятствие. Дают несравнимо
больший эффект, нежели сам результат, к которому стремишься.
Но хватит укладывать все в никому неинтересные схемы.
Реальность, неожиданная и интересная намного прекраснее, нежели
любая, даже самая продуманная схема.
Почему ?
Да потому что никогда до конца не знаешь к чему приведет.
В этом вся соль.
Когда ты идешь вперед по заранее заданному плану, ты думаешь:
да, вот будет так. Сейчас одно, затем другое и т. д. и т. п.
Но нет. План есть план, а реальность всегда вносит свои
коррективы.
То времени не хватает у тебя, то настроение не то, или
еще куча причин и обстоятельств меняют все планы. Однако
Ты находишь в себе силы не забросить начатое, вытащить
из сокровенных уголков затаенное вдохновение и развернуть
его с новой силой.
Настраивая себя на новый лад. Не иллюзий и невыполнимых
планов, а именно наслаждением прекрасным моментом действия
по осуществлению задуманного, Ты снова паришь на крыльях
своего вдохновения.
И твои мечты постепенно становятся реальностью.
Помогают тебе.
Когда Зеленый был одинок и грустен. Когда у него не было
друзей. Ему было плохо. Но вот все изменилось. Он сам изменился.
На его планете все не так привычно как на Земле. Местные жители
способны пользоваться не только физическими энергиями, но и
нематериальными.
Например силой своей мысли они способны перемещать предметы
и даже перемещаться сами.
Со стороны это выглядит интересно и захватывающе.
Но представьте когда Вы к этому уже давно привыкли.
Вас же не удивляет, что каждый день вдоль вашей улицы
снуют туда сюда быстрые автомобили.
Также и Зеленый совсем не удивлялся тому как его сородичи
быстро перемещались в пространстве по своим неотложным делам.
Все происходило лишь силой мысли ...
Холодный ветер подул из окна и он шагнул навстречу другой реальности.
Упал в этот новый мир.
Дверь была открыта. Он вошел в неё и пошел вперед не оглядываясь.
Впереди была неизвестность.
[назад] [далее к содержанию]