Войти
ПроектыФорумОцените

Robostorm.io (мультиплеер эксперимент) [релиз]

Страницы: 1 2 38 9 Следующая »
#0
9:37, 8 июля 2017
Решил отвлечься и запилить за месяц-два какую-нибудь простую законченную играбельную ерунду. В данном случае дебютируют мои познания в сетевом кодинге и физике (самопальный физдвижок).

-----
Ура, игра готова. Итого, ушло 6 мемяцев вместо предсказанных мной 2х)

http://robostorm.io

Изображение

Платформа - десктоп (вин/линь/мак).

Управление:
WASD - ходить.
Мышь - прицел.
Левая и правая кнопки мыши - стрельба из левого и правого оружия.
Шифт - включить щит.
Пробел - включить ускорение.
Е - сменить оружие на лежащее.
B - открыть меню прокачки.

Левое оружие (пулемёт) бесконечно, а правое надо находить разное, и патроны кончаются.

Задача:
Есть 4 команды. Надо набрать своей команде больше всех очков. Для этого можно захватывать точки (круглые фиговины) и убивать врагов. Постоял 5 секунд у точки - она захватилась, и будет генерировать 1 очко раз в 3 секунды. Убил врага - получил 1 очко.

Игрок отдельно от команды также набирает очки опыта за победы и захваты, их можно тратить на покупку перков.


#1
10:35, 8 июля 2017

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

#2
10:39, 8 июля 2017
Mr F
> t800
> файрбаг авторы забросили, и у меня он что-то даже логи консоли перестал
> принимать. сейчас встроенная ФФ консоль уже не хуже.

Хорошо. Тогда во встроенной консоли буду скрины делать.

напишу, спасибо

ОК. Буду ждать.

#3
10:50, 8 июля 2017

А то что у вас робот в по плечи в стенки заезжает

+ Показать

Это считать багом или нет?

#4
10:59, 8 июля 2017

t800
> Это считать багом или нет?
не, это мелочи, быстро поправить, и модель будет заменена, пока волнуют только ошибки, приводящие к невозможности дальнейшей игры

#5
11:14, 8 июля 2017

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

#6
11:17, 8 июля 2017

Татарин
> Ох, у меня притормаживает просто жесть
именно фпс прыгает или сетевой лаг (игрок плавает/отъезжает назад)?

Татарин
> но тебе надо над кодом поработать
знаю

Татарин
> и на amazon серверах только деньги потеряешь.
пока что юзаю free tier на год. а есть варианты лучше?

Татарин
> по ws передавай бинарные данные
так и планирую. но пока на экспериментальной стадии удобнее JSON. когда точно утвердится что куда нужно передавать, сделаю бинарный формат.
то же касается и оптимизаций кода (и медии).

может быть даже удастся на UDP перейти через WebRTC, но что-то инфы по такому подходу не густо, и вообще он больше на peer-to-peer расчитан.

#7
11:26, 8 июля 2017

Mr F
>именно фпс прыгает или сетевой лаг (игрок плавает/отъезжает назад)?
вот честно я не понял, я смотрел на ws лог и на игру и они тормозили одновременно, по моем практике это все таки код.
> пока что юзаю free tier на год. а есть варианты лучше?
я узаю российский сервер, он дешевый 150 рублей и держит народ, но тебе же нужен мировой рынок тут надо провести исследования, но на первых порах я бы забил на amazon, хотя если он бесплатен то шыло на мыло.
> так и планирую. но пока на экспериментальной стадии удобнее JSON. когда точно
> утвердится что куда нужно передавать, сделаю бинарный формат.
> то же касается и оптимизаций кода (и медии).
>
> может быть даже удастся на UDP перейти через WebRTC, но что-то инфы по такому
> подходу не густо, и вообще он больше на peer-to-peer расчитан.
TCP вполне достаточно, может у тебя сервер в этот момент что то делает и пакеты приходят не равномерно, на чем сервер написан?
у меня есть готовый сервер и клиент, была игрушка io, не взлетела но она оптимизирована, если узнать побольше про твой проект то можно быстро перестроить под тебя.

#8
11:36, 8 июля 2017

Татарин
> они тормозили одновременно, по моем практике это все таки код.
понял, похоже на то, спс

Татарин
> на чем сервер написан?
nodejs, он вообще не напрягается, где-то 0.5% CPU юзает, вся неравномерность прихода только от качества сети и расстояния от сервера.

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

>у меня есть готовый сервер и клиент, была игрушка io, не взлетела но она оптимизирована, если узнать побольше про твой проект то можно быстро перестроить под тебя.
спасибо, но я хочу сам поразбираться, да и написано уже не так уж мало + клиент и сервер шарят одинаковые куски кода.
при реализации косился на эту статью: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
если есть какие-то неочевидные советы, что позволило круто оптимизировать, был бы рад узнать :)

#9
11:45, 8 июля 2017

Mr F
да советов могу насыпать без проблем, сервер у тебя по сути должен быть 3 строчки кода, собрал раздал, довольно легко выжать из него все соки.
картка замкнутая получается что у тебя будет лимит на игроков 32x32 это максимум или даже меньше, тогда проще завести бинарный буфер и всем раздавать каждые 100 мс или чаще.
по клиенту тоже, начинать надо было с "use strict" хотя бы, а там с canvas библиотекой я мало работал, чего она там лагает для меня загадка, ну и то что ты от мышки луч трассируешь круто, но бесполезно если камера в изометрии зафиксирована можно просчтитать самому а то робот и в пол и в стены стреляет, хотя может это фича) физика там получилась пока не нужна, толко в кубики пострелять да и считаешь ты все на клиенте если кто то начнет читерить в io игре это будет финал для нее. Переходить на p2p можно, но тогда там может быть такой дикий бардак с читерством, который уже никак не исправишь.
Так сложно понять код если не знать какие цели ты преследуешь.

#10
11:50, 8 июля 2017

Татарин
> сервер у тебя по сути должен быть 3 строчки кода
ну побольше чутка) он же реплицирует все действия игроков - двигает их, коллизию считает, лучи выстрелов проводит, траектории гранат считает и т. п., чтобы читерить было сложно.

Татарин
> тогда проще завести бинарный буфер и всем раздавать каждые 100 мс или чаще.
примерно это и происходит, только буфер пока небинарный. шлётся каждые 50 мс.

> хотя может это фича
фича в том, что можно целиться в разные части врага) но на деле это чот вышло почти нереально, когда они быстро бегают.

>физика там получилась пока не нужна
мне доставляет персонажей раскидывать на куски с ней + может ещё какие-нибудь объекты ломаемые добавлю

> да и считаешь ты все на клиенте
она чисто декоративная (серверная только у гранат)

#11
11:54, 8 июля 2017

Mr F
чем физику считает?

#12
11:57, 8 июля 2017

Татарин
> чем физику считает?
клиент и сервер одним и тем же. самодельная position-based симуляция (в духе http://www.gamedev.ru/code/articles/PositionBasedPhysics) с приоритетом количества фигни над её аккуратностью.
сейчас каждый объект проверяет коллизию с каждым, и это конечно жесть. учитывая изометричность игры, планирую тупо распределить все объекты по 2d клеточкам и проверять только с соседними.

#13
12:09, 8 июля 2017

Mr F
Что то очень сложное для меня)
Я по проще использую https://www.gamedev.net/articles/programming/general-and-gameplay… esponse-r3084
Меньше расчётов и сквозь стенки уже не пройдешь а физику в цикле крутить не надо, но у тебя круче.
Переход на сетку правильная мысль.
Да у тебя правильные мысли, тебе советовать только портить - верной дорогой идёте товарищи.

#14
12:17, 8 июля 2017

ООО я не заметил у меня на телефоне другой аккаунт, robitcity это Татарин если кто не знал, извиняюсь за путаницу)

Страницы: 1 2 38 9 Следующая »
ПроектыФорумОцените

Тема в архиве.