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

Камни в ряд онлайн!

Казуальные, Три в ряд, Мультиплеер

Играть

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

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

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

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

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

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

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

Мобильный геймпад на Godot. Часть 3: Сервер, клиент, Broforce⁠⁠

2 месяца назад

Чтож, вот и финал. Спустя клиента на Godot, который может отправлять данные о нажатия, нужен сервер - для приема и отправки на ViGem.

Сервер

Итак, серверная часть. Тут не так и много магии, как могло бы показаться.

  • get_ip - функция получения текущего ip сервера. ip назначается маршрутизатором, потому может меняться и желательно знать актуальный ip для того, чтобы показать его клиенту;

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

Так как способ отправки данных из прошлой части имеет нюанс - Json объект может отправляться кусками, то на сервере мы его собираем: строки 105, 130-134. То есть собираем данные пока не получим символ } - конец объекта.

Функции left_joystick_float, right_joystick_float, press_button и release_button встроены в библиотеку vgamepad, которую можно спокойно установить через pip. И все. Сервер принимает данные, смотрит какая метка в j_data['M']:

  • LJ - левый стик;

  • RJ - правый стик;

  • P - кнопка нажата;

  • U - кнопка отжата.

Остальные данные это координаты стика или же конкретная кнопка. Дальше данные передаются драйверу. На этом магия кончается.

Заключение

Написание такого рода материала для меня хороший способ поднять мою ленивую жэпу и поделать какие-то дела, напрячь мозг хоть немного. Ещё так удобно закреплять знания в голове. Для меня сплошные плюсы, а вам... может узнали что-то новое. Честный обмен :) Д-а-а-а, там еще есть части с экспортом в apk, установками sdk, настройками окна в проекте, но опять же это все для формата туториала, чем данный цикл статей, увы, не является. Теперь, как и обещал, ссылка на полный код. Хотел на git, но потом решил на ЯндексДиск скинуть сразу и готовый apk, если не хотите собирать самостоятельно, и код и драйвер.

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

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

Показать полностью 2
[моё] Godot Godot Engine IT Программист Длиннопост
0
2
KenuLen
KenuLen
Серия Мобильный геймпад

Мобильный геймпад на Godot. Часть 2: Сцены, Json, Сеть⁠⁠

2 месяца назад

Введение

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

Json

После первой + 1.5 статей у нас есть сцена с кнопками. Её мы назначим главной, чтобы при запуске приложения она нас сразу встречала после запуска программы. Теперь создадим сцену с настройками. В этот раз это будет узел Control, вместо Node2D, потому что в Control входят так нужные нам строки с записью текста. Зависимости такие:

  • Menu - узел Control содержащий все элементы

  • IP_line - узел LineEdit, строка куда пользователь впишет IP адрес

  • PORT_line - узел LineEdit, строка куда пользователь впишет порт

  • Save_data - узел Label, строка с текстом-статусом выполнения

  • buttons - Node2D узел, включающий в себя кнопки TouchScreenButton. Подтверждение введенных данных и возвращение на предыдущую сцену, соответственно.

Получить данные, которые пользователь будет писать в строках IP_line и PORT_line довольно просто, буквально две строки.

  • @onready var input_ip = $IP_line

  • @onready var input_port = $PORT_line

Создадим функцию для обработки события нажатия OK_buttons. Можете сделать это быстро нажав на кнопку->узел->двойное нажатие по событию pressed() (нажата)

Программа попросит выбрать к кому будет привязана кнопка - выбираем скрипт нашего "меню".

data - наш Json объект. Json в целом очень удобный формат хранения данных, представляющий из себя список словарей. То есть множество из пар вида КЛЮЧ: ЗНАЧЕНИЕ. Либо один единственный словарь, как в нашем случае. data содержит два поля ip и port. Значение пользователя получаем через ранее созданные input_ip и input_port, добавим к каждому .text - уточняем, что мы хотим получить текст из узла LineEdit.

Открываем файл на запись (FileAccess.WRITE) через встроенный FileAccess.open, проверяем, что файл получилось открыть или создать (если файла не было, он автоматически будет создан), и записываем туда данные. Остальное, надеюсь, в комментариях не нуждается, да и в целом подробное описание каждого чиха лучше ощущается в видео формате.

Чуть не забыл о Label! Подключим его строкой:

  • @onready var savedata_result := $Save_data

Функция _ready сработает сама при первом заходе в сцену. Она спрячет на Label, так как пользователь его видеть не должен. Та самая заглушка которую можно было видеть выше, будет скрыта если запустить приложение. Функция show_message принимает два параметра - сообщение, и Label, который должен выйти из скрытности и показать сообщение. Реализовал так, чтобы не приходилось писать под каждый отдельный Label свою функцию. Теперь, когда будет нажата кнопка ОК, под строками покажется сообщение-статус.

Сцены

Для кнопки BACK_button - возвращения на предыдущую сцену - все куда проще:

  • get_tree().change_scene_to_file("res://Controller/controller.tscn")

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

Сеть

В сцене контроллер для подключения к серверу я сделал функцию connect_to_server, но само подключение осуществляется через встроенную connect_to_host. Чтобы ей пользоваться необходимо создать объект StreamPeerTCP

  • var peer : StreamPeerTCP = StreamPeerTCP.new()

Замечательно, теперь можем подключаться к TCP-серверам. Но это ещё не все.

Чертов poll. На самом деле не помню как точно обнаружил эту ошибку, но крови она мне выпила много. Дело в том, что в официальной документации на StreamPeerTCP забыли уточнить, что сервер желательно пинать, чтобы подключение не было отрублено. С одной стороны - логично. С другой - начинающий хлеб об этом не думает. _process ещё одна функция/фича Godot. Функция выполняется на фоне и делает это постоянно. Таким образом, если в теле оставите .poll и проверку статуса подключения (строки 39 и 40), то будет вам счастье. Строки с 41 по 44 были когда-то нужны для отладки - смотрел прием данных с сервера. Кто знает, когда пригодится.

Хорошо, подключили, как отправить данные? Тут на помощь приходят функции начинающиеся на put_ и также входящие в StreamPeerTCP. Чтобы было чуть понятнее, вот пример использования:

  • peer.put_utf8_string(message)

Таким образом отправляется сообщение в формате UTF-8. Это довольно примитивный уровень, но для закрытия текущей задачи его хватает.

Заключение

Чтож, следующая статья будет последнее. В ней я немного расскажу о том, как устроил сервер и ещё немного об обработке нажатий. Там же будет ссылка на исходные коды на финальные версии сервера/клиента. К сожалению, исходя из последних новостей, в новых версиях ОС для мобильников хотят полностью запретить возможность установки сторонних приложений, а значит собрать на дому и "поиграться" становится все меньше и меньше возможностей.

Показать полностью 6
[моё] Программирование IT Godot Godot Engine Длиннопост
0
1
KenuLen
KenuLen
Серия Мобильный геймпад

Мобильный геймпад на Godot. Часть 1.5: Кнопки - Бонус⁠⁠

2 месяца назад

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

Все это время у TouchScreenButton был чертов Shape2D! А значит области можно было назначить в одном узле и не городить кучу зависимостей. В общем настало время убрать за собой мусор.

Расположение элементов

Но начнем мы издалека. Представим, что мы очень ленивые люди ( мне и представлять не надо, родился с преимуществом, хех ). Нам нужно переместить кнопки нашего мобильного контроллера. И вот незадача - опять высчитывать пиксели, чтобы кнопки стояли ровно, по уровню. Можно ли как-то решить эту проблему? И да и нет. Дело в том, что узел Node2D и его дочки не дает таких возможностей. Данная привилегия осталась у узла Control. В обычной ситуации создается дочерний узел из состава Container (входит в Control). Одни позволяют выстраивать элементы по диагонали, другие по вертикали и так далее. Такие дочерние узлы - контейнеры - не видят элементы из состава Node2D. И вот тут в дело вступает магия костылей! Мое любимое.

Если закинуть кнопку, в нашем случае TouchScreenButton, в узел Control, то вы сможете привязать вашу кнопку к контейнеру. В моем случае я выбрал MarginContainer (Left_Buttons и Right_buttons в левой колонке зависимостей) для расстановки кнопок. Много играться не стал, успокоился и на этом. Что-то мне и такого хватило "_"

Теперь вы можете перемещать все кнопки сразу, двигая один лишь контейнер.

Область обработки

Как уже сказал, у узла/кнопки TouchScreenButton есть встроенный Shape2D (@_@), благодаря которому можно и без Area2D сузить область обработки нажатия.

И да, в TouchScreenButton заодно встроены сразу поля для текстур состояний нажатия и ожидания. Без кода. Зато мы познакомились с Area2D :DDD

Я люблю Paint3D

Такой мини-бонус. К бонусу. Если помните, в прошлой части кнопки из левой половины контроллера были совсе-е-ем другие. Они мне не очень нравились и я сделал свои. Так как я довольно криворукий, пришлось подключать смекалку. Итак. Есть кнопка A - будет треугольником теперь, немного кисточки и заливки из Paint и вуаля.

Во вкладке холст есть удобные кнопки разворота. Не забудьте включить "прозрачный холст". Он конечно не понадобится для картинки, которая изначально была без фона, но мало ли что Windows удумает. Потом я сохранил каждый поворот отдельно и поменял цвета местами через заливку. 1 минута и 8 картинок для кнопок движений готовы.

Хочу также обратить ваше внимание на очень удобную функцию "Волшебное выделение", которое позволяет автоматически определять выделяющиеся объекты и вырезать их из фона. Может быть полезно в некоторых ситуациях.

Показать полностью 6
[моё] Программирование IT Godot Godot Engine Длиннопост
0
6
Tolchee
Tolchee
Свидетели Godot'овы

Первое обновление игры про ведро в лабиринте⁠⁠

2 месяца назад

Несколько дней назад я опубликовал свои игры. Мне написали комментарий #comment_366949237

Я исправил:

-физику текстур

-уменьшил цены в магазине

Добавил:

-врагов

-звуки и музыку

-сундуки

Ссылка на игру:

https://zemlamain.site/labirint.html

Если вы играете через телефон, то переверните его, чтобы не видеть рекламу

Благодарю @Criogenum за отзыв!

Показать полностью
[моё] Браузерные игры Инди Gamedev Разработка Godot Engine Инди игра Обновление Ссылка Текст
16
1
Tolchee
Tolchee

Мои первые игры⁠⁠

2 месяца назад

Я всегда мечтал создать свою игру. И сейчас использовал движок Godot, чтобы сделать простые игры.

Если хотя бы одному человеку понравится, то я буду счастлив.

Я выложил игры на этом сайте, они бесплатные, но в начале есть реклама в виде баннера:

https://zemlamain.site

Если вы играете не на компьютере, а через телефон, то переверните его, чтобы не видеть рекламу.

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

[моё] Godot Engine Браузерные игры Ссылка Разработка Gamedev Инди Текст
14
6
Tnnv
Tnnv

Первая неделя после релиза⁠⁠

3 месяца назад
Первая неделя после релиза

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

Неожиданно оказалось, что игра не работает корректно на видеокартах AMD с последними драйверами, поэтому пришлось срочно менять Vulkan на Direct3D 12. В новой версии игра крашилась на середине одной из начальных миссий - что позволило обнаружить малозаметную ошибку, которая ранее никак не проявлялась.

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

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

Показать полностью
Разработка Gamedev Steam Видеоигра VK Play Godot Engine
0
2
Capybard
Capybard
Серия DevLog (Capybara Survivors)

DevLog_9 (Capybara Survivors) + плейтест⁠⁠

3 месяца назад
DevLog_9 (Capybara Survivors) + плейтест

Добавил в игру ГОЛЫХ фей, но есть нюанс...

...они так сияют, что за этим светом ничего не видно(

Перейти к видео

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

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

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

Дальше по плану рисовать следующего, последнего для этой локации противника, и добавлять его в игру.

За билдами можете обращаться ко мне в лс тут или в тг (@Capybard).

Больше подробностей о разработке тут:

https://t.me/CapybardCollege

Мой сайтик тут:

http://capybard.ru

Показать полностью 1
[моё] Инди игра Инди Gamedev Разработка Игры Godot Godot Engine Indiedev Pixel Art Видео Короткие видео
0
10
Tnnv
Tnnv

Состоялся релиз моей игры «Экспедиция: Мир Тени» - sci-fi тактики в реальном времени на PC⁠⁠

3 месяца назад

«Экспедиция: Мир Тени» — это тактическая стратегия в реальном времени с активной паузой, где игрокам предстоит возглавить отряд десантников в мрачной sci-fi вселенной. В ней необходимо принимать мгновенные решения, подбирать вооружение и экипировку и проводить научные исследования, чтобы справиться с постоянно растущей угрозой и раскрыть тайны Мира Тени.

Игра доступна в Steam и VK Play для PC на Windows.

Я начал разработку в январе 2024 года: это был мой первый опыт работы с движком Godot, а изначально игра создавалась для веб-платформы. Тип и масштаб проекта были выбраны таким образом, чтобы его было возможно завершить в одиночку, своими силами. Это стало возможно благодаря различным методам автоматизации и оптимизации при создании игрового окружения и 3D моделей. Например, применялись геоноды (Blender), текстурные атласы, несколько наборов UV координат у 3D моделей и т.д.

Этот путь в итоге привел к полноценному релизу на PC. Для игры доступна демо-версия, имеющая общие с основной игрой сохранения: прогресс, пройденный в первом акте, переносится в полную версию игры.

Ключевые особенности игры:

  • Сюжетная кампания: Каждый из трёх актов содержит набор уникальных миссий.

  • Динамичные тактические бои: Управление небольшим отрядом в сражениях, где важна каждая секунда.

  • Sci-fi сеттинг: Мрачная атмосфера неизведанного мира.

  • Бесплатный первый акт кампании: Можно начать игру в демо-версии и продолжить с того же момента в полной версии.

Ссылки для скачивания:

  • Steam: https://store.steampowered.com/app/3428480/

  • VK Play: https://vkplay.ru/play/game/ekspedicija_mir_teni/

  • Демо на itch.io: https://tnnv.itch.io/expedition-shadow-world

1/8

Скриншоты игрового процесса

Перейти к видео
Показать полностью 8 1
[моё] Видеоигра Godot Engine Steam VK Play Тактика Научная фантастика Видео Длиннопост
3
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии