Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Сыграйте в классический пасьянс и попробуйте разложить по порядку колоду из 52 карт, начиная с короля и заканчивая тузом. Игра имеет четыре варианта: с 1, 2, 3 и 4 мастями. Выиграйте как можно больше в каждом варианте и улучшите свои показатели.

Пасьянс Паук «Классический»

Карточные, Логическая, Мобильная

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Python + Инди

С этим тегом используют

Программирование IT Программист Обучение IT юмор Разработка YouTube Gamedev Инди игра Игры Unity Компьютерные игры Все
11 постов сначала свежее
19
DnDandme
DnDandme
1 год назад
Лига Ролевиков
Серия Интерактивный лист персонажа ДнД (D&D)

Картинки и база данных⁠⁠

Картиночки!!! Кто их не любит. Сделал что бы можно было добавлять картиночки в лист персонажа.

Картинки и база данных Разработка, Dungeons & Dragons, DnD 5, Настольные ролевые игры, Наше НРИ, Ролевые игры, Python, Настольные игры, Инди

Блин чет качество хромает, кто знает как поправить?

А так же база данных... Ох, ну там жесть конечно.

Картинки и база данных Разработка, Dungeons & Dragons, DnD 5, Настольные ролевые игры, Наше НРИ, Ролевые игры, Python, Настольные игры, Инди

Жесть конечно

Там вообще 30 пунктов, но их программа сразу все отказывается отображать.

Но теперь теперь подгружаю перса из базы данных. Это моя маленькая победа).

Показать полностью 2
[моё] Разработка Dungeons & Dragons DnD 5 Настольные ролевые игры Наше НРИ Ролевые игры Python Настольные игры Инди
2
10
Shidun
Shidun
1 год назад
Лига Разработчиков Видеоигр

Все бы тебе тараканов гонять по монитору, сын...#2⁠⁠

Прошел год...

В связи с рождением дочери выпал на год из своего хобби. Сейчас немножечко вернулся к этому делу.

Что произошло:

Запилил графоний, анимировал. Рисовать не умею, из-за чего отрисовка и анимация оказался тем еще гемороем для меня.

Все бы тебе тараканов гонять по монитору, сын...#2 Gamedev, Инди игра, Инди, Разработка, Python, Pixel Art

Адаптировал меню и графоний для использования на телефоне. (разъежались тексты, поля, кнопки)

Добавил пассивок и спеллов.

Переделал выбор пассивок, в модный подход с вариантами и рероллом

Все бы тебе тараканов гонять по монитору, сын...#2 Gamedev, Инди игра, Инди, Разработка, Python, Pixel Art

В процессе допила работа с жизнями в игре будет 3 жизни и возможность сейв лоада.

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

Все бы тебе тараканов гонять по монитору, сын...#2 Gamedev, Инди игра, Инди, Разработка, Python, Pixel Art

Также хочу хочу написать вступление из 5-10 картинок и текста. Переработал концепцию, это будет не "ДРЕВНЯЯ ОЧЕНЬ КОЛУДНСКАЯ БАШНЯ", а ПОПАДАНЕЦ в игру на сеге. Проклятый картридж от приставки, подросток, все дела.

Дальше полирну слегка напильником от багов, и буду пытаться выпустить таки демку(apk/exe) и раздать друзьям на тест.

Показать полностью 2
[моё] Gamedev Инди игра Инди Разработка Python Pixel Art
1
22
GoblinCave
GoblinCave
1 год назад
Лига Разработчиков Видеоигр

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика⁠⁠

Для тех кто первый раз читает мой гоблинский блог - расскажу кратко что тут происходит. Я сам являюсь зеленым новичком в разработке игр и в своем блоге описываю этапы изучения столь сложного дела. На данный момент - это работа с движком Godot 4.

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

● Создание сцены с персонажем:

В прошлой статье мы создали редактор карт с автоматическим заполнением, кто не читал - почитайте, будет полезно. Теперь нам нужно сделать персонажа, которым мы будем бегать по данной карте. Для этого нам нужен узел типа "CharacterBody2D", на основе которого мы и создаем новую сцену. Сделать это можно выбрав вкладку "Другой узел".

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Как выглядит узел "CharacterBody2D"

● Визуальное изображение персонажа:

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

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Узел "Sprite" -> Texture -> Быстро загрузить

● Настройка зоны столкновения:

Чтобы наш персонаж не проваливался в текстуры и реагировал на поверхности мы должны настроить зоны столкновения. В прошлом уроке мы работали со слоем Collision в нашем TileMap. Тут же мы добавляем узел "CollisionShape2D", который представляет из себя выделение зоны столкновения в виде простой геометрической фигуры. Вид этой фигуры мы выбираем во вкладке "Shape".

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Узел "CollisionShape2D" -> Shape -> Новый RectangleShape2D

● Начальные данные для физики и управления:

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

Чтобы создать константу мы пишем: const название_константы = значение

Переменные же создаются по другому: var название_переменной = значение

Давайте разберемся за что отвечают указанные нами значения:

speed и acceleration - от этих значений будет зависеть скорость передвижения по оси X (влево-вправо)

jump_velocity - это значение влияющее на высоту прыжка. Ось Y в Godot перевернута с ног на голову и отрицательное значение означает вверх.

friction - значение влияющее на скорость остановки при прекращении передвижения.

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Так выглядят наши константы в коде

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

var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")

● Общая функция для управления персонажем:

Задав исходные данные мы можем приступать к настройкам функций нашего персонажа. Для этого мы пишем стандартную функцию Godot:

func _physics_process(delta):

Для тех кто не знает - эта функция вызывается перед каждым физическим кадром, который привязан к физическому fps, он по умолчанию равен 60 раз в секунду.

var input_axis = Input.get_axis("ui_left","ui_right")

Get_axis - это функция которая присваивает переменной одно из двух значений при нажатии одной из двух кнопок. Первое значение равно -1 и задается при нажатии клавиши "влево". Второе же равно 1 и задается при нажатии клавиши "вправо". Если на момент кадра не нажата ни одна из этих кнопок, значение равно 0. Это позволяет нам определить нужное направление для изменения координат персонажа.

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Влево = -1 | Вправо = 1 | Стоим на месте = 0

● Движение по оси X (влево-вправо), создаем новую функцию:

handle_acceleration (input_axis, delta)

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

if input_axis !=0:

Если данное условие выполнено, то мы совершаем перемещение в заданном направлении. Для этого используется функция move_toward.

velocity.x = move_toward(velocity.x, speed * input_axis, acceleration * delta)

velocity.x - это переменная отвечающая за перемещение по оси X.

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

Каждый кадр мы двигаемся в выбранную сторону, начальная точка меняется и это создает замкнутый круг движения. А чтобы его запустить, мы добавляем нашу функцию под physics_process и в конце пишем move_and_slide().

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

move_toward ( начальная точка, точка прибытия, расстояние шага за один кадр )

▸ А где тормоза то !?

● Как сделать остановку?

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

Копируем нашу прошлую функцию и переименовываем ее:

handle_friction (input_axis, delta):

Так же меняем заданное условие, input_axis должен быть равен нулю. Главное помнить, что знак равенства при сравнении выглядит вот так "==".

if input_axis == 0:

В функции move_toward заменяем значения. Первое остается прежним, на втором ставим ноль, а на третьем стираем acceleration и пишем friction. Все это в сумме обеспечит нам быструю остановку.

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Функции обратные друг другу

● Движение по оси Y (прыжок, гравитация), создаем новую функцию:

aplay_gravity(delta):

Если мы не на земле, то бишь в воздухе - нас должно тянуть вниз.

if not is_on_floor():

velocity.y += gravity * delta

Ставим именно "+=", так как это сделает плавное падение с нарастающим ускорением. Не забудьте умножить на delta, иначе все произойдет за долю секонды.

● Следующая функция для прыжка:

handle_jump(delta):

Для нас важны два условия - нахождение на земле в момент прыжка и нажатие нужной клавиши.

if is_on_floor() and Input.is_action_just_pressed("ui_accept"):

Если данное условие соблюдено мы приравниваем параметр оси Y к значению высоты прыжка.

velocity.y = jump_velocity

Добавляем эти функции под physics_process, а после переходим на сцену "world". Туда из общего списка ресурсов перетаскиваем сцену "player".

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

.tscn - это формат сцены в Godot

Godot 4: создание платформера от гоблина для человеков | Урок 2: Персонаж, управление и физика Gamedev, Инди игра, Разработка, Программирование, Программист, Инди, Unity, Unreal Engine, Python, IT, Гайд, Игры, Godot, Godot Engine, Платформер, Геймеры, Видео, Без звука, Длиннопост

Как выглядит наш блок с функциями

● Что у нас получилось в итоге?

✓ Если вы нажимаем клавишу влево или вправо - персонаж двигается в выбранном направлении.

✓ Если ни одна из клавиш направления не нажата - мы останавливаемся.

✓ Если мы находимся в воздухе - нас тянет вниз с каждой секундой все сильнее.

✓ Если находясь на земле, мы жмем прыжок - нас подкинет вверх.

▸ Оно живое!

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

✓ Зеленые новички - крепитесь и подписывайтесь, скоро новая статья. На очереди две темы - "анимация персонажа" или "двойные прыжки и прыжки от стены".

✓ Опытные шаманы - запасайтесь успокоительным, ибо дальше будет еще куча попыток освоить gamedev.

✓ Ну и все кто имеет свое мнение, поддержку или усмешку - пишите комменты!

Показать полностью 9 2
[моё] Gamedev Инди игра Разработка Программирование Программист Инди Unity Unreal Engine Python IT Гайд Игры Godot Godot Engine Платформер Геймеры Видео Без звука Длиннопост
14
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
20
GoblinCave
GoblinCave
1 год назад
Лига Разработчиков Видеоигр

А на что собственно живут разработчики из России в 2023 году?⁠⁠

А на что собственно живут разработчики из России в 2023 году? Программирование, Разработка, Программист, Gamedev, Инди игра, Unity, Инди, Unreal Engine, Python, IT, Монетизация, Россия, Технологии, Цифровые технологии, Длиннопост

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

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

Публикация игры в Steam требует оплаты слота, публикация в Google Play требует оплату лицензии разработчика. Говорят пополнить Steam можно через Qiwi, но с Google Play такое не работает. То есть, уже на этапе публикации вашего проекта вы сталкиваетесь с проблемами.

Допустим вы каким то образом смогли разместить свой проект на площадке - что по монетизации?

Как мне известно вывести деньги со Steam можно через Райффайзен, выбрав функцию банка-посредника. Учитывая плату самому Steam, наценку банка и налоги - вы получите в лучшем случае 50% от заработанных денег. Как происходит вывод средств с Google Play не знаю, но предположительно для этих целей заводится зарубежный счет с карточкой. Правда вам это вряд ли пригодится - публикация платных продуктов из РФ приостановлена.

Один из видов монетизации мобильных игр - это реклама!

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

Что же остается простому работяге игрового фронта?

Ответ прост - крутиться в поиске всех возможных альтернатив. За неимением возможности выгрузить свое приложение в Google Play разработчики из России все чаще смотрят на тот же App Gallery. Если игра проста и имеет возможность выгрузки в формате HTML5 - то можно попробовать Яндекс.Игры или другие сайты с браузерными проектами. Конечно, есть зародыш в виде RuStore, но не думаю что он в ближайшие пару лет получит действительно широкую аудиторию.

Медиаторы Appodeal и Clever Ads Solution все еще работают с Россией, что позволяет получать выплаты от "забугорных" рекламных сетей через посредника. К тому же есть сетки Яндекса и My Target, которые гарантированно дают выплаты.

Если же вы нацелены на Steam, то вам предстоит найти посредника, который подключится к вашему аккаунту, приобретет слот из своей страны, а после вы удалите его доступ через настройки. Либо можно обратиться к издателям, если вы сделали качественный проект. Если же вы нацелены только на аудиторию из России - можете попробовать VK Play (правда продажи там в разы меньше).

А на что собственно живут разработчики из России в 2023 году? Программирование, Разработка, Программист, Gamedev, Инди игра, Unity, Инди, Unreal Engine, Python, IT, Монетизация, Россия, Технологии, Цифровые технологии, Длиннопост

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

А вот если ты например являешься частью игрового проекта и знаешь больше про монтезиацию в 2023 году - отпиши свой опыт в комменты. Будет полезно почитать мнение людей из гейм дева.

P.S.

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

Показать полностью 1
[моё] Программирование Разработка Программист Gamedev Инди игра Unity Инди Unreal Engine Python IT Монетизация Россия Технологии Цифровые технологии Длиннопост
9
36
GoblinCave
GoblinCave
1 год назад
Лига Разработчиков Видеоигр

Первые попытки освоить движок Godot - делаем простой платформер⁠⁠

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

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

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

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Тут наша сцена и связанные с ней узлы...

Создаем карту

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Все мы иногда статичное тело...

Правой кнопкой мыши жмякаем на нашу 2D сцену "World" и выбираем "Добавить дочерний узел". В списке ищем "StaticBody2d" и теперь у нас есть база. Добавляем два дочерних узла уже в статичный объект - "Polygon2D" и "CollisionPolygon2D".

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Рисуем будущую карту при помощи CollisionPolygon2D...

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Код приравнивающий форму фигуры к форме области столкновения...

Теперь нам нужно сделать так, чтобы визуальная фигура повторяла форму области столкновения. Нажимаем на нашу сцену и добавляем к ней скрипт. GD-script во многом схож с языком Python и более-менее прост в понимании. Сначала добавим наши узлы в виде переменных, для этого зажимаем "ctrl" и перетаскиваем в код после блока extends.

Прописываем функцию ready, она будет воспроизводится сразу во время запуска сцены. А дальше просто приравниваем форму фигуры к форме области столкновения (polygon_2d.polygon = collision_polygon_2d.polygon).

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Получаем дешевую и сердитую карту - все в гоблинском стиле!

Карта готова, но что делать теперь? Пора добавить нашего персонажа-марионетку.

Создаем новую сцену и для ее основы берем узел CharacterBody2D. Для будущей простоты восприятия я переименовал его в Player. Чтобы увидеть нашу тушку - добавим к ней дочерний узел "Sprite2D", а чтобы можно было еще и потрогать "CollisionShape2D".

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Добавляем иконку

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Выделяем область столкновения...

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

Тело готово, пора научить его шевелиться и реагировать на физику. Для этого мы создаем для нашего Player свой скрипт.

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Наши переменные...

Задаем переменные через const (constants - постоянное значение). Значения констант не могут быть изменены в ходе самой программы, на то они и постоянные. Для чего нужны эти значения расскажу ниже.

const SPEED = 150.0

const JUMP_VELOCITY = -300.0

const FRICTION = 1000.0

const ACCELERATION = 600.0

На этот раз мы берем не функцию ready, а другую - physics_process. В отличии от простого process, здесь время между выполнением функции будет одинаковым. Это обеспечит нам стабильность при передвижении объектов.

Начнем с настройки гравитации!

Дело в том, что система координат X-Y в Godot имеет свои приколы. Ось X идет от отрицательной к положительной слева направо, однако ось Y идет от отрицательной к положительной сверху вниз. То есть ось Y буквально перевернута с ног на голову. Если непонятно - объясню проще:

Хотим передвинуть вправо - прибавляем к оси X;

Хотим передвинуть влево - вычитаем из оси X;

Хотим передвинуть вниз - прибавляем к оси Y;

Хотим передвинуть вверх - вычитаем из оси Y;

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Гравитация... беспощадная ты с*ка!

Как же нам заставить персонажа падать под давлением гравитации? Для начала добавим переменную GRAVITY равную 1000. Затем создаем свою пользовательскую функцию и называем ее aplay_gravity.

Мы должны падать когда находимся в воздухе, то есть не на полу. Буквально говорим программе "Если объект не на полу сделай следующее: измени положение по оси Y в положительную сторону на заданное нами расстояние".

if not is_on_floor():

velocity.y += GRAVITY * delta

Что такое delta? Это время между кадрами, благодаря чему перемещение будет стабильным вне зависимости от FPS.

velocity - это параметр скорости изначально зашитый в наш объект. По этой причине его так же не требуется объявлять как переменную. Грубо говоря сюда мы задаем то расстояние, на которое должен переместиться объект по осям X и Y.

Так как мы каждый раз увеличиваем прошлое значение velocity.y, гравитация будет усиливаться с каждой секундой в воздухе. Благодаря этому у нас не получится прыгать бесконечно вверх и нас прижмет к полу.

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Отлично, нас прижало как после "Балтики 9"!

Теперь настраиваем прыжки!

Для этого создаем еще одну пользовательскую функцию handle_jump. Мы говорим ей: "Если мы нажимаем кнопку прыжка и находимся на полу - измени положение по оси Y в отрицательную сторону". Напомню, что константа прыжка имеет отрицательное значение.

if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y += JUMP_VELOCITY

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

К гравитации добавляются прыжки...

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Прыжок веры...

С прыжками и гравитацией мы освоились, теперь научимся ходить-бродить!

Надеюсь вы еще не забыли, что направление у нас зависит от отрицательного или положительного значения? Есть такая штука в Input как get_axis, где мы задаем две клавиши. Нажатие первой клавиши прировняет переменную к значению -1, нажатие второй клавиши наоборот к 1. Если ни одна из клавиш не нажата, переменная принимает значение 0.

Создаем переменную input_axis внутри physics_process, на этот раз через var, ведь она будет менять свои значения в процессе. А далее задаем машине установку "Если нажата одна из двух клавиш, то мы меняем значение по оси X в зависимости от выбранного направления".

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

Начальная точка - velocity.x

Конечная точка - наша скорость SPEED помноженная на направление (-1 или 1)

Промежутки - наше ускорение ACCELERATION помноженное на время между кадрами delta

if input_axis !=0 :
velocity.x = move_toward(velocity.x, SPEED * input_axis, ACCELERATION * delta)

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Вот наш код...

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

А вот признаки жизни... беги Форест - БЕГИ!

Двигаться мы можем, а вот с остановкой проблема. Что не дает нам вечно кататься по земле? СИЛА ТРЕНИЯ!

Для того чтобы создать силу трения мы делаем похожую функцию. Только теперь конечной точкой у нас выступает 0, а вместо ACCELERATION берем параметр FRICTION. Включается все когда мы не нажимаем кнопки движения, то есть input_axis равен нулю.

if input_axis == 0 :

velocity.x = move_toward(velocity.x, 0, FRICTION * delta)

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост
Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

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

Вишенкой на торте внутри физической функции является move_and_slide которая и отвечает за все эти процессы. Без нее указанные выше шаманские обряды просто не запустятся.

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

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

Если вам интересно и дальше смотреть на то как я собираю лбом грабли, а может и самим чему-то научиться вместе со мной - подписывайтесь на данный блог!

P.S.

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

Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост
Первые попытки освоить движок Godot - делаем простой платформер Gamedev, Разработка, Инди игра, Программирование, Программист, Инди, Python, Godot, Godot Engine, Новичок, Код, Разработчики игр, Игровой движок, Платформер, IT, Unity, Unreal Engine, Длиннопост

Традиционный тематический гоблин в конце!

Показать полностью 18
[моё] Gamedev Разработка Инди игра Программирование Программист Инди Python Godot Godot Engine Новичок Код Разработчики игр Игровой движок Платформер IT Unity Unreal Engine Длиннопост
9
3
GoblinCave
GoblinCave
2 года назад
Лига Разработчиков Видеоигр

Когда один мелкий косяк руинит тебе весь код⁠⁠

Когда один мелкий косяк руинит тебе весь код IT, Разработка, Gamedev, Компьютерные игры, Программирование, Программист, Python, Unity, Инди, Инди игра, Веб-разработка, Разработчики, Разработчики игр

А если серьезно, если бы не лист ошибок - я бы дальше первых уроков из курса не ушел из-за своей невнимательности. Хвала Горку и Морку, что данная вафля исправно помогает таким новичкам как я!

[моё] IT Разработка Gamedev Компьютерные игры Программирование Программист Python Unity Инди Инди игра Веб-разработка Разработчики Разработчики игр
1
11
istarwarrior
2 года назад
Лига Разработчиков Видеоигр

Подкаст "Хочу в Геймдев!" #48: Профессия DataScientist⁠⁠

Подкаст "Хочу в Геймдев!" #48: Профессия DataScientist Разработка, Образование, Инди, Gamedev, Python, Длиннопост

Вот и наш уже 48й подкаст “Хочу в Геймдев”, посвященный профессиям в сфере разработки игр!

В этот раз мы выбрали важную в современных реалиях профессию, о которой мало говорят: Data Scientist, по мнению руководителя образовательных программ “Менеджмент игровых проектов” Вячеслава Уточкина, тема искуственного интеллекта поднимается не только на частных и коммерческих уровнях, но и на государственных.


Наши неизменные ведущие:

- Вячеслав Уточкин, руководитель образовательной программы "Менеджмент игровых проектов" в ВШЭ;

- Константин Сахнов, основатель студии и научный руководитель программы «Менеджмент игровых проектов» в ВШЭ.



И приглашённые гости:

- Алиса Лапина, игровой аналитик, Департамент оперирования и разработки игр MY.GAMES;

- Александр Савченко, ML Архитектор в incymo.ai.



Знакомство Алисы с профессией началось около четырёх лет назад, сначала она была аспирантом робототехники в Бауманке, но ей захотелось узнать больше о нейротехнологиях и познакомилась с лабороторией нейронаук Сбербанка, куда требовались кандидаты на должность Junoir DataScientist. Она совершила сдвиг в професси уже после института.

Александр в свою очередь отучился на программиста, работал на линейных должностях, так случилось, что он связал сво работу с BigData,а там и ML подтянулся. Он относительно недавно в Геймдеве, чуть более года.


- Чем занимается специалист в неигровых и игровых компаниях?


Отвечает Алиса: Ключевое отличие в реактивном комьюнити Геймдева, в наборе хард-скиллов на позициях,в различном уровне взаимодействия с бизнесом.

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

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


- Какими инструментами пользуется DataScientist и какие компетенции ему нужны?


А) А\В Тесты, аналитика баз данных, фреймворки, Spark, Облачные хранилища, SQL Б) Для ML инженера это статистические алгоритмы, модели классического машинного обучения, навыки знания фрэймворков, Catboost и.т.д. В) Умение работы в Python.


- Как эволюционировала профессия в отдельное направление?


Отвечает Константин: Первые игры компании King, например Candy Crush, именно с неё началось использование машинного обучения. В геймдизайне создается кривая сложности, позволяющая понять насколько интересна может быть игра, насколько сложной она может показаться игроку. Константин начинал в компании Rocket Jump, они делали проект Dacota Farm Adventure, в которой применяли новые модели.В то же время начали учитывать FU-фактор, отношение сложности уровня к интересу его прохождения. И от ощущения, что игрок не может пройти

уровень, ещ и далёк от его прохождения, падает Retention игры.


- Какими задачами занимется человек на должности DataScientist?


Отвечает Александр: Например, гд или компания создают теорию и просят специалиста проверить её по критериям “Сколько прибыли может принести такая-то механика, сколько мы потеряем, если данной механики нет в нашей игре?” Ещё есть игры, в которых если человек совершил транзакцию в игре, то скорее всего он совершит ещё одну. Задача специалиста в таком случае разработать для него уникальный трек скидочных предложений, мотивации к приобретению, подводить ко второму офферу. В том числе путь приучения игрока, который донатит, больше в среднем тратить на игру.


- Если человек отучился на специальность и попал к вам на собеседование, что его будет

ждать?


Отвечает Алиса: В первую очередь тестируют хард скиллы, знание индустрии, возможности аналитики, понимание метрик и как их можно изменить для получения лучшего КПД. Но не стоит забывать и о софт-скиллах, о мышлении, умени быстро принимать решения и адаптироваться к новым запросам индустрии и новым трендам.

Пример ТЗ для специалиста: Получить событие из игры, посчитать метрики, ППУ, разделение на кагорты игроков.

Вилка оплаты труда: Junior - 60 000-100 000р, Middle - до 200 000р, Senior от 300 000р


Об этом и многом другом узнавайте вместе с нами!


Мы на Яндекс.Музыке


Мы Вконтакте


Круглый стол "Игровая Индустрия - Итоги 2022 года"


Телеграмм-канал о геймдеве от MY.GAMES


Блог компании INCYMO.AI


Показать полностью
Разработка Образование Инди Gamedev Python Длиннопост
0

Оформить подписку для бизнеса

Перейти
Партнёрский материал Реклама
specials
specials

Ваш бизнес заслуживает большего!⁠⁠

Оформляйте подписку Пикабу+ и получайте максимум возможностей:

Ваш бизнес заслуживает большего! Малый бизнес, Предпринимательство, Бизнес

О ПОДПИСКЕ

Малый бизнес Предпринимательство Бизнес
24
pmtkachev
pmtkachev
2 года назад
Программирование на python

TMNT Fight NES переработка меню и коллизии⁠⁠

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


Кароч, дела разобрал, стало полегче. Можно и покодить. Честно, не сразу разобрался в своем коде спустя пару месяцев)


В этой версии переработал меню, теперь выбор кнопками, а не мышкой. Добавил выбор персонажа и локации. Сделал обработку коллизий.


Не нравится громоздкость кода и его нелаконичность, но после завершения проекта займусь именно красотой кода. Сейчас делаю по принципу работает и ладно)

Вот видосик по классике:

Код на GitHub

[моё] Python Программирование Разработка Gamedev Инди Видео
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии