だいたい435日前に更新最終更新日時: 2009-06-27 (土) 19:43:13
現在の位置
FrontPage > Mutator作成講座
『0から始めるMutator作成講座』 †[段落を編集]
スクリプトの意味が1ミリもわからない初心者でも一応Mutatorが作れる感じの講座です。
UnrealScriptについての正式な勉強をしたくない人や、
Mutatorを作りたいけど、色々な知識を頭に入れるのが面倒くさいという人向けの内容となっております。
実際に、簡単なMutatorを作りながら解説していきます。
なるべく難しい用語を使わないよう心がけていますので、初心者のみなさんも気軽に挑戦してみて下さい。
目次(I) [折り畳む]
- 『0から始めるMutator作成講座』
- とりあえずMutatorを作ってみよう。
- ①フォルダを作る。
- ②ucファイルを作る。
- ③UTEditor.iniを編集する。
- ④ファイルをコンパイルする。
- ⑤出来上がったファイルを移動する。
- ①フォルダを作る。
- ② ucファイルを作る。
- ③UTEditor.iniを編集する。
- ④ファイルをコンパイルする。
- ⑤出来上がったファイルを移動する。
- http://schiphol.2ch.net/test/read.cgi/gamef/1195129739/l50
- http://wiki.beyondunreal.com/
- http://www.codekisk.com/unreal/ut3/scriptref/
- http://utforums.epicgames.com/forumdisplay.php?f=350
とりあえずMutatorを作ってみよう。 †[段落を編集]
難しいスクリプト系の説明は抜きに、とりあえず手順と法則だけをわかりやすく解説します。
①フォルダを作る。 †[段落を編集]
まずはフォルダの用意からです。
My Documents\My Games\Unreal Tournament 3\UTGame\Src\
内に、好きな名前のフォルダを作ります。これがMutatorの苗字みたいな感じになります。
ここでは仮に、
ShoshinshaMutator
という名前のフォルダにしておきましょう。
そしたら、今作ったShoshinshaMutatorフォルダの中に、
Classes
という名前のフォルダを作って下さい。
このClassesフォルダの中に、Mutatorの命令文を書いたファイルを作ることになります。
②ucファイルを作る。 †[段落を編集]
では、まずは『Healthの初期値と最大回復値を変更する』という内容のmutatorを作ってみましょう。
メモ帳を開き、次のような文を記述した後、
UT3WikiScriptA.uc
というファイル名でClassesフォルダの中に保存して下さい。
(保存する際には、ファイルの種類のところを『テキスト文書』ではなく『全てのファイル』に変更する事を忘れずに。)
class UT3WikiScriptA extends UTMutator config(UT3WikiScriptA);
var config int Health;
var config int HealthMax;
var config int SuperHealthMax;
function ModifyPlayer(Pawn Other)
{
if(UTPawn(Other) != none)
{
super.ModifyPlayer(Other);
UTPawn(Other).Health = Health;
UTPawn(Other).HealthMax = HealthMax;
UTPawn(Other).SuperHealthMax = SuperHealthMax;
}
}
defaultproperties
{
Health=200
HealthMax=500
SuperHealthMax=1000
}
Scriptの内容は、いろいろいじりだすと物凄く難しいんですが、
とりあえず初心者的にここで重要なのは、
class UT3WikiScriptA extends UTMutator config(UT3WikiScriptA);
という行と、
Health=200
HealthMax=500
SuperHealthMax=1000
という行です。
最初の行にある、UT3WikiScriptAという部分は、そのスクリプトの名前のようなもので、
保存するファイル名と同じにしなければなりません。
つまり、
○○○○.ucというファイル名なら、
最初の行には、
class ○○○○ extends UTMutator config(○○○○);
と書かれていなければならず、
逆に言うなら、最初の行に、
class ×××× extends UTMutator config(××××);
と書いたなら、
××××.ucというファイル名で保存しなければならない。
とここでは考えてください。
(例)
class UT3WikiScriptA extends UTMutator config(UT3WikiScriptA);
なら
UT3WikiScriptA.ucとして保存する。
(例)
class Example extends UTMutator config(Example);
なら
Example.ucとして保存する。
次の、
Health=200
HealthMax=500
SuperHealthMax=1000
という行は、
プレイヤーのHealthの初期値を200に変更する。
MediumHealthを使って回復できる上限を500に変更する。
HealthVialやSuperHealthを使って回復できる上限を1000に変更する。
といった感じの命令です。
数字はお好みの値に変更しても構いません。
…というわけで、UT3WikiScriptA.ucができました。
このままコンパイルすることも可能ですが、ついでですので、このMutatorの兄弟分となるMutatorを作りましょう。
今度は、『各武器の初期弾数と最大弾数を変更する』という内容のMutatorを作ってみます。
またメモ帳を開いて、次のような文を記述した後、
UT3WikiScriptB.uc
というファイル名で先程と同じClassesフォルダの中に保存して下さい。
class UT3wikiScriptB extends UTMutator config(UT3WikiScriptB);
function bool IsRelevant(Actor Other)
{
if(Other.IsA('UTWeap_Enforcer'))
{
UTWeapon(Other).AmmoCount = 3;
UTWeapon(Other).MaxAmmoCount = 9;
}
if(Other.IsA('UTWeap_Stinger'))
{
UTWeapon(Other).AmmoCount = 1000;
UTWeapon(Other).MaxAmmoCount = 3000;
}
return super.IsRelevant(Other);
}
大体見てわかるとおり、
if(Other.IsA('UTWeap_Enforcer'))
{
UTWeapon(Other).AmmoCount = 3;
UTWeapon(Other).MaxAmmoCount = 9;
}
というのが、
エンフォーサーの初期弾数を3発に変更し、最大弾数を9発に変更するという命令です。
これをたとえば、
ショックライフルの初期弾数を2発に変更し、最大弾数を4発に変更するという命令にしたければ、
この部分を
if(Other.IsA('UTWeap_ShockRifle'))
{
UTWeapon(Other).AmmoCount = 2;
UTWeapon(Other).MaxAmmoCount = 4;
}
に書き換えれば良いというわけです。
スクリプトに記述するための武器の名前は、
UTWeap_RocketLauncher
UTWeap_FlakCannon
UTWeap_SniperRifle
UTWeap_LinkGun
UTWeap_ImpactHammer
UTWeap_Enforcer
UTWeap_ShockRifle
UTWeap_Stinger
UTWeap_BioRifle_Content
UTWeap_Avril_Content
UTWeap_Redeemer_Content
このようになっており、
バイオライフル、アブリル、リディーマーには、後ろに_Contentが付くので注意して下さい。
(例)
バイオライフルの弾数を変更したい場合
if(Other.IsA('UTWeap_BioRifle_Content'))
{
UTWeapon(Other).AmmoCount = 300;
UTWeapon(Other).MaxAmmoCount = 3000;
}
と書けばいい。
このようにして、UT3WikiScriptB.ucもできました。
My Documents\My Games\Unreal Tournament 3\UTGame\Src\ShoshinshaMutator\Classes\
に、UT3WikiScriptA.ucとUT3WikiScriptB.ucの二つのucファイルができたということですね。
これらのmutatorは、言わば兄弟のようなもので、コンパイル時にまとめて取り扱われます。
ShoshinshaMutatorが苗字で、UT3WikiScriptA、UT3WikiScriptBが名前だと考えるとわかりやすいです。
それと、今ふたつのucファイルを作りましたが、今後、この種類のファイルを改変する機会に備えて、ファイルの関連付けを行っておくと便利なので、今のうちにやっておきましょう。
今作ったucファイルを右クリックし、プロパティを選んで下さい。
すると、『変更』というボタンがあるので、それを押します。
そうすると、関連付け候補のプログラムがいっぱい出てくるので、
その中から、NotepadやWordpad等の文書作成ソフトを選びます。
こうすることで、ダブルクリックでいつでもucファイルを編集することができるようになります。
…まあこういうのは、ここで説明するまでもないかもしれないですね。
③UTEditor.iniを編集する。 †[段落を編集]
それでは、今作ったucファイルを、実際にゲームで使えるuファイルに変換してみましょう。
ファイルのコンパイルと呼ばれる作業です。
そのためには『どのフォルダ内のucファイルをコンパイルするのか』をUTEditor.iniに書いておかなければなりませんので、
まずは、
My Documents\My Games\Unreal Tournament 3\UTGame\Config\
を開き、UTEditor.iniというファイルがあるかどうかを確認して下さい。
過去に一度でもUnrealEditorを起動したことがある人は、おそらくそこにあるはずですが、
このファイルがConfigフォルダ内にない人は、一度UnrealEditorを起動する必要があります。
UnrealEditorの起動方法がわからない人は、
スタートメニューの『ファイル名を指定して実行』から、
"C:\Program Files\unreal tournament 3\Binaries\UT3.exe" editor
と入力すれば起動できます。
Steam版の場合は、
"C:\Program Files\Steam\steamapps\common\unreal tournament 3\Binaries\UT3.exe" editor
です。
UnrealEditorを閉じると、Configフォルダ内にUTEditor.iniが自動で作成されるはずです。
UTEditor.iniがちゃんとあることを確認できたら、
メモ帳等で開いて下さい。
すると、だいぶ下のほうに、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
と書いてある箇所があるので、
ここに新しく、
ModPackages=○○○○
という感じの行を追加します。
ここに書くのは、一番最初にSrcフォルダの下に作ったフォルダの名前で、
先程、苗字と呼んだやつですね。
つまり、ここでは、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=ShoshinshaMutator
と書けば良い訳です。
(例)
作ったフォルダの名前が
ShoshinshaMutator
の場合、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=ShoshinshaMutator
(例)
作ったフォルダの名前が
JoukyuushaMutator
だった場合、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=JoukyuushaMutator
書き終わったら、上書き保存して下さい。
④ファイルをコンパイルする。 †[段落を編集]
次に、実際にコンパイルを行うために、
適当な場所(デスクトップ等)に、cmd.exeへのショートカットを作ります。
cmd.exeは、
C:\WINDOWS\system32
内にあるので、WINDOWSフォルダを検索するなどしてcmd.exeを見つけたら、
右ドラッグでデスクトップへ持って行き、『ショートカットをここに作成』を選びましょう。
そうするとショートカットが作れます。
または、デスクトップ上の何もない場所を右クリックして、新規作成→ショートカットという順に進んでいくとショートカット作成画面が表示されるので、
そこに直接、
C:\WINDOWS\system32\cmd.exe
と入力してもショートカットが作れます。
ショートカットが作れたら、今作成したショートカットを右クリックして、プロパティを選択してください。
すると、『作業フォルダ』という欄があり、そこにはC:\WINDOWS\system32と入力されていると思いますので、
これを、UT3.exeの入っているフォルダのアドレスに書き換えます。
パッケージ版なら、
"C:\Program Files\unreal tournament 3\Binaries"
Steam版なら、
"C:\Program Files\Steam\steamapps\common\unreal tournament 3\Binaries"
と入力してください。
入力ができたらOKを押してください。
そして、今作ったショートカットを開くと、コマンドプロンプト画面が出るので、
そこに、
ut3.exe make
と入力します。
すると数秒で別ウィンドウが立ち上がり、コンパイルが始まります。
緑色の文字で、Success - 0 error(s), 0 warning(s)と出れば多分成功です。
My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC\Script\
にuファイル、
My Games\Unreal Tournament 3\UTGame\Config\
にiniファイルが作成されているはずです。
ここでの場合、
ShoshinshaMutator.u
と、
UTShoshinshaMutator.ini
ですね。
この2つのファイルに、先程書いたMutatorの情報がいろいろ詰まっているわけです。
ちなみに、記述ミスか何かが原因で正常にコンパイルが完了しないときは、赤や黄色の文字が表示され、
どういった問題でコンパイルに失敗したのかや、その問題があった箇所がどこであるかを教えてくれますので、
その指示に従うと良いです。(専門用語みたいなものが多く、かなりわかりにくいですが。)
それと、このコマンドプロンプト画面ではUT3のコンソール画面と同じように、一度打った文字は記憶してくれますので、
キーボードの『↑』キーを押すと、以前打った文字が出てきます。
コンパイルの失敗が続いた場合など、連続して利用する時にはすごく便利です。
⑤出来上がったファイルを移動する。 †[段落を編集]
無事コンパイルが成功したら、早速、今作ったMutatorをゲーム内で使ってみましょう。
作成されたuファイルは、Unpublished内にあり、このままではゲーム内で使用できませんので、
今作成した
ShoshinshaMutator.u
を、
My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC\Script\
から、
My Games\Unreal Tournament 3\UTGame\Published\CookedPC\Script\
へと『移動』してください。
『コピー』ではなく『移動』する理由は、
次の機会に、同じ名前の物をコンパイルする場合に備えるためで、
My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC\Script\
内に、コンパイル済みのuファイルがあると、
たとえucファイルを新しく書き換えて再コンパイルしても、
UT3.exeが、
『その名前のucファイルはもうコンパイルしてあるから、もう一度コンパイルする必要は無いよ。』
といった感じに判断してしまうからです。
つまり同じ名前の物を新たにコンパイルしようとすると、uファイルは自動で上書きされず、コンパイル自体が行われないので、
事前に古いuファイルを削除しておく必要があるのです。
尚、Published\CookedPC\Script\内にあるuファイルと同じ名前の物を新たにコンパイルすると、
自動でPublished\CookedPC\Script\内にあるuファイルは削除されるので、
スクリプトの編集→コンパイル→テストプレイ→スクリプトの編集→…
と繰り返すような場合、やはり『コピー』でなく『移動』のほうがいいわけです。
(Mutatorの調整等で、繰り返しコンパイルを行うことが結構よくあります。)
ということで、uファイルの移動が終わったらUT3を起動してみましょう。
InstantActionにてMutatorのリストを見れば、先程作った二つのMutatorが追加されているはずです。
どうでしょう? ちゃんとHealthの量と、EnforcerとStingerの弾数が変更されているでしょうか?
一通りテストプレイをしてみて、不具合や気に入らない点等があれば、またUCファイルへの記述をいろいろいじってみると良いです。
それと一応、サーバーへ導入するには、このような感じに書けばいいです。
(batファイルへの記述例)
ut3.exe server CTF-FacingWorlds?Game=UTGameContent.UTCTFGame_Content?maxplayers=8?numplay=4?mutator=ShoshinshaMutator.UT3WikiScriptA,ShoshinshaMutator.UT3wikiScriptB -login=名前 -password=パスワード -Port=7777 -QueryPort=6500 -log=MyServerLog.txt
(UTMapList.iniの[UTGame.UTMapListManager]への記述例)
GameProfiles=(GameClass="UTGame.UTDeathmatch",GameName="DeathMatch",MapListName="DMMapList",Options="?maxplayers=8?botskill=7?timelimit=10",Mutators="ShoshinshaMutator.UT3wikiScriptB",ExcludedMuts="",bIsTeamGame=True)
当たり前ですが、普通のMutatorと同じですね。
番外編1.ファイルをデコンパイルしてみる。 †[段落を編集]
ucファイルをuファイルへ変換するのがコンパイルですが、一応その逆もできます。
デコンパイルと呼ばれる作業です。
既存のMutatorの中身を見たり、改変したい場合等に便利です。
まずメモ帳を開いて、
"C:\Program Files\unreal tournament 3\Binaries\ut3.exe" batchexport %1 class .uc "C:\Documents and Settings\名前\My Documents\My Games\Unreal Tournament 3\UTGame\Decompiled\%~n1\classes\"
と書き、○○○.batという形式でデスクトップ等に保存して下さい。("名前"って書いてあるところにはwindowsのユーザー名を入れてくださいね。)
(例)
Decompile.bat
これができたら、このbatファイル目掛けて、デコンパイルしたいuファイルをドラッグ&ドロップして下さい。
すると、
My Games\Unreal Tournament 3\UTGame\
に、新しく、
Decompiled
というフォルダが作成されるので、開いてみましょう。
中には今デコンパイルしたMutatorのucファイルが入っているはずです。
これを改変したい場合、このままClassesの上のフォルダごと、
My Games\Unreal Tournament 3\UTGame\Src
へコピーし、あとは今までの要領で数字をいじったり参照先を変えたりといった感じに編集すれば良いですが、
中には作者の意向により、改変禁止、デコンパイル禁止というMutatorもあるので注意して下さい。
だいたい、ucファイルが付属しているMutatorは『中身いじっても良いですよ』という場合が多いのですが、一応ReadMe等には目を通しておきましょう。
それと、ucファイルをコンパイルしてuファイルにした後、そのuファイルをデコンパイルしてまたucファイルにすると、
元のucファイルとは若干記述が変わってしまう場合があるので注意して下さい。
また、既存のMutatorをデコンパイルして出てきたucファイルを改変して再度コンパイルする場合、
あるいは、改変せずに再度コンパイルする場合も、
エラーが出てコンパイルがうまくいかないことがあります。
(エラーの例)
\Program Files\unreal tournament 3\Development\Src\ShoshinshaMutator\Classes\UT3WikiScriptA.uc(23) : Error, BEGIN OBJECT: The component name Sprite is already
used (if you want to override the component, don't specify a class): Begin Object Class=SpriteComponent Name=Sprite ObjName=Sprite A}''{rchetype=SpriteComponent
UTGame.Default__UTMutator:Sprite'
このような場合、ucファイルの中に書いてある、
Begin Object … End Object
という記述をまるまる削除することによってうまくいく場合があります。
(例)
defaultproperties
{
Health=200
HealthMax=500
SuperHealthMax=1000
Begin Object Class=SpriteComponent Name=Sprite ObjName=Sprite Archetype=SpriteComponent'UTGame.Default__UTMutator:Sprite'
ObjectArchetype=SpriteComponent'UTGame.Default__UTMutator:Sprite'
End Object
Components(0)=Sprite
Name="Default__UT3WikiScriptA"
ObjectArchetype=UTMutator'UTGame.Default__UTMutator'
}
↑このように書いてあるとコンパイルに失敗するので、Begin Objectから End Objectまでを全部削除し、
defaultproperties
{
Health=200
HealthMax=500
SuperHealthMax=1000
Components(0)=Sprite
Name="Default__UT3WikiScriptA"
ObjectArchetype=UTMutator'UTGame.Default__UTMutator'
}
↑このようにします。
こうすることでおそらくスクリプトの内容にそれほど(?)傷を付けることなく、コンパイルができるようになります。
大半のMutatorがこの方法で再コンパイルできるようになりますが、中には出来ないものもありますのでご注意下さい。
番外編2.ゲームデータをエクスポートしてみる。 †[段落を編集]
uファイルをucファイルに変換するのがデコンパイルですが、
UT3のゲームデータをucファイルに変換することもできます。
エクスポートと呼ばれる作業です。
これも、既存の武器やビークルの中身を覗いたり改変したりする場合にとても便利なので、やっておきましょう。
まず、UnrealEditorを開いて、Genericと書いてあるウィンドウのActor Classesという箇所をクリックします。
次に、同じウィンドウ内のツールバーからFile→Export All Scripts→『はい』を選びます。
すると、Editorがいろいろ応答しなくなったり、長時間カーソルが砂時計マークになったりして、いかにも危なそうな状態になりますが、これで正常です。
数分後、
My Documents\My Games\Unreal Tournament 3\UTGame\ExportedScript\
に、ucファイルの入ったフォルダがたくさん作成されているはずです。
発展編.UnrealScriptを使って、武器を改造してみる。 †[段落を編集]
せっかくですので、今までの知識を使って、簡単な改造武器を作ってみましょう。
今度は作業手順だけでなく、スクリプトの意味についてもいちいち触れながら説明していきます。
①フォルダを作る。 †[段落を編集]
まずは、今までどおり、
My Documents\My Games\Unreal Tournament 3\UTGame\Src\
にフォルダを作ります。
名前は、
ShoshinshaBuki
とでも付けておいてください。
そしたら、また今までと同じように、作ったフォルダの中に、
Classes
という名前のフォルダを作り、
その中にucファイルを作ります。
② ucファイルを作る。 †[段落を編集]
では初めに、
『プライマリでロケットランチャーのグレネードを発射し、セカンダリでスコーピオンのグレネードを発射するショックライフル』
を作ってみようと思いますので、
メモ帳を開いて、次のような文を記述した後、
GrenadeRifle.uc
というファイル名でClassesフォルダの中に保存して下さい。
class GrenadeRifle extends UTWeap_ShockRifle;
defaultproperties
{
ItemName="GrenadeRifle"
WeaponFireTypes(0)=EWFT_Projectile
WeaponProjectiles(0)=UTProj_Grenade
WeaponProjectiles(1)=UTProj_ScorpionGlob
PickupMessage="GrenadeRifle"
}
保存できましたでしょうか。
では、記述の意味についても説明しておきますね。
最初の行に、
class GrenadeRifle extends UTWeap_ShockRifle;
という文がありますが、
これの、だいたいの意味としては
『このGrenadeRifleは、UTWeap_ShockRifleと同じ性質を持つ。』
みたいな感じだと思ってください。
別の言葉で言うなら、
『これはショックライフルの改造版です。』
『これはショックライフルの複製品です。』
『これはショックライフルの派生種です。』
『このGrenadeRifleは、ショックライフルを基として作られています。』
『このGrenadeRifleは、ショックライフルの遺伝子を受け継いでいます。』
といったところでしょうか。
動物でたとえると、
class シマウマ extends 馬;
class 馬 extends 哺乳類;
class ハト extends 鳥類;
class スズメ extends 鳥類;
class 哺乳類 extends 脊椎動物;
class 鳥 extends 脊椎動物;
みたいなものです。
自分の名前と、その基となっている物が何であるかを表しています。
class ○○○ extends ×××;
と書いてあったら、
基本的に『この○○○は×××と同じ性質を持つ』と考えて下さい。
つまり、我々がucファイルに記述するのは、
基本的に○○○は×××と同じ性質を持っているけど、どの部分がどう違うのかという点で、
ここでの場合、
ItemName="GrenadeRifle"
WeaponFireTypes(0)=EWFT_Projectile
WeaponProjectiles(0)=UTProj_Grenade
WeaponProjectiles(1)=UTProj_ScorpionGlob
PickupMessage="GrenadeRifle"
の部分がそれにあたります。
無理矢理日本語訳を付けるとしたら、
class GrenadeRifle extends UTWeap_ShockRifle;・・・・・・基本的にこのGrenadeRifleは、ショックライフルと同じ性質を持ちますが、
defaultproperties
{
ItemName="GrenadeRifle"・・・・・・武器を持ち替えた時の表示が"GrenadeRifle"である点と、
WeaponFireTypes(0)=EWFT_Projectile・・・・・・プライマリでの攻撃形式が、物体発射型である点と、
WeaponProjectiles(0)=UTProj_Grenade・・・・・・プライマリで発射される物体が、ロケットランチャーのグレネードである点と、
WeaponProjectiles(1)=UTProj_ScorpionGlob・・・・・・セカンダリで発射される物体が、スコーピオンのグレネードである点と、
PickupMessage="GrenadeRifle"・・・・・・武器を拾った時の表示が"GrenadeRifle"であるという点が、もとのショックライフルとは違います。
}
といった具合ですね。
なんというか、
変な例え話ばかりの回りくどい説明でしたが、理解してもらえたでしょうか…。
ここで説明する改造武器作りについては、とりあえず、
class 改造後の武器名 extends 改造前の武器名;
defaultproperties
{
何を = どう改造するのか
}
みたいな感じに考えてくれれば問題ないです。
さて、次は、
ItemName="GrenadeRifle"
WeaponFireTypes(0)=EWFT_Projectile
WeaponProjectiles(0)=UTProj_Grenade
WeaponProjectiles(1)=UTProj_ScorpionGlob
PickupMessage="GrenadeRifle"
についての説明ですが、これは先程無理矢理日本語訳を付けたように、
基となっている武器と比べて、どの部分がどう違うかを表しています。
ItemName="GrenadeRifle"
と、
PickupMessage="GrenadeRifle"
は、両方とも文字の表示を"GrenadeRifle"に変えるというだけの改造です。
ItemNameのほうが、武器を持ち替えたときに白色で表示されるメッセージで、
PickupMessageのほうが、武器を拾ったときに黄色で表示されるメッセージです。
普通は同じで大丈夫ですね。
WeaponFireTypes(0)=EWFT_Projectile
というのが、プライマリでの攻撃形式を物体発射型に変更するという改造です。
もともとショックライフルのプライマリは、物体を発射せずに直接、狙った相手にダメージを与えるタイプの即着型ビームになっているので、
それを、セカンダリのショックコアと同じように、何らかの移動速度を持った物体を発射し、
それを介してダメージを与えるタイプの、物体発射型に変更するというわけです。
だいたい、
WeaponFireTypes(0)が、プライマリの攻撃形式のことで、
EWFT_Projectileが、物体発射型、
だと考えておけば良いです。
WeaponProjectiles(0)=UTProj_Grenade
WeaponProjectiles(1)=UTProj_ScorpionGlob
は、
プライマリでロケットランチャーのグレネードを発射し、セカンダリでスコーピオンのグレネードを発射するようにするという改造です。
WeaponProjectiles(0)がプライマリ、WeaponProjectiles(1)がセカンダリで、
= の後に、それぞれ何を発射するかを指定します。
何を書けば良いかを調べるには、上のほうで説明した、ゲームデータのエクスポートを利用すると便利です。
エクスポート作業を行った後に、
My Games\Unreal Tournament 3\UTGame\ExportedScript\
を、
UTProj_
で検索すると、60個くらいファイルが出てくるので、それらのファイル名(拡張子は除く)を適当に指定すれば、だいたい使えます。
(例)
WeaponProjectiles(0)=UTProj_FuryBolt
WeaponProjectiles(1)=UTProj_SPMAShell_Content
(例)
WeaponProjectiles(0)=UTProj_HeroRocket
WeaponProjectiles(1)=UTProj_TankShell
このように書くことによって、
UTProj_○○という、別のファイルを呼び出して弾として使用するというわけなんですね。
このようにして、Classesフォルダの中にGrenadeRifleという改造武器が出来ました。
では同じように、今度は、
『プライマリでラプターのミサイルを発射し、セカンダリでロケットランチャーのロケットを発射するエンフォーサー』
を作ってみたいと思います。
メモ帳にて次の文を書き、
RocketGun.uc
というファイル名で、同じようにClassesフォルダの中に保存してください。
class RocketGun extends UTWeap_Enforcer;
defaultproperties
{
ItemName="RocketGun"
WeaponFireTypes(0)=EWFT_Projectile
WeaponFireTypes(1)=EWFT_Projectile
WeaponProjectiles(0)=UTProj_RaptorRocket
WeaponProjectiles(1)=UTProj_Rocket
PickupMessage="RocketGun"
}
前回とだいたい同じですが、ひとつだけ増えているのが、
WeaponFireTypes(1)=EWFT_Projectile
という行です。
エンフォーサーは、先程のショックライフルと違ってプライマリもセカンダリもどちらも即着型なため、
新たにセカンダリの攻撃方式を物体発射型に変更するという命令が必要になったというわけです。
ちなみに、
もとの武器がどういう性質を持っているかを調べるには、
My Games\Unreal Tournament 3\UTGame\ExportedScript\を、
UTWeap_
で検索すると便利です。
そうすると武器の名前のついたucファイルがひととおり出てきますので、それを開いて中身を覗いてみれば良いです。
おそらくそれらのucファイルの中身は、初心者から見るとわけのわからないかなり文だらけだと思いますが、
defaultproperties
{
}
で囲まれている部分には、割とわかりやすい物も含まれていますので、
それらの例を一部、簡単に解説しておきます。
(例)
AmmoCount=100・・・・・・武器の初期弾数が100発。
LockerAmmoCount=300・・・・・・ウェポンロッカーで補充される弾数が300発。
(ウェポンロッカーとは、WARやVCTFでマップに置いてある、あの武器がいっぱい掛かってる緑色のやつです。)
MaxAmmoCount=1200・・・・・・武器の最大弾数が1200発。
ShotCost(1)=30・・・・・・セカンダリ1回につき、消費される弾の数が30発。
WeaponFireTypes(1)=EWFT_Projectile・・・・・・セカンダリが、物体発射型。
FireInterval(0)=0.100000・・・・・・プライマリの弾発射間隔が、0.100000。
AIRating=0.710000・・・・・・Botがこの武器を使う頻度が0.710000。
ItemName="Stinger Minigun"・・・・・・武器を持ち替えた時の表示が"Stinger Minigun"。
PickupMessage="Stinger Minigun"・・・・・・武器を拾った時の表示が"Stinger Minigun"。
他にもいろいろな設定項目がありますので、興味があればいろいろいじって試してみることをお勧めします。
さて、これでRocketGunもできました。
では、慣れてきたところで最後にもうひとつ、比較的構造がややこしい改造武器に挑戦してみましょう。
『速度を変更したパラディンのショックコアを発射するスナイパーライフル(自作ダメージタイプ付き)』です。
さっきまでは、別の武器用の弾を発射するように設定し直した武器本体のみを作るというような感じでしたが、
今回のは、武器本体のucファイルと、発射される弾のucファイルと、ダメージタイプのucファイルをそれぞれ作って、
順々に参照させてゆくという形になります。
まずは、武器本体のucファイルを作りますので、
いつものようにメモ帳を開いて、次のような文を記述した後、
PaladinRifle.uc
という名前でClassesフォルダに保存して下さい。
class PaladinRifle extends UTWeap_SniperRifle;
defaultproperties
{
ItemName="Paladin Rifle"
WeaponFireTypes(0)=EWFT_Projectile
WeaponProjectiles(0)=NiseUTProj_PaladinEnergyBolt
PickupMessage="Paladin Rifle"
}
WeaponProjectiles(0)=NiseUTProj_PaladinEnergyBolt
は、プライマリで『NiseUTProj_PaladinEnergyBolt』を発射する
という命令です。
普通のパラディンのショックコアを発射するように設定したければ、
WeaponProjectiles(0)=UTProj_PaladinEnergyBolt
と書けば良いんですが、今回はその改造版の、
NiseUTProj_PaladinEnergyBolt
を発射させたいわけです。
では、次にこの『NiseUTProj_PaladinEnergyBolt』のucファイルを作りましょう。
ファイル名は、
NiseUTProj_PaladinEnergyBolt.uc
で保存してください。
書く文はこれです。
class NiseUTProj_PaladinEnergyBolt extends UTProj_PaladinEnergyBolt;
defaultproperties
{
Speed=90000.000000
MyDamageType=Class'ShoshinshaBuki.NiseUTDmgType_PaladinEnergyBolt'
}
つまりは、
UTProj_PaladinEnergyBoltの性質を持った偽者の弾(NiseUTProj_PaladinEnergyBolt)を新たに作り、
それを武器本体(PaladinRifle)が発射するという仕組みなのです。
弾の性能をいじっている箇所として、
Speed=90000.000000
の行では、見てのとおり弾の速度を設定しています。
初期値ではpaladinの弾の速度は9000なので、
このNiseUTProj_PaladinEnergyBoltは、UTProj_PaladinEnergyBoltの性質を受け継ぐけど、速度が10倍速い。
ということになります。
次の行の、
MyDamageType=Class'ShoshinshaBuki.NiseUTDmgType_PaladinEnergyBolt'
では、弾のダメージタイプを設定しています。
ダメージタイプとは、ゲーム中、相手に殺されると画面に表示される、あの、
You were killed by Akasha! (Shock Rifle)
とか、
You were killed by Reaper! (Redeemer)
とかの、()の中に何が表示されるかの設定だとここでは思ってください。
わかりやすそうな例を挙げますと、
先程作ったGrenadeRifleやRocketGunでは、RaptorやScorpionの弾を使っているので、
その弾でとどめを刺されると、
You were killed by Akasha! (Raptor)
だとか、
You were killed by Reaper! (Scorpion)
だとか表示されてしまいます。
これだと、やられたほうは何にやられたのかわからず、少し混乱してしまいますね。
特にデスマッチ等では、どこからか乗り物が侵入してきたんじゃないかとか勘違いしてしまいそうです。
このように表示されてしまうのは、
Raptorの弾やScorpionの弾が、それぞれRaptor用のダメージタイプとScorpion用のダメージタイプを呼び出しているからなので、
ここで、PaladinRifle用のダメージタイプを新たに作っておき、
それを呼び出すように設定しておけば、とどめを刺された時のメッセージは、
You were killed by Reaper! (PaladinRifle)
となるので、混乱を防げるというわけです。
ではこのダメージタイプのucファイルを作りましょう。
いつものようにメモ帳に文を書いて、
NiseUTDmgType_PaladinEnergyBolt.uc
という名前で保存して下さい。
書く文はこうです。
class NiseUTDmgType_PaladinEnergyBolt extends UTDmgType_PaladinEnergyBolt
abstract;
defaultproperties
{
DamageWeaponClass=Class'ShoshinshaBuki.PaladinRifle'
}
意味としては、
『Pladinのダメージタイプと基本は一緒だけど、PaladinRifleで攻撃された扱いになります。』
といったところでしょうか。
DamageWeaponClass=
で、どの武器で攻撃されたことにするかの設定をしているわけです。
さて、これで3つのucファイルが完成しました。
武器のファイルが弾のファイルを呼び出し、
弾のファイルがダメージタイプのファイルを呼び出し、
ダメージタイプのファイルが武器のファイルを呼び出しているので、
3つのファイルが順々にお互いを参照し合っているという仕組みです。
③UTEditor.iniを編集する。 †[段落を編集]
では、先程の手順を思い出してこれらのファイルをコンパイルをしてみましょう。
Mutatorでも改造武器でもコンパイルの手順は一緒です。
UTEditor.iniに、コンパイルしたいSrc下のフォルダ名を書くんでしたね。
さっきのmutator作りから続けて作業している方は現在、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=ShoshinshaMutator
と書かれていると思いますので、
それを今度は、
[ModPackages]
ModPackagesInPath=..\UTGame\Src
ModOutputDir=..\UTGame\Unpublished\CookedPC\Script
ModPackages=ShoshinshaBuki
に書き換えればいいわけです。
④ファイルをコンパイルする。 †[段落を編集]
書き終わったら上書き保存をして、
先程作ったcmd.exeへのショートカットを開き、
ut3.exe make
と入力しましょう。
⑤出来上がったファイルを移動する。 †[段落を編集]
記述に間違いが無ければ、
My Games\Unreal Tournament 3\UTGame\Unpublished\CookedPC\Script\
に、
ShoshinshaBuki.u
が作成されますので、
My Games\Unreal Tournament 3\UTGame\Published\CookedPC\Script\
へ移動させた後、UT3を起動しましょう。
InstantActionのMutator選択画面まで進んだら、
WeaponReplacementを選択し、Congigureを押してください。
すると、WeaponReplacementの設定画面が出ますので、
初期装備の武器や、すぐそのへんに沸いてそうな武器なんかを、今作った改造武器に置き換えてみましょう。
そうすればマップ上に登場するはずです。
さあ、改造武器はちゃんと動いてくれましたでしょうか?
こういう改造武器系のMODは、最初に説明した感じのMutatorなんかとは違い、
数字だけでなくグラフィック面でも大きく変化しますので、簡単に作れる割には視覚的に楽しめて嬉しいですよね。
お疲れ様でした。 †[段落を編集]
それでは、長文読破お疲れ様でした。
このへんでこの講座は終わりです。
なんとなくでも、UnrealScriptを使ったMODの作り方を理解して頂けたなら嬉しいです。
ここに挙げた方法は、ほんの一例に過ぎません。
もしかしたら説明が間違っている箇所もあるかもしれませんし、
もっと便利で効率の良い作り方がいくらでもあるような気もします。
なので、この講座に書いてある内容は、ただの土台というか、
単なる足がかりのひとつとして見ていただき、
あとはもう、自分でどんどんいじくりまくってみる事をお勧めします。
そして、できればこうやってWiki等にみんなで情報を書き蓄えていければ、
MOD作成についての知識が国内で共有できて便利な世の中になるんじゃないかと思いますので、
何か新しい発見等がありましたら、是非Wikiに書いてみて下さい。
みんなで素晴らしいMODを作りましょう。
参考URL †[段落を編集]
http://schiphol.2ch.net/test/read.cgi/gamef/1195129739/l50 †[段落を編集]
UT3のMOD作成についてのスレです。
MOD作りについて日本語でいろいろ話し合える、数少ない場所のひとつです。
ログもなかなか参考になります。
http://wiki.beyondunreal.com/ †[段落を編集]
UTのMOD作りについてのWikiです。
英語ができれば、基本的にほぼ何でも学べるでしょう。
http://www.codekisk.com/unreal/ut3/scriptref/ †[段落を編集]
UT3のゲームデータの中身が丸わかりになっています。
特に、Class treeという項目は見ておくととても便利です。
http://utforums.epicgames.com/forumdisplay.php?f=350 †[段落を編集]
公式フォーラムのUnrealScript板です。
ここの人々の会話のログは、検索用データベースとしても充分使えることでしょう。
ABOUT
初心者講座
TIPS
コミュニティ
DATA
- 武器
- 乗り物
- アイテム
- 実績(Awards)
- MOD・Mutator
- UEDを使う?
- Mutator作成講座
- メニューの編集