Player.IO. Введение

Прежде чем мы начнем разбирать теорию и примеры создания сетевых игр, давайте выясним Зачем и главное Что нужно для создания онлайн игры.

Первым делом хотелось бы немного рассказать вам о том, зачем вообще создавать многопользовательские игры. Вот как вы думаете, стоит ли делать многопользовательский режим в вашей игре? Определенно стоит! Ведь многопользовательская игра — это азарт, динамика, увлечение, вызов, новый опыт и многое другое, что заставляет играть в вашу игру вновь и вновь!

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

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

Если вы когда-либо хоть на минуту задумывались об эволюции многопользовательских игр, то должны были бы заметить, что это удивительно. Давно прошли те дни, когда вы нуждались в личных встречах с друзьями, чтобы играть в игры. Сравните атмосферу современных «онлайн за 5 минут» с играми из прошлого. Не знакомые люди теперь более доступны, чем когда-либо. Вы можете поиграть с людьми со всего мира, тогда когда вам будет это удобно, и вам не придется ждать, пока ваш лучший друг закончит все свои дела и придет к вам в гости, чтобы поиграть с вами.

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

Что необходимо для создания многопользовательской игры?

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

Все примеры в этом уроке будут использовать Action Script 3 и будут создаваться в CS4. Если вы знаете только AS2, не волнуйтесь, так как кода будет не так много и он должен быть понятен вам. В любом случае вы не сможете бесконечно избегать AS3 и возможно сейчас у вас отличный повод, чтобы наконец перейти на новую версию языка.

Раньше Flash не имел возможности подключаться к другим клиентам (другим себе подобным флешкам) в ?нтернет без использования сервера. Но с приходом Flash Player 10 у Flash появился P2P (Peer-To-Peer), то есть теперь можно создавать сетевые игры без сервера. Но, не смотря на такую отличную возможность использовать прямые соеденения без каких-либо дополнительных инструментов и ресурсов, мы сделаем основной упор на клиент-серверную архитектуру сетевых игр. Возможно вы спросите почему? Ответы не заставят себя долго ждать и скоро вы узнаете почему клиент-серверая технология лучше и надежнее.

Таким образом, получается, что первым делом нам необходимо настроить сервер. Но сервер — это целая технология и без некоторых знаний тут не обойтись. Необходимость установки и настройки сервера может стать большим препятствием для разработчиков, чтобы создать многопользовательскую игру, не говоря уже о начинающих разработчиках.

Сервер

Аренда или даже покупка внешнего сервера — это неприлично дорого для начинающего разработчика. Вы должны управлять им, быть уверенными всегда, что он не упал, защищать его от нападения, управлять сетевыми ресурсами в зависимости от популярности и выгоды игры, контролировать уровень связи и т.п.

В общем, как инди-разработчики, мы не хотим иметь и содержать собственный сервер, особенно в начале пути разработки многопользовательских игр. ? так у нас два варианта: мы должны установить и настроить серверное оборудование с подключением к ?нтернет или нанять кого-то, чтобы это сделали за нас, и это потребовало минимум времени и денег. ? тут к нам на помощь приходит Player.IO, который предлагает нам серверы и предоставляет API для работы с ними, с помощью которого можно создавать любые многопользовательские игры. Player.IO позаботится о всех нагрузках и управлении без вашего участия, что делает его идеальным для использования в инди-разработке. ?спользование Player.IO уменьшает количество забот возлагаемых на нас, и это отличный повод, чтобы выбрать его.

Player.IO

Player.IO — это, конечно, платный сервис, но даже бесплатный аккаунт позволяет создать многопользовательскую игру с 500 одновременно подключенными игроками и небольшими ограничениями на траффик. Таким образом, вам не нужно никаких денежных средств, чтобы начать разработку. Ну, а если ваша игра пойдет хорошо и вы упретесь в лимиты бесплатного аккаунта, то в таком случае вы сможете позволить себе уже платнный аккаунт, ведь игра пошла!

?спользование API

Уверен, вам интересно знать, как использовать API Player.IO. Чтобы приступить к работе вам нужно несколько простых вещей. Первое, мы должны загрузить девелоперский SDK Player.IO с сайта playerio.com. В SDK включены все необходимые шаблоны для создания и запуска своего тестового сервера локально, который позволит без лишних действий тестировать и отлаживать игру.

Скачать SDK

Сохраните архив, где вам удобно, и распакуйте его, чтобы увидеть содержимое. Не обращайте пока внимание на вложенные папки кроме папки «NewGame». Зайдите в папку «NewGame» — здесь находится готовый шаблон для нашей будущей игры.

В папке «NewGame» вы должны увидеть две папки и два файла. Эти папки и файлы содержат весь необходимый код для эмуляции многопользовательской игры, используя компьютер в качестве виртуального сервера. То есть вы можете проверить работу игры без подключения к внешнему серверу, хотя авторизация и подключение к серверу Player.IO все же потребуется.

Первая папка «Flash» содержит все исходники вашего проекта, тут не должно быть для вас каких-либо сюрпризов.

А вот со второй папкой «Serverside Code» нам следует познакомиться более подробно, так как здесь для нас больше всего нового и непонятного.

Serverside Code

Сервер не является какой-то пустышкой и имеет много обязанностей. Чтобы наш сервер работал так, как мы хотим, мы должны написать для него соотвествующий код. Но, к сожалению, мы не можем использовать ActionScript для программирования сервера, так как он совершенно не подходит для такой задачи. Вместо этого мы должны использовать более полноценные языки. Player.IO использует C#, поскольку этот язык хорошо подходит для серверного приложения, и его синтаксис очень похож на AS3.

Сравнение синтаксиса AS3 и C#

Сравнение синтаксиса AS3 и C#.

Если вы боитесь или не желаете изучать C#, то, к сожалению, вынужден признать, что у вас не получится разрабатывать многопользовательские игры на клиент-серверной архитектуре. Впрочем с использованием Player.IO вы можете создавать и P2P соеденения без написания серверного кода. Поэтому если вы отчаялись, то не спешите закрывать это обучение, все самое интересное еще впереди!

Разработка с C#

Так же как и во Flash, у C# есть своя среда разработки Microsoft Visual Studio 2010 Express. Загрузить её вы можете здесь... (Visual C# 2010 Express). Не переживайте, это совершенно бесплатно!

Внимание! Чтобы получить бесплатный лицензионный ключ, необходимо скачать Visual C# Express и пройти бесплатную регистрацию на сайте. Чтобы пройти регистрацию вам понадобится учетная запись Live. Если вы планируете в будущем использовать Windows8, то я вам рекомендую отнестись внимательно к созданию аккаута Live, т.к. в Windows8 невозможно использовать без Live аккаунта, так что он вам пригодится.

Как только вы все установите, вернитесь в нашу папку «NewGame» и откройте проект C# под названием «Serverside Code.VS2010.sln». Это позволит вам открыть только нужные файлы проекта сервера, и вы увидете шаблон сервера Player.IO. Вообще, вам никогда не потребуется работать с файлами сервера на прямую.

Откройте «Game.cs» из Solution Explorer справа, и вы увидете закоментированный код. Без паники! Шаблон на самом деле очень простой. Но позже, в уроке, мы рассмотрим еще более простой шаблон.

Прочитайте комментарии в коде и определите основные функции:

  • GameStarted() — эквивалентна функции init() или onLoad() во Flash;
  • GotMessage() — вызывается, когда сервер получает информацию от клиента (игрока);
  • UserJoined() и UserLeft() — вызываются, когда игрок подключился или отключился соотвественно. Это основные функции-инструменты необходимые для создания многопользовательского сервера.

Дополнительную документацию для Player.IO под C# можно найти здесь... Документация даст наиболее подробную информацию о том, как это все работает, а так же перечень и описание всех функций, которые вы можете использовать. Хотя в любом случае я буду рассказывать обо всех важных моментах на примерах.

Когда вы будете готовы для запуска тестового сервера, просто нажмите на зеленую стрелку вверху окна. Если вы запускаете сервер впервые, то скорее всего вы увидете окно логина Player.IO. Да, не смотря на то, что сервер будет работать локально, необходима авторизация на сервере Player.IO и подключение к ?нтернет соотвественно. После авторизации вы увидете диалоговое окно (консоль), которое означает, что сервер запущен и ждет вашей игры для подключения. Теперь зайдите в папку Flash, откройте пример «MyGame.fla» и попробуйте скомпилировать его. Если все сделано правильно, то вы должны увидеть, как Flash приложение отправляет сообщения на сервер и получает их обратно, индикацию о подключениях или об ошибках вы должны увидеть в консоли сервера и в окне output Flash.

Это собственно и есть простой пример из разряда «Как это работает?».

Если вы хотите увидеть все методы Player.IO API, то загляните на страничку онлайн документации... Так же Player.IO имеет отличную вводную информацию...

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

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

Это вольный перевод статьи «Building Flash Multiplayer Games — Introduction».

Содержание

  1. Как создать онлайн игру? Анонс
  2. Player.IO. Введение
  3. Player.IO. Основы или первая онлайн игра
  4. Player.IO. Пошаговые игры
  5. Player.IO. Сетевые архитектуры
  6. Player.IO. Безопасность в онлайн играх
  7. Player.IO. Пример пошаговой игры
  8. Player.IO. Онлайн игры в реальном времени
  9. Player.IO. Синхронизация игроков
  10. Player.IO. ?нтерполяция или удивительный мир обмана
  11. Player.IO. Решение проблемы задержек
  12. Player.IO. Советы и рекомендации

 

 

ты тавер дефенс свою доделал или только уроки к ней писал? :)

qwe
12 Октября 2012
— 07:23
#

он уроки писал

антон
12 Октября 2012
— 07:42
#

Начал думать о мп играх, задумался над идеей создания онлайн игры, с простыми правилами и управением, чтобы в неё одновременно могли играть и флэшеры (mac, pc) и смартфонеры (anroid, iphone e.tc). ?нтересно насколько эта идея перспективна и сложна в реализации?

Виталий
12 Октября 2012
— 09:45
#

> только уроки к ней писал

Печально

Геннадий
12 Октября 2012
— 10:56
#

ждемс продолжения

Леха
12 Октября 2012
— 11:01
#

Спасибо за уроки, очень полезная тема.

Pavel
12 Октября 2012
— 11:28
#

Спасибо большое. Жаль сейчас нету времени это всё опробовать но в не далёком будущем я надеюсь поклацать и потестить. Возник вопрос.. Другие языки кроме С# не поддерживаются? Например джава? Не очень люблю экспресс студию... Ещё раз спасибо за проделанную работу!

flahhi
12 Октября 2012
— 14:21
#

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

Player.IO имеет так же API для Unity3D, а как нам известно Unity — это мультиплатформенная штука, поэтому возможно вам следует обратить внимание на Unity.

Ant.Karlov
12 Октября 2012
— 16:16
#

@flahhi, как я понял из материала и информации на сайте, Player.IO для серверного кода использует только C#. Весь серверный код компилируется в *.dll которая закачивается на сайт и выполняется в «облаке». Поэтому мне кажется что с Player.IO без C# никак не обойтись. Но если очень хочется без C#, то вы можете заморочится своим сервером либо использовать P2P соединения даже с Player.IO.

Ant.Karlov
12 Октября 2012
— 16:19
#

to ---> flahhi

http://monodevelop.com/

IDE primarily designed for C# and other .NET languages. MonoDevelop enables developers to quickly write desktop and ASP.NET Web applications on Linux, Windows and Mac OSX.

и.о. Капитан Очевидность
12 Октября 2012
— 17:08
#

@и.о. Капитан Очевидность, я пробовал MonoDevelop (собственно на скриншоте в статье видно ассоциацию файлов sln с MonoDevelop). ? хочется отметить, что сервер в нем работает как-то не очень полноценно. В MonoDevelop не открывается окно с Player.IO консолью, не видно какие игровые комнаты открыты и соотвественно недоступны отдельные логи для самих комнат. Доступна только общая консоль сервера которая выводится в общий output MonoDevelop. То есть выходит так, что и визуализацию того что творится на сервере невозможно сделать с MonoDevelop.

Может быть я что-то не настроил или что-то сделал не так. Но в общем пришлось мне ставить Windows виртуально и работать с Visual #C.

Если знаете как настроить MonoDevelop чтобы после компиляции сервера все соответствовало тому как это выглядит в Visual Studio — буду очень благодарен! :)

Ant.Karlov
12 Октября 2012
— 18:08
#

Эээ нет, уж лучше студия чем свой сервер :) Тем более что я уже с ним косвенно знаком... Просто я надеялся, что "а врдруг"))) А вот с P2P тоже стоит разобраться. Спасибо за ответы.

flahhi
12 Октября 2012
— 19:04
#

Сделал как сказано в уроке:
1)Скачал Microsoft Visual C# 2010 express
2)Открыл Serverside Code.VS2010.sln
3)Запустил сервак
4)Открыл MyGame.fla
5)Скомпилировал и на экране выдало-Unable to connect to server
Я что то пропустил?

Пятачок
12 Октября 2012
— 20:35
#

Все разобрался, надо было создать новую игру на сайте playerio.com и получить ID игры.
? ввести его в MyGame.as

Пятачок
12 Октября 2012
— 20:46
#

Game ID:

создайте на сайте http://playerio.com
новую игру и в файле
MyGame.as
замените
[Enter your game id here]
на ваш
Game ID

и.о. Капитан Очевидность
12 Октября 2012
— 20:47
#

=)

и.о. Капитан Очевидность
12 Октября 2012
— 20:47
#

и понеслись по стране многопользовательские флэхи))

За труд большое спасибо

Komizart
12 Октября 2012
— 21:19
#

Что касается связки MonoDevelop + Player.IO, то на официальном форуме Player.IO для мак пользователей рекомендуют использовать виртуальную машину с Win и Visual Studio. А с MonoDevelop, судя по форуму, не у всех все адекватно работает и саппорт пишет, что MonoDevelop и их API в какой-то эксперементальной связке. Не очень понимаю что это имеется в виду, но мне кажется, что из этого ничего хорошего не получится.

Ant.Karlov
12 Октября 2012
— 22:44
#

Похоже что есть какие-то моменты которые надо отплясывать с бубном.
=
Моно в первую очередь под хамарин точат, а уже потом дальше.

и.о. Капитан Очевидность
12 Октября 2012
— 23:03
#

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

Роман Радьевич
13 Октября 2012
— 22:37
#

У меня не очень с английским, видимо поэтому я не смогу найти расценки на "платный аккаунт")
Не мог бы ктонить тыкнуть пальцем?

red penguin
15 Октября 2012
— 14:11
#

red penguin, http://playerio.com/pricing/

informatik2010
15 Октября 2012
— 14:50
#

Пятачок, тоже самое...
подключилось только после того как
создал игру на своем аккаунте player.IO
и вставил в MyGame.as полученный ID игры
в 9ой строке:
"[Enter your game id here]", //Game id

o_OKazan
21 Октября 2012
— 00:00
#

o_OKazan
Привет зема) ICQ 285418290

o_OZainsk
13 Ноября 2012
— 17:02
#

>Windows8 невозможно использовать без Live аккаунта, так что он вам пригодится.<
Тут не согласен. Я уже три месяца живу с Windows8, и не имею Live-аккаунта. Попросту, пользуюсь им как и любой другой Windows, радуя глаз интерфейсом и анимациями.

SuriTheAngel
30 Ноября 2013
— 02:23
#

@SuriTheAngel, я пробовал Windows 8 Preview, и там никак нельзя было залогинится в систему без Live аккаунта. Сейчас может быть сделали эту опцию не обязательной. В общем я могу ошибаться так как с тех пор я больше Windows 8 не видел :)

Ant.Karlov
30 Ноября 2013
— 10:53
#

@Ant.Karlov, как вы оперативно отвечаете на комментарии, я не ожидал. :)
Ну, превьюшка для того и есть, чтобы просто просмотреть интерфейс и функционал.
Но если вы купите Windows 8, а у вас отсутствует подключение к интернету, и вы не сможете пользоваться новой версией Windows. Как вы думаете, сколький убыток потерпит Windows? Естественно, они сделали "Локальная учетная запись", и при желании можно переключиться на Live. Чтобы получить бесплатный C# Visual Studio, сегодня всё же пришлось создать Live аккаунт. Для теста, привязал его к своему компьютеру как учетную запись компьютера.

SuriTheAngel
30 Ноября 2013
— 16:21
#

Вернее "сколький убыток потерпит Microsoft"*

SuriTheAngel
30 Ноября 2013
— 16:25
#

А обязательно Visual Studio 2010? Я вижу 2013, и он мне больше по душе Х)

SuriTheAngel
30 Ноября 2013
— 16:35
#