Robostorm.io (мультиплеер эксперимент) [релиз]
Mr F | Постоялец | www | 8 июля 2017 | 9:37 | #0 |
---|
-----
Ура, игра готова. Итого, ушло 6 мемяцев вместо предсказанных мной 2х)
Платформа - десктоп (вин/линь/мак).
Управление:
WASD - ходить.
Мышь - прицел.
Левая и правая кнопки мыши - стрельба из левого и правого оружия.
Шифт - включить щит.
Пробел - включить ускорение.
Е - сменить оружие на лежащее.
B - открыть меню прокачки.
Левое оружие (пулемёт) бесконечно, а правое надо находить разное, и патроны кончаются.
Задача:
Есть 4 команды. Надо набрать своей команде больше всех очков. Для этого можно захватывать точки (круглые фиговины) и убивать врагов. Постоял 5 секунд у точки - она захватилась, и будет генерировать 1 очко раз в 3 секунды. Убил врага - получил 1 очко.
Игрок отдельно от команды также набирает очки опыта за победы и захваты, их можно тратить на покупку перков.
Правка: 7 дек. 2017 20:08
t800 | Пользователь | www | 8 июля 2017 | 10:33 | #1 |
---|
Если можно будет запишите меня в тестирорвщики, могу в любое время потестить, мой e-mail
С уважением Богдан.
Правка: 8 июля 2017 10:34
Mr F | Постоялец | www | 8 июля 2017 | 10:35 | #2 |
---|
файрбаг авторы забросили, и у меня он что-то даже логи консоли перестал принимать. сейчас встроенная ФФ консоль уже не хуже. напишу, спасибо
t800 | Пользователь | www | 8 июля 2017 | 10:39 | #3 |
---|
> t800
> файрбаг авторы забросили, и у меня он что-то даже логи консоли перестал
> принимать. сейчас встроенная ФФ консоль уже не хуже.
Хорошо. Тогда во встроенной консоли буду скрины делать.
ОК. Буду ждать.
t800 | Пользователь | www | 8 июля 2017 | 10:50 | #4 |
---|
Это считать багом или нет?
Mr F | Постоялец | www | 8 июля 2017 | 10:59 | #5 |
---|
> Это считать багом или нет?
не, это мелочи, быстро поправить, и модель будет заменена, пока волнуют только ошибки, приводящие к невозможности дальнейшей игры
Правка: 8 июля 2017 11:00
Татарин | Постоялец | www | 8 июля 2017 | 11:14 | #6 |
---|
io игра нормальная получится, но тебе надо над кодом поработать, и на amazon серверах только деньги потеряешь.
по ws передавай бинарные данные, а в коде надо провести хорошую оптимизацию.
Если есть желание могу помочь.
Mr F | Постоялец | www | 8 июля 2017 | 11:17 | #7 |
---|
> Ох, у меня притормаживает просто жесть
именно фпс прыгает или сетевой лаг (игрок плавает/отъезжает назад)?
Татарин
> но тебе надо над кодом поработать
знаю
Татарин
> и на amazon серверах только деньги потеряешь.
пока что юзаю free tier на год. а есть варианты лучше?
Татарин
> по ws передавай бинарные данные
так и планирую. но пока на экспериментальной стадии удобнее JSON. когда точно утвердится что куда нужно передавать, сделаю бинарный формат.
то же касается и оптимизаций кода (и медии).
может быть даже удастся на UDP перейти через WebRTC, но что-то инфы по такому подходу не густо, и вообще он больше на peer-to-peer расчитан.
Правка: 8 июля 2017 11:19
Татарин | Постоялец | www | 8 июля 2017 | 11:26 | #8 |
---|
>именно фпс прыгает или сетевой лаг (игрок плавает/отъезжает назад)?
вот честно я не понял, я смотрел на ws лог и на игру и они тормозили одновременно, по моем практике это все таки код.
> пока что юзаю free tier на год. а есть варианты лучше?
я узаю российский сервер, он дешевый 150 рублей и держит народ, но тебе же нужен мировой рынок тут надо провести исследования, но на первых порах я бы забил на amazon, хотя если он бесплатен то шыло на мыло.
> так и планирую. но пока на экспериментальной стадии удобнее JSON. когда точно
> утвердится что куда нужно передавать, сделаю бинарный формат.
> то же касается и оптимизаций кода (и медии).
>
> может быть даже удастся на UDP перейти через WebRTC, но что-то инфы по такому
> подходу не густо, и вообще он больше на peer-to-peer расчитан.
TCP вполне достаточно, может у тебя сервер в этот момент что то делает и пакеты приходят не равномерно, на чем сервер написан?
у меня есть готовый сервер и клиент, была игрушка io, не взлетела но она оптимизирована, если узнать побольше про твой проект то можно быстро перестроить под тебя.
Правка: 8 июля 2017 11:26
Mr F | Постоялец | www | 8 июля 2017 | 11:36 | #9 |
---|
> они тормозили одновременно, по моем практике это все таки код.
понял, похоже на то, спс
Татарин
> на чем сервер написан?
nodejs, он вообще не напрягается, где-то 0.5% CPU юзает, вся неравномерность прихода только от качества сети и расстояния от сервера.
хотя тьфу, вообще может быть такое, он же однопоточный. апдейт сервера может задержать на несколько мс посылку данных.
>у меня есть готовый сервер и клиент, была игрушка io, не взлетела но она оптимизирована, если узнать побольше про твой проект то можно быстро перестроить под тебя.
спасибо, но я хочу сам поразбираться, да и написано уже не так уж мало + клиент и сервер шарят одинаковые куски кода.
при реализации косился на эту статью: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
если есть какие-то неочевидные советы, что позволило круто оптимизировать, был бы рад узнать :)
Правка: 8 июля 2017 11:40
Татарин | Постоялец | www | 8 июля 2017 | 11:45 | #10 |
---|
да советов могу насыпать без проблем, сервер у тебя по сути должен быть 3 строчки кода, собрал раздал, довольно легко выжать из него все соки.
картка замкнутая получается что у тебя будет лимит на игроков 32x32 это максимум или даже меньше, тогда проще завести бинарный буфер и всем раздавать каждые 100 мс или чаще.
по клиенту тоже, начинать надо было с "use strict" хотя бы, а там с canvas библиотекой я мало работал, чего она там лагает для меня загадка, ну и то что ты от мышки луч трассируешь круто, но бесполезно если камера в изометрии зафиксирована можно просчтитать самому а то робот и в пол и в стены стреляет, хотя может это фича) физика там получилась пока не нужна, толко в кубики пострелять да и считаешь ты все на клиенте если кто то начнет читерить в io игре это будет финал для нее. Переходить на p2p можно, но тогда там может быть такой дикий бардак с читерством, который уже никак не исправишь.
Так сложно понять код если не знать какие цели ты преследуешь.
Правка: 8 июля 2017 11:47
Mr F | Постоялец | www | 8 июля 2017 | 11:50 | #11 |
---|
> сервер у тебя по сути должен быть 3 строчки кода
ну побольше чутка) он же реплицирует все действия игроков - двигает их, коллизию считает, лучи выстрелов проводит, траектории гранат считает и т. п., чтобы читерить было сложно.
Татарин
> тогда проще завести бинарный буфер и всем раздавать каждые 100 мс или чаще.
примерно это и происходит, только буфер пока небинарный. шлётся каждые 50 мс.
> хотя может это фича
фича в том, что можно целиться в разные части врага) но на деле это чот вышло почти нереально, когда они быстро бегают.
>физика там получилась пока не нужна
мне доставляет персонажей раскидывать на куски с ней + может ещё какие-нибудь объекты ломаемые добавлю
> да и считаешь ты все на клиенте
она чисто декоративная (серверная только у гранат)
Mr F | Постоялец | www | 8 июля 2017 | 11:57 | #13 |
---|
> чем физику считает?
клиент и сервер одним и тем же. самодельная position-based симуляция (в духе http://www.gamedev.ru/code/articles/PositionBasedPhysics) с приоритетом количества фигни над её аккуратностью.
сейчас каждый объект проверяет коллизию с каждым, и это конечно жесть. учитывая изометричность игры, планирую тупо распределить все объекты по 2d клеточкам и проверять только с соседними.
Правка: 8 июля 2017 12:02
robotcity | Постоялец | www | 8 июля 2017 | 12:09 | #14 |
---|
Что то очень сложное для меня)
Я по проще использую https://www.gamedev.net/articles/programming/general-and-gameplay… esponse-r3084
Меньше расчётов и сквозь стенки уже не пройдешь а физику в цикле крутить не надо, но у тебя круче.
Переход на сетку правильная мысль.
Да у тебя правильные мысли, тебе советовать только портить - верной дорогой идёте товарищи.