Gamedev


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
250 22 87

GameMaker Studio 2 Аноним 14/10/19 Пнд 00:40:04 6175771
1.jpg (3Кб, 250x142)
250x142
Добро пожаловать в гамакотред - адекватный тред адекватного движка.

Задумал сделать 2d игру и не знаешь с чего начать? Качай демоверсию гамака
https://www.yoyogames.com/get
и запускай туториалы Шона Спалдинга
https://www.youtube.com/user/999Greyfox/playlists

Будет что-то непонятно - задавай вопросы, всегда ответим.

Телепаты в отпуске, хочешь получить ответ - задавай вопрос по существу. Перед тем как запостить спроси себя: Нет ли у меня банальной ошибки в коде? Прочитал ли я туториал? Не мудак ли я?"
Аноним 14/10/19 Пнд 08:52:24 6176072
>Если хочешь получить ответ
А ещё лучше сразу прикрепляй код в пастербин, ради аллах и гифку.
Аноним 15/10/19 Втр 12:18:31 6178633
>>617577 (OP)
а русский яз появился? помню как залипал в 8pro, ух времена были.
Аноним 15/10/19 Втр 12:35:13 6178694
>>617863
Зачем тебе перевод для 2.5 кнопок? И с англ нормально все
Аноним 15/10/19 Втр 13:18:02 6178765
Аноним 15/10/19 Втр 14:59:31 6178916
>>617577 (OP)
В далеком 2012 покупал гаме макер в стиме. Сейчас это вроде как версия 1.4(не помню), есть экспорт на Виндавс. Вопрос. Я могу на нем сделать свою супер игру и высрать ее в стим(продавать, ага), или же я обязательно блядь должен покупать 2ю версию?
Аноним 15/10/19 Втр 15:20:25 6179017
Аноним 15/10/19 Втр 20:21:55 6179828
>>617577 (OP)
Тред забронирован для детей олигархов или бомжам с вопросами уровня "где бы раздобыть" тоже место найдётся?
Аноним 15/10/19 Втр 20:32:10 6179889
>>617982
Я знаю на доске троих, кто на гамаке серьёзные игры делает. У всех лицензия. И у меня лицензия, я просто даже вопросом не задавался, где брать хак.

Но начинал с триальной версии. Когда столкунлся с её ограничениями, был уже так глубоко в гамаке, что вопрос о покупке лицухи у меня даже не стоял.

А сейчас у триалки даже ограничений нет.
https://help.yoyogames.com/hc/en-us/articles/230407528-GameMaker-Studio-2-Trial-Limitations
Только exe билдить нельзя. Триальная лицензия истекает через 30 дней.
Что тебе помешает ещё один акк завести на yoyoy и ещё одну лицензию получить триальную?
Аноним 17/10/19 Чтв 21:12:55 61833210
image.png (12Кб, 445x169)
445x169
image.png (24Кб, 568x198)
568x198
Как заставить двигать объект? Ничего не выходит
Аноним 17/10/19 Чтв 21:54:21 61833611
>>618332

Во-первых

команда move_towards_point устанавливает direction и speed того объекта, который исполнил эту команду.

Это равносильно тому, что ты бы написал

direction=point_direction(x,y,mousex,mousey)
speed = 50

После того, как ты задал эти команды с каждым шагом твои координаты будут меняться следующим образом

x += lengthdir_x(50,direction)
y += lengthdir_y(50,direction)

Поэтому бессмысленно выглядит твой цикл while - это будет бесконечный цикл, так как он у тебя запущен внутри одного step event

Что тебе нужно сделать?

if mouse_check_button_pressed(mb_left){

//заводим временные переменные. Почему? Потому что их легче передать объекту внутрь "with"
var _mx = mouse_x
var _my = mouse_y

if instance_exists(obj_npc){ //Это предохранитель. Его стоит вставлять всегда, когда хочешь что-то сделать с объектом, которого может и не быть в комнате
with obj_npc{ // Это означает "применить ко всем obj_npc в комнтае"
move_towards_point(_mx,_my,50) //эта строчка сообщает, что
if point_distance(x,y,_mx,_my) < 50{ //А это условие остановки движения
speed = 0
x = _mx
y = _my
}}}}
Аноним 17/10/19 Чтв 22:14:32 61833712
>>618336
Так, разовьём. Телепаты в отпуске, но попробую влезь тебе в голову
Наверное ты хочешь, чтобы твои obj_npc сами останавливались при достижении место, куда ты кликнул мышкой, да?

Тогда делай так:

В step event своего контроллера пиши:

if mouse_check_button_pressed(mb_left){

var _mx = mouse_x
var _my = mouse_y

if instance_exists(obj_npc){
with obj_npc{
mousex = _mx //таким образом мы устанавливаем переменную mousex у всех obj_npc в комнате, а не у контроллера
mousey = _my
move_towards_point(mousex,mousey,50) //эта строчка запустит движение объектов
}}


А потом в step event obj_npc добавь это:

if point_distance(x,y,mousex,mousey) < 50{
speed = 0
x = _mx
y = _my
}
тогда каждый obj_npc будет каждый шаг проверять, не добрался ли он достаточно близко до точки mousex,mousey и не пора ли ему прекратить движение.
Аноним 17/10/19 Чтв 22:22:05 61833913
>>618337
Спасибо за то, что помог разобрать мой полет мыслей и даже объяснил что к чему, благодарствую
Аноним 17/10/19 Чтв 22:27:57 61834014
>>618337
А обязательно ли использовать var и какие плюсы это даёт?
Аноним 17/10/19 Чтв 22:44:26 61834215
>>618340
Не обязательно, но плюсов много.

Допустим ты исполняешь код в step_event объекта obj_controller

mousex = mouse_x

with obj_npc{
x = mousex
}

Что произойдёт? Не то, что ты ожидаешь. obj_npc.x станет равен obj_npc.mousex (если такая переменная была задана в create_event obj_npc, иначе вообще критическая ошибка.

Потому что то, что исполняется в step_event объекта obj_controller оперирует переменными obj_controller , а то, что происходит внутри with obj_npc оперирует переменными obj_npc

Но есть одно но. Если переменная будет временная, заданная через var, то к ней доступ будут иметь и obj_controller и obj_npc

var _mx = mouse_x

with obj_npc{
x = _mx
}

даст тебе ожидаемый результат.

Можно обойтись и без var

mousex = mouse_x

with obj_npc{
x = obj_controller.mousex
}
Сработает как надо, до тех пор, пока у тебя только один obj_controller. Иначе obj_npc.x станет равен переменной mousex одного из obj_controller, не обязательно того, который исполняет этот код.
Аноним 18/10/19 Птн 16:04:05 61838616
image.png (549Кб, 1909x1005)
1909x1005
Есть кто шарит за сборку на ведро? Вроде все подключил, все настроил но не работает, ругается на расширение Billing от гугл сервисов. Проблема точно не в игре, потому что сервисы я только подключил но нигде в коде не использовал. В чем может быть косяк?
Аноним 19/10/19 Суб 20:37:48 61854417
>>618386
Сам знаешь что с этим лучше на yoyo.
Аноним 19/10/19 Суб 21:45:54 61855318
>>617876
я гуглил в 16, а тут 17 год. ъеъ
Аноним 20/10/19 Вск 00:25:49 61857219
>>618544
3 дня беспорядочно тыкался куда только можно, затем проблема исчезла сама. Конечно не сама, но я без понятия что конкретно исправило. Переустановил и обновил все что только можно, все jdk jre sdk и саму джаву, переписал пути в path, удалил и переставил студию и ассеты, перенастроил все настройки и в один момент игра собралась. Хз кароче что конкретно было не так.
Аноним 20/10/19 Вск 01:23:12 61859020
>>618572
За последнюю неделю вышло 3 патча на гамак.
Скорей всего правили баги после первого патча.
Аноним 24/10/19 Чтв 13:49:42 61938321
Как добавить спрайт на asset_layer через код?
Аноним 24/10/19 Чтв 13:51:13 61938522
>>619383
Сам спросил, сам ответил.
layer_sprite_create(layer_id, x, y, sprite)
Аноним 25/10/19 Птн 20:43:26 61962723
>>617577 (OP)
Бля, как устранять подрагивания при движении мышкой? FP-Шутан. У меня нихуя не получается от них избавиться. А в коммерческих играх такого подрагивания нет. В чём секрет?
Аноним 25/10/19 Птн 20:45:45 61962824
>>619627
Зачем ты FP-шутан в геймейкере пилишь? Ебу дал?
Аноним 25/10/19 Птн 20:54:44 61963125
>>619627
Какие подрагивания при движении мышкой? Телепаты в отпуске, забыл?
Аноним 25/10/19 Птн 21:03:51 61963526
>>619628
Вообще-то не в гамаке. Но вдруг гамак может лучше?
>>619631
Ну кароч, когда мышкой возюкаешь по столу, камера должна плавно ходить, а она подрагивает.
Аноним 25/10/19 Птн 21:12:09 61963627
>>619635
У меня не подрагивает.
Аноним 25/10/19 Птн 21:13:08 61963728
>>619636
Рад за тебя. Хули.
Аноним 25/10/19 Птн 21:14:14 61963829
>>619637
Какой вопрос, такой ответ. Хули.
Аноним 25/10/19 Птн 21:29:22 61964130
>>619638
Иди игры делай. На вопросы он тут отвечает.
Аноним 26/10/19 Суб 12:28:38 61969031
>>619635
Уебывай, раз вопрос не по гамаку. Не для таких как ты этот тред сделан.
Аноним 27/10/19 Вск 10:40:37 61978232
Как увеличить количество поддерживаемых устройств в гугле? Залил игруху, весит 30мб, простая и нетребовательная, однако гугл определил что запускаться она может только на парочке флагманов среди множества тысяч телефонов. Как фиксить?
Аноним 31/10/19 Чтв 02:29:17 62032633
>>619782
ОПТИМИЗАЦИЯ
П
Т
И
М
И
З
А
Ц
И
Я


А вообще - что там в профилере у тебя показывает? А то можно думать, что игра нетребовательная,а по факту все очень плохо
Аноним 31/10/19 Чтв 03:41:13 62033334
>>619782
У тебя сборка под новые модели, даун
Аноним 31/10/19 Чтв 10:10:50 62034635
>>620333
>>620326
Не, все херня. стоит апи 28, все нормально. Просто в помойном гайде от йойо написано ставить компиляцию только на арм64 архитектуру, а надо проставить галки на все 4, тогда будет охват всех устройств.
Аноним 04/11/19 Пнд 17:53:18 62090636
>>617577 (OP)
> и запускай туториалы Шона Спалдинга
А есть годные гайды (язык не важен) по пошаговым стратегиям?
Платформеры и шутэмапы писать научился, но как писать Turn-based совсем не очевидно.
Аноним 05/11/19 Втр 09:31:25 62099037
>>620906
Такой вопрос уже задавали.

Личноя подобных гайдов не встречал. Но я подобным и не инетересовался.

Но пошаговость, по-моему, довольно очевидно можно сделать.
Добавляешь каждому объекту в step event что-нибудь вроде

if end_of_turn{
end_of_turn = false
script_execute(end_of_turn_script)
}

Или ещё умнее - создаёшь объект end_of_turn_controller который при получении команды на конец хода в нужном порядке через некоторые временные интервалы завершает ход для всех объектов типа
if end_of_turn{
wait_timer ++
if wait_timer<wait_time exit;

if !pawns_moved{
with obj_pawn{
script_execute(end_of_turn_script)
}
pawns_moved = true;
wait_timer = 0;
exit
}

if !towers_moved{
with obj_tower{
script_execute(end_of_turn_script)
}
towers_moved = true;
wait_timer = 0;
exit
}

towers_moved = false;
pawns_moved = false;
wait_timer = 0;
end_of_turn = false;
}
Kekruator228 07/11/19 Чтв 16:34:41 62130538
>>620906
Пошаговые имеется ввиду где ты тыкаешь юниту куда бродить, и, зданию строиться, проходит N-ое количество ходов и то построится и вот ето вся тема?
Так че там писать. Делаешь два объекта(парент построек и юнитов)+счетчик ходов. Делаешь так, чтобы была кнопка завершить ход, и счетчик добавлял всем дочерним объектам + в переменную. Ети дочерние товарищи смотрят, задавал ли им игрок(ну или ИИ) команду, и, если задавал, то вычитают процент от счетчика ходов в зависимости от действия. Сами же действия как команды пишешь в дс листе каждому.
К примеру есть юнит, который за ход бегает 10 клеток. Знач одно передвижение на клетку = 1\10 хода. Тыкаешь ему бегать на 20 клеток, он 10 раз сделает, а на 11 уже счетчик хода =0, и он встает и не ходит 11 раз. Можно задать вопрос:" но ведь прибавляется даже если не было совершено обнуление, че делать?" - делаешь обнуление всем, после проверки действий, вот и все. Если здание строится не за ход, а за десять, то делаешь так, чтобы здание каждый ход ставился другое дейсвтие в лист.
Разжевываю подробнее. Делаешь в дслистах приказы юнитам+параметры(тоесть 1 дс лист для названия приказа, и еще 2 сверху для параметров. можно меньше, но я делал ртс и мне 3 было збс. использовал третий доп. для проверки"тыкнул ли пидор на игроке для команды [ходить] куда ходить". Опять таки, ето я дебил, можно меньше).
Когда игрок тыкает завершить ход, то счетчик добавляет всем объектам( with (par_unit) {TurnStep +=1;}). У тех примитивный код и максимально шаблонный в степе, в котором идет проверка, если тот ход >0, то он смотрит есть ли приказ в дс листе. Если есть, то делает скрипт с параметрами из дслистов. Скрипт пишется в какойто левый объект, можно в тот же счетчик в криэйт( OrderScript[? "Move"] = asset_get_index("scr_move"); ). Сам же скрипт делается через script_execute(cmd_list[|0]). В самом скрипте опираешься на параметры в других дслистах. Приказ добавляешь, добавляя в 1 лист название команды, во 2 лист первый аргумент, в 3 лист аргумент второй.
Это можно сделать изич, можно изхуевертить, можно сделать по другому и лучше, можно сделать по другому и хуже. Все в твоих руках, и я тебе предоставил идею "КАК". Удачи, и, если выпустишь игру, то прошу скинуть сотку на дошики в карту XD
Аноним 07/11/19 Чтв 16:36:21 62130639
Как лучше всего записать видео геймплея из разрабатываемой игры?
У меня есть Bandicam, он нормально записывает, когда игра в окне, но в полноэкранном режиме записывает черный фон, что бы я не делал.
Kekruator228 07/11/19 Чтв 16:37:56 62130740
>>621306
попробуй OBS
через него можно и стримить, и записывать.
Аноним 07/11/19 Чтв 16:53:15 62130841
>>621306
У меня нормально записывает бандикам полноэкранный режим гейммейкера.
Можешь fraps попробовать. Я лично фрапс предпочитаю.
Аноним 07/11/19 Чтв 23:21:23 62140442
>>621307
Спасибо, пришлось немного его поковырять, но более-менее работает.
Аноним 08/11/19 Птн 21:36:13 62154843
Писать под этот движок можно только на их поделии GML или есть возможность на настоящем языке программирования писать?
Аноним 08/11/19 Птн 21:54:07 62155444
>>621548
Если ты про то, что внутри гма можно ли подключить другой язык - нет. Однако, если ты шейдеры пишешь, то там все на "настоящем языке программирования".
А так хз, как по мне язык нормальный. Да и гамак вполне вывозит все это(если ты делаешь 2д игру)
Аноним 08/11/19 Птн 22:01:02 62155845
>>621554
Я про настоящий язык вот к чему: не было ли у тебя и у анонов в принципе ситуаций, когда язык НЕ ВЫВОЗИТ твоих хотелок, не дает развернуться с твоим видением функционала игры?
Аноним 08/11/19 Птн 22:08:22 62156646
>>621558
У меня было, но в итоге оказалось что это я тупой. К примеру, я хотел сделать Terraria-подобный мир(майнкрафт с боку). Ну и хуле, полез рисовать каждый блок через форы. Если мир маленький то охуенно, но если больше той коробки, в которой живу, то лагает.(~0 FPS)
Полез рисовать только блоки, которые в зоне видимости, и оп +100 фпс(Ето больше в 100 бесконечностей раз)
Потом допер до сурфейсов, и рисую мир чанками. Тобишь вот мир, где блоки в сетке. Разбиваешь мир на квадратики, и, рисуешь квадратики в сурфейсах. Сурфейсы хранишь дето, и, +2000 фпсов
В итоге, даже если у тя другая тема, то вот немного инфы. Любая хуета в рисовалке давит на проц, а проц у тебя не для графики. Если хотишь чето рисовать пиздатое но у тебя лагает, то изучай как шейдеры рисовать в гамаке. Они юзают твою дырявую(ну у меня такая, мб у тебя тож) видеокарточку, изза чего не оч то и лагает.
Если же не в графике дело, то в говнокоде. Если не в говнокоде(но ето я прям пиздец как сомневаюсь), то подумай еще(все ли ты норм сделал, мб можно сделать по другому, мб можно оптимизировать), то вероятно ты нашел баг, который или фиксится чем то из интернетов, или фиксят(если юзаешь гмс 2).
как то так
Аноним 08/11/19 Птн 22:41:09 62157147
Аноним 28/11/19 Чтв 01:35:48 62522048
15741757627200.jpg (95Кб, 983x983)
983x983
Суп, анон
Наконец, набрался идей и смелости и решил сделать игрушку
Дано: умею худо-бедно рисовать и есть пара человечков (на подскоке), которые готовы выделить или сделать музыку; абсолютный ноль в игроделии, программировании; не разбираюсь в жанрах игры ММОРПГ я не знаю что это, например, могу описать Героев5, но не знаю в каком они жанре, различаю толкьо гоночки и шутаны, потому что они очвеидно гоночки и шутаны, так что с терминологией и у меня тугоникак
Задача: Зделоть игру: пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... полностью 2д, простенько и в стиле игр на сегу и денди.
Чтобы основная игра была бродилкой вид сверху в одних уровнях, и сбоку, как типичный платформер, в других. Пример - игра Demolition man на сеге или, кому лень искать и играть, как вот тут - https://www.mspaintadventures.ru/?s=6&p=004692 - а её побочные квесты чтобы были разножанровыми.
Первое, что приходит в голову, конечно, гонки. Потому что гонки это круто и в зависимости от спрайтов и фона, это или гонки на авто по городу, или гонки на конях в прериях, или гонки на катерах в море, или гонки на самолётах. Например, как в Battletoads или уровень побега из пещеры в Аладдине - гонка вид сбоку в стиле "просто не въебись в преграду" А ещё именно гоночные уровни как тут https://www.youtube.com/watch?v=crZJn7gVJ1k А ещё ебошиловски в духе "беги-стреляй" в Contra Hard Corps https://www.youtube.com/watch?v=dJop8l6emb8 (с 3:51 до 6:51). Особенно круто, и особенно хочется повторить тот момент, когда вдруг гонка из 2д вид сбоку переходит в 2д вид спереди/сзади а-ля бонусные уровни в Sonic The Hedgehog 2 https://www.youtube.com/watch?v=JgbFHHHE4Vk А ещё драчки, потому что драчки это круто. Чтобы пара уровней в таком режиме "опиздюль всех на этом экране - перейди в следующий"(кажется, это битемапом называется) и заканчивая боссами, где драчки уже как в Мортал Комбате
И ещё арка с играми в стиле Позвоните Кузе, особенно как уровни с самолётом и шарами, в пещере с черепами и гонки в снежном спуске, примеры которых можно заметить тут https://www.youtube.com/watch?v=gmM67TWD5dM в первые же 60 секунд
А ещё хочется одну арку ввести в стиле Героев Меча и Магии, чтобы поездка по карте, сбор ресурсов, постройка города, набор юнитов и битвы армия на армию, но естественно в 2д плоскости, типа Героев 3.
Ну и мини-игры которые, я даже не знаю как описать. Кликер ли они илои что? Например, симулятор бабушки, где нужно связать на время Х швов за время, где одни кнопки отвечают за разные спицы, а другие - за типы петелек. Таких аналогов я даже не знаю, но включить тоже хочу.

Вот таков мой план.

Какая программа-игродельня способна помочь мне осуществить мою задумку, учитывая условия из пункта ДАНО?
Аноним 28/11/19 Чтв 01:41:37 62522249
-AlwUKQdfYs.jpg (138Кб, 604x556)
604x556
8OxonJargGM.jpg (388Кб, 1037x1080)
1037x1080
ACBuvPFcQX4.jpg (474Кб, 2560x1387)
2560x1387
pn76SDqVnbo.jpg (65Кб, 562x812)
562x812
Это всё я спросил в нуботреде, мне сказали навестить гамак, ноя заблудился и зашёл в РПГ-мейкер тред, но вот я здесь. Что скажете? С вашей игрософтиной я смогу исполнить задуманное?
>>625220-кун
Аноним 28/11/19 Чтв 09:44:14 62525950
Аноним 28/11/19 Чтв 10:35:35 62526451
>>625222
Либо ты используешь гамак и юзаешь драг-н-дропы - но это тебя сильно ограничит, и если ты захочешь что-то хоть чючють нестандартное, придётся изъебываться.

Либо ты пытаешься в кодинг на ГМЛ - это не так уж и сложно. Но зато можно сделать штуки гибче
Аноним 28/11/19 Чтв 10:39:11 62526552
>>625264
Во-первых в драг-н-дроп можно затащить окошко code и кодить. Так что никаких ограничений.
Во-вторых совсем извращенцем надо быть чтобы драг-н-дроп использовать. Это ж просто не удобно.
В-третьих ты что, собрался развёрнуто отвечать жирдяю?
Аноним 28/11/19 Чтв 11:20:27 62527653
>>625265
а мой ответ выглядел развёрнуто? я ж в тезисах.

про драгндропы я с тобой полностью согласен. Я имею в виду - есть индивиды который хотят шоб было как в констракте каком-то (шоб окошки таскать и циферки указывать), но при этом каких-то охуевших механик. Хочешь чего-то за пределами "идти и прыгать" - открывай код, пиши код.

Я
Аноним 28/11/19 Чтв 11:21:17 62527754
>>625276
- случайно отправил предыдущую хуйню

я в начале юзал криэйт, степ, алярм и дроу. Потом от алярмов отказался вовсе, превращают алогритм в ебаное спагетти.
Аноним 28/11/19 Чтв 11:27:04 62527855
>>625277
>Потом от алярмов отказался вовсе
И правильно. Алармы - для раг-н-дропщиков.

У меня на yoyo вышел целый холивар с защитниками alarma
Аноним 28/11/19 Чтв 11:28:18 62527956
изображение.png (5Кб, 424x231)
424x231
Иногда я натыкаюсь на код годичной давности и начинаю верещать от собственной тупости.
Вот под чем я, блядь, был.

Аноним 28/11/19 Чтв 11:30:35 62528057
>>625278
Ну я к тому еще, что если мне нужна какая-то отсрочка, я лучше самодельный таймер вхуярю прям. А то потом ищи, какой алярм за что отвечает, да еще и вызовы их в коде выглядят пиздец неочевидно и чужеродно

Draw за редкими исключениями - инструмент дебага.
Аноним 28/11/19 Чтв 11:33:23 62528158
>>625278
Ну и вообще, подавляющее большинство встроенных функций или переменных или эвентов - чорные ящики которые хуй пойми как работают и иногда делают не совсем то, что ты ожидаешь, а иногда - совсем не то, что ты ожидаешь.

Я так однажды узнал, что для гамака (студия 1.4) важна последовательность объектов в IDE, чуть ли не важнее последователньости спавна инстансов в руме. Сказать, что я охуел от такого - ничего не сказать.
Аноним 28/11/19 Чтв 11:59:55 62528559
>>625281
>последовательность объектов в IDE
Схерали?

комнаты можно goto_next_room() переключать по последовательности в ide.

А для объектов-то какая разница?
Аноним 28/11/19 Чтв 12:12:30 62528760
>>625285
А вот я тоже не знал. Но когда начал отсматривать коллизии объектов (для хитбоксов всяких там, где гарпун врага касается и всё такое) - выяснил вот такую хуйню.

Представь что коллизии с объектом obj_block обсчитываешь в объекте obj_player через какой-нибудь instance_place (ну вот нужен тебе айди, хоть тресни).

Если ты в IDE разместишь сначала obj_player, а потом obj_wall - коллизия будет срабатывать на один шаг позже.

Я когда делал гарпун (притягивание врагов к себе аля скорпион из МК или неро из ДМЦ) столкнулся с этим. У меня был объект "гарпун" собсна, и был объект "враг". Коллизия (гарпун коснулся врага) обсчитывалась в степе гарпуна.
Если в папке объекты сначала враг, а потом гарпун - реакция врага опаздывает ровно на один кадр. А если наоборот - тогда всё ок.
Это не всегда заметно, конечно, но случается.
Аноним 28/11/19 Чтв 13:03:56 62530861
>>625287
Ничего не понял.

>Представь что коллизии с объектом obj_block обсчитываешь
В тайловой игре делать коллизии с obj_block? А почему не с тайлами?

>через какой-нибудь instance_place
Я предпочитаю instance_position. Но допустим.

>Если ты в IDE разместишь сначала obj_player, а потом obj_wall - коллизия будет срабатывать на один шаг позже.
Вот этого уже не понял.
Т.е. если bbox объектов (в случае квадратных коллизий) пересекается,
instance_place тебе всё равно возвращает noone?
Я могу это представить что что-то может пойти не так, если у тебя объекты границами соприкасаются. Например bbox_top одного объекта == bbox_bottom другого. Из-за того, что ты к одному и тому же числу с разных сторон стремишься, а границы у тебя real.

Но мне кажется, что ты что-то не договариваешь. Например ты для движения используешься встроенные speed, которые хуй пойми когда считаются. Но здесь-то >>625279 я вижу vsp, так что всё норм наверное.

Я знаешь как делаю, чтобы такой хуйти не возникало никогда?

Все перемещения делаю в step. (т.е. всё что объект делает сам с собой он делает в step)
Все взаимодействия в end_step. (если ты хочешь сделать что-то с другим объектом. дождись пока этот объект не закончит собственные действия и делай с ним что хочешь)




Аноним 28/11/19 Чтв 13:28:43 62531862
>>625308
>почему не с тайлами
Начинал с простого, именно с объектов, и пока не хочу перехеривать всё под тайлы, но скорее всего рано или поздно к этому приду

Ну, я наверное хуево объяснил, и возможно у меня реализация чересчур замороченная и можно было бы проще. Но сделал как сделал. Скорости не встроенные, да. Изменение коориднат по скоростям (x=x+hsp например) сделано после всех коллизиий, во избежание.

Но вообще я говорил вот про что:

1) Гарпун "летит" во врага.
2) В тот кадр, когда он с ним соприкоснётся, он должен остановиться, и записать себе ID этого конкретного врага- это делается в степе гарпуна.
3) В том же кадре враг должен проверить - равен ли его собственный ID тому, что записан в гарпуне и если да - то отреагировать соответствующе. Это делается в степе врага.

Напоминаю, при столкновении гарпун останавливается и враг реагирует в одном и том же кадре . Это в идеале. На практике это происходит, если объекты расположить вот так:
https://i.imgur.com/cZNnK6Q.png

То есть - сначала гарпун (меч, и тд) а потом уже враг.
Если же поменять их, скажем, местами (сначала враг, потом гарпун) то тогда реакция врага будет на один кадр опаздывать. Потому что последовательность выполнения кода в степе инстансов (при условии что везде используются именно степы, а не бегин-энд степ) определяется последовательностью размещения объектов в IDE.

Аноним 28/11/19 Чтв 13:48:19 62532363
>>625318
>и пока не хочу перехеривать всё под тайлы
Надеюсь А-star у тебя не проверяет наличие объекта в каждом квадрате для построения пути? Представил себе 8000 коллижн чеков в степе

Тут бы я тебе посоветовал
ostatok_hsp += hsp
var current_step_hsp = ostatok_hsp div 1
x=x+current_step_hsp
ostatok_hsp -=current_step_hsp
для того, чтобы было пиксель-пёрфектное перемещение с дробными скоростями

>Но вообще я говорил вот про что:
>3) Это делается в степе врага.

Здесь проблема. Да, все твои перемещения выполняются в степе и, как бы, очерёдность создания объектов решает. Но ты же используешь place_ функции. В момент смены x координаты его маска коллизий не сдигается, его bbox не перевычисляются и т.д. Ты меняешь только встроенную переменную x. Остальные, зависящие от неё встроенные переменные, тоже изменятся. Но когда?

Я, честно говоря, не знаю, когда это делается. Это же чёрный ящик. Тут надо у разработчиков на yoyo спрашивать.
Но ты, вроде, выяснил на практике, что в gm1.4 этим параметры, видимо, пересчитываются даже в середине степ ивента, когда выполнен код для последнего инстанса этого объекта в комнате. И это довольно круто, это ознаечает, что если ты объект сдвинул в step_event в end_step ты уже будешь иметь его пересчитанные маску коллизий, bbox и т.д. Это надо бы проверить. Но мне лень

Поэтому ещё раз: если у твоего объекта координата меняется в step, то не лезь к нему взаимодействовать в step. Дождись end_step и тогда всё будет хорошо.



Аноним 28/11/19 Чтв 13:56:26 62532664
>>625323
А вообще в твоём типе игры, логичнее всего, наоборот - сначала в begin_step произвести все взаимодействия, а потом уже в step перемещаться.
В момент begin_step все параметры прошлого кадра точно будут пересчитаны.
Затем в step ты сдвигаешь x и тем самым даёшь движку команду пересчитать все параметры ещё раз. И тебе не важно когда это произайдёт, потому что в следующий раз ты к ним обратишься только в следующем begin_step.
Аноним 28/11/19 Чтв 13:58:02 62532765
>>625323
>Надеюсь А-star у тебя не проверяет наличие объекта в каждом квадрате для построения пути?

Единожды. Есть объект o_grid который при создании заполняет квадраты в зависимости от наличия там блока. Есть блок = -2, нет блока =-1. Конечно, тут могут возникнуть проблемы с one-way платформами и\или движущимися платформами, но углубляться и доводить до идеала это всё я не хочу.
Аноним 28/11/19 Чтв 16:23:07 62537066
>>625323
Есть немножко причин, по которым я хочу оставить пока всё как есть

1)лень
2) излишнее запутывание новыми эвентами
3) тут вот какая хуйня: кооридната по иксу меняется после проверки горизонтальной коллизии, а координата по игреку - после проверки вертикальной коллизии. Потому шо если проверять сначала обе коллиизии а потом смещать икс и игрек -хуйня получится.
Аноним 28/11/19 Чтв 16:51:24 62537367
есть какой-нибудь способ удалить все ресурсы неиспользуемые из проекта?
раньше можно было делать экспорт GMZ файлом а сейчас как?
Аноним 28/11/19 Чтв 17:31:23 62538668
>>625373
Хз, руками наверное. Как гамаку определить, что ты этот ресурс нигде не используешь?

Про экспорт хз. В gms2 можно просто брать папку с ресурсом. Там .уу файлик лежит - его потом можно импортировать.

Ещё есть ассетная библиотека, как туда что-то своё добавить - хз.
Аноним 28/11/19 Чтв 19:03:39 62539769
DDDTqVkGHZ4[1].jpg (127Кб, 1024x600)
1024x600
Ash2xso[1].png (73Кб, 1024x600)
1024x600
Просто от нехуй делать делюсь текущими проблемами. Ага, опять патфайндинг.

Пик 1 - враг может запрыгнуть на блок, потом пропрыгнать вертикально вдоль стены (которая справа от него) и проложить себе арку прыжка направо, когда запрыгнет на стену. Но при этом - он не может проложить арку прыжка налево, хотя должен. цифорки "-1" означают, что он даже и не пытается по какой-то причине. И вот эту причину я и пытаюсь найти

Пик 2 - та же ситуация, но теперь вместо запрыгивания - падение. С блока, на который враг упадёт - он может проложить путь и налево и направо.
Аноним 28/11/19 Чтв 19:23:52 62540370
1.png (39Кб, 1113x389)
1113x389
>>625397
Вот так в 2017 году выглядел кусочек проверки, можно ли двигаться моему объекту направо пешком.

В качестве того, через что тебе предстоит пройти, если ты хочешь запилить качественный пасфайндинг по тайлам со склонами, лестницами, прозрачными платформами и прыжками.
Аноним 28/11/19 Чтв 19:36:47 62540671
>>625397
> и проложить себе арку прыжка направо
Пустое дело. Тебе либо придётся делать так, чтобы враги прыгали именно по этой прямоугольной траектории, либо ограничивать себя в лвл дизайне.

Я тебе уже писал, что я определял прыжковые точки, эмулировал прыганье из них во всех возможных направлениях со всеми возможными результатами, потом выбирал удачные, потом из удачных выбирал оптимальные.
Аноним 28/11/19 Чтв 20:17:01 62541672
>>625406
Ограничивать себя в левледизе - безусловно. Я не собираюсь делать слоупы, например.

Ну и до твоих уровней я заморачиваться не буду - мне достаточно дать врагу "пинок" куда ему идти. То, что есть сейчас - уже юзабельно, в принципе. Осталось только "нарастить" условий.
Аноним 28/11/19 Чтв 20:29:35 62541773
>>625406
Ну а если дело действительно НАСТОЛЬКО тухлое, то я просто, ну дропну идею, лол. Я уже считай как год сталкиваюсь со сложностями и пока что вроде отовсюду выкручивался
Аноним 28/11/19 Чтв 20:54:57 62542674
>>625417
Прыжок идёт по параболе, а в пути у тебя - прямые линии.
Тогда там, где есть прыжок ты всегда должен оставлять место для парабол.

Плюс есть же различия по высоте. С высокой платформы можно спрыгнуть на более низкую, например. Вот как у тебя на видео - сможет ли НПС найти путь на самую последнюю платформу?

Я пытался идти этим путём и у каждого края сканировал тайловую область на 16 тайлов вниз и 6 тайлов вверх в поисках кандидатов для приземления. Строил потайлово путь к этим клеткам.

Но в итоге всё упиралось в то, что находился потенциально возможный, кратчайший, но практически неправильный путь.
Аноним 29/11/19 Птн 01:30:45 62545975
>>625264
Что за драгон дроп?
>>625265
Кто жирный? Ты жирный, ёпта
Аноним 30/11/19 Суб 10:46:04 62572776
>>625426
>параболы
А зачем? Буду проверять коллизии , действия и дирекшен меж точками пути и менять-не менять стейт машины исходя из них. Не должно быть сложно, вот сегодня и займусь чтоб наглядно показать
Аноним 05/12/19 Чтв 17:26:21 62695277
Как в гамаке реализовать формулу треугольного числа одной командой, без циклов?
Чтобы было так:
если, например, i==0 то --> j=0=0
если, например, i==1 то --> j=1=1
если, например, i==2 то --> j=1+2=3
если, например, i==3 то --> j=1+2+3=6
если, например, i==4 то --> j=1+2+3+4=10
Аноним 05/12/19 Чтв 17:40:42 62696178
>>626952
Загони все нужные варианты в массив и бери их по индексу. А формула есть в википедии.
Аноним 10/12/19 Втр 11:45:28 62817179
>>617577 (OP)
Владельцы 2.0 тут?

Вообщем, лет так 8 назад я познал Game Maker 8.0, сделал пару игрушек, потом дропнул все это дело.
Сейчас увидел, что есть лицензия под смартфоны.
Насколько сложно делать игры именно под телефоны на нем? Опыта в этом у меня почти нет. Как быть с разными размерами экранов, расширениями и т.д. Есть ли тут некий встроенный эмулятор, на котором я смог бы менять размеры виртуального девайса?
Вообще, хочу делать для себя и души, но как только доходят мысли про разные экраны - просто пиздец, сразу паника. Может есть готовое решение, которое используют все, и не изобретают велосипед? Нет может же быть такой херни, что под каждую 2д игру схожего жанра каждый раз пишут костыли, что бы игра нормально отображалась на разных девайсах.
Вообщем если кто делал что-то под телефон именно на гаме макере 2.0, дайте советов чтоле.

И вопрос, в лицензии за 100$ я смогу убрать логотип yoyo?
Аноним 10/12/19 Втр 16:19:14 62825080
>>628171
Под телефоны не делал и не собираюсь.

Но какое тут отличие от обычной 2д игры, которую юзер может открыть на мониторе с кучей разных разрешений?

Я для себя нашёл такой выход:
Ресайз камеры под монитор + плавающие камеронезависимые элементы гуи, которые привязаны не к координатам а к соотношениям сторон.

>убрать логотип yoyo?
Ты о чём вообще? Какой логотип? Иконку значка сменить?
Аноним 10/12/19 Втр 17:33:00 62826581
>>628250
>>628171
У йойогеймс была в блоге огромная статья про то, как разбираться с разрешениями для мобилок. Гуглите.
Аноним 10/12/19 Втр 17:58:11 62827282
>>617577 (OP)
БЛЯБЛЯБЯЛЯ а где прошлый тред? Кто-нибудь схоронил? Там куча годной инфы была от гуру...
Аноним 10/12/19 Втр 18:02:53 62827383
>>628272
Там был движкосрач, поэтому мод удалил его.
Аноним 10/12/19 Втр 18:22:30 62827784
>>628273
Может предпоследний тогда... Короче, проёбано всё... Эх...
А какой может быть движкосрач, если всякому ясно, что гамак - лучший движок?
Аноним 11/12/19 Срд 10:53:14 62839885
Аноним 11/12/19 Срд 10:56:01 62839986
>>628277
Никакого движкосрача в гамакотреде никогда и не было. Эта чмоня >>628273 тебе врёт.

Аноним 17/12/19 Втр 10:24:31 62963787
как звуки из sound.yy в .wav перевести можно?
Аноним 17/12/19 Втр 11:11:32 62964288
Аноним 17/12/19 Втр 11:26:18 62964489
Аноним 17/12/19 Втр 11:32:02 62964590
>>629644
.yy это файл ресурса, а не звука, xml в котором прописаны свойства ресурса, в т.ч. путь до звукового файла
Аноним 19/12/19 Чтв 10:13:57 63005291
>>629644
все проще некуда
в папке с .yy лежит еще один файл пропиши ему в названии .wav
Аноним 03/01/20 Птн 23:49:48 63281592
Есть мануалы по GML? Начал пилить игру по видосикам на ютубе, но третий день понял, что язык на самом деле примитивный очень, хочу прям изучить его полностью, а уже потом садиться делать игру.
Аноним 03/01/20 Птн 23:59:47 63281993
>>632815
Прям даже не знаю, какие мануалы тебе нужны ещё. Есть суперподробный мануал по всем функциям гейм мейкера в самом гейм мейкере.

Что ещё нужно-то?
Аноним 04/01/20 Суб 00:38:02 63283194
>>632819
А в форме учебника нету? Желательно на русском языке.
Аноним 04/01/20 Суб 00:51:53 63283395
Аноним 04/01/20 Суб 01:05:29 63283696
Аноним 04/01/20 Суб 01:06:17 63283797
Аноним 04/01/20 Суб 01:24:26 63284098
>>632833
Тут, судя по оглавлению, простейшие понятия программирования.

if, while, switch, array и т.д.

Всё это пригодится для гамака (если ты ещё этого не знаешь), но это далеко не всё, что в гамаке есть.
Аноним 08/01/20 Срд 20:08:31 63393999
друзяшки, у меня вопрос на засыпку
Как изменить цветовой тон для целого тайлового слоя?
Вариант с шейдером не очень, тк уже есть активный и очень капризный шейдер
Аноним 17/01/20 Птн 13:45:58 636008100
>>633939
Если ещё актуально.

Я бы сделал instance layer перед и после тайлового слоя. который мне нужно перекрасить.

Создал бы объект-контроллер, который бы перед отрисовкой тайлов создавал сурфейс и делал таргет на него, + выключал твой капризный шейдер (если он постоянно работает) и включал шейдер перекраски. Далее отрисовка тайл леера на этот сурфейс и после него снова контроллер, который выключит красящий шейдер, включит капризный и нарисует полученный сурфейс на основном сурфейсе.
Аноним 18/01/20 Суб 14:45:56 636435101
>>636008
Спасибо за совет, но я в итоге сделал как последняя скотина
Создал дубликат слоя с черным покрасом :D
Аноним 22/01/20 Срд 14:08:28 637627102
Кто-нибудь юзает physics_particle уже?
Вроде новая тема, а гайдов кроме хелпа не встречал.
А хотелось бы конструктор эффектов физических...
Но мб у меня гугликулёз плохо развит и я не в курсе, просветите же меня святочи знаний и говна.
Аноним 24/01/20 Птн 04:03:15 638481103
>>617982
Налуркай GM 8.1 Lite, он распространялся бесплатно.
Аноним 24/01/20 Птн 10:05:51 638568104
>>617988
>Я знаю на доске троих, кто на гамаке серьёзные игры делает.
лол, что за серьезные игры?
Аноним 24/01/20 Птн 10:19:21 638571105
>>637627
>physics_particle

От тебя узнал об этой теме. Надо посмотреть что к чему.
Аноним 25/01/20 Суб 03:22:19 638816106
>>638568
>лол
Хуёл. Те, в которые можно поиграть.
Аноним 26/01/20 Вск 11:21:25 639110107
>>638816
Ну так назвал бы их, по мне так практически в любую игру можно играть.
Аноним 26/01/20 Вск 12:06:50 639112108
>>639110
Тема про гамак, а не про вниманиеблядей и перекидывания говнами "твоя игра не игра".

По гамаку есть вопросы? Го общаться. По вниманиеблядям есть вопросы? Иди в тред ТВГ.
Аноним 28/01/20 Втр 18:11:58 639552109
>>617577 (OP)
> Добро пожаловать в гамакотред - адекватный тред адекватного движка.
> Задумал сделать 2d игру и не знаешь с чего начать? Качай демоверсию гамака
> https://www.yoyogames.com/get
Что, простите? Где взять полную кряканую версию и почему юнити можно использовать бесплатно, а это нет?
Аноним 28/01/20 Втр 18:37:31 639556110
>>639552
> Где взять полную версию.
Лучше всего на стиме.

>Где взять кряканую версию
Насколько я знаю, нигде.

>юнити можно использовать бесплатно
Не совсем так.
Аноним 28/01/20 Втр 20:39:10 639568111
>>639556
У меня до сих пор кряканная работает
Аноним 28/01/20 Втр 21:05:17 639572112
>>639568
У тебя восьмёрка поди.
Аноним 28/01/20 Втр 23:14:13 639596113
>>639556
> Не совсем так.
Совсем так, меня ни в чем важном не ограничивают в юнити. А здесь я должен после месяца изучения дропнуть или заплатить. Спасибо, но нет.
Аноним 28/01/20 Втр 23:20:01 639599114
>>639596
> А здесь я должен после месяца изучения дропнуть или заплатить.

Я выбираю движок, лучше всего подходящий для моих задач. Ты выбираешь движок, исходя из его бесплатности. Каждому своё.
Аноним 28/01/20 Втр 23:32:07 639601115
>>639599
Конечно, я же ньюфаг.
Аноним 28/01/20 Втр 23:42:48 639602116
>>639599
Ставлю жопу, что у тебя такого профессионала первой версией гейммейкера тоже была либо крякнутая, либо купленая твоим заботливым работодателем, который еще и научил тебя на ней работать. Сомнительно что новый ньюфаг будет тратить месяц своего времени изучения геймдева впустую, чтобы потом пересесть на юнити.
Аноним 28/01/20 Втр 23:55:48 639604117
>>639602
Кому жопу анона? У нас тут бесплатная жопа анона образовалась! >Жопа анона уходит в зрительный зал.
Аноним 29/01/20 Срд 10:25:37 639654118
image.png (5Кб, 441x96)
441x96
Как фиксить? Спермерка. Гуглить не получилось
Аноним 03/02/20 Пнд 21:09:50 640801119
>>617577 (OP)
Привет, хочу запилить платформер-слешер. Что-то типа риск оф рейн. Были 2 попытки вката в геймейкер лет 10 и 5 назад, поэтому хочу на нем. С тех пор он выдал версию 2 и студио и еще всякого, что качать и как использовать? Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?
С чего вообще начать. Умею в фш, снимаю фото и записываю видосы почти профессионально, делал анимационные мультики в стопмоушене, рисовал пиксельарт и игрался с геймейкером до уровня простого пострелятельного уровня с одноклассницами. Но думаю, что не выдержу все вырисовывать с 0 в пикселе и отрисую как-нить в фш. Но че делать с анимацией и тд? Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?
Аноним 03/02/20 Пнд 22:00:54 640818120
>>640801
>Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?

А гугл на что? https://help.yoyogames.com/hc/en-us/articles/230407528-GameMaker-Studio-2-Trial-Limitations

>С чего вообще начать.
С выбора палитры и боевых механик.
>Но че делать с анимацией
Для примитивной - spine. Сложную наверняка не потянешь.
>Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?
>>640801
>Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?

А гугл на что? https://help.yoyogames.com/hc/en-us/articles/230407528-GameMaker-Studio-2-Trial-Limitations

>С чего вообще начать.
С выбора палитры и боевых механик.
>Но че делать с анимацией
Для примитивной - spine. Сложную наверняка не потянешь.
>Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?
Вот у этого спрашивай: https://2ch.hk/gd/res/639675.html
Вкратце - рисовать и работать, работать и рисовать. Годами.

Вкратце - рисовать и работать, работать и рисовать. Годами.
Аноним 03/02/20 Пнд 23:30:36 640849121
>>639572
Нет, Studio 2 крякнутая.
Аноним 03/02/20 Пнд 23:54:16 640852122
image.png (243Кб, 1280x720)
1280x720
Так, начинаю вопрошать. Ставить игру на 60 фпс, не будет же игра написанная на с++ и с пиксельным графоном у кого-то лагать? RoR тот же у меня идет отлично в 120фпс. Как в дальнейшем разобраться с размерами экранов у других пользователей? Мне делать игру в фуллхд разрешении и потом если чо кому-то перешакалит на его 1200 монитор?
Скачал триал, потом куплю, если не заброшу вот это вот все.
И история, оформил уже вопрос и решил проблему. Изучал гейммейкер и у меня фотография кошки стала кистью и я не понимал че делать, но терь понял.
Для начала я хотел спросить - как убрать ебучую кошку? Или я пытался скопипастить слой при создании кадра чтоб получить анимацию и при контрл в мне вылезает картинка и привязывается к указатель, ползает за ним. И не уходит....
Аноним 04/02/20 Втр 04:25:22 640859123
2020-02-04 04-1[...].mp4 (11888Кб, 1920x1080, 00:00:36)
1920x1080
>>640852
Вот такой вот прогресс, если кому интересно. Пока просто обучаюсь. Есть вопрос по коду.
Имеется такой кусок кода. Это все про то, когда пулька долетает до астероида, а он разлетается на 2 поменьше. В примере мне сказали, что нужно использовать
with(other)
{instance_destroy()}

Я так понимаю это берет данные всех, кто с ним столкнулся и выполняет следущие действия, которые прописаны в кавычках. Только у меня это почему-то не работает совсем. То, что в кавычках перестает работать, как будто его и не было или закоментировано. В чем может быть проблема? Без этого кода все норм работает. Убирать лишнее, конечно интересно, но мне еще с этим много работать и хотелось бы разобраться.

Мой код:

instance_destroy();
Вписать кусок кода сюда. Разумеется, скобку суем в конец.
if(sprite_index = astr3){
repeat(2){
var new_assteroid = instance_create_layer(x,y,"Instances", obj_assteroid);
new_assteroid.sprite_index = astr2;
}
} else if (sprite_index = astr2){
repeat(2){
var new_assteroid = instance_create_layer(x,y,"Instances", obj_assteroid);
new_assteroid.sprite_index = astr1;
}
}
repeat(10){
instance_create_layer(x,y,"Instances", obj_debris);
}



Аноним 04/02/20 Втр 09:36:41 640885124
>>640852
>Ставить игру на 60 фпс
Да
>Как в дальнейшем разобраться с размерами экранов у других пользователей?
Задавай размер камеры равным разрешению монитора игрока. Делай ориентируясь на размер экрана 1080р, но так, чтобы и в 720р всё тоже вижно было. Делай плавающий гуи, привязанный не к координатам, а к сторонам камеры.
>как убрать ебучую кошку?
Выбери другую кисть.
Аноним 04/02/20 Втр 10:05:49 640893125
>>640859
>Я так понимаю это берет данные всех, кто с ним столкнулся и выполняет следущие действия, которые прописаны в кавычках.

Не правильно понимаешь. Это ссылка только на один объект из тех, с которым ты столкнулся. И работает только в collision event, а не в step.

Сойдёт для простого проекта, но не сойдёт для сложного.
Если хочешь одной пулей наносить урон сразу всем астероидам, с которыми она столкнулась:

Создай вот такой скрипт
https://www.gmlscripts.com/script/instance_place_list
И потом:
var hit_list = instance_place_list(x, y, obj_enemy);
if (hit_list != noone) {
var n = 0;
while (n < ds_list_size(hit_list)) {
with (hit_list[| n]) {
hp -= 1;
}
n += 1;
}
instance_destroy();
ds_list_destroy(hit_list);
}
Аноним 04/02/20 Втр 14:50:36 640931126
Аноним 04/02/20 Втр 23:17:49 641031127
Не могу сделать так, чтоб снимало только одну жизнь за касание с врагом.
Вот что у меня в коде, где один предмет сталкивается с другим. Проблема в том, что оно успевает касаться много раз и при одной секунде сгорает жизней 20+. Походу оно считает касания по каждому обновлению экрана, а не один раз. Как фиксить такое?
1. Вариант как-то заставить убавлять хп только 1 раз.
2. Отталкивать предметы друг от друга\уничтожать оба\делать неуязвивым и тд. Как-то костыльно, хотелось б первый пункт.

instance_destroy(); -уничтожается гг для показательного перерождения.
global.jiza -=1; -снимается 1 хп.

if(global.jiza >=1){
instance_create_layer(x,y,"Instances", obj_ship) - тут координаты изначально были центром, но я решил в том же месте.
}
Аноним 04/02/20 Втр 23:55:09 641038128
>>641031
ставь флаг и снимай его по кулдауну
вариант 2 это и есть вариант 1
Аноним 05/02/20 Срд 00:38:16 641042129
>>641038
Окей, тогда так и сделаю. Сделал в итоге перезагрузку лвлва и спавн посередине.
Теперь мне интересно, че делать с музыкой. Вот я сделал переменную, куда зарандомил 5 разных треков. При смерте гг музыка должна играть дальше, но смэрть я сделал рестартом уровня и соответственно врубается еще песня и так до бесконечности.

snd = choose( snd_al, snd_psk, snd_un, snd_ki, snd_pl);
if(audio_is_playing(snd)){
audio_stop_sound(snd);
}
audio_play_sound(snd, 2, true);
Такой вариант не помогает, почему-то все равно играет дальше и накладываются новые песни. Что можно сделать?

Аноним 05/02/20 Срд 01:01:37 641046130
>>641042
Сохраняй переменные в ini файл. При запуске игры проверяй переменные в этом ини файле. Ели они говорят что должен играть такой-то трек с такой-то милисекунды, то запускай его с этой милисекунды, после чего присваивай этим переменным значение, которое скажет, что нужно выбрать случайный трек и начать его с 0 милисекунды.
Аноним 05/02/20 Срд 01:06:38 641047131
>>641046
ini_open(saved_data)

var _track = ini_read_string("saved_music ","saved_song","choose(msc_1,msc_2,msc_3,msc_4,msc_5 ")
var _second = ini_read_string("saved_music ","saved_second","0")

var _snd = audio_play_sound(_track , 0, false);
audio_sound_set_track_position(snd, _second );

ini_close()

как-то так.
Аноним 05/02/20 Срд 01:29:48 641053132
>>641046
бля сложновато, я ток первый и то пример пилю чтоб разобраться на 2й день, но походу разбираться придется подольше. Кстати есть вариант нормально делать игру на драгндропах? А то я не смог в них даже ходьбу и повороты осилить
Аноним 05/02/20 Срд 09:40:22 641094133
>>641053
>бля сложновато
А ты не перезапускай игру на смерть игрока. Game_restart не для этого.
Сделай скрипт завершения игры, который уничтожит объект игрока, сбросит текущий счёт и т.д, а потом переместит игру в комнату с главным меню. В которой игрок нажмёт на кнопку "новая игра", чтобы переместиться в игровую комнату.

>есть вариант нормально делать игру на драгндропах?
Drag-n-drop это стрельба себе в ногу. Очень неудобная фигня.

Аноним 05/02/20 Срд 16:47:10 641179134
2020-02-05 13-4[...].mp4 (39134Кб, 1920x1080, 00:02:00)
1920x1080
>>641094
Я решил перезапускать именно комнату игровую. Смог решить проблему с аудио, но в том смысле, что начинается новый трек с перезапуском комнаты, а остальное аудио_стоп.
Собсно вот некая игра получилась, вместо музыки накидал туда гачимиксов. Нарн и дальше буду её понемногу в какую-то сторону развивать. Но сча буду уже пытаться в метроиданию. Есть какие годные уроки по ним? Или исходники, которые стоит глянуть?
Аноним 08/02/20 Суб 00:52:05 641710135
>>641179
Тестирование я знач закончил. Придумал сюжет. Более-менее геймплей и стиль графики. Завтра начинаю понемногу. А пока расскажу, что придумал.
Значит имеем 2х действующих героев, один из который основной, а другой дополняющий, как в файтингах-нарутах бывает: жмешь кнопку и прилетает герой, раскидывает пинки врагу и сьебывается.
Из метроидании я хочу сделать фильмичный адвенчер-муви с элементами слешера. Вместо тупого рубилова - изучение врагов и их слабых мест, а уже потом рубилово.
Так же в игре хочу запилить эволюцию врагов, главных героев, их способностей и игровых уровней. Все это я придумал, как обосновать с помощью сюжета.
Интерфейса по минимуму или 0 и постараюсь обойтись интуитивно понятным управлением. Вместо полосок жизни попробую изобразить их на гг.
Хочу добавить некий бестиарий врагов и систему выбора новых умений типа переката, рывка, полета и тд. Все это привязывается к чекпойнтам на уровнях: дошел до нужного места - получил. Потому что планирую делать уровни абсолютно линейными и проскриптованными самому, не хочу заморачиваться со всякими такими ии для врагов и их спавном, хотя мб было бы круто. Посмотрим что я смогу на этот счет.
Но в то же время хочу нелинейность прохождения, как у холлов найт. Типа к концу можно прийти разными путями и не исследовать мир полностью.

Сразу спрашиваю технические вопросы о том, как сделать плавнуюююю камеру как в каком-нибудь грис? И как делают просто длинные уровни, где гг долго идет в одну сторону: это одна длинная игровая комната? Как тогда быть с разрешением экрана и комнаты для нее? делать 10к на 10к пикселей полотно? Например, я хочу сделать чтоб максимум было 1080 разрешение, а что делать для поддержки форматов побольше или поменьше? Хочется делать так, чтоб я рисовал куст на фоне и он все время просто был в своем месте, без всяких адаптивных формул, как в вебе с сайтами делают. Без вариантов что куст куда-то уедет или жутко перешакалится.

Шоб сильно не заебывать этот тред историями, я запилил канал в тг, мб кому интересно будет. @gamedev_gd

Аноним 11/02/20 Втр 13:42:38 642330136
>>617577 (OP)
Максимально тупой вопрос, но: как мне дать переменной значение определённого цвета по RGB? Какую команду указывать после знака равно? Заранее спасибо.
Аноним 11/02/20 Втр 14:35:01 642346137
Аноним 11/02/20 Втр 16:01:24 642365138
Аноним 11/02/20 Втр 17:35:21 642383139
Я смогу сделать на нем интерактивную карту? Банально нажимая на область и читая инфу о ней.
Аноним 11/02/20 Втр 17:40:00 642385140
Аноним 11/02/20 Втр 17:56:43 642389141
>>642385
Просто Construct послал меня с огромным размером карты. Крч в годоте делаю.
Аноним 11/02/20 Втр 18:11:39 642394142
>>642389
>послал меня с огромным размером карты
Как он это сделал?
Аноним 11/02/20 Втр 19:32:11 642420143
>>642394
Отказался запускать, сказал что спрайт не может быть больше 2048 на 2048, а я решил не копротивляться и пошел в более понятный и родной годот.
Аноним 11/02/20 Втр 21:10:15 642478144
>>642420
Гамак такой спрайт тебе, альтернативно одарённый, пережмёт под размер texture page.
Аноним 12/02/20 Срд 05:29:21 642538145
>>642478
Поэтому я разрезал его на 8 частей
Аноним 12/02/20 Срд 08:25:44 642546146
>>642538
У тебя как интернет вообще? Быстрый? Если медленный, то понаблюдай за любым сервисом карт и навигации, гуглкарты там или яндекскарты, посмотри, как они подгружают выбранный тобой масштаб. Там подгрузка чанками идёт. В любом движке. Тебе не движок запрещает пихать такие ресурсы одним куском в видеопамять, а сам комп.
Аноним 12/02/20 Срд 13:47:09 642591147
>>640849
Ссылкой поделишься?
HarmizVenZZZ 16/02/20 Вск 19:46:44 643365148
>>640849 второй гмс работает аналогично стиму. При этом, в отличии от стима там нет оффлайн режима. Так что хакнуть новую версию не получиться.
Когда-то была версия, где йойо-бляди не доделали проверку, изза чего благодаря дыре в коде проверки что-то в торрентах лежало. Однако, они переделали всю проверку с клиента на сервер(от тебя только аккаунт идет), и "разрешение" выдается лишь сервером.
Они это вроде сделали когда ввели триал месячный( я хз когда они его ввели, сам пираткой пользовался)
Я не отрицаю возможности чето лазить в кодах клиента гамака, однако, мне кажется, что люди, которые им пользуются на это не способны
мимо индигеймдэволепер
Аноним 16/02/20 Вск 20:33:49 643374149
>>643365
Всё можно хакнуть, в том числе и это говно, подсовывая ему желаемый ответ от сервера. Никто просто не хочет заморачиваться, по разным причинам: каким-то группам заплатили, каким-то похуй.
HarmizVenZZZ 18/02/20 Втр 23:51:38 643753150
Товарищи Аноны!
Я уже пол года ебусь в гамаке, и чето сложно, но выходит. И вот возник вопрос:
Много ли тут таких, кто выпустился в стим? Или на дваче(включая итт) никто не решается проекты пилить в гамаке?
Аноним 19/02/20 Срд 04:05:28 643758151
>>643365
Так я вроде крякнутым триалом и пользовался, где срок триала потом сбрасываатся.
Аноним 19/02/20 Срд 07:54:42 643762152
Аноним 19/02/20 Срд 10:30:05 643772153
HarmizVenZZZ 19/02/20 Срд 13:07:11 643783154
>>643772 выглядит, мягко говоря, удручающе
>>643762 это чуть лучше, но все равно что то стремно хд
Аноним 19/02/20 Срд 13:09:59 643784155
>>643783
Твоя-то, ясное дело, лучше. Но ты её не покажешь.
Аноним 19/02/20 Срд 14:03:32 643787156
>>643772
Котел, тебе же написали "В СТИМЕ"
ты со своими заброшенными технодемками не суйся
Аноним 20/02/20 Чтв 01:52:29 643867157
>>643784
увы, пока что показывать нечего
надеюсь через 4 месяца в стим залететь и потом хвастаться на весь двач :D
Аноним 23/02/20 Вск 00:56:28 644360158
>>617577 (OP)
Сап аноны, смотря англоязычные гайды, столкнулся с проблемой
используется функция grid_place_meeting(object,grid), но по ней даже не нашел в матчасти страницы, да и геймейкер начинает считать его переменной, что делать? Есть ли альтернатива?
Аноним 23/02/20 Вск 00:59:18 644363159
>>639552
Могу кряк на мегу залить, ещё надо?
HarmizVenZZZ 23/02/20 Вск 06:19:09 644382160
>>644360
в гамаке ее нет, ее можно подрубить если ручками как новый скрипт
любую кастомную функцию надо подрубать как скрипт, т.е. для кастомной функции должна существовать у тебя в папке скриптов отдельный скрипт, по названию которого идет использование данной функции.
И изза того что у тебя нету данного скрипта гм и считает что данное название отсылает к какой то переменной
Аноним 23/02/20 Вск 10:39:35 644406161
>>617577 (OP)
Мне бы прототипчик собрать и переслать людям, у которых гамака нет, а триалка не может в .ехе. Раньше же вроде только под шиндошс собирала, это с 2.0 такая фигня?
короч нужны торренты походу.
Аноним 23/02/20 Вск 10:49:26 644407162
>>644382
Спасибо большое!
Аноним 23/02/20 Вск 10:52:45 644408163
Аноним 23/02/20 Вск 11:27:15 644409164
>>644408
Надо бы чтобы они поиграли - хотя бы выявить косяки в механиках.
Ладно поищу торренты ну или найду другой конструктор.
Аноним 23/02/20 Вск 12:16:25 644412165
>>644409
>выявить косяки в механиках
>на триалке

Ну выложи сюда проект в архиве, я тебе скомпилирую.
Аноним 24/02/20 Пнд 19:46:37 644791166
В нынешний GMS так и не завезли 3D, как в старые добрые 6-7-8 версии?

Алсо, как можно порешать проблему со старыми Stand-Alone играми (которые создавались ещё на том GM), которые вылетают на Windows 8/10, если одновременно проигрывается дохуя звуков (скорее всего, больше 10 за раз)?
Аноним 24/02/20 Пнд 21:40:10 644810167
>>644791
3д есть, но зачем он нужен в гамаке?
HarmizVenZZZ 24/02/20 Пнд 22:55:59 644827168
>>644791
во первых, для ВСЕХ старых игр можно попробовать поковырять экзе(там в свойствах - совместимость), также, если проблему интересно решать господам создателям етих ИГОР, то они могут банально перекомпилить проекты на новых гамаках
если те прям оч хочется "покопаться в истории" то можешь накатить виртуально старую ось(ну или не виртуально)
если есть исходники на старые гамаки, и есть именно только старый гамак, то новый может заглотить ети исходники. если же тебе интересно ковыряться именно в старом гамаке, то там мб есть моды какие то
однако вопрос: НАХУЯ ЭТО ВСЕ?
Аноним 24/02/20 Пнд 23:16:52 644830169
>>644827
Совместимость тут не поможет, так как игры пилились ещё в те времена, когда максимум существовала виста-хуиста.
Алсо, такой проблемы со звуком на stand-alonах, скомпиленных ещё на совсем древнем GM5 и раньше, нет (как и обратной совместимости с тем, что писали на GM6 и свежее).
Вангую, проблема кроется в ограничении одновременно воспроизводимых звуков на уровне венды, и куда копать - я хз.

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

Алсо, писать разрабам старых игр, которые за один вечер напилили игоря ещё в каком-нибудь 2004 году - ну блядь такое себе.
HarmizVenZZZ 24/02/20 Пнд 23:30:00 644832170
>>644830
а как по мне, то играть в такие игоры - ну блядь, так себе XD
Аноним 24/02/20 Пнд 23:39:53 644833171
>>644832
Не, ну иногда охота вспомнить, что за ру$$кое говно создавали во времена, когда интернет был роскошью, мамка денег на диски с игорями не давала, а желание убить время хотя бы тем же написанием примитивных игорь было.
Аноним 28/02/20 Птн 00:09:30 645449172
>>639556
>>639552
Ёбнутые? На рутрекере, блять.
https://rutracker.org/forum/tracker.php?f=1079&nm=gamemaker
>>639552
>почему юнити можно использовать бесплатно, а это нет?
Потому что юнити - тормознутое, сложное для изучения
говно, а это - нет.
>>640818
>Для примитивной - spine.
Лол.
>>644830
>в те времена, когда максимум существовала виста-хуиста.
Лол.
>>644833
Никогда такого не было.
Аноним 28/02/20 Птн 00:54:48 645453173
>>645449
>Никогда такого не было.
Было, даже когда компа не было
Аноним 28/02/20 Птн 01:24:18 645454174
>>643753
Не с харкача, но руSSкие делали, по-моему, на 1.4:
https://store.steampowered.com/app/538100/Feel_The_Snow/
Говно говна, разрабы говорили, что вдохновлялись террарией и неголодайкой, но кроме базовых механик выживалок на хуюнити нихуя и не сделали. Пилили в ёрли-аксессе три года или около того, уже не помню, перерывы между апдейтами были около года, в итоге зарашили кривой финал как могли, положительные отзывы в стиме скорее всего от их подсосов в группе вк.
Аноним 28/02/20 Птн 10:45:53 645483175
>>645454
Нихуя себе, тысячи подсосов купии игру и проголосовали положительными отзывами.
Аноним 28/02/20 Птн 10:59:49 645485176
>>645483
Да прикольная на вид, но тратить деньги или играть тратя время, желания нет.
HarmizVenZZZ 28/02/20 Птн 22:58:43 645585177
>>645454
я спрашивал на счет челов, которые сидят именно на дваче, и, пилят в гамак игры. с разрабами этой игры я знаком лично и на харче они не сидят))
они недобумеры которые про двач даже не слышали
Аноним 29/02/20 Суб 01:27:00 645600178
>>645585
>недобумеры
Ебать как машина ярлыков работает науадэйз.
Аноним 29/02/20 Суб 13:51:50 645627179
.png (151Кб, 347x294)
347x294
.png (18Кб, 212x106)
212x106
>>645483
Не вижу противоречия. Кто-то делал положительные отзывы в ёрли-аксессе, когда ещё нихуя не было понятно, с тех пор не играли, скорее всего.
Аноним 03/03/20 Втр 14:59:11 646200180
>>617577 (OP)
Есть ли какие-нибудь адекватные туториалы, написанные ТЕКСТОМ, про спецификации языка GML? Чтобы пояснили за скриптинг, за наследование и прочее. А то что я ни открою — сойбой поясняют сойбоям как делать платформер или какая-нибудь хуйня в духе «40 игровых механик для вашей РПГ».
Аноним 03/03/20 Втр 15:02:36 646203181
>>646200
Встроенный мануал суперподробный, читай его.
Аноним 03/03/20 Втр 15:03:55 646204182
>>646200
Не, я заебался буду просто читать документацию.
Аноним 03/03/20 Втр 15:05:00 646205183
Аноним 03/03/20 Втр 15:06:14 646207184
>>646203
Спасибо, отзывчивый анон.
Аноним 04/03/20 Срд 00:10:49 646426185
неожиданная проблема не знаю куда пойти. делал таскай\кидай по видосу https://www.youtube.com/watch?v=_lKgF-PaB2Q&t=812s все получалось до момента когда настраивал статусы игрока. когда происходит коллизия сразу же виснет игра, причем пробовал на разных компах на моем, слабом, и по мощнее. ошибку не выдает, да и не факт что она есть, тк там скриптов пару строк
Аноним 04/03/20 Срд 00:35:31 646431186
>>646426
Виснет - значит бесконечный цикл у тебя где-то.

Запускай игру в дебагере, потом, когда "зависла" сразу ручками врубай паузу. Она сработает.
Затем жамкай f10 пока не увидишь бесконечного цикла. Ну или сразу цикл проверяй.

А вообще телепаты в отпуске - код в студию.
Аноним 04/03/20 Срд 02:23:31 646436187
.png (81Кб, 898x719)
898x719
.png (462Кб, 1071x303)
1071x303
У меня вопрос нестандартного типа. Когда-то более-менее освоил базовый хаха кодинг при помощи РПГМейкера, по крайней мере понял, как в общих чертах работать с переменными в других двиглах, благодаря чему научился делать относительно продвинутую хуйню в своих кругах. Так вот вопрос: скрипты в гамаке - это как каммон эвенты, которые ты можешь вызывать в других эвентах для активации какого-то процесса вместо того, чтобы расписывать всё это охуллион раз? Я, конечно, понимаю, что нормальные движки и конструкторы для детей - это разные вещи, но мало ли.
1500 часов спрайтинга в гамаке, код дальше базового передвижения по гайдам не осваивал
Аноним 04/03/20 Срд 02:39:02 646439188
>>646436
чтобы в объекте А выполнялся код объектом Б нужно в объекте А написать:
with (объект Б)
{
собственно код
}
если ты хош писать чтоб цвет поменял, то image_blend меняй так, ну или можно в объекте А написать:
objectB.image_blend = huy
если ты хочешь со всеми объектами хуйню крутить, то делаешь виз. Если хотишь делать с одним, то второе(но тогда он будет делать чето с первым созданным экземпляром объекта). Если хочешь чтобы работал с конкретным, то пытаешься его индекс(хуета для адресации) куда то впихать, к примеру во временную переменную, а дальше также как во втором варианте. Чтобы индекс взять нужно работать или через инстанс криейт или колижен.Также есть функции, возвращающие индекс
В итоге оно выглядеть будет как то так:
var B = instance_create(x,y, objectB);
B.image_blend = huy
Если хочешь не со всеми объектами Б делать, а лишь с горсткой, то пихаешь их в дс-лист, и через фор прогоняешься по ним. Пример:
var _list = ds_list_create();
collision_circle_list(x,y, 16, _list)//не помню всех аргументтов, но там есть штука куда лист пихать
for (var i = 0; i < ds_list_size(_list); i++)
{
_list[| i].image_blend = huy;
}
ds_list_destroy(_list)//после того как лист отработался, его надо удалять. иначе память жрать не ту бушь и комп при малой оперативке может хуету в игре выдавать
если же хочешь чтобы он собирал лист не по функциям, а смотрел по переменной какой то то можно сделать так:
var _list = ds_list_create()//перед работой с листом его над создать
with (objectB)
{
if peremennaya = "хуета которая нужна" then ds_list_add(_list, self);
}
а дальше также как и при работе с листом выше
А почему внутри кода тут я к листу обращался без адрессации(тоесть в коде другого объекта тыкал переменную другого объекта)? А потому что если у тебя в коде при событии введена временная переменная, то ее в виз можно использовать без адресовки. Если же ето не временная, то там пишешь не просто ds_list_add(_list) а ds_list_add(other._list)
other - хуета которая в визе хранит индекс объекта, который етот виз написал. Также его можно использовать в событии типа столкновений(колижен или collision), они отсылают к объекту с которым столкнулся
Советую почитать побольше по дс-листам в справке + справку гамака(даже с переводчиком)
Если же ты хочешь, чтобы код который написан в событии объекта Б исполнялся по желанию объекта А, то можешь:
- поковырять справку, тк сто проц функции для этого есть
- писать код события объекта Б в скрипт, и писать внутри объекта А:
with (objectB)
{
название_скрипта(аргументы скрипта, если ты их пихал канеш)
}
Аноним 04/03/20 Срд 02:45:35 646440189
>>646439 (ито еще я)
Я думаю мб по рофлу начать пилить ролики, в которых поясняю приколы по скрипту(не как делать хуету просто втыкая скрипт, а поясняя как работает оно все)
Есть желающие смотреть?
Аноним 04/03/20 Срд 02:57:43 646442190
.jpg (20Кб, 598x480)
598x480
>>646439
Нуууууу это прям дохуя информации за раз для такого дерева, как я. Спасибо, конечно, анон, как-нибудь вычленю из этого что-нибудь полезное. Единственное, что более-менее понял
>Советую почитать побольше по дс-листам в справке + справку гамака
Вот эта хуйня не раз всплывала в видосах Friendly Cosmonaut, в общих чертах понимаю, что это. А так код гамака для меня пока что очень сложен, потому что до этого я работал с двиглом, где персонаж магическим образом сам ходил и более-менее сам организовывал боёвку. Собсна, поэтому я на большую часть твоего текста я сейчас смотрю с полным непониманием. Разве что худо-бедно понял, как выводить базовый инвентарь по гайдам той же FC, вот и всё.
>>646440
>Есть желающие смотреть?
Я!
Аноним 04/03/20 Срд 10:20:41 646467191
>>646442
Тебе чел расписал в общих чертах, как обращаться к другим объектам. Причём весьма сумбурно.

У тебя вообще был несколько другой вопрос:
>скрипты в гамаке - это как каммон эвенты, которые ты можешь вызывать в других эвентах для активации какого-то процесса вместо того, чтобы расписывать всё это охуллион раз?

Не знаю, что такое камон ивенты в рпг мейкере, но подозреваю, что они похожи на скрипты.

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

При этом можно поступить очень просто, и написать у каждого врага в ивенте obj_player.hp -= 1
Но это подходит только для очень простых игр. Если у тебя что-то по-сложнее, то ты создаёшь скрипт
sc_deal_dmg_to_player() и заменяешь строчку obj_player.hp -= 1 на него. После чего начинаешь игру развивать.

Попробую пояснить, как выглядит процесс.

Определяешь набор параметров, которые необходимы для того, чтобы наносить повреждения игроку.
Самое простое - величина урона. damage
Например ты хочешь, чтобы падающий сверху камень убивал игрока сразу, а укус собаки наносил 1 единицу урона.
Значит камню нужно назначить damage = 100 а собаке damage = 1.

Что ж, значит теперь от разных объектов приходит разный урон. Строчка obj_player.hp -= 1 нам теперь не подходит.
Меняем скрипт. Добавляем в него аргумент. Пусть скрипт внутри выглядит так:


///@param0 damage_to_deal
var dmg = argument0
obj_player.hp -= dmg

и вызывается он теперь так:
sc_deal_dmg_to_player(damage)

Так, уже можно наносить разный урон. Но нафига нам всё же скрипт, не очень понятно. Продолжим усложнять.
Добавим третьего врага - лягающуюся лошадь. Она наносит игроку 2 единицы урона и отбрасывает его назад. Хм..

Значит для нанесения урона теперь мало только знать damage. Нужно ещё в некоторых случаях отбрасывать игрока. Добавляем значит каждому врагу параметр knockback_power
Камню knockback_power=0
Собаке knockback_power=0
Лошади knockback_power=10

Меняем скрипт

///@param0 damage_to_deal
///@param1 knockback
var _dmg = argument0
var _kb = argument1
obj_player.hp -= _dmg

if _kb>0
{
var _kb_dir = point_direction(x,y,obj_player.x,obj_player.y) //вычисляем направление оброса

with obj_player{move_contact_solid(_kb_dir ,_kb )} //двигаем игрока в направлении отброса на силу отброса
}

А сам скрипт вызываем так:
sc_deal_dmg_to_player(damage,knockback)

Прикольно. Но всё равно, пришлось поменять create event каждого врага, добавив туда строчку knockback_power=0
И step_event каждого врага, изменив вызов скрипта с sc_deal_dmg_to_player(damage) на sc_deal_dmg_to_player(damage,knockback)

Так прекратим и это.

Предположим нам для описания всех типов урона понадобится 10 переменных. Для всяких станов, кнокбэков и т.д.
Где-нибудь в основном игровом объекте делаем enum - перечисление переменных
enum d_params
{
damage,
knockback_power,
stun_duration,
slow_debuf_duration,
disarm_debuf_duration,

number
}
Здесь мы перечисляем все необходимые для нанесения урона переменные. В конце пишем number чтобы можно было получить длину этого списка.

Модифицируем create_event каждого врага следующим образом

damage_parameters = array_create(d_params.number,0) // создаём массив, в котором столько же переменных, сколько в нашем списке и все они имеют значение ноль.
Потом, если нужно, выставляем отдельным переменным значение.


Для лошади, например пишем
damage_parameters = array_create(d_params.number,0)
damage_parameters [d_params.damage] = 2
damage_parameters [d_params.knockback_power] = 10

Получается лошадь может наносить 2 единицы урона и отбрасывать от себя на 10 пикселей.

Меняем соответственно скрипт sc_deal_dmg_to_player()
Пусть он теперь вызывается у нас так: sc_deal_dmg_to_player(damage_parameters)

А внутри у него сидит:
var _inc_array = argument0

var_dmg = _inc_array[d_params.damage]
var _kb = _inc_array[d_params.knockback_power]
var _std = _inc_array[d_params.stun_duration]

//обработка урона
if !obj_player.invulnerable obj_player.hp -= _dmg

if _kb>0
{
var _kb_dir = point_direction(x,y,obj_player.x,obj_player.y) //вычисляем направление оброса
with obj_player{move_contact_solid(_kb_dir ,_kb )} //двигаем игрока в направлении отброса на силу отброса
}

if _std>0
{
obj_player.stunned = true;
}


Отныне ты можешь в любой момент модифицировать то, как наносится урон игроку (заметил, я ввёл игроку параметр "неуязвимость") и это изменение коснётся сразу всех врагов. наносящих урон.
А как только ты захочешь ввести новый параметр урона, ты просто допишешь его в список enum, назначишь нужным врагам его величины и допишешь в скрипт его обработку.

Такие дела.

А в последствии ты сможешь, например, задавать все параметры врагов через ini файл. И каждый враг будет считывать свои параметры из этого файла. Когда врагов под сотню - это удобней.






Аноним 04/03/20 Срд 11:07:27 646474192
>>646436
>1500 часов спрайтинга в гамаке, код дальше базового передвижения по гайдам не осваивал

Если у тебя всё хорошо со спрайтами. могу написать для тебя какой-нибудь код, прокомментированный.
HarmizVenZZZ 04/03/20 Срд 11:13:33 646476193
>>646467
Ты канеш красиво все расписал, но по челу видно что он по написанию кода вообще новичок, а ты грузишь енумами)0
и я не могу понять почему у тя парамы в скриптах с цифрами, так можно чтоли? я арги писал, короче же, не?
Да и думаю, что писать скрипты нужно прям самому учиться, в плане чтоб не чел с двощей те писал, а ты сам гуглил да в справке ковырял
Да и лучше бы ты then пихать начинал, а то код читается сумрачно местами. В скобочках, где аргументы функций после запятых пробелы бы тыкать. я понимаю что как препод долбоеб впрягаю, сам так даж думал. в итоге у меня проект дохуя вырос и я его даж переписывал, и чето так лучше рили когда формализация аккуратнее
На счет параметров и иник - я бы создал один объект, в котором спрайт и прочее из иника читается по заданному имени или индексу какому то, а поведение объекта по тем же переменным из иника выбирается(раз уж ушел в пиздец хд). Можно отмазаться мол для новичка писал и тд, но по нему же понятно что для него оператор with неизвестен даж, пускай изучит в начале его
Аноним 04/03/20 Срд 11:18:49 646480194
.png (5Кб, 512x512)
512x512
>>646467
Вот тут вроде я уже что-то понял, спасибо, анон. Не понял только это:
>obj_player.invulnerable
По идее ты в create игрока назначаешь переменную invulnerable и приравниваешь её к нулю, так? Но в таком случае она не будет учитываться командой выше, если её значение не будет изменено в каком-либо сценарии на что-то выше нуля? Вопрос пиздец тупой, знаю, но что поделать.
>>646474
>Если у тебя всё хорошо со спрайтами.
Понятие растяжимое. Ну вот, например, портрет, который я рисовал для анона из пикселяча пару месяцев назад, вот примерно в таком стиле и работаю.
>могу написать для тебя какой-нибудь код, прокомментированный.
Хотел бы создать главное меню, управляемое мышью, и чтобы там менялся задний фон в зависимости от происходящего в игре (это я, так понимаю, делается простыми чеками на переменные), но хуй знает, наверное это сложный процесс.
Аноним 04/03/20 Срд 11:26:25 646482195
>>646480
>По идее ты в create игрока назначаешь переменную invulnerable и приравниваешь её к нулю, так? Но в таком случае она не будет учитываться командой выше, если её значение не будет изменено в каком-либо сценарии на что-то выше нуля? Вопрос пиздец тупой, знаю, но что поделать.

Это я в качестве примера написал.
Да, в create event игрока добавляешь
invulnerable = false;
invulnerable_timer = 0;
invulnerable_time = 40;
saved_hp = hp


Потом в step_event что-нибудь типа:

if saved_hp > hp
{
invulnerable = true;
saved_hp = hp
}

if invulnerable
{
invulnerable_timer ++
if invulnerable_timer > invulnerable_time
{
invulnerable_timer =0;
invulnerable = false
}
}

Таким образом игрок становится неуязвимым на 40 фреймов после получения урона.

>Хотел бы создать главное меню, управляемое мышью
Ну постучи в телегу @doroboarashi
Аноним 04/03/20 Срд 11:33:04 646485196
>>646482
>invulnerable = false;
Бля, давно что-либо кодил на гамаке, уже и забыл, что там есть тру и фолс. То есть да, получается, что просто сокращённые переменные типа invulnerable читаются как invulnerable = true.
>Ну постучи в телегу
Бля, я никогда ей и не пользовался. Есть дискорд?
Аноним 04/03/20 Срд 11:43:33 646488197
>>646485
>. То есть да, получается, что просто сокращённые переменные типа invulnerable читаются как invulnerable = true
Чё?

> Есть дискорд?
Слишком тяжеловесное приложение.
Аноним 04/03/20 Срд 11:47:29 646490198
>>646488
>Чё?
Ну вот ты ставишь условие if invulnerable, не говоря конкретно, что с ним такое, то есть подразумевается, что if invulnerable = true?
>Слишком тяжеловесное приложение.
Ну хуй знает, к вечеру попробую поставить телегу, а то сейчас не за пекой.
Аноним 04/03/20 Срд 12:00:28 646498199
>>646490
Я использую переменную в качестве условия для if
Её значение game maker конвертирует в boolean не зависимо от её типа.

Если она изначально задана как boolean (true или false) всё просто.
Но она может быть и Int, float, double, string. В этом случае если она будет больше 0, то будет воспринята как true. Если 0 или меньше - false.
Аноним 04/03/20 Срд 12:01:18 646499200
Аноним 04/03/20 Срд 12:03:34 646500201
>>646490
>не говоря конкретно, что с ним такое, то есть подразумевается, что if invulnerable = true?

Это условие if
если выражение после if имеет значение true то следующий за If код в {} будет выполняться.
Аноним 04/03/20 Срд 20:47:41 646572202
Можно ли в GMS собрать Jagged Aliance, или есть более подходящие движки?
Аноним 04/03/20 Срд 21:04:13 646583203
Аноним 04/03/20 Срд 21:29:22 646587204
>>646431
var l7EB26BE3_0 = instance_place(x + hsp, y + 0, o_solid);
if ((l7EB26BE3_0 > 0))
{
collide = false;

while ((collide == false)) {
var l02F7CC12_0 = instance_place(x + sign(hsp), y + 0, o_solid);
if (!(l02F7CC12_0 > 0))
{
x = sign(hsp);
}

else
{
collide = true;

hsp = 0;
}
}
}

x += hsp;

var l64877E14_0 = instance_place(x + 0, y + vsp, o_solid);
if ((l64877E14_0 > 0))
{
collide = false;

while ((collide == false)) {
var l4AD85A33_0 = instance_place(x + 0, y + sign(vsp), o_solid);
if (!(l4AD85A33_0 > 0))
{
y = sign(vsp);
}

else
{
collide = true;

vsp = 0;
}
}
}

y += vsp;
Аноним 04/03/20 Срд 21:43:00 646590205
>>646587
У тебя внатуре while циклы. Да ещё и коллизии с объектами.

Полагаю ты по расставлял коллизий в 1 пиксель шириной и в процессе поиска коллизий перепрыгиваешь через объекты.

Либо у тебя hsp или vsp имеет значение 0, но каким-то образом ты получаешь коллизию в instance_place и запускаешь цикл.

Ищи, где ты проебался.
Если слишком сложна искать проёб убери цикл while.

Например

while ((collide == false))
{
var b = instance_place(x + sign(hsp), y + 0, o_solid);
if (!(b > 0))
{
x = sign(hsp);
}
else
{
collide = true;
hsp = 0;
}
}

Поменяй на

repeat(ceil(hsp))
{
var b = instance_place(x + sign(hsp), y + 0, o_solid);
if (!(b > 0))
{
x = sign(hsp);
}
else
{
break;
hsp = 0;
}
}
Аноним 04/03/20 Срд 23:16:02 646606206
>>646590
Я делал по видео с драг энд дроп, у чела все работало. Может где то не так настроил связи, я просто совсем туго программирую. Главное понял что это из-за циклов, может как то попробую без них сделать.
Аноним 05/03/20 Чтв 03:12:20 646627207
Здесь есть максимальный размер уровня. Можно метроидванию с огромными уровнями делать?
Аноним !gOlrx2AM8I 05/03/20 Чтв 03:29:51 646629208
>>646627
на самом деле максимального размера уровня в говнаке нет. если камеру двигать скриптами, задавая view_xview[0] = -500 то считай румы бесконечные, впрочем иногда с этим мелкая багота всякая связана, но всё разрешимо
Аноним 05/03/20 Чтв 05:56:38 646632209
>>646629
а разве нельзя собрать говноредактор карт, да с ним рофлить?
Я прост делал чет, да вроде норм. Правда надо сразу ебаться(чтоб у тя блоки в дс-гридах или массивах как тайлы были, чанками рисовать и тд)
Аноним 05/03/20 Чтв 09:33:01 646646210
Аноним 05/03/20 Чтв 11:40:42 646669211
>>646632
>а разве нельзя собрать говноредактор карт, да с ним рофлить?
нисаветую, игры на гамаке по полдня компилируются-запускаются, легче огромную руму зделать и на ней тыкать чем каждый раз ждать сто лет загрузки редактора
Аноним 05/03/20 Чтв 17:05:06 646759212
>>646669
>гамаке по полдня компилируются-запускаются
Просто у тебя очень кривые руки.

Аноним 05/03/20 Чтв 17:25:13 646765213
>>617577 (OP)
Скиньте ломаную версию 2го гамака плиз, провтыкал что там триал 30 дней, а я даж не успел еще ниче опробовать нормально
Аноним 05/03/20 Чтв 17:40:50 646771214
Аноним 05/03/20 Чтв 17:45:32 646774215
>>646771
скинь и мне в тред
Аноним 05/03/20 Чтв 17:49:06 646775216
>>646774
В тред нельзя, злая моча забанит.
Только в личку. Чтобы была личка нужен пасскод, если что.
Аноним 05/03/20 Чтв 17:49:33 646777217
>>646765
Нету ее, покупай.
Аноним 05/03/20 Чтв 17:50:01 646779218
>>646775
У меня личка без пасскода есть, чяднт?
Аноним 05/03/20 Чтв 17:51:42 646780219
>>646777
а 2й раз возможно зарегать на тот же комп триал?
Аноним 05/03/20 Чтв 17:52:51 646783220
>>646779
Абу благословил тебя за какой-то пост, видимо.
Аноним 05/03/20 Чтв 17:53:27 646784221
>>646780
Не пробовал, но не вижу причин, почему нельзя было бы этого сделать.
Аноним 05/03/20 Чтв 18:29:50 646793222
>>646627
Блэт, это вопрос был. На гамаке вообще метроидвании есть?

Может кто-то знает что-нибудь с большой картой (именно большой, а не разбитой на мелкие с переходами)?
Аноним 05/03/20 Чтв 19:12:50 646816223
Аноним 05/03/20 Чтв 20:14:26 646826224
>>646759
какие руки? пустой проект стартует секунд 5-10
Аноним 05/03/20 Чтв 20:51:20 646834225
>>646826
можно сделать чтоб у тя карты грузились из файлов в игре, и сделать другой проект, который эти карты редактировать мог. Тогда компиляции кода редактора карт не будет, а сами карты можно вставить в игру как файлы, или просто отдельно вкидывать, изза чего и код карт при запуске никак не влияет на прогрузку
Максимум это секунд 10 потупит когда карту грузит и ты ее открываешь чтоб играть на ней, но это дичайший максимум, как по мне
Если же думаешь что карты весить будут много, то тут вопрос сохранения. Буфферы + сжатие и все крут
Аноним 05/03/20 Чтв 21:29:53 646849226
А здесь можно менять персонажа из спрайтов без перерисовки. Ну то есть, например надеть шляпу, добавить брызги крови или освещение?

Можно делать составные спрайты, чтобы не рисовать отдельные по каждую позу. Например бег, ноги - всегда один спрайт-шит, а остальное в зависимости от положения курсора разное.
Аноним 05/03/20 Чтв 23:21:31 646877227
Аноним 05/03/20 Чтв 23:22:28 646878228
>>646849
Разверну немного.

Тебя, судя по всему, интересует скелетная анимация.
Её можно сделать в spine или dragon bones и импортировать в game maker.
Аноним 06/03/20 Птн 15:51:21 646972229
>>646878
Меня интересует спрайтовая анимация и можно ли с ней как-то здесь более расширенно работать (комбинировать спрайты), кроме как рисовать новые спрайты на каждый пук.
Аноним 06/03/20 Птн 17:00:02 646981230
>>646972
Конечно можно.

Вместо draw_self() используй draw_sprite или draw_sprite_ext столько, сколько нужно раз. Хоть из отдельных пикселей собирай персонажа, в чём проблема-то?
Аноним 13/03/20 Птн 17:42:24 648779231
15465842307460.gif (732Кб, 202x368)
202x368
на движке уже ничего не пилится чтоле?
Аноним 13/03/20 Птн 17:57:35 648789232
эффект-зелья оз[...].gif (150Кб, 284x456)
284x456
Аноним 13/03/20 Птн 21:27:10 648844233
>>648789
Какой-то непропрциональный фон
Аноним 14/03/20 Суб 02:23:36 648922234
Какой язык программирования юзается в движке кроме встроенного?
Аноним 14/03/20 Суб 02:27:10 648923235
>>648922
Никакого.
Но для HTML5-версий можно писать плагины на JS, для Windows - DLL на любом нативном языке. Если тебе это зачем-то надо.
Аноним 15/03/20 Вск 12:16:50 649154236
Стоит ли покупать стим версию гамака? Будут ли какие-то отличия?
Аноним 15/03/20 Вск 12:20:22 649155237
Эффект появления героя Аноним 03/04/20 Птн 03:20:36 652845238
1.png (23Кб, 371x407)
371x407
Челлы, помогите с анимацией. Спавнится герой и ему прописана уже стандартная анимация по типу ходьбы, бега и подобного. Он собственно сразу начинает ее выполнять. Эффект у меня в виде 5 спрайтов.
Как воспроизвести эффект персонажа и на ~3 секунды перебить стандартные анимации героя? Пре-драв? Или каааааак?
Аноним 03/04/20 Птн 03:51:59 652846239
Аноним 03/04/20 Птн 04:05:41 652848240
>>652845
в событии draw
если анимация эффекта не показана, рисовать анимацию эффекта
если проигран последний кадр эффекта, установить флаг "показано"
если анимация показана, вызвать self_draw()
Аноним 03/04/20 Птн 10:15:33 652871241
>>617577 (OP)
Планирую взять гамемакер mobile версию, для разработки под андроид. Какие подводные камни? Насколько движок мертв, его там обновляют еще?

Алсо, в мобильном геймдеве я ньюфаг, как там со скейлом под разные экраны, соотношения сторон? Есть ли некое универсальное решение, или все каждый раз делают с 0, изобретая велосипеды?
Аноним 03/04/20 Птн 10:16:19 652872242
>>652871
UPD: он нормально сейчас компилит АПК под 9, 10 андроид?
Аноним 03/04/20 Птн 11:05:10 652878243
>>652872
Обновляют

Со скейлом +-, в маркете есть фришное решение и платные

Компилит апк нормально
Аноним 03/04/20 Птн 14:43:24 652919244
image.png (12Кб, 347x139)
347x139
>>652848
блять вообще никак не выходит.
как я понимаю проблемы из-за события step где у меня и прописана стандартная анимация.

1. эффект зацикливается
2. самого перса не рисует
3. полностью ничего.
4. только перса

в create anim = 0;
Аноним 03/04/20 Птн 15:44:09 652928245
1.jpg (142Кб, 1654x769)
1654x769
>>652919
Тебе ответили уже - state machine

enum player_states
{
stand,
run,
}

switch state
{
case player_states.stand: sprite_index = spr_player_stand; break;
case player_states.run: sprite_index = spr_player_run; break;
}

draw_self()
Аноним 03/04/20 Птн 15:48:42 652929246
>>652919
При создании игрока делаешь ему state = player_states.spawn

В для стейт машины создаёшь скрипт sc_player_spawn

В скрипте описываешь всё, что происходит с ним в этом состоянии. Например смену спрайта и ожидание окончания анимации.

sprite_index = spr_player_spawn
бла-бла-бла во все стороны отлетают искры и бьют молнии

if image_index >= image_number -1 state = player_states.stand
Аноним 09/04/20 Чтв 12:52:34 654389247
>>652878
Можешь накидать за щекуссылки на платные и бесплатные решения скейла под мобилки?

И да, я заметил, что двойной тап срабатывает через раз, кто-то сталкивался с подобным?
Аноним 09/04/20 Чтв 17:05:22 654549248
kRzCjRp.png (32Кб, 985x151)
985x151
3oweepn.png (8Кб, 468x172)
468x172
kTHnuHV.png (10Кб, 364x248)
364x248
>>617577 (OP)
Ебаный стекломой, почему не компилит-то? 2 объекта в которых 2.5 строчки кода блять, срет ошибками и не работает.

Если выбрать VM - о чудо, все работает, если выбрать YYC - не работает, не компилится. Почему так?
Аноним 09/04/20 Чтв 17:33:21 654567249
>>654549
draw_text(200,100, string(fps) )
Аноним 09/04/20 Чтв 17:35:15 654569250
>>654549
>Почему так?
потому что YYC не приводит типы автоматически
Аноним 09/04/20 Чтв 17:35:19 654570251
>>654567
Ну и соответственно string(display_get_width() )
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов