О том, как я игрушку на BGE делал

Главная Форумы Blender Game Engine (BGE) О том, как я игрушку на BGE делал

Помечено: , ,

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Автор
    Сообщения
  • #9776
    Disaster
    Участник

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

    Давно уже в голове витала влажная мечта сделать небольшую PC игрушку. Требования были не жёсткие. Хотелось сделать аркадную гонялку в духе Playstation One. Жми газ, подруливай и просто наблюдай за тем, как оно ездит. Без сложностей вроде регулировок ходовой перед стартом, без сложной физики авто, которая бы заставляла постоянно думать. Ну, как — то так в общем.

    Начал я с самого начала — обратился к своему воображению. Нужно было составить небольшой список того, что я хотел получить от игры.
    1. Приятный геймплей. Без сложного управления.
    2. Плавная и мягкая физика с максимальной предсказуемостью того, как машина поведёт себя.
    3. Графон, который бы работал на моём компьютере без лагов и не резал глаза. Сложность была в том, что выбранный мной движок был весьма голодным на ресурсы, но об этом позже.
    4. Максимальное количество своего контента. Все домашние игроделы грешат тем, что тянут текстурки, модели и звуки с открытых источников. Я же находил романтику в том, что мог собрать всё то, что умею в один проект.

    С чего начинать?.
    Этот вопрос меня очень долго мучал потому, что я толком не знал о своей игре ничего.
    Начать с локации? Я не знаю, какая будет физика. Как будет вести себя машина при прохождении поворотов, как её будет кидать на неровностях?
    Взяться за код? Ещё не выбран движок, да и знания у меня только одной книги по C# и gml, который не может нормально в 3D.

    Выбор движка.
    Игровой движок — база. Основание, на котором делается игра. Он объединяет в себе физический, графический и звуковой движки, предоставляя удобный и быстрый доступ к оным.
    Но их как грязи. Один может 3D и 2D, Другой имеет базу первоклассных шейдеров, третий имеет кучу справок и примеров, который бы помогли начать.
    Спасение я нашёл там, где не сильно и ожидал — BGE. Я работал в 3D редакторе Blender уже давно и его интерфейс был мне привычен. Игровой движок в нём ещё трогать не приходилось.

    Я решил обосновать как — то свой выбор.
    1. bge имеет малую популярность. Сделать на нём игру — благое дело. глядишь, разработчики Blender решат его допилить и, в целом, поднимут известность этого 3D редактора, который был моим единственным выбором. 3G свисток не позволял скачать жирный 3D макс, а блендер при схожих возможностях весил всего 100мб.
    2. Blender был моим основным инструментом, которым я вытягивал свою фантазию и успокаивал свою душу. Всё — таки нет ничего более важного для творческой личности, чем возможность как — то передать свои мысли.
    3. Я не хотел разбираться в новом. Мне было проще костылить на старом.

    Начал я с того, что стал проверять разными способами возможности bge:

    Сложные материалы для BGE. Сложные они условно. На деле это текстура с Normal Map и небольшая система нодов для красивого отблеска, но до этого я работал исключительно с Cycles рендером и не сильно интересовался возможностями реалтайма.

    Мрачная ночь мне не сильно понравилась, а потому я немного доработал сцену и переделал освещение:

    Графика меня не устраивала. Как сделать всё легко и красиво? Где та самая кнопка «сделать за**ись», о которой мечтает каждый?
    Ответ навязывался сам собой — шейдеры.
    Увы, но с написанием шейдеров я ещё не сталкивался, а любые попытки разобраться в Open GL заканчивались сожжённым стулом потому, что я банально не понимал, как с помощью указанных функций мне сделать то, что я хочу.
    вот и первый чужой контент — набор шейдеров. Я успокаивал себя тем, что мне придётся их знатно настроить под свою игру прежде, чем использовать, но в душе понимал, что это отклонение от ожидаемого — очень плохое начало.

    Первый тест новых шейдеров. Объёмный свет, SSAO (сложное глобальное затенение), DoF (фокусировка) и немного цветкора:

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

    За основу я взял субарку и накидал такую вот модельку:

    Далее на удачу мне в вк группе по блендеру появился пост, где парень спрашивал, как добавить колёс к машинке, написание физики которой демонстрировалось в видео — уроке.
    Пришлось покопаться, но я таки нашёл этот файлик и записал видео:
    Демонстрация первой физики

    И начал разбираться в коде:
    Издевательства над кодом

    Я немного допилил код и прикрутил его к машинке. Всё работало хорошо, но ещё были некоторые проблемы с поведением авто. Оно ехало не сильно красиво, а без трассы было сложно определить, чего ей не хватает:
    Прикрутил к машинке

    А потому начал заниматься локацией.
    В процессе создания локации мне пришлось достаточно фигово. Обычно я делаю модели на один ракурс, а создание развёртки для меня вообще темнота. Многому пришлось научиться. Сам маршрут трассы я предоставил рандому — бросил велосипедную цепь на пол. Да, вот так вот просто. Пришлось немного попотеть продумывая окруженние потому, что иметь одну только дорогу — мало.
    После двух дней свет увидела локация для игрушки:



    Она всё-ещё была сырой и требовала допилки. Без шейдеров, без объектов. Скука, но этого уже было достаточно для того, что бы продолжить работу над физикой.

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

    В назначенную дату в группе появился пост с совершенно новым проектом — RallyCross a1p.
    «Управление улучшено, графика доработана, добавлена система повреждений!»
    Всё это оказалось чистой ложью и пользователи вместо этого…

    Увидели это:
    6872022

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

    Пока в комментариях шли активные обсуждения первоапрельской версии — у меня было время для допилки системы повреждений.

    Машина действительно уже могла помяться, игра прекращалась при перевороте на крышу:

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

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



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

    Последний рывок — допилка машинки, правка мелких ошибок у локации и ооочень долгая подстройка физики машинки.

    Есть некоторые недопилки, но, главное, я достиг своей цели — сделал аркадную гонялку. Да, я немного отклонился от начального плана. Особенно в плане чужого контента. Если быть совсем честным — очень много чужого контента, а именно:

    Начальная физика машинки.
    Набор шейдеров (DoF, SSAO, ColorCorrection, Bloom, Water Shader)
    Текстуры гравия, бетона и деревьев, карта окружения.
    Модель вышки.

    В целом — я рад проделанной работе. Я узнал много нового и интересного о играх и их составляющих. Я немного выучил Python и впервые реализовал до условного конца задуманное.

    Посмотреть в динамике можно тут:
    Геймплей

    Увы, но скинуть саму игрушку я не смогу. Blender Game Engine, как оказалось, имеет один очень важный изъян — он компилирует игрушку только под ту систему, под которую скомпилирован. Тоесть игра на Windows 7 на 8 \ 8.1 \ 10 не идёт :с
    Единственным выходом остаётся скидывание исходника и запуск оного в Blender 3D
    На пост в вк попадёшь

    Скорее всего будут проблемы с физикой, а потому придётся самостоятельно убрать коснтреинты с дверей \ капота \ багажника. Или, если есть желание попробовать с качающимися деталями — убрать родительскую привязку у тех же объектов.

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

    Зато наработки уже есть и в случае чего я всегда смогу вернуться к проекту зная, что в запасе у меня есть ещё идеи, которые можно было бы реализовать=)

    Спасибо за внимания, с вами был Drdotmom!

    А ещё я Disaster, Carbon65 и, иногда, analdestroyer9001, но это уже совсем друга история…

    #9781
    Артем Слаква
    Хранитель

    Спасибо за перепечатку поста! Ждем продолжения!

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

    #9827
    Disaster
    Участник

    Давно пора было… [Типа красивый заголовок]

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

    После публикации поста как — то захотелось его подготовить » в последний путь». Немного навести красоты перед уходом. Как генеральная уборка перед выездом на дачу на летние каникулы. Но разбираясь в старом хламе я неосознанно заметил за собой, что кроме наведения чистоты, удаления лишних объектов и максимального поворота «лицом» к следующим пользователям я начал улучшать проект.
    Ну а почему бы и нет? Вот так и случилось достаточно масштабная (по меркам этого маленького проекта) обновление. Размеры изменений я могу сравнить, пожалуй, с вводом системы повреждений.

    Первым делом после осознания того, что наведённый порядок уже является неким обновлением я захотел улучшить графику. Прошлая версия была достаточно жёсткой и беспощадной к ресурсам, но после улучшения чистоты картинки настройкой шейдеров я понял, что освободил ресурсов. Начал так начал!
    Первыми под косу оптимизации пошли текстуры, которые были кривых разрешений и, местами, через мерно качественными. Ещё читая справку к дополнению Ultimate 3D для Game maker я узнал, что разрешение текстур должно быть кратно двум. В противном случае они пожимаются до меньшего разрешения. Тоесть все мои текстурки разрешением 800х800 жрали как 800х800, а выглядели как 512 х 512. Я не мог допустить такого транжирства и порезал их.
    Шейдеры. DoF был абсолютно бесполезен. Он хорошо смотрится в стрелялке или красивой гонке, но когда речь идёт о ралли с частыми поворотами, не дающими посмотреть вдаль — он лишний. *Удалено*
    Bloom и SSAO раздваивали объекты, создавая вокруг них полупрозрачные копии. Это очень сильно загрязняло картинку и я решил перенастроить это дело. Получилось даже быстрее.

    Оптимизация прошла с небольшим улучшением графона. Зачем жить без графона?
    Разумеется, графон тоже относительный и Dirt 3 у меня не получится, но, в целом, немного подправить можно.
    С этой мыслёй я закатал рукова и начал адаптировать модельку Lancer 10 к игровому миру. Адаптация прошла успешно. Модель вписывается в графон и имеет тот же функционал, что и прошлая. Поправляя физику случайно улучшил управляемость и реакцию на неровности ландшавта. Правда местами ландшафт был совсем кривой и я его выравнил. Заодно сменил направление. В другую сторону ехать как — то проще и пейзажи краше =)

    Обновление уже достаточно масштабное и охватывает абсолютно все части игры. Графика, Физика и производительность. Не хватало изюменки, которая бы позволила действительно называть обновление большим.

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

    Найдя в интернете небольшой код, демонстрирующий работу с Pitch я принялся за разработку звукового движка для движка. Исходник использовал только лишь скорость для определения высоты тона. В определённые скоростные промежутки машинка дёргалась назад сбивая скорость, чем создавала скачок в высоте. Из — за этого создавался эффект переключения передачи. Мне это не подходило по той простой причине, что в отличии от примера моя машинка могла подпрыгнуть на неровности или уйти в занос. Обороты двигателя должны подскакивать, но скорость остаётся прежней, что совершенно не красиво звучит в случае с исходником.

    начал я с самого начала — добавление такой штуки как rpm.
    При нажатии на клавишу газа значение переменной возрастало, а при отпускании падало. Это всё очень хорошо, но абсолютно ничего общего со скоростью не имеет, да ещё и одна единственная передача. Пришлось вводить симулятор коробки, который на определённой скорости при определённых оборотах сбрасывал обороты и переключался на следующую «передачу» уже с другими условиями для переключения.
    Всё по — взрослому =)

    На самом деле выглядит это очень просто. Объяснить работу — сложнее, а придумать это — вообще вынос мозга. Сложнее чем придумать, пожалуй, только настроить для качественной работы.
    В целом же получилось удачно, но ещё предстоит допилка.

    Пожалуй, вот так и было создано обновление.

    Геймплей в новой версии

    Ссылка на пост с последним исходником

    Спасибо за внимание, с вами был drdotmom!

    #9837
    Максим
    Участник

    Очень интересно, спасибо!

    #10415
    startuper
    Участник

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

    #13012
    edik
    Участник

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

    #13020
    David Gray
    Участник

    Было бы интересно глянуть урок примера такой работы.

    #13023
    Disaster
    Участник
    #13024
    Максим
    Участник

    Спасибо!

    #13198
    Disaster
    Участник

    Rally Game Update 3.

    Лог:

    Звук:
    1. Добавлены звуки для ручника, заднего хода (тестовый), 4 звука удара, звук максимальных оборотов, звук запуска двигателя перед стартом.
    2. Все звуки конвертированы в mp3 и пожаты, у всех звуков отключен параметр «3D» для ускорения.

    Графика:
    1. Улучшена анимация повреждений крыши. Теперь она мнётся сильнее.
    2. Для некоторых текстур включён Normal Mapping.
    3. У деревьев улучшено качество среднего лода.
    4. Добавлены стоп-сигналы, фары и фонари заднего хода.
    5. Починил маяк! Теперь его основание снова отображается!
    6. Поправлен материал колёс и отражения кузова.

    Физика:
    1. Улучшена работа физики автомобиля. Теперь колёса значительно реже проваливается в карту, столкновения в большинстве случаев обрабатываются правильно.
    2. Изменены настройки физики для острова, деревьев, моста и колёс. Теперь они требуют меньше ресурсов и реже вызывают ошибки.

    Геймплей:
    1. Автомобиль теперь сложнее вывести из заноса.
    2. Отключил смерть при перевороте.

    Логика:
    1. Ещё больше «кирпичиков» переведено в скрипты, в большинстве объектов в редакторе логики наведён порядок.
    2. При движении назад камера разворачивается.
    3. Починил тормоза. Теперь машинка тормозит на клавишу S при движении вперёд и на клавишу W при движении назад.
    4. Изменён механизм коробки передач. Теперь обороты на высоких передачах набираются медленнее, коробка научилась сбрасывать передачи, от передачи и оборотов зависит мощность.
    5. Всё, что касается звука убрано в один скрипт «SoundScript»
    6. Всем освещением автомобиля управляет один скрипт — «Car_Light»

    Файл .blend:
    1. Удалены лишние текстуры, звуки, скрипты и материалы, что сократило вес файла в 2 раза
    2. Много ресурсов было переименовано для большей наглядности.

    Скриншоты обновления:

    Скачать через Яндекс.Диск (да-да. Без регистрации и смс :D)

    #13203
    Максим
    Участник

    Крутяк! Спасибо!

    #13268
    Disaster
    Участник

    Всем привет!
    Вчера вот задумался о том, какие крутые тачки делала фирма Lancia!

    Марка эта, кстати, не сильно популярна (скажем так — про митсубиши и субару вы явно слышали чаще). Однако — Lancia хоть и была дочерней фирмой фиата, но делала невероятно красивые автомобили! (шутка про то, что фиаты страшные).
    Впрочем, как показывает практика — дочерние фирмы не всегда берут пример с родительских. Посмотреть на тот же Pixar. Он хоть и является частью Disney, но в мультфильмах Pixar на 99% больше смысла и на столько же меньше песен =)

    Визитной карточкой этой марки является Lancia Stratos. Это, пожалуй, один из самых узнаваемых автомобилей в мире.

    Главная особенность Lancia Stratos после внешнего вида — двигатель Ferrari Dino V6 (2.4л).
    Почти 200 л.с в автомобиле весом 980 кг! И это в купешке 1972г! Да тазы даже сегодня таких мощей выдать не могут.
    Бонусом — это автомобиль не для асфальта. Конструкционно он должен летать по грязям, щебням, пескам и снегам, что определяет многие требования к узлам.
    Короче говоря — очень рекомендую загуглить это прекрасный аппарат.

    Собственно — думал я о машинке, думал и решил, что надо бы её сделать для своей игрушки!
    В любой уважающей себя игрушке про ралли обязаны быть Subaru Impreza, Mitsubishi lancer и Lancia Stratos.
    Собственно — подумал, подумал да и сделал.
    На ваш суд =)


    Да, колёсики из Need For Speed Pro Streer)

    Ну а вот так оно выглядит в последнем обновлении:

    4946 треугольников, текстура 2048х2048 (для возможности её потом пожать)

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

    #13271
    Disaster
    Участник

    А теперь её можно ещё и покрутить =)

    #13273
    Максим
    Участник

    Мне нравится. Симпатичная.

    #13369
    Disaster
    Участник

    Что я могу рассказать такого, что бы вы не забыли про меня?)
    Работы ведутся. Правда, не сильно быстро т.к. работы работать нужно нормальные, кроме развлечений в bge…
    Бонусом ещё и обновление само по себе жирное готовится.
    Я оглашу список, но к выходу обновления не обещаю соблюдение всех пунктов:

    1. Планирую новую карту. Какой она будет — сказать не могу. Но она будет типа «спринт» для удобной оптимизации в виде лодов для карты и более удобного определения времени заезда, процента прохождения и т.д. Бонусом «спринт» это стандартная для ралли штука. Скорее всего трасса будет летняя, покрытие типа гравий, песок, асфальт.

    2. Переход на 2.78. В первую очередь переход на более позднюю версию принесёт в игру pbr шейдер, исправление ошибок и увеличение производительности.

    3. Как я уже сказал выше — pbr шейдер. Он уже достаточно оптимизирован и проверен на lancia stratos. Добавились красивые фейковые отражения с преломлением и карта отражений (правда шейдер пришлось править для оптимизации). Стоит уделить внимание крыше, на которой видно преломление отражений. Это и есть основная фича pbr в rallycross =) В динамике можно также заметить разное преломление у загрязнений на стёклах, на капоте и багажнике. Да и вообще в динамике всё лучше)

    4. Уже придумал чёткий механизм для переключения типа частиц из под колёс. Скорее всего будет отдельная тестовая трасса с разными типами дорожного покрытия, на которой можно будет опробовать новый функционал.

    5. Машинка будет вести себя на разных покрытиях по-разному в физическом плане. Это в первую очередь касается сцепления и динамики разгона\торможения.

    6. Планируется интерфейс. Уже продумана чёткая как часики и быстрая реализация паузы, системы профилей и настройки. Тоесть, теперь в процессе игры можно будет менять\сохранять\загружать настройки (да-да, прямо в файлы). Готовы скрипты для всяких регуляторов\галочек под интерфейс. Это будет полезно для всех рабов bge, независимо от их целей =)

    7. Частично продумана смена автомобилей с разными настройками. В перспективе это будет набор текстур, меш и cfg файл с характеристиками. Но далеко не факт, что появится в следующем обновлении т.к. есть ещё некоторые проблемы. В основном трудности были в открытии\чтении конфигов, но с недавних пор я таки овладел этим сложным делом и осталось всего-лишь продумать «сборку» модели из внешних ресурсов в самом движке.

    Тоесть, фактически, игра изменится очень-очень сильно. Она станет не только сложнее в плане кода и структуры исходника, но и проще для последующих работ или модификаций, если таковые будут. Добавиться много нового функционала типа паузы, скрипты полей для ввода, чекбоксов, регуляторов, работа со внешними файлами через функции чистого python. Если повезёт я задействую даже сторонние библиотеки(по-научному модули) python для упрощения работы с конфигами и разбивания данных cfg документов на пары ключ=значение.

    На этом пока всё. В процессе обязательно буду информировать вас о процессе и степени готовности обновления =)

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Форум «Blender Game Engine (BGE)» закрыт для новых тем и ответов.

О сайте

На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.

Контакты

Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:

Email:
info@blender3d.com.ua

Следите за нами

Подписывайтесь на наши страницы в социальных сетях.

На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.

Помимо уроков по Blender, Вы сможете найти готовые 3D-модели, материалы и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.