FC2ブログ

Spiral Dance

ゆーあんしーの日々の出来事と興味のあるもののメモです。

Battlefield 3

最近はBattlefield3をやっています。初FPSで、去年の11月頃から。Diablo3もやりましたが、nerf続きで萎える上、腱鞘炎になります。

BF3も、最初は航空機とか乗りまくって無駄に死にまくってましたが、内輪でメトロが大人気なのでホントにメトロしか行っていません。さすがに同じマップばかりやってると、ミニマップ見ただけで敵がどこで何をしてるかがわかるので、爆発物を投入しなくとも、直接狙撃で敵を排除できるのですが、あまりやりすぎると何故か怒られますw

海外サーバで遊んでることが多いので、基本的に接近戦は苦手です。予備動作で回避運動+無駄撃ちしてないと、0.1~0.2secのラグで間違いなく撃ち負けます。
スポンサーサイト




  コメントを書く(0)
このページのトップへ

AIを強化する

 AI相手でしばしば起こるのが、戦力差が酷いのになんとか勝ってしまうこと。特に、少人数のハラスに対して、喩え相手は本陣侵攻中でもAI側は全力で全員が防衛に帰ってしまう点はいただけない。この点だけでも何とかならないかと考えたのが、このTrigger。

 3人マップなら、Trigger ModuleにこのTriggerをコピペしてしまえば、AIは喩え味方の拠点が襲われようとも、一度食らいついたWorkerやStructureへの攻撃はやめなくなる。

 もちろん、自陣の重要な拠点が攻撃されたり、戦闘が不利な場合は戦力を戻すが、侵攻のタイミングはちゃんとAI同士合わせてくれるので頼もしい。

 FrenzyTimerは30secに設定してあるが、マップによって調整してみてもいいと思う。

 4人マップも少し手直しすればそのまま使える。


====
FrenzyTime = 30.0
FrenzyTimer = (New timer)

FrenzyAttack (Trigger)

Events
Unit - Any Unit is attacked
Local Variables
Conditions
And
Conditions
( (Owner of (Triggering unit)) is in (Players on team 1)) == true
Or
Conditions
(Duration of FrenzyTimer[(Owner of (Attacking Unit))]) <= 0.0
(Duration of FrenzyTimer[(Owner of (Attacking Unit))]) >= FrenzyTime
Or
Conditions
( (Unit type of (Triggering unit)) has Structure attribute) == true
( (Unit type of (Triggering unit)) is Worker) == true
Actions
Player - Make player (Player 1 from (Players on team 2)) treat player (Owner of (Attacking Unit)) as Neutral With Shared Vision
Player - Make player (Player 2 from (Players on team 2)) treat player (Owner of (Attacking Unit)) as Neutral With Shared Vision
Player - Make player (Player 3 from (Players on team 2)) treat player (Owner of (Attacking Unit)) as Neutral With Shared Vision
Timer - Start FrenzyTimer[(Owner of (Attacking Unit))] as a One Shot timer that will expire in FrenzyTime Game Time seconds


FrenzyEnd (Trigger)

Events
Timer - FrenzyTimer[4] expires
Local Variables
Conditions
Actions
Player - Make player (Player 1 from (Players on team 2)) treat player 4 as Ally With Shared Vision
Player - Make player (Player 2 from (Players on team 2)) treat player 4 as Ally With Shared Vision
Player - Make player (Player 3 from (Players on team 2)) treat player 4 as Ally With Shared Vision


FrenzyEnd 2 (Trigger)

Events
Timer - FrenzyTimer[5] expires
Local Variables
Conditions
Actions
Player - Make player (Player 1 from (Players on team 2)) treat player 5 as Ally With Shared Vision
Player - Make player (Player 2 from (Players on team 2)) treat player 5 as Ally With Shared Vision
Player - Make player (Player 3 from (Players on team 2)) treat player 5 as Ally With Shared Vision


FrenzyEnd 3 (Trigger)

Events
Timer - FrenzyTimer[6] expires
Local Variables
Conditions
Actions
Player - Make player (Player 1 from (Players on team 2)) treat player 6 as Ally With Shared Vision
Player - Make player (Player 2 from (Players on team 2)) treat player 6 as Ally With Shared Vision
Player - Make player (Player 3 from (Players on team 2)) treat player 6 as Ally With Shared Vision

  コメントを書く(0)
このページのトップへ

公式マップの改造のTIPS

 公式マップを改造するためには、まずFile - Openから、Battle.netタブを開き、loginしてからBlizzardのマップを呼び出せば、ファイルが開かれる。

 改造の際、注意しなければいけない点がある。まず、呼び出したマップは、名前をつけて保存し、一度closeしてしまったほうがよい。開いたばかりのマップはロックがかかっているのか、保存が完全に行われない場合があるため。

 再度、ローカルに保存したファイルを開き、Map - Map Infoを開き、マップの名前を変更し、右上のCopy To All Localesを押す。そうすれば、わざわざアップロード時に名前について既存名の警告を見なくて済む。


  コメントを書く(0)
このページのトップへ

StartLocationを自由に設定する 簡単な方法

 Triggerを使わず、簡単にStart Locationを設定する方法を見つけたのでメモ。ただ、いくつか条件があって、それから外れるとStart Locationがコロコロ変わってしまうので注意。

 まず、Player Propertiesで希望するStart Locationを設定する。

 次に、Game Valiantsを開いて、Default以外のValiantを作る。Game Valiantsは詳しい説明が無いので分かりにくい上、たまに条件が保存されてない場合もあるので注意。Generalで名前を適当に付け、左のリストから右クリックでDefaultに設定(他にない場合はDefault設定しなくていい)。

 Game Typeは適当に。Custom/Customで名前を適当に付けてやるのがいい。この名前はゲーム分類やLobbyで表示に使われる。

 Attlibuteを開いて、次の3つを設定してやる。

    • Premade Game - Yes
    • Teams [Premade] - 4v4(適当なもので) Lockedにする
    • Team [Premade: 4v4(適当なもので)] ここでチーム分けを行い、AIの配置されるTeam 2以降はLockedにしておく。

 これで、ゲーム開始時にAI追加ボタンを押してAIを追加して行くと、AIが4v4ならTeam2のPlayer 8から配置されていき、UserはTeam1のPlayer 1から配置されていく。

 AIがTeam2のPlayer 8から配置されていかない場合は、Attlibuteがちゃんと保存されてない場合もあるので注意。

  • ※配置後に混ぜるとおかしくなります。AIだけに対戦させてもおかしくなります。AIだけでテストする場合は、Player PropertiesからcontrollをComputerに変更してuploadしなおす。

イレギュラーな人数構成の場合

 例えば、3v5や3v3v3などの場合は、Attlibuteの内容を変更する。

    • Premade Game - None (つまり設定しない)
    • Teams - 3Teamsなど、チーム数を決める Lockedにする
    • Team [3Teams] チーム数にあわせて選択。チーム分けを行い、AIの配置されるTeam 2以降はLockedにしておく。

 あとは、AI追加ボタンで追加していけば、最後のTeamから埋まっていく。

その他、Game Valiantsについてメモ

 Lobby Delay - ゲームスタート時のカウントダウン。3にしておくと便利。

 Premade Game - Teams [Preamde]と組み合わせて使う(ものだと思う)。

 Teams - イレギュラーなparty構成用。

 Teams [Premade] - 1v1~6v6のparty構成用。

 Color - 内輪のグループがあまり使わない色を設定しておくと便利。

 Controller - 基本、触らないでいい。全部Computerだとuploadできないので注意。

 Difficulity - 普段使う難易度に設定しておけば便利。


  コメントを書く(0)
このページのトップへ

StartLocationを自由に設定する 追記

 Start Locationを自由に設定する場合、AIがExpandやOverlordのストック場所を本来のStart Location傍に設定してしまう問題があるが、ひとつ、妥協策を発見。というか、基本的な設定なのだが、AIが配置されるplayerスロットのStart Locationをrandomではなく、固定にしてしまう。

 前に書いたStart Locationの設定Triggerで、playerがuserの場合はrandom配置し、computerの場合は完全に固定にしてしまえばいい。もちろんこの場合、Team内にuserとcomputerが同居することはできないので、完全にcoopAI Mapに使う必要がある。computerを混ぜる可能性がある場合は、random配置は諦めよう。

問題点について追記

 もうひとつ問題点。前回記載したStart Locationを設定するTriggerは、本来のStart LocationとTriggerが新たに指定するStart Locationが同じ場所だった場合、AIが正しくExpandしなくなる問題がみつかった。

 原因は、Initialize AIにはAIのMain Townの設定とStart Harvesting(初期ユニットでの採取開始)が含まれているようで、それらは本来のStart Locationで行われるのだが、新たにMain Townの設定やStart Harvestingが重なると、AIに不具合が発生してしまうためと思われる。

 単純に、新たに指定するStart Locationと本来のStart Locationが同じ場合に、Main Townの設定とStart Harvestingを行わなければいい。

  • ※とりあえずは、前回のTriggerを修正しておく。

  コメントを書く(0)
このページのトップへ

Spiral_Dance_4v4_AW

f:id:You-unseen:20110202200421p:image:right

256x256MAP 4v4(COOP)

 Triggerをいろいろテストしてみたmap。4v4とあるが、実際は4v8AI、グルーピングは4v2v2v2v2になっていて、AI同士はneutral & shared vision。4v4AIも可能だが、Triggerエラーが出ると思う(気にしなければok)。

 4人以下でplayする場合、Team5から順にAIを外していけば良い。そうすれば、時計回り方向の入り口を固めれば良いようになっている(上から時計回りにTeam2、3、4、5と配置)。

 Player側は中央の2nd/3rd expandが用意され、入り口も三方を高台に囲まれた極めて有利な陣地。加えて、TriggerによるForce Field WallとGuardian Podに守られている。最下段はまた、約2分に1回のCreep Lavaの上昇により、ダメージとCorruption効果を受ける。

 Force FieldはCreep Lavaが上昇してくる十数秒の間だけ有効。警報が鳴っても実際にダメージを受けるまでは30秒弱あるので、Force Fieldのcountdownが実際の目安。

 Guradian Podは広範囲(20)にGuardian Shieldの効果を齎すが、PodのShieldが無い場合はエネルギーをShield再生に回すため、その間Guardian Shieldは無効になる。Pod自体は非常に脆弱(Life/Shield: 150/150)。

 AI側は70%以上のhandicapが望ましい。テストした結果、60%以下は簡単で、AIでも勝てる。

追加

 AI側のハラス対策として、本陣を巡回するTriggerを加えた。といっても、一部の対空unitをぐるぐる回すだけの単純な物なので、大したものではない。このハラス対策ユニットの分、攻撃が弱くなっているのでhandicapはもう少し高くてもいいと思う。

さらに追加

 expand後のAIが弱いので、AI用の近場のexpandを用意。さらに、本陣とexpandを入れ替えて、後背地にexpandが位置するように変更。

 また、Kingの要望で坂を封鎖しやすいようにしたが、逆に建築可能な土地が減っている。文句はKingに。

もひとつ追加?

 AIの初期workerを少し減らして、handicapを100%にしてもいいかもしれない。そうすれば1st rushが極端に強くなく、その後もrushが持続するかも。

1~3人で遊ぶ方法

 1v2AI~3v6AIでも遊ぶ方法を追加した。lobbyで、とりあえず敵側のAIをすべて埋めてから、Team5からAIを削除していけばok。3人の時はTeam5を、2人のときはTeam4,5を、1人のときはTeam3,4,5のAIを外せば、それぞれGuardian Podがある通路側からAIが攻めてくる。


  コメントを書く(0)
このページのトップへ

ローカルテストでチーム戦

 ローカルでテストすると、Team分けが有効にならずにFFAになってしまう。ロビーを通してないのが原因と思われるが、簡単な対処法はまだ知らない。

 ちなみに、SC2をそのまま起動した場合、Editorからローカルテストが起動できない。Editor経由で起動したSC2は、ゲームを落とさない限りは何度でもローカルテストできる。ただ、この場合Window modeがfull screenかwindowに固定されるので、Window(full screen)とかにしてる人はいちいち設定しなおす必要がある。また、grafic設定もEditorの設定が反映されてしまう。

 他、ログインした状態でローカルテストすると、リプレイが記録されるので便利。テストプレイだけ回しておいて、あとでリプレイチェックすれば楽。

Triggers Moduleでチーム戦を設定

 まず、下準備としてPlayer Propertiesで、player controllをComputerにしておく(自分も遊びたいならplayer 1だけuserに)。また、Start Locationを割り振っておく。Team Placementが反映されないので、チーム戦には必須。

  • ※Publish時にはこれらの設定は元に戻しておく必要がある。

 次に、Triggers Moduleを使って、それぞれのPlayerに、お互いのAlliance設定と、視野の共有化を行う。これは、個々のplayerについて設定する必要があるので、4人チームだと、player 1を2~4に味方設定、player 2を3~4に味方設定、player 3を4に味方設定しなければならない。この辺はwhole等を使えばok。

  • ※1と2、2と3が味方、でも1と3は敵の場合、2の陣内で1と3が戦闘を始めるけど2はthruな状況が発生する。

 publish時は、each picked player~の部分をdisableしておけば良いだけ。

Triggers Module - ローカルテストでチーム戦

  • ※Player PropertiesでStart Locationを設定しておくこと。

Melee Initialization

Events

Game - Map initialization

Local Variables

team = 0 <Integer[4]>

J = 0 <Integer>

I = 0 <Integer>

Conditions

Actions

Melee - Set melee starting resources for all players

Melee - Create melee starting units for all players

Melee - Start the melee AI for all computer players

Melee - Set default melee options for all players

Variable - Set I = 1

General - While (Conditions) are true, do (Actions)

Conditions

I <= 5

Actions

Variable - Set team[1] = (I + 1)

Variable - Set team[2] = (I + 2)

Variable - Set team[3] = (I + 3)

Variable - Set team[4] = (I + 4)

Variable - Set J = 1

General - While (Conditions) are true, do (Actions)

Conditions

J <= 4

Actions

General - If (Conditions) then do (Actions) else do (Actions)

If

team[J] > 5

Then

Variable - Set team[J] = (team[J] - 5)

Else

Variable - Set J = (J + 1)

Variable - Set J = 1

General - While (Conditions) are true, do (Actions)

Conditions

J <= 4

Actions

Player - Make player I and player team[J] treat each other as Ally With Shared Vision, Control, And Spending

Player - Make player (I + 5) and player (team[J] + 5) treat each other as Ally With Shared Vision

Variable - Set J = (J + 1)

Variable - Set I = (I + 1)


  コメントを書く(0)
このページのトップへ

Recent Entries

Calendar

09月 « 2020年10月 » 11月
Sun Mon Tue Wed Thu Fri Sat
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Categories

Search

Information

You-unseen

Recent Comments

Recent Trackbacks

Archives

Links