Category Без рубрики

GUI. Продолжение.

Вот наконецто защитил диплом и имею больше свободного времени на движок.

Пофиксил несколько оставшихся мемориликов, пофиксил подчистку всего мусора после выгрузки движка (в видеопамяти некоторые объекты оставались : ) И решил пройтись сначала по движку и привести всё в подобающий вид. Начал с GUI. Множества контролов пока ещё не хватает но больше всего не радовало отсутствие нормальной поддержки скинов для GUI. Вот, посидело немножко, переписал дофига в GUI (по красивше) и сделал поддержку скинов. Правда нужен ещё редактор скинов так как вручную я риальне запарился считать пиксели : D

Вот тут окошко, чекбокс и кнопка. Всё отскинено. Окно под Win7 сделал xDD Только нету кнопок закрытия, сворачивания и т.п. Осталось допилить RadioButton и написать всяческие списки. А так всё шоколадно.

0
0

12 часов ада

2.5 дня писал PSSM. Из них последний мне ещё надолго запомнится…

Надоже! 12… ДВЕНАДЦАТЬ часов подряд ебался с багом в PSSM – неверно считалась глубина! Упорно решил добить сегодня и не отвлекаться ни на что. Какбэ дело принципа – “сделаю и точка”. Ну собсно и сделал.

[цитата моего сообщения в аське]
Действительно полезно отвлекаться от проблемы : ))

Пил чай в стеклянном станкане. чота поставил напротив другого станана. В голову пришла мысль об альфаблендинге…БИНГО! альфаблендинг был включен и глубины ТУПО СМЕШИВАЛИСЬ : D вырубил перед отрисовкой карты глубины альфу и вуаля, тени работают! ГЕНИАЛЬНО БЛЯ : D

Надо же. Такая глупая фишка и столько мозга вые*ано было! А сколько бутербродов съедено а сколько пепси выпито…ууууууу. Но тем не менее меня как всегда ждала заслуженная награда – чёткие классные тени ^^

Тут PCF 2×2. Можно будет 3×3 сделать попозже.

Скрин да, ни о чём : )))) Даже выключена фильтрация текстур внизу на террайне и объектов нету. И пох! Главное что естьо пруф существования PSSM ^^ : P

0
0

Восстанавливаю систему растений – часть 2: да придёт трава

Сделал BVH для куллинга растительности. Полёт нормальный : )

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

Вот несколько скринов. Они WIP. Тут к траве не применяются тени, не применяется цвет ландшафта.

Просто так выложил : )

Травко:

Или травку или меня или меня травкой проглючило и она начала летать:

Трам пам пам

Сверху трава не выглядит Унылым Говном : )

продолжение следует…

0
0

Восстанавливаю систему растений – часть I

Вот.. решил поднять растительность (долгое время всё было закомментено)

Первый скрин первого испытания. На скрине массив деревьев расставлен по ландшафту, отрисован хардварным инстансингом. А также игрок. Почему красный? ээм, на нём просто дефолтная текстура “NoTex.dds” ибо текстуру я ему не назначил (както влом). И в руках у него автомат – прицеплен к костям.

А, кстати,да, кости…

Engine updates:

[+] Добавил иерархию трансформаций объектов. Теперь можно объекты друг к другу цеплять (например зщаписку к двери)
[+] Добавил привязку объектов к костям скелета меша. Теперь вот челу на скрине дал в руки оружие : ) Всё работает шоколадно.
[?] Начал делать поддержку скриптов в треках анимации. Тоесть можно будет какому либо кадру анимации или событию назначать скрипт : )

0
0

В задницу этот ODE…

Сколько этта гадина (ODE) мне крови попила… жесть. Сколько бессонных ночей ушло на настройку ODE!! И всё впустую… ODE ну уже черезчур бажный! То предметы застревают друг в друге, то проваливаются, то система взрывается. Эти баги вылазят везде – где можно и не можнО! Большая часть разработки движка уходить ТОЛЬКО на настройку параметров ODE! Последней каплей было то, когда я сделал физику ландшафта! Оооо… это цирк натуральный! Люди, передвигаясь по ландшафту, вечно в нём застревали, после чего выпрыгивали очень высоко! : D Но было не очень смешно т.к. в моменты застревания в ландшафте двиг..ээ..да чё там двиг.. вся система ложилась нафиг! Секунд 10 были стабильные 3 ФПС а потом всё возвращалось в норму до следующего раза! Нее, нафиг такое счастье!!!!

Порывшись в инете, нашёл несколько физдвигов. PhysX не понравился изза “мутной” политики NVIDIA в отношении него. Есть ощущение, что его скоро сделают платным. Та и дрова таскать с собо не охота.

Посмотрел на Newton physics engine – помоему тоже самое что и ODE, однако сразу насторожило то, что гравитацию нельзя выставить! нужно применять её самому о_О. Бред какойто. Та и функционал вместе с качеством симуляции оставляют желать лучшего… фтопку!

И вот.. наконецто я нашёл Bullet! Вот он, ИМХО лучший бесплатный физдвиг! Порадовало наличие SoftBody физики : ) Движок на первый взгляд сделан качественно. Много “фишек”, легко добавляются свои типы физических объекто в и алгоритмы столкновений! Качественная симуляция, присутствуес CCD(!).

Решил юзать его. Однако появилась небольшая проблема – нету враппера для Bullet! O_O Долго я искал врапперы, пробовал разные – одно фуфло. И тут случайно я забрёл сюда: http://code.google.com/p/bulletsharp/ Здесь Andres Traks пишет свой враппер под названием “BulletSharp”! Враппер написан на C++CLI, тоесть ни каких лишних библиотек : ) Подключаем 1 библиотеку,будто она написана на C# и вперёд! : D Враппер ещё на альфа версии, однако большинство “жизненноважных” фич уже сделано : ) Активность у проекта очень высокая, апдейты выходят каждый день, автор адекватный и всегда быстро реагирует на просьбы и замечания по врапперу. Всё путём ; )

Теперь юзаю Bullet и ни капли не жалею о том, что больше не юзаю ODE.

Прогресс движка:

[+] Сделан базовый KinematicController игрока! Не стоит думать, что я только для игрока, которым играет человек, сделал физику : ) В моём движке ннапример человек-NPC также является игроком – построен на классе CPlayer.
[*] пофиксил баги с физикой, пофиксил текстурирование ландшафта, пофиксил контроллер камеры! Теперь камера работает мегоидеально! : ) Контроллер позволяет с лёгкостью переключаться между First-person и Third-person типами управления, позволяет настраивать максимальные углы поворота камеры, скорость, плавность, всяческие эффекты (трясение при взрыве например).
[+] Добавил реестр классов сущностей. Зачем нужны классы – расскажу вкратце: представим что у нас в игровм уровне находятся 2 бота! Это люди. Один человек является снайпером а второй обычным воякой с АК-47 например. Это один и тотже игровой класс CPlaye, однако модель поведения и некоторые специфичные параметры у них разные. ЧТо теперь? Делать для каждого вида игрока свой класс? Бред!: D Мой реестр классов инициализируется ил LUA скрипта. Тоесть чтобы создать новый класс сущности, мы должны создать его описание в LUA скрипте EntityRegistry.lua Он является базой данных классов сущностей. ри запуске движка база данных сущностей из скрипта грузится в реестр классов. После этого мы можем спокойно создавать инстансы любого класса одной лишь строкой!

ну к примеру ПСЕВДОКОД:

Entity player = Factory.BuildEntity(Registry.GetClass(“Player”));

Всё! Мы создали игрока одной строкой : ) При чём у него уже настроено поведение(AI) и некоторые параметры. Удобно в общем : D

*ушёл прогать дальше*

0
0

Пришествие ODE

Сегодняшний день был довольно продуктивен.

С утра понял, что статичная геометрия меня уже сильно подзае.. поднадоела. Так я решил переписать всю физическую систему движка. Жесть, вот это меня больше всего и парит – чем больше кода, сложнее движок, тем сложнее что-либо исправлять в нём. Поменял строку и получил 50-100 ошибок, а строк таких уйма. Вот и сижу, трачу пол дня только лишь на исправление ошибок : ) Результат, конечно, радует но, всёже, кому нужны такие пляски с бубном? А всё идёт от некачественного планирования работы и структуры программы. Вот только планировать как-то не особо получается : Не, не то, чтобы я такой тупой был, просто не имею представлоения о том, что же нужно делать то : D Это же мой первый движок. Вот так шаг за шагом, наступая постоянно на свои же грабли, набираюсь опыта, оттачиваю движок. Так сказать медленно но верно движусь к цели : )

Сегодня, как я уже говорил, переписал физическую систему. Всё построено с учётом максимального удобства испольования, возможности смены физического движка. На данный момент используется ODE (Open Dynamic Engine) в качестве физического движка. Ну он, конечно, не такой навороченный как PhysX но мне его возможностей пока что хватает да и враппера нормального для PhysX-а я не нашёл (одно старьё). Да и впринципе не важно.

Гы, наконец добавил физику ландшафту : ) теперь можно ходить по ландшафту и пинать кубики : D Всё пока что работает чётко.

Осталось сделать нормальное физическое описание для игрока. Ну, чтобы прыгал, бегал и т.д. : )

0
0

GUI re-re-re invent wheel

Сегодня какой-то мегосуровый день о_О Что по жизни что в движке – полный ахтунг.
Сделал генерацибю шрифта в движке. Ну как генерацию.. вообщем как весь процесс выглядит:

1. создаём экземпляр GUIFont – передаём в него имя файла шрифта, который отрендерить, размер шрифта (как в винде) и наборы Unicode диапазонов букв.
2. движок загружает *.ttf (True Type Font), по указанному пути, рендерит все буквы с указанными параметрами в текстуру шрифта, генерирует описание к шрифту

и собсно всё. Шрифт можно применить к любому элементу GUI.

Сделал элемент GUI: Label. В нём реализован рендеринг текста, выравнивание текста по краям, по центру при чём вертикально и горизонтально + базовое форматирование текста.
Вообще весь GUI переписал процентов на 70. Но теперь доволен им ибо всё рисуется быстро и правильно : )

вот несколькими простыми строками накидал простейшее окно:

0
0

Progress news

Ура, товарищи.

Вот и закончился очередной этап написания движка : )

Только что (буквально минут 10 назад) доделал редактор ландшафта. Он является частью редактора уровней и способен как редактировать сетку ландшафта – согдавать горы, впадины, выравнивать и сглаживать ландшафт , так и “раскрашивать” его текстурами.

В настоящее время поддерживается 5 текстурных слоёв на ландшафте и в ближайшем будущем увеличение их количества не предвидится ибо нафиг? И так хватает. В том же FarCry2 используются 4 текстуры на весь ландшафт!

Собсно, вот скрин. Просто кистями текстурными поводил по ландшафту и вот что получилось:

*кликните на изображение чтобы посмотреть в боОльшем разрешении”

0
0

WIP terrain editor

Ухх. Сделал редактор ландшафта(в редакторе уровней встроен).

Реализован функционал редактирования сетки ландшафта что уже айс, однако не хватает таки ещё раскрашивания ландшафта но это завтра буду делать.

Скринить то впринципе нечего но тем не менее выложу парочку


0
0