?

Log in

No account? Create an account

Создание компьютерной игры. Часть 25. Анимация: эпик шин.
gringosol

Сделал-таки скелетку (модель не моя):

Tags:

Создание компьютерной игры. Часть 24: интерполяция кадров скелетной анимации.
gringosol
Сделал плавный переход между кадрами анимации, но вылезла проблема с искажением формы модели. То ли это баг импорта, то ли что-то не так в вершинном шейдере. Буду разбираться. Когда решу эту проблему, выложу видео с анимированным персонажем.

Создание компьютерной игры. Часть 23: продолжение работы над скелетной анимацией.
gringosol
Поправлен скрипт экспорта анимации из Блендера - теперь учитывается rest pose. Сделана привязка анимации ко времени ключевых кадров. Текущая задача - сделать интерполяцию между ключевыми кадрами.

Создание компьютерной игры. Часть 22: начало работы над скелетной анимацией.
gringosol
Всем привет! 
 Итак, вроде появились кое-какие подвижки со скелетной анимацией. Самой большой проблемой является то, что ранее я не работал со скелеткой (ну, то есть для составных физических моделей я ее применял, но без учета весов вершин и вообще без использования skinned meshes).  Так вот, из вышеописанной проблемы вытекают две следующие :) : проблема экспорта из графического редактора и проблема реализации скелетки у себя в движке. Помучиться пришлось и с тем, и с другим. В итоге сейчас я сделал воспроизведение ключевых кадров анимации, пока даже без привязки к таймлайну. Также есть определенные проблемы с экспортом из Блендера: если я экспортирую относительные перемещения костей от кадра к кадру, то не учитывается начальная трансформация костей и из-за этого сбивается вся анимация. Если я экспортирую абсолютные перемещения, то на экране вообще творится какой-то ужас. В общем, надо копать в сторону установления начальной позы арматуры.
 Также не могу не отметить свою черепашью скорость работы над проектом в целом: надо ускоряться.
 И напоследок немного видео (впечатлительным людям и детям до 18 лет к просмотру не рекомендуется):

Создание компьютерной игры. Часть 21
gringosol

Устранены некоторые баги камеры. Сделан экспорт данных для скелетной анимации из Блендера. Добавляется поддержка скелетной анимации в движок. В следущем выпуске надеюсь выложить видео скелетной анимации.


Создание компьютерной игры. Часть 20: расширение функциональности.
gringosol
Добавлена возможность в 3D редакторе указывать, какой объект будет управляться игроком, а также расставлять точки старта игрока по уровню. Несколько разнотипных объектов в редакторе можно объединять в группы, например графическую модель и ее физическое представление. На основе данной информации движок свяжет необходимые компоненты в игре. Ближайшие задачи: отладить перемещение игрока по уровню, сделать отдельно графическое и физическое представление модели игрока, сделать поддержку скелетной анимации графической модели.

Создание компьютерной игры. Часть 19: разбор полетов.
gringosol
Всем привет!
Вот и завершился конкурс игр на gamedev.ru. Мой проект не занял там призового места из-за общей сырости. В принципе, победа и не была самоцелью - основными задачами было приобретение опыта, опробование движка применительно к реальной игре и желание еще раз удостовериться в своей способности делать хоть какие-нибудь игры.
Итак, наиболее важные вещи, которые я вынес из этого конкурса.
1. Низкая скорость разработки. Основные причины: общая несобранность и низкая производительность труда, слабая теоретическая база (алгоритмы, язык программирования), неготовность движка к интеграции с игровым кодом.
2. Наиболее острым вопросом была архитектура проекта, в частности иерархия игровых компонентов и организация взаимодействия этих компонентов. Пример: компонент река и компоненты "затеняющий куб" являются полями класса GameManager. Реке необходимо получать информацию от кубов. Вариант с передачей необходимых данных через параметры функций не подходил, так как требовалось обращаться к функциям объектов класса "куб". Было принято решение обращаться к каждому конкретному кубу через основной объект класса "Game". Не знаю, насколько это решение правильное.
3. Игра это не только код, не только контент, но это также тщательно настроенный игровой баланс, удобство управления, понятность происходящего на экране игроку. По данным критериям игра и провалилась, в частности из-за недостатка времени.
Основные выводы из участия в конкурсе:
1. Более интенсивно изучать языки программирования и алгоритмы, а также применять полученные знания на практике.
2. Продолжить разработку движка и игры одновременно, потому что на данном этапе у меня нет достаточных знаний и опыта для написания абстрактного движка и последующего создания игры на его основе. Будем делать так: берем элемент игрового процесса, который необходимо реализовать, анализируем, что нужно сделать на уровне движка для этого, дополняем движок, реализуем задуманное.
3. Следует из пункта №2: начинаю писать собственно игровой код - состояния игры, систему игровых сущностей, игровую логику.
4. Необходимо собрать тестовый уровень.
5. Не забываем про моделлинг и геймдизайн: нужно продолжить изучение Блендера и Unity (там я начал делать проект про приведение в замке с одним очень известным персонажем).
Поехали!


Запись сделана с помощью m.livejournal.com.

Tags:

Создание компьютерной игры. Часть 18.
gringosol
Сентябрьский конкурс игр на http://gamedev.ru близится к завершению, и моя конкурсная игра должна быть закончена в ближайшие 2 дня. Буквально сегодня сделал базовый GUI и оформил победу и поражение в игре. За оставшееся время рассчитываю сделать союзных мобов и настроить игровой баланс.
 С 9 по 19 сентября я приостановлю разработку движка, так как буду находиться в отпуске. Но, возможно, буду продолжать вести журнал даже в отпуске, если будут появляться какие-то идеи насчет геймплея, сюжета, движка и т.д.
 До новых встреч!

Создание компьютерной игры. Часть 17.
gringosol
Небольшой видеоапдейт. В конкурсную игру добавлены противники.

Создание компьютерной игры. Часть 16.
gringosol
Настолько увлекся конкурсом игр, что забыл отписаться. Вот первое геймплейное видео конкурсной игры (цель игры - предотвратить высыхание реки, затеняя ее с помощью окружающих предметов):