Я так понимаю, что в такой довольно простой механике сложно идти разными путями. То-есть кто бы не пилил эту задумку будет идти примерно одним и тем же путем и сталкиваться с теми же проблемами. И не использовал физические движки, те несколько формул что есть (равноускоренное движение) - вывел на бумажке. Возможно надо думать про более совершенную физику. Хотя сейчас для меня основная задача разобраться с компенсацией лагов. Я реализовал примитивнейший подход и мне кажется что иногда очень заметно подрагивает позиция игрока.
Тут вот что, при смене наплавления, движение продолжается и далеко не сразу меняется. Если это инертность, то оно не интуитивно-понятна. Нужно какое-то замедление. А то сейчас впечатление что либо:
Всё подвисает
Управление воспринимается только через большие промежутки времени. Которые в реальном бою стоили бы жизни.
То есть, какая-то отзывчивость, обратная связь, должна быть мнгновенной. Даже если инертность задумана.
В чем проявляются тормоза? Тормозит отрисовка, или отзывчивость управления? Я старался подобрать оптимальное соотношение между отсылкой позиции куда движется игрок и необходимым количеством пакетов. Получилось так: 40мс ждет клиент, сервер обновляет состояние комнаты каждые 40мс (в среднем + 20мс к предыдущему показателю). Итого отзывчивость в среднем 40мс + ping. Полагаю что не в лучшую сторону на отзывчивость влияет мой алгоритм компенсации лагов :(. Сейчас это линейное сглаживание на протяжении 0.25 сек.
Они не то чтобы застряли. Ведь в этой игре и стен как таковых нету, кроме прямоугольника ограничивающего комнату. Это аватары игроков отрубивших клиент. Пока я ничего не делаю с такими аватарами и они залетают в один из углов согласно направлению движения. В планах сбрасывать скорость в 0. Полагаю живые аватары должны сами разбираться с ними (разбирать их на части и поедать).
я пытался, толкал зеленые зубчатки к ним, не выгорело - они моментально собираются обратно, да и 7к+ клеткой нельзя съесть 4к - одинаковые по размеру, лол.
Не норма, наверное имеет место утечка ресурсов, буду искать... Насчет лиса не знаю, в качестве графической прослойки использую pixijs. Код игры не должен использовать столько ресурсов чтобы фпс проседал до 35. Если не нажимать кнопку Play (игровая логика полностью отсутствует) фпс тоже 35? В таком случае возможно тормозит pixijs.
Да, тоже 30-35 фпс. Firefox 46.0.1 из репов mozilla.debian.net, может в этом проблема? Мне рассказывали, они собирают его без поддержки webgl, может еще что-то не так к ним.
[2016-05-30 10:17:04] JavaScript - http://cellwar.xyz/
Inline script thread
Uncaught exception: TypeError: Operator 'in' applied to non-object
Error thrown at line 1, column 11091 in <anonymous function>(a, b) in http://cellwar.xyz/libs/jBinary/jbinary.js:
called from line 1, column 25 in <anonymous function>(a) in http://cellwar.xyz/libs/jBinary/jbinary.js:
called from line 1, column 0 in http://cellwar.xyz/libs/jBinary/jbinary.js:
[2016-05-30 10:17:04] JavaScript - http://cellwar.xyz/
Unknown thread
Uncaught exception: ReferenceError: Undefined variable: jBinary
Error thrown at line 40, column 561 in d(b, e) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 41, column 42 in e(a, c, f) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 41, column 268 in <anonymous function: invoke>(a, b, c, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 43, column 588 in <anonymous function>(a) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called via Function.prototype.call() from line 7, column 455 in q(a, b, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 43, column 284 in bb(a, b) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 21, column 16 in <anonymous function>() in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 21, column 324 in yc(a, b, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 20, column 115 in ee(a, b) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 313, column 257 in <anonymous function>() in http://cellwar.xyz/bower_components/angular/angular.min.js:
Error initially occurred at line 7, column 301 in <anonymous function>(a) in http://cellwar.xyz/huerbuer.js:
called via Function.prototype.apply() from line 41, column 409 in <anonymous function: invoke>(a, b, c, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 39, column 61 in <anonymous function>() in http://cellwar.xyz/bower_components/angular/angular.min.js:
called via Function.prototype.apply() from line 41, column 409 in <anonymous function: invoke>(a, b, c, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 43, column 288 in <anonymous function>(a, b) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 40, column 513 in d(b, e) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 41, column 42 in e(a, c, f) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 41, column 268 in <anonymous function: invoke>(a, b, c, d) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called from line 43, column 588 in <anonymous function>(a) in http://cellwar.xyz/bower_components/angular/angular.min.js:
called via Function.prototype.call() from line 7, column 455 in q(a, b, d) in http://cellwar.xyz/bower_components/angular/angular.min.js: