Что бы не засорять форум,решил создать отдельную тему,куда я и буду выкладываь свои уроки.
Урок 1.
Что же,в этом уроке мы расмотрим как сделать стрелялку с видом сверху.Мы будем управлять некой турелью,и отстреливать врагов.Это будет что то похожее на тдс,но не совсем то.
ЧТо же,приступим.Первым нашим обьектом будет турель(башня,пушка,кто как называет).Создаем обьект и подписываем его objTower.Наша цель сделать так,что бы она повырачивалась вслед за мышью.Для этого в событии Step у нашего обьекта прописуем код:
Code
image_angle=point_direction(x,y,mouse_x,mouse_y)
Проверяем.Башня поварачивает вслед за мышью.
Теперь создадим обьект ObjBul,который будет являться пулей для нашей башни. в событии Create у него прописуем:
Таким образом мы задали начальные координаты для нашей пули,а также скорость.ТЕперь нужно сделать,Что бы наша пуля стреляла.для этого нам неробходимо в Событии Global Mouse Left button(или в любом другом событии с нажатием клавиш)у обьекта objTower прописать код:
Code
instance_create(x,y,objBul)
Но как вы можете заметить,Что при удержании левой кнопки мыши пули летят безперерывно.Исправим это.В событии Create у objTower пропишим строчку кода
Code
shoot=1
Тоесть,если shoot=1,то стрелять можно,в любои другом случае-нет.А в событии Global Mouse Left button пропишим такой код:
Code
if shoot=1 {instance_create(x,y,objBul) shoot = 0 alarm[0]=20}
Рассмотрим его.Его можно перевести в принципе до словно.Этот код звучит как:
Если shoot=1(стрелять можно) {создаем обьект стрелять нельзя будильник[0]=20 шагов}
А в Alarm'e[0] прописываем
Code
shoot = 1
Тоесть,таким образом мы создалм некую перезарядку,которая позваляет стрелять не меньше,чем через каждые 20 шагов.
ТЕперь противники.Создадим самых тупых ИИ,которые будут просто двигаться на вас.Пускай это будет так.Обьект назовем objEnemy.
Что бы наш танк поварачивал в сторону нас. ВНИМВНИЕ!Что бы это работало првильно необходимо,что бы лицевая сторона спрайта смотрела в право!Это же касается и нашей башни!
А в событии столкновения с башней и пулей пишем:
Code
instance_destroy()
Теперь создадим контроллер,который будет саздовать нам наших противников через определенное количиство шагов.
Назовем обьект contr.
В событии Create Пишем:
Code
instance_create(680,100,objEnemy)
alarm[0] = 30
Тоесть,мы задали действие создать обьект врага,с координатами 680,100(тоесть если размер вашего "полигона" 640 на 480,то противик будет создаваться за пределами экрана,и двигаться на вас.
В Alarm0 прописываем
Code
instance_create(680,200,objEnemy)
alarm[1] = 30
В Alarm1
Code
instance_create(680,300,objEnemy)
alarm[2] = 30
Alarm2
Code
instance_create(680,400,objEnemy)
alarm[3] = 30
И в Alarm3
Code
instance_create(680,500,objEnemy)
alarm[0] = 30
Заметте,что в последнем нашем действии мы заводим будильник 0,что будет производить все что мы написали снова и снова. Теперь добавляем обьект contr в нашу комнату.Тоесть,таким образом у нас изначально в комнате два обьекта контроллер и башня,а все остальные создаются в ходе игры.Ну что же,основа готова.Теперь вам необходимо лишь пофантазировать,что бы из всего этого собрать полноценную игру.Удачи!
Урок 2Простой АИ для ТДС.Исключительно для новичков!
Пример создания самого простого AI.
Для создания самого простого Ai нам потребуется всего два спрайта и два обьекта.Обьект первый-ГГ,а второй-сам AI,который будет гонятся за ГГ.Ну а два спрайта,соответственно,задать этим обьектам. Начинаем,создаем 2 спрайта с названиями spr_hero и spr_AI.Создаем обьекты hero и AI,а затем задаем им спрайты. У обьекта hero в событии Step добавим код:
Code
image_angle = direction; //поворот спрайта при движении,спрайт должен смотреть вправо. move_towards_point(mouse_x,mouse_y,0);//поворот за курсором мыши.
if keyboard_check(vk_left) { x-=4 } if keyboard_check(vk_right) { x+=4 } if keyboard_check(vk_up) { y-=4 } if keyboard_check(vk_down) { y+=4 } //движениe
Что же,теперь наш Главный герой двигается,но не стреляет.Но это не особо важно,ведь суть этого урока состоит в создании AI,а не ТДС.У обьекта AI в событии Step добавим код:
Code
mp_potential_step(hero.x,hero.y,3,0)//Задает движение обьекту за главным героем image_angle=direction//поворот спрайта.
Что же,как вы видите,обьект АИ двигается за ГГ.Такой АИ моджет использоваться для создания в ТДС разных монстров,которые не имеют возможности стрелять,или же для каких либо бандитов с ножами.А впрочем,все зависит от вашей фантазии. Скачать исходник ЗДЕСЬ (В конце Статьи)
Урок 3.Создание самого простого мультиплеера.
В этом уроке мы расмотрим как можно осуществить игру двумя игроками используя одну
клавиатуру.Мы расмотрим лишь создание движений. Создадим 2 спрайта s_p1(спрайт для первого игрока,повернут на лево),s_p2(для второго
игрока,повернут на право).Теперь создадим 2 обьекта: o_p1 o_p2
Управление для первого игрока-[i]Стрелки,Для второго W,A,S,D. Возьмемся за O_p1.
В событие Step добавим код:
Code
if keyboard_check(vk_up) { y -= 3*place_free(x,y-3) }
if keyboard_check(vk_down) { y += 3*place_free(x,y+3) }
if keyboard_check(vk_right) { x += 3*place_free(x+3,y) }
if keyboard_check(vk_left) { x -= 3*place_free(x-3,y) }
Тепеь o_p2
Событие Step:
Code
if keyboard_check(ord("W")) { y -= 3*place_free(x,y-3) }
if keyboard_check(ord("S")) { y += 3*place_free(x,y+3) }
if keyboard_check(ord("D")) { x += 3*place_free(x+3,y) }
if keyboard_check(ord("A"))
{ x -= 3*place_free(x-3,y) }
[color=red][b]ГЛАВНОЕ!Первый игрок должен находится с права,а второй слева![/b][/color]
Урок 4.Возможность задавать имя главному герою самому.
Что же, в этом уроке мы научимся задавать персонажу имя,а так же выводить это имя на экран.Приступим.Что нам понадобится в первую очередь?А в первую очередб нам понадобится шрифт.Назовем его f_hero.Задаем такие параметры: Name: f_hero Font: Arial Size: 10 Напротив Bold ставим галочку. All
name=get_string("Как вас зовут?", '',) //Здаем переменную "name",которая будет иметь значение прописанное в окне. show_message("Приветствую тебя,о " + name) //Так приятно,когда с вами здароваются.))
Переходим к событию Draw:
Code
draw_set_font(f_hero) //Задаем шрифт draw_text(32,32,name) //Команда,которая отображает нашу переменную "name" с координатами 32 х 32(x и y,разумеется)
Теперь создаем комнату,и добавляем в нее обьект n_hero.Удачи!
Думаю, что у многих из вас, после неудачных попыток угадать пароль приходила в голову создать свою игру с чит-кодами, да такими, что бы не один компьютер не смог этот код вычислить. Рад обрадовать вас,и огорчить тех кто будет играть в эти игры, это возможно.))У нас будет два пароля Бог (god вводим), и пароль машины(вводим car) .Окно для ввода чит кода будет окрываться при нажатии кнопки С . Для этого нам понадобится создать обьект cheat_control .В событие Create добавляем код:
Code
global.god_act=0 //Пароль Бог не активирован global.car=0 //Пароль Машина не активирован.
В событие нажатия кнопки C . Press Key - C.
Code
cheat = '' //Переменная cheat,значение которой мы задаем при вводе любого слова. cheat = get_string("Введите чит-код",''); //Открывает окно для ввода чит-кода.
if cheat = 'god' and global.god_act=0 //Условия,при которых этот чит-код заработает. {show_message("Вы активировали режим Бога!!!") global.god_act=1} //Эффект нашего чит-кода.
if cheat = 'car' and global.car=0 {show_message("Поздравляем,ваша машина уже ждет ва во дворе.Вон та-серая.)))") global.car=1}
Добавляем обьект в комнату,и проверяем.Удачи.В исходнике есть еще одна фишка. Она больше связанна с переменными, которые мы получаем после ввода чита.Удачи!
Исходник более-менее умного АИ с русскими коментами.
В интернете нашел исходник АИ, но о был, практически, без коментов. Я решил исправить это глупое недоразумение.Урок писать по этому исходнику не стал, так как это заняло бы много времени. Коментировал действия ТОЛЬКО врага!
Саттья для начинающих.С чего начать разработку игры.НЕ УРОК!
Не мало важным аспектом в создании любой игры является выбор основной игровой идеи.То есть, главной ошибкой любого прогаммиста является создание игры, придумывая ее "на ходу". К чему это может привести? К тому, что начинаюя работу над проектом программист тратит время на разработку движка, графики, но , в большинстве случаев, даже не задумывается о том, в чем будет смысл игры. Это приводит к появлению безсмысленных стрелялок, порой не лучшего качества.( Как пример, можете посмотреть мои "Игры"). Да, я абсолютно не скрываю, что разрабатывал игры абсолютно не задумываясь о ее смысле. Так сказать, просто делал некое безобразное подобие той, или иной игры. Мене была интересна оценка Gcup'овцев. Но когда я понял, что такие проекты ни к чему ни приводят, а людям на них просто плевать, я понял, чо нужно сделать, что то стоящее вашего внимания( В данный момент, я обращаюсь именно к вам, дорогие посетители Gcup.Ru). Так вот, вернемся к теме. С чего начать игру? Прежде всего, нужно проработать игру от корки до корки, в плане сценария. Это можно сделать на листке бумаги, или же в текстовом документе, и покамись вы не поймете, что это именно то, что вам хочется разрабатывать, не начинайте работу, а лучше корректируйте и корректируйте ваш сценарий. Здесь вполне логично употребить золотое правило " 7 раз отмерь, один раз отреж!". Действительно, ведь такие игры, допустим, как Обливион. Ее же не начали разрабатывать имея лиim представление о том, что это будет РПГ от первого лица с магией и прокачкой. Весь мир прорабытвался изначально на бумаге, а лишь потом все эти идеи, скажем так, импортитровались в игру. По этому, прежде чем что либо создавать - продумайте идеи. Да и прибудет с вами слава!
Урок конечно совсем для новичков. Для начала нормально, но подобного уже много.
И на том спасибо.Но это тебе кажется,что для "совсем" новичков.На самом деле это все самому освоить тоже не за день дается.Хотя,это смотря какой человек.
nightmare, ну я GM за два дня освоил. Хотя да, конечно, от человека зависит. Просто в твоем уроке лишь набор готовых функций, которые применены стандартным образом. Нет никаких структур, алгоритмов, вычислений и т.п. Это можно сделать просто вдумчиво прочитав справку.
Я не говорю, что это плохо, конечно нужно с чего то начинать. Просто подобных уроков уже много. И того, что написал ты, не знаю только начинающие. Потому я и сказал, что статья для новичков. Но, как статья для новичков, она весьма неплохая. Всё внятно и понятно. Продолжай в том же духе.
Я не говорю, что это плохо, конечно нужно с чего то начинать. Просто подобных уроков уже много. И того, что написал ты, не знаю только начинающие. Потому я и сказал, что статья для новичков. Но, как статья для новичков, она весьма неплохая. Всё внятно и понятно. Продолжай в том же духе.
Спасибо,конечно,просто в отлии от многих других уроков,я показал как НАПИСАТЬ игру.Мне кажется,что этот процесс более сложен,но не менее интересен,нежели использование "Кнопок" движения,и т.д.Хотя да,похожих уроков уж сильно много,но все таки меня это не остановит при написании всех моих следующих уроков!Так что,Я с тобой полностью согласен. Hi-Tech News Russia - новости, анонсы, обзоры из мира высоких технологий
3й урок ну уж совсем для чайника. Ты правильно делаешь, что уроки для новичков пишешь. Но было бы прикольно если бы ты писал те уроки которые им действительно понадобятся. 1й и 2й уроки - полезные уроки. То что описывается в 3м уроке уж реально лучше на встроенных в гм кнопочках набрать). Напиши уроки например: для создания физики в платформере, или создания более сложного ИИ.)
З.Ы. Про "подобные уроки" не слушай. Так как на самом деле то код отличается, и новички сравнивая твой вариант с другим будет извлекать лучший и учить и запоминать новое: всякие функции, алгоритмы, ну естественно лучше изучать ГМЯ. Лиж бы твой урок не был точной копией другого)
3й урок ну уж совсем для чайника. Ты правильно делаешь, что уроки для новичков пишешь.
Новички-большинство,по этому вполне целесообразно писать статьи раситанные на таких людей.
Quote (dikfair)
Но было бы прикольно если бы ты писал те уроки которые им действительно понадобятся.
Все уроки нужны.Я так понмаю,тебе было бы интереснее читать уроки более сложного уровня?Окей,буду писать.
Quote (dikfair)
о что описывается в 3м уроке уж реально лучше на встроенных в гм кнопочках набрать).
Согласен,но если бы я описал как такое можно осуществить при помощи drag and drop(конопочек),то меня бы закидали кирпичами.
Quote (dikfair)
Про "подобные уроки" не слушай. Так как на самом деле то код отличается, и новички сравнивая твой вариант с другим будет извлекать лучший и учить и запоминать новое: всякие функции, алгоритмы, ну естественно лучше изучать ГМЯ. Лиж бы твой урок не был точной копией другого)
Ооо... почему ГМЯ? Game Maker Язык? Просто впервые слышу такое название
nightmare, да, я согласен с dikfair, удачи тебе)
Quote (nightmare)
Я так понмаю,тебе было бы интереснее читать уроки более сложного уровня?
Это было бы отлично) Но вообще у меня такое подозрение, что скоро создание игры будет состоять из нахождения нескольких нужных исходников и уроков "Так, инвентарь, перезарядка, ИИ, мультиплеер... вроде всё, что нужно. Игра готова!" Для некоторых, может, так и есть.
Quote (dikfair)
Напиши уроки например: для создания физики в платформере, или создания более сложного ИИ.)
Поддерживаю. И ещё бы по изометрии Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Ооо... почему ГМЯ? Game Maker Язык? Просто впервые слышу такое название biggrin
Да я сочинил такое сокращение для себя. Так как скорость набора текста более быстрее при использовании сокращений. И потом уж больно мне понравилось это сокращение.
Да я сочинил такое сокращение для себя. Так как скорость набора текста более быстрее при использовании сокращений. И потом уж больно мне понравилось это сокращение.
Весёленькое сокращение)
Quote (dikfair)
Извиняюсь за флуд. Это в последний раз)))
Мы все знаем, что это не так Флуд просто так не отцепишь Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Добавил еще два урока,но уровень сложности пока не очень то изменился.
Quote (Лер_да_Рим)
nightmare, да, я согласен с dikfair, удачи тебе)
Спасибо.
Quote (Лер_да_Рим)
Это было бы отлично) Но вообще у меня такое подозрение, что скоро создание игры будет состоять из нахождения нескольких нужных исходников и уроков "Так, инвентарь, перезарядка, ИИ, мультиплеер... вроде всё, что нужно. Игра готова!" Для некоторых, может, так и есть.
Абсолютно с тобой согласен,но мне кажется легче все делать самому, нежели лепить это все с чьих то исходников.
Хм, чего все её боятся... Вот доделаю свою рпг и дам несколько уроков... Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.