![]() |
Ответ: [TrueHorror] - разработка
просто рекаст может быть оверкиллом для указанной ситуации.
|
Ответ: [TrueHorror] - разработка
В общем после курения википедии понял что мне отлично подходит алгоритм Дейкстры, поиск пути в графе. Веса ребер, получается, это расстояния между вершинами( то бишь - расстояние между вейпоинтами в игре ). Вершины графа придется ставить и связывать вручную для всех путей. Веса ребер будут считаться автоматически. Кто имел дело с этим алгоритмом? Есть у него "подводные камни"?
|
Ответ: [TrueHorror] - разработка
A* это алгоритм Дейкстры с эвристикой http://ru.wikipedia.org/wiki/%D0%90%...D0%BA%D0%B0_A*
Я бы не стал связывать вручную вершины, а сделал бы из каждой вершины рейкаст в сторону ближайших вершин. Если нет препятствий, то соединял бы. |
Ответ: [TrueHorror] - разработка
Mine.exe : "Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "OK"".
Что делать? |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
В общем сделал поиск пути по Дейкстре - мне он показался проще для понимания.
Если кому нужен код - он ЗДЕСЬ Написан на C++11, если кто будет компилировать\запускать, то результат смотреть через отладчик - ибо мне было лень делать вывод в консольку. В скором времени запилю его в игру. |
Ответ: [TrueHorror] - разработка
AStar очень простой, и работает быстрее Дейкстры, т.к. имеет направление поиска (функцию эвристики). http://www.policyalmanac.org/games/a...torial_rus.htm
Цитата:
|
Ответ: [TrueHorror] - разработка
Код в студию. Именно код, где на вход дается граф, начало и конец а на выходе массив точек, представляющий путь из начала в конец.
Мне не нужна скорость( да и я чет сомневаюсь в особом приросте производительности, учитывая что процессоры сейчас намного мощнее ), у меня всего один враг. И еще граф у меня разреженный, не двумерный массив. Кароч не вижу смысла переходить на A*, когда я уже прикрутил код, данный выше, к игре. |
Ответ: [TrueHorror] - разработка
Вложений: 1
A* это тот же Дейкстра, но быстрее (меньше проверяет)
Дейкстра: ![]() А* ![]() Прикладываю сорс либы, которую я юзал в своём эксперименте по поиску путей, на который потом забил. То что нужно вроде в CalculateGlobalPath |
Ответ: [TrueHorror] - разработка
Вложений: 1
Цитата:
|
Ответ: [TrueHorror] - разработка
В следующем билде будет лежать установщик OpenAL'a.
|
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Сделал стелс режим. На втором уровне теперь ходит главный злодей. Собственно протестируйте стелс режим и про баги расскажите.
Стелс-режим - [C] Соответственно добавлен индикатор видимости, типа как в скайриме\обле. Первая встреча с главным злодеем поможет вам построить кирпичный дом. Есть один баг пока-что, злодей не сохраняется - то есть если загрузиться он будет в том же положении что и перед загрузкой. Это я поправлю когда сделаю ему нормальные мозги. СКАЧАТЬ |
Ответ: [TrueHorror] - разработка
Попробовал. Сразу - не подружился с камнем во втором уровне (на первом перекрёстке). Он выкинул меня за пределы уровня. Быть может, я его обидел, тем что хотел сдвинуть... А если на этом же перекрёстке пойти налево и перелезть через тележку так же улетишь с карты. И ещё, игрок съезжает с наклонных поверхностей (коэфициент трения низкий наверно).
|
Ответ: [TrueHorror] - разработка
Вложений: 1
Небольшой пачт, устраняет баги в поведении.
|
Ответ: [TrueHorror] - разработка
Поиграл первый раз. Появился в лесу, пошел в ту сторону, в которую изначально смотрел. Уперся в воздух. Увидел вверху красный текст. Попробовал посмотреть по сторонам. Пошел в другую сторону, шел долго, потом понял что можно бегать. При беге сильно неестественно камера меняет перспективу имхо. Забежал в шахту, сзади что-то обвалилось, загрузился наверное второй уровень. Иду вперед, на столе что-то слишком белое для темного туннеля, записку не прочитал, что-то взял со стола и пошел дальше. Меня убивает какой-то черт. Красный экран, сверху надпись говорит что надо найти друзей. Но я мертвый, не могу их искать дальше и камера постоянно крутится. Не понял как начать сначала, можно только продолжить смотреть на свою смерть...
|
Ответ: [TrueHorror] - разработка
Загрузка\сохранение тебе в помощь. F5\F9 по умолчанию.
|
Ответ: [TrueHorror] - разработка
В меню не нашел...
|
Ответ: [TrueHorror] - разработка
Ок. Сделаю отдельные пункты в меню. И сохранение в разные слоты. Со второго уровня игру придется проходить аккуратно, иначе будут постоянно убивать.
|
Ответ: [TrueHorror] - разработка
Если кто помнит, у меня с новым булетом были проблемы - персонаж постоянно "дрожал", была в общем ебала с физикой. Так вот виновата была автоматическая оптимизация с SSE. Новый булет компилится с ключами /arch:SSE2 или /arch:SSE. Стоило выключить SSE, все стало чудесно - никакой тряски и прочей дури. В то же время в новом булете есть ручная оптимизиция с SSE, так что скорость работы осталась прежней. Если чо, компилятор от 2012 студии с Update 1. Видимо это platform-specific bug какой-то. Гугление ни к чему не привело. Подсказал про это Samodelkin, за что ему спасибо.
|
Ответ: [TrueHorror] - разработка
Проводов и шашек не хватает , половина обьектов под землей либо в воздухе, врага видел 1 раз...
https://www.dropbox.com/s/a3pivnsiri...49.12.png?dl=0 |
Ответ: [TrueHorror] - разработка
Цитата:
Цитата:
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
- Удачно? да, спокойно прошел около него и пошел дальше. А проводов вообще нет ! 1 на столе лежал , я всю комнату облазил но их нет , я все же склоняюсь к варианту их падения в еб*ня. |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Я думал все как раньше , в кучках =)
Поднялся по лестнице а дальше шел вперед , провалился под землю , полет нормальный. https://www.dropbox.com/s/4mmjbvybkq...19.02.png?dl=0 |
Ответ: [TrueHorror] - разработка
Проваливания - это очередные приколы булета. Попробую в этом месте что-нибудь сделать.
|
Ответ: [TrueHorror] - разработка
Под линуха есть сборки? Нет возможности под окнами пощупать
|
Ответ: [TrueHorror] - разработка
движок жи на директе, только на виртуалке если попробовать, хотя нет - игра требует ps 3.0 .
кроссплатформу можно будет сделать когда будет готова игра |
Ответ: [TrueHorror] - разработка
Вложений: 2
Наконец-то сделал нормальную отрисовку текста. Для заполнения атласа буквами используется последняя версия FreeType. Атлас заполняется только английскими и русскими буквами + знаки пунктуации. После чего все рисуется квадами. В общем результатом я доволен, ибо текст выглядит отлично. Кому интересно как это все работает, то в подписи есть ссылка на гитхаб, там файлы BitmapFont.cpp и TextRenderer.cpp
Пока что не сделал батчинг текста в один вершинный буфер, вскоре это исправлю. |
Ответ: [TrueHorror] - разработка
У меня какие-то наркоманские мысли появились по поводу ускорения отрисовки.
1) Суем вершинные\индексные буферы N объектов в один большой вершинный\индексный подходящего размера 2) Пилим вершинный шейдер в котором определяем массив юниформ матриц количеством N 3) Для каждой вершины k-го объекта запиливаем дополнительный параметр указывающий на номер матрицы трансформации для этого объекта( те матрицы что в шейдере ), можно засунуть в D3DCOLOR - то бишь цвет. 4) В шейдере - берем этот "цвет" - выковыриваем из него номер матрицы, которой эту вершину нужно трансформировать, и затем трансформируем. 5) Имеем N объектов отрисованных за один DIP. 6) ... 7) PROFIT!!! Хз, скорее всего это уже придумано или вообще не реализуемо, просто поделился своими мыслями. Кароч я упоролся или такое возможно? |
Ответ: [TrueHorror] - разработка
Цитата:
ежели объекты статические, то и вовсе матрицы не нужны, а просто взял склеил всё в огромные куски. |
Ответ: [TrueHorror] - разработка
Даст прирост производительности? Стоит ли запиливать такое в движок?
А как тогда решать вопрос с текстурами? Я обрисовал случай, когда все объекты имеют разные текстуры. Кароч видимо не прокатит такая метода, или прокатит только с группировкой объектов по текстурам. |
Ответ: [TrueHorror] - разработка
Вложений: 1
Цитата:
Цитата:
|
Ответ: [TrueHorror] - разработка
Можно обойтись и без атласов, просто перед рендером сгруппировать сюрфейсы по текстурам, хз как у тебя сделано, а у меня при загрузке модели она автоматически разбивается на сюрфейсы, где каждому сюрфейсу соответствует одна текстура. Конечно таким образом за один дип отрисовать не получится, но дипов будет ровно столько сколько текстур( у меня нет системы материалов, поэтому мне проще ). Даже простая сортировка сюрфейсов по текстурам перед отрисовкой дает неплохой прирост производительности за счет снижения смен текстур. В общем я попробую сделать и скажу че из это вышло.
|
Ответ: [TrueHorror] - разработка
Цитата:
но в прототипе своём я медию делал на скорую руку и тексил кучей разных маленьких текс, так что пришлось склеивать так :D объединение по текстурам в юнити имеется в лице статик батчинга местного, но его не хватало в данном случае. |
Ответ: [TrueHorror] - разработка
Как правильно организовать перемещение персонажа? Сейчас у меня метод "в лоб". Создаем капсулу вокруг игрока и задаем ей линейную скорость в нужно направлении, отсюда всякие косяки в виде плохого перемещения по лестницам и наклонным поверхностям( даже когда трение выставлено в ноль ). Поэтому появилась идейка сделать перемещение на рейкастинге. Замысел такой: бросаем луч вниз под игроком, находим точку пересечения и перемещаем в нее игрока, затем кидаем еще луч перед игроком на небольшом расстоянии от него тоже вниз но с начальной точкой чуть выше точки пересечения первого луча( то бишь - высота шага ), если есть пересечение то можно сделать шаг -> делаем интерполяцию между двумя полученными точками. В принципе, такой подход работает и довольно неплохо. Но как делают труЪ пацаны?
|
Ответ: [TrueHorror] - разработка
Цитата:
по-твоему получается что можно идти сквозь стол, т.к. лучи все проверяться под столом будут. |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
L.D.M.T. Выкладывал исходники для Blitz3D и среди прочих, лежал ничем не примечательный - fpstest. Вот в нём, идеальное управление, мне так кажется. Думаю, тебе не составит труда адаптировать его под C++
Вот кусок. Цитата:
А вообще, игра нормально идёт. Умудрился провалиться со второго этажа сквозь пол, а так всё норм. Cтелс как в Skyrim, темно как Alone in the Dark, страшно как в кино, только графику подправить бы. Ты игры делаешь и ракеты запускаешь, мне бы твои таланты... |
Ответ: [TrueHorror] - разработка
Исправил много багов и поправил прозводительность. В общем в каждой части рендера было много CreateStateBlock() и таким образом я доверял стейты директу, как выянилось после профайлинга на этих стейтблоках падает до 15 процентов производительности, выпилив их в взял контроль над стейтами в свои руки я повысили производительность на 20 процентов( убрав лишние изменения стейтов - у меня Pure-device ). Сделал выбор с вертикальной синхронизацией или без. Максимальный фпс на моей машине - 90 к\с в шахте( тени от спотов и FXAA ).
Так вот тут сразу вопрос. Обычно я считал дельта-тайминг и просто домножал все значения на него чтобы игра шла нормально при любом фпс. Когда фпс от 30 до 60 кадров то все нормас работает, когда выходит из этих границ начинается ебала. В общем игра начинает работать не стабильно и физика тупить начинает. Как труЪ пацаны делают дельта тайминг? Читал это , но мне тамошние подходы не помогают. |
Ответ: [TrueHorror] - разработка
Я бы так сделал (в Unity ограничение по времени работы физики на кадр задается):
PHP код:
|
Ответ: [TrueHorror] - разработка
Я тут подумал, скорее всего Render() в самый конец надо бы поставить, после цикла физики... и в Unity 50 раз по умолчанию в секунду физика работает, т.е. шаг физики 0,02 с (1/50)
|
Ответ: [TrueHorror] - разработка
Попробую так сделать.
Вопрос теперь по графическому конвейру. Вызов SetRenderState( D3DRS_COLORWRITEENABLE, 0 ) выключает запись цвета в буфер кадра, исключает ли он при этом работу пиксельного шейдера? Иными словами, при выключенной записи в буфер кадра будет ли работать пиксельный шейдер? |
Ответ: [TrueHorror] - разработка
Цитата:
советуют ставить NULL на PS: http://www.gamedev.net/topic/641257-...pass-worth-it/ не факт, потому что, к примеру, ты можешь делать clip/discard в шейдере, что повлияет на глубину тоже. мне думается, что умный драйвер может не выполнять шейдеры, если дискарда точно нет, и запись выключена, но я не проверял. |
Ответ: [TrueHorror] - разработка
Я просто оптимизациями занимаюсь, и пока довольно успешно( ибо уже выжал 30% ). Так вот деферед у меня организован хорошо, но есть один момент.
Код:
для каждого источника света Код:
bool boundingVolumeRender; |
Ответ: [TrueHorror] - разработка
2pax, плохо работает, физику все равно начинает шатать, что аж улетаю в небеса. буду сидеть разбираться, может найду выход из этой тупой ситуации.
нашел это - http://bulletphysics.org/mediawiki-1...ical_Game_Loop попробую реализовать |
Ответ: [TrueHorror] - разработка
Наконец-то все работает так как должно. Нужно было сразу загуглить bullet physics low fps. :-D
В общем одной проблемой меньше |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Все равно спасибо за то, что помогаешь.
|
Ответ: [TrueHorror] - разработка
|
Ответ: [TrueHorror] - разработка
Физика и рендер в одном потоке, не хочется проблем с многопоточностью.
Да и к тому же уже все работает как надо. |
Ответ: [TrueHorror] - разработка
Попробовал на своем планшете (Intel z3735F 1.8Ghz) 13 фпс , не играбельно. Может дистанцию прорисовки ограничивать ?
|
Ответ: [TrueHorror] - разработка
̶т̶ы̶ ̶б̶ы̶ ̶е̶щ̶е̶ ̶н̶а̶ ̶т̶а̶п̶к̶е̶ ̶п̶о̶п̶р̶о̶б̶о̶в̶а̶л̶ ̶с̶ы̶г̶р̶а̶т̶ь̶
у мобильных устройств говеная память, слишком медленная, поэтому деферед не дает на них особых преимуществ. ну и к тому же я сейчас работаю над производительностью кстати при новом главном цикле, играбельно даже при 10 фпс - атвичаю. |
Ответ: [TrueHorror] - разработка
Я очень надеюсь!
А устройство не такое и слабое , хл2,портал2 тянет почти без лагов. |
Ответ: [TrueHorror] - разработка
Новая версия. Переделал главный цикл, что обеспечило возможность играть без проблем при низких фпс. Добавил возможность включать\выключать Vsync( в файле mine.cfg ) - изначально vsync выключен. Улучшил мозги боту. Добавил ему фонарь на бошку чтоб мог палить игрока, когда тот прячется в тени. Немного продлил третий уровень. В основном же потратил кучу времени на переписывание ГУИ.
Что я хочу: чтоб написали средний фпс, и описали играбельность при низких фпс - для этого я оставил в меню включение теней от поинлайтов - теней не будет - а вот шадоумапа строится - поэтому в шахте будет в районе 25000 дипов - что даст нехилую нагрузку на гпу и снизит фпс до неприличных значений. Тени от поинтов я не буду вообще вставлять в проект, они очень жручие а оптимизировать мне их впадлу. Также добавил DXT текстуры, что позволило сжать все текстуры до 65 мб. И еще: теперь можно выглядывать из-за угла - по умолчанию клавиши [Q] [E], 'Использовать' переставил на [R] Из багов что есть: хдр не работает. СКАЧАТЬ |
Ответ: [TrueHorror] - разработка
Цитата:
на ПК 4к - критическое число. |
Ответ: [TrueHorror] - разработка
я знаю, читай внимательней:
Цитата:
|
Ответ: [TrueHorror] - разработка
15-20фпс на улице
2-15 в шахте Предметы под землей (фонари) Дядя заметил меня идущего в присядке через стену и начал орать... Бег на низких фпс превращается в судороги. intel z3735f |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
25 штук, по шесть фейсов кубмапы получается: 25*6* ~120 = ~19000
на третьем уровне вообще 50 источников света я тени от них не буду юзать, так что все равно сколько там дипов |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Цитата:
Не подскажете как это он на планшете игру запускал? Это *.exe игра? |
Ответ: [TrueHorror] - разработка
Цитата:
|
Ответ: [TrueHorror] - разработка
Запустил на ноуте. Очень круто, играл ночью, сейчас, обосрался. Завалил первый же моб. Супер круто, понравилось. На ноуте неудобно играть - забил. ФПС 15, ноут слабенький.
|
Часовой пояс GMT +4, время: 02:59. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot