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

Битва Героев

Ролевые, Приключения, Мидкорные

Играть

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

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

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

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

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

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

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

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

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

Исправление багов и добавление в игру нового противника.

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

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

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

Мой канал, там гораздо больше размышлений, и более подробно расписан каждый шаг разработки:

https://t.me/CapybardCollege

Мой сайтик:

http://capybard.ru

Показать полностью 2
[моё] Gamedev Разработка Игры Godot Engine Godot Инди Инди игра Pixel Art
0
5
Capybard
Capybard
Серия DevLog (Capybara Survivors)

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

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

В главное меню добавлена музыка, а на поле битвы добавлены монетки!

Признаюсь, я не осилил создание музыки, все таки я больше по коду/движку/геймдизайну. Именно поэтому я обратился к музыканту и заказал у него тему для главного меню. Лично мне все понравилось, поэтому будем работать дальше. Буду постепенно заказывать темы по ходу создания новых уровней, ну и думаю саунд-дизайн в целом тоже переложить уже в руки того, кто это умеет делать.

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

Рекомендую взять у меня билд и прочувствовать лично на вашем же ПК.

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

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

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

Если просто банально посчитать, я потратил час на первую версию монетки, час на вторую, которую вы видите, еще полтора часа на кодинг и добавление в игру, и еще час на адаптацию под windows. Итого 4,5 часа на фичу. При чем код пишу масштабируемый, в будущем не будет проблем с новыми фичами. И вот это все сделано по сути за один день почти. Еще два дня я занимался другими делами. Я стараюсь не винить себя за это, но будто в глубине души я понимаю, что этот девлог должен был выйти два дня назад, и щас уже в игре должен был быть новый противник или торговец.

Короче, таков путь, не вините себя, если что-то не сделали, или наоборот сделали. Как заплачено, так и нахуячено, а мне никто не платит, соответственно да.

Ну и билды я обновил, пишите кому надо, скину, есть для windows и macOS.

Больше контента, само собой тут:

https://t.me/CapybardCollege

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

http://capybard.ru

Показать полностью 2
[моё] Разработка Gamedev Игры Инди игра Инди Godot Godot Engine Indiedev Разработчики Survivors Капибара Pixel Art Пиксель Видео Короткие видео Длиннопост
5
4
KenuLen
KenuLen
Лига программистов
Серия Мобильный геймпад

Мобильный геймпад на Godot. Кнопки. Часть 1⁠⁠

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

Введение

Итак, это мой небольшой... Да на самом деле довольно большой! Рассказ как я делал из своего телефона контроллер. Небольшая предыстория. Решил я сыграть в Broforce с друзьями и тут понял, что если я притащу свой ноутбук с игрой, то поиграть с комфортом мы не сможем - нет столько контроллеров. В mvideo геймпады для xbox или ps стоили около 5 тысяч рублей. Можно было и китайские купить, которые обещали нормально работать при подключение к компьютеру, но... Но отсутствие доверия к качеству и жалось не то что к 5 тысяч, а к 700 рублям удавили возможность покупки на корню. И тут мы задумались, а можно ли сделать собственный мобильный контроллер. Конечно же мы нашли готовые проекты в google play, но они шли с вшитой рекламой и могли начать портить игровой процесс в самый неудобный момент. Так родился интересный проект для реализации. Был ли у меня опыт с Godot? Нет. Разработчик или хотя бы хоть сколько-то программист? Нет. Удивительно, что можно сделать при беспардонном упорстве и наличии гугла. Проект я в итоге сделал. Потом забил на него. А недавно вспомнил! И решил переделать :) Эта и все последующие статьи как раз пересказ процесса ПЕРЕСОЗДАНИЯ мобильного контроллера. Кусочек результата старого проекта ниже:

Зачем вообще переделывать, а не дорабатывать готовое? Я решил серьезно углубиться в Godot и реально сделать свой проект, игру. Ту в которую я бы хотел сыграть. Все же гнаться за мечтой, даже детской, это несколько романтично, возвышено и тупо. Меня устраивает. Старый контроллер имел серьезные проблемы в самой своей базе. Так же его переработка хороший способ убить сразу несколько зайцев. Структура проекта "Контроллер" осталась старой.

  1. Сервер на Python - принимает подключение телефона, получает нажатия и передает их драйверу ViGEmBus. Сервер поддерживает подключение до 4ех человек;

  2. Контроллер на Godot (далее по тексту клиент) - подключается к серверу, передает ему нажатия. Для хобби-прототипа сильно париться не хотелось. У клиента всего 2 сцены - настройки и сам контроллер;

  3. ViGEmBus - драйвер для эмуляции виртуальных игровых контроллеров в операционных системах Windows. К сожалению, поддержка этого чуда прекратилась, и что будет теперь, мне не ясно. Скорее всего рано или поздно настанет момент, когда драйвер перестанет быть совместим с играми или новой версией ОС. Но пока что наслаждаемся.

Чертовы кнопки

Бесплатные картинки для кнопок взял с https://itch.io/game-assets/free/tag-gamepad. Набор приличный, на любой вкус. Со стиками было проще всего - не стал создавать велосипед и загрузил Virtual Joystick от MarcoFazio через AssetLib. А вот кнопки делал через узел TouchScreenButton - в документации Godot этот узел как раз предназначен для обработки на сенсорных устройствах. Загрузил текстуры для кнопок ииии... И границы текстур оказались слегка больше, чем ожидалось.

К стикам это не относится, так как они созданы через другую сущность Control. Пока не забивайте этим голову.

К стикам это не относится, так как они созданы через другую сущность Control. Пока не забивайте этим голову.

В общем Godot правильно определяет границы - я ведь не обрезал прозрачные лишние части. Вроде и черт с ним, но ведь нажатия будут обрабатываться неправильно - в местах пересечений будет срабатывать несколько кнопок. Вариантов была два (по крайней мере о которых я прочитал):

  1. Обрезать кнопки в редакторе убирая пустоты;

  2. Забить на TouchScreenButton и создавать области вручную через Area2D и CollisionShape2D.

Будучи здравомыслящим(?) человеком, я выбрал второй вариант. Чтоб больше страданий было, хех. Если пошагово, то создавалось все это дело следующим образом:

  1. Для 4ех левых кнопок был создан отдельный узел Node2D (CrossButtons1);

  2. Для каждой кнопки создан узел Area2D (UpArea);

  3. Для Area2D были созданы Sprite2D (UPsprite) - отображение кнопки, и CollisionShape2D (для него я уже поленился название выдумывать) - зона обработки нажатия.

Для узла CrossButtons1, в который входят кнопки, добавляем скрипт со следующим текстом:

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

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

Строка 4 нужна для привязки функции обработки нажатия к нашей области Area2D (UpArea). Строки 8 и 10 ловят нажатие и отпускание кнопки.
Это все супер, но как будто лень писать подобный код для каждой новой кнопки. Благо, действительно есть способ попроще.

Пробегаемся по всем подузлам нашего Node2D (CrossButtons1), находим те, что принадлежат типу Area2D и подключаемся функцию _on_button_input для обработки всех кнопок в Node2D. Для нашей задачи главное понимать, какая кнопка была нажата - получаем через button.name.

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

Код +- тот же, но добавляем:

  1. Строка 7 - начальное состояние/начальная картинка;

  2. Строки 12 и 15 для переключения состояния/картинки при обработке нажатия.

Заключение

Все что осталось - томная работа по повторению процесса для создания всех нужных кнопок. В следующей части добавлю новую сцену, ввод текста и сохранение данных в json формате. И немного работы сети. У-о-о-т. Спасибо за чтение. Дельные замечания и советы приветствуются, ибо в плане создания подобного я ещё профан.

Показать полностью 6
[моё] Godot Godot Engine Разработка Программирование IT Windows Программист Гифка Длиннопост
9
3
Capybard
Capybard
Серия DevLog (Capybara Survivors)

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

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

Добавлены HP и XP Bar. Теперь противники спавнятся за пределами камеры и можно восполнять здоровье, если постоите несколько секунд у куста с ягодами.

И самое главное, вы можете поучаствовать в плейтесте. Просто напишите мне в ЛС (@Capybard) и я все скину и объясню.

Больше процесса можно видеть у меня в ТГ:
https://t.me/CapybardCollege

Мой сайтик:

http://capybard.ru

Показать полностью
[моё] Gamedev Разработка Игры Инди Indiedev Pixel Art Пиксель Инди игра Godot Aseprite Survivors
0
4
Capybard
Capybard
Серия DevLog (Capybara Survivors)

DevLog_4 (Capybara Survivors)⁠⁠

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

Поведение противников, переработка слоев и меню паузы.

Когда я начал добавлять противников в игру, возникло сразу несколько проблем. Точнее парочка возникла, а остальные я не замечал. Все они связаны со слоями. Игра 2д, но я пытался создать иллюзию того что игрок может быть перед деревом, а может быть и за ним. Так было с каждым элементом ландшафта. Это работало так: есть условное дерево-родитель от которого наследуются все остальные деревья, у родителя есть скрипт, который проверяет, если игрок выше, то выходим на передний план, то есть прибавляем +1 к слою, в ином случае уходим на задний план, то есть -1 к слою.

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

В один момент я психанул и начал думать как это исправить (На самом деле я напиздел, я просто психанул и ушел пить кофе, идея пришла сама по себе). В общем вместо всех этих проверок элементы ландшафта просто при запуске сцены получают свою координату Y и делают ее слоем. Всё. Вот так просто получается целая куча слоев. Карты не бесконечные, не большие, поэтому в производительности это не упадет. А вот игрок обновляет свой слой постоянно. 120 строк магическим образом превратились в просто 2 строки.

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

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

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

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

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

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

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

Больше процесса можно видеть у меня в ТГ:

https://t.me/CapybardCollege

Мой сайтик:

http://capybard.ru

Показать полностью 4 2
[моё] Survivors Gamedev Разработка Игры Инди игра Инди Indiedev Godot Godot Engine Пиксель Pixel Art Видео Без звука Короткие видео Telegram (ссылка) Длиннопост
1
5
SpaceSoulStudio
SpaceSoulStudio

Об относительности и геймдизайне⁠⁠

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

Пару недель назад я закончил делать первый уровень своей первой игры и сегодня я хочу рассказать об идеях, лежащих в основе этого уровня. Ничего сенсационно нового, скорее наоборот ретро во всех его проявлениях. Если вы съели собак в создании игр, то можете смело закрывать статью, а если нет, то приглашаю вас к прочтению =)

Когда ты гуру геймдизайна (Знакомьтесь: Дэйв)

Когда ты гуру геймдизайна (Знакомьтесь: Дэйв)

Про уровень.

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

Идейно донельзя простой уровень

Идейно донельзя простой уровень

Падение

Разделим слона это на игровые составляющие. Самая главная составляющая - само падение. У нас условный герой, условно бесконечно перемещается в пространстве.

С подобными уровнями/играми мир уже знаком. Это и Subway Surfers...

Subway Surfers

Subway Surfers

...и Jetpack Joyrid...

Jetpack Joyrid

Jetpack Joyrid

...и даже диназаврик гугла.

Dinosaur Game

Dinosaur Game

Игры с бесконечными уровнями обычно объединяет одно - они нам врут. В них никто никуда не бежит/летит. Главный герой буквально находится на месте и иногда подпрыгивает, а мир несется на него. Уверен, что перечисленные примеры именно такие =)

Спроецируем это на нашу игру.

Наш гном делает вид, что падает, но на самом деле он просто перемещаться по экрану в разные стороны, в пределах координат x [0:320] / y [0:240] . А вот весь мир вокруг него летит вверх. Отодвинем немного камеру.

Отодвинули немного камеру.

Отодвинули немного камеру.

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

Кажется, что герой летит вниз, но нет - весь мир летит вверх. Это буквально магия кино - кругом обман, но красивый(ИМХО).

Логика появления объектов.

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

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

А с чего же начал? Разделил экран на условные линии с объектами. После чего прикинул условия на появления объектов в этих линиях.

Линии с объектами.

Линии с объектами.

Т.е. условно линии с объектами идут вверх(это не красные, а то, что разделено красными). 20 линий - 2 экрана -1 паттерн возникновения объектов. На первых двух экранах мы встречаем камни с сложностью 1/2, т.е камень на 2 линии. На третьем и четвертом экранах мы встречаем камни с периодичностью 1(один камень на линии). К 11 экрану выходим на сложность 2.5. Если посмотреть первые 16 экранов, то можно увидеть следующую сложность:

1- 2 экраны | сложность 0.5

3- 4 экраны | сложность 1.0

5- 6 экраны | сложность 2.0

7- 8 экраны | сложность 3.0 (усложнение)

9-10 экраны | сложность 2.0 (откат)

11-12 экраны | сложность 2.5 (выход на стандарт)

13-14 экраны | сложность 2.0 (смена направления камней)

15-16 экраны | сложность 2.5 (возвращение к стандарту)

и т.д.

Разнообразие вносится типом камней, они бывают маленькие и большие. Часть из них летит вверх, а часть летит вниз. Короче bullet hell адаптированный под сеттинг игры.

Подобные условия, как на камни, прописаны и на еду и на монетки. Полный список условий на экраны выглядит следующим образом:

1- 2 экраны | сложность 0.5 | монетки 0.5 | еда 0.0 (начало)

3- 4 экраны | сложность 1.0 | монетки 0.5 | еда 0.0 (начало)

5- 6 экраны | сложность 2.0 | монетки 0.5 | еда 0.0 (начало)

7- 8 экраны | сложность 3.0 | монетки x | еда 0.25 (крупные камни и упрощение едой)

9-10 экраны | сложность 2.0 | монетки 0.5 | еда 0.0 (отдых)

11-12 экраны | сложность 2.5 | монетки 0.5 | еда 0.0 (много мелких камней, выход на стандарт)

13-14 экраны | сложность 2.0 | монетки x | еда 0.0 (смена направления камней)

15-16 экраны | сложность 2.5 | монетки 0.5 | еда 0.0 (много мелких камней, стандарт)

17-18 экраны | сложность 3.0 | монетки x | еда 0.0 (усложнение)

19-20 экраны | сложность 3.0 | монетки x | еда 0.0 (крупные камни)

21-22 экраны | сложность 3.0 | монетки x | еда 0.25 (востановление)

и т.д.

Ах да, про монетки и еду.

Монетки

С монетками тоже не все так просто.

Не все так просто.

Не все так просто.

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

Снизу примеры из более свежих игр.

Например первая миссия uncharted 2, по желтому цвету сразу можно догадаться о маршруте главного героя по поезду.

Uncharted 2: Among Thieves

Uncharted 2: Among Thieves

horizon zero dawn тоже не стал исключением, здесь по желтому можно определить путь на этого робота.

Horizon Zero Dawn

Horizon Zero Dawn

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

маршрут построен

маршрут построен

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

Почти каждый вариант с взятием монетки ведет к потере жизни, временное предательство

Почти каждый вариант с взятием монетки ведет к потере жизни, временное предательство

Второй ингредиент готов, теперь поговорим об очках здоровья и о еде.

Еда и очки здоровья

Еда это еще одна древняя игровая фишка. Она не только способ пополнить здоровье, но и способ разнообразить уровень. Интереснее собирать и еду и сокровища, а не только сокровища.

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

Как же сделать так, чтобы и еды было много и сложность осталась?

Надо уменьшить пользу от еды и вот, что я придумал...

У нас есть 5(выбрано экспериментальным путем) очков здоровья - крупных сердечек. За каждую ошибку я отнимаю у игрока полное, крупное сердечко(округляя в меньшую сторону). Но вот за каждую съеденную еду я восполняю не целое сердечко, а часть.

Пример, когда два полных сердечка и одно не полное

Пример, когда два полных сердечка и одно не полное

Углубимся в математику сердец =)

У игрока на самом деле 15 очков здоровья. Каждые три очка дают полноценное сердечко. Т.е. на рисунке сверху 8 очков - два сердечка по 3 и одно на 2. За каждую съеденную еду я даю игроку еще 1 очко. Т.е. у игрока станет 9 очков - три крупных сердечка.

Вот как-то так

Вот как-то так

Но вот отнимаю у игрока за ошибку я всегда до крупного сердечка.

Т.е. при трех крупных сердечках, сердец станет два. При двух крупных и одном маленьком сердец останется одно. Т.е. логика получения урона получается следующая:

15 очков здоровья >> 12 очков здоровья

14/13/12 очков здоровья >> 9 очков здоровья

11/10/9 очков здоровья >> 6 очков здоровья

8/7/6 очков здоровья >> 3 очков здоровья

5/4/3/2/1 очков здоровья >> 0 очков здоровья (смерть)

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

5/4/3/2 очков здоровья >> 1 очков здоровья

1 очко здоровья >> 0 очков здоровья (смерть)

А за поедание еды всегда +1 очко.

И вот еще одна механика придумана.

Сложность и пасхалка

Те, кто чуть знаком с разрабатываемой мной игрой знает - я делаю графический стиль в 1bit/2bit/3bit/4bit/5bit графике. Переключение происходит по нажатию одной кнопки или через настройки.

пример в 1bit

пример в 1bit

Здесь тоже таится маленький нюанс. Для всего уровня есть единая карта, но вот вычитывание карты происходит чутка по разному для разных цветовых палитр. Чем более бедная палитра, тем больше сложность, тем больше вероятность появления дамажущего объекта:

1 bit - 100%

2 bit - 95%

3 bit - 90%

4 bit - 85%

4 bit - 80%

Это тоже некоторая отсылка - раньше игры меньше заботились о чувствах игрока, были чутка сложнее(ИМХО), а значит сложность в менее битных режимах пусть будет выше. К тому же такой подход дает немного разное прохождение на высокобитной графике.

Итого

Загоняем персонажа в рамки экрана. Разрезаем уровень на полоски, добавляем объекты с определенной периодичностью в определенные места. Добавляем монетки, как маршрут игроку. Добавляем алгоритм для очков здоровья и расставляем по уровню еду. И делаем это все в блокноте =) Вот пример того, что получается:

И читать удобно если привыкнуть... "Я уже даже не вижу код. Я вижу блондинку, брюнетку, рыжую." (с) Матрица

И читать удобно если привыкнуть... "Я уже даже не вижу код. Я вижу блондинку, брюнетку, рыжую." (с) Матрица

Игра потом вычитывает файл и построчно заполнит уровень.

А вот как получилось. Немного скриншотиков...

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

На самом деле это не все фишки геймдизайна, которые я использовал в этом уровне, но наверное основные =)

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

Как всегда, буду рад видеть Вас в моем ТГ канале. Там я чуть чаще выкладываю фрагменты из своей игры и другие материалы)

https://t.me/SSSDungeonGhost

Спасибо за внимание!

Показать полностью 18
[моё] Gamedev Инди Инди игра Разработка Godot Длиннопост
0
4
MaskarponArt
MaskarponArt
Серия GameDev+Ai

Переход с браузерной RPG на Godot: мой опыт⁠⁠

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

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


После пары месяцев с HTML, CSS и JavaScript

Я решил: хватит мучиться — пора переходить на движок. Перейти на Godot было непросто. Увидел, как один разработчик делает там свою игру, и подумал: «Почему бы не попробовать самому?»

На старте я почти ничего не понимал.
Узлы, инспектор, дочерние сцены, инстанцирование — всё это было для меня тёмным лесом. И это я ещё про интерфейс молчу. Сам язык GDScript до сих пор знаю лишь на уровне, достаточном для ориентации и исправления ошибок.


Перенос из браузерки

Перекинуть весь функционал напрямую из JavaScript в GDScript было невозможно. CSS-стили и HTML-верстку тоже не скопируешь. Всё пришлось делать с нуля. Каждый элемент интерфейса, каждый кусок логики я собирал при помощи ChatGPT — вместе с его багами и потерями контекста.
Со временем научился сам размещать элементы на сцене, выстраивать структуру и править код.


План перехода

Без плана было бы нереально. Я составил список шагов:

  1. Перенести все скрипты и функционал.

  2. Перетащить стили и интерфейс (CSS → сцены, HTML → структура).

  3. Перерисовать визуал под новый формат.

  4. Проверить, чтобы игра запускалась.

Пока не перенесены все скрипты, игру не проверить — один файл проект не запустит.


Первый запуск

Когда я наконец собрал всё и запустил игру — получил тонну ошибок. ChatGPT адаптировал 18 JS-файлов (каждый по 300–800 строк), но допустил множество ошибок.
Перенос шёл постепенно, по одному файлу. Процесс поиска и исправления багов выглядел так:

  1. Копировал ошибку из консоли.

  2. Отправлял её в GPT вместе с контекстом.

  3. Получал исправленный вариант.

  4. Если не работало — откатывался и повторял.

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


Немного цифр

Для понимания масштаба работы:

  • 18 JS-файлов (300–800 строк каждый) → GDScript

  • 15 CSS-файлов (gamestyle.css — 600 строк) остальные поменьше

  • 6 HTML-страниц

  • 74 картинки

Это было только начало. Сейчас проект вырос до:

  • 56 скриптов

  • 40 сцен

  • 291 картинки


Визуал — вечная стройка

Параллельно с кодом шла постоянная переработка визуала.
Где-то переносил интерфейс из браузерки, где-то перерисовывал элементы, потому что старый стиль переставал нравиться. Иногда делал заглушки, чтобы хотя бы протестировать функционал.
Перерисовка визуала — процесс бесконечный, думаю, многие разработчики игр это понимают.


Что дальше

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

А пока — несколько скриншотов версии после полного переноса из браузера.


Итог

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

Игру нельзя просто переписать с одного языка на другой. Её нужно написать заново.


Баги не исчезают. Они просто переходят в следующую версию🐺

Подписывайтесь на мой телеграм канал, там помимо дев-влогов я выкладываю арты из игры, и просто по фану рисую с нейронками, залетай если тебе интересный нейросети и контент сделанный с помощью них: t.me/neirosea

Самый первый запукск годота, тут я думал сделать игру платформером, но быстро ушел от этой идеи:)

Самый первый запукск годота, тут я думал сделать игру платформером, но быстро ушел от этой идеи:)

Следующие 5 скринов уже на движке годот после переноса большинства механик и визуала из браузерки(система инвентаря с драг энд дроп)

Следующие 5 скринов уже на движке годот после переноса большинства механик и визуала из браузерки(система инвентаря с драг энд дроп)

Просто деревня, основной хаб игры

Просто деревня, основной хаб игры

Карта, с локациями, тут их 4 если кто не понял, в каждой есть свой моб

Карта, с локациями, тут их 4 если кто не понял, в каждой есть свой моб

Но что было в карте тогда и сейчас, совершенно разный вид игры, сейчас я полностью переработал карту и локации, в будущих постах увидите:)

Система прокачки героя, простенькая, но даже такую было сложно создать а потом еще и перенести на годот

Система прокачки героя, простенькая, но даже такую было сложно создать а потом еще и перенести на годот

Таверна, сейчас кажется уже странной что в окошке целое помещение, так что от этого дизайна я тоже уйду к полноценной локации, с кайфушной музыкой и атмосферой:)

Таверна, сейчас кажется уже странной что в окошке целое помещение, так что от этого дизайна я тоже уйду к полноценной локации, с кайфушной музыкой и атмосферой:)

Хочется поделиться еще скринами из создания, но многие затерялись, да и пост будет слишком уж длинной простыней:)

Показать полностью 6
[моё] Контент нейросетей Gamedev Stable Diffusion 2D ChatGPT Godot Нейронные сети Истории из жизни Инди игра Компьютерные игры Telegram Длиннопост
9
4
MaskarponArt
MaskarponArt
Серия GameDev+Ai

Как я пытался сделать Telegram-игру, а закончил с браузерной RPG (и не сгорел)⁠⁠

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

В Telegram-канале как-то наткнулся на пост про создание игр с нейросетями. Уже не помню, в каком именно, но у меня щёлкнуло: я тоже хочу! Думал об этом уже лет пять, но раньше всё казалось невозможным — нужно учить языки, разбираться в движках и т.п. А тут — ChatGPT. Интересно же.

Я зашёл, спросил: «Мы можем создать игру?» Он, конечно, согласился. И всё закрутилось.

Сначала я прикидывал, что вообще хочу. Тогда был хайп на кликалки вроде хомяка и Notcoin. Захотел сделать свою, но с RPG-элементами: прокачка, клики, монетки, и, в идеале — хоть как-то монетизировать.

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

Оказалось, Telegram-игра — это по сути браузерка на HTML/CSS/JS. HTML — структура, CSS — стили, JS — логика. Если где-то ошибаюсь в терминологии — не судите строго, я только начал учиться.


Telegram-игра: первые шаги

На старте всё было в новинку. ChatGPT не всегда держал контекст, скрипты получались громоздкими, каждая механика — в отдельном .js-файле по 400+ строк. Всё писал в Блокноте, сохранял, открывал в браузере, правил — и так по кругу.

Потом нашёл Notepad++, стало немного легче. Потом открыл для себя Visual Studio Code — и вот тогда реально почувствовал кайф от нормальной работы с кодом.

Чуть позже случайно открыл DevTools (F12) в Chrome и понял, что можно прямо в браузере менять элементы, а потом копировать результат в VS Code. Удивительно, но таких фишек мне ни одна инструкция не подсказывала — сам нашёл, сам удивился.


CSS и адаптивность

Стили — отдельная история. Всё выглядело как одна гигантская простыня, где изменение одного блока ломало всё вокруг. Понемногу разобрался, но осознал: адаптировать игру под Telegram внутри браузера — не мой путь. Слишком сложно для текущего уровня.

В итоге решил: временно отказываюсь от Telegram-бота. Перехожу на полноценную браузерную игру. Там хотя бы контроль больше.


Браузерная RPG: теперь серьёзно

Подумал: ну 2D-RPG — что может пойти не так? На деле — почти всё старое перекочевало: верстка, стили, адаптивность. Но теперь я уже ориентировался лучше, поэтому работал системнее.

Проект занял около двух месяцев. Он не стал финальной версией, но именно он лёг в основу моей текущей игры на Godot. Скрипты не переносил — язык другой — но визуал, логика, структура перешли почти целиком.

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


Что получилось

  • 4 локации (в каждой — свой моб)

  • Инвентарь с drag & drop

  • Магазин, таверна, прокачка

  • Режимы боя: ручной и авто

  • Система дропа, карта с хабом

  • Эффекты при наведении

  • Плюс мелочи: продажа предметов, логика мобов, перемещение вещей

Для первой игры — это был мощный апгрейд. Я реально понял, насколько сложна масштабная браузерка. Много кода, много взаимосвязей. Это не просто “написал скрипт и игра готова”.

Однажды открыл DevTools у одной крутой браузерной игры — в HTML было 3000+ строк. И это только одна вкладка. А их там десятки. В тот момент я чётко понял: я туда больше не полезу.


Что дальше?

После RPG я сделал сайт для своей игры. Опыт с браузерной версией помог — знал, куда лезть, где искать решения, и всё вышло.

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

Дополнительные материалы и скрины — оставлю в комментариях под этим постом. Заглядывайте.

Не важен тот, кто не падал. Важен тот, кто встал.

Первые два скрина, из моей попытки в телеграм игру(бота)

Первые два скрина, из моей попытки в телеграм игру(бота)

Следущие 4 скрина, уже браузерная игра полноценная, не для тг

Следущие 4 скрина, уже браузерная игра полноценная, не для тг

И последние 4 скрина, это уже база с которой я начал переходить на новый движок(Godot)

И последние 4 скрина, это уже база с которой я начал переходить на новый движок(Godot)

Показать полностью 10
[моё] Контент нейросетей Stable Diffusion Нейронные сети 2D ChatGPT Gamedev Истории из жизни Инди игра Компьютерные игры Godot Telegram Длиннопост
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии