最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ai的藝術(shù)

2023-05-30 02:04 作者:迪豕  | 我要投稿

AI的藝♂術(shù) - 2019年1月版AI教程by Madman_M前言 關(guān)于AI的一些常識在折騰AI之前,首先要明確一點——Ra2這個游戲的AI非常殘障,因此某種意義上來講AI必須通過一定程度的作弊來才能與玩家抗衡……而寫AI的目的,一方面是盡量讓AI顯得不那么殘障,另一方面是限制AI的作弊程度,讓AI的作弊變得不那么明顯。目錄第一章 AI的設(shè)計思路第二章 Rules(MD)第三章 單位代碼第四章 AI(MD)第五章 地圖相關(guān)PLUS Ares平臺下的AI騷操作第一章 AI的設(shè)計思路1.什么樣的AI才是好的AI?無腦暴兵摁死玩家的AI是屑,換著花樣兒慢慢“折磨”玩家的AI才是AI之鑒。而折磨玩家的目的也不在于摁死玩家,而是讓玩家在反折磨和反推AI之后獲得成就感。當(dāng)然,一堆AI三下五除二滅掉一個玩家還是合情合理的……2.AI應(yīng)該怎樣折磨玩家?(1)戰(zhàn)術(shù)的多樣化:AI可以玩騷擾,而且玩起來還挺6。只要給AI加上搶中立科技、工程師偷家、間諜斷電偷錢之類的騷擾戰(zhàn)術(shù),玩家在與AI正面對抗的同時,就需要隨時留意后方。這樣一來處理難度會有很大提升。(2)攻擊形式的多樣化:在調(diào)整了全局的條件下,AI的最大優(yōu)勢就是不差錢,不差錢帶來的優(yōu)勢就是可以隨時改變戰(zhàn)術(shù)。在一波地面攻勢之后,AI可以毫無壓力地再出動一波空中攻勢,而玩家此時很可能并沒有做好防空的準(zhǔn)備,應(yīng)付起來就會手忙腳亂。(3)兵種搭配的多樣化:與(2)不同,兵種搭配是在一個部隊內(nèi)進行的,如反裝甲單位和反步兵單位搭配、遠(yuǎn)程單位和近戰(zhàn)單位搭配、地面單位和空中單位搭配,都可以起到很好的效果。如果有不同陣營的AI,還有可能出現(xiàn)幾支需要玩家使用不同手段分別處理的部隊同時殺向玩家的奇景,會給玩家造成很大壓力。(4)適當(dāng)暴兵:就像玩家一樣,暴兵也是AI不可或缺的戰(zhàn)術(shù)。但是暴兵時需要控制數(shù)量。一方面是要讓玩家能夠處理,另一方面也要考慮AI的尋路能力。3.怎樣才能做出優(yōu)秀的AI?首先合理的全局設(shè)定是AI執(zhí)行的前提。其次優(yōu)秀的AI通?!緫?yīng)該】掌握一些基本操作:(1)工程師占中立或偷家。(2)Rush和守家。(3)間諜和反間諜。(4)運輸。(5)擾礦。(6)反特定建筑(如防御建筑和超武)。(7)巷戰(zhàn)和反巷戰(zhàn)。(8)海軍。(9)空襲??偠灾?,就是把自己能想到戰(zhàn)術(shù)賦予AI,給AI制定一個具有多種可能性的劇本,并且通過代碼讓AI按照劇本發(fā)展,從而讓AI表現(xiàn)得更像是有策略地進攻而不只是機械地出兵,是AI設(shè)計應(yīng)該考慮的主要內(nèi)容。第二章 Rules(MD)一套完整的AI,從來都不是只靠ai(md).ini一個文件來實現(xiàn)的。而是Rules設(shè)定、ai(md).ini以及單位代碼共同作用的結(jié)果。Rules對AI表現(xiàn)的影響非常大,會直接影響AI的出兵效率和發(fā)展水平。以下是Rules中部分對AI產(chǎn)生影響的內(nèi)容解釋:(注釋: num-數(shù)字、X,Y,Z-三個數(shù)字、bool-yes/no、list-列表)[General]; computer and movement controlsBaseBias=num ;當(dāng)敵人靠近AI時,AI對敵人威脅的判定倍數(shù),會影響AI對單位威脅值的敏銳度??梢哉{(diào)高。BaseDefenseDelay=num ;AI派出防御部隊處理基地威脅的延遲時間。(單位:分鐘)CloseEnough=num ;AI執(zhí)行"移動到"指令時,距離目的地多近就視為完成接近。Stray=num ;一個小隊在執(zhí)行任務(wù)時,偏離這個距離之內(nèi)時不會導(dǎo)致小隊重組??梢赃m當(dāng)增加以便AI可以使用大部隊。RelaxedStray=num ;執(zhí)行"集結(jié)"指令(應(yīng)該是指53,54號指令)時,以這個數(shù)值替代Stray??梢赃m當(dāng)增加以便AI可以使用大部隊。TeamDelays=X,Y,Z ;(困難、中等、簡單)的AI創(chuàng)造部隊時間間隔。(單位:幀)AIHateDelays=X,Y,Z ;(困難、中等、簡單)的AI選擇敵人的時間間隔。(單位:幀)AIAlternateProductionCreditCutoff=num ;AI資金低于這個數(shù)值就不再花錢。MultiplayerAICM=X,Y,Z ;(困難、中等、簡單)的AI開局時的金錢【百分比】。公式為:AI開局金錢=玩家開局金錢*(X+100)/100。AIVirtualPurifiers=X,Y,Z ;(困難、中等、簡單)的AI獲取資金的倍數(shù)。AISlaveMinerNumber=X,Y,Z ;(困難、中等、簡單)的AI的奴隸礦車數(shù)。HarvestersPerRefinery=X,Y,Z ;三個陣營每個礦場的礦車數(shù)。AIExtraRefineries=X,Y,Z ;(困難、中等、簡單)的AI追加的礦場數(shù)。(Ares里的建議不給礦場加AIBuildCounts,如果需要增加礦場數(shù)量的話用AIExtraCounts)FillEarliestTeamProbability=X,Y,Z ;(困難、中等、簡單)的AI制造第一個部隊的時間。(單位:幀)MinimumAIDefensiveTeams=X,Y,Z ;(困難、中等、簡單)的AI最少守家部隊(IsBaseDefense=yes)數(shù)量。MaximumAIDefensiveTeams=X,Y,Z ;(困難、中等、簡單)的AI最多守家部隊數(shù)量。(Min和Max即使都寫0,0,0也會至少造1隊守家部隊)UseMinDefenseRule=bool ;AI在制造了滿足MinimumAIDefensiveTeams數(shù)量的守家部隊之后才開始制造其他小隊。;UseMinDefenseRule=無論寫啥AI都會至少先造1個守家部隊,但是寫no的話AI不會因為沒有可造的守家部隊而傻掉。所以如果UseMinDefenseRule=yes,要保證每個陣營【至少有一個】(不是只有一個!)可用的IsBaseDefense=yes的小隊,否則AI不會出兵。TotalAITeamCap=X,Y,Z ;(困難、中等、簡單)的AI可以同時使用的部隊總數(shù)。DissolveUnfilledTeamDelay=num ;AI在多久后會解散一個不完整的部隊。理論上不應(yīng)降低,否則AI制造成員較多的部隊時會在制造完畢之前就解散該隊伍。(單位:幀);*** New AI type snippets ***AISafeDistance=num ;AI執(zhí)行53號指令時的集結(jié)點與敵方基地的距離。(Ares)AIFriendlyDistance=num ;AI執(zhí)行54號指令時的集結(jié)點與己方基地的距離。默認(rèn)=AISafeDistanceAIMinorSuperReadyPercent=num ;AI使用次級超武的幾率AlliedBaseDefenseCounts=X,Y,ZSovietBaseDefenseCounts=X,Y,ZThirdBaseDefenseCounts=X,Y,Z三個陣營在(困難、中等、簡單)時的防御建筑數(shù)量系數(shù)。計算公式:((已有建筑的價格-2000)/1500 * GDIBaseDefenseCoefficient) + 3*(該系數(shù)-1)AIPickWallDefensePercent=X,Y,Z ;(困難、中等、簡單)的AI選擇圍墻來替代防御建筑的概率。AIRestrictReplaceTime=num ;AI建筑被摧毀后,用電廠/防御建筑/圍墻替代被摧毀建筑的時間。(單位:幀)ThreatPerOccupant=num ;每個駐軍對可進駐建筑威脅值的提升。GuardAreaTargetingDelay=num ;區(qū)域警戒(Area Guard)狀態(tài)下AI搜索目標(biāo)的延遲。NormalTargetingDelay=num ;閑置狀態(tài)下AI搜索目標(biāo)的延遲。DisabledDisguiseDetectionPercent=X,Y,Z ;(困難、中等、簡單)的AI識破幻影的概率。AISuperDefenseProbability=X,Y,Z ;(困難、中等、簡單)的AI用護盾防御超武的概率。AISuperDefenseFrames=num ;AI用護盾防御超武的延遲。(單位:幀)AISuperDefenseDistance=num ;基地的多少距離內(nèi)是AI考慮使用護盾的范圍。; AI trigger weighting parametersAITriggerSuccessWeightDelta=num ;觸發(fā)成功權(quán)重變化值(可以寫負(fù)值)。AITriggerFailureWeightDelta=num ;觸發(fā)失敗權(quán)重變化值(通常是負(fù)值)。AITriggerTrackRecordCoefficient=num ;觸發(fā)權(quán)重變化系數(shù)(建議寫1)。;負(fù)責(zé)[AITriggerTypes]中權(quán)重變化的三個數(shù)值。計算方法是每當(dāng)AI的部隊執(zhí)行一次49號指令,就會在該AITrigger中增加AITriggerSuccessWeightDelta的權(quán)重。如果被消滅之前沒能執(zhí)行49號指令,則減少AITriggerFailureWeightDelta*AITriggerTrackRecordCoefficient的權(quán)重。威脅值相關(guān):; default threat evaluation controlsMyEffectivenessCoefficientDefault=num ;當(dāng)AI的單位與威脅等級高于自身的目標(biāo)交戰(zhàn)時,會在計算威脅時乘以這個系數(shù)。幫助AI恃強凌弱。TargetEffectivenessCoefficientDefault=num ;當(dāng)AI的單位與威脅等級高于自身的目標(biāo)交戰(zhàn)時,會在計算威脅時乘以這個系數(shù)。防止AI以卵擊石。TargetSpecialThreatCoefficientDefault=num ;當(dāng)AI目標(biāo)具有SpecialThreatValue時,會在計算威脅時考慮這個系數(shù)。TargetStrengthCoefficientDefault=num ;當(dāng)AI的單位將目標(biāo)指向生命比自己高的單位時,會根據(jù)敵方生命百分比考慮這個系數(shù)。TargetDistanceCoefficientDefault=num ;當(dāng)AI的單位選擇目標(biāo)時,會根據(jù)距離考慮這個系數(shù)。; defaults for dumb threat evaluation ;與default threat evaluation controls基本相同,但是適用于HasStupidGuardMode=yes的單位。DumbMyEffectivenessCoefficient=numDumbTargetEffectivenessCoefficient=numDumbTargetSpecialThreatCoefficient=numDumbTargetStrengthCoefficient=numDumbTargetDistanceCoefficient=numEnemyHouseThreatBonus=num以上數(shù)值都不是百分?jǐn)?shù),而官方給的數(shù)值卻是按百分?jǐn)?shù)填的。都除以100可能會獲得較為明顯的效果。附:威脅值計算公式float Threat = Attacker's best weapon's Verses against Defender * Target Effectiveness;if(Attacker is currently targeting Defender) { Threat = Threat * (-1);}float tempValue = Special Threat Value * Special Threat Coefficient;Threat = Threat + tempValue;if(Defender is currently considering Attacker's owner house as the Enemy House) {Threat = Threat + [General]→EnemyHouseThreatBonus=;}tempValue = Defender's best weapon's Verses against Attacker * Self Effectiveness;Threat = Threat + tempValue;tempValue = Target Strength * Attacker's current health percentage;Threat = Threat + tempValue;tempValue = Target Distance * Distance between Defender and Attacker;Threat = Threat + tempValue;Threat = Threat + 100000.0;粗(JI)翻:Threat = 攻擊單位武器對目標(biāo)的Versus * TargetEffectiveness;如果進攻者已經(jīng)在攻擊目標(biāo),Threat=Threat * (-1)tempValue = 單位的SpecialThreatValue * TargetSpecialThreatCoefficient;Threat = Threat + tempValue;如果AI作為防御方把進攻者視為敵對方,Threat = Threat + EnemyHouseThreatBonus;tempValue = 防御方武器對進攻者的Versus * MyEffectiveness;Threat = Threat + tempValue;tempValue = TargetStrengthCoefficient * 攻擊者當(dāng)前的生命百分比;Threat = Threat + tempValue;tempValue = TargetDistanceCoefficient * 防御者和攻擊者之間的距離;Threat = Threat + tempValue;Threat = Threat + 100000.0;[CombatDamage]Crush=num ;距離這么近時AI會嘗試用碾壓代替開火。寫高點的話AI的車輛更容易直接碾壓玩家步兵。[AI]BuildConst=list ;基地列表(可以不是基地)。在Ares里,決定StartInMultiplayer.WithConst=true時開局給的【建筑】。BuildPower=list ;電力建筑列表,每個陣營只能寫一個。開局必然會先造一個,因此如果有給某個陣營使用昂貴電力插件作為電力供給的情況,請把兵營或其他開局就能造的建筑注冊到電力列表里。BuildRefinery=list ;礦場列表。BuildBarracks=list ;兵營列表。BuildTech=list ;高科列表。BuildWeapons=list ;工廠列表。BuildRadar=list ;雷達列表。ConcreteWalls=list ;圍墻列表。BuildNavalYard=list ;船塢列表。;不彈框的最低要求是有基地(廢話)、電廠,并且兵營和工廠沒同時被禁(當(dāng)然,這并不意味著AI真的能造,只要讓AI以為自己能造就可以)。AlliedBaseDefenses=listSovietBaseDefenses=listThirdBaseDefenses=listAIForcePredictionFudge=X,Y,Z;(困難、中等、簡單)的AI根據(jù)敵方擁有單位的造價總和,按照此處數(shù)值的百分比選擇防空,反裝甲或反步兵的防御建筑。(數(shù)值越小越敏感)MaximumBaseDefenseValue=num ;AI防御建筑的威脅值總和(不包括防空建筑)。ComputerBaseDefenseResponse=num ; 影響AI對基地和ToProtect單位的響應(yīng)程度,具體效果未知。PatrolScan=num ;AI執(zhí)行巡邏任務(wù)時搜索敵人的時間。(單位:分鐘)CreditReserve=num ;低于這個資金量時AI不再進行維修。PathDelay=num ;堵車時間隔這么長時間再次嘗試通過。(單位:分鐘)BlockagePathDelay=num ;再次嘗試隔這么長時間仍無法通過則繞路。(單位:幀)AutocreateTime=num ;平均間隔多長時間建造一隊具有"Autocreate=yes"標(biāo)簽的小隊。(單位:分鐘)InfantryReserve=num ;AI擁有高于這個數(shù)值的金錢時將會一直建造步兵。InfantryBaseMult=num ;如果AI當(dāng)前建筑數(shù)量乘以此數(shù)值比步兵數(shù)量多,則一直制造步兵。PowerSurplus=num ;AI電力超出臨界不足這個數(shù)值時將會制造電廠。BaseSizeAdd=num ;AI的基地規(guī)模不會大于玩家基地規(guī)模的這個倍數(shù)。RefineryRatio=numRefineryLimit=numBarracksRatio=numBarracksLimit=numWarRatio=numWarLimit=numDefenseRatio=numDefenseLimit=numAARatio=numAALimit=numTeslaRatio=numTeslaLimit=numHelipadRatio=numHelipadLimit=numAirstripRatio=num ;由于Ra2里沒有Airstrips,這個數(shù)值最好寫0。AirstripLimit=num ;同上。;各類建筑的建造比重和數(shù)量限制,各類Ratio總和不能低于1。Paranoid=bool ;AI私下進行PY交易共同對抗玩家。PowerEmergency=num ;砸鍋賣鐵保電量的電量臨界值。(%)AIBaseSpacing=num ;AI建筑間隔距離,寫0會無法正常擺建筑,稍微增大可以緩解AI堵車。[IQ] ;一系列數(shù)字,通常結(jié)合地圖中所屬方的IQ設(shè)置生效。遭遇戰(zhàn)中AI的IQ均為最大值。MaxIQLevels=num ;IQ最大值。SuperWeapons=num ;AI自動使用超武。Production=num ;自動建造建筑物。GuardArea=num ;新造出來的小隊自動進入[Area Guard]狀態(tài)。RepairSell=num ;可以選擇維修或變賣受損建筑。AutoCrush=num ;自動碾壓。Scatter=num ;規(guī)避有彈道的拋射體。ContentScan=num ;使[Easy]、[Normal]、[Difficult]項下的ContentScan生效。Aircraft=num ;自動補充飛機。Harvester=num ;自動補充礦車。SellBack=num ;允許變賣建筑。(ARES)TogglePower=num ;沒電時讓可斷電建筑停止工作。[Easy]、[Normal]、[Difficult] ;這仨的注冊名稱寫!倒!了!Easy代表的是困難,Difficult代表的是簡單。(然而里面的數(shù)值是正常的,WWSB!)ContentScan=bool ;AI使用運輸單位時,會將運輸工具及乘客的Points和ThreatPosed都考慮進去。寫no或[IQ]此項不滿足的話則只考慮運輸工具自身的。; ******* Mission Control *******;一些狀態(tài)(Mission)相關(guān)參數(shù),決定特定情況下單位的行動模式。箱子單位狀態(tài)可能與踩箱子的單位一致(待驗證)。[Harvest] ;FreeUnit的默認(rèn)狀態(tài)。[Hunt] ;很重要的一個狀態(tài),傘兵和空投單位通常都是這個狀態(tài)。[Enter] ;會自動找尋可進駐建筑物,可進駐的傘兵有時會是這個狀態(tài)。Recruitable=bool ;是否允許重組,寫yes的話,AI的小隊在執(zhí)行一些特殊指令后(主要為11號指令相關(guān))就可以接受重組并加入到其他小隊中去。Rule部分其實比AI更復(fù)雜,對AI強度的影響也更明顯。賦予AI合理的數(shù)值是AI能否正常執(zhí)行AI(MD)中指令的前提。Ares新增陣營和新增國家相關(guān):新增陣營和新增國家,AI最低要求是至少不彈框。而讓AI不彈框需要注意以下幾項:1.[AI]中指定了新陣營的基地、電廠。2.[新國家]中用AI.PowerPlants指明了且該電廠的AIBasePlanningSide正常。第三章 單位代碼單位代碼雖然也包含在Rules里,但由于不同種類單位情況各不相同,因此單獨列為一章。本章內(nèi)容較少,僅列舉一些特殊語句和單位。通用:TechLevel=num ;AI可以建造TechLevel=-1的建筑,但是不能建造TechLevel=-1或大于最大TechLevel的單位。的給各個可造單位安排合理的TechLevel可以讓玩家的建造界面比較有層次感。(TechLevel=0可以用來調(diào)整建造界面單位順序。)拓展姿勢:AI開局的建筑建造順序:經(jīng)常玩無初始部隊虐電1V7的小伙伴們肯定很熟悉AI的奇葩建造順序——先憋礦場再造兵營,開局很容易被玩家工程師偷掉一兩家。電廠開局必然會先造一個。而決定兵營和礦場(目前測試結(jié)果來看也僅限兵營和礦場)建造順序的,是兵營和礦場哪個TechLevel更小。只要保證兵營的TechLevel小于礦場,AI就會先出兵營并且開始造守家部隊,玩家速偷的戰(zhàn)術(shù)成功率就會大大下降。AI建造前提:建筑:無視:【TechLevel=-1】,PrerequisiteOverride,RequiresStolenAlliedTech,RequiresStolenSovietTech,RequiresStolenThirdTech,SpyEffect.StolenTechIndex(Ares)有效:TechLevel,Prerequisite,Owner,AIBasePlanningSide,RequiredHouses,ForbiddenHouses;如果建筑A的Prerequisite為建筑B且Owner/AIBasePlanningSide均正常,但是建筑B因為RequiredHouses/ForbiddenHouses無法建造,AI會認(rèn)為建筑A可造,但是實際上無法建造建筑A,且不影響其他符合條件的建筑建造。單位:無視:Prerequisite,PrerequisiteOverride,Owner有效:TechLevel,RequiredHouses,ForbiddenHouses,RequiresStolenAlliedTech,RequiresStolenSovietTech,RequiresStolenThirdTech,SpyEffect.StolenTechIndex(Ares);如果[TaskForces]里有無法建造的單位,則會跳過該項繼續(xù)建造之后的單位。除非通過重組湊齊無法建造的單位,否則無法執(zhí)行腳本。ThreatPosed=numSpecialThreatValue=num詳見Rules中的威脅值部分,給單位安排合理的威脅值會影響到AI選擇目標(biāo)的優(yōu)先順序,關(guān)系到AI能否選擇合適的目標(biāo)進行攻擊。建筑:AIBasePlanningSide=num ;寫陣營序號(0=GDI,1=Nod,2=ThirdSide,Ares新陣營依次往后排),標(biāo)明第幾個陣營會建造該建筑(寫-1時所有陣營都可造)。AIBuildThis=bool ;AI是否會建造該建筑。(Ares)AIBuildCounts=X,Y,Z ;AI至少建造幾個該建筑。(Ares)AIExtraCounts=X,Y,Z ;AI可能額外補充幾個該建筑。AI在補足AIBuildCounts和AIExtraCounts數(shù)量時不是一股腦補足的,而是隨機穿插建造(雖然也有可能一連造好幾個)。另:AI所有建筑的數(shù)量都會根據(jù)其擁有的基地數(shù)量而翻倍!單位:ToProtect=bool ;寫yes的單位受到攻擊時,AI會出動守家部隊去保護。原版海軍都有這句,但海軍加這個意義不大,除非給海軍加守家部隊……專屬單位:RequiredHouses/ForbiddenHouses導(dǎo)致某個國家無法使用該陣營通用單位時,涉及該通用單位的[TaskForces]就需要每個國家單獨設(shè)置。否則被禁用的國家在制造帶有該單位時,會產(chǎn)生一支無法執(zhí)行腳本的半成品小隊。武裝直升機相關(guān):原版AI使用武直執(zhí)行一切移動指令時,由于指令判定點為地面,而武直不會主動降落,因此會無限卡在移動指令的目標(biāo)地點上空。想讓AI的武直部署基本上只能在攻擊指令之后銜接部署指令。如果想讓AI的武直執(zhí)行移動指令,就需要給武直添加BalloonHover=yes語句。給武直添加BalloonHover目前未發(fā)現(xiàn)任何負(fù)面效果,不但不影響部署落地,甚至BalloonHover自帶的一定要飛目標(biāo)頭上拉翔的特技,在武直身上都不存在。當(dāng)然,做到這一步只能算初步解決了AI武直的移動問題和部署問題(這時的部署僅是個視覺效果)。除此之外還要面臨一系列問題:1.移動到路徑點之后AI可能不會部署:經(jīng)測試,AI可以正常完成移動至路徑點的指令,只是無法在移動后部署。只要在移動和部署之間隨便增加個容易完成的指令即可,比如5,0(非最優(yōu))。2.部署之后立即起飛(甚至在部署狀態(tài)就起飛,AI作弊實錘?。?部署之后需要讓AI執(zhí)行防守指令,以免AI瞎起飛。(注:不能用11,11)3.部署之后不開炮或開炮距離過近:再給武直加個與副武器射程等同的GuardRange即可。綜上,在給武直添加BalloonHover和GuardRange之后,再結(jié)合合理的指令,即可做到讓AI批量部署武直。還想讓AI部署之后重新起飛?其實也是可行的,不過意義不大。AI的武直杵在地上當(dāng)炮臺才是墜吼的!至于方法,在AI(MD)部分里找吧。第四章 AI(MD)ai(md).ini里包括4個部分:[TaskForces]、[ScriptTypes]、[TeamTypes]、[AITriggerTypes][TaskForces] ;決定AI的小隊中包含哪些單位,建造順序從上到下。首先是注冊表,格式跟正常注冊表一樣:索引=注冊ID。可以跳數(shù)。0=注冊項01=注冊項1……然后是每個注冊項:[注冊項0]Name=名稱 ;隨便寫反正不讀,僅供編寫者記憶和查找用。0=數(shù)量,單位注冊名1=數(shù)量,單位注冊名……5=數(shù)量,單位注冊名Group=-1 ;無特殊需要建議保留原值-1;索引只讀取0~5(相當(dāng)于兩個G胖),且無視順序(也就是說你可以跳數(shù)寫或者倒序?qū)懟蛘叨鄬?,反正不會?shù)6)。[ScriptTypes] ;決定AI的小隊執(zhí)行哪些指令,執(zhí)行順序從上到下。首先也是注冊表,格式跟正常注冊表一樣:索引=注冊ID。也可以跳數(shù)。0=注冊項21=注冊項3……然后是每個注冊項:[注冊項2]Name=名稱 ;隨便寫反正不讀,僅供編寫者記憶和查找用。0=X,Y ;X:指令,Y:參數(shù)1=X,Y2=X,Y……49=X,Y;跟TaskForces索引類似,但是讀取0~49。以下是部分指令解釋(標(biāo)★為常用,☆為特定情況下有用):(X,Y)★0,n - 攻擊最近的目標(biāo),目標(biāo)類型由n指定。(海軍不可用!用了這條語句的海軍小隊AI根本不會建造。) n = 0 - 任何目標(biāo)([VehicleTypes]/[AircraftTypes]/[InfantryTypes]/[BuildingTypes])(飛機類會跳過這句。) 1 - 同0,0 2 - 建筑物([BuildingTypes]) 3 - 資源類(Storage=) 4 - 步兵([InfantryTypes]) 5 - 載具([VehicleTypes]) 6 - 工廠([BuildingTypes],Factory=) 7 - 防御建筑([BuildingTypes],IsBaseDefense=yes) 8 - 同0,0 9 - 電廠([BuildingTypes],BuildCat=Power) 10 - 可駐軍建筑([BuildingTypes],CanOccupyFire=yes) 11 - 中立科技建筑([BuildingTypes],NeedsEngineer=yes)★1,n - 攻擊n號路徑點,工程師/間諜/突擊隊都可以用這句完成占領(lǐng)/滲透/清理。2,0 - Cyborg狂暴化(無效)?!?,n - 移動到n號路徑點(Waypoint)。☆4,n - 移動到n號單元標(biāo)記(CellTag)。☆5,n - 警戒(Guard)狀態(tài)保持n*6秒?!?,n - 跳轉(zhuǎn)到當(dāng)前Script的第n(n=索引+1)行。7,0 - 欽點該Team所有者獲勝?!?,n - 釋放乘客 n = 0 - 保留運輸工具和乘客執(zhí)行接下來的指令。 1 - 只保留運輸工具。 2 - 只保留乘客。 3 - 全解散?!?,0 - 部署。(步兵、基地車、武裝直升機皆有效)10,0 - 跟隨最近的友好單位。(如果寫在Script的第一行,將會無條件跟隨產(chǎn)生的第一個小隊)★11,n - 進入第n種狀態(tài)(通常能在Rules里找到并修改相應(yīng)狀態(tài)),無法執(zhí)行該Script內(nèi)接下來的任何指令。(可以通過重組至其他小隊來終止任務(wù)) n = 0 Sleep - 休眠。 1 Attack - 根據(jù)威脅等級進行TeamType中的攻擊任務(wù)。 2 Move - 移動。 3 QMove - 在其他部隊移動結(jié)束后移動到目的地。(遭遇戰(zhàn)無效) 4 Retreat - 撤退(可能會逃出地圖)。 ☆5 Guard - 防御,只攻擊進入射程內(nèi)的敵人。 6 Sticky - 與防御類似,會與敵人交戰(zhàn)但不會移動和追擊。(默認(rèn)無法重組,但是可以改) ☆7 Enter - 進入建筑或運輸工具。AI會自動找尋附近的建筑物進駐。 8 Capture - 用于MultiEngineer模式的工程師搶建筑。 9 Eaten - 修理時賣掉(疑似Ra95殘留)。 10 Harvest - 采礦。 ★11 Area Guard - 區(qū)域防御,會主動迎擊附近的敵人。 12 Return - 子機回歸。 13 Stop - 停止當(dāng)前動作。 14 Ambush - 無效。 ★15 Hunt - 獵殺敵人。(傘兵默認(rèn)執(zhí)行此狀態(tài)?!竞\姟⒖哲娋行А?。默認(rèn)無法重組,但是可以改) 16 Unload - 運輸單位卸貨。 17 Sabotage - 放置C4或炸藥。 18 Construction - 在建筑建立的位置造建筑。(車輛部署建筑同樣有效) 19 Selling - 變賣建筑。 20 Repair - 修理。 21 Rescue - 救援(意味不明)。 22 Missile - 種蘑菇。 23 Harmless - 進入人畜無害狀態(tài)。 24 Open - 開門開門開門吶! 25 Patrol - 巡邏。(遭遇戰(zhàn)無效) 26 Paradrop Approach - 空投靠近。 27 Paradrop Overfly - 空投。 28 Wait - 等待。 29 Move - (特殊)Chrono類單位移動到目的地。 30 Attack - (特殊)使用AreaFire武器開火。 31 Spyplane Approach - 偵察機靠近。 32 Spyplane Overfly - 偵察機偵查?!?4,0 - 隊伍中存在有Passengers位置的運輸工具,并且其余單位Size和PhysicalSize滿足運輸條件時,乘客們進入運輸工具。(實際使用時,一個隊伍里只能存在1個運輸工具)(運輸步兵時可以在14,0之后加43,0保證單位裝載完畢,運輸車輛時不可接43,0)16,n - 沿著n號路徑點巡邏。巡邏途中會按照PatrolScan搜尋附近敵人并與敵人交戰(zhàn)。通常用于任務(wù),多了會卡……17,n - 變?yōu)閳?zhí)行第n號腳本(n為該腳本在注冊列表中的【順序號】而非索引號,從0開始)。理論上可以用來實現(xiàn)超過50行的腳本……18,n - 改變小隊,讓當(dāng)前小隊加入第n號小隊(n為該小隊在注冊列表中的【順序號】而非索引號,從0開始)。理論上可以用來實現(xiàn)超過6行的大隊……19,0 - 恐慌,小隊中有Fraidycat標(biāo)簽的成員會亂跑,并且播放Panic序列,沒有該標(biāo)簽的會臥倒。20,n - 二五仔,任務(wù)限定?!?1,0 - 分散部隊,某些情況下有奇效。22,0 - 躲貓貓……23,0 - 決定該Team所有者失敗。29,0 - 任務(wù)中用于讓AI自動建造。30,0 - 賣家一波流。31,0 - 自戕以謝天下。41,0 - 不怕不怕,與19,0相反。42,n - 改變朝向。 n = 0-北 1-東北 2-東 3-東南 4-南 5-西南 6-西 7-西北43,0 - 等待運輸單位完全裝載完畢。運載步兵時可以用在14,0之后,運載車輛時不要使用!★46,N - 攻擊N指定建筑。(工程師為占領(lǐng)、間諜為滲透、突擊者為清駐兵、海軍可用此指令攻擊陸地建筑) N=該建筑在注冊列表中的【順序號】+判定系數(shù),從【0】開始(然而原版建筑注冊是從1開始)。判定系數(shù)分別為:0-最小威脅、65536-最大威脅、131072-最近、196608-最遠(yuǎn)。 推薦計算方法:把建筑列表復(fù)制進excel,【查找重復(fù)項并去掉重復(fù)項】,從1開始重新生成序號。 按照上述方法,指定建筑時就可以用以下公式: -1 + 序號 = 選擇指定建筑中威脅最小的。 65535 + 序號 = 選擇指定建筑中威脅最大的。 131071 + 序號 = 選擇指定建筑中距離最近的。 196607 + 序號 = 選擇指定建筑中距離最遠(yuǎn)的。 以YR為例: 萌軍電廠1=GAPOWR,4種計算結(jié)果分別為0、65536、131072、196608 光頭電廠306=YAPOWR,由于中間185和241都注冊成了NAPSYA,253和273都被注釋掉了,304根本不存在,所以光頭電廠的順序其實是302,4種計算結(jié)果分別是301、65837、131373、196909?!?7,N - 移動到N指定敵方或中立建筑附近。N的計算方法同上,"附近"的范圍由CloseEnough指定。(海軍可用)48,0 - 偵查。(遭遇戰(zhàn)無效)★49,0 - 任務(wù)執(zhí)行成功。小隊每執(zhí)行一次49號指令,都會在該AITrigger中增加AITriggerSuccessWeightDelta的權(quán)重。如果被消滅之前沒能執(zhí)行49號指令,則減少AITriggerFailureWeightDelta*AITriggerTrackRecordCoefficient的權(quán)重。★53,0 - 在敵人基地附近集合,距離由AISafeDistance決定。(海軍有效)★54,0 - 在友方基地附近集合。距離由AISafeDistance決定,Ares中由AIFriendlyDistance決定。(海軍有效)☆55,0 - 如果鐵幕就緒,則為該小隊罩鐵幕?!?6,N - 如果超時空傳送就緒,則傳送該小隊至N指定建筑物,N算法見46號指令?!?7,n - 如果超時空傳送就緒,則傳送該小隊至n指定類別,n類別同0號指令?!?8,N - 移動到N指定友方建筑附近,N算法見46號指令。(海軍可用)59,n - 攻擊n號的路徑點。60,0 - 進入回收站?!?1,0 - 進入坦克碉堡?!?2,0 - 進入生化發(fā)電廠。63,0 - 進駐最近的戰(zhàn)斗碉堡。(經(jīng)常不靈)★64,0 - 進駐最近的可駐軍建筑。(即使是用來占己方碉堡,也比63更穩(wěn)定……)與其他項目不同,Script通用性很強,尤其是進攻型小隊,可能會有很多不同的小隊執(zhí)行相同或類似的任務(wù)——比如各種反載具小隊都可以通過同樣的攻擊車輛的指令來達到反載具的目的。因此在制作AI時,可以先制作一個“Script池”,把泛用性較強的腳本(如反裝甲、反步兵、拆塔、抄家等)放進池子里,建立TeamTypes的時候就可以直接從池子里調(diào)用。可以省去大量重復(fù)性的工作。[TeamTypes]首先還是注冊表,格式跟正常注冊表一樣:索引=注冊ID。也可以跳數(shù)。0=注冊項41=注冊項5……然后是每個注冊項 ;如無特殊標(biāo)記,均可直接復(fù)制。:★[注冊項4]☆Name=名稱 ;隨便寫反正不讀,僅供編寫者記憶和查找用。VeteranLevel=1 ;無視。MindControlDecision=0 ;被心靈控制后的動作,0=隨緣、1=加入控制者作戰(zhàn)小隊、2=部隊回收廠賣錢、3=生化反應(yīng)爐填電、4=搜索敵人、5=摸魚☆Loadable=yes/no ;運載單位寫yes會計算ContentScan。Full=no ;無視。Annoyance=no ;無視。GuardSlower=no ;無視。House= ;無視?!颮ecruiter=yes/no ;可否從低優(yōu)先級的隊伍和閑置單位中直接調(diào)用成員?!預(yù)utocreate=yes/no ;結(jié)合地圖預(yù)置單位生效。遭遇戰(zhàn)中,在條件滿足的情況下,平均每隔AutocreateTime規(guī)定的時間,制造一隊帶有Autocreate的小隊。☆Prebuild=yes/no ;可能會在不需要時提前造好該隊伍。(待確認(rèn))Reinforce=no ;無視。Droppod=no ;無視。UseTransportOrigin=no ;無視。Whiner=no ;無視?!頛ooseRecruit=yes/no ;完成任務(wù)后解散?!顰ggressive=yes/no ;和Suicide共同起作用?!颯uicide=yes/no ;和Aggressive共同起作用?!颬riority=num ;優(yōu)先級?!颩ax=num ;該小隊最大生成數(shù)量。TechLevel=0 ;無視。Group=-1 ;除非特殊需要。另:-2時會選取任何TaskForce。OnTransOnly=no ;無視。★AvoidThreats=yes/no ;是否會按威脅計算方法尋找最小威脅路徑。IonImmune=no ;無視?!頣ransportsReturnOnUnload=yes/no ;運輸工具完成任務(wù)后是否回家?!顰reTeamMembersRecruitable=yes/no ;隊伍成員可否被調(diào)去更高優(yōu)先級的隊伍中。★IsBaseDefense=yes/no ;守家部隊。★OnlyTargetHouseEnemy=yes/no ;是否只針對敵對方。★Script=ScriptTypes ;注冊在[ScriptTypes]里的Script?!颰askForce=TaskForce ;注冊在[TaskForces]里的TaskForce。Aggressive和Suicide:這兩句共同決定AI執(zhí)行腳本過程中是否主動攻擊敵人,以及受到攻擊時是否還擊。(1)執(zhí)行0號,1號,46號,59號指令時:Aggressive和Suicide無論寫啥,都不會對射程內(nèi)的敵人進行攻擊,而是繼續(xù)執(zhí)行當(dāng)前腳本。如果受到攻擊,Suicide=no會進行還擊。(2)執(zhí)行3號,47號,53號指令時:如果Aggressive=yes和Suicide=no,則會對進入射程的敵人進行攻擊,在攻擊結(jié)束后繼續(xù)執(zhí)行腳本。如果受到攻擊,則會進行還擊,并在還擊結(jié)束后才繼續(xù)執(zhí)行腳本。其余情況均不會對射程內(nèi)的敵人進行攻擊,也不會還擊。(3)執(zhí)行16號指令時:只要Suicide=yes,就會攻擊進入射程的敵人,并且在攻擊結(jié)束后繼續(xù)執(zhí)行腳本,但是受到攻擊不會還擊。如果Aggressive=yes和Suicide=no,與(2)相同。如果都是no,那么會變向路徑點移動邊進行攻擊,如果受到攻擊,則在射程內(nèi)進行還擊,其余情況繼續(xù)移動執(zhí)行腳本。Recruiter、AreTeamMembersRecruitable、Priority:可能是最神奇的幾個語句,能讓AI完成相對復(fù)雜的隊伍重構(gòu)工作。目前測試結(jié)果表明作用方式如下:如果TeamA和TeamB有重合的單位并且同時存在于場上,且TeamB的成員所在狀態(tài)是Recruitable=yes的,TeamA具有Recruiter=yes,TeamB具有AreTeamMembersRecruitable=yes,且TeamA的Priority大于(等于)TeamB,那么AI在招募TeamA時就會優(yōu)先從TeamB中調(diào)取單位,而不是直接從工廠制造該單位。另,一個Recruiter=yes但是Priority=0的隊伍,也可以從無隊伍的閑置單位中調(diào)取單位。Autocreate:生效前提是Recruiter=yes。地圖預(yù)置單位都有AUTOCREATE_NO_RECRUITABLE和AUTOCREATE_YES_RECRUITABLE兩個標(biāo)簽,Autocreate會結(jié)合地圖預(yù)置單位的這兩個標(biāo)簽生效,會優(yōu)先招募地圖預(yù)置單位。預(yù)置單位的標(biāo)簽位置根據(jù)其類型決定:[Infantry]INDEX=OWNER,ID,HEALTH,X,Y,SUB_CELL,MISSION,FACING,TAG,VETERANCY,GROUP,HIGH,AUTOCREATE_NO_RECRUITABLE,AUTOCREATE_YES_RECRUITABLE[Units]INDEX=OWNER,ID,HEALTH,X,Y,FACING,MISSION,TAG,VETERANCY,GROUP,HIGH,FOLLOWS_INDEX,AUTOCREATE_NO_RECRUITABLE,AUTOCREATE_YES_RECRUITABLE[Aircraft]INDEX=OWNER,ID,HEALTH,X,Y,FACING,MISSION,TAG,VETERANCY,GROUP,AUTOCREATE_NO_RECRUITABLE,AUTOCREATE_YES_RECRUITABLE作用方式:Autocreate=no時,AUTOCREATE_NO_RECRUITABLE=0的預(yù)置單位無法招募,AUTOCREATE_NO_RECRUITABLE=1可以招募,預(yù)置單位不夠時會通過工廠生產(chǎn)補足隊伍,預(yù)置單位無法響應(yīng)招募時無法通過工廠生產(chǎn)替代該單位。Autocreate=yes時,AUTOCREATE_YES_RECRUITABLE=0的預(yù)置單位無法招募,AUTOCREATE_YES_RECRUITABLE=1可以招募。預(yù)置單位無法響應(yīng)招募時會從工廠生產(chǎn)來補足隊伍,但是AUTOCREATE_NO_RECRUITABLE=1的單位無法通過工廠生產(chǎn)替代。[AITriggerTypes]首先這個沒注冊表……其次格式如下(最好直接復(fù)制已有的然后再改)。1234567-G=Name瞎編一個就行(不能有,),7654321-G,,3,1,GAREFN,0A00000002000000000000000000000000000000000000000000000000000000,500.000000,0.000000,500.000000,1,0,1,0,,1,1,1注冊項6=Name,TeamTypesA,國家,TechLevel,條件,前提,前提條件參數(shù),基礎(chǔ)權(quán)重,權(quán)重下限,權(quán)重上限,是否用于遭遇戰(zhàn)(0-否,1-是,寫1即可),0,陣營,0,TeamTypesB,簡單AI能否使用(0-否,1-是),中等AI能否使用(0-否,1-是),困難AI能否使用(0-否,1-是)以下是各項解釋:Name - 名稱 ;隨便寫反正不讀,僅供編寫者記憶和查找用。TeamTypesA & TeamTypesB - 第一小隊 & 第二小隊:分別判定,而且第二小隊先造。(不建議用第二小隊,寫最好)國家 - 如果不涉及專屬單位就寫,需要設(shè)置專屬單位就寫該國家注冊名。TechLevel - 無特殊需要可以寫1,如果有特殊模式可以按模式需要自行擬定。條件,前提,前提條件參數(shù):條件,前提: -1, 任何條件 0,前提 敵方擁有(前提)指定的單位 1,前提 己方擁有(前提)指定的單位 2, 敵方電力黃 3, 敵方電力紅(間諜偷電成功時有效) 4, 敵方金錢大于或等于 5, 本方鐵幕裝置就緒 6, 本方超時空傳送就緒 7,前提 中立方擁有(前提)指定的單位前提:單位注冊名,AircraftTypes,BuildingTypes,InfantryTypes,VehicleTypes皆可。前提條件參數(shù):格式寫作XXXXXXXXYY000000000000000000000000000000000000000000000000000000,64位長度,16進制。前10位有效。前8位代表數(shù)值,第9、10位代表算法值。(前8位是程序猿格式,要兩位兩位寫,比如5000的16進制是1388,這里就要寫成8813,10W的16進制是186A0,這里就要寫成A08601,不過除了金錢也沒其他數(shù)字會寫這么長)。算法2位:00 - 小于,01 - 小于等于,02 - 等于,03 - 大于等于,04 - 大于,05 - 不等于。例:如果觸發(fā)條件是"敵方擁有的BILLY小于等于144個",那么就寫成"0,BILLY,9000000001000000000000000000000000000000000000000000000000000000"三個權(quán)重:控制AI在滿足條件下激活該觸發(fā)的可能性。數(shù)字寫多少都行,整數(shù)小數(shù)都沒問題,當(dāng)然最好控制合理些以便AI可以抽到不同的觸發(fā)。(【只有】兩個特殊值:0 - 完全不觸發(fā)。5000 - 滿足條件必觸發(fā))陣營:1-萌,2-聯(lián),3-尤,4-第4陣營,5-第5陣營……(0-全)三個難度(這次WW沒寫倒):用來區(qū)分不同難度的AI。運用:AITrigger的重點在于為AI不同發(fā)展時期的Team安排不同階段的觸發(fā)條件。比如初期低級兵種Rush就可以將前提條件設(shè)定為"己方不存在機場/雷達/其他高科技建筑",這樣在AI擁有高級科技建筑以后就不會再爆初期隊伍了。此外還可以利用AI權(quán)重變化,把AI權(quán)重降為0,AI就徹底不會出這支小隊了。以上只是簡單的舉例,具體到如何編排AI的隊伍,就要各位modder自己開動腦筋了。關(guān)于機場飛機:Ra2對機場飛機的判定極為坑爹。飛機一旦離地,AI就會傾向于認(rèn)為飛機"沒了"……而一旦AI造的機場飛機和正好回歸的飛機撞了停機坪,就有大概率彈框。目前較為穩(wěn)妥的方式是,用飛機自身的數(shù)量作為觸發(fā)前提,盡可能單個制造。需要群體出擊的話通過重組組成大隊出擊,但是補充飛機時優(yōu)先重組現(xiàn)有飛機。大體流程如下:飛機數(shù)量小于4(視機場數(shù)量和停機坪數(shù)量而定)時,制造包含1架飛機的低優(yōu)先小隊,該小隊Max=4。飛機數(shù)量等于4時,編成4架飛機組成的高優(yōu)先級隊伍出擊。高優(yōu)先級小隊可以調(diào)用低優(yōu)先級小隊成員。利用重組的方法,減少AI大批量造飛機的可能性,這樣即使偶爾撞停機位也不至于崩潰。以上就是AI(MD).ini的四個主要板塊,其實還是很好理解的。關(guān)于命名:原版AI條目都是毫無規(guī)律的數(shù)字。但是在自己編寫AI的時候,完全可以采用有規(guī)律的命名方式,這樣在4個部分切換的時候會非常方便記憶和查找。采用何種規(guī)律取決于自己的記憶習(xí)慣,只要不超過32個字節(jié)即可。另:-G完全沒用,唯一的用處是可以確保AI項目的注冊名不會跟其他項目的注冊名重復(fù)。以下舉幾個命名規(guī)律的例子,四個[]分別對應(yīng)[TaskForces]、[ScriptTypes]、[TeamTypes]、[AITriggerTypes](實際寫的時候AITriggerTypes沒有[]):[3HTNKTask-G]、[3HTNKScript-G]、[3HTNKTeam-G]、[3HTNKTrigger-G][3HTNK001-G]、[3HTNK101-G]、[3HTNK201-G]、[3HTNK301-G][AL000001-G]、[AL100001-G]、[AL200001-G]、[AL300001-G][3ENG-G]、[CapOil-G]、[3ENGCapOilTeam-G]、[3ENGCapOilTrig-G][Ass♂We♂Can]、[Deep♂Dark♂Fantasy]、[Thank♂You♂Sir]、[DA☆ZE][金坷垃]、[是我噠]、[真不傻]、[不給他](用中文和!會出bug,不建議)其他:吱吱醬的AI檢查腳本是極好的輔助工具,能夠查出不少容易被忽略的細(xì)節(jié)疏漏。第五章 地圖相關(guān)地圖中可以單獨添加AI,為了區(qū)分地圖中的AI和aimd.ini中的AI,通常把寫在aimd.ini中的叫做全局AI,寫在map里的叫做和本地AI。[General]、[TaskForces]、[ScriptTypes]、[TeamTypes]、[AITriggerTypes]都可以在地圖里單獨設(shè)定,且優(yōu)先級高于ini文件。在制作玩法較為特別的地圖時,為地圖單獨設(shè)定一套專有的AI會大大提高地圖可玩性。且地圖里可用路徑點來完成一些全局AI無法通用的操作。另外有兩句十分重要的語句:[Basic]IgnoreGlobalAITriggers=bool ;是否屏蔽全局AI。AI測試圖的關(guān)鍵語句。另外一些特殊玩法地圖也可以屏蔽掉全局AI,用地圖內(nèi)置AI取代全局。AI的編寫和測試是一個繁瑣的工作。自制一張簡易的AI測試圖會非常有幫助。AI測試圖需要的大概就只有兩個發(fā)展空間足夠大的島和一條通道,再擺上一些中立建筑可進駐建筑之類的,用以測試一條完整的AITrigger能不能順利觸發(fā),用處巨大。[AITriggerTypesEnable]對【遭遇戰(zhàn)地圖】,控制本地AI是否生效,對全局AI完全無效。格式"通常"是:AITriggerTypes注冊名=bool。目前可以確定遭遇戰(zhàn)地圖中必須把本地AITriggerTypes=寫進去才能生效,但是"="后面寫任何東西都算激活該條AITriggerTypes。不寫或只寫到=則視為該AITriggerTypes無效。舉個栗子:某遭遇戰(zhàn)地圖的[AITriggerTypes]項下有AI555、AI998、AI2333、AI6666、AI114514一共5個本地AITriggerTypes,[AITriggerTypesEnable]寫成如下鳥樣:[AITriggerTypesEnable]AI555==AI2333=倪達耶德AI6666=noAI114514=那么AI555、AI2333、AI6666生效,AI998和AI114514都不生效。對【戰(zhàn)役地圖】生效方式很(待)奇(確)葩(認(rèn)),據(jù)說戰(zhàn)役地圖全局AI默認(rèn)yes,本地AI默認(rèn)no。[Basic]IgnoreGlobalAITriggers=yes會覆蓋AITriggerTypesEnable中列出的全局AI。如果要禁用部分全局AI,則應(yīng)將要禁用的全局AITriggerTypes在此列出并寫no,同時IgnoreGlobalAITriggers寫為no。如果要在開局時啟用部分本地AI,則要將本地AIAITriggerTypes在此列出并寫yes。此外還可以通過觸發(fā)無視以上步驟激活本地AI。Ares地圖相關(guān):除了預(yù)置單位以及開局就刷出來的單位,地圖觸發(fā)無法刷出帶載荷的運輸單位,因此需要通過其他方法實現(xiàn)刷載荷單位。PLUS Ares平臺下的AI騷操作雖然Ares在AI方面并沒有多少針對性改動,不過卻在無意之間為AI提供了更多可能性。套皮單位:Ares最有價值的一環(huán),即玩家無法識別的套皮單位。然而AI卻可以識別,如何只能讓AI制造套皮單位就是應(yīng)用的關(guān)鍵。如果是直接制造,我們知道AI制造非建筑時會受到TechLevel限制,卻無視Prerequisite,因此只要讓套皮單位的TechLevel保持正常,把Prerequisite設(shè)定成玩家無法獲得的建筑就可以了,比如無法占領(lǐng)的中立建筑(篝火、郵筒、陽傘、毛巾、垃圾箱、熱狗攤等),也可以是只有注冊名卻不實際存在的"注冊建筑"。非直接制造的話,其實被玩家獲得也沒啥影響,反正看不出來。套皮單位結(jié)合合理全局設(shè)置和AI腳本,甚至可以實現(xiàn)AI精確操控傘兵。(其實不套皮也能,只不過有時不能精確控制)無節(jié)操運輸:套皮單位的一個分支,可以避免AI裝載貨物時各種卡死,以及運輸腳本的諸多限制。借助Ares甚至可以做到多個運輸單位同時存在于同一個AI編隊,并且流暢地完成運輸任務(wù)。雖然穿幫較為明顯,但"AI必須通過一定程度的作弊來才能與玩家抗衡",綜合來看,還是能讓AI做出比正常情況下更為多樣的表現(xiàn),是利大于弊的。Delivery超武:這個神奇的超武可以幫助AI完成許多特別的操作。比如通過觸發(fā)在地圖上刷出具有初始載荷的單位,一定程度上解決了地圖觸發(fā)刷的單位沒有載荷的問題。還有讓AI更加智能地運用防御塔防守的策略(特別鳴謝該戰(zhàn)術(shù)的研發(fā)者星星):在敵人進攻到家門口時貼臉造起一座塔,打敵人個猝不及防,讓AI表現(xiàn)得更像玩家。此外,由于地圖觸發(fā)無法刷出帶載荷的運輸單位,可以考慮使用Delivery超武刷載荷單位,再結(jié)合AI腳本讓AI控制該單位。模塊化:拆分ini的功能使得AI可以更容易地分塊進行添加和測試,活用#include功能可以加快AI制作的效率,對AI制作流程優(yōu)化有著很明顯的幫助。以上列舉的有趣玩法僅供參考,還有更多的可能性需要大家自行發(fā)掘。教學(xué)部分至此結(jié)束。AI是個制作水平很難快速提升,一方面需要足夠開闊的腦洞才能在諸多引擎限制之中找到賦予AI騷操作的套路,另一方面也需要枯燥乏味的海量測試來觀測AI的執(zhí)行效果。即使是這篇教程,也會有不少不嚴(yán)謹(jǐn)或測試不到的地方,細(xì)節(jié)之處還是需要自行測試。最后,重復(fù)一遍,一套完整的AI是Rules設(shè)定、ai(md).ini以及單位代碼共同作用的結(jié)果,AI的許多騷操作都要通過不同領(lǐng)域的功能組合才能實現(xiàn)。希望這篇教程能拓寬你的思路,并且創(chuàng)造出新的AI套路。 Madman_M 2019.04.22

ai的藝術(shù)的評論 (共 條)

分享到微博請遵守國家法律
侯马市| 会东县| 文水县| 唐河县| 舒兰市| 冕宁县| 鄂托克前旗| 泾川县| 莱芜市| 水富县| 江源县| 连州市| 渝中区| 荣昌县| 龙胜| 兴安盟| 长乐市| 敖汉旗| 上高县| 涿州市| 华安县| 济源市| 文成县| 宁阳县| 定安县| 宜黄县| 卢氏县| 台安县| 鹤岗市| 抚松县| 古丈县| 孝昌县| 和林格尔县| 京山县| 保德县| 海盐县| 侯马市| 遵化市| 墨竹工卡县| 洛扎县| 治县。|