Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Какую среду лучше использовать для онлайн-игры реального времени? (http://www.flasher.ru/forum/showthread.php?t=174464)

Jarproger 26.01.2012 10:21

Какую среду лучше использовать для онлайн-игры реального времени?
 
Я хочу замутить онлайн игру (приложение ВК), 2D вид сбоку. Монадобиться реалтайм работа с клиентами - сервер будет регулярно посылать информацию о том, какой персоонаж куда передвинулся\что сказал.
Мне кажется что неплохим решением будет поднять C++ клиент, т.к. он будет всю игровую базу данных держать в оперативке и будет большая скорость доступа. Будет висеть и прослушивать порт.
Есть ещё варианты - на пхп сделать или на яве. Как лучше делать такую игру? И базу данных какую лучше?

Genzo 26.01.2012 11:24

Цитата:

будет поднять C++ клиент
И как клиент это будет делать?) Может сервер?
Чаще всего на яве поднимают, т.к. есть уже готовые примеры. на сях придется помучиться.
Сделайте связку (сервер(java,c++,..) который общается с клиентами, БД, ФС и т.п., к нему прикрутите скриптовый язык, обрабатывать игровую логику (lua, python , ruby,...) и будет вам счастье). DB выбирайте в зависимости от потребностей, но я думаю pgsql подойдет.

Добавлено через 36 секунд
ЗЫ : имхо

kackbip 26.01.2012 11:29

Цитата:

C++ клиент
Сервер? :)
Обычно принимают во внимание следующие аспекты при выборе технологии:
1) Ёмкость-скорость языка. Грубо говоря его уровень. На C++ делать сложнее и дольше. На java немного легче и быстрее.
2) Наличие разработчиков. Если у вас есть только java разработчик то думать тут нечего :)
3) Скорость работы среды/языка - это уже не очень важно т.к. действительно высоконагруженные системы кластеризуются и вы сможете получить работоспособную систему нужной производительности и не важно какой технологией вы пользуетесь.

Jarproger 26.01.2012 12:06

Да я опечатолся, имел в виду конечно С++ сервер)
Я буду виртуальный выделенный сервер покупать и под ним серверную часть запущу. Скорее всего на яве, правда там с установкой апатча придётся попариться

Genzo 26.01.2012 12:15

Цитата:

правда там с установкой апатча придётся попариться
С чего вы взяли?
Цитата:

виртуальный выделенный сервер
Подойдет для очень маленькой нагрузки, лучше просто dedicated берите, в европе они по 100евро в месяц за i7-2600

Jarproger 26.01.2012 12:52

Так для работы сокетного ява-сервера апатч не нужен? Просто апплет поставить прослушивать порт, это и будет сервер?

Добавлено через 2 минуты
И ещё вопрос - у меня есть такая идея - в каждой игровой локации делать сервером одного из игроков (выбирать по самому низкому пингу), а на главный сервер время от времени отправлять данные игры для проверки (на читерство) и занесение в базу данных. Это должно значительно снизить нагрузку на главный сервер

Genzo 26.01.2012 12:56

Цитата:

Так для работы сокетного ява-сервера апатч не нужен?
Если вы про Apache, то это веб сервер. Зачем он нужен, когда вы держите свой сервер. (на самом деле веб-сервер это тоже сокет сервер, только работает он по уже готовому протоколу http). А вы протокол писать будете сами.

Jarproger 26.01.2012 13:02

А есть ли серверный as? Было бы очень удобно одни и те же классы использовать и на стороне клиента, и на стороне сервера

Genzo 26.01.2012 13:09

Цитата:

А есть ли серверный as?
Есть подобие, скриптовый язык для Flash Media Server
Цитата:

Было бы очень удобно одни и те же классы использовать и на стороне клиента, и на стороне сервера
Смотрите в сторону десереализации из AMF в нужный вам формат, например для php есть AMFPhp, который позовляет напрямую общаться с VO. Т.е. :
Во флеше у вас есть :
Код AS3:

public class myVO{
public var myVar:Number;
}

В php у вас будет :
PHP код:

class myVo
{
var 
myVar;


Думаю не сложно будет написать или использовать готовый десериализатор для java , c++ , .. Но лучше все-таки идти классическим путем и писать свой протокол. Хотя можно в него и вставить AMF объекты.
Например так :
Код:

{
int SIZE,
body AMF_OBJECT [SIZE]
}


Astraport 26.01.2012 13:26

Могу порекомендовать Nodejs. Если AS3 знаете, за пару дней сервер будет готов.
Это на вопрос
Цитата:

А есть ли серверный as? Было бы очень удобно одни и те же классы использовать и на стороне клиента, и на стороне сервера

DaFive 26.01.2012 14:56

NodeJS крут в освоении, но косяков в нём достаточно.

kackbip 26.01.2012 22:35

Что-то я сомневаюсь, что nodejs стоит внимания... Максимум на что он годится - билдить проекты вместо ant-а. ИМХО.

Astraport 26.01.2012 23:37

Насколько я понял по вопросам (А есть ли серверный as?), у автора такие же проблемы как и у меня - не хватает знаний. Но тем не менее, я сделал рилтайм мультиплеерную игру на nodejs за пару недель из которых неделю я мучился из-за проблем бесплатного хостинга (провайдер закрыл фаерволом 843 порт по которому флэшу передается файл политики безопасности). Мне здесь пару раз помогали по игре.

Клиентская часть около 1000 строк кода, серверная не считая подключаемых модулей) - 200-250 строк. Игроки входят, бегают по большой карте, стреляют, прячутся за стенами, сервером генерируется куча бонусов (ускорение, мощь выстрела, скорострельность, броня, здоровье, монеты на которые можно купить более долговременные бонусы), выходят. Все события и изменения транслируются для всех участников игры. Плюс ещё и текстовый чат в виде колаутов над игроками. Лагает конечно, но особо не настраивал, забросил сейчас. Хотел ещё комнаты сделать.

Ну и на nodejs сейчас пишут довольно крупные проекты типа социальных сетей.

DaFive 27.01.2012 14:42

Согласен с Astraport. Быстро - это к nodejs.

Андрей911 28.01.2012 10:28

Цитата:

Сообщение от Astraport (Сообщение 1059371)
Насколько я понял по вопросам (А есть ли серверный as?), у автора такие же проблемы как и у меня - не хватает знаний. Но тем не менее, я сделал рилтайм мультиплеерную игру на nodejs за пару недель из которых неделю я мучился из-за проблем бесплатного хостинга (провайдер закрыл фаерволом 843 порт по которому флэшу передается файл политики безопасности). Мне здесь пару раз помогали по игре.

Тоже интересует эта тема. А какое программное обеспечение надо ставить на сервере для nodejs? Дистрибутивы есть и под Windows и под Linux? Сколько пользователей в онлайн одновременно мог держать ваш сервер?

Astraport 28.01.2012 12:56

Цитата:

А какое программное обеспечение надо ставить на сервере для nodejs?
Есть много ссылок на материалы в сети, на том же Хабре по русски с подробным описанием установки.
Цитата:

Дистрибутивы есть и под Windows и под Linux?
Да.
Цитата:

Сколько пользователей в онлайн одновременно мог держать ваш сервер?
Понятия не имею, т. к. не дошел до продакшена. Сделал прототип и успокоился:) Но, говорят, что все хорошо особенно если используете websockets.

Jarproger 28.01.2012 16:29

nodejs я не вижу смысла изучать, т.к. если другой язык для серверной части - то мне кажется, лучше подойдёт ява. nodejs на javascrip написан, а я думал, может можно те же классы экшнскрипта использовать и на сервере, чтобы не дублировать один и тот же код на двух языках. Сериализация здесь не подойдёт.

В отношении хостинга - я буду покупать VDS на sweb. Думаю, что для небольшого количества игроков потянет без лагов.

Андрей911 28.01.2012 18:39

Цитата:

Сообщение от Jarproger (Сообщение 1059617)
В отношении хостинга - я буду покупать VDS на sweb. Думаю, что для небольшого количества игроков потянет без лагов.

http://hosting101.ru/spaceweb.ru

Добавлено через 14 часов 14 минут
Кстати, у меня тут идея возникла. Если вместо одного VDS использовать 10 shared хостингов. Не лучше ли это будет в плане производительности? По цене получается одинаково. А так 10 различных IP адресов, плюс задача раскидывается по различным машинам. Кто-нибудь такое пробовал? Поделитесь впечатлениями.

Genzo 30.01.2012 11:21

Цитата:

может можно те же классы экшнскрипта использовать и на сервере, чтобы не дублировать один и тот же код на двух языках. Сериализация здесь не подойдёт.
И как вы представляете себе это? Я пошлю вашему серверу совершенно любой класс и он будет с ним работать? .. Тут уж лучше, пусть он знает какие классы есть. рекомендую почитать про AMFPhp и думать в сторону интеграции оного с явой.


Часовой пояс GMT +4, время: 16:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.