To peer or not to peer

23 Дек
2011

Пришла как-то в голову мысль погонять p2p соединения в Flash, в итоге получилась игрушка шутер в стиле Alien Shooter или CrimsonLand, кому как больше нравится ), посмотреть можно здесь http://vkontakte.ru/app2709872.

А теперь подробности…


Суть игры в том, что в кооперативном режиме можно валить монстряков.
Кто-то заходит, создает игру(он автоматически становится сервером), к нему уже подключаются остальные клиенты, в процессе игры сервер раздает всем информацию о монстрах пульках и т.д., если сервер отсоединился, то кто-то из клиентов становится сервером. Да и к тому же, если у клиента фиговый инет, то соответственно, фиговый канал на раздачу и инфа может приходить рывками, будут лаги.

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

Зная, что средствами p2p соединения можно гонять еще реалтайм видео и звук, хотел сделать общение между игроками с помощью микрофона, но после теста с кучей монстряков, решил — ну его нафиг 🙂

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

Что можно сказать из полученного опыта, кучу состояний объектов передать нельзя, например, когда монстров становиться больше 25, то ппц, засоряется канал или флешка не успевает обработать данные, в общем начинают проявляться лаги. Итого, если вы, задумали сделать игрушку, где бегает 5-10 человечков, то все будет в шоколаде 😉

P. S. если кому интересны подробности работы p2p, и их будет много, могу написать пост о том, как же там все устроено, хотя на самом деле достаточно почитать class references на сайте adobe.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх