Мой "Hello, world" в Unity

Говорят, первой программой у каждого разработчика должен быть вывод «Hello, world» в консоль. С программой так было и у меня, в далеком 2007 году, когда я поступил в колледж на специальность "Автоматизация вычислительных систем" и писал я эту программу на Visual basic

// в конце статьи бонус

Ваша первая программа была такой же?

Ну а первой моей настоящей игрой стал мой RedGuy :D. Его я и хочу вам сегодня представить!

Так выглядит стартовый экран игры и начало первого уровня
Так выглядит стартовый экран игры и начало первого уровня

Когда я отучился в колледже — я сразу забросил программирование и до сего дня развивался совершенно в другую, но около IT специальность. Я бизнес-аналитик. Однако я постоянно чувствовал тягу к созданию своего ПО, своей игры, своего сайта и вот решил попробовать себя в том, что больше всего из этого увлекает.

Купил курс и начал клепать игры, ни одну не доделывал, просто обучался Unity и C#. А вот на этом платформере решил остановиться и попытаться реализовать всё что приходило в голову.

Какие механики я хотел реализовать?

  • стрельба

  • прыгать

  • конечно же бегать
  • прыгучие поверхности, типа батута

  • лазать по лестницам
  • подбирать монетки и учитывать их в счёт игры
  • убивать монстров и умирать от них
  • иметь количество жизней, которое отнимается при смерти
  • умирать от шипов или каких то еще препятствий
  • сохранять состояние уровня при перезагрузке от смерти, но обновлять при окончании всех жизней
  • переход с одного уровня на другой
  • звуки музыка
Третий уровень в игре (из трёх xD)
Третий уровень в игре (из трёх xD)

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

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

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

Префабы

Пока я сообразил как они работают, как изменяются дочерние/родительские элементы и пока не привык применять изменения на дочке к родительскому префабу — постоянно ловил кучу косяков, чуть не поседел

Нужно найти горячий клавиши для этого действия. Будет попроще
Нужно найти горячий клавиши для этого действия. Будет попроще

Синглтоны

Это то, что я до сих пор не поборол. Реализовал у себя, дебажил 10 часов и достиг нужного эффекта, но в голове всё равно каша

И таких у меня два: 1. Для отслеживания сессий; 2. Для сохранения того, что удалять нельзя
И таких у меня два: 1. Для отслеживания сессий; 2. Для сохранения того, что удалять нельзя

Корутины, долбанные корутины!

Эта хрень прям знатно меня потаскала, пока не заработала как надо. Как и с синглтонами — пока не до конца понял как с этим работать, но понял зачем

Делаю задержку перед загрузкой след уровня
Делаю задержку перед загрузкой след уровня

Самый лютый вызов

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

О самой игре

Бегаешь, стреляешь в монстров, собираешь монеты и идешь от точки респауна до выхода. В игре всего 3 уровня. Игра скорее воплощение всех задумок для получения ОС, исправления багов и тем самым — прокачки себя как разработчика

Основные игровые объекты были префабированы
Основные игровые объекты были префабированы

Первым игроком стала моя дорогая жена. При всей её любви к компьютерным играм, она никогда не играла в платформеры и моя игра стала для неё настоящим вызовом, а для меня — отличным способом собрать ОС от замотивированного, но неопытного игрока

Перепрыгнуть эту яму с шипами было самым сложным для моей жены. Поэтому я установил туда платформу и так её и оставил (но жена все равно смогла провалиться в оставшиеся промежутки и умереть от шипов xD)
Перепрыгнуть эту яму с шипами было самым сложным для моей жены. Поэтому я установил туда платформу и так её и оставил (но жена все равно смогла провалиться в оставшиеся промежутки и умереть от шипов xD)

Весь игровой мир нарисован тайлом с установленными правилами рисования. Это оказалось безумно удобно. Один раз настроил и не паришься

У меня там более 20 правил для всех ситуаций комбинирования тайлов
У меня там более 20 правил для всех ситуаций комбинирования тайлов

Что дальше?

Теперь я хочу попробовать создать похожий платформер с собственным ассетом для игрового персонажа, мира и мобов, наполняющих его, но все ассеты и логику за меня напишут нейросети. Позволю себе лишь минимальные корректировки ну и настройки в самом Unity. Потом добавлю в игру интересные РЕВОЛЮЦИОННЫЕ (xD) механики и кучу пасхалок

Но на самом то деле я уже здесь прибегал к помощи ChatGPT и он очень помогал мне тогда, когда в сообществе помочь не могли

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

Обязательно поделюсь с вами, когда из этого что то получится. Спасибо за внимание!

Поделюсь с вами всеми полезностями что для себя надыбал

Всем пока!

Было интересно?
Ага, спасибо за это чтиво
Шняга шняжная, у меня так даже кот умеет
4747
39 комментариев

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

3
Ответить

Синглтоны именно зло сами по себе)00)

2
Ответить

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

Ответить

Я разобрался с корутинами и начал использовать этот подход всегда, когда надо что то включить/выключить, а потом через N секунд вернуть всё как было. Я что то делаю неправильно? Есть другой способ проще это делать?

Ответить

Надо на DTF доработку, если нажал стрелку вниз - оставь обязательный коммент, а то нихрена не понятно что им не понравилось?

1
Ответить

Это же просто кнопка скачивания)

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

2
Ответить

Сам увлекся Unity и пока тяжко без опыта в программировании, благодарю за материал!

1
Ответить