🎮 Playtest-ready version of the technical test task for a Unity Developer position.
This project showcases my implementation of all the required features along with extra polish:
✅ UI (built with MVP pattern)
✅ Visual improvements with DOTween
✅ Custom logic for loot, healing, inventory, and combat
📌 Pull Request with all changes:
👉 View on GitHub
🇺🇦 Гравець потрапляє у гру, де може:
- Вийти на арену Dungeon та вбивати скелетів
- Збирати з них лут (книги, зілля)
- Повертатися на Surface та продавати лут трейдеру
Зараз гравець може зібрати нескінченну кількість предметів в інвентар, потрібно зробити так, щоб кожен предмет мав свою вагу і встановити максимальну вагу яку може переносити Entity. Якщо предмет вже не влізає - він не підбирається. Поради
- Можливо потрібно змінити саму логіку IStorage і додати підтримку ваги, перевірку чи може влізти предмет туди.
- Логіку як предмети збираються можна знайти в LootInteractable та в GatherLootEntityBehaviour.
Якщо зібрати предметі під час перебування в Dungeon, то при переході на поверхню вони всі пропадуть. Тому ми навіть не можемо їх продати продавцю.
Поради
- Місце, де повинна зберігатись інформація про предмети гравця повинно знаходитись в GlobalSceneContext.
- Краще всього створити окрему модель (за прикладом PlayerCameraModel) - де зберігається інформація про предмети які є у гравця.
Зараз не зрозуміло чи гравець взагалі підібрав предмети, потрібно на екрані відобразити скільки предметів зараз несе гравець, щоб було видно і коли він продає ці предмети.
Поради
- Для відображення UI краще використовувати якийсь з шаблонів MVx для проектування інтерфейсу - наприклад MVP. 🧩 MVP-підхід для реалізації інтерфейсу.
Зараз не зрозуміло чи вороги взагалі наносять пошкодження гравцеві. Потрібно відобразити HealthBar на UI. Здоро’я не повинно скидуватись при переході на поверхню
Поради
- Здоров’я гравця зберігається в його IDamageable
Зараз нікуди не начислюються монети, які отримує гравець коли продає предмети продавцеві. Потрібно створити баланс гравця і також відобразити його на UI.
Поради
- Trader повертає суму цін предметів в інвентарі
Гравець збирає зілля з мертвих ворогів, потрібно додати можливість їх використання для лікування.
Поради
- Використання зілля краще зробити як на UI кнопку, так і на кнопці на клавіатурі використовуючи NewInputSystem.
- В ідеалі відобразити скільки HealPotion у тебе залишилось.
- Зараз при взаємодії з продавцем ти продаси всі предмети, що є в інвентарі, можливо потрібно продавати тільки книги
Зараз там в 100% випадках випадає одна книжка і один HealPotion. Потрібно додати рандом і шанс випадіння якогось одного предмету, вказаного в списку.
Потрібно додати місце, куди можна витратити гроші, які накопив гравець, продаючи предмети. Потрібно біля трейдера поставити прилавок з зіллями, при взаємодії з якими можна його купити.
На SurfaceScene стоять коробки, з якими не можна взаємодіяти. Потрібно при взаємодії з ними направити гравця, щоб він атакував коробки та щоб коли вони розбились то з них випав лут.
Поради
- Така логіка вже є у ворогів
- Вивчити документацію з плагіна Zenject
- Вивчити документацію по Addressables — в проекті потрібно їх використовувати
- Вивчити документацію по самому проекту
- 🎯 MVP architecture for UI
- 💥 DOTween for animations
- 🧠 Modular code for easy testing and scaling
- 🔄 Scene persistence via Zenject
GlobalSceneContext - 🧪 Fully working prototype ready for playtest
💡 If you're a recruiter or lead developer — feel free to explore the pull request to check my code structure and decisions.
