Видеокурс по GameMaker Studio 2 [1 урок] (Интерфейс среды, создание уровня, персонажа и стены)
HTML-код
- Опубликовано: 27 авг 2018
- Группа ВКонтакте: walkdigidong
Ссылка на это видео:
yadi.sk/i/h2UtdOs93adz78
Ссылка на проект:
yadi.sk/d/yVSsE9TV3adzKF
Это прекрасно. Спасибо большое! Весьма тщательно и подробно рассмотрены многие важные аспекты, а не впопыхах. При этом минимум костылей, как у некоторых других "учителей".
не понятно дизлайк сейчас 2022 год у меня на Русский язык поставлен поменять не знаю
Я очень хочу научиться работать в GMS2 и довольно долго искал нормальные гайды в инете (просто я немного тугодум), увидев этот ролик, я вспомнил ёмкую фразу, из какого-то фильма, описывающую этого автора: "это не человек, ЭТО ЖЕ АНГЕЛ"
Всё прекрасно работает и всё ясно, большое спасибо! Очень помогает.
Цикл использовать как условие - это сильно)
Ахаха...))
Так любой цикл - это по сути повторение одного и того же алгоритма при некотором условии :)
цикл здесь нужен, чтобы подойти как можно ближе к объекту столкновения в тот же кадр, хотя ясно, что через несколько кадров он и так подойдёт вплотную
Замечательный туториал, очень классно объясняешь, просто и понятно, успехов!
Отличный ролик, спасибо за уроки))
Очень круто, спасибо большое! Все просто и понятно! Спасибо, что объясняешь, какая строчка что делает! Продолжай в том же духе!
Всё отлично, но лично мне хотелось, чтобы ты давал побольше инфы про синтаксис языка. Лично мне не понятно "vsp", "hsp", "moveSpeed" и тд. это просто названия переменных или это классы, которые лежат в GameMaker'e.
vsp = Vertical Speed = Вертикальная Скорость(Вверх И Вниз)
hsp = Horisontal Speed = Горизонтальная Скорость(По Горизонту - На Право И На Лево)
moveSpeed = Скорость Передвижения (Просто Скорость)
Это все названия переменных.
Все достаточно информативно! Тем-более, когда русскоязычной информации по этому движку днем с огнем...
Единственное, что хотел бы заметить по-поводу столкновения объекта вплотную:
Первый раз получилось так, что если подходить к стене слева, то объект игрока на один пиксель накладывается поверх объекта стены. Смог определить это тем, что по краям спрайта объекта стены (ну и игрока) добавил линию толщиной в один пиксель другого цвета, которая при сближении пропадала.
Долго ломал голову: может что в коде не совсем корректно? Оказалось все куда примитивнее.
Объект стены, почему-то, при постановке в комнату встал на один пиксель левее сетки. Подвигал объект стены по комнате рандомно - встал как надо и наложение устранилось.
Возможно, проблемка программы, или я как-то умудрился с шаговой привязкой поставить криво объект стены? -_-
ЛУЧШИЙ ТЫ ПРОСТО ЛУЧШИЙ Я СМОТРЕЛ ВСЁ ВИДОСЫ ОНИ МНЕ НЕ ПОМАГЛИ ТАК КАК ОНИ НЕ ДОГАВПРИВПЛИ
Огромное спасибо )
Есть функция place_free для проверки столкновения, если использовать ее, предварительно установив solid в свойствах объекта, то можно обойтись без костыля, который автор придумал для подхода объекта вплотную.
окей, но есть один вопрос, что ты тут делаешь, если уже знаешь программирование в GameMaker Studio?
@@heroofmightandmagic3536 я написал, как можно улучшить код. Претензия в чем?)
@@timofeylipnitskiy7525 я бы сказал что это не претензия, хоть и может так звучать. Просто интересно, что делает человек который знает код, на обучающем видеоролике
Давно таких подробных инструкций не видел! Спасибо огромное!
предлагаю более универсальный вариант со столкновениями, используя функцию place_free(x, y) :
1) включаем Solid на объектах, которые могут сталкиваться
2) пишем следующие скрипты:
"player: Create"
move_speed = 4;
dx = 0; //d сокращение от delta
dy = 0;
"player: Step"
dx = (keyboard_check(ord("D")) - keyboard_check(ord("A"))) * move_speed;
dy = (keyboard_check(ord("S")) - keyboard_check(ord("W"))) * move_speed;
if (!place_free(x + dx, y))
{
while(place_free(x + sign(dx), y)) x += sign(dx);
dx = 0;
}
if (!place_free(x, y + dy))
{
while(place_free(x, y + sign(dy))) y += sign(dy);
dy = 0;
}
x += dx;
y += dy;
а что делать, если персонаж просто замедляется?
@@didythih8830 имеешь в виду, он через объект всё-таки проходит, но скорость замедляется? странно.. как долго это продолжается?
@@didythih8830 может, объект слишком мал, при больших скоростях Player может даже пропустить очень маленький объект, тогда нужно разделить проверку place_free(x, y) на несколько частей, попробуй такой код (правда работать он будет медленнее, но ты можешь попробовать потом прибавлять к m не единицу, а sign(dx) * 2 или sign(dx) * 3 или 4... (в общем, до тех пора, пока он снова не будет работать некорректно) , чтобы ускорить выполнение):
dx = (keyboard_check(ord("D")) - keyboard_check(ord("A"))) * move_speed;
dy = (keyboard_check(ord("S")) - keyboard_check(ord("W"))) * move_speed;
m = 0;
while (abs(m) < abs(dx))
{
m += sign(dx);
if (!place_free(x + m, y))
{
while(place_free(x + sign(dx), y)) x += sign(dx);
dx = 0;
break;
}
}
m = 0;
while (abs(m) < abs(dy))
{
m += sign(dy);
if (!place_free(x, y + m))
{
while(place_free(x, y + sign(dy))) y += sign(dy);
dy = 0;
break;
}
}
x += dx;
y += dy;
так подробно, что я кажется вроде всё с одного раза понял.
Если код движения не работает то можно записать так:
hMove = keyRigth - keyLeft;
vMove = keyDown - keyUp;
Все равно не работает
У меня подчёркнуто синем
Привет!!!Ты покупал Гейм мейкер студио 2?Если нет,то подскажи,где можно скачать ее бесплатную версию?
как сделать чтобы обьект вращался вокруг другого обьекта который двигается под твоим контролем ?
Просто отлично! Спасибо огромное, надеюсь ты не забросишь это дело, у тебя превосходно получается.
*Самое лучшее видео по этой теме которое я смотрел*
Спасибо, круто объясняешь. Все понятно, ещё раз спасибо
Если иметь базовые знания C#, то и этот язык (GML) легко выучить ведь они похожи. С меня лайк и подписка!
что если я хочу сделать чтобы когда персонаж стоял проигрывался спрайт. Какое событие должно быть?
Продолжай, круто объясняешь)
в новой версии данный урок не работает.Пишет типа переменные не упоминаются нигде и не запускает
Почему написано у меня что команда выполнена будет 1 раз
СТавим скорость 1.25 и смотрим.
1.5 минимум
2
Кое-кто выпендривается
Не знаю что я не так сделал но у меня при настройке чтоб прям в плотную подходил зависает игра и не может отойти от стены кто подскажите из за чего это
Помнится мне этот движок java вроде поддерживает. В свое время находка была
Я запустил а у меня коллизия не работает, ошибка банальна переменные движения получали изменения ранее, я их вырезал и воткнул после проверки на коллизию. ))
Всё понятно спасибо! Единственное что я не понял, почему когда я подхожу вплотную к кубику сверху он не может ровно после этого пойти на право или налево, ток если назад. С правой и левой стороны такого нет
во втором цикле попробуй x и y местами поменять
Тут многие писали про использование place_free, так что напишу свой способ.
Вроде работает на любых скоростях, и не привязан к конкретной стенке
отмечаем у стенки solid, в step до 13 строчки пишем как у автора, замет пишем
if place_free(x+hsp,y+vsp)
{
x += hsp;
y += vsp;
}
else
{
while (place_free(x+hMove,y+vMove))
{
x+= hMove
y+= vMove
}
}
Мне кажется способ удобным, но если кто-то найдет ошибки, то пишите
Сделал всё как на видео, игра не запустилась, в консоли было написано так: FAILED: Run Program Complete
For the details of why this build failed, please review the whole log above and also see your Compile Errors window. Кто нибудь помогите!
чтоделать, если проект не запускается?
у меня проходит сквозь стены вверх и вниз, но если в них попытаться походить налево и направо то ничего не получится
Нашел ошибку: вместо vsp я написал hsp
Почему у меня персонаж проходит сквозь стены я сделал все один в один пересмотрел все 3 раза и переписал тоже он просто проходит сквозь него
возникла такая проблема: нарисовала объект, прописала команду, чтобы подходил вплотную, но он все равно подходит не вплотную, а на расстоянии. в чем проблема?
Свойства спрайта - коллизия (нужно его настроить)
В ютубе практически нет нормальных уроков по DnD, есть то что представила сама компания, но не объясняют все функции и переменные которые есть в программе и все равно используются. Перерыл весь ютуб, ваще голяк по нормально объясняющим урокам. Может есть возможность поснимать по DnD
Использую 1.4 GM . Буду смотреть. Но, думаю, для новичков, можно о всех рассказать сразу о всех кей_чек, в том числе сразу о _pressed _released и виртуальных и mouse_
Просто мало уроков о функциях в гм.
Есть целый канал, посвященный функциям. Также есть справка
@@user-om3tg4uh9b какой?
Making Games 101
@@user-om3tg4uh9b так он на английском
У меня не работает код, который ты сделал, чтобы не проходил игрок сквозь стены
проверь названия объектов, стенка - oWall и все скобки
@@ar4iepic336 я уже перешёл на godot, о gamemaker у меня сложилось отвратительное мнение, столько видео, курсов, документации перепробовал, все не работали, хотя делал абсолютно одно и тоже
14:51- как ты передвинулся в интерфейсе программы????
Пробел + ЛКМ
везде пишет на переменную только одна ссылка
что делать если закрыл вкладку с елементами
если moveSpeed больше 100 то проходит насквозь
а можно создать игру для телефона?
Парень, ты хорошо разбираешься в программировании, у тебя хороший стиль.
Но, к сожалению, ты делаешь некоторые вещи здесь на низком уровне. Я имею в виду твоё решение задачи о подходе игрока вплотную к стене. На мой взгляд, гораздо логичнее было бы использовать физику совместно с событием Collision для игрока и стены. В этом случае GMS сам остановит движение игрока прямо перед стеной. (Главное - не забыть убрать гравитацию по Y.)
Но это ещё не самое грустное.
Плохо, что ты навязываешь свой (именно свой) стиль программирования тем, кому объясняешь. Я имею в виду то, что ты предлагаешь своим зрителям именовать объекты так же, как ты, и показываешь прикольные фишки по оптимизации работы программы (например, то, что при нажатии одновременно двух противоположных клавиш - A и D, движение игрока останавливается. Или, например, применение "+=" или "!").
Второе замечание делаю не из-за того, что мне кажется, будто ты ничего не понимаешь в программировании.
Я говорю так только потому, что ТАКИЕ моменты рассчитаны на тех, кто уже что-то понимает в программировании.
Но, как я понял из всего твоего повествования, ты объясняешь все эти вещи людям, которые только-только начинают делать первые шаги. Из-за этого возникает впечатление, что ты либо не до конца понимаешь, к какой аудитории ты хочешь обращаться, либо ты поступаешь как преподаватель, который понимает свой предмет и думает, что это настолько просто, что понять может даже новичок. (Согласись, были ведь и у тебя такие, которые удивлялись, почему большая часть обучающихся не понимает материал, хотя он "элементарный"!)
В любом случае, я, критикуя тебя в этом посте, никоим образом не хочу тебя унизить. Понятно, что в деле обучения ты - ещё новичок (тем более, в деле обучения через Ютуб, а не личного обучения человека, который сидит рядом с тобой.)
Ты и сам сказал, что это твоё первое видео. То есть опыта у тебя в таких делах мало.
Всё приходит с опытом.
Желаю тебе достичь хорошего уровня не только в программировании, но и в деле обучения других людей!
Надеюсь, что каждый новый урок будет понятней как для зелёных юнцов, так и для старых бородатых прогеров, желающих повысить свою квалификацию. :)
/Спасибо тебе, что дочитал этот комментарий до конца.
Рад буду услышать твой отзыв.
Мои контакты: ВК: vk.om/gawron
Александр
Я тоже думаю что его решение о подходе игрока вплотную к стене немного сложным и длинным. В туториале который я смотрел до этого, там чувак сделал это с помощью гравитации.
@@KOFOLORY сразу задам вопрос: а не Гошу ли Дударя ты смотрел? Если да, то поправлю: не с помощью гравитации, а с помощью использования физики (обработка события evCollision кодом, состоящим из одного пустого комментария) и уменьшения Collision Mask до размеров чуть меньших, чем спрайт игрока.
P. S. Если есть желание продолжить общение, то вот мой адрес в Контакте: vk.com/gawron
@@togawron вы случайно не учитель програмирования?
@@KOFOLORY как раз таки в этом видео всё сделано грамотно, через код. Через физику - это костыли.
@@togawron Гоша Дударь ваш бездарь, над которым русскоязычное геймдев-коммьюнити угарало и угарать будет. А этот парень как раз таки делает всё грамотно и красиво, пользуясь кодом. И других приучает к этому.
А эти строки каждый раз нужно вручную прописывать? Или можно копипасту из блокнота юзать?
можно юзать
А как насчет Анимации игрока?
А Что делать если он не двигается? 19:15
Спасибо за видео!Все супер!
какой язык программирования?
GML
У меня управление не правильно отображается
Когда я добавляю события, у меня выдает ошибку в каждом из случаев. "variable hMove(может быть другая команда) only referenced once." Что делать?
вроде это только предупреждение а не ошибка,она означает что переменная на которую вы ссылаетесь используется только в этом коде,тобишь игнорируй)
@@vertukv но с ней у меня не запускается программа и ничего не работает.
@@user-ew1ok5vj7h тогда ни чем не могу помочь,печально,у меня видимо тоже ничего не выйдет.Поищу решение
Ты задал переменную, но не использовал её. Так нельзя
@@user-hj3yi8lf4z можешь немного яснее?
Расскажи как сохранять игры на андроид! Очень актуальная тема!
@@user-fe2be5go9k или пиратка
у меня почему то в первый раз вылезала ошибка, создал новый проект и перенёс скопированный код, всё заработало
весь этот код можно написать так:
if(keyboard_check(ord("A")) && place_free(x - collisionSpeed, y))
x -= moveSpeed;
if(keyboard_check(ord("D")) && place_free(x + collisionSpeed, y))
x += moveSpeed;
if(keyboard_check(ord("W")) && place_free(x,y - collisionSpeed))
y -= moveSpeed;
if(keyboard_check(ord("S")) && place_free(x,y + collisionSpeed))
y += moveSpeed;
Почему он не поворачивает в верх и влево ,а только в вниз и вправо.Помогите исправить!!!
Тоже самое
Сделай вместо keyLeft + keyRight и keyUp + keyDown это keyRight - keyLeft и keyDown - keyUp
а как создавать визуальные новеллы?
лучше создавай через прогу которая только для них и предназначена
а именно через Ren'Py
Спасибо большое.
while - цикл!!!!!!!!
Ходьба почему то не робит
Проблема. Пофиг моему Obj_player на Obj_Wall, чтобы я не делал оба объекта даже не догадываются, что им нельзя пересекаться. Короче, сквозь стену прохожу я, хотя сделал все по видео, кроме названий (и даже когда я позже переименовал как у тебя ассеты ничего не изменилось).
Вообще не понимаю в чём проблема. Люди добрые, помогите.
А так видео хорошее, мне с высоты своего неширокого опыта в паскале всё более или менее понятно. Манера написания кода у тебя очень чистая, пусть и с парой костылей.
Есть вопрос, а какая разница между Drag and Drop и GameMaker Language?
Drag and Drop для начинающих. Там также можно кодить. Но также можно перетаскивать нужные команды (Drag and Drop - перевод "перетащить")
@@amitrue2137 спасибо
@@amitrue2137 а как в DnD можно кодить? Я уже разобрался с основными плитками, но к кодингу еще не перешёл.
@@user-xm9ev6ye1t Помоему можно нажать правой кнопкой мыши на событие (к примеру Step) и выбрать Convert to Game Maker Language. Как-то так
В программирование все как в жизни. Это просто разные языки. В DnD просто надо другие команды писать.
помогите пожалуйста,он при передвижении отставляет следы(
тоже самое, не понимаю из-за чего
Круто! Спасибо!
У меня проблема у меня почему-то персонаж когда я нажимаю на W идёт вниз а когда я нажимаю на S там также идёт вниз а когда нажимаю А то он идёт вправо а когда нажимаю D он также идёт вправо помогите исправить
На keyLeft и keyUp минусы перед keyboard_check поставь
@@joriroja святой-то ты человек, спасибо огромное, желаю счастья и удачи, короче я очень благодарна, лол хд
@@kusochekcat7953 Спасибо)
666 подписчиков
Что за язык используешь? Есть моменты где непонятны наименования команд. Было бы проще сначала язык данный выучить, что бы понимать что написано, зачем и для чего.
Язык специальный для game maker если хочешь понимать изучи ООП
А можно в программе поставить русский язык?
Да
Там можно сразу русскоязычную версию скачать
GameMaker 8.1.140 не работает код движение только в две стороны
Тоже самое, тут язык поменялся, я не знаю что делать(
Тоже самое. А какая у автора?
я сейчас на самой новой версии и все прекрасно работает
возможно у вас проблема какая-то
У меня персонаж появляется в углу...
Спасибо за видео!
У меня такая проблема.
Все написал персонаж ходит,но он ходит сквозь стены
просто столкновение пропиши выше этих строк: x += hsp;
y += vsp; Мне это помогло
Добавь эвент на игрока collision, выбери стену и добавь код. В коде ничего писать не нужно
У меня почему то при запуске проекта на появился белый квадратик персонажа. Только черный экран=(
Тоже самое
тупорылая программа постоянно спрашивает. перезагрузить или сохранить проект. как это убрать?
+++ тот же вопрос
@@justf9800 если найдете решение напишите ок
У меня персонаж застревает в стене что делать?
Тоже самое(
мне кажется, или это сложнее чем юнити?
нет
heh that coding like a javascript ... , and like from israel
Всё работает, но только когда нажимаю на A иду вправо, в лево идти не могу
перед условием движения влево нужно "-" поставить?вот так "- keyboard_check(ord("A")); "
а там русский язык интерфейса есть??????
ВЫЛОЖИТЕ СКРИПТ!!!!!!
Чтобы это запомнилось,нужно ручками вводить,а если копипастить,то толка будет очень мало.ИМХО.
@@Milkovo91 не твоё дело. Учиться или копировать мне.
@@fineandlime8133 Да мне в общем то срать.
@@Milkovo91Тогда зачем ты оставил коммент выше?)
Я лучше промолчу
но комментарий всё же написал)
@@LenaPlaysGames молча же