forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Jam Session 7 (http://forum.boolean.name/forumdisplay.php?f=174)
-   -   Angry Snowmans (http://forum.boolean.name/showthread.php?t=20139)

RegIon 28.12.2015 11:51

Angry Snowmans
 
Посвященный неофициальному Jam Session 8.;) (спецраздела нет, пишу в 7)
ANGRY SNOWMANS
кликабельно

Под Новый год (Рождество, кому как нравится) злые силы пробудулись в виде снеговиков, тебе нужно спасти этот мир, дабы не сорвать праздник!

Сеттинг:

FPS-шутер, толпы врагов наплывают волнами, необходимо отстреливаться различным праздничным вооружением.
При завершения волны даются бонусы и начинается новая волна (возможно на новом уровне)

Управление:
WASD + R - телепорт на старт.
E - перезарядка, ЛКМ - выстрел.

Баги:
Провалы сквозь mesh-collider терейна, терейн делал в блендере, так же стоит simle-collider, что бы не вылезти за карту, но не помогает от провалов. - так и не решено.

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


Что есть:
  • Пару снеговиков
  • Метатель снежков - СнеGun
  • Примитивный интерфейс

impersonalis 28.12.2015 12:14

Ответ: Angry Snowmans
 
Очень неплохо: и идея с разумной сложностью и актуальный сеттинг. Карта отличная - прямо представил различные тактические ходы.

RegIon 28.12.2015 12:18

Ответ: Angry Snowmans
 
Цитата:

Сообщение от impersonalis (Сообщение 302973)
Очень неплохо: и идея с разумной сложностью и актуальный сеттинг. Карта отличная - прямо представил различные тактические ходы.

Карту придется немного переделать, что бы не проваливаться :(, так лень.

Arton 28.12.2015 16:31

Ответ: Angry Snowmans
 
Цитата:

Сообщение от RegIon (Сообщение 302970)
Валерич, я с тобой, до НГ конечно не управлюсь, но все же.
http://playcanv.as/p/G6Bwg1Sx

Я как будто попал в древний лес, с елями выросшими до невероятных размеров.


moka 28.12.2015 16:34

Ответ: Angry Snowmans
 
Я только сейчас сообразил что это ты! :D
А через коллайдер падает только при проседании fps?
Я почему-то ни разу не провалился, чего только не пытался сделать..

Arton 28.12.2015 17:00

Ответ: Angry Snowmans
 
Цитата:

Сообщение от impersonalis (Сообщение 302973)
Очень неплохо: и идея с разумной сложностью и актуальный сеттинг. Карта отличная - прямо представил различные тактические ходы.

Определил всё это по катанию снеговиков по карте?

RegIon 28.12.2015 20:20

Ответ: Angry Snowmans
 
Цитата:

Сообщение от moka (Сообщение 302983)
А через коллайдер падает только при проседании fps?
Я почему-то ни разу не провалился, чего только не пытался сделать..

moka, навряд ли что только при падении FPS,
мне одногруппник сказал, что провалился, он пытался от стенки запрыгнуть на снеговика, у него комп довольно производительный.

например 100% на всех компах проваливается тут.



Там 2 коллайдера (сам терейн и стенки высоченные), сквозь первый проваливаешься, а второй нет.

Я даже умудрился туда запихать снеговика:


Я не знаю как рассчитывается сеточный коллайдер, не могу как-то оптимизировать его.

RegIon 28.12.2015 23:00

Ответ: Angry Snowmans
 
Цитата:

Сообщение от Arton (Сообщение 302982)

Подал идею! ;)

RegIon 29.12.2015 02:08

Ответ: Angry Snowmans
 
Пополнение арсенала:
CнеGun
4 утра, закончил анимировать




схема реальная и рабочая!! и простая

moka, не получается импортнуть модель с анимацией, снеговик импортируется, а снеган нет. Во первых анимации 2, а импортируется 1, но и она только таймлайн пустой содержит

moka 29.12.2015 03:40

Ответ: Angry Snowmans
 
Нужен стабильный вариант репродукции проваливания, чтобы можно было дебажить проблему.

RegIon 29.12.2015 05:53

Ответ: Angry Snowmans
 
Цитата:

Сообщение от moka (Сообщение 303000)
Нужен стабильный вариант репродукции проваливания, чтобы можно было дебажить проблему.

Я показал где постоянно провалы и на всех машинах.
Я могу отрубить стены и тогда это сделать можно практически везде. Самое багованный - холм около елок, который срузк с респавна видно.

http://playcanv.as/b/cuM3Wi8e

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

RegIon 30.12.2015 16:40

Ответ: Angry Snowmans
 
http://playcanv.as/b/Nif4TaTn

Я не понимаю как вообще физика работает:SOS:, что это за магия с шариками?

Nex 30.12.2015 18:08

Ответ: Angry Snowmans
 
Я кстати тоже проваливаюсь в том же месте "где и все" (win7, Хром последней версии).

Arton 30.12.2015 23:50

Ответ: Angry Snowmans
 
Тоже где-то проваливался.
С шариками треш.

Можно без полосок экран делать?

Win7 64 SP1, FF 43.0.3

RegIon 02.01.2016 20:51

Ответ: Angry Snowmans
 
Цитата:

Сообщение от Arton (Сообщение 303020)
Можно без полосок экран делать?

Можно, убрал. Не столь важно, видно ли кусок жопки оружия или нет.

Обновил шапку

RegIon 05.01.2016 23:25

Ответ: Angry Snowmans
 
moka, можешь поведать как расчитывается нормаль столкновения?
А то что-то какой-то капец:




сам скрипт:
https://playcanvas.com/editor/code/3...let_control.js

Ентити льдых повернуты на 90, что бы был по направлению -z (вперед)
Можете побегать и пострелять льдышками:

http://playcanv.as/p/G6Bwg1Sx

moka 06.01.2016 03:49

Ответ: Angry Snowmans
 
Хм. В первую очередь выглядит что иногда пули пролетают сквозь, скорее всего тело пули очень маленькое, и за отсутствием SSD у физики они успевают пролететь между тиками.

Вообще реализовать коллизию с ландшафтом аналитически на самом деле весьма не сложно, я еще во времена блица на блице свой ландшафт писал, там весьма простая математика была.

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

Стрельба с перезарядкой - очень как-то странная механика :)

RegIon 06.01.2016 10:54

Ответ: Angry Snowmans
 
Спасибо, сделал проще:
Цитата:

normal = Sign(normal.dot(vector.UP)) * normal
Т.е инвертирую нормаль, если она смотрит вниз, а не вверх. Так как перпендикуляров нет - работает.

Плохо что нельзя менять UP,FORWARD,RIGHT вектора у энтити, часа 2 ушло на разбирание с кватернионами (узнать вращение между векторами)

Новый скрин. Такой пушки у игрока не будет, но пока побегать можно:




Предложите, как сделать поиск пути на такой карте. kD дерево строить на основании расположения объектов и ландшафта или как?
Пока придумывается сделать навмеш в редакторе и по нему искать, а деревья и т.д уже учитывать в астаре или еще где.

moka 06.01.2016 20:01

Ответ: Angry Snowmans
 
Да, с математикой порой нужно разбираться. Но зато когда разобрался раз и другой, уже с квартерионами и векторами будет в будущем проще.

Я бы туда сразу А* херачил бы, заместо смесей со всякими навмешами.
Можно конечно и навмеш, а обход деревьев уже сделать аналитически по ситуации.

RegIon 06.01.2016 20:16

Ответ: Angry Snowmans
 
Цитата:

Сообщение от moka (Сообщение 303146)
Да, с математикой порой нужно разбираться. Но зато когда разобрался раз и другой, уже с квартерионами и векторами будет в будущем проще.

Я бы туда сразу А* херачил бы, заместо смесей со всякими навмешами.
Можно конечно и навмеш, а обход деревьев уже сделать аналитически по ситуации.

Ну А* по чему-то строить нужно, вот графом и будет навмеш - ребра и вершины, расстояние - вес.

moka, я что-то не пойму как получить треугольники (вершины и грани) меша. VertexBuffer нашёл, а как получить какая вершина с какой связана ?

moka 07.01.2016 01:53

Ответ: Angry Snowmans
 
Цитата:

Сообщение от RegIon (Сообщение 303148)
moka, я что-то не пойму как получить треугольники (вершины и грани) меша. VertexBuffer нашёл, а как получить какая вершина с какой связана ?

Есть два буфера, VertexBuffer и IndexBuffer. Тебе нужно оба. Первый имеет позиции и данные вершин, второй указывает индексы вершин из VertexBuffer'а триплетами (трианглы).

RegIon 07.01.2016 10:57

Ответ: Angry Snowmans
 
я так понимаю, что бы узнать, как у меня расположены атрибуты в буфере, нужно получить vertexFormat? или есть строго типизированный вид атрибутов, типа:
x,y,z nx, ny, nz, tu, tv ... и т.д, которые постоянны при импорте

Спрашиваю, что бы сильно не заморачиватся с этим.

А для трансформации вершинной координаты в глобалную, нужно подействовать матрицей трансформации entity, с которого сняли эту вершину, так получается?

И тут возник вопрос:
Чем отличается transformPoint от transformVector ?

http://developer.playcanvas.com/en/a...transformPoint

moka 07.01.2016 13:33

Ответ: Angry Snowmans
 
transformPoint также смещает позицию исходя из матрицы + крутит + масштабирует, когда transformVector лишь крутит и масштабирует.

Для итерации через каждый треугольник, если сам не разберешься, то пример может смогу сделать, но попозже.

RegIon 07.01.2016 19:17

Ответ: Angry Snowmans
 
moka, я что-то не так делаю? Почему повернуто?
Главное с обычными примитивами правильно работает.
Трансформации тоже не получаются почему-то.
http://playcanv.as/p/ZeRzg8M3

moka 07.01.2016 20:10

Ответ: Angry Snowmans
 
Трансофрмацию нужно использовать самого меша а не объекта, т.к. каждый meshInstance - по сути child объект (node), и имеет свою дополнительную трансформацию.

В общем замени 21 строку в navmesh.js на:
PHP код:

var transform this.entity.model.model.meshInstances[0].node.getWorldTransform(); 


RegIon 07.01.2016 23:30

Ответ: Angry Snowmans
 
Код:

Array.prototype.pushOnes = function(e) {
  if(e && this.indexOf(e)==-1)
      return this.push(e);
   
  return this.length;
};

Так же в JS канает? а то что-то срабатывает без фильтрации, а тут сказанно что строгое сравнение.

не работает тут:
https://playcanvas.com/editor/code/371981/navmesh.js
в getNearNodes получаются дублированные ноды. И да, я не понимаю почкему они там вообще могут быть, так как массив нодов должен быть = количеству вершин, которые не дублируются (проверил в модели - дублей нет, но вершин 70, а PC говорит что 262, схрена ли?)

moka, я если что, редактировать разрешил тебе, все равно кроме тебя тут никто не разбирается в этом.

moka 08.01.2016 01:29

Ответ: Angry Snowmans
 
Цитата:

Сообщение от RegIon (Сообщение 303201)
Код:

Array.prototype.pushOnes = function(e) {
  if(e && this.indexOf(e)==-1)
      return this.push(e);
   
  return this.length;
};

Так же в JS канает? а то что-то срабатывает без фильтрации, а тут сказанно что строгое сравнение.

не работает тут:
https://playcanvas.com/editor/code/371981/navmesh.js
в getNearNodes получаются дублированные ноды. И да, я не понимаю почкему они там вообще могут быть, так как массив нодов должен быть = количеству вершин, которые не дублируются (проверил в модели - дублей нет, но вершин 70, а PC говорит что 262, схрена ли?)

moka, я если что, редактировать разрешил тебе, все равно кроме тебя тут никто не разбирается в этом.

Про pushOnes не совсем понял.
А на счет числа вершин, там на самом деле не просто. Дело в том что вершинный индекс может быть один, и шариться между разными мешами и индексными буферами.
Следственно число нод в твоем случае нужно считать по числу уникальных индексов в индексном буфере у меша.

RegIon 08.01.2016 08:36

Ответ: Angry Snowmans
 
Цитата:

Сообщение от moka (Сообщение 303205)
Про pushOnes не совсем понял.
А на счет числа вершин, там на самом деле не просто. Дело в том что вершинный индекс может быть один, и шариться между разными мешами и индексными буферами.
Следственно число нод в твоем случае нужно считать по числу уникальных индексов в индексном буфере у меша.

Ну я просто добавил в Array метод, который не должен добавлять, если такой объект уже есть. Грешил что он не работает.

Т.е если даже у меня 1 меш с 70 вершинами, но несколько индексных буферов, то может случится так, что их станет больше?
UPD: посмотрел что хранится в индексном буфере:


какого фига так? сначала вообще подряд шли, не должно быть. Сетка должна быть и должны дублироваться.
Вроде делаю как тут

UPD: теперь вообще сделал как в генерации коллизион модели, вершин (нодов) как было 262, так и осталось, куча дубликатов, либо я идиот, либо с индексным буфером что-то не так.

UPD: Все, я сдаюсь, я запутался. Нельзя просто так взять и восстановить набор вершин и связей между вершинами. Теперь, если объединяешь вершины с одинаковой позицией, то вершин становится 54 вместо 70 а дочерних вершин всего 1,а должно быть не менее 2. Все плохо.
Я понял. Это вроде как глюк экспортера. Я скачал json-меш, в нем по порядку идут индексы и получается 300 треугольников, вместо 100. Вот такая петрушка, причем весь огород в такой петрушке.

Dave'a потрепать на счет этого хотел уже, только май англисш из бед, и не смогу все правильно выразить.

Выдрал кусок из него:
PHP код:

... "type":"triangles","base":0,"count":300}] 



Раскидаю по карте пустые объекты вручную и сам вручную назначу связи. Быстрее будет.

moka 08.01.2016 18:02

Ответ: Angry Snowmans
 
В максе можно разбить вершины на группы сглаживания и материалы - и да, будут разные вершины.
А если все одной группой и одним материалом, то в FBX будет засунуто самое оптимальное. Наш экспортер не модифицирует данные буферов из FBX'а.

Ну и ты ведь можешь построить мелкий индекс вершин, проверять на их близость и переиспользовать, чтобы избежать дубликатов при генерации нав меша.

RegIon 09.01.2016 19:24

Ответ: Angry Snowmans
 
Тадам! Глобальное обновление.
  • Добавил тупое AI у ботов, теперь они могут кататься и преследовать игрока.
  • Так же их можно убить (за 20 выстрелов примерно) и они могут убить вас (за 5 ударов).
  • Если стрелять в бота, то с кокой-то вероятностью он сагрится.
Проблемы поиска пути так и не решил, подскажите как нормально это реализовать? (навмеш отпадает)

ТЫЦ


почему вот БананаБреад у меня на компе с максимальным фпс(60), на максимальном разрешении, а PlayCanvas(ну и не только он) на сценах проще дико лагает?

https://developer.mozilla.org/ru/dem...il/bananabread

Просто охота знать причину такой разницы.

Артем Валерьевич 11.01.2016 18:37

Ответ: Angry Snowmans
 
А почему курсор не по центру экрана?

RegIon 11.01.2016 19:21

Ответ: Angry Snowmans
 
Цитата:

Сообщение от Артем Валерьевич (Сообщение 303226)
А почему курсор не по центру экрана?

Какой курсор? Прицел?
Потому что я на глаз двигал модельку оружия относительно камеры, я старался сделать так, что бы оружие не слишком торчало :-)

Артем Валерьевич 12.01.2016 10:33

Ответ: Angry Snowmans
 
да не, я повернуть не могу из за того что мыша к краю экрана уходит и всё

RegIon 12.01.2016 11:23

Ответ: Angry Snowmans
 
Цитата:

Сообщение от Артем Валерьевич (Сообщение 303232)
да не, я повернуть не могу из за того что мыша к краю экрана уходит и всё

Так ты нажми ЛКМ и курсор скроется. :-D

RegIon 14.01.2016 00:02

Ответ: Angry Snowmans
 
Обновление:
  • Машина состояний во главе интеллекта ботов, что упрощает резко написание AI
  • Анимации, всего 10, можно увидеть только 5
  • Полоса ХП для бота, пишу свой скайрим
moka, а как сделать так, что бы при смене анимации, части которые не нужно анимировать, были в положении предыдущей анимации?

Выстрели в бота и поймешь о чем я спрашиваю.

moka 14.01.2016 04:11

Ответ: Angry Snowmans
 
Ты про руки?
На данный момент нельзя анимировать отдельную часть тела, это в процессе разработки (прокачиваем систему анимации, но когда зарелизим еще не известно).

RegIon 14.01.2016 08:50

Ответ: Angry Snowmans
 
Цитата:

Сообщение от moka (Сообщение 303279)
Ты про руки?
На данный момент нельзя анимировать отдельную часть тела, это в процессе разработки (прокачиваем систему анимации, но когда зарелизим еще не известно).

:(эх, а если отвязать кривые анимации от необходимых костей, что бы вообще у них трансформаций не было?
Или может делать запись анимации в локальных координатах каждой кости, или playcanvas все равно в глобальные преобразует? Тогда все изменения были бы от текущего положения.

moka 14.01.2016 15:24

Ответ: Angry Snowmans
 
Там в любом случае будет так: интерполируются между keyframe'ами все кости для текущей анимации.
Нету как таковой понятия "несколько анимаций".

Это большой набор разных фичей над которыми сейчас работаем, чтобы можно было сказать что конкретно анимируется, как морфится, и т.п.

Позволит такой подход очень многое. И то что ты спрашиваешь.


Часовой пояс GMT +4, время: 03:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot