>>525102 Как же ты меня ловко, кратко и талантливо приложил! Но тем не менее, самая основа у меня готова, 4 тысячи квадратиков рендерятся в 60-ти фпс, можно еще подшаманить с шейдером, чтобы увеличить производительность, но, думаю, должно и этого хватить. Потом добавлю рендеринг во фреймбуфер и блум, но это будет уже позже.
Следующий шаг: запилить кораблик игрока с управлением передвижением и стрельбой.
Думаю, стоит обновить тред. Я все еще работаю над обнаружением коллизий. Я аппроксимирую объекты с помощью нескольких кружков и вычисляю их AABB, чтобы добавить их в uniform grid, которая используется для первой фазы collision detection'а.
Ах да, кстати, кто-нибудь знает, почему у меня canvas растянут? Он должен быть размерами 800х600, но почему-то получается 1000х750, в браузере я не приближаю, css не использую.
Затестил систему обнаружения коллизий. Вроде неплохо работает, хотя в фуррифоксе производительность оставляет желать лучшего: стоит задрать количество объектов до 2000, как фпс падает до сорока. Хром же стабильно показывает 55-60. Впрочем, 2000 - это дохуя, мне в худшем случае понадобится несколько сотен. К тому уже у меня уже есть кое-какие соображения по поводу оптимизации.
А теперь: рефакторинг. Надо создать отдельный объект для хранения состояния игры, плюс еще по мелочи...
>>526230 Профилируй: задери кол-во объектов до 2м и посмотри, у каких функций self самый жирный (в хромовском дебаггере можно подключить микросекунды, но это лишнее). Еще у тебя демка очень похожа на классический пример 0/0 превратился в NaN, что выводит ф-ции из моно%забылслово% состояния (хотя, тут не факт что фокс умеет в отпимизацию по стилю в8). Про рефакторинг+оптимайз, раз уж ты маньяк, возьми веб-воркеры в каждый из них сунь useasm (и не забывай про минимальный пакет данных от оперативки к процу, даже если векторизация данных у js все еще в жопе), чтобы рассчитывать коллизии параллельно.
>>527284 Спасибо за совет, но оптимизировать я буду позже. Как мне сказали:"преждевременная оптимизация - игрушка дьявола, ежжи!"
>>527283 Я так и делаю. Выставляю в атрибутах канваса ширину=800 и высоту=600, и для невооруженного глаза все выглядит правильно, но если попытаться записать видео, оказывается, что канвас увеличен в 1.25 раз.
>>527823 > записать видео, оказывается, что канвас увеличен в 1.25 раз Интересно. Грешить можно на: 1. какой-нибудь зум в системе 2. запись видео. Если рядом с канвасом поставить div style="width:800px;height:600px;background:red" он будет меньше канваса?
>>528958 >какой-нибудь зум в системе Точно, так и есть. Заглянул в опции дисплея, там приближение 125% стоит, поставил на 100%, все стало милипизерным, но размер канваса правильный. Спасибо за помощь!
В общем, доделать игру к конкурсу я не успел, впрочем, как и всегда. История всей моей ёбанной жизни. Зато он дал мне мотивацию продолжать разработку, в результате чего степень готовности игры уже не позволяет мне ее бросить, и я ее доделаю. Со временем.
Вы думали, что я умер, но хуй вам. В общем, я был и занят, и ленился, но больше всего я страдал от неуверенности, как именно стоит реализовать тот или иной элемент игры.
Однако, нововведения следующие: 1)Я перепилил пули: теперь вместо того, чтобы создавать новый подкласс пули каждый раз, когда мне требуется от нее новое поведение, я использую компоненты. Это позволяет мне иметь как пули с ручным наведением или летящие по синусоиде, так и пули с ручным наведением и летящие по синусоиде. 2)Добавил нормальные паттерны стрельбы, так что теперь можно сделать что-то типа двухствольного пулемета, у которого стволы стреляют попеременно. Причем сами паттерны создаются с помощью шаблона проектирования "строитель", что куда удобнее, чем использовать конструкторы с десятками аргументов.
Отрефакторил множество мелочей, а также добавил рикошеты, пусть и кривые. Никто не знает, как разрешать столкновения между объектами, если каждый объект состоит из нескольких окружностей?
Язык: Haxe
Платформа: Веб
Первая цель: запилить простенький графический движок на вебЖЛ.
Ну чо, народ, погнали, нахуй.