эх жалко, к 15 числу демку не успел, еще недели 2 надо...
Значит ли это что она совсем скоро дыйдет в свет :)
Надо полагать ;)
Отлично :D Ждем с великим нетерпением :)
Не надо прогнозов плз! Обычно после этого все очень откладывается :D
Надеюсь это станет приятным исключением
Не надо прогнозов плз! Обычно после этого все очень откладывается :D
это называется "сглазить" ))))
Не хотел в этой версии делать, но все же решился:
первый ragdoll на joint/ball, лимиты углов еще не задавал по этому свободно крутятся по всем осям суставы.
Помимо углов еще "трение" надо. И не только для рэг-долов, но и для других подвижных соединений.
Дааа... весёлая вещь - программирование! Символами сказать компьютеру сделать ТАКОЕ при том в пространстве!!!
Пока не виден результат, в реальности это вообще просто сказка, страшная такая сказка ))))
а че он как в матрице? как на него будет влиять притяжение?
Это уже похоже не демка будет, а альфа.
а че он как в матрице? как на него будет влиять притяжение?
Притяжение у модели отключено чтобы можно было проверять лимиты углов вращения.
Скорее, пре-альфа, потому что нам еще прийдется нагрузить и приспособить эту голую физику под модели и различные операции с ними.
От физики зависит наверное 90% игры.
Это все проверки объектов и их взаимодействие (как перестрелка, взять оружие, взять ящик, поговорить с соседним игроком, управлять машиной, кораблем и тд).
Самое сложное в разработке было разбиение пространства на сектора, необходимое как для физики, так и для сервера, игроков, кораблей и физических объектов. И создание базы данных для сохранения позиций объектов в этих секторах.
Перепробовал кучу методов таких как Octree / kD-tree / BVH / R-tree / R*tree / AxisSort / AVL-tree и массу других. Но не один из них не подходил, когда объектов за 10 млн, у каждого метода появлялись свои дефекты и выявлялись свои ограничения. А основная проблема была во всех нерешенной, как узнать номер сектора, как его найти, сколько всего секторов может быть.
В итоге мною был создан гибрид из методов AxisSort / AVL / BVH / kD-tree / octree. От каждого метода были взяты интересные особенности, и создан на их основе новый метод который позволил разбить наше неограниченное пространство, на сектора с размерами от [-1..1] метра до [-9223372036854775808 до +9223372036854775807] метров.
В итоге на поиски соседей у объектов тратится минимум 25 шагов максимум 180. что позволяет найти в любой части вселенной объекты в нужной точке за минимум операций.
При этом естественно физика работает медленней чем ее аппаратные аналоги и любые аналоги которые работают на плоскости.
На это ушло почти пол года непрерывной работы и поиска решения. Но результат был достигнут. Конечно еще не все готово, есть сложности с проверкой луча произвольной длинны. Так как луч может пересечь десятки секторов. И проверять каждый сектор на пересечение неразумно.
Физика за последний месяц была переписана под использование данного метода разбиения пространства. И это не предел по оптимизации. Вполне ее можно еще в 2 раза ускорить. Но даже сейчас можно смело ставить хоть 500 млн объектов и стрелять по ним. Если число коллизий меньше 20 тыс то все работает в пределах 40 fps на моем компьютере. Но если перенести на аппаратную реализацию коллизии то можно будет достичь большего числа коллизий что позволит значительно ускорить физику. Но это все планы на будущее.
от 1 метра до расстояния, которое свет проходит за 975 лет - это конечно круто...
Интересно как это будет работать на моем компьютере - он же медленнее... А ведь часть какую-то и ему обрабатывать прийдется. Надеюсь, что 25 кадров/секунда хоть обеспечит.
от 1 метра до расстояния, которое свет проходит за 975 лет - это конечно круто....
Это лишь размер одного сектора,
количество секторов на 1 уровень дерева будет равно произведению числа секторов по каждой оси -> 1844674587454754874073 * 1844674587454754874073 * 1844674587454754874073.
Это верхние сектора пространства (глубина дерева [1..150]).
Нижние (глубина [1..30]) это разбиение этого сектора на сектора меньшего размера, метод разбиения зависит от числа объектов в секторе, их статуса и скорости.
Так как объекты которые часто двигаются не должны перегружать дерево постоянной вставкой и удалением. За 1 кадр объект придется минимум 300 раз вставить и извлечь из дерева. Для них как раз и используются разные методы чтобы снизить нагрузку и не потерять в простоте поиска.
Не сложно посчитать какую площадь теоретически может покрыть движок, и в каких пределах он способен быстро находить соседние объекты.
Добавление и удаление элемента требует O(log(N)) операций, N - количество вершин.
Будет ли в демо возможность вставлять свои обьекты? Для тестирования внешнего вида эффектов скриптов
правки баланса итд. Рома дай знать если понадобится доработать юнит для демо, ведь какой нибудь будет,
чтоб турели присутствовали кокпит люк итд открывался.
Вставлять можно без каких либо проблем. Демку доделаю чтобы было по больше времени и займемся доводкой кораблей. Еще для кораблей нужно будет создать физические формы разрушений и соприкосновений, объясню подробней как демка будет, чтобы видно было.
Тут напомню еще один момент - корабли внутри должны быть не пусты - хоть на палубы их разделить бы, да текстурки внутренние добавить а то авось кто-то надумает залететь в ангар, да по самому кораблю до капитанского мостика прогуляться, жилые комнаты посмотреть, в гальюн заглянуть по потребности...
Внутренние помещения придется совершенно отдельно делать, создавать их гораздо проще чем саму модель и сможет это даже новичек в 3Д, исключение разве что такие суда как у рейфов. Вижу только один выход, игроки хотят к примеру хаттак в игре, значит пусть делают модели хотяб пустых помещений. Честно говоря не в курсе как Роман реализовывает отображение внутренностей, знаю только что не рационально отображать то что не видно, а если представить сколько внутри крупного корабля помещений элементов логично предположить что подгружать их лучше по мере необходимости при входе внутрь. Это лишь предположение, но если так то достаточно одной моделью с корпусом делать только входной шлюз и взлетные палубы.
С моделями разрушений предвижу проблемы, по крайней мере то что я видел в других играх, иногда модель во время взрыва просто подменяется покореженной и с другими текстурами или моделью обломков, иногда делается из нескольких частей с не ровными краями и при разрушении разваливается на них с заменой текстур на горелые темные. Но всегда это полностью новые отдельные модели, рваные мятые итд, проблема в том что делать их вовсе не проще и не быстрей а иногда даже сложней чем нормальные. По крайней мере мне всегда плохо удавалось имитировать покореженность и не ровность, плюс почти всегда нужны специально нарисованные для этих обьектов текстуры.
Понимаете, профессор моделирования, тут проблемма как раз во взрывах и есть. Допустим, у корабля направленным взрывом порвало внешнюю обшивку и оголились некоторые отсеки, но остальная часть корабля не повреждена... Там кусок палубы виден сквозь рваную рану... Переборки отсеков закрыло, люди и предметы вылетают наружу... Вот как вы это изобразите?
- Да и недаром я упомянул иллюминаторы - авось кто-то додумается извне заглянуть в них - чтобы посмотреть внутренние помещения...а там как раз свет кто-то включил, да еще и мультик смотрит по компу...
Троллю, но такое реально. Думаю, что пространство внутри надо хоть как-то отрисовать - хоть без мелочей а там при приближении добавятся и мелочи. Кстати, можно подменить и часть модели - именно покореженную часть и именно в том месте где повредили а остальное оставить. Возможно, если модель уникально-единична, то изменить ее контуры на ходу - програмно...
Знаю, тут работы и работы... Да - начинается всё с облака а заканчивается как раз описанными выше реалиями. Можно модель сделать частично разрушаемой - типа что-то заменяется покореженым а что-то(каркас) остается а потом, если покорежили основательно, то уже превражается во множество осколков, кучу мусора, кучу мелких обьектов созданных случайным образом(програмно-управляемые случайные полигоны) и т.п. У Романа кажись были алгоритмы програмного создания воксельных моделей...
Можно также использовать облако для камуфляжа - сначала появляется облако а потом, пока оно не рассеялось, подменяется часть модели и облако рассеивается. Итог - мы видим повреждения. Можно даже так отрисовать кусок отсека. А зашли или приблизились, то подгрузить и мелочи. Абордаж корабля же необязательно будет идти через шлюзы - можно же в качестве шлюза использовать любой герметичный отсек - только обшивку надо знать где "срезать взрывом".
Все это пока лишь мечты и предложения. Потребности и ресурсы покажут какая нам в действительности физика удастся и насколько приближенной к реальности она будет.
мне кажется,что это совсем не нужно, распад кораблябудет забирать уйму ресурсов. посмотри любую космическую игру, там все просто сделано
Вот и я думаю - как проще изобразить попадание снаряда в корабль с его частичным разрушением. Частичным - определенный отсек, палуба...
Абордажники ж не будут громить корабль - им же с него добыча нужна и нужно проникнуть в него через пробитое отверстие. Либо абордажники будут стыковаться и вырезать люк для проникновения...
МКС столкнулась с болтом(размеры болта, скажем, М30*150) идущим с ней встречным курсом. (скорость болта в момент столкновения его с МКС выходит примерно 15 км/с). Что будет с МКС? Что дырка будет, то понятно, но физику процесса, размеры дыры и т.п.
В некоторых играх при повреждении накладывают эффект, не меняя модели, пятна пламя струи дыма итд.
вполне логично, да и ресурса меньше тратится
Изменение текстуры модели в определенных местах - тоже вариант. Тем более, что в некоторых случаях текстуры обьемные. Остальное - накладные эффекты. Можно также наложить обьемную текстуру дырки на модель. Захотел проникнуть - проникнешь и получишь сзади текстуру космоса вокруг корабля - как будто смотришь через иллюминатор с неровными краями. Можно просто закрепить невидимую камеру в точке дыры и она будет все, что за ней показывать. 2 камеры - 2 стороны дыры. Хотя структура модели и не нарушалась.
Допустим, у корабля направленным взрывом порвало внешнюю обшивку и оголились некоторые отсеки, но остальная часть корабля не повреждена... Там кусок палубы виден сквозь рваную рану...
Или каждый кусочек корабля и его корпуса делать отдельным мэшем, связывать между собой (физика) с определенной силой (при воздействии большей силы связь рвется).
Или делать корпус одним/несколькими мэш/солид объектами и потом c применением Register Or Login to View Links!
рушить обшивку, догружая открывающиеся внутренние сектора, как отдельные наборы мешей.
- Да и недаром я упомянул иллюминаторы - авось кто-то додумается извне заглянуть в них - чтобы посмотреть внутренние помещения...а там как раз свет кто-то включил, да еще и мультик смотрит по компу...
Извиняюсь, что не сразу на форум запостил. (те кто подписан и так посмотрели).
Чего там хоть вкратце, а то у мну и-нет не оплачен )
Собственно ничего особенного, обычная машина ))) Столкновения работают, связи так же работают )))) И управляется машинкой почти как надо )))))
Смотрю с физикой, проблемы почти решены ?
Смотрю с физикой, проблемы почти решены ?
нет, есть несколько проблем к которым все еще не удается подступиться
Новостей нет но это совсем не значит что все стоит ))) просто разработчик один. Они не может заниматся и комюнити, и разработкой.
Не знаю, куда тут написать админу или модератору по поводу участия в проекте, подскажите?
Пишите мне в личку: ICQ 376665474 или почта trebium@rambler.ru все решим ;)
Ну чтож... видимо не особо вы хотели участовать в проекте раз так оперативно отвечаите.
Приходите сегодня (29.03.14) после 18:00 по москве в ТС будет много народу.