1.5. Какие игры для Xbox 360 можно делать Важно понимать, что процесс создания игры – это очень трудоемкое дело, отнимающее огромное количество времени из жизни тех людей, которые делают эту работу. Самому в одиночку создать полноценную игру фактически нереально, тем более при всех нынешних технологиях и требованиях к графической картинке. Никогда не пытайтесь в своем первом проекте делать игры плана Gears of War или Need for Speed! Нельзя откусить больше, чем можно прожевать, не говоря уже о том, что все откушенное нужно проглотить, да еще и не поперхнуться. Создание таких больших и мощных игр – это удел игровых студий с огромным штатом программистов, художников, дизайнеров, аниматоров, модельеров… Если вы в одиночку или небольшим коллективом решите создавать нечто подобное, то, скорее всего, ваш проект растянется на долгие, долгие годы работы, а за это время все ваши графические инновации станут просто неактуальными. Эта аксиома проверена временем, а ее несоблюдение сгубило уже множество коллективов и программистоводиночек. Тогда возникает вопрос: а что же можно программировать? Чаще всего программисты-одиночки или коллективы единомышленников создают небольшие и так называемые аркадные игры, стоимость которых составляет не более пары десятков долларов. Набив руку на этом поприще и небольших проектах, эти самые коллективы либо перерастают в более мощные игровые студии, либо сотрудники фирмы находят себе хорошую работу в стане сильных компаний. Корпорация Microsoft готова поддержать в этом плане ваш проект. Главное – это инновация и интересность игры. Как показывает практика, очень много простых игр продаются с Xbox Live Arcade, и пользуются эти игры огромной популярностью. Стоимость этих игр небольшая (в среднем от 150 до 450 рублей), и практически любой пользователь сервиса может позволить себе купить одну-две и более игры. Если вы имеете идею или готовый проект, то вам необходимо зайти на сайт компании Microsoft по адресу в Интернете http://www.microsoftcasualgames.com и ознакомиться с предъявляемыми требованиями (рис. 1.28). Свою же задачу в этой книге я вижу в том, чтобы дать вам необходимый запас знаний для старта и толчок в реализации своих идей, все остальное зависит исключительно от вас…
Рис. 1.28. Сайт MicrosoftCasualGames.com 1.6. Этап проектирования игры Это очень важный и главный этап работы над игрой. На этой стадии необходимо решить массу различных организационных вопросов и выработать общую концепцию игры, создать документацию к игре, проработать дизайн уровней, персонажей, спроектировать игровую модель, сформировать набор игровых классов, разделить проектные задания среди персонала и многое другое. По этой теме написано немало книг, но у нас есть одна небольшая проблема. Дело в том, что вы не умеете программировать игры и до сих пор не сделали ни одной игры. Вы не имее- те представления о том, как устроен каркас игровых классов, что нужно сделать для того, чтобы загрузить в игру графику и т. д. Поэтому для книги была придумана своя модель реализации игр. Вместо большого этапа проектирования игры мы с вами в каждой последую- щей главе строка за строкой будем писать исходный код игры. Наш каждый следующий проект будет модернизировать предыдущий. Например, в двухмерной игре мы сначала создадим пустой проект. Загрузим в игру простое графическое изображение, нарисуем его на экране. Создадим анимацию, увеличим на экране количество изображений, добавим фон, рассмотрим работу с джойстиком. Изучим механизм игровых столкновений, добавим в игру меню и заставки и в итоге создадим своими руками простую двухмерную игру, а весь процесс работы над игрой станет для вас простым учебным пособием, изучив которое вы в дальнейшем сможете создавать свои проекты. Что касается серьезного подхода в этапе проектирования игры, а также составления необходимой документации к игре, то могу вам порекомендовать интересные материалы на эту тему. В первую очередь это, конечно, книги по данной тематике, которые можно найти в любых магазинах, но, пожалуй, самое главное, что можно посоветовать по этой теме, – это документация от ведущих отечественных компаний – разработчиков игр. Не поленитесь и зайдите на сайт компании 1C в раздел Разработчикам. На этой странице сайта для свободного скачивания доступен потрясающий набор документации, рассказывающий о том, как правильно можно создать дизайндокумент для игры, с чего лучше начать, как лучше всего представить свою игру издателю и т. д. Это просто потрясающая подборка материала, которая проверена жизнью. Аналогичная документация имеется на сайтах компаний Бука и Alawar.ru. Это лучшее, что можно порекомендовать вам в этом плане. 1.7. Двухмерная игра Теперь несколько поясняющих слов об идее двухмерной игры. Основной задачей игры является разностороннее изучение способов работы с двухмерной графикой. В этом контексте базовой идеей для игры послужили игры, где пользователь должен ловить некоторые предметы, падающие с неба. За каждый такой пойманный объект пользователю начисляются очки. Дополнительно с неба падают объекты, которые ловить не нужно, за столкновение с такими объектами очки, соответственно, отнимаются. По достижении определенного порога очков пользователь переходит на следующий уровень. Это простой показательный пример, с помощью которого мы сможем проследить за сменой игровых состояний, переходом на новые уровни игры, движением объектов на экране, анимацией, столкновением, работой с джойстиком и т. д. Главное – разобраться с техникой программирования игр и внутренним механизмом работы платформы XNA. Оформление и антураж игры – также дело личных и коммерческих предпочтений. Предлагаемая идея игры (чтобы вам было нескучно) «одета» в обвертку индейских прерий. Соответственно, игра носит название «Летящие в прерии»… Предположительно, все действия в игре разворачиваются в прериях, над которыми терпит крушение самолет, а люди и предметы с самолета падают с неба. У вас как у игрока имеется ковер-самолет, с помощью которого вы должны спасти как можно больше падающих людей. Ковер перемещается исключительно в нижней части экрана с помощью джойстика, и вам нужно подставить его под падающего человека. Спасли человека – получите очки, набрали потолок очков для текущего уровня – переходите на следующий уровень и т. д. 1.8. Трехмерная игра В трехмерной игре, так же как и в двухмерной, главной задачей является возможность всестороннего рассмотрения методов работы с 3D-моделями и графикой. По большому счету, работать с трехмерной графикой на порядок сложнее, чем с двухмерной, поэтому уровень изучаемой игры невысок, но этого уровня вполне достаточно, чтобы понять, как работать с 3D-графикой и в каком направлении необходимо двигаться дальше. В качестве примера в книге была сделана игра «Футбольный стрелок». Суть игрового процесса этой игры состоит в следующем. Сверху на футбольное поле падают три мячика. Задача игрока заключается в том, чтобы стрелять по мячам (наводя на них мушку) и тем самым подбивать их вверх, не давая ни одному из мячей коснуться футбольного поля. Как только один из мячей касается футбольного поля, то наступает окончание текущего уровня и игроку предлагается переиграть этот уровень заново. Для того чтобы перейти на новый уровень, необходимо подбить каждый из мячей по двадцать раз. Самое интересное заключается в том, что даже если игрок подбил один из мячей двадцать раз, то мяч все равно будет падать на землю, но его приоритетность в подбитии значительно уменьшается. Как только все три мяча будут подбиты по двадцать раз, то считается, что текущий уровень пройден. На новом уровне скорость падения мячей увеличивается. Подробнее о способах реализации игры и используемой графике вы узнаете из третьей части книги, но изучать книгу необходимо строго в хронологическом порядке. 1.9. Исходные коды проектов Я по-прежнему остаюсь сторонником книг, в которых дается полный исходный код рассматриваемого примера. Не всегда удобно, а порой и невозможно иметь под рукой компьютер для просмотра всего примера в целом. Поэтому в книге в каждой главе приводится полный листинг изучаемого в данный момент класса, но поскольку в каждой последующей главе мы модернизируем код, то часть кода методов может не изменяться. В связи с этим в некоторых главах код этих методов может быть вырезан за ненадобностью. Плюс все нововведения в коде выделяются жирным шрифтом, чтобы вам было проще следить за изменениями в проекте. Дадее>>