Incvisitor
Ну да, как-то так.
Тут особо никаких пруфов и не надо - каждый желающий скачивает себе хост и ботов и гоняет.
Der FlugSimulator
Попробуем в ближайшее время закончить текущее обновление и выложу проект. По плану в нем можно будет пострелять по движущимся танкам ботов. Может так станет понятно.
По пунктам
А) куда уж проще, если весь каркас написан.
Б) с этим беда. Алгоритм поведения придётся встраивать в наш проект.
В) проблем нет. Впишем все алгоритмы, выбираешь перед боем
Г) не проблема, по фрагам.
Ren
Что такое "ЛУ"? У меня есть своя версия, но она смешная ))
Ren
> напрямую пересекается с данным конкурсом.
Прости, но нет, не пересекается. Во первых, никакой "конкурсности" не вижу пока.
Во вторых, у тебя вполне может быть хороший проект, но даже потому что я понял, очень сложный.
А я же пытаюсь всё свести к 3-4 простым функциям.
Der FlugSimulator
> Во вторых, у тебя вполне может быть хороший проект, но даже потому что я понял, очень сложный.
Плюс придётся писать на том ЯП, какой предусмотрен в проекте.
Der FlugSimulator
Если брать за основу то, что у тебя в п.0, я бы ещё упростил.
Для начала убрал бы построение маршрута и переделал расчёт видимости.
Дельту времени сделал бы фиксированную, скажем, 1/30 сек.
Входные данные — координаты и направление ствола для себя и для всех соперников/соратников, которые в зоне видимости (тут и спрятан расчёт видимости).
Зоной видимости можно считать всё, что не заслоняется геометрией сцены в пределах 360 гр. вокруг или, например, 90 гр. впереди.
Снаряды не видны, но мы "слышим" факт любого выстрела, если противник в зоне видимости — знаем направление ствола.
Так же "слышим" факт рождения ресурса и факт его взятия кем-либо, это можно ещё упростить просто знанием факта наличия ресурса на точке рождения.
Координаты этих точек получены однократно при старте, как и вся геометрия карты.
Количество снарядов в запасе и готовность к выстрелу (учитывается время перезарядки).
Факт урона или гибели кого-либо (и от кого прилетело).
Отправляем на сервер желаемое направление и скорость движения, сервер ограничит скорость предельной и остановит в случае коллизий.
Желаемое направление вращения ствола (скорость фиксирована) и угол, при котором нужно остановить вращение (это для точности на случай, когда через 2 тика ещё рано, а через 3 уже поздно).
Желание выстрелить (сервер даст выстрел, если запас не нулевой и перезаряжено).
Добавлено:
Лучше видимость своих сделать постоянной, типа есть связь. И расчётов меньше.
Mikle
Да, у меня во многом, всё так и есть, как ты предложил, и чуть попозже отпишусь о конкретике.
Я многого не описал в нульпосте, дополню с картинками.
Mikle
> Лучше видимость своих сделать постоянной, типа есть связь. И расчётов меньше.
Если будет несколько "своих" юнитов, ты их итак будешь видеть. Они же твои.
Ну т.е. не имеет смысл делать изолированные dll в рамках одной комманды.
Mikle
> убрал бы построение маршрута
Так это опциональная фича. Ехать можешь куда угодно.
Можешь его не запрашивать. Можешь пользоваться своим построителем маршрута.
Я её включил как раз для простоты, чтобы в клиент не тащить либы навигации. Впрочем никто не запрещает, если серверная не устраивает.
> Отправляем на сервер желаемое направление и скорость движения, сервер ограничит скорость предельной и остановит в случае коллизий.
Т.е. ты хочешь пакман-физику с мгновенным поворотом? А башня?
Потому как было такое мнение
Hypnoise
https://gamedev.ru/projects/forum/?id=275396&m=5700065#m2
> Поворот танка и башни не должны быть мгновенны
Я тоже его сторонник, но готов на любые компромиссы.
Der FlugSimulator
Так я же написал:
> Желаемое направление вращения ствола (скорость фиксирована)
В смысле скорость поворота башни фиксирована.
А движение — да, как в Пакмане, раз уж нет инерции, так и должно быть. Это же не танк, а круглый робот, он может ехать в любую сторону, не поворачивая корпус.
> Так это опциональная фича. Ехать можешь куда угодно.
Я понимаю, я просто всё необязательное как-то отделил бы, чтобы не загромождать обязательные поля, свести их к минимуму.
Mikle
> В смысле скорость поворота башни фиксирована.
> А движение — да, как в Пакмане, раз уж нет инерции, так и должно быть.
Ну почему-же. Инерция тут вообще непричем.
Тут либо есть понятие "поворот", а машина едет вперед-назад, либо поворота нет, а движение происходит по принципу летающей тарелки.
Der FlugSimulator
> движение происходит по принципу летающей тарелки.
Классный термин - сразу понятно.
stratego
> Классный термин - сразу понятно.
Это в соседнем конкурсе происходит. Берёшь любую игру от Incvisitor - вот тебе и референс ))
Дельта времени однозначно фиксированная. И всё измерять в количестве кадров (тиков), про миллисекунды вообще забыть.
Остальной код логики хорошо бы сделать настолько простым и коротким, чтобы можно было легко переписать его на любой язык (чтобы было удобнее отлаживать).
Поэтому голосую за:
- полную видимость без тумана войны
- отсутствие инерции
- отсутствие понятия "поворот башни", т.е. стрелять можно мгновенно в любой выбранном направлении (само собой, не чаще 1 раза в N тиков)
romanshuvalov
> отсутствие понятия "поворот башни", т.е. стрелять можно мгновенно в любой
> выбранном направлении
не есть хорошо... но возможно будет правильным решением.
romanshuvalov
> полную видимость без тумана войны
Но с укрытием за препятствиями, надеюсь?
> стрелять можно мгновенно в любой выбранном направлении
Тоже вариант, но тогда направление выстрела должно быть неизвестно соперникам, иначе весь ИИ сведётся к уворачиванию от выстрелов.
Mikle
> Но с укрытием за препятствиями, надеюсь?
Да. Я бы предложил просто поле из неразрушаемых блоков размером 32х32 или 64х64, примерно как в battle city.
> направление выстрела должно быть неизвестно соперникам
Я не очень поняло, что имеется в виду. Прицел (дуло) у игроков пусть отсутствует, снаряд может быть выпущен в любом направлении, а когда он выпущен - тогда его направление сразу же становится известно сопернику.
Кроме обычных снарядов ("пуль") предлагаю еще что-то вроде медленно летящего энергетического шара или фаерболла, большого размера, суть которого - ненадолго ограничить передвижение противника.
Тема в архиве.