DuCats Games DuCats Games

Трудимся над Мечеломом)
Обновляем локации. Добавили кучу новой травы и растений + немного эффектиков + горы! Теперь пейзажи стали гораздо красивее.

РОМАН РОМАН

Работаю над роботом пауком ходящем по стенам.
ВК: https://vk.com/co_of_co

ASH2 ASH2

Тестируем электрическую сеть.
ВК: https://vk.com/snail_ninja

Jusper Jusper

Tartal, + если это конкретно имплант (то есть чуваку вырвали кусок, поставили механизированный), то искажение органической части должно быть больше. Глянь фотки после косметических операций, когда щи распухшие и раскрашенные пуще некуда...

Tartal Tartal

Jusper, с первыми двумя моментами я всё понял и принял.
А вот с третьим немного не разобрался. Ты имеешь ввиду, что область вокруг глаза-импланта должна быть искажена и повреждена намного сильнее?

Jusper Jusper

Tartal,

В целом мне очень нравится новый Кано, но с т.ч. восприятия и здравого промышленного дизайна механизированное ухо в форме уха это, я бы сказал так себе. Какой смысл повторять анатомическую форму...

...
Tartal Tartal

Потихоньку доделал концепт-портрет главного героя:

Jusper Jusper

Чем-то напомнило мне мотоциклы из Throne: Legacy, только обернутые в оформление харконеннов из Emperor: Battle for Dune.

Очень понравилась стилизация, местами то, как босс невозмутимо ходит по кругу, пока игрок по нему палит...

alexprey alexprey

Выглядит очень живенько, разве что не хватает звуков ко всему этому. Ракеты которыми разбрасывается босс, можно было бы сделать помассивнее, а то не сразу понял что это бомбы из ролика, думал босс разваливаться уже начал...

alexprey alexprey

kirsakshlil, вспомнил, тоже в свое время пытался с этой штукой баловаться когда только обзавелся планшетом. Но дело дальше простых утилит не пошло)

kirsakshlil kirsakshlil

alexprey, мобильная среда разработки, использующая Java.

alexprey alexprey

kirsakshlil, милота) APDE это что такое, что то не слышал про такое..

kirsakshlil kirsakshlil

alexprey, о, ахах, я тоже как-то начинал делать что-то в этом духе, только в APDE. Ручная отрисовка GUI - та еще муть :с . Правда, работать прямо в телефоне не очень удобно. Зато весело, хех. По факту не более чем баловался...

ASH2 ASH2

Jusper, спасибо. Нет, просто "типичный портрет").

Jusper Jusper

И вот мне казалось, что мы все побороли и сможем перейти на 19.3, но началась так называемая кок-магия.
Много нативных вещей отвалилось (в том числе и легаси управление. новое не взлетело). И даже когда мы худо...

...
Jusper Jusper

ASH2,

Рисовка хорошая, я уже говорил ранее.

ASH2 ASH2

Когда личное пространство имеет значение.
ВК: https://vk.com/snail_ninja

alexprey alexprey

Освещение хорошо смотрится)

Логотип проекта Game Maker

Основы GML. Движение

Привет! Наверняка прошлый урок вызвал головную боль, если вы его полностью прочли, так как он громоздкий и сложный для усвоения новичками. Если что-то непонятно - это ничего страшного. Аппетит приходит во время еды.
Сегодня мы рассмотрим важный аспект при разработке игры - движение объектов.

Движение объекта

О, наконец-то практика! Но сначала все-таки узнаем, что движение тела, не что иное, как изменение его координат. Разумеется, в 2D играх, а значит и в GM, используется Декартова прямоугольная система координат. К сожалению (или к счастью), в GM ось ординат Y направлена вниз, а не вверх (ось абсцисс, как принято, направлена вправо). Вот картинка:

Основы GML. Движение — Game Maker — DevTribe: Разработка игр

Изменяем *х* и *у* - двигаем объект! Элементарно, Ватсон! Достаточно в step событии объекта разместить код:

x+=2;
Важно: x и y - так называемые свойства объекта, являются встроенными разработчиками переменными, значения которых можно менять, и которые влияют на характеристики объекта и его поведение. Помимо всего, у объектов очень много свойств, к примеру, sprite_index или depth. Это также означает, что вы не сможете создать переменную с именем свойства. Но сейчас важны только свойства, относящиеся к движению. Примечание Uber//

И, о да! Результат налицо, наш подопытный кролик потопал направо. Также можно и изменять координату *у*. Ради эксперимента, поиграйте со значениями.
А если движение на протяжении всей игры почти не изменятся? Как, например, движение платформы в платформере (влево-вправо, вверх-вниз). Для этого у каждого объекта есть свойства _hspeed_ (от англ. horizontal speed), _vspeed_ (vertical speed) и направление движения - direction (измеряется в градусах, от 0 до 360). В GM направления опять же немного отличаются от привычных, а именно:

Основы GML. Движение — Game Maker — DevTribe: Разработка игр

А теперь - лабораторная работа. Что все я да я вам свой опыт передаю, пора бы и свой опыт получить! Ход работы:

  1. Создать объект, поместить его в комнату.
  2. В событии create объекта сначала попробовать изменять координаты (х-=2, у+=1, например). Какой можно сделать вывод?
  3. Теперь вместо изменения координат задайте hspeed и/или vspeed (например, hspeed=3) Понаблюдайте за эффектом.
  4. Ну и почти последний шаг: задайте переменную speed (скорость, она является результатом сложения hspeed и vspeed) и direction, заодно.
  5. Порадуйтесь своему успеху!

Теперь мы научились двигать объект. А вообще, что такое объект? Это совокупность свойств и действий. Так вот, чем наш экземпляр хуже? Мы можем вызвать в нём функции по перемещению:
motion_set(dir,speed) - Заставляет текущий экземпляр объекта двигаться в направлении dir со скоростью speed.
motion_add(dir,speed) - "Векторно" добавляет движение со скоростью speed и направлением dir к текущему движению экземпляра объекта.
В результате работы кода

motion_set(270,2);

наш объект полетит вниз со скоростью 2 пикселей/шаг. Побалуйтесь со значениями, весело же =)

Кроме *x* и *y*, у нас есть ещё свойства, относящиеся к передвижению. Вот их список:
*xprevious* Отражает координату экземпляра объекта по оси X в предыдущем шаге.
*yprevious* Отражает координату экземпляра объекта по оси Y в предыдущем шаге.
*xstart* Отражает координату по оси X в текущей комнате при старте.
*ystart* Отражает координату по оси Y в текущей комнате при старте.
*friction* Отражает текущее трение экземпляра объекта (пикселей за шаг).

Трение просто постоянно замедляет объект, пока его скорость speed не упадёт до нуля. Примечание Uber//

*gravity* Отражает силу гравитации для текущего экземпляра объекта (пикселей за шаг).

Стоит отметить, что это не скорость, с которой полетит объект в заданном gravity_direction направлении, а ускорение, которое получает объект и измеряется в пикселях за шаг в шаге (или шаг в квадрате). Примечание Uber//

gravity_direction Отражает направление гравитации в градусах для текущего экземпляра объекта (270 - вниз).

Трение более единицы лучше не ставить, так как объект попросту не сдвинется с места. Но более подробно все эти дела мы рассмотрим в следующий раз. Прогноз таков:

  1. Сделаем управления для своего собственного платформера.
  2. (Для желающих) Разберем, как описать движения объекта по сложным траекториям, таким как синусоида или парабола.

Урок получился довольно коротким, "разгрузочным", так сказать. Могу посоветовать от себя, если что-то то не поняли - не бойтесь экспериментировать. Подставьте ту или иную переменную в разные события, посмотрите, что происходит если к ней прибавить значение и т.д. Не будьте ограничены какими-то рамками и прямому следованию урока, проявите инициативу, и тогда все получиться! Удачи!



интересно

Справка