Почему бы не создать ламповый гм-тредик? Обсуждаем, обмениваемся опытом, задаем вопросы.
Относительно недавно вышла вторая версия: GameMaker Studio 2, пиратки которой еще нет. Стало НАМНОГО удобнее работать с тайлами, слои тоже помогают.
Так-то 1.4 может все то же, что и двойка, поэтому если жалко бабла, можно писать на старой версии. Но двойку будут развивать и она будет становиться только лучше.
>>439561 (OP) Двойка - недоделанная параша. Лагающая, забагованная и неудобная. А 1.4 я купил с кучей индюшатины на хамбл бандле за 15 бачей и не жалею.
>Обнови пеку для учебы У меня на десятилетнем ПК летает.
>Список багов в студию А вот один баг я лично отрепортил. Функция keyboard_key_press в step event при 60 fps вызывала утечку памяти, крашила игру через некоторое время и не позволяла запуститься дебагеру - крашила его сходу. Понять в чём причина было очень тяжело.
>Хз. я после 1.4 просто кайфую от скорости своей работы. Я периодически открываю 1.4 для туториалов. 2 намного удобней. Но воркспейсы всё равно недобработаны. Должно быть как-то по другому. То что есть - годится только для драг-н-дроп даунов.
>>439624 В основном тем, что из-за боковых окон на воркспейсе места мало. Соответственно и окошки очень маленькие. Постоянно возникает горизонтальная полоса прокрутки. Чтобы нажать на неё нужно либо вырубать нижнюю панель (которая всё равно влезает назад после каждого запуска игры) либо таскать окно. И боковая панель всё время вылезает, если у тебя где-то в таба комната открыта. Ну и без правой панели всё равно не обойтись, ибо навигироваться по воркспейсу невозможно. С выкрученным зумом невозможно разобрать, что там в окошках. При основном масштабе нужно тянуть несколько экранов, чтобы найти нужный обхект с открытыми ивентами. Даже на домашнем 40ка дюймовом монике постоянно такая проблема. На мелком рабочем мониторе - просто невозможно пользоваться. Такие дела.
>>439634 Странно, у меня 24 дюйма моник и мне нормально. Причем кода у меня достаточно и прыгаю по объектам бывает часто. Короче, мне зашло больше, чем в 1.4
>>439561 (OP) Зачем обсуждать гамак здесь? Если есть какие-то вопросы - на них ответят на форуме yoyo. Если просто потрындеть - нас здесь полтора игродела.
Процесс компиляции во второй отличается от первой? Пока сам работаю на первой, есть ли смысл финальную сборку проводить во второй? Добавили ли туда какие-нибудь магические оптимизации и прочее или в конечном итоге не будет разницы независимо от версии на которой игра компилировалась?
>>440002 Пока не так много отличий на самом деле кроме удобства. А так я бы не стал переносить старый большой проект в двойку потому что импорт насоздает кучу скриптов совместимости. Нахуй надо.
Дебагер после апдейта стал просто шикарным. Теперь можно посмотреть значения переменных прямо в окне с кодом, можно залезть внутрь ds структуры. Можно менять значения переменных во время дебаганья.
>>441336 Почему не использовать код инициализации комнаты для инициализиции комнаты при переходе из комнаты в комнату?
Пока что я остановился на том, что пишу там with obj_game {} и задаю все нужные параметры. Это лучше, что иметь в obj_game begin_step_event, следящий за сменой комнаты.
Аноны, туплю. Вообщем реализовал такую камеру. Когда нажимаю мышкой могу "тащить" вид. Т.е. тоже самое когда в стандартном windows просмотрщике фото приближаешь фото и перемещаешься по нему. Сделал все, но один нюанс работает немного криво. Ограничил вид с помощью clamp и по координатам. Но когда я упираюсь в край карты с большим ускорением происходит кратковременный лаг. Как правильно ограничить вид чтобы он не выходит за пределы комнаты? Чтобы он как влитой останавливался у края комнаты а не резко "пружинил"
>>439561 (OP) Единственное серьезное слабое место в 1.4 это редактор комнат. Ну и редактор кода можно подтянуть. Остальное можно вообще выпилить, только мешает. По мне так гамаку гуй вообще не нужен, особенно гуй объектов.
Купил сегодня вторую версию, заодно появилась возможность поставить легальную 1.4. Вот не знаю какую юзать. Импортнул проект из 1.4, приятно удивило то, что все нормально заработало из коробки. В 1.4 не нравился редактор комнат и дебаг (а именно невозможность добавлять вотчи). В двойке не понравилось, что отошли от интерфейса, к которому я привык ещё со времен версии GM5, но думаю привыкну. Есть ещё какие подводные камни?
>>443604 Хоспади, вчера за 2 часа, сидя с температурой 38 градусов, не имея никаких знаний, кроме кривого гайда, я сделал камеру лучше, чем у этих уёбков из One dog story. Да, у меня бомбит от них.
>>443750 Небось они по тому же гайду от Сполдинга и делали. У него так же тошнотворно кобасит камеру после остановки движения (но не так сильно, как в собаке, у них делитель скорости выше)
Какой примерный алгоритм чтобы сделать gui. Допустим у меня есть спрайт 16x16 с рамкой окна. Но т.к. окна могут быть разного размера этот спрайт надо как-то разбивать на куски. Т.е. берем угол потом скейлим (или просто кучу 1х1 рисуем) вернюю плашку на заданный размер х. Потом опять уголок. Верхушка готова. Нашел функции draw_part, как я понимаю надо использовать ее?
На ютубе примеры что я нашел рисовали окошки с помощью draw_rectangle или вообще draw_line, что мне не очень подхожит. Нужно чтобы окно создавалось именно из кусков спрайта.
Cап, мейкеры. Решил вкатиться в гейммейкер и сделать что-то для души. Решил погуглить гайдов, но они или легкие, по вещам, которые знает любой за первые курсы обучения, или по очень узко направленным вещам. С чего начать? Есть ли по gml'ю учебник? Гугл не помог, хотя и искать мог хуёво. Всякие ютуб канальчики, гайдики, которые разжуют сложное, а лёгкое опустят до гиперссылок на другие их ролики. Или тексты. С меня как обычно.
>>444198 Если по английски понимаешь, то рекомендую оффициальный мануал читать. Он у них лучше любого учебника написан. Я такое редко встречал, обычно мануалы больше для продвинутой аудитории подходят.
>>444198 На Hellroom есть "Школа GML Архив". Но если не абсолютный новичок, то вперед реализовывать проект параллельно читая справку. Справка у гамака как уже сказал >>444200 , хороша. Что-то более специфическое спрашивают на форуме yoyo, на русских сайтах бесполезно. Уже почти все умерли.
>>444216 Бери пикчу рамки (допустим, 9696), руби на мелкие(типа 3232), делай функцию, которая будет рисовать тебе рамки любого размера по кусочкам из твоего стрипа. На пикче чёрно-жёлтое говно - твоя рамка, красные перпендикулярные и прозрачные штуки - линии разреза.
Требуется сделать прототип игры на Game Maker Studio 2. Ничего сверхъестественного - список фич, которые требуется реализовать скину. В основном это ходьба, менюшки и т.д. Ничего сложного.
>>443424-кун репортинг ин. Да, GMS2 божественна. Наконец всё для людей, Yoyogames молодцы, что не побоялись всё так радикально переделать. 1.4 теперь воспринимается как идеологически устаревшее, глюченное нагромождение костылей. Ни капли не жалею потраченных 1500 рублей.
>>445035 Вот только на десктоп пилить никакого интереса нет.. по крайней мере у меня. А мобильные и хтмл5 модули стоят дорого.... очень дорого даже учитывая региональные цены в стиме. Учитывая что под боком юнити который во всем лучше.
В 1.4 раздражает гуй. Сделали бы гм фрейморком и все настройки проекта в json. Удобнее было чем эти лагающие Delphi окошки с мерцающим дефолтным скином... Я с этого реально охуел еще в 2010. Мерцающие епта окошки... В дорогущем софте. Гуй не приспособлен совершенно для работы без мышки, что тоже очень неудобно.
В гамаке недостаточно просто уничтожить data structure (например ds_grid) функцией ds_grid_destroy(name)
Необходимо также очистить указатель на неё name = noone;
Иначе если какой-либо ещё объект создаст новую data structure, твоя переменная name может снова стать указателем на data structure, только уже другого объекта.
Этот долбаный баг преследовал меня месяц. Наконец я понял в чём дело. Может ещё кому-то пригодится.
>>445259 >Сделали бы гм фрейморком и все настройки проекта в json. В 1.4 так всё и есть, только проект хранится в xml. Скачай сторонний редактор (их два, один хреновый, а второй тормозной и платный), или напиши свой.
В 2.0 вроде тоже хранится в xml, но формат другой.
>>446597 Из всех 2д движков гамак наверн самый простой в освоении. Главное не лениться и освоить его внутренний скриптовый язык, а не костылить конструктором. Туториалов дохуя.
>>446604 А у них там детально расписано? Можно при помощи этого гайда узнать, как, например, создать систему инвентаря в игре? Извиняюсь, если слишком много лишних вопросов.
Для провеки коллизии с треугольником в точках 769,159 и 783,159 используем функцию point_in_triangle point_in_triangle(769,159,783,145,783,159,769,159) - результат true point_in_triangle(783,159,783,145,783,159,769,159) - результат false
Охуеть не встать. Нахуя вообще такие функции нужны?
Как масштабировать в гейммейкере в целое число раз в полноэкранном режиме. Если разрешение экрана не делится на цело на заданное то нужно, увеличить рабочую область максимально насколько возможно, а вокруг оставить черную рамку.
>>454990 В любой ситуации с пропорциями экрана юзай виды. В твоём случае можно просто создать и увеличивать вид в целое число раз, пока он не будет по ширине или высоте больше самого экрана.
>>455018 Виды не помогают. Если я в оконном режиме задам view_wport и view_hport, то да, гамак установит соответствующие размеры и у окна. Но в полноэкранном режиме он растягивает все на весь экран, а я могу только выбирать, сохранять пропорции или нет.
>>455333 Я ковырялся с этим, ничего не получилось, и я забил. У игры разрешение 640x360, что идеально масштабируется на популярное разрешение 1080p, а для остальных добавлю возможность поиграть в окошке.
Сап, пачаны. Есть вопрос - как лучше всего сделать в гамаке настройки звука в игре? У меня есть на руках готовое решение, но у него есть свои косяки и неприятные стороны так сказать. Может, Анончик знает что получше
>>456049 куда уж конкретнее. Хочу в экран настроек игры кроме локализации, которую уже запилил, ползунки громкости звука, а если быть еще конкретнее, то музыки игровой. В готовой решении могу сделать три ползунка: мастер, музыка, эффекты, и убрать два последних, но мне по сути нужен только второй, а из-за чудесного кода плугина это сделать не получится. Либо мириться и оставлять два ползунка, либо что-то еще придумать
Я примерно так делаю. Скопипастил тебе код из своего проекта. https://pastebin.com/LfBif95f Возможно, не оптимальный - несколько раз перекраивал, но работает и я не трогаю.
>>456125 Способ "в лоб" - юзать audio_sound_gain() для каждого звука с коэффициентом, устанавливаемым в настройках. Че-то типа:
>>456248 спасибо за ответ, но да, тут все-таки нагромождение, сам понимаешь. Буду думать дальше. И так стараюсь во второй игре избежать всех ошибок первой
>>456393 Нет, все-таки рисуется. Это я невнимательный, использовал application_surface_enable() вместо application_surface_draw_enable(). А в твоем коде мне две вещи остались не ясны. 1. Зачем ты в событии Step изменяешь размер окна при переходе в полноэкранный режим? Это же вроде ни на что не влияет уже. 2. Почему рисуешь application_surface в PreDraw? Ведь все остальное отрисовывается после, а мы увидим предыдущий кадр таким образом, правильно?
>>456401 1. Индусский код-анахронизм, оставшийся от предыдущих вариантов реализации. Сам убрал, когда перечитал его в очищенном от кучи закомменченного мусора виде. Уже после отправки на двач, лол. 2. Почему-то в свое время решил, что так надо. Сейчас прочитал вот этот док http://docs.yoyogames.com/source/dadiospice/002_reference/surfaces/the%20application%20surface.html и увидел, что действительно логичнее рисовать application surface в post-draw.
В общем, и для меня это дело оказалось полезным. Пересмотрел свежим взглядом на код, который накостылил по наитию и боялся менять.
>>456404 4.3 была самая ламповая. Жаль, что игоры, сделанные в ней, нормально не идут на современные пеки.
Анон, выручай еще раз, я с тупым вопросом. Решился чего-то вдруг запилить боссфайт в игру и все сделал, кроме одной детали - гг лупит оружием ближнего боя (копья и мечи), и получается так, что при ударе по боссу, он за секунду соприкосновения с оружием выхватывает каждый тик указанный дамаг и умирает сразу. Подскажи, как сделать после получения дамага кулдаун в пару секунд, а то голова не варит уже. Спасибо
>>456732 Реально тупой вопрос. Как у тебя вообще дамагание реализовано?
У меня при мили ударе возникает объект, который существует до тех пор, пока проигрывается ударная анимация. Любой объект семейства enemy, столкнувшийся с этим объектом получает урон, но получает его только 1 раз.
Для этого в create event создаю список targets = ds_list_create();
В евенте "столкновение с объектом enemy" пишу:
if ds_list_find_index(targets,other) = -1 { нанести урон } ds_list_add(targets, other);
и не забываю уничтожить этот список в destroy event ds_list_destroy(targets);
>>456806 Да оно у меня очень просто реализовано. Есть родительский объект врага и родительский объект оружия. Плюс есть объект, который хранит данные о здоровье босса. В итоге я просто подвязал уже имеющийся скрипт и при столкновении этих двух объектов запускается внутренний таймер с миганием спрайта того, кто словил дамаг
>>456401 Таки пришлось вернуть этот код. Почему-то если игра стартует в полноэкранном режиме, то если из него выйти, размер окна становится иногда неадекватно мелким. Почему-то этот баг не проявляет себя, если менять полноэкранный режим через Window_set_fullscreen() - только через alt+enter.
>>439561 (OP) Я правильно понимаю, что gamemaker не дает сохранять файлы в папку с игрой, а только в общую папку <LOCALAPPDATA>/<GameName>? И теоретически, если на компе другая игра с тем же именем будет писать в тот же файл, то она всю сохраненку похерит. Как с этим бороться и нужно ли?
Давно искал тред по вопросам по GM. Ялично юзаю юнити (и там тоже есть 3D, но хочетчя создавать реальные 2D игоры. И так, как создать ландшафт, как создать героя, можно ли в бесплатной версии Game Maker создать норм игору без гличей и багов? Да и вообще можно ли? Никогда не юзал ГМ
Я смотрю вы тут по хардкору с камерой разбираетесь.
Подскажите мне, как правильно переносить камеру из комнаты в комнату? У меня при переходе из комнаты в комнату странным образом растягивается. Пока что я решил, что буду убивать камеру в room_end event и создавать новую камеру в room_start event. Но правильное ли это решение?
что это блять за хуйня? я планировал первые игры на мобилки делать, ибо игры того типа, что я делаю, в стиме доебали вкрай. Ммало того, что на виндовс 39 бачейгодовая, сука, так сука на андроиды 400. Четыре сотни СУКА. Спасибо, продолжу сношаться с юнити, хотя гм:с первая очень нравилась
Нуб в треде. Можно ли в гм2 один объект (например, персонажа) "собирать" из нескольких разных спрайтов (например, два спрайт рук, два спрайта ног, спрайт туловища и спрайт головы, итого 6 отдельных спрайтов)? Или для этого нужно создавать соответствующее количество объектоа (6 в случае приведенного примера), и уже к ним привязывать спрайты? Заодно может подскажете, из вашего опыта или вычитанных где-нибудь мудростей, каким количеством объектов на комнату следует ограничиваться?
Нуб в треде. Можно ли в гм2 один объект (например, персонажа) "собирать" из нескольких разных спрайтов (например, два спрайт рук, два спрайта ног, спрайт туловища и спрайт головы, итого 6 отдельных спрайтов)? Или для этого нужно создавать соответствующее количество объектоа (6 в случае приведенного примера), и уже к ним привязывать спрайты? Заодно может подскажете, из вашего опыта или вычитанных где-нибудь мудростей, каким количеством объектов на комнату следует ограничиваться?
>>457953 Можно собирать из спрайтов посредством эвента draw, но это тот еще гемор. Лучше писать контроллер, который бы собирал персонажа из объектов, проще манажить будет.
Аноны, там сейчас в стиме распродажа, поэтому решил купить дэсктоп версию. Что означает галочка In-App Purchases? Меня не наебут, заставив платить за что-либо ещё?
>>457512 Неебу как относительно Phaser, но производительность неплохая. Правда пришлось править сгенеренный html код ручками т.к. какого-то хуя канвас сглаживался по-умолчанию что пиксельной игре не нужно.
>>458522 Так-то ГМЛ норм на самом деле, хотя и не хватает нормального ООП конечно. Частично это компенсируется системой эвентов. Но приходится писать скрипты вне объектов, чтобы имитировать методы. Итого жить можно, но можно и лучше.
Помогите пожалуйста с одной проблемой. Делаю простенький платформер и пытаюсь сделать выстрелы вроде все нормально, но сука я не знаю как сделать так чтобы когда персонаж смотрит влево стреляет влево когда смотрю вправо стреляет вправо. Вот код: x = obj_hero.x+11; y = obj_hero.y+6; x2=0; if (obj_hero.sprite_index == spr_hero_idle_right or spr_hero_right) { x2 = x+1; } else if (obj_hero.sprite_index == spr_hero_idle_left or spr_hero_left) { x2 = x-1; }
image_angle = point_direction(x,y,x2,y); firingdelay = firingdelay - 1; if (keyboard_check(vk_space)) and (firingdelay < 0) { firingdelay = 5; with (instance_create_layer(x,y,"Bullets",obj_bullet)) { speed = 10; direction = other.image_angle; image_angle = direction;
>>457559 Первый That Level Again на libgdx сделан. Что еще расскажешь ыксперд? >>457498 На первый такая же цена. Мне он правда по акции достался за 25$ весь комплект. Проф-версия, андроид и все-все-все, кроме iOS. Правда без интеграции со стимом, но через год дали и её. Надо просто подождать распродажи.
>>460243 как же вы заебали уже. Сами бы издались и профит был в несколько раз выше гарантированно. Хотя, если ты ленивое хуйло и тебе настолько похуй,что ты слил игру дагам, то может быть и нет.
>>460251 То-то же. По поводу заработка, если ты вдруг не веришь - загугли nikita ghost rus. Есть такой говнодел в стиме, который клепает говно со скоростью света и издается сам. Вряд ли бы он стал делать то, что не окупается рака яиц ему
Анончики, нужна помощь. Когда-то давно установил GM 1.4, забросил. Позже пытался работать на Construct, но ограничения разочаровали. Короче, снова взялся за GM, даже успел запилить игрульку. И тут встал вопрос, а откуда я её качал? Может ли быть 1.4 у меня бесплатным и лицензионным? И смогу ли я выложить в плэй маркет эту игру?
Создаю игру в которой главный герой бегает за мышкой. Делаю через ДнД и указываю направление движения и скорость, но когда гг доходит до мышки дико дергается. Как сделать чтобы он под мышкой останавливался или есть команда которая указывает путь а не направление?
>>460641 Говнецо не говнецо, а слушать будешь стоя а ЕМНИП больше 5кк скачиваний. Так что рассуждения о качестве продукта, имеющего такую оценку аудитории бессмысленно. К тому же да, 2 и 3 были сделаны на Unity и, как следствие, оптимизированы гораздо хуже. Багов в них полно, в то время как в 1 части их не было вообще. Тут он скорее перескочил из-за удобства и скорости разработки, чем из-за чего-то еще.
>>460971 Дык выставь условие, чтоб он за 2-3 пикселя до мыши останавливался. Координаты того и того у тебя есть, если векторную математику не прогуливал на первом курсе, то проблем не будет, а если прогуливал, то загугли. Просто весь скрипт движения подпихни под условие.
>>460977 Во-первых забудь про DnD. Сделать что-то на этом говне на порядок сложнее, чем через нормальный код.
Во-вторых координата объекта выставляется в спрайте этого объекта. По умолчанию x,y объекта это x,y верхнего левого угла спрайта. Если ты хочешь координаты центра этого спрайта, тогда пиши: x_center = object.x + object.sprite_width/2; y_center = object.y + object.sprite_height/2;
Или, если у тебя пиксель-пёрфект движение (что разумней): x_center = object.x + ceil(object.sprite_width/2); y_center = object.y + ceil(object.sprite_height/2);
>>460980 >>460982 Рили не понял нах эта лишняя дрочь, когда в настройках спрайта есть центрирование. >>460977 Центрируешь спрайт. Центром будет object_name.x и object_name.y
Как в ГМС2 сделать так, чтобы при переключении в полноэкранный не картинка растягивалась, а поле зрения камеры увеличивалось.
Ну и соответственно при ресайзе окна было то же самое - растягиваешь окно, а у тебя не изображение растягивалось, а просто больший кусок игрового поля показывался.
Аноны, помогите со стрельбой в гмс2. Я столкнулся с проблемой, что пули не летят, когда в комнате включена физика, но без нее ничего не двигается. Как быть?
>>461439 так это самое. Если мне не изменяет память, в первом гамаке точно так же. Либо ты делаешь все на встроенной физике и пилишь все под нее, либо пишешь свою физику, либо пользуешься чужой
>>461449 так ты не пости, а просто поиском пользуйся, там да, как на дваче. В идеале как можешь делать - гугли на маркете гамака ассет под нужный тебе жанр игры (платформер, шмап и тд) , качаешь и разбираешь его по косточкам, там и найдешь самописные решения. Либо смотри туториалы пиксельпопа, heartbeast'a и шона сполдинга
>>461441 ты юзаешь movedir_x и movedir_y? если да, то изменению параметров x и y на физоне делается не через x += и y+=, а через phy_position_x += и phy_position_y +=, параметры в твоем случае равнозначные
>>461496 если пули физический объект, то без включенной физики в комнате они работать как надо НЕ будут если не физический, то ты прописываешь координаты x += и y+=
>>461496 Для платформера вообще не нужна физика, начнём с этого. Если что-то перемещается, это не значит, что надо использовать физ. движок.
phy_position задается в коде один раз, а перемещение осуществляется приложением силы к объекту. Прочитай внимательно ссылку на статью, которую тебе дали.
Правильное решение: убери физику с персонажа и двигай его так же, как и пулю - изменением координат.
>>461500 хуевый выбор, чую, если сдвинешь курсор, то пули тоже изменят направление лучше высчитывай направление один раз исходя, например, из угла отрисовку спрайта оружия, если оно поворачивается, и используй lengthdir >>461502 не будет, движение просчитывается каждый кадр, никакой разницы между физикой и её отсутствием тут нет
Аноны, кто сейчас делает игры могу предложить свою помощь. Сам овощ нихуя рифма, ничего не могу сам сделать за не имением идей. Если у вас есть идея готов помочь реализовать. Связаться можно по почте lolqwert569@gmail.com
>>461541 Если согласен помогать 3м школьникам с охуительными амбициями и хуевыми знания гейм мейкера, за нихуя, ради призрачного профита ввиде стартапа на патреоне и последующей выгрузки игры в стим, то велком /Чел, разосравшийся в этом треде с физикой
>>461501 Блять у меня теперь вообще гг распидарасило. Он ебашит без остановки во все стороны и ему абсолютно поебать на все преграды и он пролетает сквозь все объекты
В написании своей физики, кстати, нет ничего сложного. Там буквально десяток строчек и все будет работать заебись. Главное пару принципов использовать и будет красота.
Всё не даёт покоя этот калечный редактор изображений. Как работать с ним? У него же ограниченное число пикселей на изображение, как я понял. Есть способ работать через другую программу, чтобы делать анимацию по кадрам? Интересует именно функция onion layers.
>>463424 Да я уже и сам разобрался. Ещё такой момент: с чем может быть связанно отталкивание игрока от стенки, если напирать на неё? Если медленно пододвинуть объект к стене и затем двинуть его, игрока вообще вытолкнет за стену.
Делаю платформер, на данный момент коллизии сделаны с помощью объекта стены. Хочу переделать коллизию на тайлы. У меня есть движущиеся платформы, которые не представляю, как сделать тайлами. В связи с этим два вопроса. 1) Будет ли прирост производительности, если статические стены (коих 90%) заменить тайлами, а движущиеся оставить объектами? Тогда, получается, мне нужно будет в коде проверять коллизию дважды - на тайлах и на объектах. Но ведь объектов-стен теперь будет на порядок меньше. Стоит ли пытаться? 2) Можно ли сделать движущиеся платформы тайлами?
>>472725 Вон в том же туториале, который ты смотришь, написано, что лучше шейдер использовать. // a simple shader would be better/faster than setting the fog for each sprite drawn. gpu_set_fog(true,i.silhouette_colour,1.0,1.0); draw_sprite_ext( i.sprite_index, i.image_index, i.x,i.y, 1,1,0,i.silhouette_colour,1);
>>472727 Знаешь, я сейчас открыл их туториал и тоже прихуел. Но это не значит, что не надо изучать как там что сделано - у них есть решения, охуенно экономящие фпс. Я этот гайд ковырял когда освещением занимался. В конце концов сделал всё на порядок проще, но их приёмы с растягиваием и блуром сурфейса я запомнил.
Можно гораздо проще всё сделать. Держи охуенный гайд по шейдерам ля начинающих гамакеров: http://xorshaders.weebly.com/
Ну и как спрайт кусками рисовать - сам разберёшься.
>>472795 Я решил сделать импорт старых сохранений, все по порядку разобрал, но в некоторых случаях ds_list_find_value получает не те значени, какие надо
Я догадываюсь, что поступаю как мудак, если на самом первом этапе повторения уроков лезу с вопросами, но с другой стороны это сообщение можно просто проигнорировать, если что, а может кому-то как раз нечем себя занять и он мне поможет.
Смотрю урок Make an RPG, там проблему бесконечного проигрывания анимации после начала движения решают через
if (!key_right and !key_left) { image speed = 0 }
Я же хочу включать idle анимацию. Понятно, что надо просто прописать sprite_index = spr_player_idle; но у мня их две штуки, чтобы игрок оставался в левой idle анимации после того, как шел влево и в провой idle анимации после того, как шел вправо. Как это сделать?
>>473091 Нет, не через скеил. У меня просто прописано
if (key_right) { sprite_index = spr_player_run_right; }
if (key_left) { sprite_index = spr_player_run_left; }
и соответственно загружено две разные анимации.
>>473099 >>473100 Я Game Maker Studio только этим утром установил. И не совсем понимаю твой код.
Алсо сейчас досмотрел этот урок https://youtu.be/72SWn4xr-0Q и вопрос по анимациям остался, т.к. он там удары не стал анимировать. С анимацией ходьбы/бега все понятно: нажимаешь вправо - проигрывается анимация вправо, нажимаешь влево - проигрывается анимация влево, а вот с ударами как? Как сделать, чтобы при нажатии одной и той же кнопки удара игра понимала, какую именно из анимаций проигрывать? Короче мне надо еще уроков по гейм мейкеру, в этой серии он многих вещей не касается.
В гамаке есть keyword- sprite_index - указывает на спрайт объекта. При помощи него ты можешь менять спрайт объекта когда захочешь, а не только при создании объекта.
Посоветуйте туториалы по созданию игры типа Lone Survivor, т.е. перемещение по одной оси, стрельба, взаимодействие с объектами, инвентарь, диалоги и т.д. В сети достаточно подробных туториалов для нубов, по которым даже человек абсолютно без опыта программирования может повторить шаг за шагом процесс создания игры в гамаке, но те что я видел, обычно для платформеров, изометрических рпг или топ-даун шутеров.
Для того, чтобы не использовать b в каком-то другом месте. Во-вторых, если вдруг ему нужно будет обратиться к пуле b в каком-то другом месте,он сможет сделать проверку if instance_exists(b) { блаблабла }
Если b задано не будет - получится критическая ошибка. Если же b будет иметь значение -1, то это соответствует ключевому слову noone в гамаке. Проверка будет пройдена.
Вообще, когда я создаю всякие пули, я задаю временную переменную.
var b = instance_create... b.spd = ... b.dirx = ... b.dmg = ...
Но если бы мне понадобилось, например, управлять пулей используя для управления объект игрока, я бы в криэйт ивенте написал b = noone; И ты лучше пиши не b = -1; а b = noone или b = false В смысле не используй цифру -1 там, где должно быть ключевое слово. Не потому, что работать не будет, а потому что в последствии, вернувшись к своему коду через пару месяцев, тебе будет легче в нём разобраться.
Ты не понял что он делает. Сначала у него была b = -1 Потом он написал b = instance_create.. и b поменяла значение. Фунция instance_create возвращает id созданного объекта. Теперь b содержит ссылку на созданный им инстанс. (Ключевое слово гамака id)
Поэтому, когда ты дальше пишешь
b.direction = 0
Ты изменяешь параметр direction этого объекта на 0.
И тут важно, обрати внимание и запомни: Когда создаётся объект при помощи instance_create сразу же начинает выполняться его криэейт ивент. СРАЗУ ЖЕ.
Поэтому, когда ты следующей строкой пишешь b.direction = 0 помни, что криэей ивент УЖЕ произошёл. Ну и, соответственно, ты не можешь использовать в криэйт ивенте этого инстанcа данные от создателя. Если тебе нужно вычислить для пули скорость в зависимоти от направления, либо вычисляй её после instance_create и предавай объекту, либо у объекта делай "дополнительный приэйт ивент".
Но это уже другая история, этим ты будешь заниматься потом. Пока кури туториалы.
Зачем так делать? Да затем, что когда ты будешь создавать много врагов, ты сможешь использовать для них одни и те же скрипты, меняя лишь значение sprite_walk_right в create event. Ты просто child objects будешь создавать, у которых только криэйты разные. Удобно же!
b = room_index
И теперь b это ссылка на твою комнату. И так далее.
>>473571 Спасибо. Я едва ли что-то из этого понял вчера когда прочитал, но сейчас немного разобрался, когда делал удар врага по игроку. Переменную можно привязать к объекту и это удобно тем, что можно создавать этот объект с уже заданными параметрами в коде его создателя. var enhit = 0; //enemy attack if (alarm[0] <= 0) { enhit = instance_create (x,y+30,obj_enemy_hit); enhit.image_xscale = image_xscale; alarm[0] = 60; } можно придать заданное направление (например для удара), скорость (для пули) и т.д.
Во-первых их всего 12. А если у твоего игрока куча разных механик? Тебе не хватит.
Во-вторых порядок исполнения кода. Ты знаешь когда они выполняются? В тот самый момент, когда оттикал таймер. А когда тикает этот таймер? В начале шага, в конце, в самом шаге? А в какой последовательности у разных объектов он тикает? А если твой игрок неуязвим, а на тебе ДоТ, который сделан на аларме, а аларм тикает у врага? НАХУЙ! Это самое главное.
В-третьих без алармов код проще и понятней. То, что у тебя написано превращается в:
В криэйт ивент пишеш: enemy_hit_timer = 0; enemy_hit_time = 60
И не думаешь через месяц "а за что у меня отвечает alarm[8]?" и не вспоминаешь "а я этот же аларм использовал для кулдауна регенерации здоровья, надо поменять." У тебя всё в криэйт ивенте хранится.
>>473814 За совет спасибо. Про timer я вообще не знал, про алармы узнал из туториалов в связи с этим и использовал. В принципе конкретно в этом случае с врагом у меня это временная мера, пока враг представляет собой красный прямоугольник который бьет меня оранжевым прямоугольников. В будущем планирую привязать obj_enemy_hit к кадру анимации, в которой враг будет бить, так что этот аларм можно будет спокойно вырезать.
Но на всякий пожарный уточню, алармов всего 12 ведь не на всю игру, а на конкретный объект? То-есть alarm[0] прописанный для obj_player не имеет никакого отношения к alarm[0] прописанного для obj_enemy, гейммейкер путать их не будет и они прекрасно живут своей жизнью независимо друг от друга?
>о-есть alarm[0] прописанный для obj_player не имеет никакого отношения к alarm[0] прописанного для obj_enemy,
И даже alarm на одном obj_enemy не имеет отношения к alarm На другом obj_enemy. Это просто встроенный неудобный таймер гейммейкера. лучше таймеры делать самостоятельно.
Хм... создал сейчас вторую комнату и перемещение между ними через дверь, все работает, но на душе как-то неспокойно. Я решил чтобы не засирать лишними эвентами obj_player создать коллижн ивен внутри самой двери if (instance_exists(obj_player)) and (key_use) { room_goto(rm_f1_garage); obj_player.x = 180; } Только после того, как все опробовал и убедился, что плеер перемещается и хп у него остается ровно тоже количество что и было в предыдущей комнате, задумался а почему оно вообще работает. Ведь этот коллижн ивент запускается из самой двери, почему room_goto перемещает именно плеера в другую комнату, а например не саму дверь? Такой код вообще нормальный или я потом с ним наебусь?
>>474263 Потому что это не объект игрок перемещается куда-то, а исчезает одна комната и на её месте появляется другая.
Если на каком-то объекте стоит галочка persistent, этот объект остаётся на своём месте. Остальные обхекты исполняю свой room_end event и исчезают. Затем появляются объекты новой комнаты.
Строкой obj_player.x = 180; ты меняешь ккординату x игрока. Камера перемещается за ним. Она у тебя сейчас автоматическая, от гейммейкера, и ты её должным образом не контролируешь. Но и комната у тебя, скорее всего, в один экран, поэтому странного поведения камеры ты не видишь.
>>474287 >Ведь этот коллижн ивент запускается из самой двери
Читай мануал: Note that calling this function does not instantly change rooms, and the room will not change until the end of the current game frame (meaning that any code after this function will still be run, as will some events). This function will also trigger the Room End event.
Команда room_goto поднимает флаг перехода в другую комнату. Но переход этот происходит только после окончания текущего фрейма. Также эта команда выполняет room_end event всех объектов.
Порядок выполнения кода такой: В step event у тебя где-то срабатывает команда room_goto. После этой команды всё продолжается как обычно. Выполняются step event всех объектов, потом их draw event на самом деле ивентов больше. но сейчас это не важно
После исполнения draw event начинается, собственно, переход в другую комнату.
Сначала выполняется room_end event комнаты вот с ивентами комнаты могу ошибаться Затем для каждого объекта исполняется room_end event, после чего объект, если он не persistent, уничтожается.
Потом выполняется room_start event новой комнаты. Затем create event всех объектов в новой комнате, затем room_start event всеъ объектов в новой комнате, затем create event новой комнаты, затем room_start event новой комнаты.
>>474287 >Потому что это не объект игрок перемещается куда-то, а исчезает одна комната и на её месте появляется другая. >Если на каком-то объекте стоит галочка persistent, этот Теперь все понятно, на obj_player у меня как раз стоит persistent. Makes total sence. >>474289 Из этого поста пока мало что понял, но не буду рашить. У меня еще много базовых вещей впереди на освоение. Вернусь к этому чуть позже.
Аноны, помогите сделать движение рук. Нужно, чтобы пока нажата ЛКМ, при передвижении курсора справа от игрока его руки целились в сторону курсора, а когда курсор переходит в левую часть экрана, спрайт менялся на противоположный
>>476885 И еще при нажатии спрайт выворачивается, но я юзал похожую функцию для поворотов. Если нажать в левую часть, то после нажатия кнопок вправо и влево используется противоположное направление
Основной объект рисуй как draw_self(); Дополнительный рисуй как draw_sprite_ext(....) - и вводи для него отдельные переменные sprite_hands_sprite_index = sprite_hands_image_number = sprite_hands_rotation = sprite_hands_image_xscale = и так далее. В мануале всё написано.
>>477115 Разжёвывать никто тебе не будет. Ты задаёшь ЭЛЕМЕНТАРНЫЕ вопросы, ответ на них есть в мануале. Тебе показали способ как это сделать,и подсказали, про что читать. Иди и читай мануал. пункт draw_sprite_ext
>>480204 Хотел побыть хорошим полицейским и по-доброму ответить на твой вопрос. Но просто не могу.
Ты написал хамский, потребительский пост, который даже не содержит в себе вопроса.
Попробуй задать вопрос ещё раз, при этом опиши то, что ты хочешь сделать, что именно у тебя не получается, опиши свои варианты подхода к проблеме и почему они не сработали.
>>480248 Не знаю ни одного ЯП, в гамак вкатился из-за рекомендаций, мол, очень хорош для новичков. >>480276 Меня интересует система битв в целом: инициация боя, организация ходов, использование скиллов и предметов из инвентаря, накладывание эффектов, вот это вот всё. Не знаю ничего.
>>480331 >И ты ожидаешь, что я тебе тут книгу напишу про то, как это делать, или дам ссылку на гайд "как сделать заебись"? Я какбэ в первом посте писал, что мне нужны гайды по тбрпг, блять. Почему харкачеры так привыкли искажать всё. >При том, что ты даже сам не можешь написать, что ты хочешь сделать. Я бы описал концепт, если бы беседовал с кем-нибудь индивидуально, но меня в первую очередь интересуют базовые механики, о которых я уже говорил. >Тогда запускай самые первые туториалы по гамаку от Спалдинга и делай астероиды. Зачем мне аркадные механики в турн бэйсед рпг, объяснишь мне? Все эти коллизии и прочую хуйню я и так освоил, меня интересуют углублённые знания.
>Зачем мне аркадные механики в турн бэйсед рпг, объяснишь мне? Все эти коллизии и прочую хуйню я и так освоил, меня интересуют углублённые знания.
Видимо не освоил, иначе знал бы, как работать с объектами.
>Я какбэ в первом посте писал, что мне нужны гайды по тбрпг, блять. Почему харкачеры так привыкли искажать всё.
Может не харкачеры искажают, а у тебя не получается вопрос задать? Попробуй поставить себя на место собеседника. Допустим тебя спрашивают: "Посоветуйте гайды по созданию мобильных приложений." или "Посоветуйте гайды по созданию головоломок."
Что ты ответишь?
А представь себе, если тебя спросят: "как мне сделать так, чтобы мой враг в игре выполнял какое-то действие только тогда, когда я нажимаю на кнопку "конец хода"?"
Тогда тебе ответят:
Воткни в начало степ ивента объекта obj_enemy такую конструкцию:
if !turn_is_over {turn_is_over = false;} else {exit;} Дальше пиши код как обычно.
Потом создай кнопку, после нажатия на которую она будет выполнять следующий код with obj_enemy {turn_is_over=true}
Теперь после нажатия на эту кнопку у всех твоих врагов флаг turn_is_over станет true. Они выполнят step event один раз и снова установят у себя флаг turn_is_over = false.
>Я бы описал концепт, если бы беседовал с кем-нибудь индивидуально Ты /gd с /b попутал. Тут всего 15 человек сидит. В общей сложности.
Я всё ещё добрый полицейский. Но это в последний раз.
>>480344 Ну, в таком случае мне нужен анон, с которым я смогу работать индивидуально. Тогда я уже смогу задавать ему конкретные вопросы, но один хуй никто не захочет этим заниматься.
Подскажите как реализовать стрельбу в платформере. Меня интересует даже не столь техническая, как практическая сторона. Вот у меня есть персонаж, и он может стрелять во все стороны. Как лучше сделать повороты рук, чтобы это не выглядело будто у гг суставы вращаются во все стороны? Может есть примеры там в каких-то играх или видео какие-нибудь
>>480819 Да хуле непонятно-то? Мне надо чтобы при стрельбе можно было вертеть руками во все стороны и это не выглядело по-уебански. Я пытался сделать это отдельным спрайтом рук и получилась хуйня. Вот я и спрашиваю другие способы сделать это
>>480895 У тебя 2d вид сбоку? Или 3d? Или изометрия? Ты не способен видео залить на двач? Иди учись.
Если 2d вид сбоку - рисуй.
Ты из автомата стреляешь или из пистолета?
Где ты видел, чтобы кто-то за спину себе стрелял? Как ты вообще себе это представляешь?
Посмотри как в ghost 1.0 сделано. Она наклоняется вперёд и назад туловищем, сгибает руки, отставляет назад ногу, опускает и поднимает голову и стреляет только в передней полусфере. Если надо стрелять назад - разворачивается. Она векторная, состоит из кусков, но каждый кадр стрельбы отрисован. Каждые 10 градусов поза чуть-чуть меняется, а в пределах 10 градусов ходят только руки.
Если ты хочешь тупо вращать неанимированный спрайт рук - у тебя и получится тупо. Чтобы было хорошо нужно много работать.
>>480897 >Каждые 10 градусов поза чуть-чуть меняется Ну и это будет выглядеть дёргано и будет ощущение, что пуля летит не из дула >Где ты видел, чтобы кто-то за спину себе стрелял? Как ты вообще себе это представляешь? Ну так за спиной у меня спрайт меняется на противоположный
Кто-нибудь знает, как в GMS2 под windows сохранить файлы где-то кроме "User\AppData\Local\project_name"? Разумеется, без вызова диалога. Нашёл для обхода этого "сэндбокса" несколько расширений от пользователей, но они все на гейммейкер версии 1.4. Буду очень признателен, если кто подскажет что-нибудь.
Анон, почему, когда я иду в вертикальную коллизию и пытаюсь подвигать вправо-влево, я не двигаюсь до тех пор, пока не перестану идти в стену, но если я делаю аналогично с вертикальной коллизией, то такого не происходит. Что за хуйня?
>>487995 >Ты же сам пишешь, что у тебя движение по х возможно только если нет движения по у. Бля, точно. Спасибо, не заметил. >Вообще это пиздец - то что ты написал. Надеюсь ты первый день просто как кодить учишься. Учусь по гайдам.
############################################################################################ FATAL ERROR in action number 1 of Step Eventunit1 for object obj_unit_effector:
Variable <unknown_object>.<unknown variable>(100007, -2147483648) not set before reading it. at gml_Object_obj_unit_effector_Collision_2de17de7_8960_48b4_917c_ea87cd83c070 (line 5) - if (creator.allie_status != other.allie_status) ############################################################################################ -------------------------------------------------------------------------------------------- stack frame is gml_Object_obj_unit_effector_Collision_2de17de7_8960_48b4_917c_ea87cd83c070 (line 5)
Бьюсь уже кучу времени с ней. Соль в том, что описываю юнит для стратежки, у юнита раз в кол-во кадров (число задается параметром кулдаун) при подходе на расстояние для атаки создается инстанс (обджект эффектор), который считает колижн с недружественным объектом и отнимает у него хп. Собственно при попытке скомпайлить вылезает эта сранина. Скажите, какие куски кода нужно скинуть, чтобы разобраться, ток помогите.
>>488012 Скорее всего ты не проверяешь существуют ли инстансы перед тем как ими манипулировать. Или не назначаешь или неправильно назначаешь переменную creator. Или у другого объекта просто нет такой переменной как allie status. Или ты случайно назначил юнит родителем эффектора или еще какие-нибудь проблемы с наследованием. В общем показывай весь код и общий вид объекта эффектора и заодно скрипт который его создает.
>>488020 Ну вот смотри, насколько я вижу создаешь ты эффектор однозначно, но создателя ему назначаешь ситуативно, а потом переменную хозяина спрашиваешь однозначно, при этом создаешь эффектор там где гарантированно срабатывает Collision. Creator в таком случае получается инициализированной, но пустой переменной. Перенеси создание эффектора под скобки боевого статуса и посмотри станет ли лучше.
>>488022 В этот раз игра хотя бы открылась, хоть и не надолго.
(Алсо, можешь поподробнее объяснить, почему получается, что я ситуативно назначаю, но однозначно спрашиваю? Или какой-нибудь урок/статью может посоветуешь, чтобы разобраться)
>>488024 >можешь поподробнее объяснить Что там объяснять, получается так потому что ты не назначаешь создателя сразу же при создании (и не проверяешь назначен ли он перед тем как запросить статус, но это в данном случае было бы необязательно). То есть effector.creator=id дожно быть на следующей строчке после instance_create(effector), а не по разную сторону фигурных скобок двух-трех разных if else, у которых вся суть в том что код срабатывает только в зависмости от ситуации.
Да и вообще делать это в step не самая лучшая идея, ты создаешь допустим 60 объектов в секунду, а нужен из них только один, только когда срабатывает alarm, соотвественно лучше и перенести в аларм.
Анон, у меня проблема. Делаю анимации, которые разложены в чарлисте, с которого берутся необходимые куски. Есть объект игрока, который имеет спрайт 200x200 в виде белого квадрата, но с коллизией и центровкой персонажа. В коде:
obj_player
create
x_frame = 0; y_frame = 0;
draw
var anim_length = 10; var frame_size = 200; var anim_speed = 3;
>>488100 >В чём подвох? >NOTE: When drawing with this function, the sprite x offset and y offset are ignored and the sprite part will be drawn with the top left corner at the specified x / y position in the room. Отнимай соответствующие оффсеты из координатов x и y в draw_sprite_part.
>>488591 > Где-то читал, что для gms2 будет поддержка Нинтендо Сыча. Но ведь Nintendo не дают левым разработчикам выкладываться? Или как?
Как и со всеми соснулями - пишешь заявление с приложенным диздоком нинтенде, что ты такой хороший и нинтендо обязательно должна разрешить разрабатывать тебе твою игру про корованы. Далее если соне одобрит - подписываешь NDA и покупаешь девкит. Уведомляешь нинтенду что будешь писать на свитч.
Теперь ты илита и грезишь о феррари как у кармака, с единственным обязательством - никому не говорить о бойцовском клубе не разглашать никаких сведений о внтренней кухне свитча без разрешения нинтенды - иначе сгуха и суд.
После чего с полученным разрешением идешь на форум юнити в закрытый от простого быдла раздел где по ссылке качаешь закрытые компоненты юньки для свитча (нужна версия про, если что).
Ну и да, в данном варианте, не забывай что нинтенда по-факту становится твоим издателем и ты будешь обязан выполнять все её пожелания, зарубать по её прихоти свои безумные идеи, реализовывать одно охуительнее другого пожелания нинтенды оптимизировать код и.т.д.
Кстати, парни, в GML можно как-то объявлять свои функции? Хочу, например апдейт состояния персонажа вынести в отдельный блок и вызывать его при определённых обстоятельствах (внутри step ивента, но не каждый раз)
>>488786 >А как работает передача туда значений? Слегка через жопу. При вызове скрипта стандартно -- пишешь аргументы в скобках через запятую. А в самом скрипте будет что-то вроде var xyz=argument0 var qwe=argument1 и так далее. >Нужно ли это вообще? Естественно, и возвращать из них значения тоже нужно.
>>488834 всё, на самом деле я и сам разобрался. Не привык я к тому, что в документации действительно ВСЁ написано. Я такое наверное только к РенПаю видел, и то там пользовательские вики, а не официалка.
Но всё равно большое спасибо. Я рад что у вас тут дружелюбное коммьюнити.
Привет, парни. Я решил попробовать сделать клавиатурный тренажер, как самое простое, что я смог придумать.
Идея была проста: два массива, в одном символы допустимые для данной сложности, во втором символы нагенерированные для уровня. После генерации спавнятся блоки на которые наносятся эти символы по порядку.
Но я э... Видимо, где-то что-то проебал по фактике и мне пришлось перезагружать компьютер, потому что он чуть не загорелся, так и не запустив окошко. Но он так и не выдал ошибки. Я боюсь открывать этот проект у себя :( чё делать?
Анон, объясни, как ебануть простейший спрайт с анимацией. Есть меню. В Draw GUI пытался прикрепить анимированный фон, но нихуя не понимаю, что использовать: draw_sprite_ext не работает, вроде. Можешь помочь?
>>492952 братан, причин множество. кривой 3д-режим, который не справляется с переходами из него, depth объекта выше задника, прочее говно с view, alpha в 0, крч тонны их. я не смогу угадать. это как если бы ты спросил "почему у меня моделька в юнети не импортируется".
>>492955 Альфа на единичке. Всё что могу сказать. Если в subimg выставить -1, то спрайт тупо начнёт быстро пролистываться, хотя у меня скорость анимации на единице. Можешь хотя бы объяснить, как это проворачивать с нуля?
>>492956 >Можешь хотя бы объяснить, как это проворачивать с нуля? берешь и без задней мысли отрисовываешь. draw_sprite(x,y, sprite_index, image_index); и всё. в том то и проблема что инфы от тебя мало вата
>>492957 Хорошо, распишу подробнее. Нужно, чтобы фон растягивался по всей комнате. То есть наверное нужно брать начало в 0,0, плюс высоту-ширину обоев, плюс скейлить. Но как ебануть нормальную анимацию с нужной скоростью?
>>492927 Ты словил бесконечный цикл. Запускай игру в режиме дебага, можешь даже без брекпоинтов. Когда начнёт адски тормозить дави, переключайся в окно дебагера и дави на паузу.
Вуаля. Далее жамкай f9 пока не поймёшь, где же ошибка.
>>439561 (OP) Здарова, игроделы. Хуй знает, может кто сталкивался с проблемой. Когда объект движется по диагонали, то камера начинает дергаться. В чем проблема то может быть.
Анон, где можно посмотреть различные команды для дебаффа? Вот, например, мне нужно, чтобы у меня выводились офсеты объектов с их координатами по y. Как это сделать?
>>493292 Подкрути в настройках камеры границы с 200 до 198 и посмотри стало ли лучше. Подгони там же аспект порта под аспект камеры, пусть будет 800х800 например.
>>439561 (OP) Алсо вопрос. Запарно ли сделать так, чтобы спрайт врага изменялся в зависимости от положения? Например у меня 8 сторон движения и соответственно 8 спрайтов. Какая вообще должны быть логика изменения спрайтов? Мол if direction = значение градуса { sprite_index = spr_move_top; } или что то вроде такого.
>>494796 Не работает нихуя. У меня есть хуйня, при помощи которой можно выкидывать предметы из инвентаря. Выкидываются они по окружности, как на рисунке, но в красные области по бокам выкидывать нельзя, потому что предмет там застревает с нихуя и его нельзя подобрать. Следовательно мне нужно исключить области от 330 до 30 и от 150 до 210 градусов. Если я пишу var itemdir; if(irandom(30)){ itemdir = irandom(150); } else { itemdir = irandom_range(210, 330); }
>>494970 Ёбаный высер Абу не может нормально показывать табы. Вот лучше: var itemdir; if(irandom(30)){ itemdir = irandom(150); } else { itemdir = irandom_range(210, 330); }
Если у меня платформер с большим количеством разных состояний персонажа, которые перекрывают базовые механики (например, скиллы, которые блокируют любые другие кнопки во время своего исполнения, кроме определенных "окон", когда можно нажать что-то определенное и зависящее от скилла), то наверное это лучше делать не в одном степе, а каждое состояние перенести на свой скрипт, активирующийся по выполнению определенных условий во время степа, я прав? Не будет ли это нагрузочно для системы (постоянные вызовы скриптов по идее должны отнимать ресурсов)? Просто я пытаюсь как-то весь код степа разбить на состояния и понимаю, что я там очень быстро запутаюсь, отдельные скрипты очень сильно помогут в этом плане.
>>495709 Да я все время блять не о том парюсь из-за своего ебаного перфекцеонизма. Тем более я еще даже на стадии прототипирования, где по идее велосипедить и костылить вполне норма, но нет блять, мне нужно сразу все в финальной архитектуре и с минимальной нагрузкой на железо. Но в принципе так, как ты скинул, я себе все это дело и представлял. Мде, работа прогером явно не для меня.
>>495711 Вот нашел чем удивить. Когда я только начинал, точно так же пытался всё сделать максимально эффективно. Например по мтнимуму вводил новые переменные, они же память занимают! Лучше я одну и ту же переменную буду использовать как таймер для всех фаз и всех состояний. Но это же полная хуйня.
Сейчас уже во-первых меньше парюсь, а во-вторых на автомате многие действия делаю. Типо того, чтобы в for цикле не вычислять одно и то же каждый раз, шаблонно инициализирую скрипты, сравниваю друг с другом квадраты расстояний и т Д.
И всё равно, когда требуется написать что-то не требующее оптимизаций (инвентарь например, или эффект в паузе) просто кайфую. Писать получается в три раза быстрее, а код, по сути, такой же точно выходит.
Аноны, у меня в Степе при определенном действии вызывается определенный скрипт. Скрипт должен двигать объект с определенным таймингом, по сути мелкими дискретными шагами. Но ведь вызывается он один раз. Как заставить скрипт выполняться несколько раз? Или надо переписывать логику, чтобы он нужное количество раз просто из Степа вызывался?
>>496535 >внутри самого скрипта а почему бы и нет? >To execute a script from an object or a time line you can use the Execute Script action , but you can also call it in a code box using the actual script name as if it were a function or even by using the GML function script_execute. script_execute(scr, arg0, arg1, arg2, ...);
>>496543 Да, я уже проверил, правда оказалось, что это не совсем то, что нужно, потому что без степа теперь скрипт не будет учитывать столкновения, которые могут возникнуть во время движения в скрипте. Так что буду все же вызывать скрипт степом несколько раз.
>>457512 >как Gamemaker экспортирует в html5 Очень хорошо, он из GML генерирует аналогичные функции на js и потом обфусцирует их. Правда, некоторые функции иногда могут не работать.
>>457512 Он это делает весьма непредсказуемо. В моей игре он например отрубил партиклы к хуям. Плюс почему-то добавился статтеринг и хуй ты пойми откуда. Было играбельно, но как-то вот не радовало. Переписал на фазере и стало заебись.
>>439561 (OP) Анон, выручай. Проснулся из глубокого сна, лол. В 2011 баловался с GM 8.0., в 2012 купил в стиме game maker stuido за даллары, но так нихуя и не сделал, но потом узнал, что моя лицензия походу стала бесплатной. Что там сейчас в 1.4? Можно ли на ней делать и релизить бесплатные игры в том же стиме? Можно ли монетизировать рекламой внутри игры?(да, влажные фантазии, просто не смог найти адекватной лицензии). В том же юнити все просто, получаешь больше 100к $ - покупай лицензию. Или для все этого нужно покупать анальную 2.0 студию?
>>497536 Потому что draw_self изначально есть у всех объектов, но создав даже пустой скрипт в событии draw, оно продает и тебе необходимо указать его явно, не сделав этого и запустив игру у тебя просто не будет рисоваться тот спрайт который ты указал в настройках объекта
Эт чё такое? Я всё понимаю, я абсолютно нормально отношусь к тому, что из бесплатной версии нельзя собрать проекты ни под одну из платформ и ничего против не имею, но вроде же говорили, что всё остальное, кроме материалов стора доступно.
А как же мне быть? Тратить тонну бабла особо не охота, пока я не получу хоть какой-то играбельный результат из своих копаний с этим движком. Писать свои алгоритмы поиска пути..? Да нет, спасибо.
Есть ещё какие-то варианты? Или, мб, ломаная версия (только на период разработки. Как только я начну собирать проект я обязательно куплю лицензию)
>>497920 >взять старую ломаную пиратку гамака до фришных инструментов типа с++ и через какой отрезок времени будет готов прототип на гмл и через какой на цпп? ну конечно если это не match3 :3
>>497920 >тратить бабла не охота Не охота, до тех пор, пока то, что я делаю не оформится в играбельный вид. Я же говорю, в целом, я более чем готов платить за лицензию. Но какой смысл покупать её, если, я не знаю, я где нибудь в середине пойму, что мне не хватает возможностей? Или, там, что всё лагает как кусок говна.
Потом я, в любом случае, купил бы лицензию чтоб собрать проект
Матерые кодеры, если таковые имеются, я никогда не работал кодером, но свою игру делаю сам, расскажите, когда кодер понимает, что его код вполне хорошо выглядит, и в целом надежен, понятен (читай переполнен комментариями) и его можно пускать в свет?
Ну вот написал я допустим прототип сайдскроллера, в котором можно бегать, прыгать, эйрдешаться и даже умирать от падения со слишком большой высоты. Появилось некое вдохновляющее чувство законченности. Но нутром я понимаю, что код еще можно в сто раз удобоваримее переписать (хоть он и сейчас практически идеально работает, не нашел пока каких-то видимых багов), а также боюсь, что через неделю, когда у меня будет настроение вернуться к коду, я могу все позабывать уже (хотя это вряд ли).
Пока что сам себя обнадеживаю, что это прототип, так что над качеством кода можно не париться. Но когда дело дойдет до "чистовика", как подойти к этому вопросу? Нет у меня особо глубокого понимания, чем принципиально отличается "релизный" код от препродакшенового, и когда я смогу сказать себе "вот так и оставь". Хотя мб это во мне перфекционизм играет (он мне в сосничестве всю жизнь поломал, сейчас каждый день живу, сражаясь с ним), я хз.
В общем, тл;др - через что чаще всего должен пройти прототипный код, чтобы стать релизным? А то боюсь пока дальше новые механики писать, боюсь, что будет такая каша, что потом либо все переписывать придется, либо будет неоптимизированная параша.
>>499215 > расскажите, когда кодер понимает, что его код как только он написан. тут, понимаешь, без реальных образцов разного кода не обойтись. лаконичность (DRY, KISS) очень растяжимое понятие. кто-то жарит красивые однострочники, чтобы вместо 500 строчек было 100, а кому-то надо 100 строк без извратов с синтаксисом, третий напишет 1500 строчек с очень продуманным api и максимально высокой отчуждаемостью, а четвертый жахнет в 20 строк, но с миллионом тормозных зависимостей и "небольшим" сайд-эффектом. и автор каждого решения будет считать свой код правильным и хорошим. важно иметь опыт в каждом из этих подходов - тогда код становится инструментом. чем длиннее инструкция к молотку (комментов к коду) - тем больше он говно. и еще важно пройти этап тяжелых задач (кодеры постоянно комплексуют из-за тривиальных задач). чтобы желание "все переписать" отбилось, чтобы не плодить лишние классы... чтобы не было оверинжиниринга, чтобы у написание кода была прозрачная цель. и вот когда оба этих "важно" пройдены - только тогда ты можешь смастерить честный молоток, а не ходить по галочкам "меньше строчек" и "полное покрытие тестами". хороший код пишется медленно (пусть и быстрее из раза в раз), плохой быстро. сила в том, чтобы стараться везде засунуть говнокод, но угадывать места, где этого делать не стоит.
> через что чаще всего должен пройти прототипный код, чтобы стать релизным через зеленую кнопочку "релиз" в админке стима, например.
>>499215 с опытом например я елси посмотрю свой код год назад у меня рукалицо, и я уверен что через год у меня будет такое же чувство если я буду смотреть на свой код в текущий момент но вообще не еби мозги, прототип всегда может быть таким, если работает то заебись, потом отрефакторишь, когда общая картина появится
Как же я заебался с анимациями и коллизиями. Если спрайты разных анимаций разной высоты - считай уже себе гемора прибавил, это говно обязательно застрянет в полу и перестанет двигаться и прыгать. Если маска коллизий не строго зеркальна по центральной вертикали, то возле стен при смене направления движения так же ебаные застревания.
И это я только две анимации впихнул. Хуль так сложно? Как белые люди это делают, что у них ничего не застревает? А я еще наивный дебил хотел хитбоксами все захуярить, я ж ебанусь это вручную хуярить все.
Сделай прямоугольник вокруг персонажа и считай коллизии по нему. Для всех его анимаций. Да, при этом у тебя какая-нибудь вытянутая вверх рука будет в потолок заходить в некоторых местах. Ну и что? Все так делают, никого не напрягает.
Я задал своему персонажу width и height и считаю коллизии по ним. Они не меняются вообще никогда. По колижн маскам считаю только столкновения с другими объектами. единственный момент, когда рамка в стену уходит - залезание на препядствия. Для этого костыли стоят.
>>499307 >зачем тебе рассчитывать ее, если ты задаешь hspeed и vspeed, и объект автоматически движется? Затем, что он как раз таки начинает автоматически двигаться, и движение врядли как-то можно отменить не приравняв эту самую скорость к нулю. Мне нужен был именно расчет без движения.
А вообще сейчас хорошенько прогулялся по городу и понял что скорость можно найти по принципу point_distance(x, y, x+hspeed, y+vspeed). Надеюсь подводных камней в таком методе нету.
>>499296 У меня маска была в самой сердцевине персонажа, иногда игнорировала голову и конечности и пр. Думал, что при обволакивании будут слишком большие зазоры между препятствиями и персонажем. Окей, спасибо, попробую обволакивать. Прямоугольник, кстати - отдельный объект или в дро отрисовываешь?
Анон, как правильно вращать? У меня есть энное количество отдельных спрайтов, которые должны быть соединены друг с другом и вращаться как-то так, чтобы красиво было. Как автомат с магазином и лежащими на нем руками. Но как только я начинаю эту ебалу вращать, она расплывается по всему экрану. Я понимаю, что для этого надо смещать все добро через тригонометрические функции, плюс появилась идея учитывать оффсеты спрайтов, но я не могу обволочь эти мысли в какую-то понятную для всех, для гейммейкера и для себя самого форму. Есть ли где-то видеоуроки или хотя бы текст об этом? Во всех туториалах на ютубе пилят очередную говноспрайтовую РПГ, а у меня система анимации ближе к флешевой, многокадровые спрайты мне не подходят никак.
Анон, выручай. Пытаюсь сделать параллакс скроллинг в GMS2. Все бы ничего, но во время движения с краю экрана появляется вот такая полоска, а когда персонаж останавливается, бэкграунд резко дергается на ширину этой самой полоски. Объект, на котором висит код параллакса загружается самым первым, код находится в Step Event, пробовал пихать его в End Step и Begin Step, но ноль эффекта
>>439561 (OP) 1. Если я верно понял, триалка не ограничена по времени и можно хоть до усрачки изучать триал, и даже полноценно пилить в нём своего игоря?
2. Что там с физикой, есть хоть какие-нибудь зачатки?
>>500481 У тебя какого размера БГ? Сдаётся мне, что ширина у него с твой экран. Поэтому если ты его сдвигаешь, то остаётся неочищенный участок старого application_surface.
Ты попробуй галочку поставить в свой бэкграунд Horizontal Tile. Что изменится?
>>500489 Триал не полноценный. Я полную версию купил, когда обнаружил, что в триале нельзя создать больше одного тайлсета. Знаю что какие-то функции path в триале ограничены, какие-то gpu.
>>439561 (OP) Скачал, посмотрел, некоторые вещи осваиваются интуитивно, это очень хорошо. Вопрос такой. Есть объект, который постоянно должен "падать", ибо гравитация. Как это реализовать? Порылся в ивентах, не нашёл "пустого" события, которое должно выполняться всегда, без условий. Ну или ткните в ссыль с такими вот базовыми туториалами.
>>500565 Спасибо, нашёл, разобрался. >>500607 Смотрю уже. Да, неплохое двигло, мне нравится, ещё бы умел на андройды выгружать, и не по лицухе за 130 баксов.
>>500612 Подозреваю, что этот экспортер делает некислую прибыль, так что вряд ли забесплатно сделают. Но если они выкатывают при этом такой продукт, то не жалко.
>>500564 В GMS2 (и в более ранних версиях роде тоже) есть встроенный туториал в духе "шаг за шагом делаем первую примитивную игру". Там делов на полчаса, и практически все базовые вещи научишься делать. Это гораздо лучше, чем видосы-туториалы, где бородатый хер два часа чавкает в микрофон, объясняя 2 строки кода смотреть.
>>500559 Не могу этого сделать по ряду причин, но проблему я более-менее решил.
Я пришел к выводу, что переменная, которая получается из команды camera_get_view_x(view_camera[0]) все время отстает на один фрейм от настоящего положения камеры. Тогда я поставил условие, что бэкграунд двигается только при условии, что скорость персонажа не равна нулю. Это, конечно, как-то костыльно, и вылезла еще пара проблем, но их оказалось легко решить, и все работает. Наверное, есть какой-то более изящный путь, если найду, то поменяю систему, конечно.
>>510389 Вариантов куча. Первое, что приходит в голову - завести массив / словарь / список, и в процедуре генерации карты заводить в него нужные данные с тем же индексом, что у тайла в тайлмапе. Обращение к тайлам организовать через геттер, в котором эти данные будут доставаться.
>>510407 Просто мне такой способ кажется очевидным, но при этом - костыльным. Не может же все быть настолько просто. Или может? И нет смысла изъебываться, если можно все сделать просто?
Гамак не видит подключенный геймпад (gamepad_is_connected();) пока игра свернута. Подключал четвертый дуалшок. Проблема в гамаке, в геймпаде или во мне?
>>511032 Просто таким образом можно было бы намеренно или случайно вызвать ошибку, свернув игру в определенный момент, но уже вроде нашел, как это исправить.
Сап аноны. Я очень нью, но может вы поможете мне с одним вопросом. Решил попробовать сделать первую лёгкую игрушку про самолетик, который стреляет говном (стандарт из стандартов). Самолет должен стрелять в сторону, в которую направлена мышка, с промежутком а 310-50 градусов. Но вот беда. Для поворота модельки я сделал вот: var mouse_angle = point_direction(x, y, mouse_x, mouse_y); if (mouse_angle > 310 || mouse_angle < 50) image_angle = mouse_angle; Как сделать подобное ограничение для пуль, которые вылетают. Пробовал часа три и нихуя не придумал, собсна. Вот мои самые удачные идеи (пикрилы)
>>511672 Есть функция clamp, которая позволит сделать все то же самое, но в одну строчку. И я не понял, в чем твоя проблема. Все должно работать. Скорость пули можно записать через speed ее экземпляра, направление через direction, которое ограничить через clamp.
>>511791 Я пробовал делать через clamp, но это не даёт никакого эффекта. Хотя может быть просто я криворукий (что более вероятно) и попробую ещё, как приду домой, спасибо. Если не получится, спрошу ещё раз, надеюсь на помощь :3
>>511793 А да. Не дало эффекта, это значит, что она просто не работала, и камы-пули продолжали лететь из очка вертолета, будто ограничения и вовсе нет. Но скорее всего я просто жиденько обосрался и попробую еще раз переписать.
>>511790 Попробовал вот так: direction = clamp(point_direction(x,y,mouse_x,mouse_y),310,50) + random_range(-4,4); Не работает ниже 0, пробовал через -50, пробовал через кламп 310,0 + кламп 0,50 — ни в какую.
Гамаконы, есть вопрос. Во второй студии есть адекватная реализация коллекций вместо отвратительной "ds_ " ? И что там вообще по ООП, есть какие то подвижки?
>>511897 Не держись за гамак. Если чувствуешь, что тебе тесно в игровом конструкторе - переходи на полноценный движок. Базарю, чем позже перейдешь, тем больше пожалеешь о потраченном на все эти гамаки времени впоследствии.
Я лично я в гамаке совершенно не вижу игрового конструктора. Да, в нём можно включить физику "искаропки", заставить объекты перемещаться по путям и делать прочие примитивные вещи.
Но это только верхушка айсберга. На самом деле с гамаком можно сделать намного больше. Абсолютно всё, что может понадобиться для хорошей 2д игры.
Парни, есть трабл, поможите. Юзаю гмс2, десктопная лицуха.
Вкратце вопрос звучит так - как сделать чтобы импортируемые спрайты не выглядели как дерьмо на фулскрине с 1920х1080?
Развернуто - импортирую спрайты для своего платформера, и они выглядят как параша, даже в оконном режиме на 640х320. Притом что в комнате при редактировании они выглядят хорошо? Что я делаю не так? Дрочился с настройками в опциях к платформе (в данном случае шиндовс) - нехуя не помогло.
Вообще я так понял есть магические surface которые как-то это все должны хендлить, но мои вялые попытки написать чето используя данную функцию не дали ровным счетом нехуя. Шо делать
>>521816 Разрешение вьюпорта в первой загружаемой комнате (или самой комнаты, если вьюпорты отключеры) задают разрешение всей игры. Разрешение остальных комнат масштабируется под него. Может в этом проблема?
Я немного выпал из трендов разработки, но есть ли смысл нынче париться о нескольких разрешениях для своей игры, особенно пиксельной? Я вот думаю сделать разрешение 540р (с дальнейшим апскейлом х2 на 1080р). И типа есть ли вообще смысл париться о том, что у каких-то бомжей не будет монитора 16:9 (хотя на 4:3 мониторе там просто полосы будут, что в принципе терпимо) или мониторов с поддержкой 1080р (такие есть еще?)?
>>522685 Есть смысл париться, если в крупнопиксельной игре разрешение монитора не делится нацело на разрешение игры. Тогда появятся некрасивые деформации пикселей.
>>522694 Эх, ну да, беспокоясь о бомжах на старых пеках, я и забыл, что уже есть челики с разрешениями больше 1080р, но меньше 2160р. Сука, у меня в игре дохуя геометрии даже в банальных игровых действиях, вот чего мне блять для полного штанов счастья не хватало, так это рескейлить игру под другие разрешения.
Как это вообще делают? Новый комплект ассетов рисуют или что? Это ж ебануться можно. Лучше уж тогда в рамку нахуярить. Или просто каждый ассет вручную растягивают до нужных пропорций и потом ретушируют?
>>522701 Дешевый и сердитый вариант, который в гамаке легко реализуется, это если у игрока нестандартный монитор, то дать ему возможность либо играть в полноэкранном режиме и наблюдать пиксельные деформации, либо запустить игру в окне с подходящим разрешением. К тому же, чем больше разрешение, тем меньше эти деформации заметны. Самое плохое - это когда скейлить надо в 1.5 раза. Еще была идея рисовать все на текстуре 2160p, а потом уменьшать ее до нужного разрешения со сглаживанием. В графическом редакторе результат нормальный, а в гамаке не пробовал, удобно ли это делать.
>>522731 Я вот думаю насчет варианта либо полноэкран с деформациями, либо полноэкран нормальный, если человек настраивает разрешение у себя или у него оно само по себе подходящее, либо сделать полноэкран с рамочками, обрамленными каким-нибудь артом. Это, кстати, в гамаке можно сделать как-то? Я видел это у некоторых игр, и смотрелось вполне неплохо.
>>522752 Галочки "сделать полноэкран с рамкой" в настройках гамака нет, можно только черные полоски. Хотя странно, почему они такую фичу не добавили, вроде эта идея сама собой напрашивается. Наверно, это можно сделать с помощью своих костылей.
Все коллизии рассчитываются по отдельной маске в объекте игрока, через присоединение твердых объектов к родительской группе oParSolid.
Есть две проблемы:
1. Игрок застревает в вертикально двигающейся платформе при прыжках на ней. Причем такого нет на горизонтальных платформах, больше он не застревает нигде, от слова совсем. Пробовал делать отдельные группы, и писать для них костыли, но не помогает. Как это пофиксить? В какую сторону копать?
2. Есть код который описывает врезание в потолок игрока (в степе игрока)
if (place_meeting(x,y-1,oParSolid) and (v >=0)) { hp = 0 }
Поэтому при прыжках по вертикально движущейся платформе, когда он застревает в платформе, его хп становится равным 0, игра рестартуется. Я понимаю что наговнокодил, но как сделать иначе - хз.
Ты используешь какие-то безумные функции искаропки, не зная толком, как они работают.
Я тебя умоляю, не пользуйся алармами, ибо ты не знаешь, в какой момент тикает их таймер.
Это раз.
Два. Про платформы.
Хуй знает, что ты там наворотил но скорее всего проблема в очерёдности выполнения кода. Если ты хочешь, чтобы платформы двигали игрока, то пусть все перемещения платформ и двигание ими игрока происходят в begin step а все самостоятельные перемещения игрока происходят в step.
Про врезание в потолок.
Во ты нахуевертил. Place meeting это во-первых ресурсозатратная функция, во-вторых в её работе есть много нюансов. Использовать её следует только в самых простых случаях.
Для проверки столкновения с потолком лучше напиши свою функцию, которая будет проверять, есть ли в определённых точках над игроком потолок или нет.
Например как делаю я:
У меня есть функция "gridcol_line", которая проверяет: если провести линию из точки А в точку Б, будет ли коллизия на этой линии.
Чтобы понять, есть ли земля под ногами, мне достаточно сделать
var ground_check = gridcol_line(x-width/2,y+height/2+1,x_width/2,y+height/2+1)
На самом деле для этого у меня просто функция ground_check() и использую я её типа "if !ground_check() , это я тебе для примера расписал.
Поэтому я не перепутаю землю с потолком никогда. Тебе рекомендую то же самое. Проверяй только то, что тебе необходимо и только тогда, когда тебе необходимо. Ты же каждый шаг одновременно проверяешь, не двигаешься ли ты вверх и при этом проверяешь все коллизии со всеми объектами препятствий во всех точках игрока. Ты в коде перемещения установи проверки типа
мои скорости vx и vy Если в точке x+vx и y+vy place_meeting даёт false - перемещаюсь в точку x+vx и y+vy Иначе начинаю перемещаться по одному пикселю по x пока не встречу препятствие, затем по одному пикселю по y.
В первую очередь ты должен научиться делать ТОЧНЫЕ до пикселя коллизии и перемещения. А ты в курсе, что если у тебя препятствие с координатами левой стороны 0 и правой стороны 10, а твой игрок это. например, точка размером 1*1 пиксель, то для твоего игрока
var check_left = place_meeting(0,0, obj_collision) даст true а var check_right = place_meeting(10,0, obj_collision) даст false
>Про алармы не совсем понял - я читал документацию и кажется понимаю. Тогда скажи, в какой момент тикает таймер аларма? Что произойдёт раньше, room_end event или тик аларма? Или аларм тикает в начале фрейма а не в конце? Я вот, например, не в курсе. Если погуглить, то наверняка найду. Но в любом случае, таймер, который тикает вне твоего кода - это очень, очень плохо. Может привести к тяжёлым последствиям.
>Еще вопрос, чем плох vspeed hspeed?
То же самое. Когда происходит это перемещение? Твои платформы тоже перемещаются при помощи vspeed hspeed? Значит ты не контролируешь того момента, когда перемещается игрок, а когда платформа.
Допустим платформа создана раньше игрока. Тогда, возможно, сначала гамак будет двигать платформу, а потом игрока.
Тогда, если игрок стоит на платформе, которая едет вверх что будет? Платформе же пофигу на коллизии с игроком? Она просто двинется вверх.
Потом начнёт своё движение игрок. А у него вертикальная скорость меньше, чем у платформы или нулевая. И он окажется внутри платформы.
Потом будет степ ивент. Если платформа создана раньше, и именно платформа перемещает игрока, то она его передвинет куда надо и игрок ничего не заметит.
А если игрок создан раньше? Тогда его код будет исполнен первым и он заметит коллизию и самоуничтожится.
Это раз.
Два: у тебя все скорости целочисленные? Наверняка нет. Тогда перемещение искаропки будет ставить твоего игрока в дробные координаты. И ты, для вычисления коллизий, будешь работать с float переменными. И это может привести к неожиданным для тебя результатам.
Приведу пример из моей практики - когда я делал лазерный прицел, который мог светить под произвольным углом и должен был прерываться на препятствиях, я заметил, что в некоторых редких случаях луч начинает светить сквозь препятствие. Разбирался долго пока не открыл для себя, что есть такая штука, как точность вычислений. И если сравнивать float который должен быть 0 с настоёщим int 0, то float 0 может оказаться больше или меньше, а может быть и равен. Поэтому иногда коллизия просто не засчитывалась.
Поэтому всегда лучше использовать для координат int.
А вот, например, что бывает, если платформа передаёт игроку ускорение. Платформа создана позже игрока и её код выполняется позже.
Платформа и игрок движутся с одинаковым ускорением и одинаковой максимальной скоростью, но фактически у игрока ускорение чуть меньше и чем дольше движется платформа, тем больше отстаёт от неё игрок.
Проблема решилась переносом кода платформы в begin step event
>>522953 С того, что во-первых это далеко не всегда пересечение прямоугольников. Гамак поддерживает precise per frame collisions. А во-вторых объектов коллизий может быть много, а проверка коллизий может происходить много раз за фрейм.
>>522955 А твоя gridcol_line как работает, проверяет пересечение линии только с тайлами? А с движущимися объектами как проверяешь столкновения, если не place_meeting?
>>522961 Моя движущаяся платформа это совершенно отдельный от коллизий объект.
Моя игра не плаформер и движущиеся платформы и препятствия не являются в ней основой геймплея. Поэтому я сделал принципиально другую механику.
Если в комнате есть плаформа, в скрипте ground_check() включается дополнительная проверка, которая работает только при движении вниз. Она проверяет две точки в основании ног игрока на столкновение с плаформой.
Если такое столкновение есть, у игрока, в дополнение к флагу "я на земле" загорается флаг "я на платформе" и запомнает id платформы, на которой он находится.. Если флаг "я на платформе горит" игрок проверяет, находится ли он всё на той же платформе, и если да, то сообщает именно этой платформе, что он на ней, зажигая на ней флаг "на мне игрок".
Сама платформа перемещается в begin step. Если на платформе горит флаг "на мне игрок". то она передаёт игроку на сколько пикселей она переместилась по горизонтали и вертикали в начале шага.
В свою очередь игрок в середине шага, обладая знаниями о том, на сколько пикселей переместилась платформа под ним при помощи скрипта gridcol_move перемещает себя на столько же пикселей. И только после этого при помощи того же скрипта gridcol_move перемещает себя в соответствии со своими скоростями vx и vy.
>>522685 Я очень долго ломал над этим голову, аноне.
В конце концов я решил "делаю игру с увеличенным в 2 раза пикселем". Все интерфейсы, меню, диалоговые окна сделаны так, чтобы если у монитора игрока разрешение 720р они умещались на экране. Все координаты заданы в процентах от ширины или высоты монитора. на мониторах с бОльшим разрешением эти интерфейсы разъезжаются друг от друга или отдаляются.
Соответственно у мониторов с большим разрешением видно большее пространство игрового поля. Поэтому даже на Ultra wide пониторе смотрится отлично.
На мониторах с разрешением меньше 720р в мою игру уже будет нипаиграть. Можно для них сделать костыль, чтобы убрать увеличение пикселя в 2 раза. Но зачем? Разве остались в мире ещё такие мониторы?
//Enable the use of views view_enabled = true; //Make view 0 visible view_set_visible(0,true); //Resize and center //we are fullscreen surface_resize(application_surface,view_wport[0],view_hport[0]);
Что-то пиксельарт тред глубоко внизу, поэтому спрошу тут: аноны, как импортировать пиксели из паинта в игру? Я в первый раз участвую в разработке игоря чукча не Кирилл, чукча хуйдожник, и не знаю об этом ничего, объясните подробно, плиз, как дауненку.
Еще есть такой вопрос - в паинте я рисую пиксели обычного размера, т.е. рисунок получается очень маленьким, если не приближать его. Вопрос такой - можно ли его будет потом четко, без размытия увеличить для игры? Или лучше сразу делать в нужном размере? Или это вообще не так происходит?
>>523428 >как импортировать пиксели из паинта в игру?
Нажимаешь alt+s для создания спрайта. Там увидишь кнопочку импорт, жамкаешь на неё и импортируешь.
Хочешь перетащить спрайт в комнату? Создай в комнате assets layer и таскай спрайты мышкой из ресурсов в комнату на этот слой.
>можно ли его будет потом четко, без размытия увеличить для игры? Можно. Для этого тебе придётся научиться работать с камерой.
>Или лучше сразу делать в нужном размере? Хуй его знает, что лучше. Когда спрайты маленькие, они занимают гораздо меньше памяти, рисуются быстрее, в дальнейшем все спецэффекты, такие как свет и тень, меньше ресурсов тратят.
Зато всега присутствует скейлинг всего. Насколько я понимаю скейлить менее затратно, чем рисовать сурфейс во весь экран.
>>523428 Пиксельные спрайты отлично масштабируются в графических редакторах. Выбираешь изменение размеров без сглаживания и всё.
Это нужно делать именно в редакторе, чтобы движок не тратил ресурсы на лишнее масштабирование, хотя зависит от того как много текстур ты собираешься использовать, если минимализм, то большой просадки не будет, но если куча объектов на сцене, то тормоза гарантированы, хотя они будут и без текстур, так как сегодня тонкое горлышко всех игроделов это слабые процессоры, которые почти перестали увеличивать производительность где-то с 2013 года.
>>523428 В первую очередь, убери нахуй пейнт и возьми редакторы нормального человека по типу aseprite или pro motion ng (первый очень простой и интуитивный и в целом покрывает все нужды в пикселях, второй более профессионален и поначалу ты будешь в нем плавать, но зато потом ты сэкономишь себе тучу времени)
>>523480 Разница будет только в занимаемом месте на диске, при этом памяти будет сжирать всё равно столько же, но минус твоего способа в том, что если это java или c# машина или браузер, то предложенный тобой способ хуже так как сборщик очистит кэш и после снова придётся подгружать изображение и проводить масштабирование, тогда как в случае с заранее отрисованными текстурами просто будет подгрузка в кэш без лишних действий.
Разница заметна на слабых мобильных устройствах, где использование масштабирования считается крайне плохим тоном и практически нигде не используется, по крайней мере в 2D играх.
Не тоже самое что и двойка, в двойке кроме ide очень много исправлений компилятора, стандартных функций и даже теперь визуальные кнопки превращаются отныне в годный код. Казалось бы косметика, но изменений больше чем кажется.
Забыл также упомянуть что html5 экспортером занимается теперь хороший человек наш соотечественник. Погуглите блог yellowafterlife он фактически герой гм*/гмс/гмс2
Вот вопрос возник. изучил например пользователь гамак, сделал успешно игру, естественно в триальной версии. Решил выпустить игру на мобилки. И тут случается пикрил, что в перерасчете на деревянные, более 20к.
Т.к. выпускать с пиратской версии не особо то законно (скорее всего), но покупать за 20 с лихуем лицензию для того, чтобы получиться возможность заработать на детище - бред. Есть ли законные (или может даже не очень) выходы из этой ситуации
>>524441 >но покупать за 20 с лихуем лицензию для того, чтобы получиться возможность заработать на детище - бред. Действительно, такая бредятина - вкладывать средства в свой бизнес, кто этим вообще занимается?
>>524467 Давай начнем с того, что бизнеса как такового (именно в гамак-геййдеве) быть и не может без покупки лицензии (исключая обходные пути) Я и не говорил о том, что вкладывать деньги в бизнес - это бред.
Порог вхождения уж очень велик для этой страны. Нет никакой гарантии, что твой проект хоть частично окупит вложения (а проверить как-либо это, без покупки лицензии не кажется реальным)
>>524468 >>Нужно брать бесплатные проги, если ты нищебродина
Вот тут ты и обосрался молодой человек. Твои слова как-раз таки и выдают в тебе нищука, который сразу потратит свои сбережения на иллюзорный вклад в будущее, который еще не факт что хоть как-то окупиться, и как я написал выше проверить это ты увы не сможешь.
Есть тут шейдероебы? Нужно зделоть искривление картинки на мониторе, к примеру, какой-нибудь банальный фишай, чтобы я просто смог понять принцип этого дерьма и сделать, что хотел. Из вариантов пока придумал только ставить какой-то 3д объект и смотреть через него преломление.
>>524642 Похоже что таких нет. Была какая-то софтина в которой можно было лепить примитивные шейдеры для гамака, но есть подозрение что фишай там не сделоть.
>>524866 Ты вопрос задай как следует, тогда и получишь нормальный ответ.
Если ты не ставишь тайл в клетку, то tilemap_get(tilemap_id,cx,cy) в этой клетке вернёт 0.
Если ты сканируешь tilemap_get_at_pixel() то если у тебя размер тайла 16, то например tilemap_get_at_pixel(tilemap_id,0,0) вернёт значение первого тайла, а tilemap_get_at_pixel(tilemap_id,16,0) уже значение второго.
Дано два состояния объекта - скольжение и бег. Для бега коллизии считываются по отдельно заданному спрайту. Я решил сделать отдельную маску для скольжения (потому как при выполнении анимации объект становится меньше по вертикали) и тут возникло несколько проблем. Я пробовал mask index и object set mask.
mask index делает все как нужно с точки зрения столкновений, но при этом объект начинает проваливаться в твердые объекты при выполнении анимации скольжения.
Обернуто это вот так: есть скрипт где задана переменная отвечающая за нажатие клавиши
в степе объекта
if (kSlide ) //&& onGround ) - закоментил переменную чекающую коллизии с твердым объектом, для теста, иначе анимация проигрывается 2 раза с разрывом, это тоже проблема. {
h=maxH; hp -= 1 / room_speed state = SLIDE
if (colRight) colRight - это переменная чекающая коллизия справа { oPlayer_t.hp = 0 }
}
ниже в стейт машине, тоже в степе:
switch (state) { // тут перечисление всех состояний - бег, айдл
case SLIDE: image_speed = 1.0 mask_index = sPlayerMaskSlide
if kSlideRelease это отпущенная клавиша скольжения { mask_index= sPlayerMaskSlide }
sprite_index = sPlayerSlide break
Куда стоит копать для решения проблемы? Есть идеи?
Честно пытался помочь тебе, и даже понял примерно что и для чего тебе это нужно.
Даже есть несколько предположений, в первую очередь связанных с тем, что у тебя центровка спрайтов разная. Ещё я бы обратил внимание на то, что ты СНАЧАЛА меняешь маску, а ПОТОМ меняешь спрайт.
>>525661 Так и сделал. Это помогло понять и пофиксить некоторые мелочи, и основную проблему я решаю костылем - поставил у второй маски центр по верхнему краю и добавил мини прыжок после после перехода из состояния скольжения в бег - по какой-то причине маска застревает после этого перехода. Показал на картинке.
>>525672 А теперь я бы порекомендовал тебе всё же разобраться, в какой момент твой персонаж съезжает на пиксель вниз и пофиксить это.
Коллизии - это основа основ и это очень просто. Костыли в коллизиях повлекут за собой непредвиденные проблемы, когда ты будешь добавлять разнообразные механики.
Ребята, подскажите, будет ли тут просто собрать 2Д симулятор ходьбы с парочкой мини-игр?
Нужно: 1. Несколько ветвлений сценария. 2. Мини-игра «затарься в супермаркете». Ходишь по магазу, собираешь дешевую продуктовую корзину, от ее содержимого зависят некоторые ветвления «сюжета». 3. Ходьба, поездки на метро/ автобусе, диалоги. 4. Чтобы он смог выдержать толпу идущих прохожих без лагов. Ну, штук 20 хотя бы
>>526136 Не знаю что ты имеешь ввиду под "собирать", но то что ты описал сделать весьма просто.
Лаги зависят в основном не от движка а от того, как ты всё реализуешь. Можно и один объект написать так, что игра не запустится, можно и 1000 обхектов двигать без всяких лагов.
Гамак гораздо проще юнити и заточен под 2д. Юнити сложнее, мощнее, в нём больше ассетов и специализован на 3д.
>>526158 Короче, я глянул туториалы и решил, что гамак мне идеально подходит.
Вообще сначала была идея пилить новеллу на ренпае, но потом я понял, что это какой-то маразм и пора бы завязывать со шквалом маня-новеллок лучше создам маня-изометрию.
Кстати. У вас нет своей ламповой конфочки в телеге?
Что-то подтупливаю над элементарной задачей. При погибании персонажа, комната перезагружается, соответственно перезагружаются и враги, и игрок и все остальное. А как сделать, чтоб, например, уже собранные бонусы не перезагружались, чтобы игрок раз за разом халявные патроны не находил, например? Или без перезагрузки комнаты придется пердолиться с каждым отдельным врагом?
>>526198 Вот не знаю, как через них сделать. Потому что, например, лежат на уровне две идентичных коробки с говном (один и тот же объект), одну игрок подобрал, вторую — нет. глобальная переменная же не различит, какую коробку он взял.
У меня есть obj_game permanent объект, в котором хранится самая важная информация.
В нём я создал ds_grid со списком всех вещей, которые есть в игре.
У каждой вещи есть параметры "уникальная?" и "игрок уже подобрал меня?"
Все коробки в игре одинаковы. различаются только дополнительным room_create_event, который идёт после create_event объекта. кликни на предмет в комнате два раза и выбери create_event - это оно.
В нём я указываю парамер item, который сообщает коробке, какой предмет в неё лежит.
В step event коробки я пишу.
if !init { init = true; if ds_grid_game(obj_game.items, item, уникальная) == true { if ds_grid_game(obj_game.items, item, игрок уже подобрал меня) == false exit else { instance_destroy(); exit; } } }
Таким образом коробка самоуничтожается, если в ней уникальный предмет, который игрок уже подобрал.
>>526256 >Юнити действительно под 2Д плохо катит Потамушта пиксельные игры это прошлый век и нахуй они нужны когда есть ахуенный графон почти как в жизни вон посмотри на нового асасина
Почему если я юзаю room_restart объекты, в ходе взаимодействия с которыми я вписал instance_destroy() не восстанавливаются?
Простой пример - есть объект игрока, есть аптека. В скрипте отвечающим за смерть есть room_restart и после смерти игрока комната перезагружается но аптек нет. В гамаке так и задумано? Как это обойти? Записывать айди всех аптек в комнате и ресать их? Или например сделать видимость 0 после того как их взяли? Вернуться к ним у игрока в рамках комнаты возможности не будет.
>>526382 Я, честно говоря, не пользовался никогда room_restart В мануале написано, что работает так, как будто ты только что зашёл в комнату. Т.е. должны создаваться все не persistent объекты по новой, выполняться все create events и room create events.
Поясните мне за два вопроса. Я правильно понимаю, что КАМЕРА рисует на ВЬЮ ПОРТЕ? И зачем нужно несколько вью портов/ камер? Чтобы, допустим, держать в одной комнате несколько мини-комнат и переключаться между ними, используя разные вью порты?
Один анон в ньюфаготреде сделал миникарту, повесив вторую камеру, которая показывала полностью всю комнату в уменьшенном виде. Но я не рекомендую такой способ.
var view_matrix = matrix_build_lookat(x,y,-10,x,y,0,0,1,0); var projection_matrix = matrix_build_projection_ortho(width,height,0,10000);
Задётся, что view_camera[0] транслируются в созданную мной камеру view_camera[0] = global.camera; Его размеры подгоняются под размеры projection матрицы камеры. view_hport[0] = height; view_wport[0] = width;
Затем устанавливаем view и projection матрицы в камеру camera_set_view_mat(global.camera,view_matrix); camera_set_proj_mat(global.camera,projection_matrix);
Включаем view //Enable the use of views view_enabled = true; //Make view 0 visible view_set_visible(0,true);
А потом подгоняем размеры application surface под размеры view 0 surface_resize(application_surface,view_wport[0],view_hport[0]);
Ты можешь заметить, что размеры этого view у меня 1/2 от размеров дисплея. А выводится он на весь экран. Таким образом получаем пиксель с зумом х2.
В webm мы можешь увидеть, как я копирую aplication surface на отдельный surface, снимая скриншот, потом рисую интерфейс и рисую этот скриншот в нужном мне месте с нужным мне скейлом.
>>526427 Но в принципе ты мог бы использовать для того же эффекта несколько view, нарисовав интерфейс в одном месте и выводя его на экран, сначала камеру, которая смотрит на интерфейс, а потом камеру. которая смотрит на уровень. Изменяя вторую камеру ты мог бы добиться того же самого.
>>439561 (OP) The depthproperty is necessary. This property can be any real integer value. It controls which objects are drawn in front of other objects. Lower values are brought to the front and higher values are pushed to the back. If you have a tree object that you want to be in the background (behind the player), you might give it a depth value of 5 and your player a depth value of 10. This would draw the player object in front of the tree object because 10 is lowerthan 5
Хуита какая-то. В том же вебе слои движутся в сторону пользователя, т.е. Если персонажу задать depth z-index 10, а дереву depth 5, то на переднем плане будет персонаж. А тут наоборот.
>>526776 Потому что у тебя, как и у большинства посетителей гдача, неправильное понимание движков: ты считаешь (и наверняка готов это отстаивать), что графон в игре обеспечивает движок. Но нет, графон обеспечивает разработчик, а движок обеспечивает среду для создания игор и более ничего. Я как-то весной заикнулся об этом, так на меня целая толпа нубья слетелась, с пеной у рта доказывать мне, как я неправ. Напомню, речь шла о том, что крупная студия при желании может сделать ААА-игру на любом из известных движков. Нубы усирались, доказывая, что нет, ты што, только на топовых движках, тычё! И ещё. Это твоё забуждение основано на тех образцах и примерах, что поставляются с движками. Есть ряд движков (не будем конкретизировать), которые поставляются с уёбищными и/или неоптимизированно-тормозящими демками. У людей, далёких от геймдева, складывается впечатление, что это предел возможностей движка. На самом деле демки - это предел творческих возможностей их создателей, не более.
>>526780 слечусь пожалуй на тебя. >графон в игре обеспечивает движок в видеосике статичная модель с запеченными лайтмапами. там даже свет очень всрато поддерживатся, чего уж говорить о современных шейдерах. можно усраться, но даже готику первую на нем не сделать — нет костной анимации. >крупная студия при желании может сделать ААА-игру на любом из известных движков нет, не на любом, а лишь на паре десятков. игрострой это не только качество, это еще и возможность правильно отрисовывать это качество. напомните, сурс энжайн уже научился в pbr? >На самом деле демки - это предел творческих возможностей их создателей, не более. в юнети нет SSS и индирект лайт скаттеринга. точнее есть, но фейковые и от васянов с сопутствующим пакетом всякой вич-инфекции. почему ты считаешь что топовые студии могут обходиться без этих новомодных приблуд?
>>439561 (OP) Первый день в гмс, как очистить нахуй вот эту хуйню, оставшуюся от передвижения персонажа? Олсо, ответьте, куда лучше подобную хуйню задавать: в gm тред или помощь ньюфагам? Так как я предполагаю, что ближайшие пару месяцев буду часто хуйню спрашивать.
>>526868 Первый день в гм, анон. Я вообще нихуя не знаю. >application surface Не ебу, что это. Как понял - отрисовка на отдельном слое
Сделал новую комнату, создал несколько слоев. В одном слое - инстансы объектов, другой - тайлсет. Белая хренота по центру - персонаж, управляемый пользователем, коллизии обрабатываются таким образом(пикрил 2) Кроме этого события ничего не писал. Проблема в том, что при передвижении остаются предыдущие полупрозрачные отрисовки персонажа.
Как я понял, я должен чистить буфер после каждой отрисовки, как ты говоришь. Вот только я не знаю, как это сделать.
>>526872 Когда ты рисует по умолчанию - ты рисуешь на application_surface
По умолчанию она не очищается, так что всё нарисованное остаётся на ней.
Когда ты включаешь фон, то в начале каждого шага на твоём application_surface рисуется фон в режиме gpu_set_blendmode(normal). Если фон непрозрачный, он соответсвенно заменяет собой каждый пиксель твоего application_surface, таким образом происходит его очищение. Потом, поверх этого фона, рисуется всё остальное.
>>527080 Я больше охуеваю, как в геймдеве - области, где все от и до сделано пиндосами, есть люди, которые от них отбрыикваются. Вы блять им ноги целовать должны. Хотя это вообще практически на все ойти распространяется.
>>527087 >Вы блять им ноги целовать должны За то что они спиздили технологии немцев и русских?)) А ты знал что идея интернета сначала в ссср появилась?))
>>527089 Отвечаю передергиванием на передергивание, если человек такими категориями размышляет, хули нет. Употреблять англицизмы - это закос под клятых пиндосов, ага.
>>527090 >спездели!1!11! Ну да, это такая уникальная разработка, да. То, что совок не смог реализовать интернет для общего доступа это значит, что он и не разработал его вообще. Я тоже могу сделать сотни прототипов уникальной игры, но это не значит, что это законченный продукт.
>>527090 Я придумал в своей голове некстген игру и даже знаю как ее реализовать, теперь когда такую игру игру сделают, это значит, что у меня спиздили!!!!! ебать ты ебнулся
>>527106 >>527107 С чего вы взяли что ничего не было реализовано? Прототип наверняка тестировался. Пиндосы просто его спиздили и завербовали правительство СССР, которые свернули свои разработки. Так же и развалили СССР
>>526873 Новый вопрос. По поводу объектов. Вот, допустим, есть у меня объект персонаж. и есть стена. Я могу эту стену сделать в виде простого тайла читай, нарисовать на отдельном слое, а могу сделать в виде объекта со спрайтом. Как лучше сделать эту стену, чтобы потом обработать коллизии персонажа и стены.
Олсо, насколько я понял, в physics не рекомендуется создание большого количества объектов. Тогда, получается, придется пилить свою физику. Но не будет ли это костыльной хуетой, ведь можно использовать уже готовую физику. Также интересует, какое именно количество объектов в physics является критичным для средней системы.
Как там physics работает - вообще без понятия. Гравитацию и соударения я сам сделал. Пользоваться чем-то, что я не знаю как работает и в каком месте поставит мне подножку не было желания изначально.
Сколько объектов потянет? Ну накидай в комнату объектов да посмотри на fps_real.
>>527087 > где все от и до сделано пиндосами Шизик и не лечишься. Напомнил мне какую-то либерашку или какла верефицированного в твиттере, который на полном серьезе рассуждал о том, что латиница - "пиндосское изобретение".
>>527496 А хотя, вот тебе из гугла: >Лаций (лат. Latium) — регион в античной Италии, прародина современных романских языков. Здесь же зародились римляне. Его территория в настоящее время входит в состав более крупного административно-территориального образования современной Италии — Лацио.
Есть объект игрок и в определенном состоянии должны вызываться эффекты искры.
В общем и целом они вызываются,и так получается что за объектом дорожка из зачаточного состояния эффекта (пучок искр) вместо одного длинного снопа. ЧЯДНТ?
>>527840 Хотел нечто подобное запилить, типа молнии при скольжении. Вчера как раз emitter_region подвигал и добился вот такого эффекта, но чет есть подозрение что я все равно не так это делаю лол
part_emitter_clear в степе чистит эмитер если объект не в нужном состоянии.
>>527958 > таким образом я описал возможность строить и сносить здания, сажать и рубить деревья Очередной выживач с 0 онлайна чтоле? Это можно сделать на чем угодно, но с твоими познаниями максимум что ты сделаешь - нечто, запускающееся только на суперкомпьютерах.
>>527963 >Очередной выживач с 0 онлайна чтоле? Да, типа того. А почему моя поделка заработает только на суперкомпьютерах? Подобные игры очень требовательны к чистоте коде и вычислительным ресурсам?
>>527964 > А почему моя поделка заработает только на суперкомпьютерах? Потому что тебе нужно будет писать код не только как рубить деревья и перемещать персонажа, а с оглядкой на то, чтобы у тебя весь твой огромный мир работал одновременно и не засорял память лишними вычислениями.
Есть у кого проблема с интерфейсом GMS2? Когда приближаешь, кажется, что даже текст растровый, все мылиться, и потом при отдалении это мыло остается. Очень глаз режет, помогите пожалуйста.
>>529289 Да, есть такое. Пофиксить не получится, насколько я знаю. Но в настройках можно задать размер шрифта, если тебя не устраивает дефолтный и тебе приходится сильно приближать окно для работы.
Как лучше отрисовать карту - полностью нарисовать всю карту (все дорожки,тропинки,цветочки и прочие статические прелести)в редакторе или разделить все части карты на тайлы и расставить их вручную?
>>439561 (OP) Ананас, хочу вкатиться в GMS ибо самому с нуля каждый раз писать дико удручает и выматывает, а тут будет как мне кажется несколько проще. С чего начать? Опыта в программировании достаточно.
Как рисовать партиклы на экране, чтобы они были в статике? Я так понимаю все партиклы рисуются от объекта, но если объект двигается то эффект от них размывается по поверхности. Надо их как-то от вида рисовать или че?
Допустим у меня есть гуи с хп, и я заебенил клевый эффект мерцания при определенных обстоятельствах (подбор апетеки) но т.к. сейчас я рисую его в объекте игрока эффект как будто растекается по поверхности за игроком (считай скорость появления спрайтов в партикле х еденица времени). Можно их как-то рисовать относительно вида? Или сделать объект который будет рисоваться относительно вида, или камеры?
>>533545 Для начала сформулируй вопрос так, чтобы его поняли другие.
Что значит фраза "партиклы рисуются от объекта"? Ты упоротый?
Партиклы создаются эмиттером в зоне, заданной тобой. После создания партикла ты никак не можешь на него повлиять, он будет только выполнять заложенную в него при создании программу. Т.е. если ты переместишь камеру, партикл не переместится вслед за ней.
"рисовать относительно вида" чё блять? но я примерно понимаю, что ты имеешь ввиду.
Затем создай какой-нибудь объект-контроллер частиц, который будет заниматься их рисованием. И через его draw_event работай с ними используя функци. part_system_drawit(ind)
Установи своему эмиттеру фиксированные координаты. Создай сурфейс так, чтобы координаты были в его центре. Потом surface_set_target(surf) part_system_drawit() surfcae_reset_target()
А можешь камеру двигать, прежде чем частицы отрисовать, а потом возвращать назад. matrix_set( matrix_world, matrix_build( -30, -30, 0, 0, 0, 0, 1, 1, 1 ) ); part_system_drawit() matrix_set( matrix_world, matrix_build_identity() );
>>533582 >>533582 >Что значит фраза "партиклы рисуются от объекта"? Ты упоротый? Я имел в виду что координаты для имитера мы задаем в объекте.
>"рисовать относительно вида" чё блять? но я примерно понимаю, что ты имеешь ввиду. Как еще объяснить что они постоянно должны быть на экране но их не разносило от скорости движения камеры дядь?
ПОМОГИТЕ АНАНАСЫ! Во второй версии геймейкера присутствует такая функция: instance_create_depth, которой нет в версии 1.4, на которой я работаю. Мне нужно написать что-то типа этого
if (keyboard_check_pressed(ord(""))) instance_create_depth(x, y, 0, object);
Может кто-нить в курсе поставил объекту вертикальную скорость hspd = sign(obj_player,y-y)* spd но при достижении одного уровня высоты его начинает немного трясти проверки уровня высоты и ограничения скорости не помогают, что я делаю не так?
>>439561 (OP) Вчера прошел свежевышедший сиквел Ундертале, и так вдохновился заебенить что-нибудь эдакое (благо идея есть), что начал гуглить, в чем игру делали. Оказалось - Гейммейкер. Скажите, если я пиратку поюзаю, а потом нет-нет да и решу серьезно заняться проектом для выкатывания его на всеобщий суд, мне же придется покупать лицуху или как? Там типа строго с этим, от каждого юзера требуют какой-нибудь лицензионный код в качестве пруфа или что? И главное: можно же будет потом все свои недоделки с пиратки на лицуху перекинуть? Читать-то двиглу в теории один хуй те же самые файлы.
>>535742 Потому что даже горящие геймдевом долгое время люди приходят и обсираются. А тут ребенок, который жил себе не тужил, вдруг поиграл в очередное оверхайпнутое говно для детей и решил в геймдевелопера поиграть, ну так, в перерыве между каточками в фортнайте. Какой багаж базовых знаний ему нужен, ребенок, конечно же, не удосужился узнать, думая, что двигло сделает все за него по нажатию кнопки "зделоть пиздато", да и местые шизики ведь уверяют, что "нада тока начать и будет крута атвичаю!", ну точно все заебись должно быть! В чем же заключается цепляемость того же ундерсраля, у ребенка есть только призрачные (и те неверные) представления, но у него уже есть "идея" своей слезодавильной говноистории, которая, конечно же, взорвет весь игропром (нет). При получении все большего и большего количества помощи и сурсов для чтения по движку у ребенка начнут затухать его горящие глаза творца, пока окончательно не потухнут и он не пойдет дальше брать топ-1 в своем фортнайте. Проходили уже.
А еще этот ребенок выкладывает свой пост в гамако-треде, хотя замени в нем гамак на любое другое двигло - и ему место только в ньюфаготреде, а здесь должны быть обсуждения по конкретным фичам конкретного движка и решения вопросов по коду и прочим непонятным штукам, а подобные посты лишь разбавляют концентрацию полезных постов своей бесмыссленностью.
>>535745 Мне это ты зачем объясняешь? А ты в курсе, что самые фанатичные и упорные как раз таки тоже дети? В определённом возрасте ребёнок может определить для себя интерес на всю жизнь. Нужно только поддержать.
И по поводу поддержания треда в чистоте ты не совсем прав. Этот тред по большей части бессмыслен. Уровень вопросов от неофитов тут вот такой: >>535521 Какая ещё концентрация полезных постов? Её даже на yoyo форуме нет.
Скажите, а у всех в процессе загрузки компонентов при первом запуске GM насоздавал хуеву гору системных дисков, а потом их поочередно поудалял? Я вообще не понял юмора.
>>439561 (OP) Посмотрел вот это: https://www.youtube.com/watch?v=izNXbMdu348 Если до конца все было понятно, то с прыжка я охуел. Почему vertical speed была выставлена на -7? Почему минус 7? Ось координат поменяла свои значения? Вроде вверх — это плюс. Но что я точно не понимаю — это каким хуем вообще здесь работает прыжок. Почему спрайт прыгает вверх, замирает, а потом падает вниз? Чем это вообще обусловлено? Почему прыжок плавный? Судя по коду, после нажатия пробела спрайт должен телепортироваться на 7 пикселей вверх и вроде бы даже замереть в воздухе. Почему он, сука, падает? Почему я такой тупой?
>>536359 Он присваивает -7 вертикальной скорости, которая потом увеличивается из-за гравитации, и получается плавный прыжок. И там ниже он делает y=y+vsp, что ставит вертикальную координату.
>>536359 Потому что начало координат обычно считается от верхнего левого угла поля и ось Y направлена вниз. Привыкнуть не легко.
После нажатия прыжка спрайт подпрыгивает вверх на 7 пикселей 60 раз в секунду (или 30 раз, смотря какой фреймрейт выставлен). Плюс идёт работа гравитации, которая плавно обнуляет скорость прыжка а потом разворачивает её в другую сторону. Почему ты этого не заметил?
>>536359 >Почему минус 7? Очевидно, ось Y направлена вниз. В разных движках могут оси располагать как создателям вздумается.
>Почему спрайт прыгает вверх, замирает, а потом падает вниз? Действует гравитация. Тело движется с ускорением. Смотри внимательнее. >vsp = vsp + grv; vsp сохраняет свое значение каждый кадр, и его немного изменяет grv.
>>536381 Это я понял. Я даже примерно могу представить, что высота прыжка именно в vsp = -7 и устанавливается. Я не понимаю, где в коде указано, что спрайт должен падать при достижении этой отметки.
Каждый шаг к скорости прибовляется 0.1 В момент нажатия кнопки "прыжок" скорость мгновенно становится -7 и персонаж летит вверх. Затем в течении 70 шагов скорость увеличивается до 0, и персонаж останавливается. Это высшая точка прыжка. Потом скорость продолжает увеличиваться по 0.1, скорость становится положительной и персонаж с ускорением летит вниз.
>>536396 0.1 это ускорение, начальная скорость в -7 каждый фрейм "увеличивается" на 0.1, т.е. за 60 фреймов скорость станет -1, за 120 фреймов станет 5, т.е. объект в обратную сторону по игреку двигаться начнёт. На 70 фрейме скорость будет 0 - это и есть та точка, где спрайт зависнет в воздухе, а на 71 фрейме начнёт падать из-за скорости в 0.1
>>536504 Да внезапно чел постучался и грит, мол другнейм говорит, ты можешь игори делать, а мне как раз нужна небольшая перда. В итоге сделал ему его раннер и получил баблеца.
Алсо, как же заебал GML, сил моих нет уже. Так устал костылить со скриптами это словами не описать. Хоть на юнити перекатывайся к нормальному ООП блжад.
>>536506 Прикольно, а что, всю разработку, включая арт и музыку, ты сам ебашил? Как к цене такой пришли, с самого начала договорились, или ты почасовую озвучил, или в конце просто сказал: дай стописят штукарей, а заказчик такой: "Че ахуел?))) вот те сто и радуйся епта"?
Товарищи, а как сделать так, чтобы я нажал кнопку один раз, и анимация вращения проигралась целиком, но при этом у меня нет раскадровки, а только image_angle += 10? И так, и сяк ебался, лупы тут просто не работают, потому что луп покадровый и так запущен. Анимация проигрывается нормально только для зажатой клавиши.
Сап двач, у меня к тебе разговор. Я старпёр 30+ который уже отработал на разных работках. Несколько лет назад меня это задобало, и я решил уйти в геймдев, благо накопил нехило денег пока работал. Пообщался с разными людьми, прокачал свои скиллы (рисование/анимация, в код не могу, ибо окологуманитарий), поработал за еду в котрке которая пилила мобилки что бы понять как это работает изнутри, и в итоге открыл свою компанию. Естеественно начал пилить игру мечты, и вполне закономерно провалились, потеряв попутно почти всё что заработал за 10 лет.
Поскольку я необучимый, решил побпробовать снова. Нашёл с горем пополам инвестора по своим старым связям, бюджет хоть какой то, но есть. Но не хочу наступать на старые грабли, а одни из самых зубастых из них было что я был один горем-директором, а большая часть работы выполнялась на аутсорсе, людьми котрым было в принципе пофиг на сам проект, и просто выполняли мои ТЗ, не взирая на их уровень бредовости. Ну и вторая проблема, в то что я всю жизнь работал фрилансером-консультантом, и опыта руковождения команды у меня чуть меньше чем ноль.
Короче говоря, ищю партнёра на новый проект. Особенно если у тебя уже есть опыт в игрострое (дополнително, если ты погромист будем более менее друг друга дополнять). Хотелось бы вовлечёного человека (то есть с долями в компании), ну и желательно не моложе 25и и с достаточном количеством свободного времени. Так как бюджет есть, то будет скорее всего и зарплата. Короче всё обсудимо.
Понимаю что не лучшее место для такого поиска, но я пробую все варианты, если интересно пиши на фейко мэйл: serapis@yahoo.com
>>536602 И потому ты зашёл на двач. Уж тут-то ты найдёшь адекватных сотрудников.
И стесняешься дать ссылку на запиленную игру мечты, да? Да ещё такой подробный рассказ о новом проекте, что прям заболели все вокруг и готовы н энтузиазме тебя поддерживать.
Сдаётся мне, ты очередной шизик.
У нас в последнее время просто наплыв директоров. Школа бизнес молодости где-то протекла?
>>536610 Есть различные наработки, хотелысь бы вместе выбрать. >>536616 Ты дебик или на русском читать не умеешь? Ссылки не будет посколько нихрена ничего не было сделанно. А насчёт энтузиазма, прямо же написанно что раз есть бюджет будет и зарплата...
>>536602 > Нашёл с горем пополам инвестора Чот кринжанул. Инвесторы на 2д перделки сделанные на гамаке.
Так и представляю очередную группу присосавшихся к деньгам долбоебов, которые пол года нихуя не делают, проебыват деньги, а потом пишут о закрытии проекта. А так оно каждый раз и бывает, когда вы свою инди поеботу начинаете делать с серьезными ебалами напялив свои засаленные колхозные пинжаки как в ностоящих фирмах!
Не помню ни единого завершенного проекта, который бы начинался так. А вся инди годнота вообще была сделана на коленке одним-двумя людьми, которые просто проверяли свои силы в игрострое.
>>536718 >Stardust Valley Stardew Valley Создан одним человеком, который и рисовал, и кодил, и писал музыку. Начал делать игру спонтанно, пытался лишь воссоздать более старую игру Harvest Moon, как проверку своих сил после обучения программированию. > World of Goo Создан двумя друзьями в свободное время от основной работы в EA. > Minecraft Создан одним человеком. Спонтанно, как попытка возродить более древнюю и уже дохлую на тот момент игру Infiniminer.
>>536700 > А вся инди годнота вообще была сделана на коленке одним-двумя людьми, которые просто проверяли свои силы в игрострое. Инди-годнота типично сделана адовыми профи с десятком лет за плечами увидевшими что издатели уходят из рыночной ниши малых и средних игр.
Вопрос теоретического порядка. Есть игра на ведра https://www.youtube.com/watch?v=5G7Xb5gFa80 Как наиболее оптимально реализовать похожую механику поведения пловцов? Рассчитывать шаг исходя из того что в игре все клетки одного размера и добавлять условия при встрече с бортами? Как вообще реализуют такого рода игры с хождением по клетке? вот еще пример ходьбы по клеткам https://youtu.be/ptYwMwxP7ho
>>537105 А в чём вообще проблема заключается? Сам-то подход пытался придумать?
Я бы сделал ds_grid, задающую координатную сетку. В каждую ячейку поместил бы массив, описвающий её содержимое. Тип клетки, соответсвующий спрайт, всякие дополнительные параметры типа "рассыпанные камни" или "в зоне действия водоворота". И естественно ссылки на объекты, которые в ней находятся.
Для всего этого дела создал бы контроллер, который бы в ds_queue собирал от объектов запросы на перемещение из одной клетки в другую. Ввёл бы параметр отвечающий за "ход". За один ход один обхект может отправить столько запросов на перемещение, сколько клеток за ход он может пройти.
Затем в конце каждого хода выключал бы контроллер игрока, и двигал объекты в соответствии с ds queue, проигрывая анимацию движения.
>>539907 У гамака есть огромная проблема. При мало-мальском усложнении проекта вся структура кода идет по пизде из-за того, что ГМЛ очень и очень слаб. То есть вместо того, чтобы писать человеческие классы с нужными методами, ты постоянно плодишь скрипты, которые лежат хуй знает где и ты начинаешь охуевать от говнокода.
Плюс отсутствие нормальных человеческих структур данных вымораживает. ds_list, ds_map - это ебаный ад и израиль.
Т.е. пилить всякие платформеры/раннеры несложные гамак позволяет очень легко и быстро. Но как только ты делаешь что-то с механиками посложнее - начинается пиздец.
Пилю крч платформер со случайно генерируемыми платформами по которым надо прыгать. И фишка в том что при соприкосновении с платформой снизу или сбоку объект игрока прилипает к ней. И соответственно платформа начинает двигаться с игроком. Как фиксить? От чего может быть? Вот говнокод в столкновении с игроком
if !place_free(x+30,y) { move_contact(360); vspeed = 20;
// x = x+(global.levelSpeed+10) }
пытался запилить костыль hspeed = o_platform.hspeed; в последней проверке чтобы объект игрока принимал скорость платформы и она не сдвигалась но все равно. Платформа спавнится с hspeed=(0-global.levelSpeed) В create у контролера global.levelSpeed = 6
У тебя ещё гравитация работает? Направление vspeed учитываешь? Скорее всего у тебя вот это (vspeed < 0 && !place_free(x,y-vspeed)) в правду превращается, когда vspeed обнуляется, а потом срабатывает гравитация. Хуй знает короче.
Запускаешь игру в режиме дебага, когда объект прилип к платформе табаешься в ide и ставишь брекпоинт в step event объекта. И шаг за шагом смотришь, что у тебя срабатывает.
Запостил какой-то кусок кода без коментов, без объяснений. Мы угадывать должны, как оно у тебя работает?
Безотносительно твоего вопроса - не рекомендовал бы использовать вот эту шнягу искаропки: move_contact, place_free и т.д. Особенно если пишешь платформер. Напиши свои функции, о работе которых ты будешь знать всё. А то тебя ждут весёлые провливания сквозь пол, застревания, прилипания. Вот это всё.
А у меня вопрос, как сделать анимацию броска кубика (6-8-10-20 граней, способ, наверное, универсальный должен быть). В смысле, ну, не рисовать же анимацию перекатывания от каждого числа к каждому числу, верно?
>>539833 Перекат в процессе, заодно хапнул заказик, чтобы училось лучше. Юнька-таки гораздо удобнее конечно, если в ней разобраться. На гме у меня правда все делалось в 1.5 - 2 раза быстрее, но чем дальше в проект, тем больше пизда рулю в плане организации кода. Человеческое ООП решает все-таки.
>можно, например, вернуть только одну переменную >можно вернуть массив (или дс лист) с нужным кол-вом переменных
А что с этим не так? Деды возвращали из функций всегда по одной переменной, и ты так делай. Чем отдельные скрипты принципиально отличаются в этом плане? Нужно много данных вернуть - заворачиваешь их в объект/структуру/массив/небо.
>>542602 3д в гамаке хуевый, не стоит даже пробовать. В 2д в принципе можно делать что угодно, но если у тебя планируется ложная логика проекта, то быстро упрешься в ограничения GML/
>Установочник запускается,установка успешно проходит,а вот сама прога не катит! sad
>Все просто и сложно одновременно. Была такая же проблема. В Appdata есть файлик trace там ошибка твоего запуска. У меня ругался на framework. Исправил версию в файле .config и все распаковалось. Поправил версию framework в распакованном studio и все заработало.
Но у меня папка проги в appdata пуста. Что написать в конфиге?
Как вы ориентируетесь во встроенных функциях и переменных? В мануале они приводятся по ходу дела и в разных местах, а в меню скриптов только списки без описания.
Анчоусы, как по уму хранить большие объемы текста в игре?
Раньше просто записывал все в переменную, но теперь когда делаю игру с охуеть каким колличеством текста понимаю что на локализации ебнусь даже с двумя языками. У меня всякие диалоги, реплики, прочая срань.
Хелло ворлд, сделал коника. Понял, что зря у меня весь код в степ ивенте, наверно не так надо было начинать. А вы настраиваете один ивент и в нем пишете все основное или делаете по скрипту на фичу? Есть рекомендации как лучше их организовать?
>>543988 Всё что можно - в скрипты. Всё разбиваю на регионы. Для каждой фичи - свой объект. За параллакс фонов отвечает obj_bg, за свет obj_light, за интерфейс obj_gui
6к деревянных (и та за не мультиплатформу) - непосильная ноша, имхо. Есть ли какие обходные пути, или, например, пиратские версии. Ясен хуй, на стим/прочее не выложишь с взломанной версии, но в любом случае, есть ли какие обходные пути.
Или возможно ли без последствий, сделать проект на взломанной версии, а потом, когда уже готовый проект пихнуть в купленную версию? Возникают ли какие-нибудь несоответствия или артефакты/ошибки?
>>544013 upd:// где-то читал, что тут платишь и всё, ты вроде как разработчику ничего не должен, и если смотреть в перспективе - с отчислений разработчику отдашь намного больше, чем эти 6к.
Меня интересует безпроблемный перенос со взломанной версии на купленную
Тоже запарился, но у меня не с анимации, а движение на 360. Есть два объекта - снаряд и препятствие. При расчете столкновения по х, у снаряда его маска вообще игнорируется, хоть так >>499296 хоть точно по спрайту, а происходит столкновение центра снаряда с границей препятствия. Хотя все настройки у обоих объектов одинаковые.
Я уже даже габариты снаряда в отдельные переменные считал и сталкивал - в половине случаев работает как надо, но застревает при движении возле препятствия и на некоторых углах лол.
Спасибо за подсказку, маска заработала. Я использовал collision_point ставя prec=true, почему-то в этом случае он все равно считает маску центральной точкой.
Пока это увидел, перебрал имитации маски через collision_circle и collision_rectangle. Решил, что в этом случае столкновения вообще лишние, сделаю снаряду превентивный круиз-контроль.
>>544013 Работаю на первой же скаченной с рутрекера версии, проблем вообще никаких. ГМ 2, да, если что. Не знаю, как вы находите проблемы с этой прогой.
Поясните по дельта-тайм. Хули оно такое неточное? Даже у васянов с ютуба при расчетах всегда неточные числа получаются, а они на это реагируют мол: "Да неточно и хуй с ним чо)) результат на пару десятых отличается каждый раз, да и пох)))) лойс подписка))"
При длинных расчетах вообще же вся физика по пизде идет. Должен же быть какой-то метод чтобы игра не была фиксированная на 60фпс и при этом выполняла точные расчеты вплоть до пикселя.
>>547335 Падажжи, дельта тайм и не должен быть одинаковым. Он всегда разный, хоть убейся. Поэтому его и юзают для того, чтобы на него множить условную скорость и получать опять уже условно константную скорость перемещения объекта вне зависимости от фреймрейта.
Если нужны равные промежутки, то велкам в юнити, там есть FixedUpdate
>>547338 Так это в видео отображается и не дельта тайм, а результат на основании перемножения дельтатайма на другие переменные. При использовании дельта тайм у тебя объект одно и то же расстояние преодолевает каждый раз за разное количество времени. Каждый раз разница в ноль-целых-хуй-десятых и автор видео говорит что подобная мелочь в общем-то хуйня и случилась она просто из-за перепада фпс.
На деле же эта крошечная единичка запускает у тебя в коде цепную реакцию и провидит к полному пиздецу в физике, стоит твоей игре просто хотя бы дропнуть пару фпс в каком-нибудь моменте.
>>547341 И в чем смысл тогда этого дельта-тайма, если из-за перепадов фпс и неточности расчета у тебя, к примеру, персонаж начинает прыгать на пару пикселей ниже положенного, в то время как у тебя код написан чтобы персонаж прыгал вверх исключительно на N игровых блоков, да аж с точностью до пикселя.
>>547343 Ты путаешь назначение дельта тайма просто. Он никогда не служил инструментом для того, чтобы что-то делать через разные промежутки времени.
Ты там чет загнался совсем с >в то время как у тебя код написан чтобы персонаж прыгал вверх исключительно на N игровых блоков, да аж с точностью до пикселя.
Посмотри тутор сполдинга, он рассказывает о том, как это все реализовать.
После наложения этого шейдера я рассчитываю получить наклонную линию, у которой верхняя точка остаётся на месте, а нижняя смещается на 20 пикселей вправо. (PixelW - это размер пикселя в масштабе текстуры)
>>548025 Ну как всегда, сам спросил, сам ответил. v_vTexcoord.y - видимо изменяется от 0 до 1 не при прохождению по спрайту. а при прохождении по той texture_page на которой нарисован спрайт.
Тогда я беру uvs координаты низа спрайта, верха спрайта и передаю их в шейдер. var tex = sprite_get_uvs(sprite_index,image_index); zero_level = tex[3];
Этот код определяет ближайшего противника и заставляет объект идти к нему. Как заставить этот объект определять не один тип противника, а несколько? Например есть объект o_enemy1 и o_enemy2, но объект будет двигаться к тому, который ближе.
Запускаю игру в обычном режиме появляются просадки в фпс на 1-2 секунды во время игры. Когда запускаю в дебаг моде их нету. Такое возможно? и почему так можешь происходить? на сцене кроме персонажа ничего нету.
в чем тут проблема? var lerp_amt = (time - keu_previous/number_of_key_times)* number_of_key_times; ///////////////// color_mix= [lerp (color[key_previous,0],color[key_next,0],lerp_amt), lerp (color[key_previous,1],color[key_next,1],lerp_amt), lerp (color[key_previous,2],color[key_next,2],lerp_amt)];
Начал пилить игруху на аднроид, запилил пару комнат, в гамаке и в ЕХЕшнике всё работает как по маслу. Скомпилировал апк потестить на мобиле, запустил, а там всё распидорасило, какие-то кракозябры, все спрайты повылезали которые вообще не должны быть видны в начале игры, вью отображаются половинчатыми, полный пиздец. В чём может быть проблема? Гамак 1.4.1567, с бухты качал.
>>571269 Все гайды и туториалы есть. Нет смысла пересказывать их ИТТ. Если английского не знаешь, то у пети сканера на ютубе есть подробный туториал по сборке приложения под андроид, с иосом примерно так же, не ебу. Не фанат эппла.
У меня тут НЕСЧАСТЬЕ приключилось. Делал себе игру, но буквально на неделю где-то пришлось сделать перерыв. Все работало нормально.
А сейчас открыл Гейм Мейкер, он обновился, я запустил Run и происходит какой-то пиздец: половина слоев не рендерится, половина мелькает и моргает, и полная жопа. Я ничего не изменял в коде. Почему такое могло произойти?
>>573355 Ложная тревога: дело оказалось в том, что я нечаянно забил жесткий диск до отказа за эту неделю, что и привело к таким результатам. Освободил место и все стало нормально. Следите за своим жестким диском друзья, а юнитипидорам перо под ребро и хуй в сраку
Анон, помоги с вопросом Поясню за суть. Моим дипломным проектом является игра. пишу аркадку на с++ в UE4, и до меня доебался куратор по димпломке с вопросом, А зачем А нахуя твоя игра и дипломка? Лично я делаю для опыта и интереса, она хочет чтобы я раскрыл сокральный смысл моей работы, чтобы она спасла детей в африке, но я не ебу как это описать для чего работа
>>577881 Был научным руководителем у выпускника, мы с ним на юнити сделали игру ака вотч догс 2д про мамкиного хакера, взламывающего здание. Приплели как анализ инф. безопасности систем. Когда игрока ловили охранники итд итп показывалась статья с описанием. По мере прохождения ГГ говорил о том, почему текущая организация плохо защищена. Студент учился по этой специальности, сдал на 4(хотя мог изи на 5 сдать,он сам начал запинаться во время выступления).
Как вариант советую тебе взять какой-то процесс из жизни по твоей специальности и воспроизвести его с использованием твоего же УЕ4. А аркада абсолютно не связанная с твоей специальностью да, нахуй не вперлась никому. Пожумай сам своей головой,в комиссии будут сидеть 40+ дяди и тети, которым твои игрушки не интересны, им интересно, чтобы ты с умными щами заливал про важность предварительного анализа и моделирования hueta.Name , и именно твоя убогая программа позволяет это сделать.
>>577961 Читаю это все и понимаю, какая же рашкинское образование галимая фикция и натужная попытка создавать видимость работы. Неудивительно, что все в стране по такому же подобию функционирует (если вообще функционирует).
>>577881 >А зачем А нахуя твоя игра и дипломка? Чтобы выпуститься наконец-то из вашего говновузика, Будто бы, блядь, дипломные работы вообще должны что-то решать, а не быть просто бумажкой для подтирания. Я бы ответил как-то так.
>>577853 Забей, они сами не знают чего хотят, поэтому им лучше более универсальный двиг. А если знаешь, что двадэ, то гамак наиболее удобный в плане отсутствия всяких "прелюдий" для начала работы. Берешь и рисуешь/кодишь. Изи.
>>577961 Вспомнил, когда учился в институте, нам физик сказал - напишите программу, которая моделировала бы наглядно какое-нибудь явление, поставлю зачёт. Я (как удивительно) - угорал по играм, написал на паскале простенькую программку, которая рисовала луч, отражающийся и преломляющийся от поверхности. Нарисовал (в пиксельном редакторе) транспортир, красивую поверхность, сделал управление кнопками, чтобы углом полосочки-луча управлять и по кнопке чтобы транспортир это вылетал и прикладывался к лучу, лол. Получил зачёт автоматом.
>>577971 По крайней мере если ты хочешь делать игры - там ты идешь тупо в институт, который, блять, охуеть!, учит делать игры, а не дрочишь 4-5 лет бесполезную хуету, чтобы иметь возможность как-то уцепиться по одной из профильных тематик и сделать игру как диплом, и то не факт что проканает, а без диплома тебя развернут.
>>577973 Я второкурсникам когда преподавал структуры данных, сказал им самим выбирать тему курсовой, подготовил около 10 тем по играм от крестиков ноликов до тетрисов(они на тот момент по программе только консольные писали). Почти все принесли игры и им понравилось, месяца полтора я их консультировал, каждому помог составить план разработки. Ну, как план, помог каждому разбить на этапы и каждую неделю приносить и показывать результат. Они были очень благодарны, хэх. А потом я дропнул преподавание, когда меня хотели заставить снова читать хуйню по информационной безопасности, в которой я не работаю. Ибо нахуй плодить необразованность.
>>577980 Опять прилетаешь РАШКУ? В Казани например на базе КФУ (в одном из его зданий) есть факультет, в котором учат твоему любимому гейдеву, на вторых курсах или позже начинается целенаправленное изучение сисярпа с Юнити. В Штатах тоже не на каждом углу учат игры делать, но да, факультетов там немного больше. Понапаступают в сельские шараги, а потом удивляются. Да и например PyGame в школах с 11 класса по профильной программе изучают, в Яндекс Лицеях с 8-9 классах могут.
Два раза пытался в юнити, не осилил. Решил попробовать в гамак. Прочитал весь этот тред, и хочу сказать, что тут сидит один из самых адекватных и помогательных анонов на этой борде. Если ты ещё сюда заходишь - добра тебе и удачи (если не заходишь - то всё равно удачи и добра). Смотрел, скольким ты тут помог и диву давался. Респект и уважуха. просто-решил-высказать-своё-очень-важное-мнение-кун
>>555549 Давай порассуждаем. distance_to_object будет искать ближайшее расстояние от объекта до объекта distance_to_point будет искать ближайшее расстояние от объекта до точки point_distance ищет показывает между двумя точками и ничего не ищет Значит, оно быстрее всего
>>542386 Даю добрый совет - если много текста, используй бесплатное дополнение, которое есть на маркете. Работает с текстом просто на ура, используя кучу сложных скриптов. HappyTearParacoopa
>>579045 С гамака все уходят, он бесперспективный, не развивается, содержит фатальные дизайнерские ошибки, которые не дадут тебе сделать сколь-нибудь крупную игру.
Из годота может что-то хорошее и выйдет. А может и нет.
А юнити уже сейчас готовый продукт, стабильный, популярный и продолжающий активно развиваться.
>>580492 Двачую. >>580020 Вообще-то шарп похож на кресты, и джава похожа на кресты. А знаешь почему? Потому что они оба из семейства си-подобных языков!!
Сызнова решил вкатиться в (вечную) разработку рогаликов и иже с ними, есть GMS 1.4 Professional лицуха, но хочется ВОРКСПЕЙСА и свистелок с перделками. За полторы тыщи брать новый гамак не хотел, но сейчас на хамблобандле за 500 отдают. Купить или ну его нахуй?
>>581135 >меня бесит слово override, которое там есть. Что оно значит, я не знаю Ты странный. Оно позволяет перезаписывать одну и ту же функцию, как угодно, в рамках наследуемого класса.
>>581418 >только экспорт на шиндовс Как что-то плохое. Аудитория на маках и линухах стремится к нулю, а те кому очень нужно могут под вайном запустить.
Антоши, давно ничё не писал на гамаке, в последний раз пользовался версией 8.1, а гмс1.2 на то время не понравился т.к. интерфейс стал выглядеть уёбищно и игры компилились долговато.
Так вот, как со всем этим сейчас дела обстоят? Правильно понимаю что уже имеются компиляторы под пс4,хуящ,свитч? Как с пиратством?
В принципе восьмёрка еще пашет, но, бля, это всё же говно мамонта и пора обновиться.
>>583024 актуальный кряк практически всегда можно найти тут в обсуждении(на нынешнюю кста там тоже есть),сам пользовался пока не купил (ведройд аштимель и шиндовс робочие проверял сам) https://gmsc-97507.firebaseapp.com/
>>583793 ну разок поеаться с сдк придется ,но достаточно прочитать оф гайд на сайте йойо ,там все написано, только на пендоском , но даж по картинкам удет понятно
А то у меня вопрос появился по организации данных в коде. Делаю игру нелинейную, в которой есть несколько персонажей и линейный прогресс его истории. Проходить истории каждого можно в любой момент.
Так вот, вопрос заключается в следующем: Для каждой комнаты должен иметься список персонажей и их параметров (координаты, текущий спрайт и прочее подобное), триггеров катсцен и всего того, что может появляться и удаляться через прогресс истории.
Как и где их лучше хранить? Я предполагаю пока, что для этого хорошо подойдет json. Если через json делать, то для этого нужно использовать ds_map()? Как быстро гамак работает с ним вообще? Есть ли способы быстрее/оптимальнее?
>>588623 Хммм, ну вот смотри, меня интересуют платформы: десктоп, мобилы, хтмл5 - на годоте я смогу создавать свои поделия бесплатно. Чтобы аналогичное сделать на гамаке, мне потребуется 99+149+199 = 400 баксов. Итак, что такого крутого мне сможет предложить гамак, чего у меня нет в годоте?
>>588646 Сходи в годотред, там тебя покормят ссылками на игры прямо из шапки и ты сможешь в 100500й раз сказать что "игры по ссылкам не игры, дайте игры на эртэ".
>>588635 Бля, ну вот серьёзно. Ну хватит уже эти движкосрачи. Лучший движок тот, который лично ты лучше знаешь. Если анон не знает ни одного - для него лучше будет тот, что проще изучить. А с учётом того, что ему нужно 2D - стрелка указывает на два варианта: Construct2 или GameMaker. >я смогу создавать свои поделия бесплатно Не бесплатно. Ты не учитываешь своё время. Если ты вложил полгода (1000 часов примерно), то ты потратил минимум 1000*10=10000 долларов. 400 долларов - это 0,4 от всей суммы затрат. Или 40 часов. Насколько дольше ты будешь разбираться в годоте/юнити/дельфи/уече и насколько быстрее(медленнее) ты тоже самое сделаешь в гамаке? Ответь на эти вопросы и ты поймёшь, что дешевле - годот или гамак. Но это, опять же, будут твоя личная стоимость.
>>588651 >игры по ссылкам не игры Тетрис и марио можно и без движков запилить и бегать верещать - ВОТ ИГРЫ ВООООТ, ДВИЖКИ НЕ НУЖНЫЫЫ! Нужно уже отдельный термин вводить "годотовская игра" как символ кала, высранного школьником на какай-нибудь конкурс школьников - высри хуйню за 48 часов!
>>588652 >Бля, ну вот серьёзно. Ну хватит уже эти движкосрачи. Щас пну в последний раз залётного додика и всё. >>588653 Говноигры не продаются в стиме, сразу тонут на дне рейтингов. А игры на годоте успешно продаются в стиме. Обтекай.
>>588604 >опенсорсность бесплатнасть Это значит, что один аргентинский велосипедист, лежа на пляже в перерывах между написанием чиптюновой музычки и поревом жены будет делать фичи к движку очень долго с огромным количеством багов, не доводя ни одну до конца. Донатят им 10500 долларов в месяц на двоих.
>>588660 >годот полное говно, вот четкие неопровержимые аргументы >>588657 >Донатят им 10500 долларов в месяц на двоих. Вот бы и мне так же впаривать говно лохам. Но не выйдет. И я знаю почему. И у тебя не выйдет. И ты знаешь, почему. Себе-то не ври. А двач простит.
>>589301 >А зачем мне 3д? За тем, что все долбоебы думают - 3д сложна, сделаю 2д говно на мобилки! - И теперь на мобилках такой поток хуйни, что никак не пробиться. Следующий этап осознания - на мобилках ловить нечего, сделаю 2д хуйню для стимы... Но там тоже самое... В итоге придешь к тому, что 3д делать сложно, но конкуренция меньше и деваться некуда.
Сап двощ. Пытаюсь в sprite stacking. Как можно реализовать поворот всех объектов в комнате? Хочу добиться эффекта как в dont starwe. Пробовал через lenghtdir_x/y но безуспешно
В гамаке как то можно сделать так, чтобы спрайт который крутиться с помощью image_angle был как второй квадрат? мб шейдер какой или можно прям в игре рендерить это? А то если его просто крутить, то будет как третий квадрат, который совсем не пиксель перфект
>>589653 Спасибо анончик. Все оказалось намного проще. Нужно было просто растянуть сурфейс. как то пиздец проблематично это все было гуглить. с таким трудном нашел то, что нужно
>>589752 >ГМ со второй версии в говно скатился Почему? Я запускал ГМ2 и у меня вообще вопросов не возникло. Все удобно и понятно (с помощью ютуба). Черт, там даже встроенные туториалы есть.
>>589962 Интерфейс слили в абсолютное говнище. Вместо нормальных вкладок или окошек, как в прошлой версии, какие-то обоссаные сплайны с воркспейсами. Сами элементы интерфейса увеличились раза в полтора, так что реального полезного пространства стало гораздо меньше чем было. Сам же гмл порос каким-то говном -- добавили слои, которые на самом деле обёртка глубины (которую убрали, удачи теперь с depth = -y), с конвертацией строк намутили какой-то ёбаный пиздец с тысячей различных поведений вместо простого автокаста числа в строку.
При этом все, кто купил ГМС1, идут нахуй покупать это чудо заново. И ладно, добавили бы какие-то хорошие фичи, так нет же, сговнили интерфейс, глубину и добавили анимированные тайлы.
И буквально только сейчас, после трёх лет с релиза ГМС2, ЁЁ таки подняли с жопы и впиливают структы в гмл - то, что у них просили ещё со времён ГМ8. Хотя ещё надо посмотреть, как они их впилят - не мал шанс, что просрут так же, как просрали каст чисел в строки.
Я писал игорьки на гм порядка шести лет, но после такой хуйни свалил от него подальше - и ни капельки не жалею.
>>590056 >Интерфейс слили в абсолютное говнище. Вкусовщина. Я после интерфейса гмс2 не могу воспринимать интерфейс гмс1 вообще.
>(которую убрали, удачи теперь с depth = -y) Так и делаю, всё абсолютно нормально. Совмещаю слои и depth. Слои удобны в room editor. Слой это просто ссылка на глубину.
>автокаста числа в строку О чём ты, я не понимаю?
А вот дебагер в гмс2 сделали просто роскошным. Ещё бы дали возможность зумировать текстуры в предпросмотре и дебагать шейдеры.
>>590084 >Так и делаю, всё абсолютно нормально. Совмещаю слои и depth. Слои удобны в room editor. Слой это просто ссылка на глубину. Там для этого новый слой создаётся на каждое новое значение depth. Ты себе так игру повалишь к чертям.
>О чём ты, я не понимаю? В ГМЛ чтобы в строку пихнуть число, надо делать вот так: "value: " + string(someValue) + "." Во всех нормальных языках это давно делается вот так: "value: " + someValue + "."
Люди просили сделать нормальный автокаст, так эти долбоёбы устроили какую-то джаваскриптовую парашу и впилили наоборот. Теперь строки конверируются в числа. Иногда. А иногда не ковертируются, а вылетают. Например, 1 + "2" выдаст 3, а "1" + 2 - ошибку, нахуй. Сурс: https://forum.yoyogames.com/index.php?threads/gml-consistency-in-gms2-v2-2-2.59856/
>>590089 Я в курсе. И что? Для gui у меня слои вверху, для обхектов на карте набор слоёв ниже. В room_start я забираю минимальное и максимальное значение глубины для объктов (из первого и последнего слоёв, предназначенных для объектов), вычисляю шаг глубины, соответствующий шагу по y и каждому объекту добавляю room_start event с одной строкой depth = obj_game.zero_depth + obj_game.depth_step*y;
Так на старте комнаты все объекты занимают свою глубину. Очень удобно, т.к. на карте их куча, но все распределены по слоям. Можно выключить все кусты, или все деревья и т.д.
>>590089 >В ГМЛ чтобы в строку пихнуть число, надо делать вот так: >"value: " + string(someValue) + "."
Я вообще не вижу в этом никакой проблемы. Наоборот, это, сука, нормально.
>Люди просили сделать нормальный автокаст
Со временем я начинаю понимать, что автоматическая конвертация переменных - это не очень хорошо. float должен быть float, real должен быть real, int не должен внезапно превращаться в real и т.д. Прибавлять к строке число не правильно.
Вытащить число из строки.. Это иногда может быть полезным. Но > 1 + "2" блять, не надо так.
>>590093 >Я в курсе. И что? Для gui у меня слои вверху, для обхектов на карте набор слоёв ниже. В room_start я забираю минимальное и максимальное значение глубины для объктов (из первого и последнего слоёв, предназначенных для объектов), вычисляю шаг глубины, соответствующий шагу по y и каждому объекту добавляю room_start event с одной строкой
Хуйня это. Не должны слои плодиться сотнями. Собственно, одна из причин, по которой с ГМ свалил - если не хочешь следовать идиотским решениям разработчиков, придётся сильно говнокодить, либо заглотить как есть.
>>590095 >Со временем я начинаю понимать, что автоматическая конвертация переменных - это не очень хорошо. float должен быть float, real должен быть real, int не должен внезапно превращаться в real и т.д. Прибавлять к строке число не правильно.
Приветики, ты на гмл пишешь. У тебя там только два типа данных - дабл и строка, да ещё и строгой типизации нет. Вот это действительно неправильно, а автокаст в строку ни к чему плохому не приведёт.
> Вытащить число из строки.. Это иногда может быть полезным. Конечно. Только это должно быть выполнено в фиде отдельной функции, а не автокастом, который ещё и работает только в половине случаев.
>>590056 Твой пост пропитан синдромом утенка. "Раньшибылалудше, Дуров, верни стену", ага. Каждый твой аргумент — "вот тогда было так, а щас вот так и мне не нра". Все с тобой ясно.
>>590109 Так дело-то в том, что и у ГМС1 интерфейс был говном. Ужасно дёрганный и глючный. Это реально надо было поменять, но не в ущерб реальному рабочему пространству. Более того, на нотубуке с трекпадом воркспейсы - вообще какой-то пиздец. Слои же - это классная концепция, которую давно пока было ввести. Но не так убого, как это сделали ЁЁ. Ведь можно же было оставить сортировку по глубине внутри слоя, и всё было бы круто. Даже дело не в том, что оно в принципе поменялось и это хуёво - дело в том, что текущая реализация ставит палки в колёса если хочешь depth = -y. ЁЁ просто поленились сделать по-нормальному, а обычным юзерам теперь это расхлёбывать
Собственно, сейчас мне скорее кажется, что ЁЁ решили своей аудиторией сделать всяких художников и прочих неосиляторов (у них и 4к мониторы на пол-стены скорее всего есть, на которые этот интерфейс влезет), а программистам помахали ручкой.
>>590158 Почему же? Видел много программистов, ковыряющих ГМ. Даже сейчас. Под ГМС2 даже нормальный редактор кода запилили, без обоссаных сплайнов и со вкладками.
>>590398 А чего жоскаво-то? Все современные движки сделаны по одному шаблону: майнлуп с колбеками и сиподобный синтаксис скрипта. Тебе один раз нужно сделать образец для переноса игор с движка А на движок Б, в котором будут имитированы нюансы движка А с реализацией на движке Б. Например, встроенные функции-хелперы. В движке А допустим есть функция lerp(vec2 from, vec2 to, float step) и код игры завязан на неё, а в движке Б это метод вектора vec2.lerp(vec2 to, float step). Зная это, ты один раз пишешь примерно такую функцию-обёртку: lerp(vec2 from, vec2 to, float step) { return from.lerp(to, step); } И далее исходный код пихаешь без изменений. Ну это самый простой случай. На деле инди разрабы могут дичайшую дичь издателям приносить.
>>590423 Не вижу обсыка. Анон сделал прототип на движке, в котором ему удобно делать прототип. Студия издателя перекинула прототип на профессиональный движок и сделала релиз.
Кто-нибудь знает, как за один draw text сделать разные цвета? Есть мб какой-то пример, весь гугл обошёл, везде написано что гамак на такое не способен.
Полгода перерыва, вчера пофиксил мальца свет и тени, запилил блуждающие тени или типа того, которые должны игрока убивать (но смерти пока нет), вроде нормально, хотя конечно стены надо все таки не цельным спрайтом делать, а четырьмя отдельными, а то обратную сторону видно, когда не должно. Процедурную генерацию на потом отложил, я ее за час сделаю (не выёбуюсь, опыт есть и ворлд генерации и данжей), сейчас enviroinmental dangers, инвентарь, сейв/лоад, такое.
>>439561 (OP) >Делимся опытом Пишу на gmEdit, еле-еле нашел работу 10$ в час на удаленке, так вышло что из Unity3D, Cocos Creator'a и Phaser самая доходная работа именно на платформе game maker studio 2.
Остальные gms'ы лучше даже не трогать, они мертвы и не поддерживаются. gmEdit позволяет делает такие вещи как лямбды, даже какие-то корутины и фэйковые типы данных (аж через точку будут показываться, но само собой для такого трюка нужны энамы). Также помогает с аргументами скрипта, больше никаких грязных argument0, argument1, просто пишешь #args val, foo, bar (а если в конце добавить запятую тогда уже можно работать с argument count для бесконечных аргументов)
Что могу сказать о том что такое game maker и почему он может быть интересен, в нем достаточно развитое сообщество, есть свои звезды программирования которые накодили к нему сторонних инструментов и библиотек, lazyLoad, gmEdit, gmLife, gmsTweens, Scrimblе, HaxeToGML, был еще какой-то для более интерактивной справки Плюс к этому он позволяет писать логику игры местами даже лучше и быстрее чем на каком-нибудь lua. Для меня этих плюсов достаточно чтобы покрыть его минусы. Но само собой есть игры, в которых я гмс никогда бы не выбрал (но блин он такой халявный местами, что если честно через скрежет открывал юнити, но что поделать, это жизнь, а я программист, который должен решать задачу)
>>623766 Также хочется добавить к этому сообщению, что я стал ценить свое время. Поэтому не желаю денег на инструменты, чтобы заработать их еще больше. Нет смысла искать пиратские версии, просто даже из-за обновлений и поддержки авторов, которых можно донимать, потому что купил их инструмент)
>>495719 в некоторых случаях и инвентарь требует оптимизации, потому что по итогу в некоторых случаях 180 или больше ячеек инвентаря быстрее работают в объектах, чем в фейковых структурах) Но быстрее они будут работать только если не будут каждый шаг обновлять свою позицию по центру, а только при открытии например. Есть кейсы когда важно оптимизировать, а иногда нафиг не нужно.