Создание игр для мобильных телефонов - Майкл Моррисон
Шрифт:
Интервал:
Закладка:
Ниже приведены действия, которые необходимо выполнить, чтобы превратить игру High Seas 2 в вестерн:
1. замените всю графику игры темой пустыни;
2. если хотите, переделайте карту, чтобы привнести в игру новый дух;
3. измените спрайт взрывчатки (мины) и спрайт ящика с провизией (бочка), чтобы для их создания использовался класс Sprite, а не DriftSprite (эти объекты не могут перемещаться);
4. добавьте новый спрайт гром-птицы, который будет являться объектом класса ChaseSprite. Убедитесь, что при инициализации вместо слоя-барьера передается значение null – это необходимо потому, что птица может беспрепятственно перемещаться по карте.
Странно, но это все, что необходимо сделать, чтобы полностью изменить игру High Seas 2. Очевидно, что придется переработать всю графику, но удивительно, насколько мало кодов необходимо для превращения High Seas 2 в совершенно новую игру.
Часть IV Использование преимуществ работы в сети
Глава 14 Основы сетевых мобильных игр
...Архив Аркад
Другой яркий представитель игр 1982 года – Pole Position – это одна из первых гоночных игр, которая стала очень популярной. Несмотря на то что игра была разработана Namco, за релиз в Америке игру лицензировала компания Atari. Pole Position была создана в двух версиях: как для игры стоя, так и сидя. В последнем случае были предусмотрены педаль газа и тормоза, в другой версии игры была только педаль газа. При переговорах с Namco компания Bally/Midway выбрала игру Mappy, а Atari взяла, что осталось. В результате небольших доработок в 1983 году игра Pole Position стала хитом и теперь считается классикой аркад.
В главе 13 вы узнали о том, как компьютер может противостоять человеку в игре. Несмотря на то что искусственный интеллект очень важен в играх и применяется широко, сложно недооценить и человеческий фактор в сетевых играх. В этой главе будут рассмотрены сетевые игры, их важность в сегодняшнем игровом мире. Поскольку мобильные телефоны разработаны для коммуникации между людьми, в вашем распоряжении есть среда для сетевых игр. Существует ряд свойственных для сетевых игр проблем, с которыми вам придется столкнуться на этапе проектирования и разработки. В этой главе рассматривается большинство этих проблем, а также методов их решения. Прочитав эту главу, вы будете готовы к созданию собственной сетевой игры с помощью J2ME.
В этой главе вы узнаете:
► об основах создания сетевых мобильных игр;
► о фундаментальных типах сетевых мобильных игр;
► о проблемах, свойственных сетевым играм, и методах их решения;
► как использовать MIDP API для создания беспроводных соединений;
► как создать программу, с помощью которой можно общаться, используя азбуку Морзе.
Основы сетевых игр
Если вам когда-либо доводилось играть в сетевую игру со своими друзьями, то вы знаете, как это весело! В самом деле, игра с живым человеком намного интереснее игры против компьютера. Идея, что в игре предстоит соревноваться с человеком, может в корне изменить взгляд на игру. В сетевых играх есть множество способов заставить игроков соревноваться друг с другом или играть в команде. Вне зависимости от сценария, если в игре принимают участие живые люди, то игра становится намного интереснее, поскольку реакция соперников может быть оригинальной и нестандартной, что невозможно с компьютерными оппонентами. Теперь разработчикам, таким как вы и я, остается решить, как именно люди будут взаимодействовать в игре. А теперь взгляните на уникальность сетевой игры через мобильный телефон. Это именно то, чего мы ожидаем, когда слышим разговоры о «беспроводной революции», ведущиеся на протяжении последних нескольких лет.
Перед тем как перейти к разработке стратегии сетевой игры, важно познакомиться с фундаментальными типами таких игр. Разработка соединения сильно зависит от того, как происходит игра, что определяется типом игры. Мобильные сетевые игры можно разделить на две большие категории: пошаговые игры и игры, основанные на событиях. Большинство игр можно с легкостью отнести в одну из этих категорий.
Пошаговые игры
Пошаговые игры – это игры, в которых действия – это шаги игрока. Классические шашки, шахматы, нарды – это хороший пример пошаговых игр, поскольку в них вы можете предпринимать действия, когда остальные игроки сделают ходы. Конечно, вы можете обдумывать свой ход в то время, пока другой игрок совершает свой, однако игра такова, что сделать вы его сможете в свою очередь.
Большинство пошаговых игр – это или настольные игры, или карты, или простые игры, в которые можно играть на бумаге, например, крестики-нолики. Несмотря на то что действия разворачиваются достаточно медленно, эти игры очень популярны и хорошо подходят для сетевой игры.
Если принять во внимание, что в пошаговых играх игроки ходят по очереди, то сетевое соединение значительно упрощается. В каждый момент времени играет лишь один игрок. Даже несмотря на то что в игре принимают участие несколько игроков, ход может сделать лишь один игрок. Другие игроки должны ждать своей очереди. В этом случае игру можно сделать так, чтобы все игроки находились в режиме ожидания до тех пор, пока не придет их очередь совершать ходы. В игре, в которой принимают участие лишь 2 игрока, например, как рассмотренной в главе 4, право хода переходит от одного игрока к другому.
Игры, основанные на событиях
Игры, основанные на событиях, – это такие игры, которые управляются входящими событиями, которые могут произойти в любой момент. Такие игры менее ограничены временем по сравнению с пошаговыми играми. В этих играх любой игрок может взаимодействовать с игрой в любой момент времени – это события игры. Развитие игры определяется событиями, а не шагами. На самом деле в играх, основанных на событиях, нет понятия «шаг». Под определение «игры, основанные на событиях», попадают все игры, в которых отсутствует понятие «шаг», и таких примеров очень много – от классических «стрелялок» до стратегических симуляторов, например, «Век империй» (Age of Empires). В сетевых версиях этих игр любой игрок может действовать независимо от других игроков, создавая или не создавая новые события.
Разработка сетевого соединения для игр, основанных на событиях, значительно сложнее, чем для пошаговых игр. Важно то, что игры, основанные на событиях, требуют значительно большей пропускной способности соединения, поскольку необходимо обновлять информацию. Можно сказать, что каждая созданная вами игра, основанная на событиях, будет уникальна, поскольку при разработке соединения вам придется реализовывать нестандартные подходы. Вспомните игры Doom 3 и Halo 2 и подумайте, сколько действий в них происходит, и, что еще более важно, насколько быстро они происходят. Любое изменение в игре, вносимое каждым из игроков, должно быть отражено для других игроков в том же виде.
...В копилку Игрока
Поскольку пропускная способность соединения в играх, основанных на событиях, чрезвычайно важна, то вопрос разработки таких игр для мобильных телефонов очень сложен. С ростом скоростей мобильных сетей, разработка таких игр будет упрощаться, однако считается, что создание эффективного сетевого кода – это один из самых трудных аспектов разработки игр, и еще более трудный с точки зрения создания мобильных сетевых игр.
Игра, основанная на событиях, никогда не «разрешает» игроку делать все что угодно, как это происходит в пошаговых играх. Игра ждет, пока игрок сгенерирует какое-нибудь событие. Игроки могут создавать события так часто, как это требуется, независимо от других игроков. Так вы можете ждать за углом, пока другой игрок пробегает мимо с большой скоростью.
Сетевые игры. Проблемы и решения
Теперь вы знаете, с каким типом игр имеете дело, поэтому рассмотрим проблемы, с которыми вы можете столкнуться при разработке сетевых игр. Одна из главных проблем при разработке сетевых игр – это обеспечение синхронизации. Под синхронизацией понимается, сколько образов игры может быть запущено на различных телефонах одновременно. Помните, что каждый игрок запускает образ на своем телефоне, при этом вашей целью является обеспечение синхронности обмена данными, чтобы все игроки чувствовали себя частью игры. Все структуры информации, отвечающие за состояние игры, должны быть одинаковы для каждого из образов.
Чтобы лучше понять, о чем идет речь, рассмотрим, что может случиться, если синхронизация будет утеряна. Предположим, что два человека играют в сетевую игру, аналогичную популярной игре Diablo. Например, они бегут вместе. Пробегая мимо демона, более агрессивный игрок 1 начинает с ним сражаться. У игрока 2 мало энергии, и он решает отойти в сторону и понаблюдать. Когда игрок 1 заканчивает борьбу с демоном, игрок 2 должен быть уведомлен об этом. И не только с точки зрения удобства: все изменения в игре должны быть отражены и для прочих игроков.