Георгий | Unity Developer — Core & Gameplay

UTC+7 | 📍 Удаленно | Full-time / Part-time / Project-based
✉️ Mail: goset33pred@gmail.com
💬 Telegram: t.me/GosetTM
🐙 GitHub: github.com/goset33
💼 Резюме: Резюме


TD100

Заказчик: DreamShot
Жанр: 3D Top-Down Tower Defense
Моя роль: Unity Developer
Команда: я + 1 моделер
Сроки: 01.2026 — 04.2026
Стек: Unity, C#, Git, Input System, UI Toolkit, VFX Graph, MessagePack, Unity Localization
Платформа: Android (+ Windows-билд в ходе разработки)
Контент: 15 уровней / 3 башни / 6 врагов / локализация RU-EN
Билд: drive.google.com
Code Examples: gist.github.com


Геймплей TD100








Скриншоты TD100

Об игре

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

Что я сделал

  • Основной Core-геймплей: башни, враги, система волн, уровни
  • Нелинейная прогрессия сложности уровней + 3 сложности одного уровня
  • UI и взаимодействие с ним через UI Toolkit
  • Магазин и система прокачки башен
  • Система локальных сохранений через MessagePack
  • Визуальные эффекты и частицы на VFX Graph
  • Локализация на русский и английский

Технические решения

Оптимизация

  • Проблема: Игра фризила при первой за сессию постройке башни, первом выстреле и первом взрыве ракеты.
  • Решение: Система Object Pooling для башен, врагов, ракет а также Prewarmer для прогрева префабов, шейдеров и эффектов до старта игры.
  • Эффект: Фризы были убраны, а все дальнейшие спавны на уровне происходят без лишних аллокаций памяти.

VFX

  • Проблема: Обычные Particle System просчитываются на CPU, сильно влияя на FPS игры.
  • Решение: Эффекты на VFX Graph считаются и рендерятся сразу на GPU, что лучше для производительности. Кроме того, на нем возможно реализовать более сложные эффекты.

Mega Quiz: Games

Жанр: Trivia
Моя роль: Unity Developer
Команда: Я + 1 геймдизайнер
Год: 2025
Стек: Unity, C#, Git, Unity Localization, UI Toolkit, PluginYG 2.0, R3, NPOI
Платформа: WebGL
Контент: 4 квиза / 400+ вопросов / локализация RU-EN
Билд: yandex.ru
GitHub: github.com

Геймплей Mega Quiz: Games







Скриншоты Mega Quiz: Games

Об игре

Mega Quiz: Games представляет собой интерактивную казуальную викторину. Игрок проходит квизы по различным представленным играм, получая за это валюту и опыт. Опыт прокачивает этот квиз, постепенно повышая его уровень. Чем выше уровень квиза, тем сложнее набор вопросов. Валюта же используется в лидербордах Yandex Games, показывая, насколько хорошо прокачался игрок.

Вопросы квизов бывают разных уровней сложности. Также поддерживаются разные типы вопросов: стандартный, с картинкой, “счетчик”, на соединение пар. На высоких уровнях сложности квиза появляется таймер: либо общий на весь квиз, либо индивидуально на каждый вопрос.

Что я сделал

  • Реализовал Core механики: типы вопросов, случайные вопросы из списка и случайная очередность, показ верного ответа, система жизней
  • Система чтения и сериализации вопросов из Excel таблиц
  • Кастомные UI Toolkit элементы ради большего контроля над UI
  • Экран загрузки с динамическим прогресс-баром
  • Использовал Yandex Games SDK для показа рекламы, лидербордов, облачных сохранений
  • Подключил Яндекс Метрики для сбора статистики игры
  • Локализация на русский и английский языки через Unity Localization

Технические решения

Работа с данными

  • Проблема: Хороший квиз должен иметь сотни разных вопросов с несколькими вариантами ответа. Хранить их все в виде ScriptableObject нецелесообразно из-за большого объема данных. Можно банально запутаться в конфигах.
  • Решение: Система, которая сможет парсить классические Excel таблицы при помощи библиотеки NPOI и сразу десериализовывать их в объекты вопросов. Сами таблицы будут храниться в папке StreamingAssets самого билда.
  • Эффект: Игра в рантайме парсит таблицы и подгружает вопросы в память. Такой подход очень удобен при масштабировании игры и увеличении количества вопросов.

Castle Adventure

Жанр: 2D Platformer
Моя роль: Unity Developer
Команда: один я
Год: 2023
Стек: Unity, C#, Git, Unity uGUI, Unity Localization, SimpleLocalization, DOTween
Платформа: Android, Windows
Контент: 11 уровней / 4 врага / 1 босс / 2 типа атаки / локализация RU-EN
Билд: drive.google.com


Геймплей Castle Adventure








Скриншоты Castle Adventure

Об игре

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

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

Что я сделал

  • Контроллер игрока: движение, стрельба, взаимодействие с миром и врагами
  • Адаптация управления игрой между платформами — экранные кнопки для мобильных устройств и клавиши для ПК
  • UI игры и взаимодействие с ним через Unity uGUI
  • Система локализации на основе плагина SimpleLocalization локализует игру на русский и английский через таблицы из Google Sheets

Технические решения

Оптимизация

  • Проблема: Unity не имеет встроенного Occlusion Culling для 2D игр, поэтому игре приходится обрабатывать лишние объекты за областью видимости игрока.
  • Решение: Кастомная система OcclusionCulling2D, которая ищет всех врагов на сцене, проверяет, какие из них не видны игроку (через пересечение их Bounding Box с областью видимости камеры) и отключает их.

Искусственный интеллект

  • Проблема: Врагам необходимо обнаруживать игрока в любом направлении для преследования. Рассчитывать это через простое расстояние между объектами нельзя, так как тогда мы не учитываем возможные препятствия на пути между игроком и врагом.
  • Решение: Создание Raycast’ов из врага по окружности на равных угловых интервалах. Каждый Raycast проверяет столкновение с препятствиями и игроком.
  • Эффект: Враги получают обзор на 360 градусов для обнаружения игрока, учитывая препятствия на их пути.

Локализация

  • Проблема: Хранение таблиц переводов игры неудобно в билдах, отсутствует возможность динамически менять строки без пересборки игры.
  • Решение: Интеграция плагина SimpleLocalization с Google Sheets. Система скачивает CSV файлы из Google Sheets, парсит их и загружает в словарь. Локализованные строки можно менять прямо с сайта без пересборки.

Что бы улучшил

  • Вынес бы все параметры игрока, врагов, боссов в ScriptableObject-конфиги.
  • Заменил большинство использований статических переменных на event-based структуру.
  • Переделал логику босса на явную машину состояний.
  • Разделил бы UI и игровую логику по отдельным скриптам и связал их через ивенты.

A* and Map Generation Demo

Цель демо: Разработать механику генерации 2D-карты при помощи шума Перлина и механику поиска пути на этой карте по алгоритму A* Pathfinding
Год: 2024
Стек: Unity, C#, Cinemachine, Input System, процедурная генерация, шум Перлина, A* Pathfinding
Билд: drive.google.com


Что реализовано

  • Следование камеры за игроком с помощью плагина Cinemachine
  • Процедурная генерация карты на основе шума Перлина
  • Поиск и построение пути по алгоритму A*
  • Движение игрока по построенному пути