Задать вопрос
@TrollSup

Как реализовать скрипт для детской игры?

Я начал делать скрипт для своей младшей сестры. Она играет в детскую игру "Аватария" и там есть мини-игра, за победу в которой получаешь внутриигровую валюту, и я решил потренировать свои навыки и сделать автоматизацию для нее. Игра выглядит так (прикрепил изображение) Игра состоит из 10 этапов. На каждом этапе есть от двух до 6 защитников. Они могут быть статичными, либо двигаться. Двигаются они в двух видах: либо медленно, либо быстро. В рамках одного этапа их скорость или действие не меняется, т.е. они не меняют своего поведения. Шайба всегда летит с одинаковой силой, игрок может выбрать только траекторию. Самая моя большая проблема при создании такого скрипта - это правильное определение защитников и их положения. Я уже несколько дней пытаюсь это сделать, но у меня получаются кривые боксы, которые дропаются, багаются либо прилипают вообще не туда. Как лучше всего реализовать такой скрипт? Какую математику удара использовать? Я пытался писать на python.

69626d89ac6c9329269119.png
  • Вопрос задан
  • 308 просмотров
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик игр на Unity
    13 месяцев
    Далее
  • Академия Eduson
    Разработчик игр на Unreal Engine
    9 месяцев
    Далее
  • Skillbox
    Профессия Разработчик игр
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Разбей задачу на подзадачи.
0. Выбери инструмент. Если ты используешь opencv, там есть несколько инструментов, начиная с match template. Ключевые вопросы:
  • Меняется ли размер?
  • Меняется ли ориентация?
  • Меняется ли внешний вид объекта?

Возможно, стоит искать только головы - это облегчит задачу, если судить по скриншоту.
1. Выбрав подход, тебе нужно будет подобрать параметры алгоритма, чтобы цели искались увереннее. Добейся того, чтобы на подавляющем большинстве скриншотов объекты детектились корректно.
2. Когда найдешь цели на статичном кадре, решай динамику. Зная позицию объектов на предыдущем и на текущем кадре, сопоставь их, определи скорость и направление движения. Добейся, чтобы программа корректно отслеживала траекторию каждого персонажа.
После первых N кадров можешь попробовать делать предсказания вроде "объект №1 движется справа налево, со скоростью X пикселей в секунду". Это позволит тебе "угадывать" позиции объектов при кратковременных пропусках распознавания, а заодно облегчит сопоставление двух кадров.
3. Дальше уже основная задача: зная позиции и скорости объектов, выбрать наилучший момент и направление шайбы. Тут дело пахнет многомерной оптимизацией, но в принципе можно решить дело перебором.
4. Управление: имитируешь действия мышью/клавиатурой (для питона есть нужные модули). Скорее всего, будет иметь смысл сначала встать на позицию, а потом ждать момента удара.
Тут многое зависит от того, потребуется ли тебе определять позицию своего персонажа. Если он всегда начинает в одной и той же позиции, и его характер движения предсказуемый (постоянная скорость, или известное ускорение/замедление), то можно попробовать обойтись более тупым подходом: "зажать" клавишу, подождать нужное время, отпустить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы