Этого треда уже нет.
Это копия, сохраненная 10 декабря 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
1.jpg3 Кб, 250x142
GameMaker Studio 2 617577 В конец треда | Веб
Добро пожаловать в гамакотред - адекватный тред адекватного движка.

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

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

Телепаты в отпуске, хочешь получить ответ - задавай вопрос по существу. Перед тем как запостить спроси себя: Нет ли у меня банальной ошибки в коде? Прочитал ли я туториал? Не мудак ли я?"
2 617607

>Если хочешь получить ответ


А ещё лучше сразу прикрепляй код в пастербин, ради аллах и гифку.
3 617863
>>17577 (OP)
а русский яз появился? помню как залипал в 8pro, ух времена были.
4 617869
>>17863
Зачем тебе перевод для 2.5 кнопок? И с англ нормально все
5 617876
>>17863
Вопрос, конечно, очень странный. Но если тебе необходим русский интерфейс, то почему бы не погуглить? Первая строчка в выдаче:
https://forum.yoyogames.com/index.php?threads/russian-csv-russian-language-for-game-maker-studio-2.26535/
6 617891
>>17577 (OP)
В далеком 2012 покупал гаме макер в стиме. Сейчас это вроде как версия 1.4(не помню), есть экспорт на Виндавс. Вопрос. Я могу на нем сделать свою супер игру и высрать ее в стим(продавать, ага), или же я обязательно блядь должен покупать 2ю версию?
7 617901
>>17891
Можешь
8 617982
>>17577 (OP)
Тред забронирован для детей олигархов или бомжам с вопросами уровня "где бы раздобыть" тоже место найдётся?
9 617988
>>17982
Я знаю на доске троих, кто на гамаке серьёзные игры делает. У всех лицензия. И у меня лицензия, я просто даже вопросом не задавался, где брать хак.

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

А сейчас у триалки даже ограничений нет.
https://help.yoyogames.com/hc/en-us/articles/230407528-GameMaker-Studio-2-Trial-Limitations
Только exe билдить нельзя. Триальная лицензия истекает через 30 дней.
Что тебе помешает ещё один акк завести на yoyoy и ещё одну лицензию получить триальную?
10 618332
Как заставить двигать объект? Ничего не выходит
11 618336
>>18332

Во-первых

команда 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
}}}}
11 618336
>>18332

Во-первых

команда 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
}}}}
12 618337
>>18336
Так, разовьём. Телепаты в отпуске, но попробую влезь тебе в голову
Наверное ты хочешь, чтобы твои 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 и не пора ли ему прекратить движение.
12 618337
>>18336
Так, разовьём. Телепаты в отпуске, но попробую влезь тебе в голову
Наверное ты хочешь, чтобы твои 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 и не пора ли ему прекратить движение.
13 618339
>>18337
Спасибо за то, что помог разобрать мой полет мыслей и даже объяснил что к чему, благодарствую
14 618340
>>18337
А обязательно ли использовать var и какие плюсы это даёт?
15 618342
>>18340
Не обязательно, но плюсов много.

Допустим ты исполняешь код в 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, не обязательно того, который исполняет этот код.
15 618342
>>18340
Не обязательно, но плюсов много.

Допустим ты исполняешь код в 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, не обязательно того, который исполняет этот код.
image.png549 Кб, 1909x1005
16 618386
Есть кто шарит за сборку на ведро? Вроде все подключил, все настроил но не работает, ругается на расширение Billing от гугл сервисов. Проблема точно не в игре, потому что сервисы я только подключил но нигде в коде не использовал. В чем может быть косяк?
17 618544
>>18386
Сам знаешь что с этим лучше на yoyo.
18 618553
>>17876
я гуглил в 16, а тут 17 год. ъеъ
19 618572
>>18544
3 дня беспорядочно тыкался куда только можно, затем проблема исчезла сама. Конечно не сама, но я без понятия что конкретно исправило. Переустановил и обновил все что только можно, все jdk jre sdk и саму джаву, переписал пути в path, удалил и переставил студию и ассеты, перенастроил все настройки и в один момент игра собралась. Хз кароче что конкретно было не так.
20 618590
>>18572
За последнюю неделю вышло 3 патча на гамак.
Скорей всего правили баги после первого патча.
21 619383
Как добавить спрайт на asset_layer через код?
22 619385
>>19383
Сам спросил, сам ответил.
layer_sprite_create(layer_id, x, y, sprite)
23 619627
>>17577 (OP)
Бля, как устранять подрагивания при движении мышкой? FP-Шутан. У меня нихуя не получается от них избавиться. А в коммерческих играх такого подрагивания нет. В чём секрет?
24 619628
>>19627
Зачем ты FP-шутан в геймейкере пилишь? Ебу дал?
25 619631
>>19627
Какие подрагивания при движении мышкой? Телепаты в отпуске, забыл?
26 619635
>>19628
Вообще-то не в гамаке. Но вдруг гамак может лучше?
>>19631
Ну кароч, когда мышкой возюкаешь по столу, камера должна плавно ходить, а она подрагивает.
27 619636
>>19635
У меня не подрагивает.
28 619637
>>19636
Рад за тебя. Хули.
29 619638
>>19637
Какой вопрос, такой ответ. Хули.
30 619641
>>19638
Иди игры делай. На вопросы он тут отвечает.
31 619690
>>19635
Уебывай, раз вопрос не по гамаку. Не для таких как ты этот тред сделан.
32 619782
Как увеличить количество поддерживаемых устройств в гугле? Залил игруху, весит 30мб, простая и нетребовательная, однако гугл определил что запускаться она может только на парочке флагманов среди множества тысяч телефонов. Как фиксить?
33 620326
>>19782
ОПТИМИЗАЦИЯ
П
Т
И
М
И
З
А
Ц
И
Я

А вообще - что там в профилере у тебя показывает? А то можно думать, что игра нетребовательная,а по факту все очень плохо
34 620333
>>19782
У тебя сборка под новые модели, даун
35 620346
>>20333
>>20326
Не, все херня. стоит апи 28, все нормально. Просто в помойном гайде от йойо написано ставить компиляцию только на арм64 архитектуру, а надо проставить галки на все 4, тогда будет охват всех устройств.
36 620906
>>17577 (OP)

> и запускай туториалы Шона Спалдинга


А есть годные гайды (язык не важен) по пошаговым стратегиям?
Платформеры и шутэмапы писать научился, но как писать Turn-based совсем не очевидно.
37 620990
>>20906
Такой вопрос уже задавали.

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

Но пошаговость, по-моему, довольно очевидно можно сделать.
Добавляешь каждому объекту в 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;
}
37 620990
>>20906
Такой вопрос уже задавали.

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

Но пошаговость, по-моему, довольно очевидно можно сделать.
Добавляешь каждому объекту в 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 38 621305
>>20906
Пошаговые имеется ввиду где ты тыкаешь юниту куда бродить, и, зданию строиться, проходит 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
Kekruator228 38 621305
>>20906
Пошаговые имеется ввиду где ты тыкаешь юниту куда бродить, и, зданию строиться, проходит 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
39 621306
Как лучше всего записать видео геймплея из разрабатываемой игры?
У меня есть Bandicam, он нормально записывает, когда игра в окне, но в полноэкранном режиме записывает черный фон, что бы я не делал.
Kekruator228 40 621307
>>21306
попробуй OBS
через него можно и стримить, и записывать.
41 621308
>>21306
У меня нормально записывает бандикам полноэкранный режим гейммейкера.
Можешь fraps попробовать. Я лично фрапс предпочитаю.
42 621404
>>21307
Спасибо, пришлось немного его поковырять, но более-менее работает.
43 621548
Писать под этот движок можно только на их поделии GML или есть возможность на настоящем языке программирования писать?
44 621554
>>21548
Если ты про то, что внутри гма можно ли подключить другой язык - нет. Однако, если ты шейдеры пишешь, то там все на "настоящем языке программирования".
А так хз, как по мне язык нормальный. Да и гамак вполне вывозит все это(если ты делаешь 2д игру)
45 621558
>>21554
Я про настоящий язык вот к чему: не было ли у тебя и у анонов в принципе ситуаций, когда язык НЕ ВЫВОЗИТ твоих хотелок, не дает развернуться с твоим видением функционала игры?
46 621566
>>21558
У меня было, но в итоге оказалось что это я тупой. К примеру, я хотел сделать Terraria-подобный мир(майнкрафт с боку). Ну и хуле, полез рисовать каждый блок через форы. Если мир маленький то охуенно, но если больше той коробки, в которой живу, то лагает.(~0 FPS)
Полез рисовать только блоки, которые в зоне видимости, и оп +100 фпс(Ето больше в 100 бесконечностей раз)
Потом допер до сурфейсов, и рисую мир чанками. Тобишь вот мир, где блоки в сетке. Разбиваешь мир на квадратики, и, рисуешь квадратики в сурфейсах. Сурфейсы хранишь дето, и, +2000 фпсов
В итоге, даже если у тя другая тема, то вот немного инфы. Любая хуета в рисовалке давит на проц, а проц у тебя не для графики. Если хотишь чето рисовать пиздатое но у тебя лагает, то изучай как шейдеры рисовать в гамаке. Они юзают твою дырявую(ну у меня такая, мб у тебя тож) видеокарточку, изза чего не оч то и лагает.
Если же не в графике дело, то в говнокоде. Если не в говнокоде(но ето я прям пиздец как сомневаюсь), то подумай еще(все ли ты норм сделал, мб можно сделать по другому, мб можно оптимизировать), то вероятно ты нашел баг, который или фиксится чем то из интернетов, или фиксят(если юзаешь гмс 2).
как то так
47 621571
>>21566
Спасибо!
15741757627200.jpg95 Кб, 983x983
48 625220
Суп, анон
Наконец, набрался идей и смелости и решил сделать игрушку
Дано: умею худо-бедно рисовать и есть пара человечков (на подскоке), которые готовы выделить или сделать музыку; абсолютный ноль в игроделии, программировании; не разбираюсь в жанрах игры ММОРПГ я не знаю что это, например, могу описать Героев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.
Ну и мини-игры которые, я даже не знаю как описать. Кликер ли они илои что? Например, симулятор бабушки, где нужно связать на время Х швов за время, где одни кнопки отвечают за разные спицы, а другие - за типы петелек. Таких аналогов я даже не знаю, но включить тоже хочу.

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

Какая программа-игродельня способна помочь мне осуществить мою задумку, учитывая условия из пункта ДАНО?
15741757627200.jpg95 Кб, 983x983
48 625220
Суп, анон
Наконец, набрался идей и смелости и решил сделать игрушку
Дано: умею худо-бедно рисовать и есть пара человечков (на подскоке), которые готовы выделить или сделать музыку; абсолютный ноль в игроделии, программировании; не разбираюсь в жанрах игры ММОРПГ я не знаю что это, например, могу описать Героев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.
Ну и мини-игры которые, я даже не знаю как описать. Кликер ли они илои что? Например, симулятор бабушки, где нужно связать на время Х швов за время, где одни кнопки отвечают за разные спицы, а другие - за типы петелек. Таких аналогов я даже не знаю, но включить тоже хочу.

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

Какая программа-игродельня способна помочь мне осуществить мою задумку, учитывая условия из пункта ДАНО?
49 625222
Это всё я спросил в нуботреде, мне сказали навестить гамак, ноя заблудился и зашёл в РПГ-мейкер тред, но вот я здесь. Что скажете? С вашей игрософтиной я смогу исполнить задуманное?
>>25220-кун
50 625259
>>25222
Да, можно.
51 625264
>>25222
Либо ты используешь гамак и юзаешь драг-н-дропы - но это тебя сильно ограничит, и если ты захочешь что-то хоть чючють нестандартное, придётся изъебываться.

Либо ты пытаешься в кодинг на ГМЛ - это не так уж и сложно. Но зато можно сделать штуки гибче
52 625265
>>25264
Во-первых в драг-н-дроп можно затащить окошко code и кодить. Так что никаких ограничений.
Во-вторых совсем извращенцем надо быть чтобы драг-н-дроп использовать. Это ж просто не удобно.
В-третьих ты что, собрался развёрнуто отвечать жирдяю?
53 625276
>>25265
а мой ответ выглядел развёрнуто? я ж в тезисах.

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

Я
54 625277
>>25276
- случайно отправил предыдущую хуйню

я в начале юзал криэйт, степ, алярм и дроу. Потом от алярмов отказался вовсе, превращают алогритм в ебаное спагетти.
55 625278
>>25277

>Потом от алярмов отказался вовсе


И правильно. Алармы - для раг-н-дропщиков.

У меня на yoyo вышел целый холивар с защитниками alarma
изображение.png5 Кб, 424x231
56 625279
Иногда я натыкаюсь на код годичной давности и начинаю верещать от собственной тупости.
Вот под чем я, блядь, был.
57 625280
>>25278
Ну я к тому еще, что если мне нужна какая-то отсрочка, я лучше самодельный таймер вхуярю прям. А то потом ищи, какой алярм за что отвечает, да еще и вызовы их в коде выглядят пиздец неочевидно и чужеродно

Draw за редкими исключениями - инструмент дебага.
58 625281
>>25278
Ну и вообще, подавляющее большинство встроенных функций или переменных или эвентов - чорные ящики которые хуй пойми как работают и иногда делают не совсем то, что ты ожидаешь, а иногда - совсем не то, что ты ожидаешь.

Я так однажды узнал, что для гамака (студия 1.4) важна последовательность объектов в IDE, чуть ли не важнее последователньости спавна инстансов в руме. Сказать, что я охуел от такого - ничего не сказать.
59 625285
>>25281

>последовательность объектов в IDE


Схерали?

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

А для объектов-то какая разница?
60 625287
>>25285
А вот я тоже не знал. Но когда начал отсматривать коллизии объектов (для хитбоксов всяких там, где гарпун врага касается и всё такое) - выяснил вот такую хуйню.

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

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

Я когда делал гарпун (притягивание врагов к себе аля скорпион из МК или неро из ДМЦ) столкнулся с этим. У меня был объект "гарпун" собсна, и был объект "враг". Коллизия (гарпун коснулся врага) обсчитывалась в степе гарпуна.
Если в папке объекты сначала враг, а потом гарпун - реакция врага опаздывает ровно на один кадр. А если наоборот - тогда всё ок.
Это не всегда заметно, конечно, но случается.
61 625308
>>25287
Ничего не понял.

>Представь что коллизии с объектом obj_block обсчитываешь


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

>через какой-нибудь instance_place


Я предпочитаю instance_position. Но допустим.

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


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

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

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

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

>почему не с тайлами


Начинал с простого, именно с объектов, и пока не хочу перехеривать всё под тайлы, но скорее всего рано или поздно к этому приду

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

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

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

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

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

>и пока не хочу перехеривать всё под тайлы


Надеюсь А-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 и тогда всё будет хорошо.
64 625326
>>25323
А вообще в твоём типе игры, логичнее всего, наоборот - сначала в begin_step произвести все взаимодействия, а потом уже в step перемещаться.
В момент begin_step все параметры прошлого кадра точно будут пересчитаны.
Затем в step ты сдвигаешь x и тем самым даёшь движку команду пересчитать все параметры ещё раз. И тебе не важно когда это произайдёт, потому что в следующий раз ты к ним обратишься только в следующем begin_step.
65 625327
>>25323

>Надеюсь А-star у тебя не проверяет наличие объекта в каждом квадрате для построения пути?



Единожды. Есть объект o_grid который при создании заполняет квадраты в зависимости от наличия там блока. Есть блок = -2, нет блока =-1. Конечно, тут могут возникнуть проблемы с one-way платформами и\или движущимися платформами, но углубляться и доводить до идеала это всё я не хочу.
66 625370
>>25323
Есть немножко причин, по которым я хочу оставить пока всё как есть

1)лень
2) излишнее запутывание новыми эвентами
3) тут вот какая хуйня: кооридната по иксу меняется после проверки горизонтальной коллизии, а координата по игреку - после проверки вертикальной коллизии. Потому шо если проверять сначала обе коллиизии а потом смещать икс и игрек -хуйня получится.
67 625373
есть какой-нибудь способ удалить все ресурсы неиспользуемые из проекта?
раньше можно было делать экспорт GMZ файлом а сейчас как?
68 625386
>>25373
Хз, руками наверное. Как гамаку определить, что ты этот ресурс нигде не используешь?

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

Ещё есть ассетная библиотека, как туда что-то своё добавить - хз.
69 625397
Просто от нехуй делать делюсь текущими проблемами. Ага, опять патфайндинг.

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

Пик 2 - та же ситуация, но теперь вместо запрыгивания - падение. С блока, на который враг упадёт - он может проложить путь и налево и направо.
1.png39 Кб, 1113x389
70 625403
>>25397
Вот так в 2017 году выглядел кусочек проверки, можно ли двигаться моему объекту направо пешком.

В качестве того, через что тебе предстоит пройти, если ты хочешь запилить качественный пасфайндинг по тайлам со склонами, лестницами, прозрачными платформами и прыжками.
71 625406
>>25397

> и проложить себе арку прыжка направо


Пустое дело. Тебе либо придётся делать так, чтобы враги прыгали именно по этой прямоугольной траектории, либо ограничивать себя в лвл дизайне.

Я тебе уже писал, что я определял прыжковые точки, эмулировал прыганье из них во всех возможных направлениях со всеми возможными результатами, потом выбирал удачные, потом из удачных выбирал оптимальные.
72 625416
>>25406
Ограничивать себя в левледизе - безусловно. Я не собираюсь делать слоупы, например.

Ну и до твоих уровней я заморачиваться не буду - мне достаточно дать врагу "пинок" куда ему идти. То, что есть сейчас - уже юзабельно, в принципе. Осталось только "нарастить" условий.
73 625417
>>25406
Ну а если дело действительно НАСТОЛЬКО тухлое, то я просто, ну дропну идею, лол. Я уже считай как год сталкиваюсь со сложностями и пока что вроде отовсюду выкручивался
74 625426
>>25417
Прыжок идёт по параболе, а в пути у тебя - прямые линии.
Тогда там, где есть прыжок ты всегда должен оставлять место для парабол.

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

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

Но в итоге всё упиралось в то, что находился потенциально возможный, кратчайший, но практически неправильный путь.
75 625459
>>25264
Что за драгон дроп?
>>25265
Кто жирный? Ты жирный, ёпта
76 625727
>>25426

>параболы


А зачем? Буду проверять коллизии , действия и дирекшен меж точками пути и менять-не менять стейт машины исходя из них. Не должно быть сложно, вот сегодня и займусь чтоб наглядно показать
77 626952
Как в гамаке реализовать формулу треугольного числа одной командой, без циклов?
Чтобы было так:
если, например, 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
78 626961
>>26952
Загони все нужные варианты в массив и бери их по индексу. А формула есть в википедии.
79 628171
>>17577 (OP)
Владельцы 2.0 тут?

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

И вопрос, в лицензии за 100$ я смогу убрать логотип yoyo?
80 628250
>>28171
Под телефоны не делал и не собираюсь.

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

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

>убрать логотип yoyo?


Ты о чём вообще? Какой логотип? Иконку значка сменить?
81 628265
>>28250
>>28171
У йойогеймс была в блоге огромная статья про то, как разбираться с разрешениями для мобилок. Гуглите.
82 628272
>>17577 (OP)
БЛЯБЛЯБЯЛЯ а где прошлый тред? Кто-нибудь схоронил? Там куча годной инфы была от гуру...
83 628273
>>28272
Там был движкосрач, поэтому мод удалил его.
84 628277
>>28273
Может предпоследний тогда... Короче, проёбано всё... Эх...
А какой может быть движкосрач, если всякому ясно, что гамак - лучший движок?
85 628398
86 628399
>>28277
Никакого движкосрача в гамакотреде никогда и не было. Эта чмоня >>28273 тебе врёт.
87 629637
как звуки из sound.yy в .wav перевести можно?
88 629642
>>29637
сам понял
89 629644
>>29642
Мне расскажи.
90 629645
>>29644
.yy это файл ресурса, а не звука, xml в котором прописаны свойства ресурса, в т.ч. путь до звукового файла
91 630052
>>29644
все проще некуда
в папке с .yy лежит еще один файл пропиши ему в названии .wav
92 632815
Есть мануалы по GML? Начал пилить игру по видосикам на ютубе, но третий день понял, что язык на самом деле примитивный очень, хочу прям изучить его полностью, а уже потом садиться делать игру.
93 632819
>>32815
Прям даже не знаю, какие мануалы тебе нужны ещё. Есть суперподробный мануал по всем функциям гейм мейкера в самом гейм мейкере.

Что ещё нужно-то?
94 632831
>>32819
А в форме учебника нету? Желательно на русском языке.
95 632833
>>32819

> https://darkpro1337.gitbook.io/gml/


Насколько актуальная ссылка?
96 632836
>>32831
Не знаю. Никогда ничего подобного не встречал.

Если хочешь, есть курсы hearthbeast.
У него есть бесплатные и платные видеоуроки и даже какая-та книжка по гамаку. На английском.

https://www.facebook.com/heartbeast.studios/posts/the-pdf-of-my-gamemaker-book-is-finished-learn-more-at-the-link-below/1631610760404973/
98 632840
>>32833
Тут, судя по оглавлению, простейшие понятия программирования.

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

Всё это пригодится для гамака (если ты ещё этого не знаешь), но это далеко не всё, что в гамаке есть.
99 633939
друзяшки, у меня вопрос на засыпку
Как изменить цветовой тон для целого тайлового слоя?
Вариант с шейдером не очень, тк уже есть активный и очень капризный шейдер
100 636008
>>33939
Если ещё актуально.

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

Создал бы объект-контроллер, который бы перед отрисовкой тайлов создавал сурфейс и делал таргет на него, + выключал твой капризный шейдер (если он постоянно работает) и включал шейдер перекраски. Далее отрисовка тайл леера на этот сурфейс и после него снова контроллер, который выключит красящий шейдер, включит капризный и нарисует полученный сурфейс на основном сурфейсе.
101 636435
>>36008
Спасибо за совет, но я в итоге сделал как последняя скотина
Создал дубликат слоя с черным покрасом :D
102 637627
Кто-нибудь юзает physics_particle уже?
Вроде новая тема, а гайдов кроме хелпа не встречал.
А хотелось бы конструктор эффектов физических...
Но мб у меня гугликулёз плохо развит и я не в курсе, просветите же меня святочи знаний и говна.
103 638481
>>17982
Налуркай GM 8.1 Lite, он распространялся бесплатно.
104 638568
>>17988

>Я знаю на доске троих, кто на гамаке серьёзные игры делает.


лол, что за серьезные игры?
105 638571
>>37627

>physics_particle



От тебя узнал об этой теме. Надо посмотреть что к чему.
106 638816
>>38568

>лол


Хуёл. Те, в которые можно поиграть.
107 639110
>>38816
Ну так назвал бы их, по мне так практически в любую игру можно играть.
108 639112
>>39110
Тема про гамак, а не про вниманиеблядей и перекидывания говнами "твоя игра не игра".

По гамаку есть вопросы? Го общаться. По вниманиеблядям есть вопросы? Иди в тред ТВГ.
109 639552
>>17577 (OP)

> Добро пожаловать в гамакотред - адекватный тред адекватного движка.


> Задумал сделать 2d игру и не знаешь с чего начать? Качай демоверсию гамака


> https://www.yoyogames.com/get


Что, простите? Где взять полную кряканую версию и почему юнити можно использовать бесплатно, а это нет?
110 639556
>>39552

> Где взять полную версию.


Лучше всего на стиме.

>Где взять кряканую версию


Насколько я знаю, нигде.

>юнити можно использовать бесплатно


Не совсем так.
111 639568
>>39556
У меня до сих пор кряканная работает
112 639572
>>39568
У тебя восьмёрка поди.
113 639596
>>39556

> Не совсем так.


Совсем так, меня ни в чем важном не ограничивают в юнити. А здесь я должен после месяца изучения дропнуть или заплатить. Спасибо, но нет.
114 639599
>>39596

> А здесь я должен после месяца изучения дропнуть или заплатить.



Я выбираю движок, лучше всего подходящий для моих задач. Ты выбираешь движок, исходя из его бесплатности. Каждому своё.
115 639601
>>39599
Конечно, я же ньюфаг.
116 639602
>>39599
Ставлю жопу, что у тебя такого профессионала первой версией гейммейкера тоже была либо крякнутая, либо купленая твоим заботливым работодателем, который еще и научил тебя на ней работать. Сомнительно что новый ньюфаг будет тратить месяц своего времени изучения геймдева впустую, чтобы потом пересесть на юнити.
117 639604
>>39602
Кому жопу анона? У нас тут бесплатная жопа анона образовалась! >Жопа анона уходит в зрительный зал.
image.png5 Кб, 441x96
118 639654
Как фиксить? Спермерка. Гуглить не получилось
119 640801
>>17577 (OP)
Привет, хочу запилить платформер-слешер. Что-то типа риск оф рейн. Были 2 попытки вката в геймейкер лет 10 и 5 назад, поэтому хочу на нем. С тех пор он выдал версию 2 и студио и еще всякого, что качать и как использовать? Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?
С чего вообще начать. Умею в фш, снимаю фото и записываю видосы почти профессионально, делал анимационные мультики в стопмоушене, рисовал пиксельарт и игрался с геймейкером до уровня простого пострелятельного уровня с одноклассницами. Но думаю, что не выдержу все вырисовывать с 0 в пикселе и отрисую как-нить в фш. Но че делать с анимацией и тд? Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?
120 640818
>>40801

>Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?



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

>С чего вообще начать.


С выбора палитры и боевых механик.

>Но че делать с анимацией


Для примитивной - spine. Сложную наверняка не потянешь.

>Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?


>>40801

>Демоверсия не дает только финально скомпилировать и выложить или есть другие ограничения?



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

>С чего вообще начать.


С выбора палитры и боевых механик.

>Но че делать с анимацией


Для примитивной - spine. Сложную наверняка не потянешь.

>Какие вообще шаги по созданию нормальной игры в соло, которую захотят купить и поиграть?


Вот у этого спрашивай: https://2ch.hk/gd/res/639675.html (М)
Вкратце - рисовать и работать, работать и рисовать. Годами.

Вкратце - рисовать и работать, работать и рисовать. Годами.
121 640849
>>39572
Нет, Studio 2 крякнутая.
image.png243 Кб, 1280x720
122 640852
Так, начинаю вопрошать. Ставить игру на 60 фпс, не будет же игра написанная на с++ и с пиксельным графоном у кого-то лагать? RoR тот же у меня идет отлично в 120фпс. Как в дальнейшем разобраться с размерами экранов у других пользователей? Мне делать игру в фуллхд разрешении и потом если чо кому-то перешакалит на его 1200 монитор?
Скачал триал, потом куплю, если не заброшу вот это вот все.
И история, оформил уже вопрос и решил проблему. Изучал гейммейкер и у меня фотография кошки стала кистью и я не понимал че делать, но терь понял.
Для начала я хотел спросить - как убрать ебучую кошку? Или я пытался скопипастить слой при создании кадра чтоб получить анимацию и при контрл в мне вылезает картинка и привязывается к указатель, ползает за ним. И не уходит....
2020-02-04 04-10-11.mp411,6 Мб, mp4,
1920x1080, 0:36
123 640859
>>40852
Вот такой вот прогресс, если кому интересно. Пока просто обучаюсь. Есть вопрос по коду.
Имеется такой кусок кода. Это все про то, когда пулька долетает до астероида, а он разлетается на 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);
}
124 640885
>>40852

>Ставить игру на 60 фпс


Да

>Как в дальнейшем разобраться с размерами экранов у других пользователей?


Задавай размер камеры равным разрешению монитора игрока. Делай ориентируясь на размер экрана 1080р, но так, чтобы и в 720р всё тоже вижно было. Делай плавающий гуи, привязанный не к координатам, а к сторонам камеры.

>как убрать ебучую кошку?


Выбери другую кисть.
125 640893
>>40859

>Я так понимаю это берет данные всех, кто с ним столкнулся и выполняет следущие действия, которые прописаны в кавычках.



Не правильно понимаешь. Это ссылка только на один объект из тех, с которым ты столкнулся. И работает только в 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);
}
126 640931
>>40885
>>40893
Пасиба
127 641031
Не могу сделать так, чтоб снимало только одну жизнь за касание с врагом.
Вот что у меня в коде, где один предмет сталкивается с другим. Проблема в том, что оно успевает касаться много раз и при одной секунде сгорает жизней 20+. Походу оно считает касания по каждому обновлению экрана, а не один раз. Как фиксить такое?
1. Вариант как-то заставить убавлять хп только 1 раз.
2. Отталкивать предметы друг от друга\уничтожать оба\делать неуязвивым и тд. Как-то костыльно, хотелось б первый пункт.

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

if(global.jiza >=1){
instance_create_layer(x,y,"Instances", obj_ship) - тут координаты изначально были центром, но я решил в том же месте.
}
128 641038
>>41031
ставь флаг и снимай его по кулдауну
вариант 2 это и есть вариант 1
129 641042
>>41038
Окей, тогда так и сделаю. Сделал в итоге перезагрузку лвлва и спавн посередине.
Теперь мне интересно, че делать с музыкой. Вот я сделал переменную, куда зарандомил 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);
Такой вариант не помогает, почему-то все равно играет дальше и накладываются новые песни. Что можно сделать?
130 641046
>>41042
Сохраняй переменные в ini файл. При запуске игры проверяй переменные в этом ини файле. Ели они говорят что должен играть такой-то трек с такой-то милисекунды, то запускай его с этой милисекунды, после чего присваивай этим переменным значение, которое скажет, что нужно выбрать случайный трек и начать его с 0 милисекунды.
131 641047
>>41046
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()

как-то так.
132 641053
>>41046
бля сложновато, я ток первый и то пример пилю чтоб разобраться на 2й день, но походу разбираться придется подольше. Кстати есть вариант нормально делать игру на драгндропах? А то я не смог в них даже ходьбу и повороты осилить
133 641094
>>41053

>бля сложновато


А ты не перезапускай игру на смерть игрока. Game_restart не для этого.
Сделай скрипт завершения игры, который уничтожит объект игрока, сбросит текущий счёт и т.д, а потом переместит игру в комнату с главным меню. В которой игрок нажмёт на кнопку "новая игра", чтобы переместиться в игровую комнату.

>есть вариант нормально делать игру на драгндропах?


Drag-n-drop это стрельба себе в ногу. Очень неудобная фигня.
2020-02-05 13-46-49.mp438,2 Мб, mp4,
1920x1080, 2:00
134 641179
>>41094
Я решил перезапускать именно комнату игровую. Смог решить проблему с аудио, но в том смысле, что начинается новый трек с перезапуском комнаты, а остальное аудио_стоп.
Собсно вот некая игра получилась, вместо музыки накидал туда гачимиксов. Нарн и дальше буду её понемногу в какую-то сторону развивать. Но сча буду уже пытаться в метроиданию. Есть какие годные уроки по ним? Или исходники, которые стоит глянуть?
135 641710
>>41179
Тестирование я знач закончил. Придумал сюжет. Более-менее геймплей и стиль графики. Завтра начинаю понемногу. А пока расскажу, что придумал.
Значит имеем 2х действующих героев, один из который основной, а другой дополняющий, как в файтингах-нарутах бывает: жмешь кнопку и прилетает герой, раскидывает пинки врагу и сьебывается.
Из метроидании я хочу сделать фильмичный адвенчер-муви с элементами слешера. Вместо тупого рубилова - изучение врагов и их слабых мест, а уже потом рубилово.
Так же в игре хочу запилить эволюцию врагов, главных героев, их способностей и игровых уровней. Все это я придумал, как обосновать с помощью сюжета.
Интерфейса по минимуму или 0 и постараюсь обойтись интуитивно понятным управлением. Вместо полосок жизни попробую изобразить их на гг.
Хочу добавить некий бестиарий врагов и систему выбора новых умений типа переката, рывка, полета и тд. Все это привязывается к чекпойнтам на уровнях: дошел до нужного места - получил. Потому что планирую делать уровни абсолютно линейными и проскриптованными самому, не хочу заморачиваться со всякими такими ии для врагов и их спавном, хотя мб было бы круто. Посмотрим что я смогу на этот счет.
Но в то же время хочу нелинейность прохождения, как у холлов найт. Типа к концу можно прийти разными путями и не исследовать мир полностью.

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

Шоб сильно не заебывать этот тред историями, я запилил канал в тг, мб кому интересно будет. @gamedev_gd
135 641710
>>41179
Тестирование я знач закончил. Придумал сюжет. Более-менее геймплей и стиль графики. Завтра начинаю понемногу. А пока расскажу, что придумал.
Значит имеем 2х действующих героев, один из который основной, а другой дополняющий, как в файтингах-нарутах бывает: жмешь кнопку и прилетает герой, раскидывает пинки врагу и сьебывается.
Из метроидании я хочу сделать фильмичный адвенчер-муви с элементами слешера. Вместо тупого рубилова - изучение врагов и их слабых мест, а уже потом рубилово.
Так же в игре хочу запилить эволюцию врагов, главных героев, их способностей и игровых уровней. Все это я придумал, как обосновать с помощью сюжета.
Интерфейса по минимуму или 0 и постараюсь обойтись интуитивно понятным управлением. Вместо полосок жизни попробую изобразить их на гг.
Хочу добавить некий бестиарий врагов и систему выбора новых умений типа переката, рывка, полета и тд. Все это привязывается к чекпойнтам на уровнях: дошел до нужного места - получил. Потому что планирую делать уровни абсолютно линейными и проскриптованными самому, не хочу заморачиваться со всякими такими ии для врагов и их спавном, хотя мб было бы круто. Посмотрим что я смогу на этот счет.
Но в то же время хочу нелинейность прохождения, как у холлов найт. Типа к концу можно прийти разными путями и не исследовать мир полностью.

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

Шоб сильно не заебывать этот тред историями, я запилил канал в тг, мб кому интересно будет. @gamedev_gd
136 642330
>>17577 (OP)
Максимально тупой вопрос, но: как мне дать переменной значение определённого цвета по RGB? Какую команду указывать после знака равно? Заранее спасибо.
137 642346
>>42330
red = make_color_rgb(255,0,0)
138 642365
>>42346
Спасибо.
139 642383
Я смогу сделать на нем интерактивную карту? Банально нажимая на область и читая инфу о ней.
140 642385
>>42383
Ты не сможешь
141 642389
>>42385
Просто Construct послал меня с огромным размером карты. Крч в годоте делаю.
142 642394
>>42389

>послал меня с огромным размером карты


Как он это сделал?
143 642420
>>42394
Отказался запускать, сказал что спрайт не может быть больше 2048 на 2048, а я решил не копротивляться и пошел в более понятный и родной годот.
144 642478
>>42420
Гамак такой спрайт тебе, альтернативно одарённый, пережмёт под размер texture page.
145 642538
>>42478
Поэтому я разрезал его на 8 частей
146 642546
>>42538
У тебя как интернет вообще? Быстрый? Если медленный, то понаблюдай за любым сервисом карт и навигации, гуглкарты там или яндекскарты, посмотри, как они подгружают выбранный тобой масштаб. Там подгрузка чанками идёт. В любом движке. Тебе не движок запрещает пихать такие ресурсы одним куском в видеопамять, а сам комп.
147 642591
>>40849
Ссылкой поделишься?
HarmizVenZZZ 148 643365
>>40849 второй гмс работает аналогично стиму. При этом, в отличии от стима там нет оффлайн режима. Так что хакнуть новую версию не получиться.
Когда-то была версия, где йойо-бляди не доделали проверку, изза чего благодаря дыре в коде проверки что-то в торрентах лежало. Однако, они переделали всю проверку с клиента на сервер(от тебя только аккаунт идет), и "разрешение" выдается лишь сервером.
Они это вроде сделали когда ввели триал месячный( я хз когда они его ввели, сам пираткой пользовался)
Я не отрицаю возможности чето лазить в кодах клиента гамака, однако, мне кажется, что люди, которые им пользуются на это не способны
мимо индигеймдэволепер
149 643374
>>43365
Всё можно хакнуть, в том числе и это говно, подсовывая ему желаемый ответ от сервера. Никто просто не хочет заморачиваться, по разным причинам: каким-то группам заплатили, каким-то похуй.
HarmizVenZZZ 150 643753
Товарищи Аноны!
Я уже пол года ебусь в гамаке, и чето сложно, но выходит. И вот возник вопрос:
Много ли тут таких, кто выпустился в стим? Или на дваче(включая итт) никто не решается проекты пилить в гамаке?
151 643758
>>43365
Так я вроде крякнутым триалом и пользовался, где срок триала потом сбрасываатся.
153 643772
>>43753
https://vk.com/gamelife_indie

Тредю завести что ли..
HarmizVenZZZ 154 643783
>>43772 выглядит, мягко говоря, удручающе
>>43762 это чуть лучше, но все равно что то стремно хд
155 643784
>>43783
Твоя-то, ясное дело, лучше. Но ты её не покажешь.
156 643787
>>43772
Котел, тебе же написали "В СТИМЕ"
ты со своими заброшенными технодемками не суйся
157 643867
>>43784
увы, пока что показывать нечего
надеюсь через 4 месяца в стим залететь и потом хвастаться на весь двач :D
158 644360
>>17577 (OP)
Сап аноны, смотря англоязычные гайды, столкнулся с проблемой
используется функция grid_place_meeting(object,grid), но по ней даже не нашел в матчасти страницы, да и геймейкер начинает считать его переменной, что делать? Есть ли альтернатива?
159 644363
>>39552
Могу кряк на мегу залить, ещё надо?
HarmizVenZZZ 160 644382
>>44360
в гамаке ее нет, ее можно подрубить если ручками как новый скрипт
любую кастомную функцию надо подрубать как скрипт, т.е. для кастомной функции должна существовать у тебя в папке скриптов отдельный скрипт, по названию которого идет использование данной функции.
И изза того что у тебя нету данного скрипта гм и считает что данное название отсылает к какой то переменной
161 644406
>>17577 (OP)
Мне бы прототипчик собрать и переслать людям, у которых гамака нет, а триалка не может в .ехе. Раньше же вроде только под шиндошс собирала, это с 2.0 такая фигня?
короч нужны торренты походу.
162 644407
>>44382
Спасибо большое!
163 644408
>>44406
Запиши им видео.
164 644409
>>44408
Надо бы чтобы они поиграли - хотя бы выявить косяки в механиках.
Ладно поищу торренты ну или найду другой конструктор.
165 644412
>>44409

>выявить косяки в механиках


>на триалке



Ну выложи сюда проект в архиве, я тебе скомпилирую.
166 644791
В нынешний GMS так и не завезли 3D, как в старые добрые 6-7-8 версии?

Алсо, как можно порешать проблему со старыми Stand-Alone играми (которые создавались ещё на том GM), которые вылетают на Windows 8/10, если одновременно проигрывается дохуя звуков (скорее всего, больше 10 за раз)?
167 644810
>>44791
3д есть, но зачем он нужен в гамаке?
HarmizVenZZZ 168 644827
>>44791
во первых, для ВСЕХ старых игр можно попробовать поковырять экзе(там в свойствах - совместимость), также, если проблему интересно решать господам создателям етих ИГОР, то они могут банально перекомпилить проекты на новых гамаках
если те прям оч хочется "покопаться в истории" то можешь накатить виртуально старую ось(ну или не виртуально)
если есть исходники на старые гамаки, и есть именно только старый гамак, то новый может заглотить ети исходники. если же тебе интересно ковыряться именно в старом гамаке, то там мб есть моды какие то
однако вопрос: НАХУЯ ЭТО ВСЕ?
169 644830
>>44827
Совместимость тут не поможет, так как игры пилились ещё в те времена, когда максимум существовала виста-хуиста.
Алсо, такой проблемы со звуком на stand-alonах, скомпиленных ещё на совсем древнем GM5 и раньше, нет (как и обратной совместимости с тем, что писали на GM6 и свежее).
Вангую, проблема кроется в ограничении одновременно воспроизводимых звуков на уровне венды, и куда копать - я хз.

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

Алсо, писать разрабам старых игр, которые за один вечер напилили игоря ещё в каком-нибудь 2004 году - ну блядь такое себе.
HarmizVenZZZ 170 644832
>>44830
а как по мне, то играть в такие игоры - ну блядь, так себе XD
171 644833
>>44832
Не, ну иногда охота вспомнить, что за ру$$кое говно создавали во времена, когда интернет был роскошью, мамка денег на диски с игорями не давала, а желание убить время хотя бы тем же написанием примитивных игорь было.
172 645449
>>39556
>>39552
Ёбнутые? На рутрекере, блять.
https://rutracker.org/forum/tracker.php?f=1079&nm=gamemaker
>>39552

>почему юнити можно использовать бесплатно, а это нет?


Потому что юнити - тормознутое, сложное для изучения
говно, а это - нет.
>>40818

>Для примитивной - spine.


Лол.
>>44830

>в те времена, когда максимум существовала виста-хуиста.


Лол.
>>44833
Никогда такого не было.
173 645453
>>45449

>Никогда такого не было.


Было, даже когда компа не было
174 645454
>>43753
Не с харкача, но руSSкие делали, по-моему, на 1.4:
https://store.steampowered.com/app/538100/Feel_The_Snow/
Говно говна, разрабы говорили, что вдохновлялись террарией и неголодайкой, но кроме базовых механик выживалок на хуюнити нихуя и не сделали. Пилили в ёрли-аксессе три года или около того, уже не помню, перерывы между апдейтами были около года, в итоге зарашили кривой финал как могли, положительные отзывы в стиме скорее всего от их подсосов в группе вк.
175 645483
>>45454
Нихуя себе, тысячи подсосов купии игру и проголосовали положительными отзывами.
176 645485
>>45483
Да прикольная на вид, но тратить деньги или играть тратя время, желания нет.
HarmizVenZZZ 177 645585
>>45454
я спрашивал на счет челов, которые сидят именно на дваче, и, пилят в гамак игры. с разрабами этой игры я знаком лично и на харче они не сидят))
они недобумеры которые про двач даже не слышали
178 645600
>>45585

>недобумеры


Ебать как машина ярлыков работает науадэйз.
179 645627
>>45483
Не вижу противоречия. Кто-то делал положительные отзывы в ёрли-аксессе, когда ещё нихуя не было понятно, с тех пор не играли, скорее всего.
180 646200
>>17577 (OP)
Есть ли какие-нибудь адекватные туториалы, написанные ТЕКСТОМ, про спецификации языка GML? Чтобы пояснили за скриптинг, за наследование и прочее. А то что я ни открою — сойбой поясняют сойбоям как делать платформер или какая-нибудь хуйня в духе «40 игровых механик для вашей РПГ».
181 646203
>>46200
Встроенный мануал суперподробный, читай его.
182 646204
>>46200
Не, я заебался буду просто читать документацию.
184 646207
>>46203
Спасибо, отзывчивый анон.
185 646426
неожиданная проблема не знаю куда пойти. делал таскай\кидай по видосу https://www.youtube.com/watch?v=_lKgF-PaB2Q&t=812s все получалось до момента когда настраивал статусы игрока. когда происходит коллизия сразу же виснет игра, причем пробовал на разных компах на моем, слабом, и по мощнее. ошибку не выдает, да и не факт что она есть, тк там скриптов пару строк
186 646431
>>46426
Виснет - значит бесконечный цикл у тебя где-то.

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

А вообще телепаты в отпуске - код в студию.
187 646436
У меня вопрос нестандартного типа. Когда-то более-менее освоил базовый хаха кодинг при помощи РПГМейкера, по крайней мере понял, как в общих чертах работать с переменными в других двиглах, благодаря чему научился делать относительно продвинутую хуйню в своих кругах. Так вот вопрос: скрипты в гамаке - это как каммон эвенты, которые ты можешь вызывать в других эвентах для активации какого-то процесса вместо того, чтобы расписывать всё это охуллион раз? Я, конечно, понимаю, что нормальные движки и конструкторы для детей - это разные вещи, но мало ли.
1500 часов спрайтинга в гамаке, код дальше базового передвижения по гайдам не осваивал
188 646439
>>46436
чтобы в объекте А выполнялся код объектом Б нужно в объекте А написать:
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)
{
название_скрипта(аргументы скрипта, если ты их пихал канеш)
}
188 646439
>>46436
чтобы в объекте А выполнялся код объектом Б нужно в объекте А написать:
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)
{
название_скрипта(аргументы скрипта, если ты их пихал канеш)
}
189 646440
>>46439 (ито еще я)
Я думаю мб по рофлу начать пилить ролики, в которых поясняю приколы по скрипту(не как делать хуету просто втыкая скрипт, а поясняя как работает оно все)
Есть желающие смотреть?
.jpg20 Кб, 598x480
190 646442
>>46439
Нуууууу это прям дохуя информации за раз для такого дерева, как я. Спасибо, конечно, анон, как-нибудь вычленю из этого что-нибудь полезное. Единственное, что более-менее понял

>Советую почитать побольше по дс-листам в справке + справку гамака


Вот эта хуйня не раз всплывала в видосах Friendly Cosmonaut, в общих чертах понимаю, что это. А так код гамака для меня пока что очень сложен, потому что до этого я работал с двиглом, где персонаж магическим образом сам ходил и более-менее сам организовывал боёвку. Собсна, поэтому я на большую часть твоего текста я сейчас смотрю с полным непониманием. Разве что худо-бедно понял, как выводить базовый инвентарь по гайдам той же FC, вот и всё.
>>46440

>Есть желающие смотреть?


Я!
191 646467
>>46442
Тебе чел расписал в общих чертах, как обращаться к другим объектам. Причём весьма сумбурно.

У тебя вообще был несколько другой вопрос:

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



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

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

При этом можно поступить очень просто, и написать у каждого врага в ивенте 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 файл. И каждый враг будет считывать свои параметры из этого файла. Когда врагов под сотню - это удобней.
191 646467
>>46442
Тебе чел расписал в общих чертах, как обращаться к другим объектам. Причём весьма сумбурно.

У тебя вообще был несколько другой вопрос:

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



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

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

При этом можно поступить очень просто, и написать у каждого врага в ивенте 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 файл. И каждый враг будет считывать свои параметры из этого файла. Когда врагов под сотню - это удобней.
192 646474
>>46436

>1500 часов спрайтинга в гамаке, код дальше базового передвижения по гайдам не осваивал



Если у тебя всё хорошо со спрайтами. могу написать для тебя какой-нибудь код, прокомментированный.
HarmizVenZZZ 193 646476
>>46467
Ты канеш красиво все расписал, но по челу видно что он по написанию кода вообще новичок, а ты грузишь енумами)0
и я не могу понять почему у тя парамы в скриптах с цифрами, так можно чтоли? я арги писал, короче же, не?
Да и думаю, что писать скрипты нужно прям самому учиться, в плане чтоб не чел с двощей те писал, а ты сам гуглил да в справке ковырял
Да и лучше бы ты then пихать начинал, а то код читается сумрачно местами. В скобочках, где аргументы функций после запятых пробелы бы тыкать. я понимаю что как препод долбоеб впрягаю, сам так даж думал. в итоге у меня проект дохуя вырос и я его даж переписывал, и чето так лучше рили когда формализация аккуратнее
На счет параметров и иник - я бы создал один объект, в котором спрайт и прочее из иника читается по заданному имени или индексу какому то, а поведение объекта по тем же переменным из иника выбирается(раз уж ушел в пиздец хд). Можно отмазаться мол для новичка писал и тд, но по нему же понятно что для него оператор with неизвестен даж, пускай изучит в начале его
.png5 Кб, 512x512
194 646480
>>46467
Вот тут вроде я уже что-то понял, спасибо, анон. Не понял только это:

>obj_player.invulnerable


По идее ты в create игрока назначаешь переменную invulnerable и приравниваешь её к нулю, так? Но в таком случае она не будет учитываться командой выше, если её значение не будет изменено в каком-либо сценарии на что-то выше нуля? Вопрос пиздец тупой, знаю, но что поделать.
>>46474

>Если у тебя всё хорошо со спрайтами.


Понятие растяжимое. Ну вот, например, портрет, который я рисовал для анона из пикселяча пару месяцев назад, вот примерно в таком стиле и работаю.

>могу написать для тебя какой-нибудь код, прокомментированный.


Хотел бы создать главное меню, управляемое мышью, и чтобы там менялся задний фон в зависимости от происходящего в игре (это я, так понимаю, делается простыми чеками на переменные), но хуй знает, наверное это сложный процесс.
195 646482
>>46480

>По идее ты в 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
195 646482
>>46480

>По идее ты в 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
196 646485
>>46482

>invulnerable = false;


Бля, давно что-либо кодил на гамаке, уже и забыл, что там есть тру и фолс. То есть да, получается, что просто сокращённые переменные типа invulnerable читаются как invulnerable = true.

>Ну постучи в телегу


Бля, я никогда ей и не пользовался. Есть дискорд?
197 646488
>>46485

>. То есть да, получается, что просто сокращённые переменные типа invulnerable читаются как invulnerable = true


Чё?

> Есть дискорд?


Слишком тяжеловесное приложение.
198 646490
>>46488

>Чё?


Ну вот ты ставишь условие if invulnerable, не говоря конкретно, что с ним такое, то есть подразумевается, что if invulnerable = true?

>Слишком тяжеловесное приложение.


Ну хуй знает, к вечеру попробую поставить телегу, а то сейчас не за пекой.
199 646498
>>46490
Я использую переменную в качестве условия для if
Её значение game maker конвертирует в boolean не зависимо от её типа.

Если она изначально задана как boolean (true или false) всё просто.
Но она может быть и Int, float, double, string. В этом случае если она будет больше 0, то будет воспринята как true. Если 0 или меньше - false.
200 646499
>>46490
Что там ставить?
https://telegram-web.online

Приложение на телефон, правда, понадобится.
201 646500
>>46490

>не говоря конкретно, что с ним такое, то есть подразумевается, что if invulnerable = true?



Это условие if
если выражение после if имеет значение true то следующий за If код в {} будет выполняться.
202 646572
Можно ли в GMS собрать Jagged Aliance, или есть более подходящие движки?
203 646583
>>46572
Можно. Есть.
204 646587
>>46431
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;
204 646587
>>46431
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;
205 646590
>>46587
У тебя внатуре 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;
}
}
205 646590
>>46587
У тебя внатуре 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;
}
}
206 646606
>>46590
Я делал по видео с драг энд дроп, у чела все работало. Может где то не так настроил связи, я просто совсем туго программирую. Главное понял что это из-за циклов, может как то попробую без них сделать.
207 646627
Здесь есть максимальный размер уровня. Можно метроидванию с огромными уровнями делать?
!gOlrx2AM8I 208 646629
>>46627
на самом деле максимального размера уровня в говнаке нет. если камеру двигать скриптами, задавая view_xview[0] = -500 то считай румы бесконечные, впрочем иногда с этим мелкая багота всякая связана, но всё разрешимо
209 646632
>>46629
а разве нельзя собрать говноредактор карт, да с ним рофлить?
Я прост делал чет, да вроде норм. Правда надо сразу ебаться(чтоб у тя блоки в дс-гридах или массивах как тайлы были, чанками рисовать и тд)
210 646646
>>46627
Нет. Можно.
211 646669
>>46632

>а разве нельзя собрать говноредактор карт, да с ним рофлить?


нисаветую, игры на гамаке по полдня компилируются-запускаются, легче огромную руму зделать и на ней тыкать чем каждый раз ждать сто лет загрузки редактора
212 646759
>>46669

>гамаке по полдня компилируются-запускаются


Просто у тебя очень кривые руки.
213 646765
>>17577 (OP)
Скиньте ломаную версию 2го гамака плиз, провтыкал что там триал 30 дней, а я даж не успел еще ниче опробовать нормально
214 646771
>>46765
Скинул в личку
215 646774
>>46771
скинь и мне в тред
216 646775
>>46774
В тред нельзя, злая моча забанит.
Только в личку. Чтобы была личка нужен пасскод, если что.
217 646777
>>46765
Нету ее, покупай.
218 646779
>>46775
У меня личка без пасскода есть, чяднт?
219 646780
>>46777
а 2й раз возможно зарегать на тот же комп триал?
220 646783
>>46779
Абу благословил тебя за какой-то пост, видимо.
221 646784
>>46780
Не пробовал, но не вижу причин, почему нельзя было бы этого сделать.
222 646793
>>46627
Блэт, это вопрос был. На гамаке вообще метроидвании есть?

Может кто-то знает что-нибудь с большой картой (именно большой, а не разбитой на мелкие с переходами)?
223 646816
>>46793
То, что тебе кажется большой картой, обычно хорошо замаскированные переходы между комнатами. Это раз.

Метроидвания предполагает разбиение на комнаты. Это два.

На гейм мейкере куча метроидваний.
https://store.steampowered.com/app/620220/Catmaze/
https://store.steampowered.com/app/257850/Hyper_Light_Drifter/
224 646826
>>46759
какие руки? пустой проект стартует секунд 5-10
225 646834
>>46826
можно сделать чтоб у тя карты грузились из файлов в игре, и сделать другой проект, который эти карты редактировать мог. Тогда компиляции кода редактора карт не будет, а сами карты можно вставить в игру как файлы, или просто отдельно вкидывать, изза чего и код карт при запуске никак не влияет на прогрузку
Максимум это секунд 10 потупит когда карту грузит и ты ее открываешь чтоб играть на ней, но это дичайший максимум, как по мне
Если же думаешь что карты весить будут много, то тут вопрос сохранения. Буфферы + сжатие и все крут
226 646849
А здесь можно менять персонажа из спрайтов без перерисовки. Ну то есть, например надеть шляпу, добавить брызги крови или освещение?

Можно делать составные спрайты, чтобы не рисовать отдельные по каждую позу. Например бег, ноги - всегда один спрайт-шит, а остальное в зависимости от положения курсора разное.
227 646877
>>46849
Да.
228 646878
>>46849
Разверну немного.

Тебя, судя по всему, интересует скелетная анимация.
Её можно сделать в spine или dragon bones и импортировать в game maker.
229 646972
>>46878
Меня интересует спрайтовая анимация и можно ли с ней как-то здесь более расширенно работать (комбинировать спрайты), кроме как рисовать новые спрайты на каждый пук.
230 646981
>>46972
Конечно можно.

Вместо draw_self() используй draw_sprite или draw_sprite_ext столько, сколько нужно раз. Хоть из отдельных пикселей собирай персонажа, в чём проблема-то?
15465842307460.gif732 Кб, 202x368
231 648779
на движке уже ничего не пилится чтоле?
эффект-зелья озверин.gif150 Кб, 284x456
232 648789
233 648844
>>48789
Какой-то непропрциональный фон
234 648922
Какой язык программирования юзается в движке кроме встроенного?
235 648923
>>48922
Никакого.
Но для HTML5-версий можно писать плагины на JS, для Windows - DLL на любом нативном языке. Если тебе это зачем-то надо.
236 649154
Стоит ли покупать стим версию гамака? Будут ли какие-то отличия?
237 649155
>>49154
Стоит. Не будет.
1.png23 Кб, 371x407
Эффект появления героя 238 652845
Челлы, помогите с анимацией. Спавнится герой и ему прописана уже стандартная анимация по типу ходьбы, бега и подобного. Он собственно сразу начинает ее выполнять. Эффект у меня в виде 5 спрайтов.
Как воспроизвести эффект персонажа и на ~3 секунды перебить стандартные анимации героя? Пре-драв? Или каааааак?
239 652846
>>52845
стейт машины
240 652848
>>52845
в событии draw
если анимация эффекта не показана, рисовать анимацию эффекта
если проигран последний кадр эффекта, установить флаг "показано"
если анимация показана, вызвать self_draw()
241 652871
>>17577 (OP)
Планирую взять гамемакер mobile версию, для разработки под андроид. Какие подводные камни? Насколько движок мертв, его там обновляют еще?

Алсо, в мобильном геймдеве я ньюфаг, как там со скейлом под разные экраны, соотношения сторон? Есть ли некое универсальное решение, или все каждый раз делают с 0, изобретая велосипеды?
242 652872
>>52871
UPD: он нормально сейчас компилит АПК под 9, 10 андроид?
243 652878
>>52872
Обновляют

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

Компилит апк нормально
image.png12 Кб, 347x139
244 652919
>>52848
блять вообще никак не выходит.
как я понимаю проблемы из-за события step где у меня и прописана стандартная анимация.

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

в create anim = 0;
1.jpg142 Кб, 1654x769
245 652928
>>52919
Тебе ответили уже - 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()
246 652929
>>52919
При создании игрока делаешь ему state = player_states.spawn

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

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

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

if image_index >= image_number -1 state = player_states.stand
247 654389
>>52878
Можешь накидать за щекуссылки на платные и бесплатные решения скейла под мобилки?

И да, я заметил, что двойной тап срабатывает через раз, кто-то сталкивался с подобным?
248 654549
>>17577 (OP)
Ебаный стекломой, почему не компилит-то? 2 объекта в которых 2.5 строчки кода блять, срет ошибками и не работает.

Если выбрать VM - о чудо, все работает, если выбрать YYC - не работает, не компилится. Почему так?
249 654567
>>54549
draw_text(200,100, string(fps) )
250 654569
>>54549

>Почему так?


потому что YYC не приводит типы автоматически
251 654570
>>54567
Ну и соответственно string(display_get_width() )
252 654724
>>54569
ОЧЕНЬ странно, я удалил папку с кешем из AppData\Roaming и все починилось само собой, в "коде" я вообще ничего не менял.
253 654930
Доставьте гайд или исходники для point & click.
aninidhogg.gif3 Мб, 294x233
254 655077
посоны помогите. делаю все по урокам слабо соображаю, никак не могу найти как сделать что бы персонаж держал оружие в разных позициях как на гифке. привязываю координаты по х оружия к персонажу, а по у не получается - по возращается в исходное положение, то улетает непонятно куда.
255 655174
>>55077

enum weapon_postions
{
low,
mid,
high,
}

Заводишь переменные weapon_y_offset, weapon_x_offset, weapon_position

в step_event оружия делаешь

x = owner.x + weapon_x_offset*owner.dirx
Где owner - id хозяина оружия.
Соответственно оружие у тебя будет привязано к Х координате хозяина и тому, куда он смотрит.

затем
switch weapon_position
{
case weapon_postions.low: weapon_y_offset= -10; break;
case weapon_postions.mid: weapon_y_offset= -20; break;
case weapon_postions.high: weapon_y_offset= -30; break;
}
y = owner.y + weapon_y_offset

высота оружия будет привязана к высоте хозяина + отступу от неё, который будет зависеть от переменной weapon_position

Соответственно хозяин сможет сменить высоту оружия приказав
my_weapon.weapon_position = weapon_postions.low
255 655174
>>55077

enum weapon_postions
{
low,
mid,
high,
}

Заводишь переменные weapon_y_offset, weapon_x_offset, weapon_position

в step_event оружия делаешь

x = owner.x + weapon_x_offset*owner.dirx
Где owner - id хозяина оружия.
Соответственно оружие у тебя будет привязано к Х координате хозяина и тому, куда он смотрит.

затем
switch weapon_position
{
case weapon_postions.low: weapon_y_offset= -10; break;
case weapon_postions.mid: weapon_y_offset= -20; break;
case weapon_postions.high: weapon_y_offset= -30; break;
}
y = owner.y + weapon_y_offset

высота оружия будет привязана к высоте хозяина + отступу от неё, который будет зависеть от переменной weapon_position

Соответственно хозяин сможет сменить высоту оружия приказав
my_weapon.weapon_position = weapon_postions.low
256 658065
Привет. Я очень новенький во всем этом деле, но у меня уже возникла проблема, которую я не смог решить за последние 2 дня. Я гуглил, честно, прочитал про keyboard_check_pressed и пытался паузы после анимации делать, но в итоге у меня перестали анимации проигрывать вообще.
Суть проблемы такова:
Я использую физику в своем платформере. Я везде нажал галочки и с этим никаких проблем нет. Персонаж двигается туда и сюда:

/// идем вправо
if (keyboard_check(ord("D")))
{
phy_position_x += go;
}
/// теперь в другую сторону, налево
if (keyboard_check(ord("A")))
{
phy_position_x -= go;
}

После этого я сделал прыжок, все по туториалам (делал три часа, тупенький)
/// прыгаем ( х и у это координаты игрока, 0 - вектор относительно х, jump - вектор относительно у)
if (keyboard_check(vk_space)) && (jumping = false)
/// если нажат пробел и ИГРОК НЕ В СОСТОЯНИИ ПРЫЖКА, ТО
{
physics_apply_impulse (x, y, 0, imp_jump); ///придать импульс
jumping = true; /// состоянии в прыжка активно, что не дает jumping перейти в состояние false
}
/// не прыгаем кучу раз в воздухе, проверка на соприкосновение
if (place_meeting(x, y + 1 , ob_wall)) // если стоишь на объекте, то состояние прыжка НЕАКТИВНО, что
/// позволит нам его совершить согласно условию выше!
{

jumping = false;
}

Под спойлеры я убрал свои коменты, чтобы показать анону, что я действительно пытаюсь вникнуть.

В чем проблема?
А в том, что если зажать ПРОБЕЛ, то персонаж начинает ВСЕ ВРЕМЯ прыгать, без остановки, что убивает анимацию. Вопрос такой, анон, как правильно реализовать функцию прыжка при включенной физике? Может, поделитесь опытом?
Спасибо.
256 658065
Привет. Я очень новенький во всем этом деле, но у меня уже возникла проблема, которую я не смог решить за последние 2 дня. Я гуглил, честно, прочитал про keyboard_check_pressed и пытался паузы после анимации делать, но в итоге у меня перестали анимации проигрывать вообще.
Суть проблемы такова:
Я использую физику в своем платформере. Я везде нажал галочки и с этим никаких проблем нет. Персонаж двигается туда и сюда:

/// идем вправо
if (keyboard_check(ord("D")))
{
phy_position_x += go;
}
/// теперь в другую сторону, налево
if (keyboard_check(ord("A")))
{
phy_position_x -= go;
}

После этого я сделал прыжок, все по туториалам (делал три часа, тупенький)
/// прыгаем ( х и у это координаты игрока, 0 - вектор относительно х, jump - вектор относительно у)
if (keyboard_check(vk_space)) && (jumping = false)
/// если нажат пробел и ИГРОК НЕ В СОСТОЯНИИ ПРЫЖКА, ТО
{
physics_apply_impulse (x, y, 0, imp_jump); ///придать импульс
jumping = true; /// состоянии в прыжка активно, что не дает jumping перейти в состояние false
}
/// не прыгаем кучу раз в воздухе, проверка на соприкосновение
if (place_meeting(x, y + 1 , ob_wall)) // если стоишь на объекте, то состояние прыжка НЕАКТИВНО, что
/// позволит нам его совершить согласно условию выше!
{

jumping = false;
}

Под спойлеры я убрал свои коменты, чтобы показать анону, что я действительно пытаюсь вникнуть.

В чем проблема?
А в том, что если зажать ПРОБЕЛ, то персонаж начинает ВСЕ ВРЕМЯ прыгать, без остановки, что убивает анимацию. Вопрос такой, анон, как правильно реализовать функцию прыжка при включенной физике? Может, поделитесь опытом?
Спасибо.
257 658066
>>58065
Как сделать так, чтобы персонаж прыгнул, подождал две секунды и снова прыгнул, короче.
258 658067
>>58066
Можете даже не отвечать прям конкретно, а просто даже намекнуть, не через саму ли анимацию это надо делать?
Ну, игрок прыгнул, проигралась анимация (15 кадров)
и пока анимация не проигралась, jumping = true и прыгать низя
А как проигралась, то сразу jumping = false и можно прыгать. Я туда копаю?
Это все очень непонятно, сложно, но дико интересно!
259 658077
>>58065

>А в том, что если зажать ПРОБЕЛ, то персонаж начинает ВСЕ ВРЕМЯ прыгать, без остановки, что убивает анимацию.



Во-первых дебагай и смотри, в какой момент у тебя jumping становится false.
Твой персонаж не может прыгнуть пока jumping == trur? Значит в какой-то момент jumping становится равно false.

Когда это может произойти?
Когда выполняется условие (place_meeting(x, y + 1 , ob_wall))

Внутрь этого условия ставь breakpoint и запускай гамак дебаг режиме. Увидишь, когда это происходит.

(Очевидно что это происходит тупо прямо на старе, потому что чек происходит прямо после прыжка. physics_apply_impulse (x, y, 0, imp_jump) не меняет координату объекта. Координата объекта изменится когда-то потом, в конце шага. А код продолжает выполняться. Так что у тебя тупо сразу jumping = false

Во-вторых у тебя сам подход вкорне не правильный.
Используй state machine
260 658079
>>58067
Используй state machine

Сделай как на пиках 1 и 2.

Разложишь все действия и всю физику по красиво по скриптам и придёшь к пикам 3 и 4.
image.png26 Кб, 228x109
261 658084
>>58079
идентация уровня бог
262 658087
>>58079
все кейсы на третьем пике ужимаются до одной строчки
image.png121 Кб, 1327x677
263 658088
Как найти правильный range чтоб блятская кириллица работала? Тупа ебануть с 0 по ~1900 и все? Ну работает ведь..
Если все самому или как-то через CODE или через файл то получается полная поеботина.
264 658103
>>54930
Бамп.
1.jpg23 Кб, 501x507
265 658108
266 658117
>>58079
>>58077
Спасибо огромное. Для меня это сейчас было огромным открытием, никогда раньше о state machine не слышал. Я смотрю на туториалы и в хелпер, и что-то говорит мне повременить с физикой, а работать через систему координат, ведь в моей игре нет механики с физикой по сути.
Спасибо, анон, пойду курить мануалы!

https://www.youtube.com/watch?v=G1WxKEk6Wrw&list=LLPTOsC9fAjvbv-AOezor0_Q&index=4&t=820s
267 658139
>>58117

>Спасибо огромное.


Обращайся.

>что-то говорит мне повременить с физикой, а работать через систему координат, ведь в моей игре нет механики с физикой по сути.



Это говорит голос разума. Прислушайся к нему.
268 658623
>>58108
Ооо, просто супер, благодарю. А то фиг найдешь статьи по этой теме..
269 659278
>>17577 (OP)
В GMS2 как-то можно активировать ВИБРАЦИЮ смартфона, того же андроида? Все, что есть в гугле на эту тему для GML устарело и было вырезано.
270 659567
>>17577 (OP)
Последний раз использовать этот ваш гаме макер лет 8-9 назад.
Есть ли особый смысл использовать новую систему слоев внутри комнаты? Допустим мне надо убрать кнопки в меню и отрисовать другие, то раньше я просто уничтожал одни объекты(кнопки в меню например), создавал другие, и наоборот.

Есть ли смысл сейчас заморачиваться со слоями, типо отключить 1 слой, включить другой и т.д.? Или в принципе похуй как будет реализовано? Может там есть профит в плане производительности?
271 659587
>>59278
надо свой экст писать под нужную платформу
или переделывать устаревшие из гугла
272 659589
>>59567
зависит от того как ты часто удаляешь/создаёшь
если немного то похуй как

если много то лучше слоями или visible в 0 ставить
273 659607

>надо свой экст писать под нужную платформу


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

>>59589
Пока-что не много, просто думал сделать нормальное меню с помощью этих новых слоев. Есть ли возможность не отключать определенные объекты на слое? Допустим я отключаю слой, а 1 из объектов должен быть всегда на всех слоях в одной из комнат, и его состояние не должно сбрасываться при активации/деактивации слоев.
274 659645
>>59607
Ты какой-то странный.

А без этих "новых" слоёв ты не можешь назначить объектам меню переменные типа "fake_layer = 1" и обрабатывать их, обращаясь к ним по fake_layer?

>Или в принципе похуй как будет реализовано?


Реализовано будет так, как ты этого захочешь.

>Может там есть профит в плане производительности?


Какая, мать твою, производительность и оптимизация тебе нужна в менюшках?
275 660121
draw_sprite_ext(sprite_index,image_index,x-5,y-5,image_xscale,image_yscale,0,c_black,0.8);
draw_self();
Если я ставлю это в draw event любого объекта, всё рисуется без проблем, но если я вставляю этот же код в родительский объект и присваиваю ему в качестве детей объекты, он не робит. Что не так? Самого родителя добавляю в комнату.
.jpg78 Кб, 453x453
276 660126
>>60121
Отбой, надо было у дочерних объектов удалить старые draw эвенты с их draw_self(), теперь всё работает.
277 660828
>>59645
Захотел попробовать простые системы освещения для 2д игры на андроид, попробовал 2 варианта
https://marketplace.yoyogames.com/assets/7820/lighting-system-2d
и
https://marketplace.yoyogames.com/assets/8059/fg-lighting

Запускаю такой на смартфоне приложение и... в первом варианте 20 фпс, во втором 40, и это блять с одним источником освещения и 3мя спрайтами. Гениально. Это васяна наделали кривой хуйни, или в GM и правда настолько убогая производительность? Компилил через YYC.

Хотел купить этот ассет https://marketplace.yoyogames.com/assets/7708/ultimate-light-system но теперь мне стремно, ведь проверить никак нельзя, и там скорее всего тоже будет 10 фпс. Почему так? В чем может быть проблема?
278 660883
>>60828
UPD: решил попробовать этот платный ассет, такая же хуйня, 30 фпс на телефоне с одним источником света.
279 660887
>>60883
требуй деньги назад
280 660893
>>60828
Залезь в код да посмотри, кто тебе мешает-то?
ziTtWYC.png23 Кб, 650x222
281 660899
>>60893
В том что я тупой как овощ и стал бы искать готовое решение в ином случае. Может кто сталкивался с подобными проблемами?

>>60887
Попробовал написать в саппорт с описанием проблемы, но что-то не верю, что мне вернут деньги на ассет из маркета.
282 660910
>>60899
Я сталкивался. Покупал ассет из маркета и он у меня тормозил как говно.

Я, честно говоря, не стал особо заморачиваться на то, чтобы разобраться, что именно там не так. Я в конце концов написал своё освещение, которое у меня не тормозило.
283 660932
>>60910
Кажется я понял из-за чего такое может быть.
Все эти система освещения из маркета основаны на сурфейсах, а судя по гуглам это вызывает адские просадки производительности на мобильных устройствах.
https://www.reddit.com/r/gamemaker/comments/5cg6wx/surfaces_slowing_down_android_performance/

Если не секрет, твоя система освещения тоже работает на этих ваших сурфейсах или нет?
284 660933
>>60932
Естественно на сурфейсах.

Что там с мобилочками - хз. Никогда не делал под мобилочки.
285 661001
>>60933
Там реально какая-то проблема с этими сурфейсами.
Вот попробовал такое решение
https://github.com/niksudan/prettylight

На форуме GMS КУЧА тредов о том, что оказывается сурфейсы лагают как сука на андроиде, причем треды и 2017 года и 2019. И это все не исправили. Как так?
286 661040
>>61001
В твоём треде проблема не с сурфейсами а с кол-вом обращений к ним. А ещё на мобилках может быть проблема со свапом текстур, draw callами и т.д.
Ты что, ожидаешь что сраная мобилка будет иметь видеокарту, сравнимую по производительности с десктопной? Ты совсем поехавший?

>И это все не исправили. Как так?


А вот так. Лучше перекатывайся отсюда нахуй в срачетред, там ты найдёшь себе друзей, будете вместе бомбить от искаробочных функций и кривых ассетов.
287 661041
>>61040
Схуяли простые решения решения для освещения с самыми простыми тенями 2д 2х спрайтов и в 2D должны быть сравнимы с ПК?

Я связался с разработчиками нескольких таких решений(платного), один из них скинул АПК, в котором тоже ОЧЕНЬ плохая производительность, еще один сказал что даже не знает, в чем проблема, мол на 1.4 у него все работало, и будет разбираться.
+на всякий случай я подробно описал проблему и скинул свой образец в поддержку yoyogames, посмотрим, что ответят.

>вместе бомбить


Почему-то использование сурфейсов на андроиде просто убивает сам телефон.
288 661048
>>61041

> простые решения решения для освещения с самыми простыми тенями



Так ты уже разобрался в коде своего ассета?
289 661622
>>17577 (OP)
Поясните ньюфане, чем отличается step от end step например? Аналогично для Draw.
И в чем отличие Draw от DrawGUI? Насколько я помню раньше был только Draw. Типо DrawGUI будет всегда поверх всех слоев и всё?
290 661716
>>61622
Считай что у тебя может быть 3 step event с названиями begin ste, ste, end step

Сначала выполняется begin step для всех объектов, потом step потом end step

DrawGui ,будет во-первых поверх всех слоёв. а во-вторых в нём координаты отсчитываются не от 0.0 комнаты а от 0.0 экрана
291 661989
https://www.yoyogames.com/blog/514/gml-updates-in-2019
вышла новая версия, теперь с полноценными функциями и многим другим, всем качать
292 662134
>>61989
https://www.yoyogames.com/blog/549/gamemaker-studio-2-3-new-gml-features
Ошибся с ссылкой. Да и к тому же оно пока в бете. Но наконец-то там сделали то, что ещё 4 года назад надо было сделать. А именно: методы, структуры, многомерные массивы, редактор анимаций.
293 662282
>>62134
>>61989
А денех ты мне дашь на покупку? А то триал уже закончился.
294 662289
>>62282
Подпишиь на бета-тестирование. Будет работать, пока тестирование идёт.
295 662290
>>62134
Охуенно!
Буду завтра разбираться.
Небось все скрипты поломаются

Многомерные массивы - то что нужно.
296 662291
>>62290
Не всё так просто. Я записался типа в бета-тестеры. а ссылка до сих пор не пришла, пришла надпись "ждите, вы 169 999 в очереди"
297 664116
>>17577 (OP)
Тут хоть у кого-то из анонов есть версия GMS с экспортом под мобилки?
0pZpB2K.png1 Кб, 156x421
298 664139
>>17577 (OP)
Анончик, использую скейл из этого гайда
https://www.yoyogames.com/blog/66/the-basics-of-scaling-the-game-view

Картинка скейтился хорошо, на разных экранах и разрешениях, но вот я заметил, что со всеми спрайтами и шрифтами вот такая хуйня появилась. Как можно лечить?
299 664153
>>64139
Что бы стало более понятно, вот 1 и тот же спрайт на 3х разных смартфонах. Модели разные, разрешение у всех 1920x1080, появляются вот такие глитчи у спрайтов и шрифтов.
300 664178
>>64139

> Как можно лечить?


Использовать вектор.

Спрайты скейлить можно только с целочисленными значениями скейла. Увеличивать в 2,3,4 раза. Или уменьшать также.
Будешь скейлить дробно - будешь иметь это.
301 664184
>>62291
твари, до сих пор не прислали
изображение.png72 Кб, 1104x820
302 664251
Такой вопрос: у меня типа рогалик, пошаговый, вид сверху. Ход игрока-ход врагов. Пикрилейтед.
В ход врага он определяет где герой, случайным образом определяет по-вертикали или по-горизонтали двигаться к нему. И топает сколько-то кадров на размер тайла. Потом заканчивает ход, уменьшая глобальную переменную "не походившие враги". Когда "не походившие враги" == 0 - ход переходит к игроку.
Мне нужно как-то обрабатывать их столкновения друг с другом, чтобы один не налезал на другого. Сейчас они сбиваются в компактную кучу из одного спрайта, лол.
Проблема в том, что все враги, очевидно, ходят одновременно.
Как их заставить ходить по-очереди?

Пока писал, придумал, что можно разбить фазу хода врагов на две части: сначала они все выбирают куда топать, "сообщают" куда-то, а потом там ресолвятся конфликты и им возвращают валидные точки прибытия. Но как-то сложно и непонятно.
303 664261
>>64251
во первых, если ты делаешь кучу врагов кучей объектов, то один хуй они ходят не сразу все одновременно, а последовательно в том порядке, в которым ты их наклепал на карту(можешь проверить - в степе или криейте пихаешь чето аля "show_debug_message() где в скобочках пишешь ид объекта, и сверяешь).Кажется что одновременно тк повторов действий объектов 30 в секунду(или другое значение, которое зависит от room_speed). Это относится ко всем объектам
Во вторых, я бы не объектами делал каждого врага, а просто запихал их в дс листы и там бы думал
У тя же просто можно в скрипт их ходьбы вписать проверку на "свободна ли клетка"
304 664327

>а последовательно в том порядке, в которым ты их наклепал на карту


>У тя же просто можно в скрипт их ходьбы вписать проверку на "свободна ли клетка"


Так и было вначале, когда они прыжком с клетки на клетку перемещались. А я хочу, чтобы плавненько-красивенько. Поэтому он смотрит на клетку, куда хочет переместиться, проверяет её id, и если 2 или 10 (пол или открытая дверь соответственно) - начинает в каждом кадре смещаться в этом направлении на два пикселя, пока его текущие координаты не сравняются с новыми координатами.

>Во вторых, я бы не объектами делал каждого врага, а просто запихал их в дс листы и там бы думал


Я вчера перед сном тред весь перечита, ты уже писал там кому-то про эти дс-листы. А что это такое?
Вот степ моего врага, если чо:
https://pastebin.com/RFNZtqQD
305 664342
>>64327
А чтобы плавненько-красивенько, то сделай во время хода период, в котором враги принимают решения - т.е. выбирают клетку. в которую собираются двигаться, проверяют, не выбрал ли кто-то из коллег эту же клетку для движения и объявляют клетку занятой.

А потом преиод, в который происходит обработка этих решений, т.е плавненькое перемещение в нужную клетку.
306 664372
>>64342
Ну, я про это и написал сразу. Вот только как это сделать фактически?
Я пока думаю так:
1. Задать всем врагам переменную speed.
2. После создания всех врагов собрать их айдишники в массив.
3. Отсортировать массив по speed.
4. Разрешать выполнение хода врагам по-очереди.

Пока я не знаю, как сделать п.2. Вроде with (obj_enemy), но чёто не работает.
307 664382
>>64327
возможно про дс листы писал я, мб нет
а твой код я в рот ебал читать, тк ты про таб не слышал
как использовать таб?
вот так
if (Uasshole) then
{
gofuckuself = true;
if (IamGAY = true) then
{
PrepareANUS = 1
}
}
или у тя табы съелись пастебинахуем
но если ты не понял, то все что внутри фигурных скобочек табается блять, даже еще одни фигурные скобочки и то что внутри тех захуяренных скобочек тоже
я кста не понимаю зачем ты хуяришь карту не тайлами. сделал бы мир по сетке, дабы не ебать мозг с врагами. просто нахуярил условный ds_grid(что является массивом, ес вдруг ты не шаришь), и хуяришь в нем внутри врагов клеточки - 1 свободна, и можно пиздохать и 0 знач там негры выебут
и изич у тя с врагами будет, более легче все по самому движению, а так чтобы оно выглядело мол они не тупо с клетки на клетку едут ето ж изич сделать
делаешь знач объект, куда пихаешь клеточки карты. можешь нахуярить алгоритм чтобы он по готовой комнате смотрел че у тя за шиза происходит, или нахуярить генерацию, или же говнокудахтор карт(в зависимости от твоих амбиций), куда ппихается собсна массив через ds_grid с клеточками
затем создаешь объект игрока. я не понимаю, как у тя должно быть, но путем моей скромной дедукции, у тебя игрок чето делает(двигается, пиздится, 1 действиее какое то), а затем мобы прогружаются и чето делают(1 тоже действие).
Для того чтобы это нахуярить просто пихаешь объект еще один, куда пишешь фазу хода. изначально пускай буит 0, затем ес игрок чето делает, то перед тем, как объект игрока(его герой так сказать) смотрит, че по фазе, и если фаза для игрока(тобишь 0), то чето делает, а затем ставит в переменную фазы 1. изза этого, игрок, пока карта не походит, нихуя сделать не смогет.
В это время нужно придумать как у тя окружение будет работать. по идее у тя онли мобы, так что делаешь объект-родитель для того чтобы как то обращаться ко всем мобам, а объекты собсна других мобов делаешь детьми этого объекта-родителя(буду называть в будущем монстромать)
берешь собсна свою монстромать, пихаешь ей переменную, которая бы показывала уже фазу монстра отдельно.
идешь в скрипт где обрабатывается фаза(я бы делал в объекте где массив с клетками у тя). собсна, в этом объекте пихаешь чето аля:
if phase = 1 then
{
var _check = 0;
with (monstromater)
{
if loc_phase = 0 then loc_phase = 1;
}
phase = 2;
}
if phase = 2 then
{
var _check = 0;
with (monstromater)
{
if loc_phase = 1 then _check = 1;
}
if _check = 0 then phase = 0;
}
таким образом, этот скрипт разделяет действие мобов на две фазы: в которых они принимают решщение, и, в котором они чето рисуют. При этом игроку не дастся контроль, тк фаза не будет 0 пока не сделает фазу каждый моб.
внутри уже каждого детеныша монстромамки пишешь чето когда локфаз = 1 тогда чето делать
это я все напихал без дс листов.
а всякую хуйню про скорость уже чиль в фазе где они рисуют мол чето делают
ес чето вопросы есть, то могу за скромные 500 рубликов в дискорде пояснить все более понятно
307 664382
>>64327
возможно про дс листы писал я, мб нет
а твой код я в рот ебал читать, тк ты про таб не слышал
как использовать таб?
вот так
if (Uasshole) then
{
gofuckuself = true;
if (IamGAY = true) then
{
PrepareANUS = 1
}
}
или у тя табы съелись пастебинахуем
но если ты не понял, то все что внутри фигурных скобочек табается блять, даже еще одни фигурные скобочки и то что внутри тех захуяренных скобочек тоже
я кста не понимаю зачем ты хуяришь карту не тайлами. сделал бы мир по сетке, дабы не ебать мозг с врагами. просто нахуярил условный ds_grid(что является массивом, ес вдруг ты не шаришь), и хуяришь в нем внутри врагов клеточки - 1 свободна, и можно пиздохать и 0 знач там негры выебут
и изич у тя с врагами будет, более легче все по самому движению, а так чтобы оно выглядело мол они не тупо с клетки на клетку едут ето ж изич сделать
делаешь знач объект, куда пихаешь клеточки карты. можешь нахуярить алгоритм чтобы он по готовой комнате смотрел че у тя за шиза происходит, или нахуярить генерацию, или же говнокудахтор карт(в зависимости от твоих амбиций), куда ппихается собсна массив через ds_grid с клеточками
затем создаешь объект игрока. я не понимаю, как у тя должно быть, но путем моей скромной дедукции, у тебя игрок чето делает(двигается, пиздится, 1 действиее какое то), а затем мобы прогружаются и чето делают(1 тоже действие).
Для того чтобы это нахуярить просто пихаешь объект еще один, куда пишешь фазу хода. изначально пускай буит 0, затем ес игрок чето делает, то перед тем, как объект игрока(его герой так сказать) смотрит, че по фазе, и если фаза для игрока(тобишь 0), то чето делает, а затем ставит в переменную фазы 1. изза этого, игрок, пока карта не походит, нихуя сделать не смогет.
В это время нужно придумать как у тя окружение будет работать. по идее у тя онли мобы, так что делаешь объект-родитель для того чтобы как то обращаться ко всем мобам, а объекты собсна других мобов делаешь детьми этого объекта-родителя(буду называть в будущем монстромать)
берешь собсна свою монстромать, пихаешь ей переменную, которая бы показывала уже фазу монстра отдельно.
идешь в скрипт где обрабатывается фаза(я бы делал в объекте где массив с клетками у тя). собсна, в этом объекте пихаешь чето аля:
if phase = 1 then
{
var _check = 0;
with (monstromater)
{
if loc_phase = 0 then loc_phase = 1;
}
phase = 2;
}
if phase = 2 then
{
var _check = 0;
with (monstromater)
{
if loc_phase = 1 then _check = 1;
}
if _check = 0 then phase = 0;
}
таким образом, этот скрипт разделяет действие мобов на две фазы: в которых они принимают решщение, и, в котором они чето рисуют. При этом игроку не дастся контроль, тк фаза не будет 0 пока не сделает фазу каждый моб.
внутри уже каждого детеныша монстромамки пишешь чето когда локфаз = 1 тогда чето делать
это я все напихал без дс листов.
а всякую хуйню про скорость уже чиль в фазе где они рисуют мол чето делают
ес чето вопросы есть, то могу за скромные 500 рубликов в дискорде пояснить все более понятно
308 664383
>>64382
когда хотел пояснить молодому за таб, но двач сожрал твои табы
309 664394
>>64372

>Вроде with (obj_enemy), но чёто не работает.


Отбой. Я долбоёб. У меня obj_enemy1 объект назывался, блядь.
310 664395
>>64382
Спасибо, бро!

>а твой код я в рот ебал читать, тк ты про таб не слышал


Слышал. Ещё со времён турбопаскаля табом форматирую. Тут что-то бес попутал, бать, прости.

>я кста не понимаю зачем ты хуяришь карту не тайлами.


Тайлами. Я проверяю можно-нельзя ходить как раз по тайловой карте.
tilePotID = tilemap_get_at_pixel(global.map_id, xPot, yPot);

>чето делает, а затем ставит в переменную фазы 1. изза этого, игрок, пока карта не походит, нихуя сделать не смогет.


Именно так и сделал - герой проверяет в степе if global.Turn==1 {то ждём инпута игрока, потом ходим-дрочимвприсядку}. Враг, соответственно, ждёт if global.Turn==0.
Я думаю сделать так: собираем всех врагов в массив. Первому из массива даём команду "ходисука", и ждём пока он не скажет "походилнах". Тогда второму из массива даём команду "ходисука" и так далее до конца массива.
311 664404
>>64372
Задай всем врагам переменную state

Сделай стейт машину. Когда кончается ход - переводишь всех врагов в состояние

Пусть контроллер хода делает что-то такое:
with obj_enemy
{
state = enemy_states.make_decision
}

А потом у врага в step event будет как-то так

switch state
{
case enemy_states.make_decision:
_{
принимаю решение что делать
if принял решение идти на клетку
__{
__ объявляю что клетка занята
__ записываю на какую клетку надо идти
__ state = enemy_states.move_to_cell // перехожу в состояние движения
__ break;
__}
_} break;

case enemy_states.move_to_cell:
_{
_ двигаюсь к нужной клетке
_ if достиг нужной клетки
__{
__ state = enemy_states.turn_fininshed
___break;
__}
_} break;
}

Вот и всё. А потом в контроллере хода проверяешь, что если у всех врагов state == enemy_states.turn_fininshed то считаешь, что все враги завершили свои действия и можно начинать новый ход.
311 664404
>>64372
Задай всем врагам переменную state

Сделай стейт машину. Когда кончается ход - переводишь всех врагов в состояние

Пусть контроллер хода делает что-то такое:
with obj_enemy
{
state = enemy_states.make_decision
}

А потом у врага в step event будет как-то так

switch state
{
case enemy_states.make_decision:
_{
принимаю решение что делать
if принял решение идти на клетку
__{
__ объявляю что клетка занята
__ записываю на какую клетку надо идти
__ state = enemy_states.move_to_cell // перехожу в состояние движения
__ break;
__}
_} break;

case enemy_states.move_to_cell:
_{
_ двигаюсь к нужной клетке
_ if достиг нужной клетки
__{
__ state = enemy_states.turn_fininshed
___break;
__}
_} break;
}

Вот и всё. А потом в контроллере хода проверяешь, что если у всех врагов state == enemy_states.turn_fininshed то считаешь, что все враги завершили свои действия и можно начинать новый ход.
312 664412
>>64404

>__ объявляю что клетка занята


Блядь, гениально. Спасибо.
Сейчас переделаю просчёт коллиженов по второму слою тайлов, и пускай они сразу как решили куда идти ставят там непроходимость. А на своей текущей клетке, соответственно, убирают.
Спасибо, бро, целую/обнимаю!
Что такое switch->case я пока не всосал, да и хуй с ним, попробую без этой конструкции пока
313 664419
switch->case - это нужно, когда хочешь сделать выбор из множества ifов.

Можно всё на ifах сделать, но switch красивее, удобнее и быстрее, но на это пох.
314 664421
>>64419
Спасибо, я так и думал. Обязательно изучу. Но потом.
315 664614
>>64178
Ох, неужели нет универсальных готовых решений аля "pixel perfect camera scale"? Почему допустим для обосраного пиксельарта нужно изобретать велосипед каждому?
316 664619
>>64614
По той же причине, почему нет кнопки "сделать заебись".
317 664625
>>64619
Ну блин, общие же принципы должны быть для одного из стиля графики(пиксельарт), и растягивание под все экраны.
Я перепробовал кучу вариантов, или растягивание правильно, но пиксели идут по пизде, или не растягивает для широких телефонов с 18.5:9 но зато идеальные пиксели. Прием в гугле по запросу game maker pixel perfect scale примерно одинаковые решения, но они нихуя не работают... Я даже готов купить платный ассет, но перепробовал кучу бесплатных я не уверен, что это хорошая затея.
318 664677
>>64619
Алсо, например вот основной гайд, очевидно что решения из гугла работают примерно так же(как и все решения на форуме yoyo)
https://www.yoyogames.com/blog/66/the-basics-of-scaling-the-game-view

Он идеально скейлит картинку под все экраны, что я тестировал, даже супер вытянутые. Но есть проблема. Он не идеально скейлит пиксели, например я пробовал размер камеры в 1280x720 но появлялись такие глитчи >>64153 попробовал плясать уже от 1600x900, глитчи пропали на всех девайсах, но иногда видны субпиксели(или как это хуйня называется, т.е. не perfect pixel), а так же на девайсах с экраном ниже, чем заданный размер 1600x900 скейл частично неправильный, картинка обрезается.

Дальше попробовал камеру из этого https://www.youtube.com/watch?v=znC6cq6ZHsM гайда, на разных разрешениях скейлит хорошо но... скейлит явно 16:9, на широком экране 18.5:9 очевидно черные рамки. Объединить эти 2 метода у меня не получилось.
319 664678
>>64625
Для широких телефонов ты должен не изображение растягивать, а игровое поле.
320 664859
>>64677
Кароче, может быть это максимально тупо, но я решил использовать 2 системы рескейла так сказать, 1 система из туториала текстового для обычных и широких экранов, а если ширина экрана 1280 и меньше, то тогда система скейла из видеотуториала

>https://www.youtube.com/watch?v=znC6cq6ZHsM

321 664867
Где моя бета? Уже неделю жду.
322 665392
Какую красоту чел на гамаке творит: https://www.youtube.com/watch?v=uWtCbqEMebU
Под конец там самодельное триде на канве.
323 665425
>>65392
Хорошая математика - всегда красиво.
324 665436
>>65392
Причём тут гамак?

И какой-то хуесос потёр посты, кажется.
1.jpg7 Кб, 216x233
325 665438
>>65436
При том, что ты заглянул в наш уютный гамакотред. Пожалуйста, не нужно быть здесь таким токсичным.
326 665442
>>65438
Я сам считаю гамак лучшим движком на данный момент. Быстрым, мощным и сука логичным.
Но тереть посты - это пиздец какой-то. Это не мои посты были, если шо.
И да, те 3d крутёлки к гамаку не имеют отношения. Ставить точку в нужном месте экрана и спектрум бейсик умеет.
327 665455
>>65392
Мне нравится. Выглядит намного живее, чем демонстрация очередного проекта с купленными модельками.
328 665479
>>65442

> Я сам считаю гамак лучшим движком на данный момент.


Тоже так думал, пока не попытался на гамаке написать что-то сложнее платформера.
329 665482
>>65442
Да, это умеет любой движок. Суть видео не в движке а в красивой математике.
Но на этой доске такая беда - бегают горелодупые неосиляторы из треда в тред и верещат, что все движки - дерьмо, потому что движки не делают игры за них.

>>65479
Вот бы посмотреть на твои платформеры. И на твои более сложные проекты.
330 665485
>>65482
я не тот чел который изначально верещал хуйню на гамак, однако
у меня проект компилится 3 минуты, что значит что в нем:
а) много картиночег
б) много кода
тк я не долбоеб и делаю игру, а не фан проект, то у меня ЕСТЬ картиночки, однако и кода тоже дохуялиардномегаквадраллионное ебливое число
И вот тут тема такая, что как раз таки, изза отсутствия ООП составляющей в гамаке(хотя бы классов-методов etc я знаю что существует механика создания своих скриптов, и работы с ними как с недометодами, но ооп это далеко не только методы-классы) движок гамака достаточно требователен и щепетилен. Я не говорю, о том что нужны овер-крутые знания, я говорю о том, что есть к примеру задача: сделать редактор карт, и собсна, карты для него(сохраняемые-загружаемые). Тут встает ряд вопросов, один из главных это как сохранять это говно. Если мы не делаем говно из палок и костылей, то, очевидно, будем юзать буфферы. И вот тут настал для меня в некоторые времена ад, тк в документации гамака нету множества оговорок(к примеру, минимальный размер буфера, чтоб его можно было сжимать и при развертке он не пошел по пизде, были еще подъебки но не помню). Я проебал достаточно времени, в поисках инфы во всяких форумах гамака. Не было. Я не отрицаю, что возможно такая инфа где то есть, но это яркий пример где разрабы недосмотрели и в банальной справке не упомянули важную тему.
Итого претензии:
- язык примитивен, и имеет костыли(прив. пример: скрипты вместо методов)
- в справке(да и изза этого в инете вообще) нету дохуя моментов, которые приходится проверять путем экспериментов(когда инфа должна по логике лежать в справке)
- как бы так не звучало, но гамак реально бывает, что идет по пизде САМ. Я на мелких проектах этого не замечал, но на крупных оч часто. Самый изично добытый способ поймать - берешь кучу спрайтов, и рисуешь через сурфейсы чанками мир платформера(как в террарии). при этом в редакторе спрайтов пихаешь в какой нить спрайт слой, где 1 кадр будет с прозрачным кубиком любого цвета, а на остальных нихуя. В итоге у тебя или этот спрайт будет с прозрачностью, или же половина(у меня такое было, и я дохуя ебнулся когда думал где альфа проебана, в итоге удалил слой и все)
- расширения. Я слышал что гдето есть годные что то там, но мне хотелось бы, чтобы была доступность пилить моды как в майнкрафт, но в гамак. Я не видел нормального чего то подобного, чтоб прям норм функции добавлялись. Только лишь говноскрипты, за которые кто то ким то хуем покупает. Вот если бы было чудо, которое прочитав txt-шку, вгоняет ее в новый скрипт, то я бы сосал до конца жизни этому человеку. Однако, придется ковыряться самому если вдруг хочешь подобное создать... Ковыряться и изьебываться как портовая шлюха
- также есть претензия на счет лицензирования программы. Вот к примеру я молодой инди разраб. Я не имею денег на лицуху, вынужден сидеть на триалке. При этом, толи разрабы нарочно оставили это так, толи они конченные пиздец, но ты спокойно можешь просто зарегать новый акк и продлить триалку.
Таким образом, есть возможность бесконечного использования с некоторым гемороем, однако, в продвижении очень важно выкладывать свой продукт для жертвования(демки всякие, конкурсы, можно дохуя чего придумать), но с изи доступной триалки они нахуй заблочили компиляцию экзешника. В связи с этим придется изьебнуться и найти пиратку работающую(видел гдето были ссылки, но сам чето пробовал и не пашет норм), или изъебнуться и покорить кикстартер лишь с трейлером, что изза наплыва слитого говна недостижимый подвиг, а можно попросить добрых работяг одолжить лицухуесли вдруг у кого то хватит жалости к инди разрабу, то буду оч благодарен до конца дней своих, а если удастся с игрой еще и денюжку заплачу телеграмчег @XiDoS
если принять во внимание эти сильные минусы, то даже в кривых ручках движок все таки достаточно мощный у гмса, и, соответственно, в мощных ручках даж 3д покориться. Но оч костыльное, поэтому если и рассматривать гмс как потенциальный движок, то ток начальный, или же если пилишь всякое зашкварное непотребство аля платформеры
А так лучше юнити. Оч хочу сам на юнити некст проект пилить. Пиздец хочу. А если ща пытаться перейти, то еще пол года времени в пизду улетит (((( сам про юнити минусов не знаю, но там c#, который кажется мне сладенькой девонькой с привлекательными формами
330 665485
>>65482
я не тот чел который изначально верещал хуйню на гамак, однако
у меня проект компилится 3 минуты, что значит что в нем:
а) много картиночег
б) много кода
тк я не долбоеб и делаю игру, а не фан проект, то у меня ЕСТЬ картиночки, однако и кода тоже дохуялиардномегаквадраллионное ебливое число
И вот тут тема такая, что как раз таки, изза отсутствия ООП составляющей в гамаке(хотя бы классов-методов etc я знаю что существует механика создания своих скриптов, и работы с ними как с недометодами, но ооп это далеко не только методы-классы) движок гамака достаточно требователен и щепетилен. Я не говорю, о том что нужны овер-крутые знания, я говорю о том, что есть к примеру задача: сделать редактор карт, и собсна, карты для него(сохраняемые-загружаемые). Тут встает ряд вопросов, один из главных это как сохранять это говно. Если мы не делаем говно из палок и костылей, то, очевидно, будем юзать буфферы. И вот тут настал для меня в некоторые времена ад, тк в документации гамака нету множества оговорок(к примеру, минимальный размер буфера, чтоб его можно было сжимать и при развертке он не пошел по пизде, были еще подъебки но не помню). Я проебал достаточно времени, в поисках инфы во всяких форумах гамака. Не было. Я не отрицаю, что возможно такая инфа где то есть, но это яркий пример где разрабы недосмотрели и в банальной справке не упомянули важную тему.
Итого претензии:
- язык примитивен, и имеет костыли(прив. пример: скрипты вместо методов)
- в справке(да и изза этого в инете вообще) нету дохуя моментов, которые приходится проверять путем экспериментов(когда инфа должна по логике лежать в справке)
- как бы так не звучало, но гамак реально бывает, что идет по пизде САМ. Я на мелких проектах этого не замечал, но на крупных оч часто. Самый изично добытый способ поймать - берешь кучу спрайтов, и рисуешь через сурфейсы чанками мир платформера(как в террарии). при этом в редакторе спрайтов пихаешь в какой нить спрайт слой, где 1 кадр будет с прозрачным кубиком любого цвета, а на остальных нихуя. В итоге у тебя или этот спрайт будет с прозрачностью, или же половина(у меня такое было, и я дохуя ебнулся когда думал где альфа проебана, в итоге удалил слой и все)
- расширения. Я слышал что гдето есть годные что то там, но мне хотелось бы, чтобы была доступность пилить моды как в майнкрафт, но в гамак. Я не видел нормального чего то подобного, чтоб прям норм функции добавлялись. Только лишь говноскрипты, за которые кто то ким то хуем покупает. Вот если бы было чудо, которое прочитав txt-шку, вгоняет ее в новый скрипт, то я бы сосал до конца жизни этому человеку. Однако, придется ковыряться самому если вдруг хочешь подобное создать... Ковыряться и изьебываться как портовая шлюха
- также есть претензия на счет лицензирования программы. Вот к примеру я молодой инди разраб. Я не имею денег на лицуху, вынужден сидеть на триалке. При этом, толи разрабы нарочно оставили это так, толи они конченные пиздец, но ты спокойно можешь просто зарегать новый акк и продлить триалку.
Таким образом, есть возможность бесконечного использования с некоторым гемороем, однако, в продвижении очень важно выкладывать свой продукт для жертвования(демки всякие, конкурсы, можно дохуя чего придумать), но с изи доступной триалки они нахуй заблочили компиляцию экзешника. В связи с этим придется изьебнуться и найти пиратку работающую(видел гдето были ссылки, но сам чето пробовал и не пашет норм), или изъебнуться и покорить кикстартер лишь с трейлером, что изза наплыва слитого говна недостижимый подвиг, а можно попросить добрых работяг одолжить лицухуесли вдруг у кого то хватит жалости к инди разрабу, то буду оч благодарен до конца дней своих, а если удастся с игрой еще и денюжку заплачу телеграмчег @XiDoS
если принять во внимание эти сильные минусы, то даже в кривых ручках движок все таки достаточно мощный у гмса, и, соответственно, в мощных ручках даж 3д покориться. Но оч костыльное, поэтому если и рассматривать гмс как потенциальный движок, то ток начальный, или же если пилишь всякое зашкварное непотребство аля платформеры
А так лучше юнити. Оч хочу сам на юнити некст проект пилить. Пиздец хочу. А если ща пытаться перейти, то еще пол года времени в пизду улетит (((( сам про юнити минусов не знаю, но там c#, который кажется мне сладенькой девонькой с привлекательными формами
331 665489
>>65485

>я знаю что существует механика создания своих скриптов, и работы с ними как с недометодами


Это, как бы, основа...

>проебал достаточно времени, в поисках инфы во всяких форумах гамака.


На все мои заковыристые вопросы на форуме гамака я получал ответы максимум через два дняЕсли на них не отвечало коммьюнити, приходил сотрудник yoyo и пояснял по хардкору.

>скрипты вместо методов


Методы будут в следующем патче, кстати.

Читал-читал, что тобой написано, вникал, а потом:

>я молодой инди разраб. Я не имею денег на лицуху


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


Блин, у тебя серьёзные проекты или нет денег на лицуху? Покажи проект-то.

>или же если пилишь всякое зашкварное непотребство аля платформеры


Ну это просто ноу коммент.
332 665491
>>65489

> Это, как бы, основа...


Это не основа, это следствие слабого GML.
мимо
00HHUOubx3E.jpg9 Кб, 325x444
333 665498
>>17577 (OP)
Поясните по хардкору новичку, для чего нужен cleanUP, в каком случае и как его лучше использовать? Допустим если я тупо сменил комнату, мне ведь не нужно чистить говно из прошлой комнаты, верно?
334 665517
>>65498
Ну смотри. Допустим ты в объекте создаёшь очередной ds_grid.
Если объект, создавший его исчезнет - то ds_grid, созданный объектом, тоже больше не нужен. Но сам по себе ds_grid не исчезнет - его нужно уничтожать.

Когда это делать? В destroy_event? Но destroy_event может не произойти. Destroy_event происходит только тогда, когда ты командуешь instance_destroy. Вот тут то и нужен clean_up. Clean_up произойдёт в любом случае - и если ты сменил комнату, и если ты сделал instance_destroy

Вот в clean_up и напишешь ds_grid_destroy, surface_free и т.д.
335 665552
>>65489

>Блин, у тебя серьёзные проекты или нет денег на лицуху? Покажи проект-то.


планирую через месяца 3-4 в ерли акцец идти но перед этим за месяц попрошайничать как вне себя, название будет fmi(сокращение)
ртс-очка
ядро игры готово(код), однако с графикой возникли траблы. Сижу пилю графику.
Пробовал найти толковых ребят, которым бы мог довериться в вопросе графики, однако без бабок ток куколды какие то лезут. Или не куколды, но которые слетают через неделю, тк нашли место с бабками или еще четовсе равно уебаны крч с другой стороны, наверно глупо верить в то, что нормальные люди готовы тратить свое время на сомнительный проект. В итоге решил пробовать сам - в начале пиксельартом, и было бы в разы проще, но говняво(я рисую хуево+есть пласт аудитории, которой не зайдут пиксели), потом пробовал в растр, что было лучше, но все равно больше похоже на поделки пятиклассника, и, в итоге решил делать по заветам олдовых ртс - пререндер(берешь рисуешь концепт-референс, пихаешь в моделкопрогу и там хуяришь модельку, после чего делаешь анимации и это все рендеришь в 2д спрайты). этот вариант не подойдет людям, которым лишь бы слить игру на бабки, тк оно того не стоит. да и сам думаю если изза графики игра по пизде пойдет то просто пойду на заводно надеюсь, что игровые механики вытянут это :D хочу умереть
Пизда крч
Задумка игры: 2д ртс с видом сбоку. Фишка и затея подобного решения в том, чтобы был режим контроля отдельного юнита через WASD, и соответствующие приколы аля окружение(аля укрытия всякие, и куча всего, ес буду все палить то стремно буит). Совет дня: если вы работаете один, или в команде менее 40 геймдизайнеров, то можете даже не пробовать нарулить баланс в ртску. даже ебаные близы до сих пор чето мутят со старкрафтом, а ты тут решил чето пробовать. шанс успеха = 0.5 процентов
Я сам то делал код игры где то половину года(местами учился, думал как делать, изза чего три раза с нуля переписывал все), затем подумал о том, в каком русле это все развивать, что затянуло еще на месяца три. после ебланил месяц. потом(в январе) начал думать за геймдезихан(юнитов-расы), и что то нарулил месяца два назад.
параллельно учился лепить графику или искал ребят чтоб те лепили мне ее
опять таки, если есть ребята, готовые поддержать как угодно, то прошу в телеграм @XiDoS
335 665552
>>65489

>Блин, у тебя серьёзные проекты или нет денег на лицуху? Покажи проект-то.


планирую через месяца 3-4 в ерли акцец идти но перед этим за месяц попрошайничать как вне себя, название будет fmi(сокращение)
ртс-очка
ядро игры готово(код), однако с графикой возникли траблы. Сижу пилю графику.
Пробовал найти толковых ребят, которым бы мог довериться в вопросе графики, однако без бабок ток куколды какие то лезут. Или не куколды, но которые слетают через неделю, тк нашли место с бабками или еще четовсе равно уебаны крч с другой стороны, наверно глупо верить в то, что нормальные люди готовы тратить свое время на сомнительный проект. В итоге решил пробовать сам - в начале пиксельартом, и было бы в разы проще, но говняво(я рисую хуево+есть пласт аудитории, которой не зайдут пиксели), потом пробовал в растр, что было лучше, но все равно больше похоже на поделки пятиклассника, и, в итоге решил делать по заветам олдовых ртс - пререндер(берешь рисуешь концепт-референс, пихаешь в моделкопрогу и там хуяришь модельку, после чего делаешь анимации и это все рендеришь в 2д спрайты). этот вариант не подойдет людям, которым лишь бы слить игру на бабки, тк оно того не стоит. да и сам думаю если изза графики игра по пизде пойдет то просто пойду на заводно надеюсь, что игровые механики вытянут это :D хочу умереть
Пизда крч
Задумка игры: 2д ртс с видом сбоку. Фишка и затея подобного решения в том, чтобы был режим контроля отдельного юнита через WASD, и соответствующие приколы аля окружение(аля укрытия всякие, и куча всего, ес буду все палить то стремно буит). Совет дня: если вы работаете один, или в команде менее 40 геймдизайнеров, то можете даже не пробовать нарулить баланс в ртску. даже ебаные близы до сих пор чето мутят со старкрафтом, а ты тут решил чето пробовать. шанс успеха = 0.5 процентов
Я сам то делал код игры где то половину года(местами учился, думал как делать, изза чего три раза с нуля переписывал все), затем подумал о том, в каком русле это все развивать, что затянуло еще на месяца три. после ебланил месяц. потом(в январе) начал думать за геймдезихан(юнитов-расы), и что то нарулил месяца два назад.
параллельно учился лепить графику или искал ребят чтоб те лепили мне ее
опять таки, если есть ребята, готовые поддержать как угодно, то прошу в телеграм @XiDoS
336 665554
>>65552
Ох, чувак. Ты только не обижайся... но после этого:

>тк я не долбоеб и делаю игру, а не фан проект,


>у меня ЕСТЬ картиночки,


>кода тоже дохуялиардномегаквадраллионное ебливое число


>мы не делаем говно из палок и костылей


>поэтому если и рассматривать гмс как потенциальный движок, то ток начальный


>планирую через месяца 3-4 в ерли акцец идти


>ядро игры готово(код)



Ты показываешь вот это?
Если это крупный серьёзный проект, то какой же мелкий? Астероиды?

> ес буду все палить то стремно буит


Ты хотел сказать стыдно? Не переживай, тут все с такого начинали.
337 665555
>>65554
саси(9(9
338 665735
>>17577 (OP)
Мудак ли я?
Да мудак.
Документация на русском есть? Движок популярный? Много мануала в русском комьюнити? А текстовую игру можно на нем, того?
339 665737
>>65735

> Документация на русском есть?


Нет

> Движок популярный?


Среди новичков

> Много мануала в русском комьюнити?


Все относительно. Относительно юнити - мало.

> А текстовую игру можно на нем, того?


Можно
текстовую игру сделать не проще обычной
340 665742
>>65737
Спасибо. Я сейчас только-только вспоминаю теги для стилей (попутно зойчем-то чекаю js) и отсекаю некоторые движки. А вообще недоволен, вам нужен Карл Линней в мире программирования.
Вот расскажи, есть twine (среда для разработки текстовых), написана она на js, использует html, принимает стили css, а еще внутри самой себя имеет эм, я хз что это.. внутренний язык? на выбор Harlowe, Snowman, SugarCube.
Я могу с помощью битья головой об клаву в текстовой игре изменить стиль, шрифты, абзацы и прочее (собственно, это css и html). Но! Мне нужно в игру засунуть инвентарь.
С чего мне продолжить поиски и курения мануала?
Кроме самого twine, в конце концов, он может и не подойти.
короче, понятно, что я запутался в определениях, и вряд ли даже смогу на 100% вникнуть в ответ, если таковой будет
341 665743
>>65742
хочешь инвентарь - учи нормальный движок, а не конструктор текстовых кестов
342 665744
>>65743
Да, но для начала неплохо определиться вообще, в какую сторону дышать. Я вот лично удивился, что Юнити3Д (три сука дэ) может в текстовые игры. И кто-то на нем их делает.
И движков опять же очень много.
Потому как начав искать, нашел именно его, а еще ink. Который движок, который может быть интегрирован в юнити.
не, на самом деле в него можно запихнуть инвентарь
343 665746
>>65744
Движок тебе дает инстументы. С помощью которых ты делаешь игру. Собсно любой движок (в теории) позволит тебе сделать текстовую игру.
Другое дело, что в некоторых движках инструменты позволяют легче вкатиться и делать например платформеры (гейммейкер), жрпг (рпгмейкер), вулфенштейн 3д (рейкастинг гейм мейкер).
Во взрослые движки вроде юнити и уеча вкатиться сложнее, но их инструменты позволяют тебе делать что угодно там, где инструменты более слабых движков (типа гейммейкера) перестают успешно справляться со своими задачами.
344 665747
>>65746
Ну я так и подозревал, что конструкторы не самый лучший вариант (но самый простой, да)
Хорошо, вот есть движок. Он написан на определенной языке( пускай питон)
Так вот, с чего начать: с изучения питона, и его команд/синтаксиса или с документации самого движка? Будут ли они вообще пересекаться?
А если так, то что выбрать? Понятно, что на этой доске это вопрос риторический. Просто я хочу хоть с чего начать (а не с хтмл и ксс, лол)
345 665751
>>65747
Открываешь ютуб и смотришь самые базовые уроки по выбранному движку. Они обычно построены так, что их понимают даже те, кто не знает сопутствующего языка.
346 665752
>>65751
Ага, но сопутствующий язык все же пригодится. Проще тогда с него начать, не?
347 665753
>>65752
Параллельно делай. Просто учить язык без прикладных занятий быстро наскучит.
348 665756
>>65753
Хорошо, вот взял я GameMaker, ок. Это движок. Написан на собственной языке. Но зачем? Мало языков что ли? Не понимаю.
Выходит чтобы разобраться в нем, нужно знать его язык. А что делают, например те, кто учил с++?
Это исключение из правил? Юнити, если правильно понимаю интегрирован со многими языками тот же ink, который для тектовых
349 665758
>>65756
Зы: к слову,

>язык, который поддерживает больше чем одну парадигму программирования». Такое определение оказывается недостаточно точным в силу того, что само понятие парадигмы программирования различные авторы определяют по-разному.


Говорю же: Карл Линней вам нужен
350 665759
>>65756

> Написан на собственной языке.


Он написан на C#

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


Его скриптовый язык и язык на котором он написан - это разные вещи. Тем не менее, у его скриптового языка своя история и он писался таким образом, чтобы быть максимум дружелюбным к новичку. От этого все его плюсы и минусы.

> А что делают, например те, кто учил с++?


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

> Юнити, если правильно понимаю интегрирован со многими языками


В юнити C#
351 665760
>>65759
Ну прост сейчас чекаю по юнити, там аж семь языков описывают, в том числе js, через которые будет удобно работать в нем, да С# выделяют как основу.
Соррям, что так много внимания уделяю юнити, но на нем сейчас большой хайп что ли
352 665764
>>65760

> в том числе js


еЕо там давно нет

Юнити - отличный выбор, если ты настроен серьезно.
353 665768
>>65764
Я пока настроен на уровень щито?
ну соррям, прост статья такая была, верю, ибо сейчас по верхушкам прохожу
Ок, пока еще покурю мануалы, документации, познакомлюсь с базой. Потом уже буду настраиваться. Понимаю, что пока нет кнопки "сделать заебись"
Спасибо, анон.
354 665781
>>65760

>Ну прост сейчас чекаю по юнити, там аж семь языков описывают,


Ссыль на статью давай.
356 665806
>>65783

>Многие новички ошибочно полагают, что для работы с Unity необходимым и достаточным является C#


Дальше можно не читать.
357 665808
>>65806
Ну охуеть. Я новичок. Захожу на достаточно актуальную статью (2019 год) и такой: не, дальше можно не читать.
Так что ли?
358 665809
>>65808
Да, там написана лажа, сишарпы достаточно для всего, это топчик и благодать. Остальное это не официальное, это левые костыли васянов, которые отвалятся на полпути разработки, и будешь ты плакать горькими школьными слезами.
359 665810
>>65809
Вот для того чтобы не плакать и ищу инфу.
Хотя и уверен, что твое мнение предвзято.
360 665949
>>65743
Есть instead непарсерных текстовых квестов движок с инвентарём. Только нахуй его обсуждать в гамакотреде?
>>65746

>рейкастинг гейм мейкер


А чо, есть такой? Дувонт.
>>65810
Его мнение не предвзято. Оно экспертно. Юнити - это до диез. Остальное васякостыли, всё он правильно написал.

Собственно, по стилю твоих постов ясно, что тебе нужен либо gamemaker, либо construct, либо scratch. По мере уменьшения твоих начальных знаний.
Гамак самый крутой и продвинутый движок из простых.
В Юнити не лезь - оно тебя сожрёт. Сишарп со своим ёбаным ООП и дотсинтаксисом - залупа, противопоказанная новичку.
изображение.png115 Кб, 1154x826
361 665976
Сижу табом форматирую все эти вложенные циклы, чтобы хоть приблизительно отдуплять, что я намакаронил.
А есть какая-нибудь программа, которая делала бы это за меня?
362 665978
>>65976
нет
363 665979
А можно как-нибудь остановить скролл окна output?
364 665983
>>65976
Делаешь как таблицы в констракте.
365 665985
>>65983
Нехуя нипонел, бать.
366 665990
>>65976
Используй
#region принимаем решение
#endregion
367 665999
>>65990
О! Круто! Спасибо.
368 666004
>>65976
У тебя отступы в 16 пробелов? Вообще-то нормально 2 или 4.
369 666030
>>66004
Ну, я выравниваю по фигурной скобочке, пробелы не считаю.
370 666083
>>65976
пизданулся что ли
371 666085
>>66083
Погоди, вот будет у него с десяток вложенных друг в друга if, for, repeat, сам поймёт что был не прав.
372 666090
>>66083>>66085
Чем ёрничать - показали бы как правильно.
Если бы десяток ифов был, я бы как-нить по другому форматировал. Я не совсем ёбнутый, чтобы горизонтально скроллить.
изображение.png22 Кб, 493x466
373 666155
ЗДЕЛОЛ!!!
Спасибо, няши, теперь всё работает как надо - посоны решают, куда пойти, аккуратно отмечают свои цели, когда все решили - ходят, не мешая друг другу.
Сделал как советовали: разделил ход врагов на два этапа - "думалку" и "делалку". Переколбасил нахуй всю логику работы.
Клёво, пилю дальше.
374 666249
>>49155
А почему в стиме десктоп версия - в два раза дешевле? Чёт подозрительно. Где наёбка, братики?
375 666256
>>66249
региональаня цена
376 666301
>>65949
Побродив по доскам в gd, хочу сказать, что у вас самый высокий уровень общения и высокая лояльность к новичкам, спасибо.
ну рили, на одной доске уровень "да нахуя тебе так, я вот делаю вообще не так, и ты не выебывайся. тема закрыта"
377 666804
>>17577 (OP)
Анон, выручай.
Под мобилки стал учится делать кнопочки и т.д., и заметил что мультитач совсем не работает. Как я понял нажатие распознает тупо как мышку?

Насколько правильно будет в такой ситуации использовать код аля:
for(var i = 0; i < 5; i++)
{
if position_meeting(device_mouse_x(i), device_mouse_y(i), self) && device_mouse_check_button(i, mb_left)
{
делаем что нужно
break;
}
}

Вообще, в жестах есть событие Touch, но он работает просто как нажатие мышкой, а не зажатие, например.
378 666892
Всё, пизда. Начал делать генератор монстров, стрельбу, и всё пошло по пизде. Весь мой макаронный код посыпался нахуй.
Сел переделывать, и вообще всё похерил.
Завтра со свежей головой попробую заново.
Сука пошаговую игру пиздец как сложно сделать в современных ООП движках.

>>66301
Это было одной из причин, почему я гамак выбрал - тут есть ламповый(е?) аноны, которые поясняют по-хардкору.
Ну и вообще движок весьма приятный и удобный в отличии от.

>>66155-кун
379 666906
>>66892
Потому что ты не сделал state machine
380 666914
>>66906
Кстати, как его правильно делать? Не, я понимаю, что внутри это скрипт на свитчи и ифы, но мне бы архитектуру настроить
381 666919
>>66914
Переключаешь состояния объектов из одного в другое.

У тебя же пошаговая игра? Ну сделай типа цикл.

состояние 1: жду событий. Если по мне пришёл урон - переключаюсь во состояние 2. Если игрок нажал "конец хода" - переключаюсь во стостояние 10.

Состояние 2: проигрываю анимацаю получения урона. Если умер - переключаюсь в состояние 3, если нет - в состояние 1.

Состояние 3: умираю, самоуничтожаюсь.

Состояние 10: принимаю решение что делать, затем переключаюсь в состояние 11.
Состояние 11: делаю штуки, переключаюсь в состояние 12.
Состояние 12: тупо жду.

Обработчик ходов:
Состояние 1: Жду. пока игрок не нажмёт кнопку "конец хода". Если нажал - состояние 2.
Состояние 2: Жду пока все враги не окажутся в состоянии 1. (чтобы не прерывать получение урона и смерти) - если оказались, объявляю конец хода. перехожу в состояние 3.
Состояние 3: Жду пока у всех врагов не окажется состояние 12. Объявляю начало следующего хода. Перевожу всех врагов в состояние 1. Перехожу в состояние 1.
382 666933
>>66906
Оно всё поломалось как раз тогда, когда я почувствовал себя мужыком, и начал её делать.
Я, собственно, сделал повороты героя и анимацию сначала через стейт машину. Решил и логику монстров также.

>Состояние 2: Жду пока все враги не окажутся в состоянии 1.


Вот в этом проблема.
У меня это сделано счётчиком, но либо не в том порядке срабатывают объекты game и enemy, либо кто-то мухлюет с ним.
aninidhogg.gif3 Мб, 294x233
383 666937
Анон,я так и не победил позицию оружия.
Привязываю через оружие к oPlayer.x и при нажатие кнопки оружие конечно же там не остается.
как описали >>55174 не получается. В описании enum пишут что это только перечисления без возможности вызова их свойств.
И вообще не особо нашел про смену чего либо по нажатию кнопки.
384 666946
>>66937
Ну выложи проект на дропбокс какой-нибудь.
385 667031
Бля. Я тут перечитывал тред и увидал команду with. Прочитал про неё, и походу так можно сделать опрос ребят на предмет завершения хода.
Ну-ка попробую...
386 667363
Может кто знает, где можно достать kenney game assets 2?
Первый покупал в стиме, и для учебы это ахуенный ассет. Но на вторую денег пока нет, может знаете ссылочку на фри?
изображение.png46 Кб, 789x801
387 667797
Уф. Только сейчас починил всё "как было". Но уже со стейтами. Надеюсь, эта система лучше прошлой.
Спасибо этому треду и братишкам тут.
388 667833
>>17577 (OP)
Я заметил, что instance_deactivate_object/nstance_activate_object не сбрасывает значение переменных этих самых объектов, как можно выкрутиться? Допустим мне надо, что бы в момент активации объекта его значения переменных стали по умолчанию.
389 667864
>>67833
а че в гм нет эвентов а-ля OnEnable, OnDisable? гамак полтора года не запускал, забыл уже
390 667881
>>17577 (OP)
Вопрос рэальным специалистам.
Есть ли разница в производительности, как я буду рисовать свою комнату?
Например будут ли спрайты комнаты у меня отдельными файлами(спрайтами)или же я буду рисовать из Tile Sets?
Можно ли сделать проверку колизии с тайлами, а не объектами?
Грубо говоря я сейчас рисую каждую стенку и т.д. отдельным объектом, которому я назначил спрайт и колиззи.

Или же будет правильно рисовать весь уровень тайлами, а потом в нужных местах ставить объекты-колизии? Или блять правильно будет проверять колиззию с тайлами(если можно)???
1x.png36 Кб, 1024x256
391 667924
Есть сайты, который разбивают эту хуйню автоматом на каждый фрейм? В гм попробовал разбить и из-за того, что 9 и 10 фрейм криво стоят в ассете, он криво их разбивает. (ну и нижний ряд тоже) А самому все в фотошопе пиздец как лень.
1.jpg15 Кб, 480x360
392 667926
>>67881

>Например будут ли спрайты комнаты у меня отдельными файлами(спрайтами)или же я буду рисовать из Tile Sets?



Производительность будет выше, если ты будешь меньше свапать текстуры. Если у тебя сотни texture pages - то лучше бы тебе рассортировать спрайты по страницам текстур.

Но у тебя вряд ли и одно полной страницы в проекте не наберётся. ПОЭТОМУ НЕ ЕБИ СЕБЕ МОЗГИ. И нам не еби. Оптимизировать он собрался.

>Можно ли сделать проверку колизии с тайлами, а не объектами?


Не можно а нужно. С объектами коллайдят только новички. Однако если у тебя в комнате 10-20 объектов коллизий, то тебе строго пох. Если тысяча - пора делать тайловую систему коллизий.
393 667951
>>67924
без описания атласа автоматически никак
394 667974
>>67926
Ну я просто хочу приучить себя делать правильно сразу, даже если у меня в комнате изначально 2 спрайта лол.
395 667979
>>67974
Тайлы всегда на одной текстуре.
При отрисовке тайлов на экране не проверяются их координаты. Не выполняется отдельный draw_event для каждого объекта.
Заменить тайлы на объекты со спрайтми - очень плохая идея.

Но не добавлять спрайты там, где стоило бы их добавить потому что "фпс упадёт" - такая же плохая идея.
396 668103
>>17577 (OP)
Для чего нужны Extensions? Допустим я взял ассет, импортировал себе в проект(ну там шейдеры, объекты), вместе с этим добавляется и расширение, но если я его удаляю, то ничего не меняется, ассет работает, объекты связанные с ним не исчезают.
397 668108
>>68103
Для того, чтобы ассет в проект добавлялся.
398 668167
>>17577 (OP)
Блять, я не понимаю, хоть убейте.
Допустим у меня персонаж может двигаться свободно в любом направлении осей XY(8 direction), но мне нужно, что бы при колизии со стенкой он не просто вставал, а продолжал скользить по другой оси. Пересмотрел 9000 страниц гугла, ютуба, почти везде тупо такой же код:
https://pastebin.com/Bm1KzFgd

rateh скорость по X
ratey скорость по Y

У меня персонаж тупо застревает в стенках ебучих, если оставить например проверку только по оси X, то все хорошо, персонаж не двигается в стенку по X и скользит по Y в направлении джойстика игрока. А если добавить проверку по второй оси, персонаж тупо застревает. Маска игрока прямоугольник по всему размеру спрайта, стенки колиззи тупо квадрат.

Как быть?
399 668191
>>68167
Выкладывай полностью код перемещения персонажа.
400 668196
>>68191
На днях постараюсь вырезать все в отдельный пустой проект и скинуть, но если грубо говоря, что персонаж двигается за счет lengthdir_x/y
(управление с помощью экранного джойстика).
У игрока тупо добавляются координаты x += round(направление оси джойстика *скорость по горизонтали);
Алсо, можно использовать
if(place_meeting(x, y, obj_collision_wall))
{
x = xprevious
}
Но это дает точно такие же результаты как и код выше, если проверять по 2м осям то персонаж застревает, а если например только по X, то персонаж скользит как и должен.
401 668198
>>68196
Алсо, забавно, но если написать код аля
if(place_meeting(x, y, obj_collision_wall))
{
x = xprevious;

}
if(place_meeting(x, y, obj_collision_wall))
{
y = yprevious;
}
(именно через 2 проверки), то персонаж скользит когда уперся в стенку по X(как и должно быть), но если уперся по оси Y он не скользит, но зато и не застревает лол.
402 668227
Может кто нибудь скинуть пример колизии, когда игрок прыгает на врага - враг умирает, а если враг просто столкнется с игроком, то умирает игрок. Ну типа как в марио.
image.png14 Кб, 413x145
403 668229
>>68227
Кажись я сделал, но все равно плохо понимаю код. Если поможете с объяснением буду благодарен
404 668232
>>68198
Вообщем блять я сделал видимо гениально тупорылую вещь, но это работает.
if(place_meeting(x - round(Скоростьось джойстика), y, obj_collision_wall))
{
x += round(Скорость
ось джойстика)
}
ну и по остальным осям аналогично, в итоге работает, персонаж скользит, в стенках не застревает, работает по всем осям.

насколько такое решение колизии хуйня?
405 668233
>>68232
Коллизия с объектами и использование place_meeting для перемещений - полнейшая хуета.

Но т.к. ты совершенный нуб, то тебе сойдёт.
406 668234
>>68233
Можешь описать кратко, почему именно хуета?
Что в таком случае лучше использовать?

Все туториалы что я смотрел основаны на place_meeting, там тупо выключалась скорость игроку и все.
407 668235
>>68232

Я бы тебе для начала вот этот туториал посоветовал.

https://forum.yoyogames.com/index.php?threads/on-slopes-and-grids-subpixel-perfect-topdown-movement-and-collision-line-without-objects.4073/

Но в нём картинки все убиты, без картинок понять будет сложно.
408 668241
>>68234
Подавляющее большинство туториалов (особенно ютубных) рассчитаны на самых-самых новичков.

Почему не надо использовать объекты для коллизий? Потому что объекты в гейм мейкере обновляют целую кучу встроенных в себя параметров. Всякие bbox, image_index, xprevious и т.д. Если у тебя большая комната с несколькими тысячами объектами коллизий - это очень заметно.

Во-вторых place_meeting - довольно тяжелая функция, особенно если ты используешь precise mask. Если ты проверяешь столкновение с несколькими тысячами объектов (при использовании функция проверяет координтаы и маски коллизий всех объектов твоих коллизий) то тебе просто пиздец.

Гораздо дешевле проверять за раз несколько точек столкновений с гридом.

В-третьих - у тебя не пиксель перфектное движение. Ты лишь приблизительно подходишь к своим коллизиям, на расстояние скорости движения. Это опять же - полный пиздец.

Воспользуйся гайдом, который я тебе линканул. Скачай ассет, прикрути к своему проекты и попробуй понять. Без картинок будет не просто. Но тебе будет очень полезно.
409 668248
>>68241
Окей, вообщем для обычных стенок и т.д. сетка, в таком случае для объектов аля враги можно использовать и обычный place_meeting?
410 668258
>>68248
Да. Для врагов - place_meeting
411 668291
>>68227
Я бы делал так - запоминал предыдущее положение врага и героя. Если к столкновению привело бОльшее перемещение героя - врагу урон. Большее перемещение врага - герою урон.
412 668293
Третьего дня, по гайдам и не только, пробовал запилить новую мега штуку в свою игру - мультиплеер. Сразу же, задыхаясь от пота проторчал весь день, разбираясь как оно работает, тыкая своими цепкими лапами куда угодно. Настоящей глыбой был async_event. Даже моя, привыкшая к суровым говнокостылям жопа отказывалась тухнуть с первого раза. Ощущения - АТАС. С буфферами не идет ни в какое сравнение. Кроме того, к концу дня начало работать лишь когда все экзешники запускаются у меня. Друзья нахуй шлют с просьбой потестить. Решительно готов ко всякой б/ездуховности.
Многие дети не поймут нахуй я переделываю слова гоблина, а я же отвечу - если ты шаришь за мультиплеер в гмсе, или же просто готов помочь, залетев в войс и потестив проект по хамачи(или же если белый айпи, то без него), то буду категорически благодарен. Гмс 2, если что
телеграм @XiDoS
413 668294
>>68293

>гоблина


Причём тут пучков? Так то помог бы...
414 668301
>>68293
Работает хоть в итоге? Чтож за друзья у тебя такие.
415 668322
>>68294
Это паста, стилизованная под GM
416 668344
>>68301
если я в соло на своем пк запускаю много екзешников и пытаюсь сам к себе прикатить, то да
с одним челом тестил через радмин, и чет все висло к хуям
в итоге не ебу, то ли гамак не тащит подобное, то ли я через жопу писал. а мб там у чела какие то особенности в пк(типо антивир или еще чето)
417 668359
>>68344
крч отбой
я просто криво ввод айпи адресса сделал(хуй знает как)
все работает как швейцарские часы
418 668365
Эй пидарасы! Кому бета пришла?
419 668570
А каким образом можно задать свои процедуры-функции?
Мне для рогалика нужно бросать шестигранные кубики, это
D6 = string(int64(random(6))+1)
Неплохо было бы это сделать отдельной процедурой,
типа:
function D(sides)
{
Result = string(int64(random(sides))+1)
Return Result
}
чтобы в любом месте я писал, например:
gotDamage = 3*D(6)-1;
Как такое в гамаке написать?
420 668571
>>68570
А, не это же не будет так работать. Блин. Кубик один раз вычислится.
Надо как-то так:
function D(quantity, sides)
{
Result = 0;
for (i = 0; i < quantity; i += 1)
{
die = string(int64(random(sides))+1);
Result += die;
}
Return Result;
}

Тогда можно будет писать:
gotDamage = D(3,6)-1;
421 668576
>>68571
Зачем в string конвертируешь?
422 668577
>>68570
Скрипт сделать и передавать в него аргументы.
423 668593
>>68576
Лоханулся. Тупо скопипастил, просто у меня show_debug_message стояло, когда проверял как работает.
>>68577
Спасибо, буду гуглить.

Ещё такой вопрос:
У меня есть генератор врагов.
В криейте у него typeOfEnemy= obj_enemy1;
В степе - instance_create_layer(x, y, "Instances",typeOfEnemy);
obj_enemy1 - имя врага, соотвественно.
Так вот, он работает, только если на поле уже присутствует хотя бы один враг. Если его убить - ничего не генерируется.

Почему так?
424 668622
>>68593
Потому что ты ссылаешься не на ассет, а на объект в комнате.

Используй asset_get_index() - в справке прочитаешь как.
425 668640
>>68622
typeOfEnemy = asset_get_index("obj_enemy1");
Не, всё равно не работает.
Причём у меня есть ещё один случай - когда герой атакует, он создаёт объект и им проверяет коллизию. Так вот этого объекта изначально нет в сцене и он нормально создаётся:
instance_create_layer(xPot, yPot, "Instances",obj_weapon);
426 668709
>>68640

>typeOfEnemy = asset_get_index("obj_enemy1");



create:
test_link = asset_get_index("obj_butterfly")

step:
instance_create_depth(mouse_x + irandom_range(-20,20),mouse_y+ irandom_range(-20,20),depth,test_link)

Всё прекрасно работает. Ищи у себя опечатки.
427 668744
>>17577 (OP)
Поясните новичку, как правильно вписать в switch case код, если мне нужно проверить диапазон значения переменной
Например сейчас я пишу типо
if(Пук < 113 and Пук > 67)
{
player_state = "puk_3"
}
И таких if проверок у меня куча. Как это можно вписать в свитч?
428 668751
>>68709
Уф. Разобрался.
Дело было не в опечатках, а в логике работы:
У меня генератор включался только тогда, когда ход переходил врагам. А когда врагов нет - ход "проматывался".
429 668760
>>68744
свитч не поддерживает такую хуйню
алсо если у тебя прям дохуя условий - это симптом хуевой архитектуры
430 668766
>>68760
А как без условий?
431 668775
Сап. В if place_meeting прописал смену спрайта, когда персонаж наступает на лаву. Вопрос: как прописать отмену переменных, отвечающих за управление, при соприкосновении с обьектом? Или другой путь, чтобы ограничить его движение. Буду признателен
432 668786
>>68760
Допустим у меня персонаж крутится на 360 градусов, мне нужно делать много проверок при его повороте на определенные градусы, и я хотел все это сделать более компактно, т.к. сейчас у меня десяток if только для этой хуйни.

>>67797
Я так понял ты используешь проверку киллизий с тайлами? Если да, можешь скинуть гайд или пример, по которому ты учился/делал? Ничего толкового найти не могу на эту тему.
Алсо, почему-то мне часто попадается хуйня типо "ну это работает пока персонаж меньше тайла, с которым ты хочешь проверять коллизию". Ну и плюс не ясно, как быть с поверхностями под 45 градусов?
изображение.png78 Кб, 1279x957
433 668792
>>68786

>Я так понял ты используешь проверку киллизий с тайлами?


Ну, если это можно так назвать.
Меня алгоритм такой:
1. В начале игры на базе нарисованной карты создаётся карта коллизий и ям. Состоящая только из технических тайлов (красные на рисунке).
2. Все персонажи регистрируются в этой карте, отмечая своё место как непроходимое.
//место где мы стоим - непроходимо.
tilemap_set_at_pixel(global.map_collision, 13 ,x, y);
3. В момент ходьбы они решают куда идти и запоминают потенциальный тайл:
Размер тайла 32х32, соответственно, размер шага - 32.
В зависимости от направления выбирают xDir и yDir +1 или -1.
Координаты потенциального перемещения:
yPot=y+yDirglobal.MoveStep;
xPot=x+xDir
global.MoveStep;
4. Смотрим чо там на карте коллизий в месте потенциального перемещения:
if (tilePotID != 13)
{
//помечаем тайл назначения как непроходимый.
tilemap_set_at_pixel(global.map_collision, 13 ,xPot, yPot);
//помечаем тайл текущий как проходимый.
tilemap_set_at_pixel(global.map_collision, 0 ,x, y);
myState = enemy_state.walking;
}
5. Проверяем, что все "участники движения" определились (и отметили свои тайлы).
6. И пиздуем туда.

>можешь скинуть гайд или пример, по которому ты учился/делал?


Я это сам выдумал. Я учусь, мне так проще, когда весь код на 100% понятно как работает.

>"ну это работает пока персонаж меньше тайла, с которым ты хочешь проверять коллизию".


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

>Ну и плюс не ясно, как быть с поверхностями под 45 градусов?


Я думаю так:
1. Если у тебя потайловое перемещение (как у меня) - решаешь считать 45 градусный тайл либо проходимым либо нет целиком. В зависимости от того, что визуально приятнее выглядит.
2. Если перемещение попиксельное/реалтайм - то делаешь кривые тайлы объектами и проверяешь отдельно. Либо вышеупомянутую функцию юзаешь.

Но я не спец в гамаке, подождём отцов, они прояснят.
изображение.png78 Кб, 1279x957
433 668792
>>68786

>Я так понял ты используешь проверку киллизий с тайлами?


Ну, если это можно так назвать.
Меня алгоритм такой:
1. В начале игры на базе нарисованной карты создаётся карта коллизий и ям. Состоящая только из технических тайлов (красные на рисунке).
2. Все персонажи регистрируются в этой карте, отмечая своё место как непроходимое.
//место где мы стоим - непроходимо.
tilemap_set_at_pixel(global.map_collision, 13 ,x, y);
3. В момент ходьбы они решают куда идти и запоминают потенциальный тайл:
Размер тайла 32х32, соответственно, размер шага - 32.
В зависимости от направления выбирают xDir и yDir +1 или -1.
Координаты потенциального перемещения:
yPot=y+yDirglobal.MoveStep;
xPot=x+xDir
global.MoveStep;
4. Смотрим чо там на карте коллизий в месте потенциального перемещения:
if (tilePotID != 13)
{
//помечаем тайл назначения как непроходимый.
tilemap_set_at_pixel(global.map_collision, 13 ,xPot, yPot);
//помечаем тайл текущий как проходимый.
tilemap_set_at_pixel(global.map_collision, 0 ,x, y);
myState = enemy_state.walking;
}
5. Проверяем, что все "участники движения" определились (и отметили свои тайлы).
6. И пиздуем туда.

>можешь скинуть гайд или пример, по которому ты учился/делал?


Я это сам выдумал. Я учусь, мне так проще, когда весь код на 100% понятно как работает.

>"ну это работает пока персонаж меньше тайла, с которым ты хочешь проверять коллизию".


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

>Ну и плюс не ясно, как быть с поверхностями под 45 градусов?


Я думаю так:
1. Если у тебя потайловое перемещение (как у меня) - решаешь считать 45 градусный тайл либо проходимым либо нет целиком. В зависимости от того, что визуально приятнее выглядит.
2. Если перемещение попиксельное/реалтайм - то делаешь кривые тайлы объектами и проверяешь отдельно. Либо вышеупомянутую функцию юзаешь.

Но я не спец в гамаке, подождём отцов, они прояснят.
434 668793
>>68792
Вакаба проебала звёздочку.

>yPot=y+(yDir умножить_на global.MoveStep;)


>xPot=x+(xDir умножить_на global.MoveStep;)

изображение.png6 Кб, 506x279
435 668795
>>68786

>Ну и плюс не ясно, как быть с поверхностями под 45 градусов?


И, кстати, выше скидывали ссылку на тутор, где вообще магия творится, пикрилейтед.
https://forum.yoyogames.com/index.php?threads/on-slopes-and-grids-subpixel-perfect-topdown-movement-and-collision-line-without-objects.4073/
Но я его пока не читал.
GIFi77.gif1,2 Мб, 506x279
436 668796
437 668797
>>68744
Я так понимаю ты добрался до весовых принятий решений.

Чтобы красиво было - перечисли все возможные решения enum и сделай функцию, которая будет возвращать название этих решений, проходя через твою кучу if ов.

var _decision = sc_get_decision(Пук)

Внутрь скрипта кидаешь всю свою логику с if ами, на выходи получешь что-то из enumа

А дальше

switch _decision
{
case decisions.attack:
{
//бла бла
} break;

//и так далее
}
438 668798
>>68775
У тебя в начале кода управление задаётся.
А ты сделай отдельный объект - obj_controller который будет ловить нажатие клавиш. И пусть к нему обращается игрок за проверкой "клавиша нажата или нет". Когда тебе понадобится лишить игрока управления - просто переведёшь этот объект в режим "выключено" так. чтобы он тебе false возвращал на любую нажатую клавишу.

if !disabled
{
key_left = keyboard_check...

}
else
{
key_left = false
}
439 668803
>>68797
Как я понял это тоже самое, только говно будет спрятано в скрипт. Ладно, думаю не стоит над этим заморачиваться, учитывая что пока-что это у меня 1 такая ситуация.

>>68795
Как для новичка, то у меня сосуды в голове лопаются, когда я пытаюсь осознать. Жалко там туториал отвалился.
440 668808
>>68803
Там нихуя сложного. Немного математики.

Всё, что требуется - умение искать точки пересечения простейших графиков.

1) Создаём формы тайлов коллизий и описываем их математически. Для полного квадрата - всегда коллизия. Для скосов: "ниже/выше линии, заданной формулой y=kx+b". Для круглых "внутрт/снаружи окружности, заданной формулой x^2 + y^2 = r^2"

2) Создаём скрипт "точка коллизий" который проверяет, в какой области тайла находится точка и возвращает результат коллизии.

3) Создаём скрипт "линия коллизий". Тут чуть сложней - по двум заданным точкам создаётся выводится график линии y=kx+b и во всех тайлах, которые она пересекает проходят проверки трёх точек - точки входа в тайл, точки выхода из тайла и точки перечечения с линией внутри тайла. По совокупности проверки этих трёх точек выдаётся результат коллизии с тайлом, а по совокупности проверки всех тайлов на пути - результат скрипта.

3) Place meeting получается совсем простой - просто проверка 4 линий по периметру треугольника.

4) И скрипт для движения. Тоже простой.
Запись20200513222703657.mp411,7 Мб, mp4,
1280x976, 0:34
441 669124
Ухбля я и упоролся!
Написал генератор уровня, и, по сути, всё, что хотел. Остались украшательства.
Особая гордость - бесшовные трещины. Зацените!
P.S.: Кто угадает, откуда идея игры и/или кто автор - моё увожение и титул "Почётный Олдфаг".
442 669291
>>69124
Deadly rooms of death?
443 669362
>>69291

>Deadly rooms of death?


>он был создан Эриком Хермансеном в 1996 году


Нет. Ещё олдфажнее, лол.
444 669433
>>69124
у тя челы в пропасть падают
пахнет тем, что кто то не дописал код
да и генераторство какое то простое
тупо нарандомил и все
хотя я хз, мб для твоей игры сойдет
я бы попытался чето вроде тропинок и недолабиринтов скрафтить
445 669435
>>69433
ну а так нормас(для новечка)
446 669462
>>69362
Но похоже, согласись.
aninidhogg.gif3 Мб, 294x233
447 673279
посоны я все с той же проблемой

create event

low = y + 10;
mid = y;
high = y -10;

pose[0] = low;
pose[1] = mid;
pose[2] = high;

poses = array_length_1d(pose);

pose_index = 0;
last_selected_pose = 0;

step event

x = o_p.x;
y = o_p.y;

pose_move = keyboard_check_pressed(ord("W")) - keyboard_check_pressed(ord("S"));

pose_index += pose_move;
if (pose_index < 0) pose_index = poses-1;
if (pose_index > poses -1 ) pose_index = 0;

делал по аналогии с переключением меню. с меню все получилось с этим нет
aninidhogg.gif3 Мб, 294x233
447 673279
посоны я все с той же проблемой

create event

low = y + 10;
mid = y;
high = y -10;

pose[0] = low;
pose[1] = mid;
pose[2] = high;

poses = array_length_1d(pose);

pose_index = 0;
last_selected_pose = 0;

step event

x = o_p.x;
y = o_p.y;

pose_move = keyboard_check_pressed(ord("W")) - keyboard_check_pressed(ord("S"));

pose_index += pose_move;
if (pose_index < 0) pose_index = poses-1;
if (pose_index > poses -1 ) pose_index = 0;

делал по аналогии с переключением меню. с меню все получилось с этим нет
448 673345
>>73279
Проект на дропбокс скинь, посмотрю что не так.
449 673349
>>73345
Пока это весь проект. Там два объекта игрок o_player двигается вперёд назад и палка o_box которая должна двигаться вдоль игрока
450 673354
>>73349
И что мне, телепатию включать из-за того, что у тебя два объекта?

Что такое o_p -? Игрок. Это ивенты чего? Оружия?

Тогда:
x = o_p.x;
y = o_p.y;

pose_move = keyboard_check_pressed(ord("W")) - keyboard_check_pressed(ord("S"));

pose_index += pose_move;
if (pose_index < 0) pose_index = poses-1;
if (pose_index > poses -1 ) pose_index = 0;

Полная хуета.
Потому что ты в начале шага делаешь y оружия равным y o_p а потом маняешь индекс позы, который ни на что не влияет.

Меняй эти строчки:

create event

low = 10;
mid = 0;
high = 10;

step_event:

y = o_p.y + pose[pose_index]
450 673354
>>73349
И что мне, телепатию включать из-за того, что у тебя два объекта?

Что такое o_p -? Игрок. Это ивенты чего? Оружия?

Тогда:
x = o_p.x;
y = o_p.y;

pose_move = keyboard_check_pressed(ord("W")) - keyboard_check_pressed(ord("S"));

pose_index += pose_move;
if (pose_index < 0) pose_index = poses-1;
if (pose_index > poses -1 ) pose_index = 0;

Полная хуета.
Потому что ты в начале шага делаешь y оружия равным y o_p а потом маняешь индекс позы, который ни на что не влияет.

Меняй эти строчки:

create event

low = 10;
mid = 0;
high = 10;

step_event:

y = o_p.y + pose[pose_index]
451 673355
>>73354
поправка

low = 10;
mid = 0;
high = -10
452 673357
>>73354
Спасибо, я как раз думал что проблема в том что в начале каждого шага возвращал в заданную позицию
.jpg97 Кб, 960x653
453 673540
Есть ли способ вписать в инишник какое-то буквенное значение?
454 673553
>>73540
ini_write_string()
.gif4,9 Мб, 320x320
455 673556
>>73553
Понял-принял, держи котейку.
456 674373
Аноны, помогите советом.
Решил вкатываться в GM для того, чтобы сделать игру МОЕЙ мечты.
Опыта в Gamedev нет, разве что делал понги/арканоиды в unity.
Матерые разрабы, как лучше действовать - пилить пару лет проект мечты или выкладывать миниигры на itch.io, практикуясь до создания условного undertale(он в качестве примера)? Есть возможность уделять 5-6 часов в сутки на создание, обычная работа есть.
И вообще, есть здесь такие, кто ЖИВЁТ этим (не только в плане хобби, но и в плане небольших денежных вознаграждений).
Игру хочу делать ради идеи, так что вариант android/реклама - не мой. Если и зарабатывать на игре, то зарабатывать на том, что не стыдно будет внуку показать.
457 674407
>>74373
Я не матёрый, и с игр не живу. Х.з. чем тебе помочь, какой вообще тебе совет нужен?

>пилить пару лет проект мечты


>зарабатывать на том, что не стыдно будет внуку показать



Я выбрал такой путь. Пара лет пиления проекта мечты вот уже превратилась в пять лет. Проект до сих пор не готов.
458 674430
>>74373

>то зарабатывать на том, что не стыдно будет внуку показать.


тут зарабатывают на донатных кликерах и порнухе, это точно не стоит внукам показывать
459 674552
>>74430
Я имею в виду, что морально удобнее выстреливать играми уровня hotline miami и undertale на gm, что имеет огромную культурную ценность
460 674553
>>74407
Ну вообще расскажи, чему научился на GM за пять лет.
Имея толкового арт-художника - смог бы undertale запилить?(если бы было в запасе ещё 10 лет). И вообще, с какого момента началось ПОНИМАНИЕ gm без использования гайдов и туториалов?
И если у тебя душевная прорывная игра - почему не захотел прототип на kikstarter продвигать? Как раз денежная мотивация бы появилась
461 674557
>>74553 ща бы 10 лет андертейл делать
462 674606
>>74553
Вот этому.
https://2ch.hk/gd/res/649008.html#673330 (М)

Могу делать платформеры и топ-дауны. До сих пор не умею в хорошие динамические тени. Всё остальное могу.
463 674607
>>74553

>с какого момента началось ПОНИМАНИЕ gm без использования гайдов и туториалов?


Где-то через пол года.
464 674611
Посоны, а что с GM1? Собрал тут ретро комп на P4, на него только 32-х битная винда ставится. А GM2 на ней не фурычит, надо ему х64 зачем-то.
Легальный способ получить GM1 сейчас есть?
И ещё - чем Game Maker Studio 1.xxx от Game Maker v8.xx отличается?
465 674671
>>74611
Легального способа нет. Можно попробовать найти стимовские ключи, но они стоят как жопа единорога.
Студия это улучшенная и переделанная версия восьмого гамака. Все.
2020-05-2612-09-23.mp44,9 Мб, mp4,
1364x768, 0:50
466 674676
Захуярил НАКОНЕЦ-ТО слоупов для своего платформера. До последнего не хотел precise-коллизии делать, но поскольку больше нихуя в коде слоупов не происходит, я решил - ладно, хуй с ним.

Теперь можно приниматься за демку-туториал. Ух, бля, скоро как допилю эту хуйню как вкину вам понажимать, как пошлюсь нахуй, ух.

Еще один хороший чел тайлсет скинул свой, я из него нарезал себе знатно тайлов. От теперь будет просто суперзаебись.
467 674696
>>74671
Т.е. на торрентах искать-таки студию, а не восьмёрку? Или там незначительные отличия?
>>74676
Ты прям человечище. Столько механик засунул, я подохуел троху. Но столько хитов у врага - это немилосердно, лол.
468 674704
>>74696
Два года ебашил в свободное от двух работ время. Щас с одной ухожу, поприбавится времени на эту хуйню.

Тут стандартные платформенные механики - прыжки, бег, дэш, воллслайд, воллджамп. Все добросовестно из мегамена спижжено, даже спрайт ГГ и врагов! прыжки и воллджампы можно комбинировать с дэшем для УСКОРЕНИЯ НАХУЙ.

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

Заебенил комбухи, шоб как в ДМЦ (у гарпуна тоже ноги оттуда растут). Можно комбы прерывать (например дэшем или гарпуном) а потом продолжать.

Короче задумкой было совместить лучшее из мегаменов и дмц но шобы в 2д все это было и чтоб я сам это всё. Около 10к строк кода, потому что я мудак дрисный и не умею нормально оптимизировать (однажды въебал неудаляющиеся дс-листы для врагов которые засирали всю память минуты за три и роняли потенциальный ФПС с 2000 то 20)
469 674705
>>74676
А зачем ты сделал precise коллизии, если у тебя коллизии с тайлами? НАФИГА?

Изучай туториал, качай с гитхаба. Смотри как нужно делать.

https://forum.yoyogames.com/index.php?threads/on-slopes-and-grids-subpixel-perfect-topdown-movement-and-collision-line-without-objects.4073/
470 674717
>>74705
Не с тайлами. С объектами. Тайлы я использую сугубо для графона, так проще.
зеркалофон-пример.png12 Кб, 381x411
471 674726
>>74717

>так проще


Ага. Проще. Чего ж ты тогда для пасфайдинга разбиваешь всё на клетки и работаешь с ними, если с объектами проще?

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

А что будет, когда ты сделаешь большую комнату 1000*1000 тыйлов? С тайловыми коллизиями это будет по-прежнеу проверка на пересечение с несколькими клетками. Объектные сожрут кучу фпс.
472 674831
>>74726
Ну давай по порядку:

>Чего ж ты тогда для пасфайдинга разбиваешь всё на клетки и работаешь с ними, если с объектами проще?



Отказался от него вовсе - для платформера он не нужен, проще банально в АИ врагов научить их перепрыгивать ямы и преследовать игрока недалеко. Смысла нет перегружать их еще и подробным патфайндингом.

>Я как представлю, что в моей игре могли бы быть коллизии с объектами вместо тайлов, холодным потом покрываюсь. Столько багов с этим может быть связано.



Например? Я пока проблем не увидел. У меня есть блоки-кирпичи, которые "стена+потолок", у меня есть блоки которые one-way платформы, блоки-слоупы для ходьбы по ним и блоки-слоупы для потолка. А, еще движущиеся платформы, которые просто блоки, но движутся. И блоки-транспортеры которые сами не движутся, но движут тебя.

>А что будет, когда ты сделаешь большую комнату 1000*1000 тыйлов? С тайловыми коллизиями это будет по-прежнеу проверка на пересечение с несколькими клетками. Объектные сожрут кучу фпс



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

А переписывать на этом этапе все под тайловые коллизии, когда уже отлажены объектные, я не вижу смысла совсем. Особенно в ГМС 1.4, где из коробки очень хуевый IDE к тому же.
473 674842
>>74831

>в блоках-объектах никакого кода не выполняется вообще



Ты в этом так уверен? Что-нибуль про встроенные переменные знаешь? У них по параметрам х,y и маске коллизий каждый шаг вычисляются bbox параметры Сохраняются xprevious, yprevious, проверяется - нулевая скорость или нет, чтобы начать двигать объект, если скорость не нулевая. Проверятся path и timeline. Если они видимые - проверяется наличие их на экране. Тикает ли таймер анимации на объекте без draw_event я не проверял.

Сделал тестовую комнату. В пустой комнате 12000 среднего фпс. Поместил в комнату 10000 объектов "без кода". Без ивентов т.е.
300 на экране, остальные за пределами экрана. Фпс упал до 1200. Сделал их невидимыми - fps стал 1600.
Это без всяких проверок коллизий с ними. Просто в комнате лежат объекты без ивентов - "без кода".

>Например? Я пока проблем не увидел.


Проблемы начинаются как раз из-за вычисления bbox. Твои квадратные коллизии считаются по ним. Когда происходит это вычисление? В какой момент времени? Перед началом step ивентов? После? До draw_event или после? Как вычисляется коллизия справа, а как слева? Одинокого? Ты проверял?

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

Как у тебя с твоим гарпуном и копьём? Они точно в нужный пиксель втыкаются? Или могут зайти внутрь линии коллизий/не дойти до линии?

А если ты передвинешь свой гарпун в step_event, сможет ли враг обнаружить, что гарпун был перемещён в end_step? Или ему понадобится ждать следующего шага. чтобы bbox обновились? А что насчёт движущихся платформ? Ты сдвинул платформу в begin_step, в step_event начал проверять коллизию с ней. В каком месте ты обнаружишь эту коллизию? Не войдёшь ли внутрь платформы?

Помнится мне ты мутил какие-то костыли для своего гарпуна именно по этому поводу.

Чем дальше будет - тем больше этих костылей появится. А костыли - это плохо, очень плохо. Чем больше пишешь, тем больше накапливается подобным мелочей.

>в ГМС 1.4


Ты джва года уже ждёшь эту игру, неужели не нашёл немного денег, чтобы обновиться до мега приятного gms2?
473 674842
>>74831

>в блоках-объектах никакого кода не выполняется вообще



Ты в этом так уверен? Что-нибуль про встроенные переменные знаешь? У них по параметрам х,y и маске коллизий каждый шаг вычисляются bbox параметры Сохраняются xprevious, yprevious, проверяется - нулевая скорость или нет, чтобы начать двигать объект, если скорость не нулевая. Проверятся path и timeline. Если они видимые - проверяется наличие их на экране. Тикает ли таймер анимации на объекте без draw_event я не проверял.

Сделал тестовую комнату. В пустой комнате 12000 среднего фпс. Поместил в комнату 10000 объектов "без кода". Без ивентов т.е.
300 на экране, остальные за пределами экрана. Фпс упал до 1200. Сделал их невидимыми - fps стал 1600.
Это без всяких проверок коллизий с ними. Просто в комнате лежат объекты без ивентов - "без кода".

>Например? Я пока проблем не увидел.


Проблемы начинаются как раз из-за вычисления bbox. Твои квадратные коллизии считаются по ним. Когда происходит это вычисление? В какой момент времени? Перед началом step ивентов? После? До draw_event или после? Как вычисляется коллизия справа, а как слева? Одинокого? Ты проверял?

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

Как у тебя с твоим гарпуном и копьём? Они точно в нужный пиксель втыкаются? Или могут зайти внутрь линии коллизий/не дойти до линии?

А если ты передвинешь свой гарпун в step_event, сможет ли враг обнаружить, что гарпун был перемещён в end_step? Или ему понадобится ждать следующего шага. чтобы bbox обновились? А что насчёт движущихся платформ? Ты сдвинул платформу в begin_step, в step_event начал проверять коллизию с ней. В каком месте ты обнаружишь эту коллизию? Не войдёшь ли внутрь платформы?

Помнится мне ты мутил какие-то костыли для своего гарпуна именно по этому поводу.

Чем дальше будет - тем больше этих костылей появится. А костыли - это плохо, очень плохо. Чем больше пишешь, тем больше накапливается подобным мелочей.

>в ГМС 1.4


Ты джва года уже ждёшь эту игру, неужели не нашёл немного денег, чтобы обновиться до мега приятного gms2?
474 674843
>>74842
Тут я тебе даже. наверное, напиздел. bbox вычисляются по sprite_width, sprite_height, маска коллизий от них не зависит и вычисляется отдельно. Ага, каждый шаг.
475 674846
>>74842
Спасибо за развернутый комментарий, лол. Возможно. действительно надо переходить на тайлы и ГМС2, но пока мне банально лень его покупать. Хочу дождаться 2.3, там пиздец как дохуя приятных плюшек. Ну и IDE в целом лучше в разы, скорее всего.

>Ты в этом так уверен?


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

>Когда происходит это вычисление? В какой момент времени?


Для этого господь придумал тестирование. Кто бы мог подумать: последовательность исполнения кода важна и всё такое.

>Чем дальше будет - тем больше этих костылей появится. А костыли - это плохо, очень плохо. Чем больше пишешь, тем больше накапливается подобным мелочей.


Именно что от очевидных костылей я стараюсь избавляться, там где это возможно с моим низким скиллом вообще.

>Ты джва года уже ждёшь эту игру, неужели не нашёл немного денег, чтобы обновиться до мега приятного gms2?


Скажем так: я действительно с радостью обновился бы, но это не уберприоритетная задача

>>74843

>Ага, каждый шаг.


ну значит я наебался в своих выводах, потому что профилирование такой хуйни не показывает, лол.
476 674847
>>74842

>begin step, end step


Нахуй. Всё в степе. Лучше уж вручную располагать код как полагается по логике, чем потом искать где чего лежит по разным эвентам. Лучше для меня, я не говорю что такой путь единственно верный и вообще.
477 674851
>>74847
Можно разные политики применять.
Например:
Все движения платформ, открыания дверей, нажатия на переключатели, движение пресса и т.д. происходят в begin_step

Все взаимодействующие с миром НПС и игрок действуют в step. Причём сначала действует игрок, потом - все остальные.

В end_step обрабатываются все события того, как НПС подействовали друг на друга, какой урон нанесли и т.д.

Сейчас пришёл к тому, что делаю очередь входящих событий для игрока (и НПС), которые игрок обрабатывает сам тогда, когда ему это удобно.
В конце шага игрок просматривает её и принимает решения типа:
Девочка сорвала цветочек.
Цветочек отправил ей задание "потрать 25 энергии" на сбор цветов.
Девочка получает это сообщение и видит, что энергия упала ниже нуля, а значит пора падать на землю и засыпать. Но анимация сбора цветов ещё не закончена!
Девочка тратит свою энергию и оправляет себе новое задание: упасть на землю в следующем шаге.

В следующем шаге она получает от себя задание - упасть на землю.
Но анимация срывания до сих пор не закончена!
Девочка сбрасывает текущее задание в очереди и отправляет задание упасть на следующий шаг.

И так пока не настанет удобный момент для того, чтобы упасть без сил.

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

Понятное дело, что у тебя есть своя, удобная для тебя, система. Я не предлагаю тебе её переделывать, а рассказываю, как можно.
477 674851
>>74847
Можно разные политики применять.
Например:
Все движения платформ, открыания дверей, нажатия на переключатели, движение пресса и т.д. происходят в begin_step

Все взаимодействующие с миром НПС и игрок действуют в step. Причём сначала действует игрок, потом - все остальные.

В end_step обрабатываются все события того, как НПС подействовали друг на друга, какой урон нанесли и т.д.

Сейчас пришёл к тому, что делаю очередь входящих событий для игрока (и НПС), которые игрок обрабатывает сам тогда, когда ему это удобно.
В конце шага игрок просматривает её и принимает решения типа:
Девочка сорвала цветочек.
Цветочек отправил ей задание "потрать 25 энергии" на сбор цветов.
Девочка получает это сообщение и видит, что энергия упала ниже нуля, а значит пора падать на землю и засыпать. Но анимация сбора цветов ещё не закончена!
Девочка тратит свою энергию и оправляет себе новое задание: упасть на землю в следующем шаге.

В следующем шаге она получает от себя задание - упасть на землю.
Но анимация срывания до сих пор не закончена!
Девочка сбрасывает текущее задание в очереди и отправляет задание упасть на следующий шаг.

И так пока не настанет удобный момент для того, чтобы упасть без сил.

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

Понятное дело, что у тебя есть своя, удобная для тебя, система. Я не предлагаю тебе её переделывать, а рассказываю, как можно.
478 674854
>>74851
Да я понимаю, конечно. Все равно спасибо большое, что поделился, это крайне важно для самоучек.
479 675939
>>74851
Вот что ты натворил, нехороший человек?
Купил себе гмс2, будь он неладен, импортирую проект туда.
480 676021
бля, аноны
кодил кодил себе проект тихонечко в сторонке, решил что надо мультиплеер запилить тк жанр зависит от него
ну начал ебашить для теста хуйню аля коннект-дисконнект, допилил туда создание объекта-игрока, допилил чтоб каждый игрок имел собственного етого объекта и смог контролить
была трабла с тем, что был какой то рассинхрон. не в плане что делей, а в плане что прыжки всегда регистрировались, а движение лево право не всегда изза чего по Х-у проеб был
в итоге допилил синхронизацию раз в 10 тиков игры, когда румспид 60
решил допилить из етого ртску чтоб юниты(как и все объекты) в списках были для обращения к них, и вроде отдача приказов была збс(но не понял как сувать градусы той же функции point_direction, толи я долбоеб, но он как то криво их вкидывал через сеть, изза чего норм направление ток у хоста было)
в итоге решил по фану запилить возможность контроля юнита как в платформере при нажатии на кнопки в интерфейсе, и вроде работает, но изза того что ето был изначально мультиплеерный платформер а в итоге стало чудо с мега крутыми костылями, то начались баги
и думал хуле ошибка лезет 1, подумал переписывать "фундамент", начал в нем разбираться и допер что это изза слоя костылей. в итоге ща переписывать буду
самое угарное здесь то, что я это без переписывания не мог никак понять кек, тк писал будто не на костылях. типо переиграл сам себя, и чтобы разобраться в чем проблема реально пришлось поумнеть на ~2 асикука
До этого не кодил месяца 3, и стало хуево тк я отвык умнеть и полюбил вебмемы с нашего любимого двача
И к чему я это? У меня есть два вопроса к местным сверх-разумам:
1. Как пихать в буфферы направление-градусы? сувал в u16-s16(подумал ну градусов же 360, поэтому s8-u8 не подойдет), и, тк дело не в отрицательном знаке, то есть какая то функция или что? я канеш накостылял чтоб вместо направления были корды куда направление должно было идти, но это ж костыли
2. Почему когда пишешь игрушечки для дебилов нельзя быть дебилом? А если срсли, то хочу найти тестеров, чтоб дето через неделю-две начать осматривать мое костыльное чудовище. Можете посоветовать, как собсна находить? Нужны не просто рандомы, а с хотя бы какими то познаниями в ртс
480 676021
бля, аноны
кодил кодил себе проект тихонечко в сторонке, решил что надо мультиплеер запилить тк жанр зависит от него
ну начал ебашить для теста хуйню аля коннект-дисконнект, допилил туда создание объекта-игрока, допилил чтоб каждый игрок имел собственного етого объекта и смог контролить
была трабла с тем, что был какой то рассинхрон. не в плане что делей, а в плане что прыжки всегда регистрировались, а движение лево право не всегда изза чего по Х-у проеб был
в итоге допилил синхронизацию раз в 10 тиков игры, когда румспид 60
решил допилить из етого ртску чтоб юниты(как и все объекты) в списках были для обращения к них, и вроде отдача приказов была збс(но не понял как сувать градусы той же функции point_direction, толи я долбоеб, но он как то криво их вкидывал через сеть, изза чего норм направление ток у хоста было)
в итоге решил по фану запилить возможность контроля юнита как в платформере при нажатии на кнопки в интерфейсе, и вроде работает, но изза того что ето был изначально мультиплеерный платформер а в итоге стало чудо с мега крутыми костылями, то начались баги
и думал хуле ошибка лезет 1, подумал переписывать "фундамент", начал в нем разбираться и допер что это изза слоя костылей. в итоге ща переписывать буду
самое угарное здесь то, что я это без переписывания не мог никак понять кек, тк писал будто не на костылях. типо переиграл сам себя, и чтобы разобраться в чем проблема реально пришлось поумнеть на ~2 асикука
До этого не кодил месяца 3, и стало хуево тк я отвык умнеть и полюбил вебмемы с нашего любимого двача
И к чему я это? У меня есть два вопроса к местным сверх-разумам:
1. Как пихать в буфферы направление-градусы? сувал в u16-s16(подумал ну градусов же 360, поэтому s8-u8 не подойдет), и, тк дело не в отрицательном знаке, то есть какая то функция или что? я канеш накостылял чтоб вместо направления были корды куда направление должно было идти, но это ж костыли
2. Почему когда пишешь игрушечки для дебилов нельзя быть дебилом? А если срсли, то хочу найти тестеров, чтоб дето через неделю-две начать осматривать мое костыльное чудовище. Можете посоветовать, как собсна находить? Нужны не просто рандомы, а с хотя бы какими то познаниями в ртс
481 676399
А есть какие-нибудь туториалы адекватные или ваши собственные примеры как делать сложные диалоги? Уже знаю как привязать к одному объекту диалоги и выборы ответа, по тутору Friendly cosmonaut. Но по этому туториалу выборы ответа ни на что не влияют и можно говорить с нпс сколько угодно раз. Но как допустим сделать так, чтобы мой вариант ответа влиял на диалоги уже в других комнатах или например с другими объектами?
1.jpg13 Кб, 943x61
482 676419
>>76399
Я добавляю в некоторые строки диалогов специальный тег, по которому создаётся специальный объект для этого диалога. Этот объект при создании выставляет значение нужного триггера на true и самоуничтожается.

Минусы: диалоги хранятся в скриптах внутри гамака и ссылаются на ресурсы внутри гамака.
Плюсы: можно прикручитить к ним вообще всё что угодно.

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

За ними идёт текст диалог бокса. Внутри текста тоже стоят теги, которые определяют скорость вывода текста, паузу в выводе и т.д. На пикрил | означает переход на новую строку.

Итого контроллер диалогов читает "dialog_text_effects.choice" и переходит в режим выбора, создавая объект-стрелку, которая может перемещаться между строками.

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

Потом видит два ссылки на объекты подряд, и понимает, что в случае этого выбора нужно создать соответсвующий объект, который запустит катсцену или уничтожит диалог. И четвёртый выбор у меня noone (-4) - значит четвёртой опции просто нет.

Как-то так.
483 678128
проходил курс на юмеди с перерывом в 2 недели. все было норм, но сейчас полезли ошибки хотя делаю точно все как в курсе. вроде обнова была, может ли это быть с ней проблема?
484 678135
>>78128
Вот эта VOID - что за херня?
Ты сделал
#macro VOID = -1?
Нахера?

Ругается у тебя на or - говорит что ожидает другого.
Замени VOID на -1
485 678136
>>78128
Ну и опять же - у тебя что, с нулевым тайлом тоже коллизии? Ты поехавший?
486 678183
>>78136
Void = 0
Я ж не настоящий программист делаю что в курсе говорят
487 678331
рзобрался. в макросах написал ; в конце строки, а не надо было
image.png61 Кб, 999x692
488 680552
>>17577 (OP)
Как мне из набора пиксельных рисунков выбрать тот что мне нужен, зелёную травку?
489 680564
>>80552
Конкретизируй вопрос.

Ты хочешь научиться с текстурой работать независимо от гамака?
490 680565
>>80564
Мне надо стенки сделать из травы, нашёл пак с разными текстурами, а тут всё в одной пнг а не разделено, я закинул в спрайты, мне надо отделить эту зелёную траву.
491 680566
>>80564
>>80565
Например в TileSets я мог прям выбрать то что мне нужно на бекграунде, могу ли я также в object сделать? найти не могу
492 680572
>>80565
Какой-то прям дико-нубский вопрос из разряда "я подтираю жопу наждачкой, как мне сделать так, чтобы вся кровь через анус не вытекла?".

Ты можешь использовать draw_sprite_part и рисовать нужный участок спрайта.

Но неужели тебе проще руками задавать координату каждого спрайта на спрайтщите, чем порезать картинку в каком-ниюуль редакторе и закинуть в гамак кучу отдельных спрайтов?
Не переживай, он сам их будет компоновать в texture page.
493 680574
>>80572
Хорошо, спасибо
494 680594
>>80566
Ты можешь импортировать как спрайтшит, потом удалить лишнее.
2020-07-04 14-02-22.mp438 Мб, mp4,
1920x1080, 0:52
495 680667
Персонаж при движении вниз - телепортируется на некоторые пиксели влево
var down_move = (keyboard_check(vk_down) || keyboard_check(ord("S")));
if (down_move){
phy_position_y += 4;
sprite_index = MainHero_Frontside;
image_speed = 2;
}
В коде никаких иксов нет, чтобы этому способствовало. Не понимаю почему коллизии с объектами не работают.
496 680673
>>80667
Со стенками разобрался, там галочку надо было в uses_physics поставить, но вот что с персонажем делать, я вообще не понимаю.
image.png89 Кб, 1051x611
497 680676
>>80673
>>80667
Если что, коллизион маск я уменьшил в спрайте
498 680692
>>80667
>>80673
не используй физику, если твоя игра не про физику
499 680697
>>80692
Так мне физику в любом случае надо использовать, взаимодействие с стенкой это ведь относится к ней. Как по-другому-то?
image.png6 Кб, 550x90
500 680715
>>80676
>>80697
Так вот что эта хуйня делает, всё, решил.
501 680899
>>80697

> взаимодействие с стенкой это ведь относится к ней.


нет
15907593145210.jpg37 Кб, 960x540
502 681207
Двач, миленький, помогай.

Делаю небольшой проект игору на движке GameMaker версии 1.1. Решил обновить проект и добавить анимации передвижения, стрельбы и т.д., сделал стрипы, но вот незадача - движок не "переваривает" их как надо, вместо гиф-подобной анимации она видит его как обычный длинный спрайт. В чем проблема? Я что-то сделал не так своими клешнями, или проблема кроется в версии движка? Уточню, что стрипы делал при помощи проги "Strip Maker", которую как-то откапал на тематических сайтах. Двач, помоги, у меня встала работа из-за этих сраных стрипов.
anima.jpg213 Кб, 1079x1080
504 681358
>>81214
Спасибо, Анончик, от всей моей душонки спасибо, столько мне нервных клеток сохранил а они мне еще ой как пригодятся.
image.png27 Кб, 553x349
505 681444
Двач, подскажи, что я не так сделал?

В моей игре есть несколько видов оружия по жанру игра TDS, собственно мне нужно, чтобы анимация передвижения игрока присутствовала при выборе любой пушки. Если что, сам скрипт для перемещения находится в событии "Step", в то время вот эта вся тема дублируется в событиях "Keyboard W", "Keyboard S", "Keyboard A", "Keyboard D". Я пробовал даже оставить анимку только для одной пушки без скрипта, ничего не вышло. Пробовал тупо скрипт оставить, тоже никакого результата.
506 681714
Анонче, хелп ми!

Дано: Несколько объектов, 4 спрайта для курсора, 1 объект курсор.

Нужно: Когда курсор не находиться на объекте ему присвоен спрайт №1, Когда курсор находиться на объекте ему присвоен спрайт №2 и при каждом отдельном ЩЕЛЧКЕ ПКМ спрайты должны меняться от №2 по №4, и обратно.

Что сделал я: Создал общий невидимы объект который "ложу" поверх интерактивных объектов, проверяю коллизию невидимого объекта и объекта курсор, если коллизия срабатывает, то меняется српайт. Но ПКМ в таком случае уже не меняет спрайт на следующий.

Пример кода:
q = 0

if q = 0 {
sprite_index = cursor_spr
}

if collision_circle(x, y, 1, activator_obj, true, true) {
q = 1
}

if q = 1 {
sprite_index = s_ac_spr
}

P.S. Гугл не помог. Да, я тупой. Учусь гамаку 3 дня, ранее не прогал :( Братики, памаааагите пожалуйста!
ss0c0684896e357f636729bd33f27e9194a8ccc1f4.jpg463 Кб, 1920x1080
507 682185
>>17577 (OP)
Только что случайно узнал что моя любимая такаято йоба топдаун стрелялка Синтетик сделана на гейммейкере. Охуел я знатно.

Аж появилась немножко мотивация самому начать делать игру на этой хуйне. Но потом глянул что оно стоит 800 долларов(юнити например совершенно бесплатен) и ну его нахуй, буду дальше сидеть чмоней(ибо юнити то бесплатен но гугл говорит что он намного сложнее для вката).
508 682260
>>82185
Бесплатен он, пока ты игру не продаёшь за нормальные деньги и не начнёшь делать что-то большее, чем кукикликер для мобилок.
509 682418
>>82260
платный юнити от бесплатного ничем не отличается кроме отсутствия сплеш скрина "сделано на юнити"
ну и когда достигаешь 100000 доларов профита то должен оплатить платную юнити, но при таком доходе тебе уже похуй на такую мелочь
Безымянный20202020202020204.png9 Кб, 527x457
510 682871
Самый адекватный тред по самому адекватному движку, помоги. Мне нужно сделать анимацию передвижения с разными единицами оружия (коих в моей игре 5). Анимацию для первого оружия я сделал так (смотри скрин). Желательно без создания новых объектов игрока, то есть чтобы у объекта именно спрайты менялись.
511 684626
Компрессия звука нужна только для экономии места и всё?
512 686063
>>84626
Да.\Несжатый звук занимает ОЧЕНЬ много.
513 686064
>>82871
Ты там что, драг-н-дроп используешь?
Земля тебе пухом, братишка.
514 686074
>>86064
Сделал по гайду.
515 686538
У нас тред утонул.
516 686541
Тред утонул или удален.
Это копия, сохраненная 10 декабря 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски