Клон игры Battle City (танчики) на Unity
| |
8Observer8 | Дата: Четверг, 17 Декабря 2015, 16:24 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| Всем привет,
Речь пойдёт об этой игре: https://ru.wikipedia.org/wiki/Battle_City
Я хочу начать с начала делать клон этой игры, в которую вы можете сыграть, например, вот здесь.
Первое, что мне хочется узнать, случайно ли движение врагов? Каково ваше мнение?
Я не могу понять какой алгортм у врагов и как человеку, который сделал игру по ссылке выше, удалось так точно воспроизвести поведение врагов из оригинальной игры?
Сообщение отредактировал 8Observer8 - Четверг, 17 Декабря 2015, 16:39 |
|
| |
Jon® | Дата: Четверг, 17 Декабря 2015, 16:54 | Сообщение # 2 |
Painter
Сейчас нет на сайте
| И зачем делать копию)
|
|
| |
8Observer8 | Дата: Четверг, 17 Декабря 2015, 17:03 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Цитата Jon® ( ) И зачем делать копию) В плане самообучения. Хочу повторить максимально близко. Тот же парень смог повторить.
Добавлено (17 декабря 2015, 17:03) --------------------------------------------- Надеюсь, меня не забанят из-за ссылки на хабр: http://habrahabr.ru/post/142126/
Там есть описание поведения врагов в разделе Интеллект противников
Цитата Существует три периода поведения танков: сначала они движутся хаотично, затем они преследуют игроков, и, в конце концов, начинают атаковать штаб. Длительность первых двух периодов одинакова и равна восьми периодам респауна. Т.е., поделив время респауна на 8, мы получим длительность в секундах (или, умножив на 8, получим то же самое время в кадрах) — например, для первого уровня и одного игрока это будет 23 секунды. Третий же период будет длиться до тех пор, пока счётчик секунд не обнулится (достигнув 256), и цикл периодов не начнётся заново.
Существует функция смены направления, которая при вызове в первом периоде поведения меняет направление танка случайным образом, во втором периоде даёт танкам с чётными номерами команду двигаться к первому игроку, с нечётными — ко второму, а в третьем даёт команду двигаться в сторону штаба.
При пересечении вражеским танком границы тайла (когда обе коодринаты становятся кратны восьми), существует вероятность 1/16, что для танка будет вызвана эта функция. Если же координаты танка не были кратны восьми, либо же не была вызвана функция смены направления, и при всём этом танк упирается в препятствие, то с вероятностью 1/4 произойдёт следующее: танк сменит направление на противоположное, если хотя бы одна из координат не кратна восьми, в ином случае танку будет дана команда смены направления.
При выполнении команды смены направления происходит несколько другое: с вероятностью 1/2 вызывается описанная выше функция, иначе с равными вероятностями циклически берётся либо предыдущее, либо следующее направление из списка: вверх, влево, вниз, вправо (т.е. танк поворачивается либо по часовой, либо против часовой стрелки).
Сообщение отредактировал 8Observer8 - Четверг, 17 Декабря 2015, 17:06 |
|
| |
seaman | Дата: Четверг, 17 Декабря 2015, 23:02 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Ты ж уже делал ее для обучения. Снова? При буквальном повторении этого алгоритма - танки у меня вели себя неадкватно. Как я понимаю из-за того, что там все расчеты дискретны - по пикселям и столкновения определяются не коллайдерами, а как-то иначе. Вот тут определяется столкновение: else if (!tank.isPlayer && frontTile.isBarrier&& rand() % 4 == 0) У меня же все на коллайдерах и расчеты идут float. Пришлось отходить от оригинального алгоритма, правда не очень сильно. ЗЫ. НЕ уверен, но возможно на новогодних каникулах я все же себя заставлю снять урок по ИИ в танчиках, тем более, что все уже готово, даже текст.
Сообщение отредактировал seaman - Четверг, 17 Декабря 2015, 23:09 |
|
| |
8Observer8 | Дата: Четверг, 17 Декабря 2015, 23:21 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Цитата seaman ( ) Ты ж уже делал ее для обучения. Снова? Да, я хочу с нуля начать, так как старый код проще начать заново, но уже с новыми знаниями в C#. Кстати, в вашем коде как раз используются нужные конструкции.
Цитата seaman ( ) При буквальном повторении этого алгоритма - танки у меня вели себя неадкватно. Мне нужно его воспроизвести, но с учётом специфики движка. Найти способ, как это сделать. Я думаю, что это должно быть возможным.
Цитата seaman ( ) Пришлось отходить от оригинального алгоритма, правда не очень сильно. Я постараюсь, чтобы получилась точная копия оригинальной игры. Это мой принцип.
Цитата seaman ( ) НЕ уверен, но возможно на новогодних каникулах я все же себя заставлю снять урок по ИИ в танчиках, тем более, что все уже готово, даже текст. Пожалуйста, запишите, так как в интернете кроме статьи с хабра ничего нет. Пусть ваша версия ИИ будет отличаться от оригинала и будет упращённой, но это лучше, чем ничего.
Сообщение отредактировал 8Observer8 - Пятница, 18 Декабря 2015, 00:03 |
|
| |
TLT | Дата: Пятница, 18 Декабря 2015, 00:07 | Сообщение # 6 |
Сейчас нет на сайте
| 8Observer8, движок оригинальной игры на NES давно дизассемблирован и прокомментирован моим знакомым, который знает об игре всё. Его сырец с комментариями доступен в сети. Если хочешь, то дам мыло или другие контакты, чтобы ты мог задать ему вопрос и он тебе ответил про самые каверзные детали оригинала.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
8Observer8 | Дата: Пятница, 18 Декабря 2015, 00:13 | Сообщение # 7 |
заслуженный участник
Сейчас нет на сайте
| Цитата TLT ( ) Если хочешь, то дам мыло или другие контакты Да, конечно, хочу! Я не буду его сильно мучить вопросами.
|
|
| |
|