воскресенье, 9 августа 2009 г.
суббота, 8 августа 2009 г.
Demo04
Наброски звука для демки: Евгений Ярмош (TCVMusic@gmail.сom)
Саундтрек: PitchShifter – «Genius”
Ссылка: http://www.anegmetex.com/RoboDev/RobogeddonDemo04.rar (18 Мб)
Для запуска требуются установленные дрова физикса не менее 2.7.2 версии.
Убедится в его наличии можно проверив существование папки C:\Program Files\AGEIA Technologies\v2.7.2
Управление:
WASD - перемещение
Mышь – наведение и стрельба
ENTER – добавить ещё врага
Основные настройки которые можно поменять в Settings.xml:
ScreenX и ScreenY – разрешение экрана FullScreen – использовать ли полный экран
GetUserRes – получить разрешение экрана. ScreenX и ScreenY игнорируются.
RobotsOnArena – сколько одновременно роботов находится на уровне.
PlayerLife – сколько жизней у игрока. Влияет на сложность игры.
MusicVol – громкость музыки. Если 0 – отключить совсем музыку.
Ожидаемая обратная связь:
- запускаемость
- вашу конфигурацию и фпс (+ желательно разрешение экрана и кол-во заспавненых роботов).
- баги\глюки
опционально:
- Критика
- Слова поддержки
- Плевки
- Тухлые помидоры
- Караваны
скрины:

вторник, 4 августа 2009 г.
Доработанная модель босса
понедельник, 27 июля 2009 г.
Боевая система, скрипты, бонусы
За последнее время я прикрутил к игре скрипт-движок на lua, доработал боевую систему: теперь роботы стреляют реально разными оружиями с разными параметрами и эффектами, а не как было до этого… :)

Ещё прикрутил к игре такие не маловажные для геймплея штуки как бонусы. Кстати характер действия бонуса по модному задаётся через скрипт, а не железно зашито в код )
Насчёт внешнего вида бонусов: я сначала хотел их сделать объектами… но потом подумал что они будут теряться в куче ошмётков от роботов и плохо читаться среди прочего хлама, поэтому сделал эдакие олд-скулл стайл бонусы :) Если сильно народ их ругать не будет, то думаю такие и оставлю.

воскресенье, 12 июля 2009 г.
Боевая система: первое подобие геймплея
Сейчас геймплей вырисовывается уж очень какой-то зверски-хардкорный чтоли 8) Надо будет ещё работать над балансом параметров оружия, поведением роботов и тому подобное… а вообще всё выглядит довольно не плохо, думаю в конечном счёте неплохая игруля должна получиться :)
среда, 8 июля 2009 г.
Модель одного из боссов
А вот нижняя часть получилась как то мелковато по сравнению с верхней массивной башней. Возможно стоит нижнюю базу заменить на другую...

воскресенье, 5 июля 2009 г.
Поиск пути
Вообще ячейки карты получились весьма крупные, т.к. на более мелких – роботы проскакивали точки пути и постоянно задевали за углы. Собственно они и сейчас не брезгают это делать, но уже гораздо реже. Думаю мне ещё предстоит долго танцевать с бубном, чтобы как-то отучить их от этого.
Ещё одна очень не приятная проблема, которая уже давно нарисовалась в проекте – это роботы сталкивающиеся с другими роботами при движении. Собственно можно конечно попробовать приделать какое-то динамическое обруливание по AABB (я уже что-то подобное пытался реализовать в игре Technozes), но мне кажется всё это кардинально не решит проблему :(

пятница, 26 июня 2009 г.
Скринцы нового дизайна свалки
понедельник, 22 июня 2009 г.
Лимитеры
Кстати если у лимитера стоит только этот флаг – то он грузится только в редакторе, а в самой игре просто не добавляется (что вполне логично, т.к. карта препятствий обсчитывается заранее в редакторе, а в самой игре лимитер только с этим флагом не будет никак воздействовать на геймплей).
Да я решил идти проверенным путём и использовать старый добрый алгоритм А* а не пути или навмеш. Ибо для двух последних очень не очевидно как быстро рассчитывать в каком поинте\треугольнике находится бот, при его смещении например взрывом или при таране другим ботом.
Собсна в редакторе они выглядят пока вот так (цветом показываются разные установленные флаги):
суббота, 6 июня 2009 г.
Работа ссылок и картинок востановлена
суббота, 23 мая 2009 г.
Набросок кусочка уровня "Junkyard"
1) Робот часто задевает углы и спотыкается о неровности пола. С этим придётся чтото делать, т.к. раздражает ужасно.
2) Необходимо ввести в движок дополнительную физ геометрию, которая будет реагировать только на игрока и врагов. Ей нужно будет обтягивать все участки с которых игрок может упасть в пропасть, а также участки куда по идее игрок заезжать не должен.
3) поиск пути для роботов скорее всего надо будeт делать с помощью Paths а не AStar. Это позволит ввести более интеллектуальных врагов по средством добавление дополнительной информации о уровне в Path Points.
Видео с геймплея движка:
Видео с редактора уровней:
К сожалению показать физ геометрию уровня получилось плохо (из-за низкого разрешения видео), поэтому покажу отдельным скриншотом:
четверг, 21 мая 2009 г.
Сериализация мира
Наконец то я отладил сериализацию (покрайней мере основных объектов). Последняя ошибка, которую я искал дня два была крайне банальной. Я перерыл по пятьсот раз все коды загрузчиков и отгрузчиков, но так и не мог понять почему периодически в случайном месте файла байты при загрузки съезжают. Не мог понять пока не додумался проверить способ открытия файла.. фак, я бинарный файл открывал как текстовый (!!!). И самое прикольное - периодически уровень грузился нормально ))))
Вообщем поставил я бинарный доступ - и сразу всё заработало как надо.
Такие дела, господа. Не делайте глупых ошибок :)
среда, 13 мая 2009 г.
Модели: тайлы уровней
Ещё конечно придётся сделать в редакторе функции выравнивания объектов, подгонки друг к другу и убирания зазоров между ними, иначе зашьёшься выравнивать всё в ручную…
Начал работать над тайлами первых уровней – «катакомбы» и «район старой свалки».


четверг, 23 апреля 2009 г.
Подводные камни физикса
Вот в исходном состоянии (оранжевыми линиями показано положение физической оболочки):

А вот после большого количества поворотов:

Что примечательно – при единичных поворотах – всё нормально. При простом перемещении такого глюка вообще замечено не было. Сначала я думал что это из-за накоплении ошибки в матрице - ортонормировал её, но проблема не исчезала… тем более было странно что на динамических объектах такого глюка не возникало! Начал курить доки и вот что я заметил:

Вы видите маленькое неприметное слово «dynamic»? Вот и я его заметил только после шестой зачитки документации. Начал гуглить проблему – оказывается у многих такие глюки замечены – на официальном сайте нвидии заметил 3 подобные темы. К слову которые остались без ответа. Вообщем после на официальном сайте нашёл мелким шрифтом надпись в FAQ что статические объекты НЕЛЬЗЯ двигать после их создания, т.к. они там очень хитро оптимизируются и при их передвижении придётся много чего перерасчитывать.
Решение проблемы было простое – при создании NxActor в редакторе все статические объекты создаются как динамические с флагом NX_BF_KINEMATIC. После этого глюки волшебном образом исчезли! Объекты можно вертеть сколько хочешь и они не рассинхронизируются со своими физическими оболочками :)

А теперь несколько риторических вопросов:
- Почему в документации нет никаких Warling! крупным красным шрифтом насчёт всего этого?
- Почему вообще библиотека физикса позволяет мне двигать и вращать статические объекты если это приводит к глюкам? Сэкономили на одной проверке if-ом?
- Почему мне не дают возможности «перерасчитывать чегото там» или отключать всю эту оптимизацию статических объектов по моему желанию? Ведь передвижение статических объектов в редакторе уровня – думаю обычная и часто встречающаяся задача.
воскресенье, 19 апреля 2009 г.
Редактор уровней
В былые то годы, мои тулузы для клепания уровней отличались замысловатым функционалом, причудливыми Ынженерными решениями типа 3d курсора и убийственным количеством горячих клавиш. Но даже в них я умудрялся как то клепать вполне сносные уровни ))
Делать стандартные элементы 3д редактора к удивлению оказалось весьма интересным занятием. Например манипулятор со стрелочками. Я с таким упоением изучал в 3д максе особенности проекции экранного вектора скорости мыши на оси объекта, воздействие на объект в момент захвата… и сразу же переносил полученные знания прямиком в код своей программы :)
Что же касается интерфейса редактора – то тут я сохраняю трогательную верность традициям. Схема интерфейса «Вьюпорт-главнаяПанель-инфоПанели» выработанная на редакторе от Scary Nightmare показала себя в боевых условиях весьма не плохо, поэтому я решил её кардинально не менять.
Выкладываю ниже скрины трёх редакторов, расположенные в хронологическом порядке, эволюция так сказать… сложно сейчас поверить, но редактор для Technozes целиком обходился только горячими клавишами :)
Technozes (2007):

Scary Nightmare (2008):

Robogeddon (2009):
четверг, 2 апреля 2009 г.
Патч для Демки03. Добавление звука
Патч для добавления звуков: http://www.anegmetex.com/RoboDev/Demo03_SoundPatch.rar (1.8 Мб)
Ставить поверх демки с заменой файлов.
Отпишите пожалуйста работает ли у вас нормально звук.
Если самой демки03 у вас нет, то вот ссылка: http://www.anegmetex.com/RoboDev/Demo03.rar (14.8 Мб)
Превьюшка на youtube:
среда, 1 апреля 2009 г.
Звуковой модуль. Девять кругов ада.
Ну для начала после приделывания звуковых эффектов приложения начало самопроизвольно падать во внутренней audiere.dll. Разматывая стек в дебаг-режиме я обнаружил что эти падения связаны с тем, что звуковой буфер самостоятельно может приравняться к NULL. От чего это происходит – понять так и не удалось, проблему же решил просто – при обнаружении NULL звуковой буфер перебиндивается к нужному sound source, тем самым восстанавливая указатель.
Далее я случайно заметил что память у меня подтекает. И сурово так – 1-2 метра на 10 свежедобавленных роботов. Начал гуглить проблему – конечно весь интернет был усеян об течках памяти в аудиере. Решения проблемы не было. И вот когда я уже начал подумывать об смене саунд-движка – я наткнулся на одинокий пост на каком то буржуйском форуме, где какойто умелец пересобрал dll аудиера и вроде как пофиксел проблему с утечками. Я конечно её сразу скачал и начал тестировать – и, о чудо! Эти кошмарные утечки действительно прекратились :)
Но это было только начало мучений. Потом я начал прикручивать Sounds Streams – это новая сущность моего движка, позволяющие эмулировать 3d звук с помощью изменения Volume, Pan и Pitch (сам audiere 3д звук не умеет). Особенность их в том что они ПОСТОЯННО должны менять pitch. И вот тут началась жесть :)
При большом количестве роботов находящихся рядом и синхронно проигрывающие один и тот же саунд мотора – звук в колонках начал трещать. И заметно так, с надрывом. Вот что я тут не делал: и затухатие дальних источников, и интеллектуальное отсечение не важных звуков, и настройки самого звука, всё было бестолку. Решение оказалось простым – я забыл что отключил аппаратное ускорение звука в системе. Всего навсего )
Поставил ускорение на максимум – никаких щелчков и хрипения колонок :)
Но всю эту хитромудрую систему я оставил, всё таки существенно снижает нагрузку на проц.
Вообщем что в итоге за эти две недели:
1) Прикрутил поддержку как управляемых звуков (Sound Streams) так и нет (Sound Effects). Различие между ними в том, что стримы можно контролировать на всём протяжении их работы, а на эффекты после их запуска уже повлиять никак нельзя. Вот такой оптимизейшн.
2) Сделал самопальную поддержку 3D звука.
3) Сделал наконец то Collision Report физики с поддержкой проталкивания информации по всех иерархии объектов от agePhysicsObject до высокоуровневых ageDynObject и ageActor. Это всё надо для того что когда например бочка падает – проигрывался звук падения бочки )
4) Сделал архиудобную систему загрузки и проигрывания звуков - Sound Mapper. (правда надо её будет помониторить в VTunes на предмет оверхеда производительности… но на глаз с фпс пока всё вроде в полном порядке, никаких проседаний не замечено)
Вообще надо сказать API у Audiere весьма приятный. Если бы он не был таким удобным я бы уже на середине своих страданий забил бы на него :)
Видео же со звуком пока НЕ будет. На днях выпущу звуковой патч для демки03, тогда и видео выложу.
Offtopic
В последнее время стал замечать, что во время отладки игры, я пока не завалю 3-4 волны роботов не отключаю игру, хотя это и не требовалось для отладки фичи… странно, к чему бы это…
воскресенье, 22 марта 2009 г.
Demo03. Разрушение роботов.
АИ правда пока нет. Займусь им в скором времени. А пока – только жестокое убийство невинных роботов )
Ссылка: http://www.anegmetex.com/RoboDev/Demo03.rar (14.8 Мб)
Для запуска требуются установленные дрова физикса не менее 2.7.2 версии.
Убедится в его наличии можно проверив существование папки C:\Program Files\AGEIA Technologies\v2.7.2
Управление:
WASD - перемещение
Mышь – наведение и стрельба
ENTER – добавить ещё 5 врагов
Ожидаемая обратная связь:
- запускаемость
- вашу конфигурацию и фпс (+ желательно разрешение экрана и кол-во заспавненых роботов).
- баги\глюки
опционально:
- Критика
- Слова поддержки
- Плевки
- Тухлые помидоры
- Караваны
скрин:

youtube:
вторник, 17 марта 2009 г.
Православный редактор объектов, созданный всего за 3 часа
Вот взять например редактор объектов. Нужен ли он? В проекте сложней крестиков-ноликов – обязательно. В слепую править сотни параметров, потом грузить игру и смотреть что получилось – это не достойно настоящих джедаев. Однако при ближайшем рассмотрении его создание должно было бы затянутся на месяцы: ведь в нём будет куча диалогов, в них дофига контролов, связанных с параметрами объектов. И это всё богатство придётся держать в актуальном состоянии на всём протяжении разработки! Ведь создаётся он не под готовый движок, и новые параметры у объектов будут появляться с завидной регулярностью.
Ясно дело что такой путь не для меня, разработчика-одиночки. А теперь давайте подумаем: а что собственно требуется от движка игры? Правильно, только отображать изменения в реальном времени. А теперь внимание вопрос: “Накой фиг нам создавать тучи диалогов с параметрами если все данные в игре лежат в православном формате XML и править его очень удобно с помощью программы XMLNotepad??”. Вот тут то ко мне пришла конгениальная мысль – пусть мы будем править все данные в удобном редакторе
XMLNotepad, а наша программка пусть отслеживает все изменения ресурсов для редактируемого объекта и если время изменения файла поменялась – перегрузить изменённые ресурсы. Достаточно просто сохранить файл (нажать CTRL+S), и результат изменений сразу отобразится во вьюпорте!
Причём метод позволяет добиться такой функциональности, которой не располагают даже многие коммерческие движки:
- можно в реальном времни текстурить объекты в фотошопе и сразу видеть финальный результат в движке!
- можно менять сетку (например корректировать нормали) объекта и видеть сразу результат!
Вообщем этот метод даёт огромный функционал инди-разработчику, требуя затратить минимум времени для его реализации.
Вот полноразмерное видео такого редактора (20mb в разрешении 1680x1050):
http://depositfiles.com/files/6qz6z31gf
Превьюшка на youtube:
воскресенье, 15 марта 2009 г.
Новые модели
Что-то давно не выкладывал я моделей в блог. Многие наверно думают что я только и делаю что движок пишу, однако ж в перерывах я ещё стараюсь не забывать и об арте. Приходится то обо всех аспектах игры заботится. Иначе что толку от движка если его нечем будет набить? :)
Вот некоторые из новых моделек:
Некий усилитель… странные сарайчики с трубами и электричеством

среда, 11 марта 2009 г.
Геймплей: боевая система
Насчёт геймплейной стороны битв пока ещё не очень ясно, но я провожу тесты, смотрю как лучше сделать. Очень часто то что хорошо выглядит на бумаге в реале вообще получается шлаком… и наоборот. Вообщем работа идёт ;-)
Вот заснял расправу над роботами:
воскресенье, 1 марта 2009 г.
Патч для Демки02
суббота, 28 февраля 2009 г.
Демка 02. Наведение, огонь и движение роботов по вейпоинтам

вторник, 17 февраля 2009 г.
Название проекта
Итак отныне этот проект будет носить гордое имя:
Физика: разрушение роботов
вторник, 10 февраля 2009 г.
ИИ: Езда по сложной местности
Собсна как я и ожидал появились проблемы - робот стал переворачиваться и тупить на горках. Однако чуть подправив физическую модель удалось свести эти нежелательные последствия к минимуму.
Вот как он гоняет теперь по неровной (мягко сказано) поверхности. Надеюсь с этим траблов больше не будет:
суббота, 7 февраля 2009 г.
ИИ: Езда по контрольным точкам
Начал работать над перемещением ботов. Pеализовал два типа перемещения - танковый стиль езды, и колёсный стиль езды. Различаются они в основном способом разворота. Например танковый может на месте разворачиваться, а колёсный - нет. Ну и ещё парой-тройкой коэффициентов.
Вот многие говорят - чего сложного, настроишь как в жизни физику и всё. А вот фиг - или мордой начинает вилять, или опрокидывается или ещё чего... А ведь сейчас он ездит всего лишь по ровной гладкой плоскости ) К тому же для удобства потребовались определённые константные значения для параметров робота (как то максимальная скорость, максимальный крутящий момент), не зависящие от суммарной массы робота.
Поэтому приходится не физичные хаки вводить – гасить крутящие моменты, выравнивать направление скорости по направлению робота (помните как в первой демке робота всё время уводило вправо?), применять специальные разгоняющие импульсы и т.д. и т.п.
Зато теперь робот ездит прямо, не виляет, не переворачивается… и в тоже время выглядит весьма правдоподобно: его заносит на поворотах, если на полном ходу врезается в препятствие (бочка) – его закручивает, однако он выравнивает направление и продолжает ехать в нужную сторону. Вообщем для ботов сгодится :)
А вот для игрока не знаю… возможно для более комфортного управления, придётся написать другой код…
Танковый стиль езды:
Колёсный стиль езды:
пятница, 30 января 2009 г.
Рендер: система частиц
Работаю над системой частиц. Она и раньше вообщем была, но надо было внедрить её в новый рендер. Кроме того начал проектировать спец-шейдеры для неё. Сделал пробный огонь. Вроде выглядит весьма не плохо, особенно с блумом :)
В планах добавить партиклам возможность проигрывать анимационные текстуры (через волюм текстуру), текстуры с нормалом (для эффекта объёмного дыма) и, возможно, использование физичных партиклов от PhysX. Последнее правда под большим вопросом, ибо довольно сильно грузит систему. Наверно будет использоваться лишь в локальных местах в качестве Wow-фактора :)

суббота, 24 января 2009 г.
Рендер: отражения
Прикрутил я давеча к движку отражения. Конечно фейковые – кубамапа предрасчитана заранее и хранится с файлами уровня. Но так как материалы у меня далеко не зеркальные её фейковость не сильно заметна. А визуальная часть слегка улучшилась. Теперь надеюсь ни кто не будет говорить что всё из пластилина :)
Рефлекшн в движке можно настраивать очень гибко. Для него выделено аж две карты коэффициентов (одна для Color составляющей, а вторая для Spec составляющей отражения). На производительности шейдера это не сказалось, т.к. спек ведь у меня шёл отдельной текстурой, в его альфе канале хранился коэффициент мощности отражения. Соответственно оставалось ещё два не использованных канала, которые я под рефлекшн и заюзал. Настоящее раздолье для художников по текстурам ))
Вот примерно такая картина по каналам спек текстуры (power константная, ибо пока менять её не было смысла):

суббота, 17 января 2009 г.
Постэффекты: DOF & Bloom
В перерывах между опиливанием игровых объектов прикрутил пару постэффектов. А именно Depth-of-Field и Bloom. Хотя эстетическое восприятие первого эффекта весьма спорно (см скриншот). Ешё ну очччень хочется добавить и SSAO. Очень надеюсь что фреймрейт не умрёт. (а ведь ещё мягкие частицы запланированы…)
Также сделал наконец то отладочную визуализацию камеры. Сделал через функцию D3DXVec3Unproject, т.к. почему то умножение на обратную матрицу WorldViewProj давало неверный результат (почемуто не учитывался fov).
суббота, 10 января 2009 г.
Демка управления роботом
А вот собственно и демка :)
Потестите пожалуйста на запускаемость и удобство управления роботом. Также было бы не плохо вашу конфигурацию и фпс.
Разрешение экрана и другие настройки можно подправить в Settings.xml
Параметр CameraPosInterpolation – определяет сглаженность изменения позиции камеры. При включении почемуто появляются рывки… поэтому по дефолту пока отключено.
Демка (6.7 мб):
http://www.anegmetex.com/RoboDev/Demo01_RobotControl.rar
Для запуска требуются установленные дрова физикса не менее 2.7.2 версии.
Также желательно наличие третьих шейдеров.
Если таковых нет – скачайте патч (http://www.anegmetex.com/RoboDev/ShaderModel_2.0_patch.rar) и распакуйте в папку Data\Shaders\.
Управление в демке:
A-D – разворот робота
W-S – передний и задний ход робота
Мышка – управление прицелом
Левый Ctrl – установить камеру в позади робота
P – поднять вверх робота
Пробел – добавить бочку в уровень
F1 – вывод отладочной информации физ движка
















