Прочел название игры и в голове перевелось как "Чозаземье" ахахха Очень надо обучалочки, либо отдельном механики на гитхаб, чтобы самому поковыряться и понять как оно работает. Сам начал не так давно за 2д рпг, в идеале с коопом . Сел в годот, чтобы, как принято, сделать игру своей мечты, но столкнулся с тем, что каких-то гайдов на 4й годот мало, а на русском я вообще молчу) Тем не менее уже реализовал систему статов (сил, лвк, инт) , сердца, мана-звезды и полоску стамины, бег и перекат, даже какой то инвентарь есть) Базы не хватает и референсов, чтобы качественно продвигаться. Поэтому от лица работяг к лорду, мы ждем гайдов, чем сильнее нам разжуешь - тем лучше)
Название кстати так и переводится, а еще оно созвучно с water lands, что очень подходит игре, ведь действия происходят на островах. В следующих видео буду стараться показывать код и разбирать его по возможности. Насчет обучений тоже задумываюсь, в первую очередь хочу показать, как сделать такую тень, как у меня в игре (она не просто прозрачная, а также сливается с тенями других обьектов, сам это долго гуглил), думаю будет полезно. Буду рад, если помогу тебе с твоей игрой!
@@LapkaCode О да, легендарная тень в тени) Полезная вещь, если запишешь видик! Если интересно, могу поделиться системой сердец. Сам тоже долго искал. В годот, в основном, все полоски используют и лишь немногие сердца. А те, что их используют не показывают как их обновлять, при наличии пассивной регенерации. Вдруг и я смогу тебе помочь, да время сэкономить
В общем вот, чтобы понимать, что тут происходит: 1 - я немного панк и испытываю балдеж от названия переменных на ру; Если в краце - то эта функция исполняется постоянно. Постоянно создает сердца и постоянно их удаляет (по дельте), а потому оно достаточно прожорливое, так, экспериментально, ~40+ сердец начинают снижать фпс, однако такое количество выглядит странно) В моем случае мое максимальное кол-во сердец будет 14 , как и мана-звезд, такое кол-во дискомфорта и снижения фпс не вызывает. Если знаешь как можно менее ресурсно-затратно реализовать - буду ждать видик. В самом начале функции удаляются все сердца в "контейнере сердец" - элемент канвас, а именно "грид контейнер", по умолчанию в нем нет элементов. А так же чистится массив в котором они хранятся Затем происходит перерасчет максимального колличества сердец, зависящий от макс здоровья. Которое можно привязать, например к стате СИЛЫ, так же удобно будет добавить какой нибудь бафф аля СИЛАх2 После создается новые сердца Затем созданным сердцам назначается текстура. Она зависит от целости десятка. В моем случае идет проверка "делится ли текущее здоровье на 10 или на 5" и, если делится на 10 -> сцене сердечка назначается 0й кадр (полное), если делится на 5 -> сцене назначается 1й кадр (половина сердечка), в другом случае -> 2й кадр (пустое) var хранилище_сердец_массив: Array = [] static var максимальное_здоровье: float = 100.0 static var текущее_здоровье: float = 100.0 static var регенерация_здоровья: float = 0.1 var heartsContainer: Node #элемент канвас задающий правила расположения своих детей (сердец) var heartScene: PackedScene # это собсна ссылка на саму сцену сердечка func _physics_process( delta: float): Расчет_количества_и_отображения_сердец() Реген_хп() # сюда что нибудь свое можно про реген, аля "если хп< макс: хп+=реген" func Расчет_количества_и_отображения_сердец(): # Удаляем все предыдущие сердца, если они есть for сердечко in хранилище_сердец_массив: heartsContainer.remove_child(сердечко) сердечко.queue_free() хранилище_сердец_массив.clear()
# Вычисляем количество сердец на основе максимального здоровья var колво_сердец = int(максимальное_здоровье / 10)
# Создаем сердца и добавляем их в контейнер for i in range(колво_сердец): var сердце_Instance = heartScene.instantiate() heartsContainer.add_child(сердце_Instance) хранилище_сердец_массив.append(сердце_Instance)
# Устанавливаем состояние каждого сердца в зависимости от текущего здоровья for i in range(хранилище_сердец_массив.size()): if текущее_здоровье >= (i + 1) * 10: хранилище_сердец_массив[i].текстура.frame = 0 elif текущее_здоровье >= i * 10 + 5: хранилище_сердец_массив[i].текстура.frame = 1 else: хранилище_сердец_массив[i].текстура.frame = 2 Про сцену сердце: Панель с дочерним элементом Sprite2D. В спрайт2д лежит картинка с 3 сердцами (полн, половин, пуст), скрипт на нем же, в нем только это: @onready var текстура = $Sprite2D Как то так 👀 Надеюсь было понятно чуть больше, чем ничего хд
Ничего себе!!! Сами методы хорошие (несмотря на названия переменных, конечно). Не очень понял, зачем вызывать эти методы каждый физический кадр, лучше вызывай их при изменении хп, в годоте это оч легко сделать, с помощью сеттера: var health: int: set(value): health = value Расчет_количества_и_отображения_сердец() В таком случае, производительность будет во много раз выше, потому что high-level методы по типу хранилище_сердец_массив.clear() жрут много памяти, так как пересоздают массив, а по мимо этого методы есть много других, и в итоге вызывать такую сложную функцию как Расчет_количества_и_отображения_сердец() очень затратно каждый физический кадр. Кстати, могу посоветовать не удалять сердца и добавлять новые, а изменять уже существующие: просто добавить их в редакторе, а в ходе игры скрывать, показывать и изменять текстуру. Это тоже намного экономнее. По поводу метода Реген_хп() ничего такого сказать не могу, потому что его нет тут. Но уверен, что он в-принципе не нужен, потому что единственное, что надо для восстановления здоровья - это увеличить переменную хп сеттер сам вызовет Расчет_количества_и_отображения_сердец(). Если нужна анимация появления сердца, то это можно добавить на само сердце в годоте, и связать сигнал visibility_changed() сердца с методом play() у AnimationPlayer с String параметром, который отвечает за название анимации.
Выглядит прекрасно, геймплейно всё понятно, лора бы немного ) Ну и баланс деревьев бросается в глаза, большое дерево 10 сердце (больше чем в 3 раза чем маленькое) а даёт всего в 3 раза больше, нужно поднять будто бы )
Сам я не смотреть каких-то линейный обучалок, только о чем-то конкретном т на зарубежном ютубе. Но на нашем Discord сервере рекомендовали плейлист ruclips.net/p/PLhLIDMvl_HKGIo14rDqdTtY2JXc0Q1py-
Подскажи, пожалуйста - в каком разрешении у тебя игра? Так как это пиксель арт, большинство ресурсов, включая официальную документацию godot, рекомендуют делать маленькое разрешение, чтобы целочисленно скейлить Вопрос в таком случае а как быть с UI - места то маловато получается, а если нужен какой то сложный UI то что делать - непонятно При этом UI то тоже бывает пиксельным и можно было бы отрендерить основную игру в отдельном Viewport с маленьким разрешением, а саму игру сделать в разрешении побольше, специально под UI, но тогда опять возникает проблема со скейлингом в те же 2к или 4к, пиксели в UI поплывут
Я не уверен, что все сделал правильно, но у меня так: Все арты 1:1 (то-есть если арт 16x16, то разрешение тоже 16 на 16), разрешение viewport 1920x1080, но у меня стоит sctretch.scale на 2, так что можно сказать, что разрешение в итоге 960x540. При моей настройке пиксели на UI совпадают с пикселями самой игры
Неплохой переход с юнити на Годот) Годот сама прога для созданий 2 игр не хуже юнити, незнаю че челы тут видят какой-то не нужный переход(особенной с той политикой) .
Не плохой проект, не смотря на то, что он явно делается для себя. Правда я так и не понял подлинную мотивацию перехода с Unity на Godot, ибо новая политика тебя, как разработчика, я уверен почти на 100% даже не коснется в обозримом будущем. А на счет доверия, то тут фиг знает, особенно, когда ты инди разраб, а не компания. В любом случае, это твой выбор 🤷♂ Еще хотел узнать почему ты решил выбрать такую медленную анимацию всего, что есть в игре? По виду она походит cozy играм, но только у тебя это RPG, которой такая медленность ни к чему. Хороший пример это Forager - там хоть и есть эта мультяшная и весьма простая графика, но анимации там бодрые!
Я хочу сделать спокойную игру, из-за этого анимации такие же (хоть я и не специально их замедлял). Эта игра будет больше не про боевку и экшн, а про развитие и фермерство (хоть его я еще не сделал). А насчет Юнити не знаю, в день когда были анонсированы их изменения, я тоже понимал, что набрать 200к загрузок и 200к прибыли очень сложно, но это как раз моя цель и это когда-то случиться (надеюсь!!!). Несмотря на то, что Unity вскоре отменила их решения, да и вообще сделала даже лучше, я все равно решил перейти на Godot. В конце концов, кто знает, что кампания еще сделает в будущем? А Godot open-source и в нем я уверен
Я решил попробовать GDScript, когда перешел с Unity, в-принципе доволен, много прикольных фишек. Но насколько я знаю, C# более быстрый и в больших проектах производительность будет лучше. А так если нет любви к C#, то я советую GDScript.
Странно смотреть на переход на Godot с Unity. Т.к. не думаю что ты бы зарабатывал столько инсталлов, сколько указывалось в новой политике Unity. Выглядит как обида для обиды и возомнить о себе героя, который решил встать против капитализма. Очень смешно смотреть за подобными авторами, как ты, удачи тебе ничего не сделать
@@byalex366 согласен, что переход просто на каком-то хайпе, абсолютно тупая отмаза, чтобы в видео этим афишировать. Сказал бы, что просто надоел и стал интересен новый движок - просто и понятно. Однако ты тоже ошибаешься. Там политика не процент отдавать, это фигня, а платить за каждую установку твоей игры. А устанавливать то могут и бесплатно. Кто-то где-то поиграл в твою игру, а ты юнити платишь за это, как тебе такое?
Обязательно заходи на наш Discord сервер!🤠
discord.gg/J7GtZVVhKQ
Стоять ковбой 🤠
Правильный выбор. Я одобряю. Молодец.
Благодарю за одобрение
Прочел название игры и в голове перевелось как "Чозаземье" ахахха
Очень надо обучалочки, либо отдельном механики на гитхаб, чтобы самому поковыряться и понять как оно работает.
Сам начал не так давно за 2д рпг, в идеале с коопом . Сел в годот, чтобы, как принято, сделать игру своей мечты, но столкнулся с тем, что каких-то гайдов на 4й годот мало, а на русском я вообще молчу)
Тем не менее уже реализовал систему статов (сил, лвк, инт) , сердца, мана-звезды и полоску стамины, бег и перекат, даже какой то инвентарь есть)
Базы не хватает и референсов, чтобы качественно продвигаться. Поэтому от лица работяг к лорду, мы ждем гайдов, чем сильнее нам разжуешь - тем лучше)
Название кстати так и переводится, а еще оно созвучно с water lands, что очень подходит игре, ведь действия происходят на островах. В следующих видео буду стараться показывать код и разбирать его по возможности. Насчет обучений тоже задумываюсь, в первую очередь хочу показать, как сделать такую тень, как у меня в игре (она не просто прозрачная, а также сливается с тенями других обьектов, сам это долго гуглил), думаю будет полезно. Буду рад, если помогу тебе с твоей игрой!
@@LapkaCode
О да, легендарная тень в тени) Полезная вещь, если запишешь видик!
Если интересно, могу поделиться системой сердец. Сам тоже долго искал. В годот, в основном, все полоски используют и лишь немногие сердца. А те, что их используют не показывают как их обновлять, при наличии пассивной регенерации. Вдруг и я смогу тебе помочь, да время сэкономить
@@lauraqueen7848 Мне нравится система хп из игр Зельды, думаю похожую добавить. Расскажи о своей. Просто я уже делал это и вроде не сложно
В общем вот, чтобы понимать, что тут происходит: 1 - я немного панк и испытываю балдеж от названия переменных на ру;
Если в краце - то эта функция исполняется постоянно. Постоянно создает сердца и постоянно их удаляет (по дельте), а потому оно достаточно прожорливое, так, экспериментально, ~40+ сердец начинают снижать фпс, однако такое количество выглядит странно) В моем случае мое максимальное кол-во сердец будет 14 , как и мана-звезд, такое кол-во дискомфорта и снижения фпс не вызывает. Если знаешь как можно менее ресурсно-затратно реализовать - буду ждать видик.
В самом начале функции удаляются все сердца в "контейнере сердец" - элемент канвас, а именно "грид контейнер", по умолчанию в нем нет элементов.
А так же чистится массив в котором они хранятся
Затем происходит перерасчет максимального колличества сердец, зависящий от макс здоровья. Которое можно привязать, например к стате СИЛЫ, так же удобно будет добавить какой нибудь бафф аля СИЛАх2
После создается новые сердца
Затем созданным сердцам назначается текстура. Она зависит от целости десятка. В моем случае идет проверка "делится ли текущее здоровье на 10 или на 5"
и, если делится на 10 -> сцене сердечка назначается 0й кадр (полное), если делится на 5 -> сцене назначается 1й кадр (половина сердечка), в другом случае -> 2й кадр (пустое)
var хранилище_сердец_массив: Array = []
static var максимальное_здоровье: float = 100.0
static var текущее_здоровье: float = 100.0
static var регенерация_здоровья: float = 0.1
var heartsContainer: Node #элемент канвас задающий правила расположения своих детей (сердец)
var heartScene: PackedScene # это собсна ссылка на саму сцену сердечка
func _physics_process( delta: float):
Расчет_количества_и_отображения_сердец()
Реген_хп() # сюда что нибудь свое можно про реген, аля "если хп< макс: хп+=реген"
func Расчет_количества_и_отображения_сердец():
# Удаляем все предыдущие сердца, если они есть
for сердечко in хранилище_сердец_массив:
heartsContainer.remove_child(сердечко)
сердечко.queue_free()
хранилище_сердец_массив.clear()
# Вычисляем количество сердец на основе максимального здоровья
var колво_сердец = int(максимальное_здоровье / 10)
# Создаем сердца и добавляем их в контейнер
for i in range(колво_сердец):
var сердце_Instance = heartScene.instantiate()
heartsContainer.add_child(сердце_Instance)
хранилище_сердец_массив.append(сердце_Instance)
# Устанавливаем состояние каждого сердца в зависимости от текущего здоровья
for i in range(хранилище_сердец_массив.size()):
if текущее_здоровье >= (i + 1) * 10:
хранилище_сердец_массив[i].текстура.frame = 0
elif текущее_здоровье >= i * 10 + 5:
хранилище_сердец_массив[i].текстура.frame = 1
else:
хранилище_сердец_массив[i].текстура.frame = 2
Про сцену сердце: Панель с дочерним элементом Sprite2D. В спрайт2д лежит картинка с 3 сердцами (полн, половин, пуст), скрипт на нем же, в нем только это:
@onready var текстура = $Sprite2D
Как то так 👀
Надеюсь было понятно чуть больше, чем ничего хд
Ничего себе!!! Сами методы хорошие (несмотря на названия переменных, конечно). Не очень понял, зачем вызывать эти методы каждый физический кадр, лучше вызывай их при изменении хп, в годоте это оч легко сделать, с помощью сеттера:
var health: int:
set(value):
health = value
Расчет_количества_и_отображения_сердец()
В таком случае, производительность будет во много раз выше, потому что high-level методы по типу хранилище_сердец_массив.clear() жрут много памяти, так как пересоздают массив, а по мимо этого методы есть много других, и в итоге вызывать такую сложную функцию как Расчет_количества_и_отображения_сердец() очень затратно каждый физический кадр. Кстати, могу посоветовать не удалять сердца и добавлять новые, а изменять уже существующие: просто добавить их в редакторе, а в ходе игры скрывать, показывать и изменять текстуру. Это тоже намного экономнее.
По поводу метода Реген_хп() ничего такого сказать не могу, потому что его нет тут. Но уверен, что он в-принципе не нужен, потому что единственное, что надо для восстановления здоровья - это увеличить переменную хп сеттер сам вызовет Расчет_количества_и_отображения_сердец(). Если нужна анимация появления сердца, то это можно добавить на само сердце в годоте, и связать сигнал visibility_changed() сердца с методом play() у AnimationPlayer с String параметром, который отвечает за название анимации.
Отличный фарагер получился 👍
Выглядит прекрасно, геймплейно всё понятно, лора бы немного )
Ну и баланс деревьев бросается в глаза, большое дерево 10 сердце (больше чем в 3 раза чем маленькое) а даёт всего в 3 раза больше, нужно поднять будто бы )
Спасибо. Да, пожалуй, с балансом надо будет поиграться
Наоборот это правильно, иначе не будет смысла рубить мелкие деревья
Напоминает Forager.
Да, мне такое уже писали
А вы сами изучали GdScript?
Конечно
0:55 Stardew Valley? ))
А если серьезно, то игра выглядит интересно. Приятная графика... Подпишусь, посмотрю) Лайк за Godot
Из-за улучшений? Ну может быть, чем-то игры будут похожи
@@LapkaCode По моему всё из списка напоминает Stardew Valley) не в обиду, твой проект интересный.
Можешь посоветовать туториалы мне бы хотелось начать создавть игры а знаний 0 все расказывают все как-то поверхносно
Сам я не смотреть каких-то линейный обучалок, только о чем-то конкретном т на зарубежном ютубе. Но на нашем Discord сервере рекомендовали плейлист ruclips.net/p/PLhLIDMvl_HKGIo14rDqdTtY2JXc0Q1py-
Увидеть бы еще обучалку по годо и как это сделать...
Подскажи, пожалуйста - в каком разрешении у тебя игра? Так как это пиксель арт, большинство ресурсов, включая официальную документацию godot, рекомендуют делать маленькое разрешение, чтобы целочисленно скейлить
Вопрос в таком случае а как быть с UI - места то маловато получается, а если нужен какой то сложный UI то что делать - непонятно
При этом UI то тоже бывает пиксельным и можно было бы отрендерить основную игру в отдельном Viewport с маленьким разрешением, а саму игру сделать в разрешении побольше, специально под UI, но тогда опять возникает проблема со скейлингом в те же 2к или 4к, пиксели в UI поплывут
Я не уверен, что все сделал правильно, но у меня так: Все арты 1:1 (то-есть если арт 16x16, то разрешение тоже 16 на 16), разрешение viewport 1920x1080, но у меня стоит sctretch.scale на 2, так что можно сказать, что разрешение в итоге 960x540. При моей настройке пиксели на UI совпадают с пикселями самой игры
Для решения этой проблемы в GODOT есть настройка рендеринга 2D объектов, по дефолту стоит Linear, для пиксельарта используется Nearest
Неплохой переход с юнити на Годот)
Годот сама прога для созданий 2 игр не хуже юнити, незнаю че челы тут видят какой-то не нужный переход(особенной с той политикой) .
Для таких сольных проектов, как у меня, такой переход действительно может быть ненужным. Но меня это не смущает, я на годоте как свободная птичка
если не секрет, ты делаешь игру исключительно для себя или также преследуешь цель её монетизировать?
Игру хочу выпустить, а насчет монетизации еще не знаю, думаю над тем, чтобы ее вообще не было
@@LapkaCode отличная мотивация, респектую
Лучше сделай так чтобы после улучшения здоровья и время у деревья и Кустов стало гораздо больше
на каком языке пишешь скрипты? GDScript или продолжил шарпить?
На GDScript. Решил попробовать новое и понравилось
@@LapkaCode на GDScript производительность похуже будет
Да, но уверен, для подобных моей игре проектов, разница незначительная
А будут обучающие ролики на примере этой игры?
Да, планирую
@@LapkaCode это будет очень славно ибо гайдов по таким играм я не нашел, очень жду
Можеш зделать так чтобы когда ты нажал на кнопку тебя перекидывают на сайт?
Это не сложно, для этого есть узел LinkButton!
Уменьшать здоровье "врагов" вместо того чтобы увеличивать урон оружия, оригинально ничего не скажешь...
Я так и не делал 🤷♂️
можно добавить веревки для крафта луком и разных улучшенные интрументы
Подумаю над этим!
Unity теперича все? Новое руководство компании загубило сей движок окончательно?
Да вроде пока нет. Спрос на движок огромный, особенно в РУ сегменте
юнька чем хороша, что можно за пару кликов получить apk под андроид
Да, на Godot тоже не сложно, но на Юнити попроще, конечно
Надеюсь в конце 2024 года выйдет твоя игра?
А фиг его знает!
Чем игра ярче, тем она лучше?
Пока в глазах стоят слезы, 2D выглядит как 3D, а корявость спрайтов перестает быть проблемой. 😭
Не очень понял, что ты написал, это комплимент? Мне нравится мой стиль...
Можешь сделать обучалку на такую игру пж 😭
Хорошо, что тебе понравилась моя игра, но чувствую обучалка была бы слишком долгая
Не плохой проект, не смотря на то, что он явно делается для себя. Правда я так и не понял подлинную мотивацию перехода с Unity на Godot, ибо новая политика тебя, как разработчика, я уверен почти на 100% даже не коснется в обозримом будущем. А на счет доверия, то тут фиг знает, особенно, когда ты инди разраб, а не компания. В любом случае, это твой выбор 🤷♂
Еще хотел узнать почему ты решил выбрать такую медленную анимацию всего, что есть в игре? По виду она походит cozy играм, но только у тебя это RPG, которой такая медленность ни к чему. Хороший пример это Forager - там хоть и есть эта мультяшная и весьма простая графика, но анимации там бодрые!
Я хочу сделать спокойную игру, из-за этого анимации такие же (хоть я и не специально их замедлял). Эта игра будет больше не про боевку и экшн, а про развитие и фермерство (хоть его я еще не сделал). А насчет Юнити не знаю, в день когда были анонсированы их изменения, я тоже понимал, что набрать 200к загрузок и 200к прибыли очень сложно, но это как раз моя цель и это когда-то случиться (надеюсь!!!). Несмотря на то, что Unity вскоре отменила их решения, да и вообще сделала даже лучше, я все равно решил перейти на Godot. В конце концов, кто знает, что кампания еще сделает в будущем? А Godot open-source и в нем я уверен
@@LapkaCode Ясненько. Ну тогда могу пожелать лишь удачи довести проект до конца! :)
Большое спасибо!!
коснулась и очень сильно. Попробуйте подтвердить свой аккаунт, если у Вас российский паспорт, ибо до 1го марта 2024го надо........много что надо :))))
@@valentinapaziy а что же еще надо? И в чем проблема заключается про которую вы написали вначале?
а где мем "не мамкай, где лопата"?
"Кто ответственный?"
Привет! Почему Godot а не Defold?
Привет, о годоте давно слышал и он оказался идеальным для этого проекта. О Defold я только недавно (почти) узнал
А на Godot на каком языке кодишь?
На GDScript
@@LapkaCode лучше использовать c# или GDScript?
Я решил попробовать GDScript, когда перешел с Unity, в-принципе доволен, много прикольных фишек. Но насколько я знаю, C# более быстрый и в больших проектах производительность будет лучше. А так если нет любви к C#, то я советую GDScript.
continue please
Сделай пожалуйста порт на мобилы
Конечно будет
@@LapkaCode спасибо
Lielisks darbs
Paldies
forager на минималках
Все с чего-то начинается
Мда уж, игра мечты - клон forager 🤣🤣
😭😭
Странно смотреть на переход на Godot с Unity. Т.к. не думаю что ты бы зарабатывал столько инсталлов, сколько указывалось в новой политике Unity. Выглядит как обида для обиды и возомнить о себе героя, который решил встать против капитализма. Очень смешно смотреть за подобными авторами, как ты, удачи тебе ничего не сделать
автор канала клоун, боится отдать процент если вдруг будет прибыль 🤡 🤡
Ну может быть так и выглядит, ладно
@@byalex366 согласен, что переход просто на каком-то хайпе, абсолютно тупая отмаза, чтобы в видео этим афишировать. Сказал бы, что просто надоел и стал интересен новый движок - просто и понятно. Однако ты тоже ошибаешься. Там политика не процент отдавать, это фигня, а платить за каждую установку твоей игры. А устанавливать то могут и бесплатно. Кто-то где-то поиграл в твою игру, а ты юнити платишь за это, как тебе такое?
@@lomeat про плату за установку игр не слышал
@@byalex366 так только об этом вся новость и была
Нельзя грабить корованы?
Ни в коем случае