» » » Создаем AI для персонажа RUS (winMugen)

Создаем AI для персонажа RUS (winMugen)

Категория: M.U.G.E.N / Учебник M.U.G.E.N
рейтинг 4,3 из 5
  • Добавил: RockNGame
  • Дата: 16-10-2016, 19:08
  • Просмотры: 311
  • Отзывы: 25
  • Автор: Romeotantan, RockNGame

  • Внимание: Данный файл предоставлен для бесплатного скачивания всем пользователя Муген проекта. Пожалуйста отблагодарите автора комментарием и подпиской на наш проект.

    При размещении матералов выложенных на нашем ресурсе активная обратная ссылка на источник обязательна!
    Пожалуйста уважайте труд пользователей.

    Автор: Romeotantan


    Перевод,дополнения: RockNGame




    И так, поехали. Сперва, Откройте файл CMD и добавляйте линии подобно этим, чтобы отделить команды AI от прочих команд в CMD файле.:

  • ;-| AI |------------------------------------------------------


  • [Command]
  • name = "CPU1" <------------------------(Имя ИИ Команды)
  • command = U, D, F, U, D, F ON
  • [State -1, Activate AI]
  • type = Varset
  • triggerall = var(59) != 1
  • trigger1 = command = "CPU1"
  • trigger2 = command = "CPU2"
  • trigger3 = command = "CPU3"
  • trigger4 = command = "CPU4"
  • trigger5 = command = "CPU5"
  • trigger6 = command = "CPU6"
  • trigger7 = command = "CPU7"
  • trigger8 = command = "CPU8"
  • trigger9 = command = "CPU9"
  • trigger10 = command = "CPU10"
  • v = 59
  • value = 1



  • Код говорит компьютеру что когда Var 59 равняется 1-му то он должен сделать то или иное, в нашем случае использовать одну из команд ИИ которые мы вписали ранее. Но вы должны быть уверены в том что переменная 59 не используется больше негде в данном персонаже, если она уже занята то используйте любую другую свободную переменную, там 46 ил 78. Так же вы должны вставить "triggerall = var(59) != 1" во все команды персонажа что бы компьютер смог использовать эти атаки когда вы играете за того же самого персонажа. Пример...

    Обычная команда выглядит примерно так...


  • [State -1,FLK]
  • type = ChangeState
  • value = 310
  • triggerall = command != "holddown"
  • triggerall = statetype = S && ctrl
  • trigger1 = command = "a" && command = "holdfwd"
  • trigger2 = command = "a" && command = "holdback"



  • Команда с переменной должна выглядеть примерно так...

  • [State -1,FLK]
  • type = ChangeState
  • value = 310
  • triggerall = var(59) != 1 <---------------- Это отключает ИИ команды когда вы играете за персонажа.
  • triggerall = command != "holddown"
  • triggerall = statetype = S && ctrl
  • trigger1 = command = "a" && command = "holdfwd"
  • trigger2 = command = "a" && command = "holdback"



  • Все что мы проделали отключило стандартный ИИ Мугена, теперь можно творить. Открываем CNS файл и смотрим в параграфе "Data", есть ли там значение "IntPersistIndex to = 58" если есть но оно равно другой цифре ставим 58, если вообще нет то добавляем. Это делает так что бы ИИ продолжал свою работу в раунде 2-а,3-ри и т.д.

    Кодируем обычный удар для ИИ, помним что каждая атака ИИ должна иметь [state -1]. Пример...


  • [State -1, AI] ; punch
  • type = ChangeState
  • value = 200 <----------------------- Номер стейта.
  • triggerall = roundstate = 2 <--------- Триггер назначает фазу боя, мол что бы работало после "Round One...Fight"
  • triggerall = var(59) = 1 <------------ Переменная ИИ, должна стоять во всех командах для ИИ.
  • trigger1 = ctrl = 1



  • Тем самым мы сказали компьютеру что когда var(59) равняется 1-му персонаж должен сменить стейт, в этом случае он использует слабый удар рукой. Но этот код слишком прост и примитивен, нужно сделать так что бы персонаж не махал рукой как идиот... Нужно добавить больше триггеров, пример...


  • [State -1, AI] ; punch
  • type = ChangeState
  • value = 200
  • triggerall = roundstate = 2
  • triggerall = var(59) = 1
  • triggerall = statetype != A <--------- ИИ не будет использовать удар в воздухе.
  • triggerall = random < 500 <---------- 50% Объясню позже.
  • triggerall = p2statetype != L <------- Не будет использовать удар когда персонаж лежит.
  • triggerall = p2bodydist x = [0,40] <--- Будет использовать удар когда игрок находится на растоянии в 40 пикселей от него.
  • triggerall = p2statetype != A <------- ИИ не будет использовать удар когда игрок находится в воздухе.
  • trigger1 = ctrl = 1



  • Можно так же добавить еще больше триггеров по типу таких...


  • [State -1, AI] ; punch
  • type = ChangeState
  • value = 200
  • triggerall = roundstate = 2
  • triggerall = var(59) = 1
  • triggerall = statetype != A
  • triggerall = random < 500
  • trigger1 = p2statetype != L
  • trigger1 = p2bodydist x = [0,40]
  • trigger1 = p2statetype != A
  • trigger1 = ctrl = 1
  • trigger2 = stateno = 210 && movehit<--- Комбо, после этого удара ИИ использует удар со стейтом 210 когда ударит врага.
  • trigger3 = stateno = 400 && animtime = 0<-- Запустится стейт 400 когда время последней анимации достигнет нуля.



  • Тем самым мы сказали ИИ что когда враг находится достаточно близко, он не в воздухе и не лежит то нужно использовать слабый удар рукой (По умолчанию State 200) а когда он ударит врага то запустится следующий стейт под номером "210" (По умолчанию средний удар рукой), а когда анимации 210 закончится он использует удар под стейтом 400. Таким образом можно создавать комбо атаки.

    Идем дальше, в следующем ударе можно использовать следующие триггеры...


  • [State -1, AI] ;weak kick
  • type = ChangeState
  • value = 210
  • triggerall = roundstate = 2
  • triggerall = var(59) = 1
  • triggerall = statetype != A
  • triggerall = p2bodydist x < 45 <---------------- Враг близко.
  • triggerall = p2statetype != L
  • trigger1 = stateno = 200 && movecontact <---- ИИ ударил врага или же попал по блоку.



  • Теперь ИИ будет постоянно использовать средний удар рукой после слабого. Если вы хотите добавить другой удар то можно использовать рандомные команды по типу этих...


  • type = ChangeState
  • value = 210
  • triggerall = roundstate = 2
  • triggerall = var(59) = 1
  • triggerall = statetype != A
  • triggerall = p2bodydist x < 45
  • triggerall = random < 200 <------------------- Меньшее число говорит о том что ИИ будет использовать этот удар первым.
  • triggerall = p2statetype != L
  • trigger1 = stateno = 400 && movecontact

  • [State -1, AI] ;strong punch
  • type = ChangeState
  • value = 220
  • triggerall = roundstate = 2
  • triggerall = var(59) = 1
  • triggerall = statetype != A
  • triggerall = p2bodydist x < 45
  • triggerall = random < 300 <------------------- Большее о том что этот удар будет использоваться позже.
  • triggerall = p2statetype != L
  • trigger1 = stateno = 400 && movecontact



  • Теперь когда ИИ будет проверять свои команды, то он в начале найдет удар с меньшим числом рандома, а уж затем с большим. Вот почему ранее говорилось о 50%-х, удары где стоит "random = 1000 <---------------------------------У персонажа должно быть в запасе 1000 единиц энергии.


  • triggerall = movetype != H <---------------------------------Персонаж сможет применить удар когда его самого бъют.

  • trigger1 = stateno = 1400 && movehit && animtime = 0= 1000

  • trigger1 = stateno = 1300 && movehit && animtime = -25 = 150 - Враг находится на расстоянии в 150-т пикселей от персонажа.

  • triggerall = p2bodydist x = 0 - Когда враг прямо впритык перед персонажем.

  • trigger1 = ctrl = 1 - Когда ваш персонаж имеет управление.

  • trigger1 = ctrl = 0 - Не имеет.

  • triggerall = backedgedist < 5 - Когда персонажа загнали в угол и замесили в хлам.

  • triggerall = life 500 - У врага осталось 500-т единиц здоровья.

  • triggerall = enemy,NumProj = 0 - Если это обычный удар без спец эффектов (пуль, фаерболов и т.д).

  • triggerall = enemy,NumProj = 1 - Удар эффектом.

  • triggerall = p2stateno = 700 - Враг использует стейт под номером 700.




  • Еденици в цифрах можно менять под свои нужды.

    Оригинал на Английском и без моего трепа.)

    Теги:
    Статус раздачи: Активна
    Раздают: 108 Качают: 23 Размер: 708,24Mb Скачали: 36 раз(а)
    Имя файла: Создаем AI для персонажа RUS (winMugen).torrent
    Последняя активность: октябрь 16, 2016, 7:08 pm
    Похожие материалы
    Отзывы пользователей
    off
    • Написал: Alexeyapown
    • Дата: 30 марта 2017 11:09
    Спасибо автору!!!! :)
    Ответить
    off
    • Написал: Shirleyfaing
    • Дата: 31 марта 2017 16:30
    where can I find a sprite nzc
    Ответить
    off
    • Написал: DanHoof
    • Дата: 16 апреля 2017 15:32
    pinchi muerto viviente
    Ответить
    off
    • Написал: TragakHit
    • Дата: 17 апреля 2017 04:27
    С чистым юмором.
    Ответить
    off
    • Написал: Gregorydon
    • Дата: 17 апреля 2017 13:45
    С уводольствием пожал бы автору руку, благо, его сайт по движку муген - чудо.
    Ответить
    off
    • Написал: Silasjob
    • Дата: 17 апреля 2017 15:11
    Дождались
    Ответить
    off
    • Написал: JamesLoR
    • Дата: 17 апреля 2017 15:14
    спасибо за старание)
    Ответить
    off
    • Написал: EdwinDet
    • Дата: 17 апреля 2017 15:27
    Читаешь это и думаешь….
    Ответить
    off
    • Написал: Aonaldsew
    • Дата: 18 апреля 2017 01:48
    дяяя….старая темка, но ми тут нету^^ даже если не по картинкам смотреть))) нету и фсё^_^
    Ответить
    off
    • Написал: terecomabec80
    • Дата: 18 апреля 2017 02:38
    да,но это еще и не все...
    Ответить
    off
    почему так много весит?
    Ответить
    off
    • Написал: Samuelsuen
    • Дата: 18 апреля 2017 09:30
    Мы должны жить, как гореть! А то не успеем. А то жизнь кончится.
    Ответить
    Ошибка!
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Добавить отзыв
    Ваше имя:*
    Ваш e-mail:*
    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent
    Введите код:*
    Кликните на изображение чтобы обновить код, если он неразборчив