| ||
Создание игр: game maker 4.2Михаил Новиков, Егор Чухин Мы все учились понемногу Разомнем пальцыВсе люди, покупающие компьютер, делают это не просто так, а с определенной целью и, как правило, этой целью является либо работа, либо отдых после работы. Работать на РС можно разными способами: можно программировать или банально набирать тексты, а к разряду отдыха, безусловно, относятся игры. Но как можно совместить работу и отдых? Конечно, можно описывать игры в каком-нибудь текстовом редакторе, но лучше совмещать по-другому, то есть писать эти самые игры. Какой любитель игр под действием очередной пройденной игры не начинал писать свое творение? Такие истории знакомы многим, но кто после тридцати минут сидения за Basic'ом или Delphi с увесистым описанием этих языков все-таки и на тридцать первую минуту увлеченно продолжал набирать код, да, таких немного, и даже из тех, кто усидел перед серой формой, остается ничтожный процент, так как, почувствовав в себе силы, новоиспеченный кодер, возомнив себя хакером, углублялся в изучение более сложных языков и оставался там навсегда в роли банального программиста. И это отнюдь не плохо, просто написание игр порой становится интересным делом для души, и если не усложнять себе жизнь тяжеловесным кодом, то это сможет прочувствовать даже самый упертый геймер. Итак, мы задались целью написать свою игру, такую, которая могла бы стать интересной не только для тебя, но и для любого другого человека. Но что нам в этом может помочь? Самые бодрые, конечно, могут гордо показать пальцем в сторону Macrоmedia Flash, и я не отрицаю, что на нем можно написать неплохую, а главное, красивую игрушку, но еще в самом начале изучения Flash'а меня отпугнуло от него то, что написанный на Flash'е проект не является свободным и готовым к распространению. Итак, оказавшись на перепутье, начинаешь задумываться, - вроде и жизнь себе усложнять не хочется, но при этом делать что-то надо. Мое решение - это игровой мотор Game Maker, свободно распространяемый в Интернете http://www.cs.uu.nl/~markov/ gmaker/index.html. Оговорюсь заранее, выбор этого мотора - мое сугубо личное решение, и если вас он не устраивает, то я ни к чему вас не обязываю. Итак, вы еще здесь, Game Maker является полностью двумерным движком, но благодаря этому он такой простой и визуально понятный. Вы все еще здесь? Замечательно. Конечно, на Game Maker'e нельзя писать 3D-игры, но для этого существуют другие языки и моторы, зато можно написать практически любую двумерную или псевдотрехмерную игру, и я готов показать это на примере. Итак, какую же игру будем писать, хотя на Game Makere можно писать и программы, но только кому это надо? Так как мы пишем незамысловатую офисную игрушку, я предлагаю не выдумывать сюжет, а просто смастерить минитир. Это уже стал довольно распространенный жанр, и если учесть, что его "рецепта" нет в стандартных приложениях к Game maker, то он становится просто незаменимым опытом для начинающего. К делуНачать писать игру надо, безусловно, с обзора языка, или, как в нашем случае, с обзора движка. На момент написания этой статьи на сайте, указанном выше, появилась новая версия Game maker, а именно версия 4.2, так что тем, кто уже пишет игры на Game maker, возможно, нововведения тоже будут интересны. Нововведений, по сравнению с предыдущей версией, довольно много, самое заметное - это, конечно, измененный интерфейс (в аннотации к новой версии написано, что это облегчает работу). Лично я привыкал довольно долго, но для не привыкшего к старой раскладке все довольно интуитивно, второй, попавшей на глаза, становится функция path, она позволяет задать четкую траекторию следования объекта методом задания промежуточных координат (к этому так быстро привыкаешь, что становится непонятным, как жил без нее раньше), еще одним замечательным нововведением я считаю возможность рисовать til'ами прямо в окне комнаты (room), притом брать tiles прямо из bacgraunda (нарисованного кем-то или вами фона). Существует еще много изменений, которые вы опробуете сами (полный список в файле changes.txt), но нельзя забывать, что наша цель написать простую офисную игрушку, этим и займемся. После открытия Game maker замечаешь, что интерфейс прост и понятен, и любое действие можно сделать как с помощью рук, так и с помощью маленьких иконок в меню. Начнем с того, что придумаем концепцию нашего тира. Там будет: прицел, управляемый мышкой, летающие по экрану соперники - все с разной траекторией и скоростью, а также подсчет очков за меткое попадание во врага. Написать такую игру можно просто и без проблем. Создаем sprite (спрайт) кликом на слове sprites в меню слева, можно нарисовать свой, а можно взять из стандартной библиотеки, нажав на кнопку load sprite, для наших целей я загружу спрайт воздушного шара, - это будет враг, теперь нужен прицел (честно говоря, прицела в библиотеке нет, так что придется рисовать самому). Упомяну, что также можно использовать анимацию (рисовать в любом GIF-редакторе, либо во встроенном в Game maker рисовальщике), лично у меня прицел был похож на кружочек с крестиком внутри, хотя это, конечно, не имеет никакого принципиального значения. Теперь приступим к описанию самого процесса. Конечно, его трудно назвать программированием, так как все, что от нас требуется, - это перетаскивать мышкой контуры иконок действий в одно окно событий в нужном нам порядке, но нельзя забывать, что в Game maker встроен неплохой скриптовый язык, и в написании серьезного проекта без него нельзя обойтись. Хотя для нашего проекта достаточно и визуальных возможностей Game maker. CreateТеперь приступаем к созданию самой игрушки, спрайты у нас уже есть, так что теперь остается создать объекты. Кликаем правой кнопкой мыши по слову objects на левой панели, и выбираем соответственно add object (заметьте, что все созданные объекты, как и спрайты, можно распределять в отдельные папки командой add group), либо нажимаем на ярлычок с картинкой синего мячика. Теперь в появившемся окне действий объекта можно его назвать, но я не стану менять стандартных названий объектов или спрайтов - так проще. Итак, первым созданным объектом будет прицел (следовательно, изначально он назван object0, менять его не будем), теперь выбираем спрайт прицела на закладке Standard в выпадающем меню Sprite. Теперь прицел стал выглядеть как прицел, но чтобы он исполнял роль прицела, которым можно выстрелить, надо: в окне действия step все того же объекта прописать единственный за игру код, который будет отвечать за то, чтобы курсор мыши и центр вашего прицела находились в одной точке, следовательно, если ваш спрайт прицела составляет 32 * 32, а нарисованный в нем центр ровно посередине, то активный конец курсора мыши должен находиться в точке 16 * 16. Открываем закладку code и перетаскиваем в окно действия ярлычок с нарисованным листом бумаги и в появившемся окне пишем: { Теперь координата клика курсора равна координате выстрела прицела, но на экране нам совершенно не нужны и курсор, и прицел, поэтому в разделе game options на закладке graphics снимаем галочку с display the cursor, теперь прицел чист и двигается в такт невидимому курсору. Далее добавляем объект соперников аналогично примеру прицела и присваиваем ему название спрайт воздушного шара. В событие create объекта врага из закладки move перетаскиваем ярлычок с двумя черными крестиками и красной стрелкой между ними (jump to a given position), затем в строке с заглавием х: пишем random(500), а в строке y: random (400- ), это значит, что появляться шар будет где-то в пределах этих значений на случайном расстоянии, конечно, можно вписать любые числа, но поскольку стандартная размерность комнаты в игре 640x480, а менять ее нет смысла, то мы точно будем знать, что объект не появится за границами формы. После этого в том же окне create перетаскиваем иконку с девятью красными стрелками (start moving in a direction), внутри нажимаем на все кнопки со стрелками, теперь при рождении соперник будет двигаться в одну из этих сторон, а в графе speed: поставьте random(4).Для разнообразия можно нарисовать случайную траекторию в разделе path и указать, что какой-нибудь случайный шар будет двигаться со случайной скоростью именно по этой кривой. Теперь у нас есть враги, есть прицел, а чтобы прицел стрелял, нужно в событие clik left button воздушного шара из закладки object перетащить ярлык с мусорным ведром (destroy the instance), а из закладки Misc вставить ярлык с зеленой надписью set the score, в строке вписать "1" и поставить галочку у relative, мы получаем, что при каждом удачном "выстреле" прицела будет прибавляться одно очко. Далее все в том же шаре в событие outside вставляем ярлык со стрелкой, оттолкнувшейся от стены (чтобы враги не улетали за зону видимости), ничего не меняя, закрываем выпавшее меню и переходим в событие destroy и из закладки object перетягиваем самую верхнюю иконку (Create object), в появившемся окне в строке object выбираем наш шар, а в графах x и y вписываем все те же случайные координаты от пятисот и от четырехсот. Итак, игра закончена: прицел стреляет, враги летают, очки считаются, осталось только вставить все это на форму, и игра готова, кликаете правой кнопкой мыши по слову rooms на левой панели и выбираете add room, появляется "комната", которая является вашим игровым полигоном, затем выбираете закладку objects и в выпадающем меню снизу ставите нужный вам объект. Далее простым кликом по форме вставляете объект в нужное место, не забудьте добавить прицел, теперь нажимаем f5 или кликаем по зеленому треугольнику, и если после загрузки все работает, можете радоваться, что сами написали игру. Как видите, это совсем не сложно, притом, что мы еще не использовали музыку, а показать Game maker во всей красе может только сбалансированное использование всех качеств движка. EndМногие отрицательно смотрят на уже готовые движки, но если скрыть характерные черты Game Maker'проектов, то можно даже выдать его за написанный на С и при этом обязательно упомянуть, как это было тяжело. Game maker, безусловно, интересный "игровой мотор", хотя он и не тянет для некоторых целей, но все-таки то, что можно на нем сделать, делается просто и без лишних проблем. Источник: "Компьютер Price", http://www.comprice.ru
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |