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

Рыбный дождь

Спорт, Симуляторы, Рыбалка

Играть

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

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

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

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

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

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

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

Gamedev + Программирование

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

Инди Разработка Инди игра Игры Unity Компьютерные игры YouTube IT Программист IT юмор Python Картинка с текстом Юмор Все
632 поста сначала свежее
13
CodePanda
CodePanda
2 месяца назад
Лига программистов

Всем привет⁠⁠

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

Меня зовут Ярослав и я новорег (хотя и читал пикабу больше 10 лет). Собственно эти 10 лет я занимался работой на одном легаси мобильном проекте и стал подозревать, что навыки утекают в унитаз.

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

Всем привет Программирование, Программист, Игровой движок, Инди, Gamedev, Разработка, C++

Выходит бета, и работает только под Windows (единственная ось, которая больше официально в России не работает) и только с DirectX рендером.

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

Почему я не взял какой-нибудь Unity или Unreal? Пытался. Не зашло.

Что я буду делать:

  • Писать свой игровой движок на примере маленьких проектов с целью подтянуть навыки в C++, CMake, GIT, Vulkan API, кроссплатформенной разработке, разобраться с хорошей архитектурой, ну и по мелочам чего-то наберется.

  • Сам работаю на Mac, поэтому проект будет собираться на CMake, IDE - Visual Studio Code,

  • язык C++ 23, чтобы читатели могли повторить это на винде и линухе.

Что я жду от сообщества:

  • Надеюсь, найдутся люди, кому это будет полезно.

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

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

Всем спасибо за внимание, надеюсь, пребывание здесь будет полезно и мне и вам. Ставьте плюсы/минусы, пишите комменты (в принципе пишите - интересно вам такое или нет?). Следующий пост напишу про структуру проекта на данный момент и настройку сборки.

Показать полностью 1
[моё] Программирование Программист Игровой движок Инди Gamedev Разработка C++
24
Drevmon
Drevmon
3 месяца назад

А может помочь кому начать делать игры в UNITY?⁠⁠

На видео спидран моего первого платформера.

Правила:
1. Денег не беру

2. Научу самых новых новичков или подскажу базу тем кому интересно

3. Никаких онлайн игр (слишком трудная тема) 1 онлайн игра == 3 обычных игры

4. Никакого 3D (Ничего не имею против 3D но я просто никогда в него не лез, мало что подскажу)

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

6. Моя личка в ТГ: https://t.me/zolotist


Почему я решил Вам это предложить?

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


Всё мое представление о сложности создания игр поламал 15-летний пацан!

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

Разумеется, я ничего не ожидал от школьника и думал, что потрачу время зря. Созвонился с ним в ДС. Дал ссылку на гайды: «Как установить Юнити», «Как установить Visual Studio Code». Это было его первым заданием. На следующий день парнишка написал: «Готово».

Дальше я созвонился с ним и просто потыкал мышкой по интерфейсу Unity. Объяснил простейшим языком, что в языке программирования C# переменной называют коробочку, в которую кладем цифру или буквы и др. Сказал, что функция — это инструмент, которым мы делаем что-то с этими переменными. Дал задание создать мне для игры платформу, которая движется по кругу вокруг своей оси. Подкинул видео (гайд, как это сделать).

На следующий день парнишка написал, что сделал. Вышло хорошо. Мне понравилось. Добавил эту механику себе в проект.

Потом я познакомил его с нейронкой (в моем случае DeepSeek). Объяснил как пользоваться. После этого он стал писать мне реже) Теперь кидаю нейронку всем изначально XD. Все задания, что я давал парнишка делал к вечеру следующего дня. А из-за того, что приходилось внедрять их в свою игру - я немного удлинил процесс её создания! Так что, хоть он и был жутко для меня полезен, пришлось очень быстро предложить ему сделать свою игру.

Тут то парень и воспылал. Пока я доделывал свой платформер, Он сделал кликкер и свою версию очень простого платформера, просто воруя картинки для игры из интернета, используя нейронку, ютуб, гугл, и мои подсказки. (Одно фигово, кодить так и не научился!)

Теперь мы сидим и параллельно делаем каждый свою игру. У него опыта около 3 недель. Сейчас он делает еще один платформер (уже третья его игра) и у него хорошо получается. Кодить так и не научился. Ленится.


ВЫВОД

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

Так что пишите, не стесняйтесь!

Показать полностью
[моё] Яндекс Компьютер Игры Блог Рекомендации Фриланс Программа Unity Gamedev IT Game Art Программирование Видео YouTube Длиннопост
2
7
user8676564
user8676564
4 месяца назад
Лига Разработчиков Видеоигр

Lists в Unity за 4 минуты для начинающих гейм-дизайнеров⁠⁠

Lists – списки на C# и, соответственно, Unity порой создают куду проблем для начинающих геймдевов. Они вроде бы везде, но в начале пути разработчика это действительно морока и сложно понять, как и с чем их едят. В этом видео небольшая помощь :)

[моё] Инди Разработка Программирование Unity Unity3D Unity2d Csharp List Gamedev Unreal Engine Инди игра Мобильные игры Видео YouTube
1
3
WoWSab
WoWSab
4 месяца назад

Средневековье и хомяки: Как я балансировал игровые механики в своей MMORPG⁠⁠

Привет, пикабушники! С вами WoWSab, и сегодня я расскажу, как я создаю браузерную MMORPG, где средневековый мир встречается с механиками из Hamster Combat. Представьте себе: ваш рыцарь, вооружен мечом и... хомяком. Да-да, вы не ослышались! В моей игре хомяки — это не просто милые зверьки, а настоящее оружие, чтоб способно уничтожить своего врага!

Средневековье и хомяки: Как я балансировал игровые механики в своей MMORPG Разработка, Веб-разработка, Программирование, Gamedev, Длиннопост

По умолчанию хомяк не прилагается.

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

Небольшая предыстория.

Начнем с начала. Идея создать свою игру зрела во мне давно. Были и неудачные проекты, которые так и не вышли за рамки черновиков. Но всё изменилось, когда на сцену вышли они — те самые Hamster Combat, о которых я упоминал ранее.

Криптовалюта всегда была мне близка. Мне нравилась её идея и реализация, но, познакомившись с Хомяками, я понял: что-то здесь не так. Тапать для получения монет в надежде на миллионы... Это не вдохновляло. Тогда у меня созрел план: создать игру, в которой зарабатываемые монеты станут неотъемлемой частью игровой экономики. Они не будут просто ожиданием выхлопа с TGE — они станут её основной механикой. Так родилась Telegram игра WannaBlood — игра, жаждущая крови.

Игровой баланс и на что он влияет

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

Вспомним тех же Хомяков. Вы тапали, зарабатывая первые монеты, затем прокачивали карточки, которые давали пассивный доход. Но нужно было периодически заходить в игру, иначе фарм останавливался. Заработали монеты — прокачали карточки — получили больший заработок в минуту — ждёте истечения таймера (и дополнительно тапаете, если не лень). Круг замкнулся. Эта простая механика определяла весь баланс игры. Погоня за монетами. Мне это не по нраву. Мы пойдем другим путем.

Средневековье и хомяки: Как я балансировал игровые механики в своей MMORPG Разработка, Веб-разработка, Программирование, Gamedev, Длиннопост

Однако путь наш будет тернист...

Для начала нужно было определиться с основной механикой игры. Я выбрал арену. Сражения 1x1, 2x2, 5x5... Где арена, там и азарт, ставки, всё или ничего... Но пока не буду раскрывать все карты — возможно, расскажу об этом аспекте позже, когда он будет полностью реализован.

Витать в облаках можно долго, но нужно вернуться к началу и понять, кем и как мы будем играть. Наш персонаж: как он будет одеваться, как будут зарабатываться первые монеты? Для чего вообще нужны эти монеты? Как будет происходить прокачка персонажа, как получать опыт? И какие игровые механики мы будем использовать? На эти вопросы нужно было ответить.

Неинтересная, занудная, но необходимая математическая часть

Начнём с механик. Первая и хорошо известная — механика Check In-ов. Она даёт игроку возможность пассивно зарабатывать монеты, предоставляет "второй шанс" при полном проигрыше и затягивает обратно в игру. Суть проста: заходи в игру каждый день и получай монеты за первый заход. Но есть и минус: со временем ценность этой механики падает. С этим можно и нужно бороться. Вот мой подход:

  1. За заход будет даваться не только монеты, но и опыт.

  2. Количество зарабатываемых монет и опыта будет расти с уровнем персонажа.

Но мы не будем заранее определять количество опыта и монет — это неэффективно. Вместо этого будем рассчитывать всё математически.

Существует несколько вариантов исполнения. Приводить примеры буду с учетом базовой награды за уровень a = 10 монет.

  1. Линейное увеличение

    Определяется формулой - монеты = a + k * (уровень−1).

    Суть проста - на каждом уровне количество монет увеличивается на фиксированное значение k.
    Пример: Если k=5, то на 2-м уровне будет выдаваться 15 монет, на 3-м уровне — 20 монет и т.д.

  2. Квадратичное увеличение

    Формула - монеты = a * уровень^2 (^ - это степень)

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

    Если на 1-м уровне выдается 10 монет, то уже 2-м уровне будет выдаваться 40 монет, на 3-м уровне — 90 монет и т.д.

  3. Экспоненциальное увеличение

    Формула - монеты = a * e ^ (уровень−1) * k

    В этом варианте количество монет увеличивается экспоненциально, что приводит к очень большим наградам на высоких уровнях.
    Если k=0.5, то на 2-м уровне будет выдаваться около 16 монет, на 3-м уровне — около 27 монет и т.д.

  4. Логарифмическое увеличение

    Формула - монеты = a * log(уровень + k)

    В случае использования логарифма количество монет увеличивается медленнее на высоких уровнях.

    Если k=9, то на 2-м уровне будет выдаваться около 11 монет, на 3-м уровне — около 12 монет и т.д.

  5. Полиномиальное увеличение

    Формула - монеты = a * (уровень ^ k) + (k2 * уровень) + c
    Этот способ во много похож на квадратичное увеличение, однако он использует дополнительный коэффициенты k2 и c, благодаря которому количество монет увеличивается быстрее, чем линейно, но медленнее чем квадратично. По факту - при помощи этой формулы можно получить практически любой результат, в рамках разумного конечно.

    Однако, в этом случае, необходимо тщательно подбирать коэффициенты исходя из желаемого результата. Здесь уже не получится просто взять a = 10.

    Например, для получения 10 монет на 1-м уровне, 18 на втором уровне, 29 на третьем уровне, 325 на 30-м уровне, 900 на 80-м уровне, 1200 на 100-м уровне подойдут коэффициенты:

    a = 1.21 * 10^-10

    k = 5.98

    k2 = 10.92

    c = -2.81

    Коэффициент a является отправной точкой, влияющий на количество монет, k - показатель степени, определяющий, как быстро увеличивается количество монет с уровнем, k2 - множитель, влияющий на линейный рост, а с - смещение, добавляемое к результату для корректировки начального значения.

    Графически все эти модели можно представить вот так:

Средневековье и хомяки: Как я балансировал игровые механики в своей MMORPG Разработка, Веб-разработка, Программирование, Gamedev, Длиннопост

Сравнение различных функций роста

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

Вместо заключения

Не ожидал что статья получится такой объемной. Давайте на этом пока что закончим. Если вам интересно продолжение, то могу с удовольствием написать о механиках увеличения требуемого опыта при росте уровня, о методиках расчета урона, блока, защиты и так далее, и прочих математических прелестях бэкэнда игры. А также о будущей роли хомяков. И нет, они не будут питомцами! Буду писать о том что знаю, ведь эти механики в той или иной степени я использую у себя.

Также буду рад видеть Вас в своей игре. К сожалению, арена, кузница и магазин пока еще проходят тестирование, однако будут уже скоро. А пока вы можете ознакомиться с новостями по игре в ТГ канале.

Показать полностью 3
[моё] Разработка Веб-разработка Программирование Gamedev Длиннопост
0
4
SNK27.Studio
SNK27.Studio
4 месяца назад
Лига Разработчиков Видеоигр

Торговец на лодке в собственной 2D инди игре!⁠⁠

Торговец на лодке в собственной 2D инди игре! Компьютерные игры, Инди игра, Инди, Gamedev, Игры, Unity, Game Art, Дневник разработки, Разработчики игр, Sprite, Рисование, 2d рисование, Программист, Программирование, 2D, Башня, Tower Defense, Мобильные игры, Видео, Короткие видео, Длиннопост

Жанр игры — Tower Defence в стилистике пиксель-арт, вдохновлённый такими проектами, как Kingdom Two Crowns и New Lands.

На этот раз идея не была спонтанной — она давно витала в наших планах. В оригинальной игре Kingdom есть торговец, который живёт в лесу. Он приносит игроку монетки, и на этом его функционал заканчивается. Но здесь возникает интересный вопрос:

Почему Жадность в Kingdom не нападает на торговца, хотя у него точно есть деньги?

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

Торговец на лодке в собственной 2D инди игре! Компьютерные игры, Инди игра, Инди, Gamedev, Игры, Unity, Game Art, Дневник разработки, Разработчики игр, Sprite, Рисование, 2d рисование, Программист, Программирование, 2D, Башня, Tower Defense, Мобильные игры, Видео, Короткие видео, Длиннопост

Оригинальный "Караванщик" из Kingdom Two Crowns

Что изменилось в нашей игре:

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

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

Как это было реализовано:

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

Если хотите следить за дальнейшим развитием проекта и студии, присоединяйтесь к нашему Telegram-каналу!

Торговец на лодке в собственной 2D инди игре! Компьютерные игры, Инди игра, Инди, Gamedev, Игры, Unity, Game Art, Дневник разработки, Разработчики игр, Sprite, Рисование, 2d рисование, Программист, Программирование, 2D, Башня, Tower Defense, Мобильные игры, Видео, Короткие видео, Длиннопост
Показать полностью 2 1
[моё] Компьютерные игры Инди игра Инди Gamedev Игры Unity Game Art Дневник разработки Разработчики игр Sprite Рисование 2d рисование Программист Программирование 2D Башня Tower Defense Мобильные игры Видео Короткие видео Длиннопост
1
6
SNK27.Studio
SNK27.Studio
4 месяца назад
Лига Разработчиков Видеоигр

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands)⁠⁠

Всё началось со спонтанной идеи: а что, если в игре лисы будут появляться в лесу? Отбросив книгу, бегом в Aseprite и рисовать! Вот что получилось:

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands) Инди игра, Инди, Gamedev, Компьютерные игры, Игры, Unity, Программист, Программирование, Csharp, Разработчики игр, Разработчики, 2D, Рисование, Sprite, 2d спрайты, Дневник разработки, Tower Defense, Видео, Короткие видео, Длиннопост

Затем началась работа над скриптом. За основу взяли уже существующий скрипт кролика. Кролики? Эти мобы появляются возле кроличьих нор, которые, как и лисы, находятся в лесу. Также их можно построить в любом свободном месте для фарма монет. На данный момент кролики — основной источник дохода игрока. За каждого убитого кролика игрок получает 1 монетку.

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands) Инди игра, Инди, Gamedev, Компьютерные игры, Игры, Unity, Программист, Программирование, Csharp, Разработчики игр, Разработчики, 2D, Рисование, Sprite, 2d спрайты, Дневник разработки, Tower Defense, Видео, Короткие видео, Длиннопост

У лисички более продвинутая логика поведения, но без лишних сложностей. Она может ходить по карте влево и вправо или просто стоять на месте. Но самое интересное — она умеет лежать! Не знаю, зачем была добавлена эта фича, но она есть, и это забавно.

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands) Инди игра, Инди, Gamedev, Компьютерные игры, Игры, Unity, Программист, Программирование, Csharp, Разработчики игр, Разработчики, 2D, Рисование, Sprite, 2d спрайты, Дневник разработки, Tower Defense, Видео, Короткие видео, Длиннопост

Если лисичка встретит на своём пути кролика, то просто съест его, и игрок не получит монет. Увы... Поэтому она может спокойно прийти в Королевство и уничтожить ваш доход, если её не остановят лучники.

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands) Инди игра, Инди, Gamedev, Компьютерные игры, Игры, Unity, Программист, Программирование, Csharp, Разработчики игр, Разработчики, 2D, Рисование, Sprite, 2d спрайты, Дневник разработки, Tower Defense, Видео, Короткие видео, Длиннопост

Лисичка больше никого не трогает. Убить её непросто. При попадании стрелы она убегает в лес на максимальной скорости, но с каждым полученным уроном её скорость снижается. Общее количество здоровья у лисички — 3. За её убийство игрок получает 3 монеты!

Хитрая лисичка для 2D Инди иры жанра Tower Defence (типа Kingdom Two Crowns / New Lands) Инди игра, Инди, Gamedev, Компьютерные игры, Игры, Unity, Программист, Программирование, Csharp, Разработчики игр, Разработчики, 2D, Рисование, Sprite, 2d спрайты, Дневник разработки, Tower Defense, Видео, Короткие видео, Длиннопост

Вот так, ради разнообразия и увлекательности, была создана хитрая лисичка!

Если хотите следить за дальнейшим развитием проекта и студии, присоединяйтесь к нашему Telegram-каналу!

Показать полностью 5 1
[моё] Инди игра Инди Gamedev Компьютерные игры Игры Unity Программист Программирование Csharp Разработчики игр Разработчики 2D Рисование Sprite 2d спрайты Дневник разработки Tower Defense Видео Короткие видео Длиннопост
2
0
user10300099
4 месяца назад

Unity3D, Live2D или как я почти сошел с ума. Помогите⁠⁠

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

Цель изначально казалась легкодоступной, а именно - экспортировать Live2D модель из игры написанной на Unity. Пользовался советами из интернета, обращался к DeepSeek и ChatGPT и перепробовал множество всего, однако так ни к чему и не пришел. Есть ли здесь ребята, которые могут посоветовать что-нибудь мне? Объясню проблему по-подробнее. Пользовался AssetRipper/AssetStudio/UnityAssetBundleExtractor/Ill2CPPDumper и прочими утилитами для того чтобы распаковать чужой юнити проект для того чтобы достать модели, ОДНАКО. После того как я достигал своей цели (я так думал) я переносил эти же экспортированные модели обратно в Юнити Эдитор и понимал, что модель в формате (Prefab) теряет связь со скриптами (я пытался их восстанавливать, изучал этот вопрос, ничего не помогает), от этого вовсе не отображается. Помимо всего прочего в самом префабе модели теряются Mesh-Сетки и параметры Live2D Cubism (Parameter Inspector/Parts Inspector etc...) которые не позволяют даже натянуть текстуру на модель. Может кто-то сталкивался с таким на своем пути? Я, конечно, уже потерял надежду, но всё же мало ли здесь найдется знающий человек.

Unity3D, Live2D или как я почти сошел с ума. Помогите Unity, Unity2d, Программирование, 3D моделирование, Gamedev, Разработка, Игры, Длиннопост

Как выглядит здоровая модель со скриптами (1)

Unity3D, Live2D или как я почти сошел с ума. Помогите Unity, Unity2d, Программирование, 3D моделирование, Gamedev, Разработка, Игры, Длиннопост

Как выглядит здоровая модель со скриптами (2)

Unity3D, Live2D или как я почти сошел с ума. Помогите Unity, Unity2d, Программирование, 3D моделирование, Gamedev, Разработка, Игры, Длиннопост

Как выглядит экспортированная модель (с потерянными скриптами)

При попытке восстановить скрипты вручную столкнулся с отсутствием Mesh-сеток (скелета) персонажа, что в последствии приводит к тому, что текстура на персонажа просто не ляжет.

Показать полностью 3
Unity Unity2d Программирование 3D моделирование Gamedev Разработка Игры Длиннопост
0
Партнёрский материал Реклама
specials
specials

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

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

Попробовать

Ремонт Теплый пол Текст
10
akdengi
akdengi
5 месяцев назад
Настольные игры

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры⁠⁠

Я автор настольной игры о программируемых роботах «Битва Големов». Игры, обучающей детей от 6–7 лет. И я хочу рассказать, почему даже 6 простых команд, которые «понимают» роботы, стали для меня головной болью, как я решал проблемы игровой механики и почему в итоге правила игры «распухли» до 16 страниц, но это не страшно.

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

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

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

Понятно, что роботы должны передвигаться, а так как игра про битвы, то сражаться и защищаться. Так как мы играем на поле из клеток, то две команды напрашиваются сами собой: «Вперед» и «Назад». Также роботы должны уметь поворачивать, поэтому еще две команды — это «Поворот Влево» и «Поворот Вправо».

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

И вот уже тут начинаются первые проблемы. На сколько градусов робот должен повернуться? Сможет ли робот ходить по диагонали (у нас поле из квадратных клеток и значит может быть 8 направлений перемещений на клетки вокруг той, на которой он стоит). Надо ли поворачивать робота за один раз только на один фиксированный угол или нужно будет сделать набор команд с разными значениями угла поворота. Будет ли робот поворачиваться на месте, или поворот будет сопровождаться перемещением?

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

Это привело и к уменьшению игрового поля до 4×4 клетки (его можно расширить, но тут немного другая история) и уменьшению числа команд в программе до четырех. Для упрощения предсказания действий соперников (что важно в битве) поворот было решено сделать на месте и на 90 градусов. А чтобы роботы чувствовались неповоротливыми, было решено отказаться и от перемещений по диагонали и от перемещений вбок вправо и влево, а команда «Назад» заставляет робота пятиться, не меняя направление «взгляда».

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

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

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

Решений два: или вводить порядок хода игроков или добавлять правила коллизий. То есть робот мог: а) попытаться встать на клетку, которая была уже занята другим роботом б) попытаться встать на клетку, на которую хотел встать другой робот.

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

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

Также это же правило срабатывало и для еще одного вида препятствий — бочек, которые игроки могли двигать перед собой. В этом случае робот и бочка считался за единый целый «блок» и проверялась возможность передвижения вперед или назад для объекта, который занимал две клетки. А что делать в такой ситуации?

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

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

Камни есть, бочки есть, перемещения есть, коллизии есть. Число таких команд (и их у нас четыре) ограничиваем по две штуки каждого вида, что позволяет с одной стороны достаточно свободно перемещаться, с другой стороны предостерегает игроков просто бегать по игровому полю. Благо число команд может быть уменьшено до трех изначально (когда «мозг» робота бронирован и не повреждается) или уменьшаться с 4 до 2 команд, если игрок выбрал управляющий компьютер без защиты. И докидываем одну карту с командой пустого цикла «Стоять на месте». Также прописываем правила коллизий бочек с другими роботами, краями и камнями.

Но у нас битва. Значит роботы должны атаковать и защищаться. Тут по игровой классике: у нас есть атака или защита и есть ее дальность и сила (число единиц атаки или защиты). Радостно добавляем эти две команды, прописываем два вида оружия с атакой на одну или две клетки и с изначальной силой в две единицы. И в бой?

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

Что будет, если у нас вторая строка команд будет как изображено на рисунке?

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

То есть Синий робот перемещается назад, а Красный в это время выполняет атаку на эту же клетку. Успеет ли Синий отойти или на него падет вся сила оружия Красного? Можно было бы применить те же правила коллизий, как для перемещений, но они не отрабатывают все возможные ситуации. Более того, проблема усугубляется тем, что мы ввели разрушаемые препятствия и атаку более чем на одну клетку вперед. Бочка разрушаема и затронет ли ее атака Красного, если у него оружие «бьет» на две клетки?

Голова идет кругом, поэтому вводим приоритеты видов команд. То есть команды Перемещения будут иметь приоритет выше, чем команды Действия, к которым отнесем «Атаку» и «Защиту». А значит сперва будет происходить перемещение всех роботов игроков, если у них открылась такая команда, а потом уже выполняться «Атака» и определяться уровень разрушений как роботов, так и игрового поля (или защиты от атаки). Не забываем, что в роли компьютера, который это все просчитывают, выступают сами юные игроки.

Также добавляем правило, что единицы атаки в зависимости от типа оружия или полностью вымещаются на клетку перед собой, или равномерно по распределяются по клеткам, куда достает оружие, но только если на самой первой клетке нет робота противника. Через него оружие не пробивает. И прописываем реакцию на «Атаку» для всех видов препятствий. По камням можно стучать сколько угодно, а вот бочки разрушаются и из них может что‑то выпасть, например Бомба, которая сразу же взрывается и наносит урон на 8 клеток вокруг клетки с разрушенной бочкой... Уф.... Защищаться же робот может от урона с любой из соседних клеток, в том числе и от взрыва бомбы.

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

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

Задаем ее свойство наносить урон роботу, если он на наступает на клетку с ней. И реакцию как на команды Перемещения, так и Действия. В нашем случае Красный робот побил воду оружием в первой строке команд, а потом решил искупаться. Вода такая же клетка, поэтому упасть в нее одновременно два робота не смогут. А вот бочка при попадании в воду будет плавать. Но так как вода — это тоже клетка, но с особыми свойствами, то она не разрушаема и проницаема для оружия.

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

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

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

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

Сложно? С одной стороны да, но все новые препятствия и нововведения действуют в рамках изначальных правил двух типов Команд (только добавляется третий вид — команды Бонуса) и реакции на них, правил коллизий и приоритетов. И даже в такой, казалось бы, усложненной форме механика игры продолжает работать и просчитываться даже школьниками начальных классов, не взрывая мозг и им и родителями с преподавателями. Да, отслеживать все перемещения становиться сложней, но и интересней. При этом игра остается динамичной и не скатывается в унылое перемещение роботов друг за дружкой по 5–10 команд последовательно и не растягивается на 40–90 минут, как в похожих играх.

Как даже 6 простых команд роботу могут стать головной болью разработчика настольной игры Настольные игры, Программирование, Робототехника, Разработка, Gamedev, Робот, Инди игра, Обучение, Длиннопост

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

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

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