Разработка многопользовательской игры в дополненной реальности с клиентами на мобильных устройствах. Исполнители: Бердибеков Сержан, КазНУ, бакалавриат 2 курс Туймешов Меирман, КазНУ, бакалавриат 2 курс Канат Айдаров, КазНУ, магистратура 2 курс Руководители: Максим Александрович Городничев, Руслан Мустаков, Георгий Щукин. Летняя школа по параллельному программированию – 13 июля 2012 года ИВМиМГ СО РАН, Новосибирск 13 июля 2012 года
План доклада Концепт игры Постановка задачи Идея решения Модель Реализация Использованные API Механизм поиска клада На серверной стороне На клиентской стороне Тестирование Интерфейс игры Видео Заключение и благодарности
Концепт игры Название «Treasure» - «Сокровище» За основу взята концепция данная изначально – позже пришлось модифицировать для экономии времени. Андройд-телефон в руках игрока - это зонд- сканер позволяющий в одиночку или совместно с другими зондами искать клады, спрятанные администратором. Клад ищется синхронным сканированием радиусов покрытия зондов на основе двух их параметров и одного параметра клада. Игрок нашедший клад набирает очки по примитивной ролевой системе.
Подготовка к постановке задачи За основу взяты элементы теории игр Весь мат. аппарат адаптирован под ситуацию рассматриваемую в теории игр В теории игр результат каждого хода игрока зависит от ответного хода противника, цель игры выигрыш одного из партнеров Игрок (+партнеры) vs Клад
Основные понятия Математическая модель конфликтной ситуации называется игрой Стороны, участвующие в конфликте игроки Исход конфликта выигрыш Выигрыш в нашем случае – нахождение клада (суть) Выигрыш определяется не для игры, но для каждой конфликтной ситуации
Определение игры в контексте теории игр Наша игра – парная (множественная) – антоганистическая (с нулевой суммой) – со случайным ходом – конечная (с конечным числом «стратегии»)
Постановка задачи Необходимо найти решение игры – для каждого игрока выбрать стратегию которая удовлетворяет условию оптимальности Условие оптимальности – Игрок должен получать максимальный выигрыш – Клад должен получать минимальный проигрыш – Должно соблюдаться условие устойчивости
Решение задачи Решение - определение оптимальной стратегии для каждого игрока Важнейшее ограничение теории игр единственность выигрыша как показателя эффективности
Модель Игрок – A = {A 1, A 2, …, A n } Клад – B = {B} Размерность игры n x 1 из A i и B {i=1,2…,n} => a i для A, -a i для B
Платежная матрица AB A1A1 Φ ( S A1, θ A, θ B ) A2A2 Φ ( S A2, θ A, θ B ) …… AnAn Φ ( S An, θ A, θ B ) α i = min Φ (S Ai, θ A, θ B ) α = max α i, i=1,2,..,n β i = max Φ (S Ai, θ A, θ B ) β = min β i, i=1,2,..,n
Геометрическая интерпретация игры v 1 = a 11 p 1 +a 21 p 2
Использованные API Для сериализации – библиотека kryo – Логирование – Apache Log4j – На клиентской стороне – Android SDK – Для отрисовки карты – Google Maps API – Для авторизации - OAuth – IDE – IntelliJ IDEA –
Поиск клада на серверной стороне РАД КЛ РАССТ ИГ-КЛ РАД КЛ = РАССТ ИГ-КЛ * (СИЛ КЛ / СИЛ ИГ ) РАД КЛ = МИН_РАССТ ИГ-КЛ * (СИЛ КЛ / СИЛ ИГ ) SASA SASA
Расстояние обзора H = 100 cm X – [0,360) Угол поворота Y – (-180,180] Угол наклонение по оси Z - (-180,180] Угол наклонение по оси Projection(Y) = tg(Y)*H Projection(Z) = tg(Z)*H Distance = sqrt(Y*Y + Z*Z)
Угол обзора
Интерфейс + Тестирование
Заключение Результаты по проекту Изучены приемы работы с Android SDK Изучены некоторые детали архитектуры ОС Android Освоена работа с протоколом OAuth Построена модель примерно отражающая основное действие игрового процесса Результаты по школе Прослушаны лекции высокого качества по параллельным вычислениям с использованием самых разных подходов Выполнены лабораторные работы, дающие общее представление о каждой из рассматриваемых тем Результаты по поездке Пополнили багаж знаний Хорошо отдохнули
Огромное спасибо! Малышкину В.Э. за хорошую организацию Савуковой В.А. за консультации и обратную связь Марковой В.П. за внимание и заботу Максиму Александровичу за внимательность и androidы всем преподавателям кафедры за суперинтересные лекции столовым НГУ и «Вилка-Ложка» за вкусную еду ярмарке на Ильича за свежий мед участникам школы и пр.