Как написать многопользовательскую игру на основе веб-браузера? - PullRequest
3 голосов
/ 30 июня 2010

Если бы я захотел написать код для настольной игры, я мог бы взять код XNA и UDP-сокеты и создать приличную многопользовательскую игру. У меня было бы предельно ясно, как кодировать игру, которую я хотел.

Но если бы я захотел написать многопользовательскую онлайн-игру на основе браузера, как бы я это сделал? Вы не можете использовать XNA .... Я смотрю на некоторые вопросы и вижу в качестве альтернативных языков PHP и ASP.NET, а также Silverlight, Flash и Java ... Я действительно не понимаю, как это работает. , Я имею в виду, что для настольной игры вы открываете сокет UDP и принимаете клиентов и передаете данные, обновляете состояния игроков, выводите результаты с использованием XNA. Но в браузере, как открыть сокет и прочее? Как работает эта концепция, общаясь с людьми в режиме реального времени через веб-браузер. Любое направление? Я знаком с C # и почти знаком с Java. Никогда не делал Flash, ASP.NET или Silverlight.

Ответы [ 6 ]

4 голосов
/ 30 июня 2010

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

Игрок 1 имеет космический корабль в локации 34,29. Он давит вперед и уходит в 35,30. Это отправляется на сервер с чем-то вроде AJAX. Другие игроки видят это изменение, когда они запрашивают на веб-сервере местоположения других игроков. Это место должно храниться где-то на этом сервере, чтобы это произошло.

Подумайте о разнице между документами Google и Microsoft Word. Один из них имеет документ на вашем компьютере, другой хранит документ в Интернете, и вы просто взаимодействуете с каким-то удаленным HTTP-сервером.

2 голосов
/ 30 июня 2010

Для пользовательского интерфейса вы, вероятно, получите лучшие результаты с Silverlight или Flash, а затем с Java. Что касается многопользовательского взаимодействия, вы можете использовать веб-сервисы для отправки и получения данных, а не UDP / сокет связи.

Поскольку вы уже знакомы с C #, вы можете использовать эти знания как в Silverlight, так и в веб-сервисах, поэтому учить их немного меньше.

0 голосов
/ 03 сентября 2010

Возможно, вы захотите взглянуть на веб-сокеты в HTML5.В зависимости от того, какую игру вы хотите создать, чистый HTML5 с использованием Canvas и некоторой библиотеки javascript, такой как JQuery, может быть именно тем, что вы ищете.

0 голосов
/ 30 августа 2010

Поскольку вы знакомы с C # и почти не знакомы с Java, мое лучшее предположение будет Unity3D для кода на стороне клиента (который выполняется в браузере) и SmartfoxServer длякод серверной части.

Unity3D - это мощный игровой движок, который можно использовать для создания игр, запускаемых в браузере.Вы можете написать свою игру, используя Javascript или C #. SmartfoxServer - многопользовательский игровой сервер, написанный на Java, который предоставляет простой и гибкий API для общения.

Комбинируя оба, вы можете создавать потрясающие 2D / 3D многопользовательские игры.

0 голосов
/ 30 июня 2010

Когда вы программируете настольную игру, игра находится на компьютере игрока.Когда вы программируете игру на основе веб-браузера, игра НЕ на компьютере игрока, а на ВАШЕМ сервере.Все, что игрок может видеть в своем браузере, это пользовательский интерфейс.Итак, вы должны запрограммировать всю логику своей игры на стороне сервера и только интерфейс на стороне клиента.

Это помогает, если вы думаете о браузере как о мониторе на стероидах.А насчет UDP / сокетов ... в веб-приложениях такого нет, но вы все равно можете использовать асинхронные запросы через AJAX или FLASH (я не совсем уверен, что flash может выполнять Async, но я уверен, что он может).

Итак, вместо потока keyboard -> program -> monitor у вас есть поток keyboard -> browser-scripts -> AJAX request -> server-scripts -> monitor.

0 голосов
/ 30 июня 2010

Существует почти столько же решений, сколько и браузерных игр. Flash может это сделать, это возможно с php и ajax, вы всегда можете использовать Java. Это зависит от того, с чем вы уже знакомы.

...