Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игрушка для программистов, Молодёж, предлагаю поиграться... 
:(
    Опции темы
Кнером
Дата 3.8.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Fighter, мне не понятно, как мой мостр видит и определяет, что это враг.
Если они находятся на одной линии, тогда они друг друга видят и можно стрелять?
Или когда подходят близко друг к другу и находятся на одной линии?
PM MAIL WWW ICQ   Вверх
Никто
Дата 3.8.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата

Немножко не понял смысл вопроса. Но скажу, что данная игра создается под 2D, а поэтому особо большого набора команд у монстров нет (на самом деле два прямоугольника монстрами нельзя назвать). Монстры могут перемещаться влево вправо и стрелять, вот и все.

Ходить,спать,есть,пить.
Цитата

Конечно это игра для программистов.

Тогда зачем делать ИИ.Другое дело-сделать минимальный ИИ.Так это относительно просто.Только я не пойму как будут проходить бои,по реакции или как.
--------------------
   
PM MAIL   Вверх
Fighter
Дата 4.8.2006, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Ладно, думаю что мне все-таки придется самому написать ИИ и выложить его исходник вместе с самой игрой. Вот только тогда наверное всем будет все ясно. Но я еще раз повторю, что графики у меня там фактически никакой нет, я писал это все на Delphi и если говорить чисто программистским языком, то у меня на форме каждый враг - это Shape, снаряды - тоже Shape.
PM MAIL   Вверх
Кнером
Дата 4.8.2006, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Цитата(Fighter @  4.8.2006,  02:35 Найти цитируемый пост)
мне все-таки придется самому написать ИИ

Громко звучит...  smile 

Цитата(Fighter @  4.8.2006,  02:35 Найти цитируемый пост)
Но я еще раз повторю, что графики у меня там фактически никакой нет

Это не важно. Эти мульки в последнюю очередь.

Цитата(Fighter @  4.8.2006,  02:35 Найти цитируемый пост)
писал это все на Delphi

А разница не столь велика. Ты пиши, а мы разберемся.  smile 

Ты просто привиди пример своего робота и боя с противником.
PM MAIL WWW ICQ   Вверх
Никто
Дата 4.8.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Я могу дать один вариант ИИ на псевдокоде,я пишу на C.Поэтому придется самому переводить.Только мне надо знать.Как монстр определяет пулю,скорость пули,какая скорость самого монстра.
--------------------
   
PM MAIL   Вверх
Кнером
Дата 4.8.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Никто, а как определяет монстра знать не нужно?

Это сообщение отредактировал(а) Кнером - 4.8.2006, 13:53
PM MAIL WWW ICQ   Вверх
Sardar
Дата 4.8.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Способность юнитов избегать огня и нападать толпой это одно, а вот проводить организованный бой целой армией в нескольких местах одновременно, "задумываясь" о целях и приоритетах немного другое. Пока не врубаюсь как описать формально (спрограммить) второе...


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Кнером
Дата 4.8.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Sardar, второе не сильно отличается от первого. Можно взять аналог из реальной жизни. Например как в армии, только по чинам не знаю, не служил. Например, у каждой группы, должен быть начальник. Начальник отвечает загруппу, а группа в свою очередь подчиняется командам своего начальник. Т.е. если напали на вторую группу, первые не придут на помощь если не прикажет начальник. Начальники общаются между собой так же как и в первом случаи простая группа нападающих.

Вариант 1. Просто нападающая группа.
В ней, каждый может общаться с любым. Если напали, то идут в бой все. Команды может быть будет отдовать тот у кого есть приоретет. Или кто как может.

Вариант 2. С командиром.
Командиры решают куда идти, как нападать, кому помогать. Таким образом "армия" будет иметь тактику.
Одни заходят с лева, другие с права. Третьи ждут. Если у первого проблемы, то командир третьей грппы отдает приказ помочь первым и направляет.

-

Ребята, приведите код на Си или дельфи, чтобы я понял как писать код и работать с СДК.
Мааааленький примерчик.
PM MAIL WWW ICQ   Вверх
Никто
Дата 4.8.2006, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата

Никто, а как определяет монстра знать не нужно?

Конечно,нужно.
Цитата

Способность юнитов избегать огня и нападать толпой это одно, а вот проводить организованный бой целой армией в нескольких местах одновременно, "задумываясь" о целях и приоритетах немного другое. Пока не врубаюсь как описать формально (спрограммить) второе...

Пока планируется,что по одному монстру на каждой противостоящей стороне.Потом,когда все это получится,переходить на отряды.При этом каждый монстр должен отвечать за свою функцию.Пользователь сам определяет тактику.

Это сообщение отредактировал(а) Никто - 4.8.2006, 14:25
--------------------
   
PM MAIL   Вверх
Sardar
Дата 4.8.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Кнером @  4.8.2006,  12:53 Найти цитируемый пост)
В ней, каждый может общаться с любым. Если напали, то идут в бой все. Команды может быть будет отдовать тот у кого есть приоретет. Или кто как может.

Человек кинет пару дешёвых, но сильно бронированных юнит на эту ораву, те бросяться, всю ораву накрываем чем нибудь мощным (ракетным залпом например). Не пойдёт...

Цитата(Кнером @  4.8.2006,  12:53 Найти цитируемый пост)
Командиры решают куда идти, как нападать, кому помогать. Таким образом "армия" будет иметь тактику.

А если командира завалят, то остальные встанут? Ну допустим будут адоптированны другим командиром, а я возьми их всех и замочи, армия встала? Также как командиру управлять юнитами? Будут паттерны вносимые один раз человеком, не будет адоптации к изменяемой ситуации. С анализировав все паттерны строиться "скрипт" (заметь, не ИИ, а скрипт) который с 100% вероятностью выигрывает.

ИМХО тут каждый юнит должен обладать своей логикой + глобальная карта приоритетов, где каждый юнит высчитывает свою "пользу" (например нет смысла дёргаться если время похода слишком долгое или растратим топливо, или точно не известно нет ли засады). Логика строиться из набора выражений, например для нового юнита сброшеного с воздуха: если приоритет текущей позиции всё таки выше, значит опросим всех рядом, выберем наиболее эффективного для нас противника (ракетница выберет большого монстра, не окружённого нашими юнитами ближнего боя). Катим туда, стреляем, по пути сравниваем что же сейчас сделать более эффективней (в расчёт принимаеться всё, время на смену боеприпасов, поездка, "жизнь" врага (не дёргаться если его прямо сейчас добьют)). Таким образом будет один большой организм как муравьи, эффективно уничтожающие любого противника, подстраиваясь в принципе под любую тактику в лоб. А вот стратегически думать, брать "крепость", вычислить выгоду не внося это всё заранее паттерном в ИИ, вот это я не врубаюсь как сделать, как начать даже (описать мысль).


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Fighter
Дата 6.8.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



Цитата(Никто @  4.8.2006,  12:50 Найти цитируемый пост)
Я могу дать один вариант ИИ на псевдокоде,я пишу на C.Поэтому придется самому переводить.Только мне надо знать.Как монстр определяет пулю,скорость пули,какая скорость самого монстра.


Ты на псевдокоде. Ну, ты тогда выложи сюда. Может быть кто-нибудь увидит, посмотрит и возьмется за твой псевдокод. 
Вообще, можно непосредственно по SDK вопросы задавать, непосредственно о написании, а то тут одни только общие вопросы.

Добавлено @ 01:30 
Да, интернет у меня в ночное время, так что извините, отвечаю тогда когда вылезаю (иногда даже не доживаю до интернета) - но отвечаю сразу же как оказываюсь в интернете, так что если я сегодня не отвечал - значит я и не вылезал.
PM MAIL   Вверх
Кнером
Дата 8.8.2006, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тОрмоз
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 24.5.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



Цитата(Sardar @  4.8.2006,  14:31 Найти цитируемый пост)
Человек кинет пару дешёвых, но сильно бронированных юнит на эту ораву, те бросяться, всю ораву накрываем чем нибудь мощным (ракетным залпом например). Не пойдёт...

Этот вариант в начале темы предлагали. Я его просто еще раз озвучил. Предложи свой вариант.  smile 

Цитата(Sardar @  4.8.2006,  14:31 Найти цитируемый пост)
А если командира завалят, то остальные встанут?

Вообще, напримере армии, следующий по званию становится командиром. Убили, следующий и т.д.

Цитата(Sardar @  4.8.2006,  14:31 Найти цитируемый пост)
ИМХО тут каждый юнит должен обладать своей логикой + глобальная карта приоритетов, где каждый юнит высчитывает свою "пользу" (например нет смысла дёргаться если время похода слишком долгое или растратим топливо, или точно не известно нет ли засады).

В армии как раз учат не думать, а точнее отчают. Там учат выполнять приказы. Сказали бежать, в атаку, значит ты должен бежать, а не размышлять о том, сколько бежать, хватит ли боевого запаса и т.д.

Цитата(Sardar @  4.8.2006,  14:31 Найти цитируемый пост)
Катим туда, стреляем, по пути сравниваем что же сейчас сделать более эффективней

Это кто решает? Сброшенный юнит, все или всё таки командир?

PM MAIL WWW ICQ   Вверх
Sardar
Дата 8.8.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(Кнером @  8.8.2006,  09:06 Найти цитируемый пост)
Предложи свой вариант. 

Нету идей smile  Чую что ИИ должен быть массой параллельных процессов решающих каждый свою функцию, согласованно с другими. В каждый момент можно сделать массу действий, наиболее перспективные из них выбираються и отрабатываються. "Перспективность"  высчитываеться от встроенных задач (уничтожить противника, захватить ресурсы и т.д.) и "спускаеться" к более конктретным действиям выфильтровывая действия которые принесут не большой результат. При этом мир динамический, всё двигаеться, а просчитывать всё с самого начала при каждом шаге не реально, юнит встанет smile  Пока не пойму как это реализовать...

Цитата(Кнером @  8.8.2006,  09:06 Найти цитируемый пост)
Вообще, напримере армии, следующий по званию становится командиром. 

Тут свои ньюансы, в коде это значит они будут обладать в принципе идеентичной логикой, система выбирает наиболее вероятного лидера и отдаёт управление ему. Если какой то юнит, не лидер, нарвёться на проблему, он должен спросить командира что делать, это время, особенно во время жёсткого боя, потери. ИМХО все юниты должны "думать" одновременно, но просчитывать свои приоритеты действий изходя из целей глобального маштаба (карта, куда все докладывают состояния горячих точек и интересных обьектов). Юнит автономен, нарвался на проблему:
  • кинулся в атаку, сделал запрос в БД о вражеской технике и уязвимых местах. В принципе ответ должен успеть прежде чем юнит достигнет прицельной дальности.
  • поднимаем начальный алгоритм по эффективному "убиению" юниты этого типа, для танка например лучше попробовать маневрировать, для ракетницы лучше сразу мчаться к ней. Делаем запрос по прошлым боям между типом твоей юниты и вражеской, он тоже в принципе должен отработать быстро.
  • если ответ пришёл как "ловить тебе нечего, убегай", то из прошлого запроса также выбираються методы по убеганию. Если существует алгоритм дающий 70%+ шанс, то пользуем его, иначе берём наиболее эффективный алгоритм и чуть модифицируем его из списка заранее вложенных вещей (например уход зигзагом, бег к лесу, уход под воду и т.д.) или из списка "находок" сделанных ИИ из прошлых действий. Назодики это просто лог действий, повторяемый ранее многими юнитами и оценка эффективности при этом высокая.
  • если не ушли, то перед смерьтю юнита скидывает свои действия в БД. то же самое если ушли.

Такой ИИ будет самообучаться. По сути это просто система накопления знаний, но в виду своей очевидности (БД с алгоритмами и т.д.) станет не эффективной когда база разрастётся в обьёмах. Вот тут и нужен инновационный подход... Нейронные сети? 

Цитата(Кнером @  8.8.2006,  09:06 Найти цитируемый пост)
Это кто решает? Сброшенный юнит, все или всё таки командир?

Как сказал ранее каждый юнит свободен делать что захочет, но "хочет" он из глобальных приоритетов, которые обращаються в конкретные действия. Нарвался он на монстра, сравнил сколько народу вокруге, сравнил что есть важного в округе, если самое важное это сам юнит (мы где то на територии, баз рядом нет), то просто убегаем, помечая проблему на карте. Если же вокруг есть что нибудь более приоритетное, то на карте помечаем большую проблему и ждём подкрепления.

А вообще медленно это всё будет работать, тут нужен какое-то, на первый взгляд не очевидное, решение... smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
arilou
Дата 8.8.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(Sardar @  8.8.2006,  11:42 Найти цитируемый пост)
Вот тут и нужен инновационный подход... Нейронные сети? 

Все игродельщики в один голос говорят, что нейронные сети не подходят, потому что

1) Очень сложно обучать
2) Очень сложно отлаживать - представьте себе, у вас заглючило поведение юнита. Как будете отлаживать нейронную сеть  smile 


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Никто
Дата 8.8.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.3.2006

Репутация: нет
Всего: нет



Цитата

Ты на псевдокоде. Ну, ты тогда выложи сюда. Может быть кто-нибудь увидит, посмотрит и возьмется за твой псевдокод. 

Я имею в виду сам алгоритм.Про само понятие псевдокода я могу только догадываться.Расскажи о возможностях монстров.И как инициализируется карта.
--------------------
   
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.