Blender Game Engine примеры.

Board index Геймдев в Blender Игровой движок Blender

Description: Все вопросы и обсуждения, касающиеся BGE
Moderators: exooman, denis8424

  • 7

Post #1by denis8424 » 16.02.2014, 12:49

Внимание, здесь вы можете только скачать пример, или поделиться им. Все вопросы задавайте здесь: "Вопросы по созданию игр."
Образец оформления:
Название: (должно отражать суть примера вкратце)
Автор: (если не знаете, так и пишите - "Не знаю")
Подробное описание: (Что делает, с помощью чего реализовано и т.п.)
Управление:(Если нужно просто запустить игру, так и пишите - "Просто запустить игру")
Версия Блендера

Все сообщения, оформление которых не соответствует вышеуказанным правилам будут редактироваться, или удаляться.
Все выкладываемые картинки должны быть формата .jpeg с качеством не выше 70%.
Все файлы должны быть сжаты, желательный формат - .7z, их размер не должен превышать 5 МБ, и они не должны содержать ресурсов(текстур, звуков и т.п.) не имеющих отношения к сути примера, или чрезмерного размера.
С претензиями обращайтесь к модераторам.
denis8424
Avatar
Posts: 724


  • 4

Вихрь: реализация поведения 'системы частиц' в BGE

Post #21by denis8424 » 26.02.2014, 10:14

Автор: O.din13
Подробное описание: Пустышка добавляет плейны, с анимацией движения, подобного вихрю.
Управление: Пробел - запуск/останов, D,A или стрелки влево/вправо - перемещение "вихря"
Версия Блендера: 2.69
vihr3.blend.7z
(120.43 KiB) Downloaded 285 times
denis8424
Avatar
Posts: 724

  • 3

Ориентирование кости на объект/кость и смена объекта-цели

Post #22by denis8424 » 14.03.2014, 12:40

Автор: O.din13
Подробное описание: кость меняет объект-цель с помощью актуаторов. Подобным же способом, возможно реализовать ориентирование кости на кость другого (или этого же) скелета, например, для стрельбы/удара в "голову" или "руку", или "корпус". Но! Цель менять не через актуатор (не позволяет указать целью кость), а через несколько заранее созданных констрейнов, которые переключать актуатором.
Управление: Стрелки клавиатуры: "влево-вправо" - переключают цель, а "вверх-вниз" - двигают цель-кубик.
Версия Блендера: 2.69
logicBoneTrackTo.blend.7z
(177.06 KiB) Downloaded 226 times
denis8424
Avatar
Posts: 724

  • 3

Стекло рефлекция отражение

Post #23by denis8424 » 19.03.2014, 15:49

Автор: Мartinsh
Подробное описание: Примеры шейдеров. Отражение, прозрачность, преломление. Смотрите сами.
Управление: Меняйте сцены и запускайте игру.
Версия Блендера: 2.69 - работает, но преломление пишет ошибку в консоль.
1243-397_reflection_shad.blend.7z
(1.05 MiB) Downloaded 391 times
denis8424
Avatar
Posts: 724

  • 3

Пример зеркала без скрипта.

Post #24by denis8424 » 19.03.2014, 16:01

Автор: Синяк
Подробное описание: На сцене нет зеркала, а есть еще один куб, который повторяет все действия в зеркальном отражении.
Управление: кнопки W,S,A,D
Версия Блендера: 2.69
Mirror no python.blend.7z
(52.13 KiB) Downloaded 271 times
denis8424
Avatar
Posts: 724

  • 4

Объект следит(поворачивается) за курсором мыши.

Post #25by denis8424 » 19.03.2014, 16:23

Автор: FroST
Подробное описание: Скрипт переводит экранные координаты курсора в мировые координаты. С помощью скрипта за курсором мыши следит plane. А cube, с помощью логики, следит за Plane. Вот и получается, что куб следит за курсором.
Управление: мышь
Версия Блендера: 2.69
MouseSL.blend.7z
(43.21 KiB) Downloaded 318 times
denis8424
Avatar
Posts: 724

  • 3

Фэйковые ортогональные тени

Post #26by denis8424 » 19.03.2014, 17:20

Автор: Redneck
Подробное описание:
1. Создаем игровую сцену (в моем случае просто лесенка из кубиков)
2. Создаем спот-лайт, помешаем его подальше от нашей сцены, направляем его в центр сцены, выставляем Lamp/ThisLayerOnly и Lamp/Falloff/Constant, подгоняем Shadow/ClipStart,ClipEnd, SpotShape/Size под сцену, индивидуально настраеваем Shadow/Bias и Shadow/Size.
3. Дублируем спот-лайт (shift+d), меняем его тип на Sun, переносим на второй слой (m).
4. На втором слое строим фоновую сцену (дальние объекты, упрощенные соседние локации, небо). В моем случае там тоже просто зеленая лесенка.
5. Делаем оба слоя видимыми. Вроде всё...
6. Выставляем у камеры ClipEnd, чтобы она доставала до фоновой сцены.
6.1. А можно и так: сделать фоновую сцену поменьше, сгруппировать ее и запарентить к камере.
7. Вам домашнее задание: запечь статические тени для второго слоя. При желании можно и для первого, но тогда надо как-то пересекать их с динамическими.
Управление: просто запустите игру
Версия Блендера: 2.69
ge-sun-shadows.blend.7z
(58.28 KiB) Downloaded 196 times
denis8424
Avatar
Posts: 724

  • 2

Пример использования шейдера эрозии

Post #27by denis8424 » 19.03.2014, 22:29

Автор: 3DLabs, адаптировано Letun
Подробное описание: Шейдер заставляет "исчезать" меш по кусочкам. При желании можно использовать для эффекта сгорания а-ля DOOM3
Управление: Стрелочки Влево/Вправо
Версия Блендера: 2.69
erosion.blend.7z
(138 KiB) Downloaded 229 times
denis8424
Avatar
Posts: 724

  • 2

Обводка контура по краям, без применения фильтров.

Post #28by denis8424 » 19.03.2014, 22:45

Автор: WIN64
Подробное описание: Простой способ сделать меши похожими на нарисованные. Каждый меш дублируется, затем дублю присваивается черный материал и выворачивают нормали внутрь.
Управление: Стрелочки Влево/Вправо поворот камеры.
Версия Блендера: 2.69
ObvodkaKontura.blend.7z
(589.75 KiB) Downloaded 216 times
denis8424
Avatar
Posts: 724

  • 4

Post #29by dominatorus » 13.06.2014, 10:49

Автор: dominatorus
Подробное описание: Пример игры в стиле Tower Defence
Управление: Мышью расставляете турели, пробел - начать сначала
Версия Блендера: 2.70a
Attachments
tower_defence.blend.7z
(85.25 KiB) Downloaded 201 times
dominatorus
Avatar
Posts: 64

  • 3

Post #30by dominatorus » 27.07.2014, 15:24

Автор: dominatorus
Подробное описание: Скрипт управления камерой в стиле RTS (без использования плоскостей по краям экрана)
Управление: Мышью или стрелками
Версия Блендера: 2.71
Attachments
RTSCamera.blend.7z
(63.38 KiB) Downloaded 245 times
dominatorus
Avatar
Posts: 64

  • 2

Post #31by dominatorus » 14.08.2014, 20:23

Автор: dominatorus
Подробное описание: Скрипт движения от объекта к объекту по параболе
Управление: -
Версия Блендера: 2.71
Attachments
parab.blend.7z
(52.5 KiB) Downloaded 217 times
dominatorus
Avatar
Posts: 64

  • 2

Управление камерой мышкой от 3-го лица.

Post #32by Bibo » 11.09.2014, 22:24

Автор: GetLocalPlayer
Подробное описание: Очередной скрипт на управление камерой мышкой. В особенности входит непроходимость сквозь препятствия(оные должны иметь атрибут camBlock) и восстановление "накрученной" колесиком дистанции по исчезновению препятствия.
Выполнен в двух вариантах:
        1. С применением 3-х сенсоров(1 - Mouse 'Movement'; 2 - Mouse 'Wheel Up/Down')
        2. С применением одного сенсора Always
Версия Блендера: 2.71
Attachments
Camera.7z
(180.68 KiB) Downloaded 241 times
OneSens.7z
(183.41 KiB) Downloaded 240 times
Bibo
Avatar
Posts: 612

  • 1

Упрощенный пример тумана войны для блочного ландшафта.

Post #33by denis8424 » 25.12.2014, 20:56

Автор: я
Подробное описание: В примере используется список точек, в котором записывается видимость каждого блока ландшафта. В зависимости от видимости блок ландшафта изменяется, путем удаления старого блока и добавлением со скрытого слоя в его позицию нового. Пример упрощенный - тип ландшафта только один - просто плейн, иначе нужно писать еще и выбор конкретного добавляемого блока. Главное - используются сеты, позволяющие упростить и ускорить работу скрипта. Подробнее про сеты
Сделано "на коленке".
Управление: WASD
Версия Блендера: 2.72
fogOfWar.blend.7z
(126.09 KiB) Downloaded 210 times
denis8424
Avatar
Posts: 724

  • 1

Пример стен для стратегий.

Post #34by denis8424 » 13.01.2015, 23:14

Автор: я
Подробное описание: Пример относится к типу блочных ландшафтов. Создан список всех возможных ячеек, в которых записана такая информация, как индекс ячейки, её координата, список соседних ячеек по горизонтали и вертикали(не по диагонали), а так же занята ли ячейка, и если занята, то каким объектом. Если ячейка свободна, то в её координату добавляется объект-блок стены, который 1) находит подходящую форму для себя и 2) отправляет соседним блокам сообщение(через их проперти), побуждающее их изменить свою форму. Блоки невидимы, свою форму они изменяют, подгружая со скрытого слоя подходящий объект стены.
Управление: левая клавиша мыши добавляет блок, правая - удаляет.
Версия Блендера: 2.72

wall.blend.7z
(214.54 KiB) Downloaded 209 times
denis8424
Avatar
Posts: 724

  • 1

Пример перемещения по точкам.

Post #35by denis8424 » 13.01.2015, 23:55

Автор: я
Подробное описание: Создан список всех возможных координат клеток. Бот получает путь - список индексов клеток и последовательно двигается к каждой из них. Для разворота к следующей точке используется вектор направления от бота к координате клетки-цели. Достоинства - отсутствуют дополнительные объекты, возможен очень большой список клеток, можно легко менять путь во время игры, одна и та же клетка может быть посещена несколько раз.
Управление: Просто запустить игру(Р), Пробел - перезагрузка.
Версия Блендера: 2.72

64.blend.7z
Большеват.
(511.36 KiB) Downloaded 203 times
denis8424
Avatar
Posts: 724

  • 2

Динамичная подмена текстуры на примере двумерного персонажа

Post #36by Bibo » 02.02.2015, 10:20

Автор: Гагояг
Подробное описание: На пример натолкнула игра Paint Man 2. В данном случае, визуальное представление персонажа есть плейн с натянутой текстурой. Изображение текстуры динамично подменяется, что дает анимацию.
Важно понимать, текстура, это глобальный и статичный объект. Мы не можем создать новую текстуру во время игрового процесса, мы только подменяем ресурс существующей текстуры(изображение, которое использует эта текстура). Из этого вытекает, что все объекты использующие данную текстуру, тоже подвергаются изменению. Данное явление будет наглядно если включить соседний слой, на котором расположено несколько фигур, которым назначена эта же текстура.
Управление: A, D, Space
Версия Блендера: 2.72
Attachments
Example.7z
(671.12 KiB) Downloaded 198 times
Bibo
Avatar
Posts: 612

  • 3

Post #37by Flogger-K » 11.03.2015, 10:36

Автор: вроде как я
Подробное описание:
Данный пример показывает, как проигрывать анимацию потомков объекта с заменой мешей, также в пример включена подгрузка из другого файла.
Spoiler
В данном файле учтен собственный неудачный опыт с заменами мешей. Вещь эта довольно полезная, при условии, что вы меняете меш для объекта но коллижн (с физикой я связываться не рискнул). Замена меша осуществляется при изменении проперти, причем имя меша, "идущего на замену" "собирается" из кусочков. Этими кусочками могут быть строковые проперти или переменная, определенная в самом скрипте. Проигрывание анимации при смене проперти происходит по схеме - проверяются все потомки через функцию childrenRecursive, при этом потомки получают команду на проигрывание анимации. Причем имя анимации одинаково с именем ее носителя (это очень важно, иначе работать не будет, потoму как имя нужной анимации не будет найдено).
Также весьма важно заметить, что если вам нужно работать именно с мешами, а не объектами, то для сточки с .LibLoad в скобках надо писать вместо 'Scene' 'Mesh'. Для чего это нужно?
Схема создания юнита для моих требований примерно такая - создается "скелет" из подвижных и анимированных частей-плейнов (кубиков, треугольников, неважно). Все эти объекты меняют свои меши на "декорации" - затекстуренные и объемные меши из подгруженных файлов. При этом алгоритм создания имен подгружаемого меша примерно такой - "имя семейства"+"имя объекта"+"нация"+"степень повреждений". Главное - точно рассчитать создание имени нужного меша. Затем при повреждении или смене каких либо свойств меняются нужные вам меши потомков. К примеру при повреждении фюзеляжа самолета - меш "целого" фюзеляжа меняется на меш "поврежденного". Проигрывание анимации потомков полезно при проигрывании анимации групп объектов, которые имеют анимацию одинаковой длины и имеют одну цель - показать выпуск или уборку шасси - (если в скрипте прписывать анимацию с перечислением имен всех объектов - запариться можно - их может быть очень много). Однако, подобный способ лучше применять для нечасто повторяющихся операций. Постоянное проигрывание множества анимаций, запускаемый через цикл for in может затормозить игру.
Управление:
Открываем файл "1". Запускаем игру. Жмем пробел, смотрим. Файл с нaзванием "2" - для подгрузки, кроме подгружаемых объектов там ничего нет. Файл с длинным названием - исходник, из которого составлены номерные файлы, управление в нем так же - пробел.
Версия Блендера: 2.72b
Attachments
BlendExperiment.zip
(575.75 KiB) Downloaded 139 times
актуальная версия проекта - здесь:
https://yadi.sk/d/Uf_VyC-afW5z7
Мои блоги - здесь. http://flogger-k.blogspot.ru/
ВК: https://vk.com/floggerk
Flogger-K M
авиатор
Avatar
Posts: 517

  • 2

Пример интерфейса и кнопок с перезарядкой (на скриптах)

Post #38by Bibo » 31.03.2015, 12:30

Автор: я
Подробное описание: Логическое продолжение этого примера. Весь код располагается в папке scripts:
Spoiler
interface.py - отвечает за инициализацию интерфейса. Выравнивание каркасов по краям экрана (чтение из файла interface.ini), определение соотношение сторон экрана. Определение необходимых объектов в сцене как кнопки. Определение функции замены иконки SetIcon.

game_cursor.py - определение и использование игрового курсора и всех его возможных действий. Работает по принципу MouseLook скриптов - системный курсор скрыт и возвращается к центру экрана, игровой курсор (моделька) в игровом пространстве сдвигается в зависимости от последнего смещения системного курсор. Не выходит за края экрана за счет определенного при инициализации интерфейса соотношения сторон.

mouse_events.py - определяет и записывает в качестве атрибута модуля bge.logic словарь, содержащий информацию о состояние курсора. Аналогичен словарю bge.logic.mouse.events за тем исключением, что состояния 1 и 3 независимы от FPS.

abilities.py - привязывает к определенным кнопкам набор параметров - времени перезарядки и подготовки, используемые в случае активации кнопки и иконку.

class_AbilityButton.py - содержит в себе класс, наследующий класс KX_GameObject. Фактически, определяет указанный при создании экземпляра объект (модель в сцене KX_GameObject) кнопкой и привязывает к ней свои действия (AbilitySet).

class_AbilitySet.py - определяет класс, который содержит в себе действия, которые необходимо совершить после использования кнопки. Имеет время подготовки (задержка перед совершением действий) и время перезарядки (время, до прошествии которого нельзя повторно совершить действие).
Файл interface.ini содержит параметры необходимые для инициализации интерфейса, среди которых имена иконок и их координаты.
Так как в blender-е фактически отсутствует возможность замены текстуры объекта во время игрового процесса, для замены иконок используется простой UV-скроллинг.

Данный пример не является идеальной наработкой, либо совершенной системой! Это только лишь громоздкий пример интерфейса и кнопок а-ля Warcraft, а так же преимущества скриптов пред кирпичами

Управление: Мышка
Версия Блендера: 2.73а
Attachments
Example.7z
(138.27 KiB) Downloaded 195 times
Bibo
Avatar
Posts: 612

  • 2

Нодовый материал, управляющий прозрачностью объекта в зависимости от расстояния до камеры.

Post #39by denis8424 » 01.04.2015, 21:19

Автор: переработанная версия от John Hamilton
Подробное описание: В примере показано, как с помощью нодового материала изменять цвет объекта в зависимости от расстояния до камеры. Так можно реализовать туман, облака, а также более плавное исчезновение объектов для ЛОДов.
Сделано по этому видеоуроку:
phpBB [media]

Подробнее:
В сцене два материала - Material, который делает объект прозрачным при приближении его к камере и Material2, который делает объект прозрачным при отдалении от камеры.
Суть - нода Camera Data отправляет расстояние до камеры, которое в ноде Divide делится на желаемое расстояние и получившееся значение используется как фактор смешивания в ноде Mix. В Material после ноды Divide используется еще нода Invert, что бы инвертировать полученное значение. По идее можно просто поменять местами делитель и делимое в ноде Divide, но я оставил, как в оригинале.
Ноды Geometry, Texture, Camera Data находятся в меню Add -> Input
Ноды Invert и Mix находятся в меню Add -> Color. Нода Mix называется там MixRGB
Нода Divide это нода Add -> Converter -> Math
Управление: клавиши W, S
Версия Блендера: 2.72
Attachments
fakeBloom.blend.7z
(91.26 KiB) Downloaded 143 times
denis8424
Avatar
Posts: 724

  • 2

Пример таймера

Post #40by maks-dll » 04.04.2015, 13:21

Автор: я
Подробное описание: заводим таймер и ждём) Если поменять проперти symbols на 4, будет видно десятые доли секунды, если 5 - то сотые, и т. д.
Управление: Просто запустить игру
Версия Блендера: 2.71
maks-dll M
Posts: 62

PreviousNext

Return to Игровой движок Blender

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest