24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
>>686905 Только что проверил с помощью цикла в цикле и всяких операций внутри. Производительность от выполнения кода в степе не отличается от выполнения того-же самого в драве. Может, если бы там было какое рисование, тогда разница была бы заметна, но у меня в пустом проекте без спрайтов разницы нет.
Производительность при обращении к глобальной переменной выше, чем при обращении к переменной объекта. Полусчилось, что у глобальной ФПС был больше 200, инога падал до 130, не знаю почему. А при обращении к переменной объекта фпс никак вообще не поднимался выше 130
>>686936 >The draw event is a very intensive event, in that it's one of the events that takes up most time and resources... to that end it is never a good idea to do anything in the draw event other than drawing. So save your large code or complex actions for the Step event or Alarms or whatever other event fits, but leave the draw event clear for the drawing as that's what it does best.
>>686949 В пустом проекте с парочкой draw call у тебя разницы не будет. Но хуле, ты ж лучше шаришь в гамаке, чем его создатели. Ебашь код в draw, не слушай никого.
>>692077 Ага, приятного аппетита. Теперь все скрипты переписывать под формат function что ли? Вписывать все аргументы в скобки или даже переименовывать их. Скрипты же теперь глобальными стали и запускаются при запуске же игры. При этом при конвертации всё работало ровно до тех пор, пока не захотел добавить скриптик новую функцию. Или я чего-то не понимаю в конвертировании?
Вроде перекатился. Пришлось стереть папку options в проекте, тогда всё заработало.
Переписывать ничего не пришлось, кроме замены названия переменной "new" на "new_quest", т.к. new в новой версии ключевое слово.
>>692155 Компилятор сам расставил внутри всех моих скриптов строки function sc_box_add_item(argument0, argument1, argument2, argument3) { Внутри старый скрипт без изменений. }
Скрипты вроде работают.
Но да, есть поломки. Например у меня по какой-то причине обрываются некоторые звуки и музыкальные треки. Пока изучаю.
>>692166 Радует, что у анона хотя бы нормально работает. У меня же после конвертации при открытии скрипта окошко с кодом осталось точно таким же, никаких изменений в коде, однако рядом же (сверху) появилось другое окно, в котором указано название скрипта, аргументы в каждой отдельной строчке и пара чек боксов внизу. Возможно, это с чего-то включилось DnDшное оформлений функций, хотя само DnD вообще не используется в проекте. Как это проверить? Или що делать?
>>692386 Видимо, изначально всё таки это был DnD проект. Хотя и не ясно, почему канпилятор ругается на все функции после "успешной" конвертации. Как проще всего свичнуться в GML? Можно всё экспорировать или галочку какую нажать?
Аноны, как искать причины классического "Runner.exe exited with non-zero status (-1073741819)"? Игра просто закрывается, обычного окошка с ошибкой нет. Чаще всего (несколько десятков раз) это происходит после первого End Step Event у всех объектов в игровой комнате, но не в меню: чекал с помощью show_debug_message в начале и конце выполнения соответствующих Step Event и End Step Event у всех объектов. Причем такого никогда не случалось при первом запуске конкретно игровой комнаты, часто было при втором и нередко - в один из последующих. Два раза игра закрылась в середине игры, порвавшись при выполнении Step Event у монстра. Дс_листы удаляю сразу после использования. Циклы while и подобное юзаю в 2х скриптах (из тех, которые выполняются непосредственно во время нахождения в игровой комнате), вызываются они достаточно редко. В принципе, они могут быть причиной, однако тесты в пустой игровой комнате, где сбоев у этих скриптов быть не должно, всё равно приводят к этой ошибке с, кажется, не меньшей редкостью. Обнаружил это после переезда на 2.3. Тут кто-то пишет возможную причину https://itch.io/t/890645/feature-recommendation-tips-for-gms23-users. но GMLive - это всё таки не GMS2, хотя девелопер и пишет, что причина может крыться в багах GMS2. Есть соображения, как искать ошибку?
>>692825 UPD: дебаггерый режим просадки в FPS не показывает (вроде... из-за некоторой непредсказуемости момента вылет мог не успеть глянуть), но есть секундного масштаба фриз перед вылетом.
>>692825 >>692826 UPD №2: Может дело в изменениях синтаксиса? В релизном посте YYG не нашёл упоминаний о переработке старых команд. Может, дело в том, как работают новые функции? Или работе с arrays (потому что [ , ] не конвертнулось в [][], но продолжает работать, как и array_length/height_1d/2d).
>>692422 После того, как обнаружил что у меня ещё и пропали НЕКОТОРЫЕ из прикреплённых файлов и что сломались НЕКОТОРЫЕ из функций сохранения, и перестали проигрываться НЕКОТОРЫЕ звуки, принял решение не перекатываться.
Методы буду осваивать после того, как котёл доделаю.
>>692825 Такое бывает, если ты где-то конкретно накосячил. Создай debug project и закрывай комментами код, с которым ты работал в последнее время и пробуй запускать. Когда сообщение "Runner.exe exited with non-zero status исчезнет поймёшь, где именно искать.
Так, посоны, хочу в триджэ режиме вращать объект по оси направления вгляда камеры через d3d_transform_add_rotation_axis(xa,ya,za,angle), мозги совсем дегроднули от многолетнего просмотра порно, не соображаю как мне этот аксис высчитать, синусы катангенсы в школе очень хуево проходили, а занятия с матрицами по высшей матеше упустил в универе в своё время. При том мне пока даже хватит оставить z компонент за ноль, камера по вертикали мало двигается. Как из переменной поворота камеры простым кодом высчитать x и y компоненты вектора оси? Я мог бы конечно наговнокодить лютое говно, которое будет даже работать, но лучше же нормально закодить.
>>692910 d3d_transform_add_rotation_axis(cos(degtorad(o_camera.pan)),sin(degtorad(o_camera.pan)),0,-10(1-2side)) сделал так, но чот не всегда по нужной оси вращает, когда угол поворота камеры ближе к 0 90 180 и 270 то работает как по маслу, а на углах в 45 градусов ебенит по другой оси, как-будто я и не поворачивался
>>692874 Хорошо, спасибо, попробую. Странно только то, что почти всегда вылетает, между эндстепами предыдущего шага и новыми степами. Draw? Баги 2.3? В 2.2.5-то не было такого (ВРОДЕ) >>692876 Вроде нет. Может, само? Всё равно сравню. Спасибо, анон.
>>692825 Врываюсь в тред! Короче, у тебя где-то дата вытекает лишняя, проверь наследуемость, и ds листы и карты. Сегодня столкнулся с такой траблой, тоже долго ковырялся.
>>695738 Все ds-листы обычно больше десятка строчек не живут (но перепроверю, все ли убиваются), карт и наследуемости нет. Энивей, спасибо за внимание и советики, анон.
Разбужу мёртвый тред. Предположим, мне нужно рисовать спрайт, который не вшит в сам объект, и его анимацию нужно будет контролировать (выключать, если она кончится, например). В таком случае нужно будет создавать скорость image_index'а для этого спрайта отдельной переменной и прибавлять по команде. Вопрос: по какой формуле тогда просчитывать эту скорость, чтобы она была идентична той, что указана на самом спрайте?
>>697738 Ну например, в draw event пишу: if draw { draw_sprite(sprite_name,spd,x,y) }
В то же время в step event:
if !draw { draw = true spd += 0.1 }
if spd >= 10 { draw = false spd = 0 }
Как в данном случае рассчитать всё таким образом, чтобы прибавка к spd хотя бы приблизительно была равна нужной скорости, которая указывается на спрайтах (10 fps, 15 fps)?
>>697689 Ну смотри, у тебя есть room speed, которая 60 по умолчанию, у тебя есть спрайт допустим 15 фпс, 60/15=4. Соотвественно чтобы он работал с нормальной скоростью, тебе нужно показывать инкрементировать image_index раз в четыре степа, то есть в примере ниже будет у тебя что-то вроде spd+=0.25, только напрямую это сделать не выйдет, draw_sprite только целые значения принимает.
А вообще проще было бы сделать спрайт отдельным объектом.
Во сколько обойдется системник для комфортной работы в гамаке? Чтоб без тормозов, фризов и т.д. Ниче понтового в плане графики и механик делать не собираюсь, что то на уровне hotline miami.
Сап двощ. Делаю подобие платформера, пытаюсь заставить героя стрелять. Все работает, но он стреляет по прямой, хотя хотелось бы чтобы со временем пуля снижала свою высоту. Как это реализовать? Вот код который я пока использую для создания пули в коде персонажа if keyboard_check_pressed(ord("F")) { b = instance_create(x, y, obj_projectile) if (image_xscale = 1) b.direction = 180; else b.direction = 0; b.speed = bulletspeed; }
>>702087 Драг н дроп - это отсталая тема, что-то типа базового кодинга для самых маленьких. Симулятор ходьбы в сайдскроллере в нём может и удастся сделать, но для случая, если тебе нужен будет больший функционал, лучше сразу начинать кодить на ГМЛ. >в любом случае нужно смотреть на код других? Ну если ты говоришь, что у тебя нет знаний кода вообще, то да, нужно смотреть на то, как делают другие, и курить мануалы гамака, в которых говорится, какая функция что делает. Потом уже поймёшь, как и что работает, и будешь сам делать.
>>702088 В смысле, чтобы она у тебя по баллиcтической кривой двигалась? Пишешь в step пули что-то вроде speed-=0.01 y-=0.001 и радуешься. Кстати, F -- это не самый лучший выбор для кнопки стрельбы, ctrl или z были бы удобнее.
>>702093 Ну епт, обидно. Я послушал этого Спелдинга, и ладно на ангельском говорит, более менее понятные слова, но как же он тараторит, какой то акцент непонятный + дефект речи. одним словом программист
>>702283 Ну он тебе предложил у изменять на 1/1000. Изменяй у на 10 и посмотри на разницу. Подгоняй цифры в соответствии со своими размерами и скоростями.
>>686540 (OP) >адекватный >>686540 (OP) > Десктоп версия 1600р >>686540 (OP) >платный Да я на такие деньжищи джва месяца жить буду! мимо среднестатистический геймдевелопер
>>698235 Это может происходить когда игра обращается к конкретному айди ресурса, если стоящие перед ним звуки добавлялись/удалялись игра по этому айди находит другой ресурс. Если в этом дело, попробуй к звукам обращаться через ассет_гет_индекс и вводи там стринг с названием ресурса.
>>702118 >>702298 Изменения цифр помогли, но траектория все еще не та, видимо я объяснил через жопу. Короче вот, красным показано как они летят сейчас, а зеленым - желаемый результат
>>702469 А, там у меня небольшой проеб в коде, забыл как в гамаке координаты работают, нужно к y прибавлять, а не отнимать. попробуй так:
if (speed>1){ speed-=0.1 } y++;
Будет падать, не прилетая обратно. А если хочешь реальную арку, чтобы сначала еще и поднималась, то тогда нужно ввести понятие вертикальной скорости, которую ты прибавляешь ко все тому же y:
y+=vspeed vspeed+=0.1; и про которую в create пишешь vspeed=-3; (ну или какое число тебе подходит)
>>702689 > Какие подводные? Надоест через неделю и дропнешь. Но дропнешь не сразу. Ещё месяц будешь манямечтать о сеттинге, как там замок злого устроен, какие домики в лесу эльфов, как устроена иерархия разбойников. А потом еще через месяц придёт понимание, что тебе вообще нахуй не интересно этим заниматься.
>>702694 Ну смотри: 2 недели - освоение основных возможностей движка, которые мне нужны. 2 недели - создание тестового уровня для отработки механник Какое-то время на освоение анимаций. Прокачивнаие скилла в процессе Далее покупка моделек и прочего, ибо я не художник Все, можно собирать и пилить игру >>702730 Ух, опасно. Взял пока пробную версию. Если через месяц не надоест, то приду сюда с результатами
Help. Настроил камеру, чтобы следовала за персонажем. И теперь он размывается в движении. Кручу настройки с пика - результаты рандомные, но не не, которые нужны. Если оставить камеру статичной, то все ок. Как фиксить?
Раньше использовал view_Xview и т.д. Сейчас камеру в гмс2 получается перетаскивать только так: viewx=camera_get_view_x(view_camera[0]) camera_set_view_pos(view_camera[0],viewx,camera_get_view_y(view_camera[0]))
Использование camera_set_view_speed(view_camera[0],tihohodi,0) ничего не дает
Есть ли внятный туториал по камере? а то находил только со слежением за объектом
Анон, имеете ли дело с физикой в гамаке? Интересно узнать, может ли у конкретного инстанса слететь взаимодействие с другим объектами?
Вводная такова: я создаю три стены циклом и меняю их размер, как мне надо: for ... { var _wall = instance_create_layer(..., "Instances", obj_wall); with {_wall} { image_xscale = ... image_yscale = ... image_angle = ... } } Потом включаю физику у всех: with (obj_wall) { box_fixture = physics_fixture_create(); physics_fixture_set_density(box_fixture, 0); physics_fixture_set_awake(box_fixture, true); physics_fixture_set_box_shape(box_fixture, sprite_width/2, sprite_height/2); my_fix = physics_fixture_bind_ext(box_fixture, id, -(sprite_width / 2), -(sprite_height / 2)); physics_fixture_delete(box_fixture); }
Изначально у obj_wall галочки стоят на Visible и Solid (то есть их нет на Persistent и Uses Physics), а в физике стоит галочка на Start Awake; В итоге, как и планировалось, я получаю 3 длинных стены, которые пересекаются своими концами. Сама проблема вот в чём: 1 или 2 стены обычно настоящие, а остальные (стало быть 2 или 1) рисуются, у них отображается fixture (или так: "flag = phy_debug_render_aabb | phy_debug_render_collision_pairs | phy_debug_render_obb;" только collision shape отображается?), но персонаж сквозь них легко проходит.
Может ли дело быть в том, что слетает физика? Или в чём? (обоснуя за объекты вместо тайлов не будет, сорян)
>>706947 UPD: Видимо, проблема том, что fixture фигово накладываются для тех стен, у которых image_xscale и image_yscale задавался отрицательным. Хотя рисуются такие стены хорошо и правильно. Как и их fixture. И это странно. Баг гамака или я что-то упускаю?
>>706947 Если у объектов в настоящее время нет импульса, то вместо использования фикстур для создания колизии можно вполне создавать на месте старого новый объект)
Энивей, проблема разрешилась: при накладывании fixture на объект с отрицательным image scale происходит ничего. Вроде. Всё исправил. Спасибо за внимание.
>>707970 Ну в последнее время да, по крайней мере базовый функционал игры. Вообще судя по вопросу ты только вкатываешься в гейдев, так что тут особой разницы нет, главное - понять, как что работает, а дальше сможешь сам хуячить с нуля почти всё, так что тут он подойдёт, ну и ещё какой-нибудь PixelatedPope.
>>708804 Не за что. У Шона советую глянуть последнюю серию по созданию экшон-рпг, где он показывает, как с нуля сделать небольшую игру с камерой, ходьбой и прочим.
>>708907 Потому что дёшево. Хакерам проще купить, чем заморачиваться со взломом. Игроделам проще купить, чем переплачивать хакерам за взлом. Споры о том, что 1500 космотугриков - это дораха - это нирилейтед политосрач. Если ты не согласен, что гамак дёшев - добро пожаловать в /по/ можешь там обсудить с другими нищебродами нищету русского мира.
>>711296 Дело в том, что вот сделал я так, чтобы шар отскакивал, да. Но вот проблема - если в самом начале шар попадает в верхнюю стенку, то он начинает скакать вверх-вниз и в результате застревает
>>711326 Тред и диалог не читал, но такая проблема может быть. Тебе надо проверять находится ли шар/точка за стенкой + направление его вектора. Например, если условные pos.y > wallheight && dir.y > 0, то dir.y = -dir.y. То есть даже если шар телепортнётся за уровень, то рано или поздно он вернётся в свою зону. Конечно, в нормальных играх, наверное, таких проблем не должно быть, так как скорость поменяется раз и за ним же положение объекта. Твой вариант может случиться, наверное, если ты 2 раза вызываешь одинаковый код, где не надо или ещё что.
>>686540 (OP) Значит, возник вопрос в гейммейкере классическом (не studio). В общем, как сделать так, чтобы объект делал reverse при соприкосновении с другим объектом только если он идет вниз?
>>686540 (OP) значит гейм-мейкер 8.1, вот. как правильно заставить проигрывать анимацию разрушения объекта при колижне, чтобы не было лупов и объект одновременно и уничтожался, и проигрывал анимацию?
>>715371 >Какими способами можно добраться от точки А до точки Б? По дороге? Через лес? Через горы? Может точка Б в космосе? Опиши, блеат, что ты хочешь сделать. Со скриншотами.
>>715381 нет, пример оказался для квадратных объектов, я помню популярный был пример наэкранного управления для tds , там бонусом как-то тень простенько была реализована
Сап гамач, подскажите, я 0 в программировании, делаю прототип игры на кастрате при помощи "визуального скриптинга" - но Констракт оказался совсем уебжичным под мои задачи. Делаю вроде как достаточно примитивный платформер-сайдскроллер. Скажите, в гамак смогу вкатиться быстро и делать игру в нем? На констракте где то 2 года торчал, + давно в старых версиях первого гамака. Там сейчас обязательно gml юзать? Или можно ивентами также? GML освоить насколько трудно если 0 в программировании и математике?
В стиме пишут про вылеты, краши, про то что проект не восстанавливается, но в основном отзывы с 2018. Сейчас в стим версии есть такое или ок работает все?
>>718002 У меня за 4 года было несколько крашей, после которых проект не восстанавливался автоматически. Восстановить удавалось руками тем не менее. В любом случае бэкапы надо всё время делать.
>>717997 >Скажите, в гамак смогу вкатиться быстро и делать игру в нем? Я лично вкатился в гамак очень быстро. Сносно работающий платформер я запилил через 2 месяца.
>визуального скриптинга Не занимайся этим говном. Сразу в катывайся в нормальный код.
>Там сейчас обязательно gml юзать Без языка ничего толкового не сделаешь.
>Или можно ивентами также Ивенты в гамаке это последовательность выполнения кода в игровом цикле.
> GML освоить насколько трудно если 0 в программировании и математике? А что вообще может быть сложного в освоении? if else while repeat знаешь? Плюс минус равно умножить разделить знаешь? Тогда ты знаешь в принципе почти всё. Остальное в туториалах прочитаешь.
1) Освоение движка по туториалам. Туториал Астероиды. 2) Туториал платформер 3) Свой платформер по туториалу. 4) Понадобились тайловые коллизии разной формы. Сделал по туториалу. 5) Сделал стейт машину игрока и врагов. Опять же по туториалу.
На этом в принципе примитивный платформер был готов. Два месяца освоения.
Дальше захотелось, чтобы враги научились искать путь, перепрыгивать через пропасти, приследовать игрока и т.д. Здесь уже на 3 месяца глубоко забурился в дебри, но на выходе я уже представлял как сделать всё что угодно. Дальше пошли эксперименты со светом, с партиклами, делал динамичные интерфейсы, разнообразные механики и т.д. На всё, конечно, нужно время. Но решающим для меня был именно период ёбли с пасфайдингом. Именно тогда я научился программировать.
Не могу понять от чего лаги в игре(для телефона), игра не сказал бы что СЛИШКОМ тяжёлая. Первая игра была сложнее в плане механики, но не лагала, может ли это быть связано с новым runtime?
Пацантре я сначала качнул триал гмс 2. Зарегил йойо аккаунт. Потом удалил гмс. Приобрел в стиме десктоп версию - и когда захожу с стим версии, у меня висит напоминание о конце триал версии через х дней. Что делать?
Есть в гамаке переменная которая возвращает значение текущего кадра анимации спрайта? Типа current frame. У меня проигрывается анимация ходьбы гг например, и когда я перестал двигаться - чтобы анимация устанавливалась не на какой-то кадр, а на последний кадр который был в цикле анимации во время ходьбы
>>720389 Падажжи, ёбана. Разве в гамаке фрейм сам по себе не остаётся на последнем кадре если остановить анимацию, раз в конце цикла ходьбы даже приходится её скидывать на нулевой фрейм кодом?
Если я вызываю скрипт и в нём меняю Х и У напрямую, то эти самые Х и У берутся у объекта, в котором я вызвал этот самый скрипт? Я же правильно понимаю работу новых скриптов в гамаке? ньюфаг
>>720596 Да. И это не только в новых скриптах, так всегда было. Если нужно сменить переменные у других объектов, то сначала ставишь перед ней имя объекта, типа "obj_player.x".
>>720663 так же есть глобальные переменные (скорее всего ты знаешь, но мало ли), которые игра помнит всегда, к ним обращаются через global.zalupa но ещё глобалки можно заранее объявлять (например в самом начале игры) через команду типа globalvar zalupa; и тогда к ней можно будет обращаться просто zalupa, без приставки 'global.'
а так же есть локальные переменные, они работают только в конкретном куске кода где ты его пишешь, либо в скрипте, а потом уничтожаются, очень удобная штука, объявляется в начале куска кода, например через var zovno, zhopa=false, piska='mo4a'; либо через var zovno; vart zhopa=false; var piska='mo4a'; обрати внимание на true/false, в ГМЛ это не булеановая переменная, а просто 1 и 0 соответственно, считаются за числовые переменные и их можно в мат рассчетах использовать, например hp=10+5*(global.hard) Локальные переменные удобны чтобы не воротить говна в коде и вместо этого жопожуйства: draw_sprite(asset_get_index('spr_' + choose(zhazha, lazha, kazha) + string(irandom(3))), image_index, x + 60 + sprite_width(sprite_index), y - 20/5 + sprite_height(sprite_index)/4); можно сделать что-то типа такого: var _spr=asset_get_index('spr_' + choose('zhazha', 'lazha', 'kazha') + string(irandom(3))); var _x=x + 60 + sprite_width(sprite_index); var _y=y - 20/5 + sprite_height(sprite_index)/4; draw_sprite(_spr, image_index, _x, _y)
>>720677 В ютубе миллиард вариантов передвижения объекта показывают. У каждого ютубера по гамаку плюс-минус свои варианты передвижения и столкновений. Приветливый космонавт даже систему одежды для перса покажет и расскажет. Выбери один видос и перепиши код прямо с экрана, нахера ты велосипеды городишь?
>>720677 image_index почти никогда не принимает целочисленных значений. Это real, floor которого определяет текущий кадр. Так что если ты хочешь поймать третий кадр анимации делай так:
if floor(image_index) == 2 (кадры считаются с нуля. Третий кадр убедт иметь Image_index от 2 до 2.99999999)
или
if image_index >= 2 && image_index<3
Если ты хочешь остановить анимацию на последнем кадре:
if image_index >= image_number -1 { image_speed = 0; }
А гейммейкеру нужно что-то платить, когда выкатываешь свое говно на продажу (не у них на маркетплейсе, а вообще, в стиме например)? Или купил лицензию и доволен?
"Windows не удаётся получить доступ к указанному устройству, пути или файлу." У одного тестера такая беда на десятке, у других на десятке и семёрках такого нет. Гугл говорит, что проблема в правах. Никак не фиксится с моей стороны и проблема в его винде?
>>722637 Адекватный гамак тред встречает вот так, пассивно-агрессивно? Что такое "неадекватный" тред я даже представить боюсь. Ошибка при запуске файла. Всё.
>>722741 >Адекватный гамак тред встречает вот так, пассивно-агрессивно? Да, всё верно. Ты даже не удосужился копипастнуть код ошибки сюда, почему ты думаешь, что кто-то должен его гуглить по ключевым словам и пытаться найти что-то, что косвенно соответствует твоему случаю? Ошибок такого типа до ебени матери, всех цветов и размеров. >Ошибка при запуске файла. Всё. Ну хз, лично первое, что лично мне пришло на ум - запустить от имени администратора. В гайдах, которые ты и сам мог найти по коду ошибки, написано то же самое. https://techarks.ru/windows/files/windows-ne-mozhet-poluchit-dostup-k-ukazannomu-ustrojstvu-puti-ili-soobshheniyu-ob-oshibke-fajla/ Дальше сам.
Ты можешь записать туда код и использовать их вместо скриптов.
Например у меня есть родитель "дерево" и у него куча разных детей - разные виды деревьев. Все они ведут себя так же, как родитель, но есть исключения. Например есть деревья, которые загораживают ветками проход, и при срубании их проход должен очиститься. Или есть специальный вид деревьев, с которых при срубании шишки падают. Так вот, я их тоже делаю чайлдами основного дерева, но добавляют юзер ивент. В основном там пусто, но у специальных деревьев есть код.
Хочу сделать jRPG, но не в классическом виде, а с добавлением экшен незначительного элемента - вроде как в Paper Mario где надо было по таймингу нажимать на кнопки во время фазы боя, чтобы нанести больше урона.
Идиотский вопрос, но насколько сложно будет? С какими сложностями предстоит столкнуться? По туторам на гамаке уже делал платформер и top-down стрелялку. Давно когда то делал раннер со случайной генерацией препятствий через массив. Может есть какие то материалы по поводу того как в jrpg баланс настраивают
Как считаете, такие курсы стоящие или? В принципе, у меня нет проблем с самообучением, то есть, платформер и тдс я спокойно реализовал - не без затыков конечно. Но в самообучении у меня 2 проблемы, что до gml я не сталкивался с кодингом, и что отсутствует структурносить - то есть в конечном прототипе все как бы работает, но вероятно код кривой и костыльный, то есть если для прототипа где надо просто посмотреть как играется это еще нормально, но для реального продукта - нет
>>724423 Когда я только-только начинал, ролики хартбиста для меня были очень полезны. Сейчас (уже 4 года прошло) я считаю это малополезным шлаком.
150$ отдавать за это... если для тебя это незначительная мелочь - то смело бери. Для новичков это очень хорошо подойдёт. Я бы даже когда новичком был, брать не стал. Самообучение для меня проще и быстрее.
Купил в стиме deskop версию, и пошел 30ти дневный отсчет пробного периода. Как я понимаю я преобрел ее на месяц? А потом что, нужно еще раз казну пополнять?
>>724669 В блядских обсуждениях блядского стима какждое второе блядское сообщение по этому вопросу. Как вы, блять, игры собрались делать не умея читать?
>>726145 разверну вопрос, есть ли ассет для системы трпг/српг с клеточками? на юнете есть пошаговая инструкция, но это пиздец оверкил, хочу сделать что-то уровня инто зэ брич, только с людьми и ЕЩЁ проще
Здраствуйте работяги геймдевелоперы, хочу вкатиться в этот движок для создания своей игры, вопрос такой, если разницы между стимовской и интернет версией? А также если пользоваться стимовской то придётся каждый 12 месяцев оформлять подписку?
>>726418 Побуду добреньким. Во-первых, в стиме ты покупаешь ключ для yo-yo-games аккаунта, к которому привязываешь свой стим-аккаунт. Только тогда это будет не триальной версией. Во-вторых, китайцы купили оперу, а опера купила гейм-мейкер, так что хз что будет с движком в ближайшее время.
>>726468 Я знаю, я имею в виду, что гейм мейкер тоже превратится в джаваскриптовый движок для создания типично китайских игр, в лучшем случае. В худшем его просто закроют.
>>726474 >В худшем его просто закроют. Как и зачем? И да, хуже той хуйни с драгндропом и прочей ебалы для кодинга без кодинга они уже в любом случае не добавят.
Рубрику "How did they code it" объявляю открытой. И на повестке дня Тоха, ну и буллет хелл как сущность. Правильно ли я понимаю, что каждая пулька - это объект, который обновляется 30/60 раз в секунду. Учитывая количество таких пулек, как это безобразие не тормозит? Это ж сколько памяти надо выделить для такой ебаной тучи экземпляров класса, скажем, Bullet, покрасить их и перемещать по экрану.
>>728113 >>728114 Типа при достижении капа те пули, что вышли за пределы экрана (а при достижении капа они скорее всего уже за пределами экрана), просто изнечтожаются?
>>728115 Да, скорее всего исчезают самые старые. Вообще, он мог посчитать - например, если у него 100 пуль в волне, то можно пустить только 20 волн. Вообще обычно используются пулы объектов - объекты не удаляются, просто делаются невидимыми, и им выдаются новые координаты и возможно спрайты. Кроме того, пули в волне не движутся независимыми - там можно какие то оптимизации сделать, например если они летят "елочкой", то сразу двинуть каждую третью влево вниз, другие вправо вниз, оставшиеся ровно вниз. Аналогично круги, там не нужно всем хранить их вектор, можно менять вектору x и y по синусоиде в цикле.
Сап, аноны. Поделитесь советом, плиз. Хочу чисто для себя попытаться сделать игру в стиле Contra Hard Corps. Гамак буду изучать с нуля. Игра в жанре run and gun, но хочу добавить элементы из рпг. Лайтовую прокачку и абилки, вместо выбора оружия как в Контре. Т.е. дефолтная стрельба и абилки в виде разной магии, которая накладывает статусные эффекты на врагов, хилит гг и т.п. Вопросы следующие: 1) Есть гайды (видео или текст - безразлично) по созданию чего-нибудь приближенного к олдовой Контре? 2) Гайды по созданию статусных эффектов? К примеру: кровотечение, поджигание и т.п., с последующим постепенным уменьшением хп противника за определённый промежуток времени. 3) Не знаю как описать, опишу как могу. С боссами хочу добиться того же самого, как в той же Контре Хард Корпс. Хотя бы чего-нибудь приближенного. Нужно, чтобы у спрайта босса уязвимыми были определённые места, и чтобы некоторые функциональные части после вливания нужного дамага отваливались. Есть гайды по реализации подобного? Заранее всех благодарю за ответ и любую помощь.
По первому пункту: Сначала делаешь стандартный платформер по туториалам. Разбираешься что там к чему, потом делаешь свой собственный с необходимыми тебе фишками.
Придумываешь все необходимые тебе типы коллизий. Прямая платформа, наклон 45 градусов, наклон 30 градусов, плаформа сквозь которую можно спрыгнуть/запрыгнуть и т.д.
Создаёшь необходимые тебе скрипты для определения этих коллизий. Точка, линия, прямоугольник - тебе этого будет более чем достаточно.
Создаёшь собственного персонажа - машину состояний. Он будет перемещаться по твоему полю коллизий так, как тебе нужно. Разгоняться с ускорением, тормозить со скольжением, делать прыжок, двойной прыжок, отложенный прыжок, прыжок от стены, прыжок сквозь платформу и т.д. - вот это всё
По второму пункту:
Если по уму...
Сделаешь специальный скрипт sc_init_enemy, который будешь добавлять в create_event каждому врагу. В нём будут задаваться все необходимые для функционирования врага переменные.
Туда воткнёшь переменные отвечающие за механику кровотечения. Типа. can_bleed = true; is_bleeding = false; bleeding_timer = 0; bleeding_time = 0; bleeding_tick_time = 0; bleeding_damage_per_tick = 0;
Сделаешь скрипт для нанесения кровотечения врагу И пуля при столкновении с целью среди прочего будет исполнять этот скрипт. В коде, который будет выполняться при столкновении пули с obj_enemy будет что-то типа
var _target = sc_определить_id_объекта_с_которым_столкнулась_пуля //бла-бла, всякий код sc_enemy_start_bleeding(target,bleeding_time,bleeding_tick_time,bleeding_damage_per_tick)
А в скрипте будет ///@param0 target ///@param1 bleeding_time ///@param2 bleeding_tick_time ///@param3 bleeding_damage_per_tick
var _target = argument0 if _target.can_bleed //если цель может кровоточить { _target.is_bleeding = true _target.bleeding_time = argument1 _target.bleeding_tick_time = argument2 _target.bleeding_damage_per_tick = argument3 if _target.bleeding_timer > argument2 _target.bleeding_timer = 0 //Условие, благодаря которому последующие пули сбрасывают таймер кровотечения, не мешая таймеру кровотечения наносить урон }
Т.е. скрипт просто будет передавать параметры кровотечения цели. А цель, соответственно, будет руководствоваться этими параметрами и исполнять алгоритм кровотечения. Просто опять же упакуешь его в скрипт sc_perform_bleeding() и будешь выполнять его каждый шаг.
В скрипт запишешь что-то типа if is_bleeding{ bleeding_timer ++ if bleeding_timer >0 && (bleeding_timer mod bleeding_tick_time) == 0 //Если таймер кровотечение делится на время одного тика без остатка и при этом не равен нулю. { hp -= bleeding_damage_per_tick //получить урон от кровтечения sc_сreate_bleeding_effect() //Выполнить скрипт, который создаст разлетающиеся капли крови, например }
Ну в общем-то и всё. Так-то это ростая задача. Когда ты выполнишь первый пункт, ты всё это уже будешь уметь. Начни с того, чтобы просто начать наносить врагам простой урон, а дальше накрутишь всякого.
По третьему пункту. Да тоже ничего такого экстраординарного. Склеишь босса из нескольких врагов без поведения. Неуязвимые части сделаешь из неуязвимых врагов, уязвимые - из уязвимых. Уязвимые враги полученный урон будут транслировать контроллеру босса. Сделаешь контроллер босса, который этих "врагов" будет нужным образом перумещать и уничтожать когда "часть отвалилась"
>>728991 >>729011 Спасибо, анoнчики! Тогда скоро приступлю к изучению. Я находил на русском справку только по 8-й версии, я так понимаю она и для второй студии актуальна? За исключением того, что в студии некоторые команды иначе пишутся, как я понял. Если есть справка на русском по студии 2, то был бы вдвойне благодарен.
Чтобы действие происходило когда я нажимаю на кнопку у которой active = true (при условии что значение этого acrive разным кнопкам я раздать уже смогу)
>>729499 break воткни после действия, а то код пикает твой кейс, а потом смотрит куда бы ещё это действие воткнуть, иша по всем условиям, надо это всегда брейком обрывать, если нудны определённые кейсы
Аноны, решил запустить проект, который делал в ноябре 2020, на свежей версии студии и тут при запуске вот такой пикрил вылез. Как-то не очень информативно, может кто сталкивался? Ошибок синтаксиса\компиляции - нет
>>731639 С тех пор вышла версия 2.3, в которой очень много поменялось. Мне не удалось как следует переконвертировать под неё свой проект, остался на 2.2
>>731655 > Можешь попробовать стереть папку Options в проекте Не помогло. > Но проверяй все скрипты и все ресурсы. На первый взгляд все на своем месте. Потыкался по скриптам и спрайтам.
>>731639 Почисть проект через ctrl+f7 (иконка щёточки), проскролль выше по коду запуска, стопудов есть ошибка в коде, которая нормально не высветилась в компайл иррорс.
>>731720 > Почисть проект через ctrl+f7 Тоже ошибка > проскролль выше по коду запуска, стопудов есть ошибка в коде, которая нормально не высветилась в компайл иррорс. Ты о моих скриптах? Там все норм с кодом и синтаксисом.
Гамак отрисовывает спрайты далеко за пределами экрана или игнорирует? Мне это надо в плане - нужно ли свой механизм отсечения писать или он сам справится?
>>733175 >>733178 Не переменная, название спрайта. Я его и так и сяк пробовал, менял название спрайта с gilza_spr (и на спрайте и в коде), удалял и создавал по новой Все остальне спрайты этот-же объект рисует
аноны, подскажите, я лоу-скиллс лох, знаю про тригеры,переменные, языки програмирования, профайлер и отладку, писал скрипты.. Коплю деньги на лицензию GM на 12 месяцев. Хочу сделать пиксельную рпг-шку на винду. GM подойдет для этих целей? Пример - пикрил
>>733771 пикрил спизжен с поисковика, я чисто пример привел как это в теории должно выглядеть,меня волнует GM сможет это сделать так чтоб оно было оптимизированно и не жрало по 3 гига RAM'а?
>>733772 Любой популярный конструктор (см. Юнити, Годо, Гамак) сможет если руки не из жопы. Если напишешь адского говна, то и в 2д рпг может ООМ произойти, но это надо, блять, очень постараться.
>>733774 >Любой популярный конструктор (см. Юнити, Годо, Гамак) Я ж в начале написал что я рукожоп.Не, это не значит что хочу чтоб все было легко...хочу найти движок с маленьким временем вхождения... а то пока в юнити войдешь постареешь. Я просто слышал что GM для этого подходит хорошо т.к. тут все для старта есть, для таких рукожопов как я + тонна гайдов и инструкций.
>>733777 Ну тут язык попроще выучить чем в юньке. Хотя C# для меня не был сильно сложным (возможно это ошибка выжившего, т.к. до это уже был опыт программирования) и туторов в юньке больше. А в Годоте вообще Питоноподбный язык, но гайдов на русском практически нема, поэтому если английского не знаешь, то туда не суйся. Хотя английский очень полезно выучить в любом случае, в программировании это всегда нужно.
Не знаю короч стоит ли эта разница в сложности денег за гамак. В любом случае есть триал, можешь попробовать, если тебе норм покупай, если нет - смотри в сторону других конструкторов.
>>733767 >Коплю деньги на лицензию GM на 12 месяцев. Ты осбрался под мобилки девелопить что ли? Но ты не знаешь самую базу даже? Возьми десктоп версию за копейки в стиме для начала. Лицензию временную на мобилки будешь покупать когда тебе нужно будет на телефонах тестировать.
>Хочу сделать пиксельную рпг-шку на винду. На винду же собрался. Нафиг тебе мобилки?
>>735969 Не знаю, что было во времена 7 и 8 версий, но во времена GMS1 был альтернативный редактор Parakeet IDE, на основе которого был сделан GMS2.
Также есть альтернативный редактор кода GM Edit от украинского разработчика Yellow Afterlife.
Есть недоделанный проект Game Creator https://github.com/joshwyant/game-creator который задумывался как полная альтернатива ГМ, обратно совместимая с файлами проектов.
Пара вопросов знатокам. 1. Могу ли я установить одну и ту же лицензию standalone на комп и на ноут (работать поочёредно, не одновременно) или только через стим будет работать? 2. С каких пор официальная справка гамака существует на русеке? Вроде в прошлом месяце только англюсик был еще.
>>737537 Придумай специальные метки. Можешь прямо как в html сделать даже. Вставляй их в текст. Добавь в свой контроллер текста функцию, которая будет читать эти метки, стирать их из строки, выводить текст, и, руководствуясь этими метками, делать часть строки активной. Следи за мышкой, реагируй на клик по активной зоне, исполняй нужное действие.
>>737542 >Добавь в свой контроллер текста функцию, которая будет читать эти метки, стирать их из строки, выводить текст, и, руководствуясь этими метками, делать часть строки активной
Если я правильно понял, в код прописывать поиск всем тексте определенной строчки, удаление этой строчки. А как сделать часть строки активной? Какие метки имеются в виду?
>>737569 Ну я например вставляю в текст метки типа $p3 или $s1. Мой контроллер вывода текста ловит символ "$", затем читает следующую букву и цифру. $ означает что началась команда p означает что нужно сделать паузу 3 показывает продолжительность паузы.
или s означает что нужно изменить скорость вывода текста 1 указывает значение скорости.
Далее обработчик выбрасывает $p3 из строки, останавливает вывод на нужно время, затем продолжает.
Ты мог бы поставить такие же метки.
Типа "Вы можете <g rm_forest>отправиться в лес</g>, но на это уйдёт весь день."
Твой обработчик ловил следил бы за появлением симвла < Появление этого символа сообщило бы обработчику, что началась команда, и выводить её не надо. А надо прочитать её. Дальше он искал бы следующую букву. При виде буквы g понимал, что это команда на переход в другую комнату. Далее он пропускал бы все пробелы и искал первую значащую букву. Ей была бы "r". Потом записывал её и все последующие за ней, пока не наткнётся на пробел или на > Потом по полученной строке "rm_forest" определял бы, в какую комнату предстоит перейти при нажатии на текст. Например при помощи функции asset_get_index("rm_forest")
Потом встречал > и понимал, что ввод команды закончен. Весь следующие текст ему нужно сделать активным. Если текст выводится в одну строку, я бы запомнил верхнюю-правую координату буквы для этого. Затем вывод текста другим цветом, пока не встретится </g> Потом запоминание правой нижней координаты буквы и обычный вывод остального текста.
А дальше следить за point_in_rectangle координат курсора и полученных координат текста. И если игрок на него мышкой клац - ты знаешь в какую комнату идти.
>>737593 >Твой обработчик ловил следил бы за появлением симвла < >Появление этого символа сообщило бы обработчику, что началась команда, и выводить её не надо. А надо прочитать её. >Дальше он искал бы следующую букву. При виде буквы g понимал, что это команда на переход в другую комнату. >Далее он пропускал бы все пробелы и искал первую значащую букву. Ей была бы "r". >Потом записывал её и все последующие за ней, пока не наткнётся на пробел или на >
Какие функции гамака для этого можно использовать?
Я тексты записываю прямо как скрипты в гамак. (пик 1) Помимо собственно текста передаю контроллеру текста всякую информацию типа портрета. анимации, эффектов, выборов и т.д.
Далее врубается обработчик текста, который из полученных данных берёт всё, что нужно, в том числе и строку с текстом.
Считает её длину в пикселях string_width() и разбивает так, чтобы поместилась в 4 строки моего диалогового окна без переносов слов. Затем по одной буковке выводит текст со стандартной скоростью, но если натыкается на $ вместо вывода следующей буквы читает всю команду и исполняет её.
Например на пик2 скрипт добавляет в буффер по одной букве из строки пока не наткнётся на пробел, перенос строк я использую для этого символ |, или на конец текста.
Попробуй для начала написать скрипт, который найдёт в тексте симол < и выведет текст без него.
Что-то типа var _string = argument0 var max_i = string_length(_string) var _text_buffer = "" var _char_buffer = "" for (var i=0; i< max_i; i++) { _char_buffer = string_char_at(_string,i) if _char_buffer!= "<" _text_buffer += _char_buffer } draw_text(x,y,_text_buffer)
Как начать делать игру? У меня есть идея, но не понимаю, с чего начать. С рисования спрайтов? С расставления квадратов по окрестности и программирования ходьбы квадрата-протагониста?
Сап, двощ. Тема такая: начал делать примитивную игрулю в гамаке, просто дабы научиться делать игоры, код писать и т.д., ибо до того был очень далек от всего этого. Короче, проблема в том, что я хочу сделать управление жестами (под мобилки), но перемещение объекта свайпом работает только если у объекта выключена физика. В то же время мне кровь из носу как важно что бы физика у него была, ибо при столкновении с ним другие объекты должны уничтожаться. Есть такая возможность и это я тупой или прийдется крутить костыли?
>>739640 Тебе не нужна физика. Вообще все эти встроенные штуки с осторожностью юзай. Тебе нужен обычный коллижн with (instance_place(x, y, obj(другие объекты)){instance_destroy();} .
>>686540 (OP) Делаю ТДС. Есть проблема. У противника есть поле зрения. Если игрок в поле зрения, то противник должен запомнить координаты игрока и идти к ним. Я сделал поле зрения противника и движение с обходом препятствий. Но как сделать это: Если игрок вышел из поля зрения (Появилась стена), противник должен прийти к месту, где игрок был последний раз в поле зрения. Когда противник окажется там, он должен покрутиться 1-3 раза возможно и начать дальнейший обход
У него есть состояние "иду на точку", в котором он перемещается к выбранной точке, а в конце скрипта делает проверку
"игрок в поле зрения?" "игрок переместился?" "могу ли я добраться до той точки, в которой сейчас игрок?"
Если все три проверки успешны, меняешь координаты точки-цели и в следующем цикле противник движется к новой выбранной точке.
Когда точка достигнута противник переходит в состояние "выбор следующего действия". Если игрок в заданной точке не обнаружен, то принятое решение = "покрутиться" + pokrutitsya_times = choose(1,3).
Приняв решение противник переключается в состояние "порутиться" и покручивается пока pokrutitsya_times не становится равно 0.
После того, как покрутился, снова переходит в состояние "выбор следующего действия", в котором если опять не обнаруживает игрока, принимает решение "начать дальнейший обход"
>>739852 >меняешь координаты точки-цели Хз как сделать Можно пример? или может сделать так что игрок раз в три секунды срет невидимымыми точками к при отсутствии игрока бот идет к последней высранной куче
>>739857 Ты тупой потому что. Какие точки? Наверное сделал Если вижу - иду. А надо - если вижу -вношу координату в переменную и иду пока моя координата не станет равной целевой.
>>739852 Не нужно никакое "выбор следующего". Нужно просто "состояние погоня" -"состояние покрутиться"
>>739892 Я даже не понимаю что ты делаешь. Бот у него в гей мейкере. Что за бот? Откуда бот? Видит он там че-то. Охрана за дворцом прячется, эльфы крутяться. Давай вместо XY проблемы ты сам нормально вопрос сформулируешь.
>>739902 Но вообще лучше перед тем как стучаться, правильно задай вопрос в треде.
Скопируй свой код в pastebin, сделай скриншоты, максимально подробно опиши, в чём твоя проблема, что именно мешает тебе записать последнюю точку, в которой был виден игрок, и отправлять врага в неё, обновляя её координаты каждый шаг.
Все. Опера испортила единственное что было хорошо в гейм-мейкере. Возможность написать в гугле название функции и получит ответ первой ссылкой. Спасибо. Теперь нужно пол-часа искать мануал на сайте йо-йо гейс и ждать по пол-часа пока их штмл-5 приложение соизволит загрузить страницу гоняя огромные загружающие квадраты по экрану. Прямо как и во всех остальных движках.
>>741122 Если ты планируешь выпускаться на Windows никаких критических проблем, но чем не нравится GMS 1? Там производительность выше и возможностей побольше.
>>733777 Не такой уж он и низкий, дохера всего придется писать самому или искать кривущие ассеты. Ту же систему камер, инерцию для тача, ui куда же без него и так до бесконечности
>local variable playbackSpeed(100008) not set before reading it Чего блядь? Я понимаю, в чем мой косяк, я пытался прочитать переменную до того, как она задана. Но откуда взялся этот playbackSpeed? У меня ничего с таким названием никогда не было.
Я на доске нуфаг, являюсь веб макакой и последнее время думаю попробовать поизучать какой-нибудь движок.
Не срача ради, но любопытства для, хочу спросить: я посмотрел несколько видосов со сравнением годота и гамака, и у меня создалось впечатление, что у гамака главный плюс в том, что его изучить проще, а годот лушче... во всём остальном.
Я когда был малолетний дебил пытался делать простые игры в геймейкере (тогда ещё в первой версии), поэтому любопытно по старой памяти поглядеть что там нового и интересного. Но уже столько времени прошло, новые движки появились, которые выглядят продвинутее что ли.
Вероятно, я тупой, но можете хотя бы вкратце пояснить гейм мейкер вообще актуален сейчас? Почему он предпочтительнее, чем годот, например? Для меня пока что главный плюс, что в гамаке язык JS-о подобный.
>>748874 >Вероятно, я тупой, но можете хотя бы вкратце пояснить гейм мейкер вообще актуален сейчас? Ну типа да. На 1.4 делалась куча культовых игр: хотлайн майами, гипер лайт дрифтер, нуклеар трон, андыртейл, вальхалла, вот это вот всё. На двушке сейчас тоже парочка неплохих игор вышла. >Почему он предпочтительнее, чем годот, например? Хуй знает, годотом не пользовался, но могу сказать, что язык гамака достаточно прост (я не про драг-н-дроп, если что, который совсем хуйня для детей), его буквально может освоить даже дебил вроде меня, который нихуя кроме таблиц в экселле не создавал. Главное - не бояться искать туториалы, штудировать мануал, если что-то не знакомо, и спрашивать советы у людей с опытом (у гамака есть активный сервер в дисе, там 24/7 работают каналы по разруливанию каких-либо технических вопросов). По сути, самое содержательное пояснение по теме, которое я могу дать тебе. Если хочешь - можешь сам попробовать трайл двушки/угнать на русракере и пощупать, что да как. Из очевидных отличий 1.4 и 2 - лучше интерфейс, производительность и некоторые новые плюшки.
Про культовые игры я в курсе, да. Один из беспокоящих меня вопросов это "актуальность" движка. На старом двигле от дума тоже много всего хорошего было, но ныне это не самое свежее, что может быть.
На мысли эти меня натолкнули в целом менее положительные отзывы у гамака относительно того же годота. Вот и интересуюсь, собственно.
Посоны, така беда - делал туториал по джрпг боёвке, оказалось, что японский хуй обзирает 2.3, а у меня 2.2, в котором нету Broadcast Sysyem. Я попытался написать свою систему, но соснул. Где можно почитать, как она вообще реализуется? Я сделал глобальную переменную, в которую юниты шлют свои мессаги, а потом другие юниты её читают, и когда все прочитали, она обнуляется. Проблема начинается, когда два юнита в неё пишут разные мессаги. Как эту броадкас систем по уму сделать?
>>748874 В чём проблема поставить интересующие тебя движки и попробовать что-нибудь сделать? Я вот три раза пытался вкатиться в Unity, безуспешно. Брезгливо попробовал гамак, и просто охуел, насколько там всё по уму и логично сделано если сравнивать с юнити. Единственный минус - он платный. Но я пирачу.
>>751431 Они буквально вчера сказали, что с триал версии убирается временное ограничение. >пацаны, фри версия пойдет для сбора своей задумки полностью? По сути да, потому что единственное отличие триала от лицухи теперь в том, что в триале нельзя компилировать экзешники. В остальном там весь инструментарий присутствует. >и могу ли я потом её же скомпилировать на десктопы и мобилы, уже купив нужные версии? Если файлы проекта есть, то да. Но там ещё фишка в том - что десктоп, мобила и веб - это всё разные лицухи, которые нужно отдельно покупать.
>>751431 даже я активный юзер гамака с лохматых годов и до конца поддержки гмс1 включительно свалил, цены не адекватные, это они мне должны доплачивать за пользование движком где дохуя чего нет.
Застревает персонаж (зеленая коллизия) при прыжке влево в крае платформы (красная коллизия). Но выйти влево, вправо и прыжком можно. Как это пофиксить?
Это происходит когда я прыгаю но проваливаясь уже на 1 пиксель ниже уровня платформы, делаю инпут влево, и меня следующим кадром переносит влево как я понял, при проверке слева показывает что пусто. Может на 1 пиксель по диагонали надо ещё чек сделать?
Да, для новичка это сложно. Но одно лишь освоение этого туториала даст тебе море очков экспириенса, ты сможешь прокачаться на нём.
Напиши собственные функции проверки коллизий, проверяй только одну точку или одну линию в тех случаях, когда тебе нужно проверить коллизию справа/слева/по диагонали.
Разберись что такое Pixel perfect движение, двигай своего персонажа только на целый пиксель, даже если у тебя дробная скорость.
Твои коллизии в платформере должны быть идеальны от и до! Займись ими вплотную!
Во-вторых: котроллер. Ты сейчас молодой, шутливый, лепишь повсюду keyboard_check_pressed(vk_up). В тот момент когда ты заходешь перейти на wasd шутки кончатся. А когда захочешь сделать поддержку джойстика... не стоит вскрывать эту тему. Это скучно, но лучше сразу сделай объект obj_controller, который в begin_step_event будет иметь кода типа jump_pressed = keyboard_check_pressed(vk_up)
а потом в коде игрока обращайся к контроллеру if obj_controller.jump_pressed вместо keyboard_check_pressed(vk_up)
В-третьих: Прежде чем вводить переменные death, hit, attack и т.д. почитай (посмотри туториал спалдинга) что такое state mashine. Тебе понравится, всё станет гораздо проще.
В четвёртых: когда прокачаешься достаточно, узнаешь что прямоугольные функции типа place_meeting работают не совсем так, как ты думаешь. Слева и снизу у тебя не будет столкновения тогда, когда координаты объектов "вроде как" совпадают. У тебя же нет этого бага, когда ты справа к стенке прилипаешь?
Спасибо за помощь! К сожалению, я не смог изучить туториал, потому что там картинки на странице не отображаются
Сделал по твоему совету контроллер, для инпута игрока
State machine тоже сделаю по туториалу
Кстати, при помощи дебага я понял, что place_meeting не дает столкновение слева и снизу/справа. А так как я не переделал систему калькуляциии скоростей и коллизий, то проблему я пофиксил, при помощи дикого костыля.
draw_sprite_ext (sprite_index, image_index, x, y, obj_player_base.draw_xscale, obj_player_base.draw_yscale, image_angle, image_blend, image_alpha);
В Step event есть изменение встроенной image_xscale спрайта на 1 или -1 в зависимости от того куда развернут персонаж
После того как я сделал эту функцию в Draw, у меня больше не отзеркаливает спрайт, хотя функция draw_sprite_ext не затрагивает встроенную переменную image_xscale. Почему так?
xscale The horizontal scaling of the sprite, as a multiplier: 1 = normal scaling, 0.5 is half etc... yscale The vertical scaling of the sprite as a multiplier: 1 = normal scaling, 0.5 is half etc...
Я так понял это и есть image_xscale, то есть мне надо просто отрицательное задавать, умножать на -1 может быть когда спрайт отражен должен быть
Так ты и не используешь параметр image_xscale здесь. Вот если бы ты писал draw_self() у тебя бы всё работало.
Так что меняй obj_player_base.draw_xscale на -1 при движении влево.
А лучше сделай отдельный спрайт для каждого направления, даже если это просто одинаковые спрайты. Нельзя такие важные объекты как obj_player зеркалить и скейлить. Потому что при отзеркаливании твой спрайт может сместиться на 1 пиксель.
Да, именно если я пишу draw_self () то офк этот спрайт разворачивается Но у меня же тогда функция растягивания не будет работать, или спрайт будет рисоваться два раза Спрайт который растягивается не разворачивается при том что параметр im_xs = -1
Я зеркалю obj_player (скин игрока). obj_player_base я ничего не делаю, он сделан для коллизий и движения
привет! я как неосилятор прошелся уже по 3 туториалам, но как дело доходит до своего проекта сразу плыву. насколько реально найти что то типа ментораза копеечку конечно же, что бы не срать тут своими вопросами 24\7?
>>752012 Нужно учиться самому решать возникшие проблемы, потому что дальше будет только труднее. Когда начнёшь создавать свою игру постоянно будет возникать сложные и очень сложные задачки.
Просто правильно задавай вопросы. Максимально подробно описывая что именно ты делаешь и что именно происходит не так. Прикладывай на скриншоты, демонстрирующие проблему, прикладывай свой код и рассказывай как ты сам пробовал её решил.
В большинстве случаев ты в процессе написания вопроса получишь на него ответ. В остальных случаях получишь быстрый ответ на форуме.
Сделал по другому, просто в зависимости от инпута (лево или право) меняю эту свою переменную на положительное либо отрицательное значение, и все работает
Сап, анонасы. Я ньюфажина. В некоторых играх (например, Stardew Valley) если персонаж при движении упирается в препятствие достаточно близко к его краю - он не просто встает, а начинает двигаться к этому краю, пока не обойдет препятствие. Стало интересно, как это реализовать. На ум приходит только создание особых "угловых" объектов коллизий, но это плохой вариант.
Можно ли как-то замутить проверку расстояния от игрока до краев маски объекта, с которым он сталкивается? Или есть более простой способ заставить персонажа самостоятельно обходить препятствия?
При нажатии кнопки движения: Проверка на линию коллизии шириной с персонажа на 1 пиксель вперёд по направлению движения. Если коллизия впереди есть, делаю две проверки линии коллизий по бокам персонажа длинной в самого персонажа + 1 пиксель по направлению вперёд.
Если хотя бы одна из них не даёт коллизии, то нажатие кнопки движения приводит не к движению вперёд а к движению вбок с замедленной скоростью по направлению к ближайшей боковой линии без коллизий.
Получается как будто персонаж скользит в нужном направлении.
Вместо скольжения можно просто стартовать движение в бок, с правильной анимации. Но как по мне, "скольжение" лучше.
Анон, я сделал по данному туториалу pixel perfect movement/collision, в принципе я все понял
>>751592 >Разберись что такое Pixel perfect движение, двигай своего персонажа только на целый пиксель, даже если у тебя дробная скорость
Вот у меня вопрос: если я делаю round своей координаты в конечном итоге мой спрайт двигается integer'am, а если убираю - то по дробным. Но если я округляю пиксели, то у меня "тряска" спрайта игрока. А если убираю - ее нет, с анимацией все ок. Но получается тогда движение не пиксельперфектное? Могут быть баги? И как нужно делать?
>>752965 1) Покажи тряску 2) я делаю round своей координаты - смысл туториала не в этом. По туториалу у тебя есть буферы движения ax и ay(кажется) к которым прибавляется твоё перемещение за шаг. Как только перемещение закончилось, от ax и ay забирается целая часть (ax div 1) и прибавляется к твоей текущей координате, а дробная часть (ax mod 1) Остаётся в буфере для движения в следующем кадре. 3) если я округляю пиксели, то у меня "тряска" спрайта игрока. А ты не округляй, ты делай floor
>>753119 Что не так в проджекте? У тебя тат зум 6х. За каждую единицу перемещения персонаж прыгает на 6 реальных пикселей. Не делай такого невротебенного зума. Если хочешь крупный пиксель с плавными движениями - увеличивай свои картинки а не зум камеры.
>>752965 >>752981 У меня была такая хуйня. В итоге, понял, что трясется не спрайт игрока, а камера. Встроенные штуки, не требующие кода, в гейм мейкере часто работают не как ожидаешь. В частности, настройки камеры и видов в комнате. Создай камеру и вид кодом, и следование за игроком тоже.
Все понятно, я сделал все спрайты под 1920х1080, но у меня последний вопрос, если игру запустят на 2560 x 1440 мониторе, то там же будет зум, и из за этого объекты опять будут прыгать > чем на 1 пиксель. И как быть?
>>753140 Пиксель монитора 2560 x 1440 в 4 раза меньше, чем у монитора 1920х1080 (при одинаковых физических размерах мониторов), так чро физическое расстояние, которое пройдёт объект на экране будет одинаковым и для глаза не будет разницы.
Если я ставлю глубину какому то 1 слою, оно автоматически меняет глубину и других слоев на 100 единиц. Хотя у других людей в проектах выставляется глубина слоев
>>754122 Коллизии. Использование keyboard_checkов прямов в коде. Наиебанутейший способ сделать 1-way-platforms. Поехавший инвентарь. Туториал по камере просто нет слов.
Сами его туториалы, безусловно, очень полезны новичкам. Но Также новичкам нужно знать, что то, что в этих туториалах написано - суперсвехупрощённо и не правильно.
Проблема такая: у меня 60 фпс монитор, и когда скорость комнаты 60 фпс (В настройках Game options Main Game frames per second - 60, как я понял это и есть встроенная переменная room_speed) - идет микрофриз частый, изображение дергается. Никаких For / while / draw нет, просто прыгающий квадрат
Я гуглил англоязычные треды по этой проблеме - Sleep margin менял, не помогает. И везде один ответ был как решение: room_speed сделать 999 - типа тогда исчезает. В итоге я меняю Game frames per second на 120 и перестает подфризивать, но можно ли так делать? Что-то меняется для логики и производительности если 120 фепесов делать?
И второй вопрос, как снижать GPU usage? Пустой проект выдает около 14%, по-моему как то чересчур много
И как теперь сделать так, чтобы на мониторе 75 гц у меня игра не ускорялась по сравнению с монитором 60 ГЦ? Потому что выдает 75 фпс / 60 фпс, соответственно все ускоряется
>>754542 У тебя там где-то должна быть дельта между фреймами. Ты должен во всех своих формулах движения умножать всё барахло на дельту. Тогда всё движущееся будет двигаться обратно пропорционально скачкам фпс. мимо
Я тоже прочитал в обсуждениях про дельта тайм, что его надо юзать, только не совсем понял:
У меня стоит 120 room speed
На моём Монике игра выдает 60 кадров, на другом 75 в секунду. Если я буду использовать дельтатайм в скриптах, то что будет с логикой? Она будет работать как 120 шагов в секунду везде, то есть скорости будут одинаковые везде, при разной частоте обновления дисплея? То есть она отвяжется от фпс, если я верно понял?
>>754550 Вообще какой-то не очень правильный ответ на вопрос.
В гамаке скорость игры не привязана к частоте монитора. Скорость игры можно как повышать, так и понижать прямо в процессе игры, частота монитора тут ни при чём.
Другое дело что таки да - если компт тормозит, и FPS проседает, то торможение это может быть обработано по-разному. Можно просто замедлить игру. А можно у замедленной игры увеличить все скорости, умножив их на дельта тайм.
И то и другое плохо. Игра не должна тормозить.
>И как теперь сделать так, чтобы на мониторе 75 гц у меня игра не ускорялась по сравнению с монитором 60 ГЦ? Потому что выдает 75 фпс / 60 фпс, соответственно все ускоряется
Ты можешь установить скорость игры в микросекундах. Это должно решить проблемы любых ускорений. game_set_speed(33333, gamespeed_microseconds); // поставит тебе "60 фпс"
Но я как-то мало про это знаю, т.к. никогда не запускал гамаковские игры на мониторе с 75 герц.
Юзаю 2.5Д камеру Появились полосы на тайлах которые ближе всего по глубине к камере И игра по прежнему тормозит (фпс стабильный и не проседает). Просто подфризивает при движении изредка, очень заметно. Увеличение room_speed до 999 не помогает
>>751415 Типа там один юнит броадкастит "Я ударил!" Все остальные, когда слышат "Я ударил!" смотрят у себя на флаг "выбран" и если он стоит то отрабатывают получение пиздюлины.
>>755274 Ну давай разберём по частям тобой написанное: Во-первых, непонятно, зачем тебе какие-то глобальные переменные, в которых нужно что-то отсылать. Во-вторых, я опять же не ебу, что у тебя за код, тащи свою хуйню сюда, телепаты в отпуске.
>>763169 Да, кстати. Не успел я купить на распродаже базовую версию с поддержкой десктопа и начать изучать, как они переобулись и вскоре стим-версию тоже склоупнут и выебут. Пиздец разочарование, в твиттере тоже вой стоит. Видимо, и правда, придется юньку щупать. Физическое отвращение к любой залупе с подписочной моделью.
>>763169 Кстати я вот этого тоже не понял. Мне сегодня клиент написал чтобы я принял новое лицензионное соглашение. Я принял и продолжил работать, не вникал.
>>763184 Вроде бы не угрожает. В профиле перманентная лицензия вообще отображается как free мерзость какая, по будущим обновлениям сейчас этим мудакам особой веры нет. Где-то эти костыли рано или поздно вылезут.
>>763184 >>763187 На форуме пиздят! Ещё как угрожает: если у вас была перманентная лицензия, то взамен выдаётся 12 месяцев бесплатной подписки по тайеру "инди". У меня в профиле 17 месяцев, хз это глюк или они так расщедрились.
>>763224 Зайди в раздел "subscriptions". Олсо вангую что через год все "вечные" лицензии обнулятся. Или нельзя будет обновится без покупки подписки. Или ГМ загнётся.
>>763291 Да тут вопрос не в версии, по большому счету, а в хамском отношении к лояльному клиенту, которому в нынешних условиях всё-таки есть куда свалить. Олды вон до сих пор в шестом фотошопе сидят под ХР и им нормально, главное чтоб для задач хватало, но там и пиратка, а не вот это вот всё.
Штош, думал перекатить прожект на 2 студию, но пока придется остаться на 1.4 А там уж либо после продаж попробовать перекатить, либо щупать хуюнити/говнот, а то и удк5 ждать. Вот уж современный мир, когда лучший убийца продукта это этот же самый продукт. Подписка вроде не дорогая, но всё равно противно. А самое уебанское, это то что уже купленное отбирают.
Спрашиваю по поводу звуков, так как ничего об этом не знаю. В гейм мейкере лучше всего для звуковых эффектов использовать какой формат? ogg является лучшим для этого выбором?
Тред, видимо, теперь уже посвящён оплакиванию перманентной лицензии и перекатыванию куда угодно (Unity точно удобнее GMS2 для разработки 2D игр?). Однако, начатое надо доделывать. Возник вопрос и, надеюсь, в треде ещё остались адекваты. Есть ли вшитые шрифты, которые умеют показывать китайские (TC и SC), японские и корейские иероглифы? Ну и хинди ещё збс было бы. Скачал гугловские CJK из Noto Sans и Noto Serif, но как-то с ними проект вырос с 30 Мб до 190 Мб. Не хотеть этого. С другой стороны, Noto по хорошей лицензии распространяется. Подсобите советиком, аноны, прошу.
>>768988 >Тред, видимо, теперь уже посвящён оплакиванию перманентной Нет, не посвящён.
>Есть ли вшитые шрифты, которые умеют показывать китайские (TC и SC), японские и корейские иероглифы? Ну и хинди ещё збс было бы. Ну что значит "вшитые"? Либо ты используешь системный шрифт ОС пользователя, либо прикрепляешь свой шрифт к проекту.
Шрифт с kaji естественно много весит, так что для японцев и китайцев можешь сделать отдельные версии, чтобы остальных кандзями не напрягать. Или использовать системые шрифты, какие у них там широко распространены, я не знаю.
А ещё у меня для тебя хорошая новость. Корейцы уже 60 лет иероглифами не пользуются.
>Ну что значит "вшитые"? Либо ты используешь системный шрифт ОС пользователя, либо прикрепляешь свой шрифт к проекту. То есть если у меня в самой игре иероглифы не отображаюся, у пользовтелей, живущих в мире иероглифов, будут? В самой студии у меня, кстати, иероглифы прекрасно отображаются. Странно это всё.
>Шрифт с kaji естественно много весит, так что для японцев и китайцев можешь сделать отдельные версии, чтобы остальных кандзями не напрягать. Или использовать системые шрифты, какие у них там широко распространены, я не знаю. Прекрасный совет, спасибо. То есть общего шрифта для них нет? У Noto там вроде по 30-40к символов, а наиболее часто у азиатов используется 2-8к. Хотя, такие "выборочные" рофлошрифты, наверное, ещё поискать надо.
>А ещё у меня для тебя хорошая новость. Корейцы уже 60 лет иероглифами не пользуются. Но и латиницей чё-то не особо пользуются чувствую терминологически подъёб. >
>>768988 Ты уверен что твое говно нужно кому-то в китае или японии? Попробуй назвать пару инди-игр от китайцев или японцев. Думаешь там кто-то узнает о твоей игре? Ты тратишь время на хуйню.
>>769004 >Ты уверен что твое говно нужно кому-то в китае или японии? Попробуй назвать пару инди-игр от китайцев или японцев. Думаешь там кто-то узнает о твоей игре? Ты тратишь время на хуйню. Это здоровые амбиции, не обращай внимание.
>>769002 >Не знаю. Не тестировал никогда. Но по идее так и должно быть, если ты используешь системные шрифты. Но у меня в системе иероглифы отображаются. И в самой Studio весь текст корректно отображается. Может быть, проблема с тем, какой фонт задается в коде.
Решение проблемы нашлось: к счастью при выборе областей номеров используемых символов при настройке фонтов можно скопировать весь текст и GMS2 сам отберёт только нужные иероглифы и символы. 10/10 Ручаюсь, Юнити3Д так не умеет. Размер игры снизился со 190 Мб до 35 Мб. Прекрасно. OTFки Фонтов, конечно, сами ещё перед релизом надо будет добавить, но это мелочи.
>When you set the Characters drop-down in the Import Settings to Dynamic, Unity will not pre-generate a texture with all font characters. Instead, it will use the FreeType font rendering engine to create the texture on the fly. This has the advantage that it can save in download size and texture memory, especially when you are using a font which is commonly included in user systems, so you don’t have to include the font data, or when you need to support asian languages or large font sizes
>>769230 Местные аноны наверняка знают гамак лучше, чем в движкосраче. Мне просто хочется знать 2-3 главных приемущества гамака и всё. Никаких вопросов, выпадов или какого бы то ни было другого продолжения этого обсуждения с моей стороны не будет.
Простой, удобный, для 2d лучше не найти. Мультиплатформа. Сделать можно всё что угодно. Отличная техподдержка от сотрудников yoyo на форуме (не раз с ними общался) и от обычных пользователей.
Что ещё от движка нужно?
Могу припомнить, что несколько раз сталкивался с багами в гамаке, репортил их и их исправляли.
Сегодня столкнулся с какой-то лютой жестью в гамаке.
При загрузке комнаты у большинства объектов стал выполняться clean_up евент ДО create event.
Т.е. заходишь в комнату - игра вылетает потому что инстансы выполняют clean_up ивент, в котором нужно освобождать сурфейсы, если они есть. А переменная с указателем на сурфейс ещё не объявлена, т.к. create event ещё не произошёл.
Я убрал код из clean up, игра стала загружаться, create выполнился но все инстансы были невидимы. Хотя по дебагеру было видно что в комнате они есть.
Что это была за хуерга я вообще не понял, потому что через 20 минут попытак дебаганья всё внезапно снова начало работать.
Я могу только предположить что хуйня была как-то связана с потерей интернет соединения во время работы, из-за чего могла как-то пойти по пизде лицензия yoyo и игра ограничила кол-во объектов, которые можно иметь в проекте.
>>771371 Потому что speed - это одна из встроенных переменных, наряду с direction. Объект движется в сторону, определяемую direction (которая по умолчанию равна 0, это вправо) со скоростью, указанной в speed. Соответственно, если ты к этому сверху привяжешь y += speed, объект будет двигаться по диагонали. Делай кастомные переменные типа spd, тогда будет двигать только вниз.
Подскажите, имеет ли смысл пилить РПГМ-подобную игру (aka пикрил) на GMS, а не на, собственно, RPGM? А то я чет спонтанно купил гамак, а потом подумал, не проще ли херачить игру на вроде бы специально заточенном под это движке. Хотя Undertale же сделан на нем, значит, препятствий по факту нет.
>>772521 >Подскажите, имеет ли смысл пилить РПГМ-подобную игру (aka пикрил) на GMS, а не на, собственно, RPGM? Нет. Другое дело, что ГМС для более серьёзного и гибкого геймдева, даром, что относительно простой в освоении. РПГМейкер - это больше конструктор с прямыми указаниями типа "один шаг влево" (минус всякие кастомные скрипты, без которых даже размер окна нельзя поменять из коробки).
Собираюсь приобрести стим версию для декстопа, но не могу выкупить за лицензию, мне дадут 12 месяцев инди варианта подписки или же перманентную лицуху??
Ну и стоит ли оно того вообще или же рассмотреть другие варианты?
>>775818 >перманентную лицуху Это. Один раз покупаешь в стиме и оно закрепляется за акком. >Ну и стоит ли оно того вообще или же рассмотреть другие варианты? В плане? Другой движок или что?
>В плане? Другой движок или что? Да, в далёком будущем хотелось бы делать какие-нибудь прикольные проектики, что-то по интереснее чем платформеры по гайдам, и выкладывать их на какой-нибудь itch.io или даже стим.
И вот что лучше для этого гамак, unity или какой нибудь unreal с годотом?)
>>775821 >Да, в далёком будущем хотелось бы делать какие-нибудь прикольные проектики, что-то по интереснее чем платформеры по гайдам, и выкладывать их на какой-нибудь itch.io или даже стим. Ну есть дофига игр на гамаке, например, многие из них публикуются в стиме, выглядят некисло. >платформеры по гайдам Такое больше нужно для тех, кто вообще ничего в кодинге не понимает: объяснить принцип работы переменных и объектов, функции, вот это вот всё. >И вот что лучше для этого гамак, unity или какой нибудь unreal с годотом?) Ну я как адепт церкви гамака должен тебя склонить к оному, но я хотя бы объясню, почему: хороший движок с понятным интерфейсом, в котором чётко видно, где какой объект/скрипт и как он будет работать/вязаться с другими, багов по минимуму, да и то они фиксятся довольно быстро. Производительность выше по сравнению с тем же юнити да у чего угодно она блять выше, чем у юнити. Короче, если тебе нужен удобный движок для 2Д игр на самом деле гамак ещё и в 3Д может с минимальным порогом вхождения, то вот, пожалуйста. Сам попробуй что-нибудь потыкать: у гамака есть трайл версия, с которой недавно сняли ограничение по времени, то есть ты в ней только собирать экзэшники не сможешь. Посмотри, что да как, если чего непонятно - обращайся сюда.
>>775828 Юнити позволяет создавать крутой визуал благодаря сочетанию 2д и 3д, а что там за 3д в гамаке я хз. На самом деле юзаю юнити, т.к. просто лучше в нем шарю.
>>775852 >а что там за 3д в гамаке я хз Ну вон выше полноценный тридэ проект на гамаке. Есть игры по типу Titan Souls, которые совмещают в себе 3Д и 2Д в топ-даун перспективе. Челик с этой доски делает арчтавер, правда на 1.4.
>>775818 >Собираюсь приобрести >рассмотреть другие варианты? Да, рассмотри Godot, он на 100% бесплатный и в 2D может не хуже GMS. Жалко что ли 36 МБ с официального сайта скачать без какой-либо установки? А официальные мануал с туториалами очень хорошо поясняют, как что-то сделать.
За что ты собрался 50$ отдавать? Ты точно ходил по ссылке? Попробуй ещё раз, может быть ты всё-таки сумеешь найти там кнопку "бесплатно"? (Она там слева внизу) https://www.yoyogames.com/ru/get
Когда (никогда) понадобится сделать билд на пека заплатишь 82 рубля за месяц лицензии или скинешь свой проект в тред, чтобы тебе билд кто-нибудь сделал.
Ребят, в последний раз пользовался версией 8.1. С тех пор большие изменения произошли? Сейчас без проблем вкачусь? Можете вкратце рассказать что изменилось с тех пор?
>>777978 >Ребят, в последний раз пользовался версией 8.1. С тех пор большие изменения произошли? Не просто изменения, а глобальный оверхол почти всего, хотя суть осталась всё та же. >Сейчас без проблем вкачусь? Да. >Можете вкратце рассказать что изменилось с тех пор? Если вкратце, то подтянули интерфейс и производительность, добавили новых фич. Девочка уже совсем большая, теперь это не просто Gamemaker, это GameMaker Studio 2(.3.6).
>>777995 >А синтаксис поменялся? Функции те же? По большей части всё то же самое, скорее добавили новые функции к уже существующим, чтобы не пердолиться. В любом случае, освоить всё это не так уж трудно.
>>772521 Твой пикрил как раз хороший пример того, что можно было бы сделать на любом другом движке кроме RPG Maker'а. Зачем брать движок для РПГ, если ты не пользуешься ни чем кроме системы диалогов?
>>777995 Какая разница что поменялось в синтаксисе, если его детали с 99% вероятностью ты уже не помнишь? С выхода гамака 8.1 уже лет 10 прошло и если ты его тогда в последний раз трогал то сейчас все равно переучиваться.
Ребят, не могу понять как создавать файлы и папки в гмс. Например хочу сделать редактор уровней и хочу сохранять в файл папка_с_игрой/levels.txt Пишу такой код file_text_open_write("levels.txt"); или file_text_open_write(working_directory + "levels.txt"); но нигде не могу найти созданный файл. Ни в папке с проектом (datafiles), ни в временной папке. Что я делаю не так?
>>778319 Файлы, которые ты создаёшь в игре (твои сейвы, текущие конфиги или твой levels.txt создаются в сэндбоксе во временной папке C:\Users\твой юзернейм\AppData\Local\название твоего проекта
Если ты захочешь прикрепить свой файл к проекту, то жми на кнопку, как на пикрил. Прикреплённый к игре файл нельзя редактировать из игры. Игра не имеет права write к любым файлам на диске пользователя, только к файлам в разрешённой ей временной папке.
Дружочки-пирожочки, доброй ночи. Подумываю наговнокодить и, видимо, наговнарисовать суперкрутую игру пушка 10/10. Начал потихоньку пилить прототип и накидывать идеи в блокнотик. Планирую делать тактику в изометрии или около того. Для статичного окружения подумываю использовать спрайт стакинг. Это рабочий вообще вариант? В том плане, удержится ли фпс, если будет сотня другая обьектов рисоваться подобным образом?
>>779142 Если тактика, то вполне. Гамак ещё на 1.4 выдерживал 100+ объектов, которые постоянно двигались туда-сюда. Другой вопрос: дойдёт ли у тебя до этих 100 объектов?
Так, Аноны, ситуейшн такая. Года 4 назад пытался сделать игру, но сдох комп еще на моменте анимаций персонажа. Щас через дохуя времени у меня вновь зачесалась простата желание дрочить гамак. Коротко - игра 2д-платформер типа КатанаЗеро в стиле Хотлайна. Что изменилось за последние несколько лет?
>>779663 Ну смотри: на прошлом зачищенном уровне у них всё летало, хотя была куча трупов, у которых есть физон при смерте (они отлетают и при смерти), плюс их можно взорвать или воскресить. Ещё там куча стволов, которые можно брать, партиклы, эффекты горящей земли и прочее говно, плюс два персонажа. На следующем уровне овердохуя (500+) противников с разными паттернами поведения, плюс всё вышеназванное. И это ещё на 1.4 с его производительностью. Тебе на двойке хватит твоего пошага на сто объектов с головой.
>>779721 Я глянул гамако дискорд, раздел 3д, там чет уныленько на самом деле. И в целом не советуют без опыта лезть. Правда и в стакинге я пока застрял, т.к. планировал манипулировать с depth с помощью косинуса угла камеры до обьекта, а он сука такая только 2 знака после запятой и этого мало((((((( стакинг я выбрал щоб камеру вертеть офк и там депс супер критично настроить.
>>686540 (OP) Проснулся в 3 часа ночи, почистил мандаринку и подумал о том, что мой теоритический метод определения depth если и будет работать, то только с объектами в один тайл размером, чего не хотелось бы. Ебаное программирование игрушка сатаны.
Такой вопрос. Мне нужно завершить сетевую игру, условием победы является 10 фрагов одного из игроков. Объекты сервера и клиента разнесены по разным комнатам. На сервере, прямо в скрипте передачи пакета от сервера к клиенту, вставил строчку, if player_kill = 10 {network_destroy(server)} и она работает. Из этого скрипты так же могу вытащить переменную имени того, кто набил 10 фрагов. Так вот. Куда мне лучше присвоить эту переменную, чтобы передать всем участникам? Как перекинуть всех в новую комнату завершения игры?
Поясните за 2D массивы в юнити. Почему это не работает? lightBulb1[0] = [3,2,1,0,1,2,3]; lightBulb1[1] = [3,2,1,0,1,2,3]; lightBulb1[2] = [3,3,2,1,2,3,3]; lightBulb1[3] = [3,3,3,2,3,3,3]; for (var v=0; v<3;v++) { for (var h=0; h<6;h++) { show_debug_message(string(lightBulb1[v,h])); } } Ошибка: Push :: Execution Error - Variable Index [0,4] out of range [1,4] - -1.lightBulb1(100012,4) Когда вот так задаю массив, тоже не работает. lightBulb1 = [[3,2,1,0,1,2,3], [3,2,1,0,1,2,3], [3,3,2,1,2,3,3], [3,3,3,2,3,3,3],]; Гамак 2.2.5
>>783236 >>783239 Дело говорит. И в дебаг меседж мне кажется еще стринг залупаться будет, типо для чего он вписан вообще? Я такого синтаксиса не помню на вскидку.
>>783238 Убирал, не помогало. С запятой на каком-то форуме увидел. >>783239 Тоже пробовал, не работает. >>783243 Дебаг месседж только стринги выводит, чтобы переменную вывести - надо её в стринг сконвертить, для этого и стринг. Спасибо, посоны, за попытку помочь. В итоге плюнул и сделал одномерный массив, и вывожу как lightBulb1[v+h*6].
>>783246 Дебаг выводит значение любого типа. Быстрый поиск в мануале функции стринг() выдает ожидаемое ничего. Второй вариант создания массива без запятой в конце является правильным, в мануале он есть.
>>783246 Даже вздрочился с кровати за комп проверил, все работает. Массив создавал как твой второй вариант, только без последней запятой, потому что не может так быть, чтоб у тебя один уровень массива оканчивался запятой, а другой нет. Скопировал твои форы и написал нормально индексы [v][h]. А еще при создании не помню точку с запятой писал или нет в конце. В мануале вроде ее не надо ставить.
Насчет первого способа чет вообще хз. Поидее бульб[0] =[] инициализирует массив бульб с одной ячейкой. Т.е. тут нет указания на то, что вложенное в эти скобки тоже является массивом и типо надо инициализировать через [[]]; тогда у меня возникает вопрос, а чем в первом случае является числа через запятую?
>>783247 Судя по мануалу она есть, как "массив массивов". Т.е. у тебя одномерный массив одномерных массивов. Что, собственно, и иллюстрирует запись выше. >>783248 >Дебаг выводит значение любого типа. Даже при автозаполнении он в подсказке пишет: show_debug_message(str) ...посмотрел в мануале: "Note that the message can be either a string or a real number, but if you need both then the number will have to be converted to string first using the string function" Действительно, ты прав. Больше не буду стринги писать. >>783250 Да как так-то? Вот я написал: lightBulb3 = [[3,2,1,0,1,2,3], [3,2,1,0,1,2,3], [3,3,2,1,2,3,3], [3,3,3,2,3,3,3]]; Правильно? Как мне теперь к нему обратиться? content = lightBulb3 [[2],[3]]; show_debug_message(content); Выдаёт 2 в output, но вылетает с ошибкой: DoConv :1: illegal array use at gml_Object_main_level_Create_0 (line 39) - content = lightBulb3[[2],[3]];
content = lightBulb3[[2][3]]; Object: main_level Event: Create at line 39 : got '[' expected ',' or ']' Object: main_level Event: Create at line 39 : malformed assignment statement
content = lightBulb3[2,3]; Тоже выдаёт 2, но вылетает с другой ошибкой: Push :: Execution Error - Variable Index [2,3] out of range [1,-1] - -1.lightBulb3(100015,64003) at gml_Object_main_level_Create_0 (line 39) - content = lightBulb3[2,3];
>>783357 >content = lightBulb3[1][0]; Т.е. что-то он создаёт, а как это прочитать - хз. к слову, если написать content = lightBulb3[1]; show_debug_message(content); То он выдаёт в Output { { 3,2,1,0,1,2,3 }, } >>783361 Для верности, скопировал этот код в новый объект - монопенисуально. У меня 2.2.5. Чтобы не тратить время добрых людей предлагаю считать, что в мою версию такого хайтека как двумерные массивы тогда ещё не завезли.
>>783474 Спасибо, друг, забей. Слишком много времени отняло уже, проблему обошёл, буду пилить дальше. >он ругается на оператор присваивания почему-то. Я думал, что на то что просто "=" а не ":=", но оба варианта, похоже, одинаковы. Ошибка, во всяком случае, остаётся. Всё. Хуйсним.
Есть какое-либо целостное хранилище инструкций как правильно реализовать те или иные функции для игр, которые обычно реализуют неправильно? Как через тот же place_meeting. Или же какое-то хранилище скриптов, которые можно использовать у себя?
хочу сделать противника который будет идти ко мне сам и не проходить сквозь меня и стены, написал в обьекте монстра скрипт phy_position_x += sign (obj_player.x - x) speed_enemy; phy_position_y += sign (obj_player.y - y) speed_enemy; То есть, он должен идти ко мне сам, но почему-то мне выдаёт ошибку. Не могу понять почему, обрыл интернет что-бы найти ответ на вопрос. После запуска игры выдаёт ошибку в консоли
___________________________________________ ############################################################################################ ERROR in action number 1 of Step Event0 for object obj_monster:
>>783825 А у меня такой вопрос еще. А ты уверен, что obj_player.x - что-то тебе передает вообще? Ну типо я конечно подозреваю, что в данном случае он дает х от рандомного обж.плеер и так как он один, то получаем как надо, но все же? У тебя же тут не конкретизируется экземпляр объекта.
Ребята, вот у меня есть несколько объектов, например: enemy1 enemy2 enemy3 Есть несколько инстансов каждого в руме. Мне нужно к ним ко всем применить некое действие (например - убить). Для одного я пишу цикл: for (var i = 0; i < instance_number(enemy1); ++i;) {убить}; А можно как-нибудь изящно в одном цикле всех обойти? Т.е., по сути - получить ссылки на все объекты с маской "enemy*".
Пока писал придумал, что можно каждому в криейт сказать, чтобы записывал свой айдишник в массив all_enemies[], лежащий в том объекте, где осуществляется обработка.
Может есть лучше способ? Потому что в таком случае непонятно, что делать, когда один из объектов убирается.
Что за чертовщина: когд добавляю в сцену больше трёх объектов - перестаёт работать код?! Пофигу, что это за объекты - даже свежесозданные пустышки. Если их три - всё зашибись, добавляю четвёртый - не работает. Ошибки нет, просто не делает то, что должен. У меня код ставит и убирает тайлы на разных тайловых слоях - ничего сложного не делает. Освещение тайловое. Т.е. с объектами вообще никак не взаимодействует!
>>784910 В общем, проблема в определении размера тайловой карты. Вот этот код работает при 4 объектах, но не работает при 5: В сцене 4 слоя: Instances (тут 4 объекта - main, в котором весь код и 3 пустышки.) Dynamic_light (на момент запуска пустой) Static_light (содержит тайловую карту статичного освещения) Room_base (содержит тайловую карту уровня)
Этот код лежит в Create. Больше никакого работающего кода в проекте нет (Step закомменчен). layBase = layer_get_id("Room_base"); layStaticLight = layer_get_id("Static_light"); mapStaticLightId = layer_tilemap_get_id(layStaticLight); layDynamicLight = layer_get_id("Dynamic_light"); global.mapDynamicLightId = layer_tilemap_get_id(layDynamicLight); mapSizeX = tilemap_get_width(layBase); mapSizeY = tilemap_get_height(layBase); for (var v=0; v< mapSizeY; v++) { for (var h=0; h< mapSizeX; h++) { //get var dataLight = tilemap_get(mapStaticLightId, v, h); tilemap_set(global.mapDynamicLightId, dataLight, v, h); } } Если в проекте всего 4 объекта, то размер карты mapSizeY и mapSizeX определяется нормально, и всё работает. Если в проект добавить ещё один объект, то mapSizeY и mapSizeX становятся равны -1, и цикл for игнорируется. Если вручную задать вместо mapSizeY и mapSizeX какие-нибудь цифры - то снова работает. Такие дела. Какой-то пиздец.
>>784917 >Если в проекте всего 4 объекта, то размер карты mapSizeY и mapSizeX определяется нормально, и всё работает. Если в проект добавить ещё один объект, то mapSizeY и mapSizeX становятся равны -1, и цикл for игнорируется.
Значит ты не можешь получить значения ширины и высоты слоя layBase.
Скорее всего ты даже не можешь получить его правильный id выполняя layBase = layer_get_id("Room_base");
Ты всю эту малафью делаешь в create event объектов. Скорее всего у тебя косяк с порядком исполнения кода. Проверь Instance creation order в комнате.
>>784918 Всё, я разобрался. У меня в tilemap_get_width(layBase); layBase = layer_get_id("Room_base"); Т.е. ссылка не на карту, а на слой. Если добавить mapBaseId = layer_tilemap_get_id(layBase); И брать размеры с правильной ссылки - всё работает: tilemap_get_width(mapBaseId );
Странно, почему при количестве объектов <5 работает и layBase... но я рад, что удалось всё починить. Я уже практически настоящий программист, гы.
>>784922 >Странно, почему при количестве объектов <5 работает и layBase. Потому что тебе просто повезло угадать со значением. id слоя это просто число. Оно может меняться.
Слева - тайл в самой игре (кривой), справа - тайл на превью в конструкторе комнаты (нормальный). В игре почему-то он с меньшим разрешением. Проблема только на двух слоях с одинаковым тайлсетом. Кто-нибудь знает как фиксить? И вообще постоянно баги случаются когда меняю что-то в тайлсете и обновляю его.
мужчины подскажите. уже 3 месяц ковыряю почти с нуля гамак. с переменным успехом прошел курс на юдеми и френдлиастронавт но сам почти ничего не могу сделать. у всех так или я прост одаренный и стоит бросить это все?
>>791488 У всех, ковыряй дальше, и работай над своим ментальным восприятием. Подходи к любому вопросу не с мыслью "А что если не получится?", а с мыслью "А что если получится?", каждая неудача это +100XP, любое действие, даже самое маленькое, например тупо поковыряться в гамаке 5 минут, пытаясь сделать что ты хочешь - это шажочек в сторону твоей цели.
>>791506 К курсам никаких претензий, особенно если второй раз смотреть уже с какой то базой. не получается что то сделать нестандартное, что не разбирали в курсе. Условно сделать файтинг, как планировал, даже не могу начать не знаю с какой стороны подступиться, даже Стейт машину не могу составить уже неделю. Я конечно же не целый день работаю, только вечерами 1-3 часа в день.
>>791517 начни хоть с чего-то лол. сделай всратую стейт машину и неправильную. когда упрешься в ее всратость, поймешь что тебе в ней мешает, переделаешь код и т.д. А так скорее всего ты не концентрируешься на задаче и нехуя не делаешь на самом деле. Типа сядешь на свои 1-3 часа из который 2.99 выбираешь музыку для кодинга и кипятишь чай.
>>791564 >Типа сядешь на свои 1-3 часа из который 2.99 выбираешь музыку для кодинга и кипятишь чай. Ну ты и мразь. Я как раз сидел пил кофе, курил и слушал музон скролля двачи уже почти три часа когда вдруг напоролся на твой пост.
>>791593 А чо? Я хз где брать описание задач, на Ютубе или слишком одинаковые или какие то всратые. Официальный форум не сильно помогает там каждый второй вопрос "как сделать передвижение, как сделать анимацию"
>>791600 хотел платформер солузлайк, потом понял что как то не вывожу, решил попроще платформер тип контры, но пока осилил только передвижение и то большую часть взял из курсов что уже прошел. вообще я рисовал раньше, делал демку и один чел с меня взял 15к сделав вообще столько сколько я сделал, после 3 месяцев обучения, за час.
>>791602 Ну для начала тебе нужно общее понимание того, как в гамаке работают переменные и скрипты, для этого я бы посоветовал сделать что-то совсем примитивное, типа кликера, или вон посмотреть туториалы по созданию инвентарей (у Сполдинга вон недавно было). У меня примерно так же было, я не мог понять, как и что работает, потом приучился, глядя на чужой код.
Сто лет гамаком не пользовался. Когда-то покупал лицуху в стиме, а сейчас гамак перешел на подписку и были некоторые непонятки с тем, как они поступят со старыми покупателями. Сами гамаковцы клялись, что у них все будет вечно работать. Сейчас зашел в дашборд на сайт, там хер пойми что, Free Permanent, подписка на Creator (12 months free), хуе-мое. Объясните, я уже наебан гамаком?
Йоу! Кто-нибудь тут пользуется GMEdit? Интересно, есть ли возможность экспорта проекта в .exe, имея компилятор на случай оффлайн разработки :-( Нашёл плагин buildier и его форк, однако оба ВРОДЕ только позволяют запускать проект, но не экспортировать собранное. Может надо какие-то аргументы где-то написать, чтобы экзешник создавался? Авторы пишут, что этот плагин работает с настройками компилятора. Может в GMS2 надо что-то настроить, чтобы всегда создавались экзешники?
Или может есть ещё какие варики? О крякнутой студии думать пока не очень хочется.
Вопрос актуален: >>795254 Могу только добавить, что купил на торрентах нужные крякнутые версии, но антивирус ругается на приложенные файлы, что неудивительно, но немного пока раздражает и антивирус отрубать пока желания нет.
Добро пожаловать в гамакотред - адекватный тред адекватного движка.
Задумал сделать 2d игру и не знаешь с чего начать? Качай демоверсию гамака
https://www.yoyogames.com/get
и запускай туториалы Шона Спалдинга
https://www.youtube.com/user/999Greyfox/playlists
Движок платный. Покупать лучше в стиме, по региональной цене. Десктоп версия 1600р.
Полезные каналы:
https://www.youtube.com/channel/UC7fkptPD1FHQyDc9Fnm9S_A
https://www.youtube.com/channel/UCdpsYesx7bwrKGU_u9hcwIg
https://www.youtube.com/channel/UCrHQNOyU1q6BFEfkNq2CYMA
https://www.youtube.com/channel/UCnKHIXYeYkehIJtF414f65A
Прошлый тред тонет здесь: