Pull to refresh

Comments 19

Не пойму, почему у Вас где-то сделана проверка на null при GetComponent, а местами нету.
А в целом, интересная статья, почерпнул немного для себя ;)
Спасибо!
Проверка на null стоит в тех местах, где идет получение компоненты BasicTankControls. А такой компоненты у объекта может и не быть, допустим, если танк стоит для красоты (когда тестировал выстрелы). RequireComponent здесь почему-то не работает, пытался.
Объекты с тегом «Tank» подразумевают обязательное наличие TankBehavior, поэтому проверку не ставил. Тут полагаюсь на разработчика (себя).
Понимаю, отмазка слабенькая, но проект на серьезность и не претендует :)
Отправилось рано. Не работает потому, что компонент уже висит на объекте. Если его удалить и повесить, то все зависимости будут повешены корректно и сама среда будет сопротивляться их удалению без удаления TankBehavior.
Про этот проект не знал. Но я и на scala не программировал, и пока не собираюсь.
Unity3d же была выбрана, т.к. здесь очень удобно реализовано управление объектами — через поведения. Когда в университете занимался агентами, мы использовали среду JADE, там агенты также управляются поведениями.
Так я же не с целью обидеть написал. Наоборот, сделать программируемый танко-дром на Юнити — это клёво.
Популярность и низкий порог вхождения в C# в связке с возможностями по визуализации Unity3D может привлечь к вашему начинанию много энтузиастов.

P.S. Scalatron — это всё же не совсем то. Robocode ближе к теме.
Да не, я и не обижался :)
Насчет привлечения энтузиастов — очень надеюсь.
А вот за Robocode большое спасибо! Обязательно его поковыряю.
Незакончено :(

Что в итоге должно получиться? battle city? Чем данный метод (с агентами) отличается от других? (примернительно к играм)
Да, понимаю, что незакончено. Времени свободного не так много, как хотелось бы.
В итоге (в идеале конечно) хотелось бы запустить и смотреть, как по полю боя ползают танки и пытаются друг друга уничтожить (или защитить / разрушить штаб).
Не совсем уверен, что правильно понял вопрос про «чем отличается от других». Попытаюсь ответить, поправьте, если не прав.
Обычно в играх (в том же Battle City) танки, ползающие по полю, действуют либо совсем случайным образом, либо по какому-нибудь примитивному алгоритму. Вот статья, примерно описывающая поведение ботов в игре. Сейчас конечно все сильно продвинулось, и есть игры с довольно неплохим ИИ. Данный метод как раз позволит узнать, как действует бот, какие модели поведения более / менее эффективные и т.д.
Опять же, проект не претендует на серьезность, писал исключительно для себя. Решил поделиться, вдруг кому интересно будет.
Не поверите но я два месяца назад пытался сделать почти то же самое только платформа Tululoo Game Maker.
В общем платформа кривая поэтому проект закрыл, но добавить интеллект танкам очень хотел, были тоже наполеоновские планы, чтобы противник окружал тебя, слышал если ты движешься недалеко от него…
Прекрасно вас понимаю :)
привет, ответь плиз в личке )
Привет! ответил
GameObject[] tankObjects = GameObject.FindGameObjectsWithTag("Tank"); List<TankData> tanksData = new List<TankData>();

Мне кажется, искать объекты по тегам и пересоздавать список танков каждый тик, да еще и для каждого агента — жестоко в плане производительности. Я бы подумал над способом кэширования этих данных.

Конечно, обычно premature optimization не стоит того что бы тратить время, но тут уж очень в глаза бросилось :)
Да, спасибо. И правда толсто получилось :)
Конечно, хранить список игроков надо в отдельной сущности. Нормальные люди так бы и сделали. Исправлюсь
Ага. Какой-нит более-менее глобальный список пойдет.
Вспомнил сразу про старый добрый Террариум, поностальгировал.
Sign up to leave a comment.

Articles