Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Battle of the Undertale. Создание, Блог

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115332

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Ребят я решил писать свой не большой блог пока создаю этот скрипт. Возможно, кому-то это будет интересно, возможно даже познавательно. Может даже вы сможете мне что подсказать, как сделать лучше или чего не стоит делать. Я решил создать скрипт боевки в стиле Undertale, который заменит стандартную. Этот скрипт создаю для редактора RPG Maker VX Ace.
Считайте это своего рода челенжа для меня. =)

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

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

Что должно быть в минигре, кроме заднего фона с врага. Должна быть арена виде окна, в котором должна находиться душа игрока (Где мой кинжал жертвоприношения), виде сердца. Сердце может передвигать внутри арены, но выходить за неё не может. Но на игрока могут лететь различные снаряды, которые будут наносить урон игроку. И все это будет происходить в пределах определенного времени.

Я уже прописал арену-окно, а также границы, за которые нельзя будет переместиться. Даже если окно начнет двигаться и будет задевать сердце, оно будет отодвигаться внутрь арены, но так как скорость передвижения отталкивания выше, то выглядит это словно сердце действительно двигает стенка арены. Так же я создал первый пробный снаряд. И написал простенькую функцию для обнаружения коллизии объектов, пересечений прямоугольников (либо квадратов). Функция работает отлично. Да забыл упомянуть, снаряды не будут иметь анимацию, это будут простые картинки. Но в будущем это можно будет исправить на анимацию.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Насчет снарядов, я планирую сделать так. Будет класс, который будет называть «Generation_Bullets», этот класс будет генерировать новые снаряды. Сам генератор будет настраиваться в модуле, а после помещаться в редакторе в навыки. В заметках.

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

Пока что на этом все. Здесь я буду отписывать своей прогресс написания скрипта, а также если что упущу, буду освежать память читая эту тему. Дальше я пока сосредоточусь на создание мини игры.
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 9 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin, yuryol, VarVarKa, Iq54

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115336

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Ну что ж, продолжаем. Сегодня я сделал немного. Но повозиться пришлось. Привык я к легкости руби, но здесь меня ожидал не большой сюрприз. Видимо из-за версии руби 1.92, отказывался принимать диапазоны чисел в рандом методе, ссылаясь на невозможность конвертации в целые числа. Да rand принимал только целые числа. Пришлось придумывать и искать велосипеды =)
Но я нашел выход.
Превратить вот это rand(100..300) пришлось в это
min = 100; max = 300
max_nub = max – min
Ну а после некоторых приготовлений:
x_rand = rand(max_nub + 1) + min
И все заработало как надо. Спросите зачем мне это, а я вам отвечу, для генерации пуль… снарядов в рандомных местах с определенными диапазонами по x и y координатам. Она, конечно, не совсем хорошо работает (не учитывает размеры самих снарядов), но это дело поправима.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


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

Разрабатывать скрипты интересно, встречаются много новых задач, словно логические загадки, цели, которые хочется преодолеть. Жаль, что на скриптинг у меня не так много времени. Но разработка продолжается.
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: idavollr, yuryol

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115364

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
И снова Баг! Я продвигаюсь в своем направлении. Теперь снаряды могут двигаться. В любом направлении, пока что правда прямо, куда направили туда и полетел. Так же я добавил еще пару вещей. Черный экран. Возможно, вы не обратили внимания, но в оригинале Undertale он явно присутствует. Это сплошной черный экран, за которым прячутся снаряды у которого глубина z меньше экрана. Так можно размещать кучу длинных костей и настраивать их по Y оси, чтобы выглядели разного размера. Ну короче я подобное сделал. Так же сделал еще одну маленькую, но важную вещь. Уменьшил коллизию самого сердце, маленький трюк. Спасибо Лосту за инфу.

Приделал штуку… как бы я её называю загрузочной лентой. Это лента с кучами координатами их две ленты, по х и у. Они перебираются генераторами и выкидывают снаряды по указанным координатам. Короче своеобразная вещь, которая помогает размещать снаряды на разных координатах. Ну и в самих снарядах прописал время жизни и направления.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Да я тут составил примерную схему структуры битвы. Задел поверхностно как все это будет выглядеть.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Разработка продолжается))
p.s. пока точу мини игру
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin, yuryol, Okorok.S

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115398

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Короч ребят мне было очень лень описывать что я сделал и потому решил выложить работу для пробы. Эта мини игра, это не законченная версия, так как в будущем она будет перенесена в другое место в битвы.
Короче я замутил таймлайн и сессии =)

Мини игра

Наслаждайтесь и вот вам еще и скрин... хотя нет, вру, просто гляньте что получается =)

p.s. может тупа не запустись от того что не установлен асе... но это не точно ))
музыка Тоби Фокса %)
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 9 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin, yuryol, VarVarKa

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115407

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
И снова баг, И снова жесть )) … и запятые в роли точек.
Дела обстоит так, что я запрограммировал сессии и таймлайны. Эти штуки «timeline» позволят вам помещать события по времени. Так что, к примеру генерация снарядов будет запускаться не сразу, а к примеру через секунд 20. Пришлось повозиться регулярками, но все работает. Так же туда можно в будущем запихивать и другие вещи кроме генераторов снарядов, к примеру режим души или манипуляции с ареной. Сейчас пока работают генераторы в таймлайнах и команда завершения сессии. Да я прописал сессии теперь они будут закрываться и удалять содержимое: снаряды, генераторы, сердца и саму арену. Ну кроме интерфейса, я закачал шрифт как в Undertale, теперь сцена битвы будет более схожа с оригиналом.

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

В будущем планирую сделать еще и модуль для режима души. Я не буду делать каждый режим по отдельности. Я планирую делать настройки, которые позволят создавать и настраивать режим души как вам захочется. Их можно будет включать в timeline. Так планирую создать еще один модуль с настройками, в котором будут указываться различные манипуляции с окном. Именно с ареной и черным экраном, они связаны )

Так же я прописал чутка сами снаряды, теперь в них можно загружать спрайты, картинки. Так что на арене уже плавают по сторонам всякие кости, мелкие пузыри и жучки. Кого захотите в будущем, того и добавите.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Да пару слов о сессиях, а именно о timeline и простых таймеров. Есть простой таймер, который закрывает сессию, по истечению времени. Там сразу запускаются генераторы снарядов. Их лучше будет использовать для простых мобов. А сами timeline лучше использовать на боссах, так как там за одну сессию можно накрутить куча всяких событий, которые выставлены по времени. Хм… нашел баг, хотя это и не баг вовсе. Короче нельзя вписывать одинаковое время, события переписываются на свежие время.

Ну пока что на этом все что я сделал в последние время. В основном все проверял, перепроверял, чтобы работало как надо и подчищала после себя мусор.
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 9 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin, VarVarKa

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115408

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Победитель Сбитой кодировкиПрограммист Ruby2 место ГотвОраторУчитель
Когда-то где-то тут я пилил что-то вроде демки "данмаку" (буллет хела) на Fiber, чтобы предъявить удобство этой штуки. По сути вся сессия это fiber, который запускается каждый фрейм, и там же определяется где спаунятся пули. Плюс пули сами по себе были fiber, поэтому там легко было выводить фазы.
Концепт может и не лучший, но это я такое, покряхтеть пришел.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Doctor_Bug, VarVarKa

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115409

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Амфи я бы хотел бы изучить столь любопытную вещь $_$
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Администратор запретил публиковать записи гостям.

Battle of the Undertale. Создание, Блог 4 года 9 мес. назад #115412

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Победитель Сбитой кодировкиПрограммист Ruby2 место ГотвОраторУчитель
Говорю сразу, давно это было и не правда. На форуме не нашел, но на ядиске вроде есть. Ace у меня нету, проверить не могу, нормально расписать тоже. Да и вообще надеюсь что это то, что надо а не, например, п**но.
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Doctor_Bug

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115423

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Баги снова здесь! Хе-хе. Снова привет. На этот раз я решил заняться самой душой, сердце, ох какое оно тяжелое. Короче я прописал гравитацию, да не простую гравитацию. Она может действовать из 4 любых сторон. Будь сердце будет тянуть вниз, или к вверху. И да теперь сердце может прыгать в соответствие куда притягивается. Ох пришлось скачать сам Undertale, дабы понять, как именно происходит прыжок, абы какой не пошел бы. Не без помощи друга, но мне удалось за прогать прыжок так как надо (хоть он и не совсем точен, между полетом и падением нету задержки, падает вниз сразу), но при долгом зажатии прыжка, происходит более высокий прыжок. Это важно =)

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Дальше я дописал смену картинки. Теперь сердце можно будет менять картинку. Да я заметил своего собрата-бага пока писал код. Оказывается, при повороте картинки на 180 градусов идет искажения картинки и сбивается коллизия, что не есть гуд. Скорее это все происходит из-за центральной точки, за которой держится вся эта конструкция. Так что при регулировании ох и оу картинка искажается. Короче я плюнул на это дело и тупа закачал четыре разных спрайта на разный угол. Мне так проще. Так же сделал так что при смене ключевых слов к примеру «heart» и «heart_blue», система распознает какие картинки нужна закачать для сердца и соответственно сама определяет сторону поворота.
Немного по размыслив я понял, что смогу сделать смену режимы души прямо во время сессии. И да, настройка души будет иди отдельно, записываться в специальный модуль для сердца, создавая шаблоны. Это значит, что кроме стандартных режим душ, вы сможете настраиваться свои собственные. Создавая уникальные режимы душ.

Режим души с голубым сердцем почти окончен, но не совсем завершен. Нужно еще сделать пару важных апдейтов. К примеру, при двух гравитациях, сделать возможность прыгать в бок. Здесь бы мне понадобилась бы ваша помощь. Я не проходил Санса на геноциде, но как происходит сам прыжок, не знаю. Видел только видео, но я не знаю, как реагируют кнопки при этой ситуации. Нужно ли нажимать одновременно две клавише, к примеру вверх и влево (если гравитация тянет вниз и вправо) или же достаточной одной клавиши? И сделать еще одну возможную вещь, возможность прыгать по платформам.

Дальше я займусь еще одним режимом, это там, где сердце стреляет. Думаю, с этим будет по проще.
Дальше по плану нужно будет заняться самой ареной. Она должна быть динамичной, очень динамичной, должна расширяться так как я захочу, в любую сторону. И двигаться, когда я с ней закончу можно доделать последний режим. Хотя, возможно, он не совсем последний режим =)
Режим с фиолетовой душой.

Так же хочу отдельное спасибо сказать Амфи за предоставленную демку его работы. Пускай я возможно не буду использовать фиберы, но в его демки я нашел очень полезные штуки, которых мне не хватало. Можно сказать так, не достающее звено. Это круговые движения снарядов и само наводка. После того как закончу сердцем и ареной займусь снарядами, апгрейдом.

p.s. я все также пилю мини игру.
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 8 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115425

  • Arlekin
  • Arlekin аватар
  • Вне сайта
  • Просветлённый
  • Сообщений: 254
  • Спасибо получено: 428
  • Проект месяца 1 местоПроект месяца 3 местоПроект года 1 местоВетеранРазработчикПроект месяца 2 место
Вся прогрессивная общественность следит за Вашими трудами, Баг. Каста неприобщённых к скриптингу людей ждёт и надеется, затаив дыхане и скрестив пальцы.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Doctor_Bug

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115426

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
У меня есть еще пару идей по созданию новых режимов душ. По крайне мере одна из них будет связанна с перемещающийся ареной, за которой можно будет выходить, но сердце будет затягивать обратно. Так что можно сделать арену очень маленькой и перемещать его по экрану, ну и пытаться уклоняться сердцем, пытаясь сопративляться затягиванию ареной и одновременно уворачиваться от снарядов. Так как сердцу можно будет настраивать параметры по отдельности, то можно будет придумывать новые режимы =)

Я сделаю все что возможно. Спасибо за поддержку :laugh:
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115428

  • Amphilohiy
  • Amphilohiy аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 547
  • Спасибо получено: 666
  • Победитель Сбитой кодировкиПрограммист Ruby2 место ГотвОраторУчитель
В Deltarune финальный босс бокс таскает, правда за его пределы выйти нельзя. Однако мне немного смущает следующий вопрос - накидаешь ли ты адекватных (т.е. оптимизированных) алгоритмов обнаружения столкновений, или же простой жадный перебор а-ля сравнить расстояние между каждой пулей и душой с радиусом этой самой пули?
Я верю, что иногда компьютер сбоит, и он выдает неожиданные результаты, но остальные 100% случаев это чья-то криворукость.
Администратор запретил публиковать записи гостям.

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115458

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Йо. Жук гриппует, потому умственная активность понизилась и все же, вот что я проделал:
Теперь сердце может стрелять и уничтожать вражеские снаряды.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Второе, я все же сделал возможность прыгать, принимая во внимания двухстороннею гравитацию. Правда будет работать только в двух случаях. Когда сердце прижимает вверх и влево, либо вниз и вправо. Можно будет прыгать, зажимая лишь две клавише. Ну эта угловая гравитация, так сказать. При одинарной гравитации (направленная сила только в одном направлении), работает как надо.
Третье, я переработал таймер для timeline, теперь можно задавать не только минуты и секунды, но еще и кадры. Не большое отступление. Благодаря свойству модуля Graphics.frame_rate игровая секунда равняется 60 кадрам. Потому теперь в описание «1m20f33» будет равняться одной минуте, двадцати секундам и тридцати трём кадрам. Так как подобная характеристика является ключом хеша, она не должна иметь одинаковые ключи. Да минута равняется 3600 кадрам, секунда 60 кадрам. Простым расчётом все это суммируется и превращается меткой для запуска нужного события.
Дальше теперь в сессии, а именно в timeline можно добавлять шаблоны сердца. В этих шаблонах указаны параметры, которые обновляют характеристики самого сердца во время присчитывание таймлайна. А также в модуле сессии добавился еще один параметр, который устанавливает настройки сердце по умолчанию. Иными словами, на каждую сессию вы можете задавать нужный шаблон сердца, и она будет браться во внимания. Будь то режим сердца стрельбы, или шаблон с действующей гравитацией.

Вот вам свежая демка для примера всего происходящего.
Свежая демка

Дальше. По части оптимизации, для определения столкновений используется простое пересечения прямоугольников. Другого более оптимизированного алгоритма не знаю, но если он понадобится, то придется изучить подобную тему по подробнее. Да, пару слов про оптимизации. А ведь правда у меня были и лаги и фризы. Во время тестирования. Но я забыл кое-что подчищать. Генераторы, они оставались хоть и были уже использованы системой, а еще пули, я забыл прописать им самоликвидацию, потому они летели в бесконечные просторы цифровой вселенной… в отчаяния. Лирическая отступление %D
Все пофиксил, теперь после завершения своей работы уничтожаются, а пули достигая края экрана (Ну и еще 100 пикселей) самоликвидируется оставляя за собой частичку nil’а. Шучу, даже «ничего» не остается. Все подчищается. Теперь чтобы сделать остальные режимы душ, мне нужно переключиться на другой элемент этой битвы. На арену. Теперь моя следующая задача сделать арену более динамичной, резиновой и скачущей по экрану.

p.s. зачем этот п.с. это напоминание над чем я работаю в текущий момент.
А работаю над мини игрой ))
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 8 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115574

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Ребяяяяттт и снова Баг! Ох долго же я не писал. Уж думал, что не смогу продолжить, но целую неделю я пытался наладить арену. Теперь арену можно вызывать в таймлайне или задавать шаблон по умолчанию. Скажу сразу было не легко. Сперва я очень сильно долго провозился системой расширение самой арены, трансформации. Здесь мне Амфи подсказал что можно это провернуть если находить крайние точки арену и по ним строить условия. Еще оказалось, что при присваивание окнам по ох и оу, игра почему стала вылетать. Ну а покопавшись в стандартных скрипт я вовсе обнаружил то что ох и оу для окон используют очень мало, чуть ли не единичные случаи.
Как только я с мог сделать подобный механизм, я задался другой целью. Теперь арена должна двигаться в нужную точку. Я не стал использовать банальное вычисление по х и у, и после отнимать или прибавлять напрямую эти параметры. Я решил использовать тригонометрию (черт возьми до сих пор для меня это сложная тема). По сути, эта само наводка, она в любом случаи пригодиться. Зайдя на различные форумы, нашел нужную формулы и стал их применять. Но тут я столкнулся с очередной проблемой, арена хоть и двигалась в нужном направлении, но не доходила до цели где-то 10 пикселей. Тут помог в этом деле Малтон. За что ему большой респект ))
Тут я хочу поделиться функцией которой он предложил. Она немного модифицирована, но свой функционал она не растеряла. Хе-хе видели бы вы как она называлась изначально, четко передавая что она должна делать XD

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Проблема еще заключалась в том, что координаты арены (она же является окном) принимают только целые числа, ни каких дробей. И что делать, когда вы получаете значения виде 0.7412344124. Конечно же округлять! Да насчет формул еще хочу по благодарить ребят, которые подсказывали как их применять. Так же благодарю F15 с формулой нахождения шага объекта по координатам. А также Демий и Юриола. Формулы по геодезии пригодились ))

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

Продвигаясь дальше, я понял, что мне нужно более динамичная арена. А когда происходили перемещения, и трансформация арены то все к чертям ломалось и отказывалось работать. Я долго провозился с этим, несколько раз переписывал функции, методы, переменные чтобы запускалось как надо. И они у меня тупа не получались. Я уже отчаялся, думал не смогу преодолеть эту стену. Но все же у меня получилось. Я понял еще одну вещь. Мне не хватает третьей функции. Так что теперь у меня есть три функции для манипуляций ареной. Это: transformation, scaling_arena, move. Первая функция трансформирует арену, изменяя свои границы, как вам захочется. Следующая функция работает как трансформация, но с более упрощённым алгоритмом и она автоматически включается когда видит что арена должны иметь определенные размеры. Третья функция просто на просто перемещает арену. В чем сложность всего этого? А сложность заключается в том, что все три метода работают с координатами ареной и его размерами, так как простое смещение ох и оу не работал. Потому каждый из этих функции работали с этими параметрами и важно было отделить их друг от друга. После тестов, вроде все работает как надо. У меня даже появилась идея для создание фиолетового режима души. Теперь займусь этим режимом. Скажу честно эта неделя была тяжелой. Вроде и задача была легкой, но так тупил )) А может она была на первый взгляд легким

Да еще сделал опцию прилипание сердце к арене. Она включается когда арена начинает перемещаться. Вы так же сможете перемещать сердце, но с учетом движения арены. (словно вы можете перемещаться на двигающийся платформе)

p.s. я все так же пилю мини игру.
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 8 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Arlekin, MaltonTheWarrior, VarVarKa

Battle of the Undertale. Создание, Блог 4 года 8 мес. назад #115658

  • Doctor_Bug
  • Doctor_Bug аватар
  • Вне сайта
  • Светлый дракон
  • Из горизонта события! ▪_■
  • Сообщений: 573
  • Спасибо получено: 896
  • Ветеран3 место в КодировкеПроект месяца 1 место3 местоПроект месяца 3 местоПрограммист Ruby
Ееехоу всем! И снова всех достаёт Баг своей статьёй. Баг решил заняться своими собратьями… пауками. Вру, конечно, нефига они не собраться. Но в любом случаи я решил заняться фиолетовым режимом души (сердца). Время пришло. Первое что мне пришло в голову это то, как разместить паутинки. Это темно-фиолетовые линии на арене. При чем их я решил разместить равномерно на арене. И тут задумался как это сделать. К примеру, по стандарту должно быть 3 паутины. Эта сцена в Undertale, битва с боссом Маффет (помешанная на выпечки), там в начале битвы дается три паутины по котором игрок должен скакать. В прочем думаю многие и так знают. Для меня создать именно этот режим кажется очень сложной затеей. Ну так я это к чему, короче паутины три, и чтобы разместить их равномерно по арене я решил просто на просто посчитать части, на которые делят три паутины. А после в голову пришла идеи для простенькой формулы. Три паутины делят экран на четыре частей. А это значит если паутин будет больше значит нужно всегда добавлять дополнительное единицу, и мы получаем части арены, на которые делят паутины… сумбурно %D

В итоги я просто делил арену на паутины (+ еще 1) и получал нужное значения (шаг), на которое я должен отодвигать паутины для их размещения на экране. Дальше я добавил отступ для сужения паутин по бокам. Да из-за не большой не состыковке, добавлять паутины можно только нечетное число, четное не будет работать. Но думаю в будущем можно будет по править.
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Есть у меня одна проблема, которую я не смогу решить, ох да простят меня фанаты этой игры. Но я не смогу грамотно запрогать наклоны арены со всем его содержимом. Проблема в том, что окна не могут наклонятся (хотя они же являются еще и спрайтами, странно. Ну по крайне мере они созданы из них). А если наклонять сами спрайты, то они коверкаются и ломается коллизия. Но! За место наклонов я решил добавить новый функционал. Заместо горизонтальных паутин можно будет делать вертикальные. И добавлять определенное количество паутин. Пускай будет утешительным призом ))
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Двигаемся дальше. Благодаря функции движения арены (там с вычислением точек и всякой тригонометрии) я смог залеплять сердца с движением арены, но вы это и так знаете из предыдущего поста. Но, а также и паутины, и высчитанные движения сердца (сердце же движется по-особому, прыгая с паутины на паутины, но может двигаться вдоль паутины). Так что теперь арена движется с совсем содержимым: Сердцем, паутинами (дальше сделают и со снарядами).

На этом пока все. Я еще не завершил разработку этого режима. Осталось самое сложное как мне кажется. В битве с Маффет в какой-то момент, паутины начинают двигаться вниз, вместе со снарядами и сердцем. Тут есть пару мыслей :S . Я заметил, что количество паутинок на арене не изменяется, они просто переносятся на противоположную сторону и так же перемещаются вниз.

p.s. пилю мини игру. Режим души фиолетовый… :whistle:
Битва с Маффет
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]
Баг изучает Godot Engine. А слушает эту музыку ~~> Мое сердце
Последнее редактирование: 4 года 8 мес. назад от Doctor_Bug.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: ZX_Lost_Soul, Arlekin, VarVarKa
Время создания страницы: 0.295 секунд