シーン(Scene)とは、ゲーム内で実際にキャラが動ける場所のことです。
屋外シーンの例は街、城、村の外観や戦場です。
村だとGo to the village center.から行く事ができます。
屋外シーンの例は街、城、村の外観や戦場です。
村だとGo to the village center.から行く事ができます。
屋内シーンの例は酒場、領主の間、牢屋などです。
今回は「村を作る」ことだけに焦点をあて、私と同じmod初心者のシーン作りに役立つ一連の作業の流れを書いていきます。
はじめに
この項ではModuleSystemを使ってゲームを書き換えますので、基本的なmod制作の流れを把握されているものとして
書かれていることをご了承下さい。
書かれていることをご了承下さい。
まずはこのwiki内にある
これらを読んで、
自分のmodを作成できており、.pyファイルの読み方をある程度わかる状態、になっておくと理解が早まると思います。
自分のmodを作成できており、.pyファイルの読み方をある程度わかる状態、になっておくと理解が早まると思います。
JIK氏の解説とも重複する部分がありますので、確認しつつ読んでみてください。
オリジナルの村を作ろう
村に必要なシーンは外観の一つだけです。なので練習がてら簡単なこれから手をつけてみるといいでしょう。
- 起動時のコンフィグでEnable Edit Modeにチェックをいれておく
- alt+Enterでウインドウモードにする
- 編集する村に入ってctrl+E
準備としてこれだけ覚えておいて下さい。
1 アイコンの配置
ModuleSystem内のmodule_parties.pyを開きます。(2.4 ゲームオブジェクトの参照 by JIK)
今回は村を作るのでリストの下の方、village_90 Jamicheの下にコピペで新たな村を追加します。
加筆変更点はJIK氏にならい、コメント行で挟んでおくと良いです。
加筆変更点はJIK氏にならい、コメント行で挟んでおくと良いです。
("village_90","Jamiche", icon_village_a|pf_village, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(-48.7, -71.5),[], 40),
##Test Area
("new_village_1", "Newvillage1", icon_village_a|pf_village, no_menu, pt_none, fac_neutral,0,ai_bhvr_hold,0,(19.2, 81.5),[], 10),
##Test Area
("salt_mine","Salt_Mine",icon_village_a|pf_disabled|pf_is_static|pf_always_visible|pf_hide_defenders, no_menu, pt_none, fac_neutral,
次に名前と座標を変えます。
仮にnew_village_1としましたが、自分のmod用に既に考えている場合は自由に付けてみて下さい。
仮にnew_village_1としましたが、自分のmod用に既に考えている場合は自由に付けてみて下さい。
座標はマップの中心が(0, 0)=(x軸, y軸)となっています。
module_parties.py内を見てみると、例えばTihrは(-48.9, 66.45)、Tulgaは(70, -58)という事がわかると思います。
module_parties.py内を見てみると、例えばTihrは(-48.9, 66.45)、Tulgaは(70, -58)という事がわかると思います。
場所はどこでもいいですが、個人的に気になるNord領内の小島にしてみましょう。
座標がわからないので、一度普通にNativeでゲームに入り、コンパスを北に合わせて
だいたい同軸っぽい座標の地名をメモって置くといいです。
座標がわからないので、一度普通にNativeでゲームに入り、コンパスを北に合わせて
だいたい同軸っぽい座標の地名をメモって置くといいです。
今回はx軸がDerchios_Castle、y軸がAlburq_Castleが近いような気がします。
再びmodule_parties.pyにもどり、メモった地名の座標を見てみましょう。
二つの座標を合わせて、(18.2, 81.5)が新しい村の座標になります。
再びmodule_parties.pyにもどり、メモった地名の座標を見てみましょう。
二つの座標を合わせて、(18.2, 81.5)が新しい村の座標になります。
saveし、build_module.batを押してエラーが無ければゲームを起動してみましょう。
残念ながらx軸が少しズレているようですね。
もう少し東にずらしたいので、この場合はx座標の数値を増やします。
1だけ加えて(19.2, 81.5)ではどうでしょうか。
もう少し東にずらしたいので、この場合はx座標の数値を増やします。
1だけ加えて(19.2, 81.5)ではどうでしょうか。
ちゃんと置く事ができました。
これでマップにアイコンが配置され、訪ねる事ができます。
ではさっそく中に入ってみましょう。
ではさっそく中に入ってみましょう。
しかし作った覚えのない場所が広がっています。自分の位置もマップの端っこで上手く動けません。
このままでは機能しませんね。
このままでは機能しませんね。
次は地形を作ります。
2 地形の生成
前回作った村に入ってみると、ランダムで生成された地形とオブジェクトが並んでいたと思います。
ctrl+Eで編集モードにして見渡してみましょう。
ctrl+Eで編集モードにして見渡してみましょう。
このままこのシーンを編集してもいいですが、Entry Pointなどがわけわからん場所に散らばってたりするので、地形から自分で作ってみる事にします。
村を出てメインマップ下のメニューからTerrainを選びます。
村を出てメインマップ下のメニューからTerrainを選びます。
Terrain画面になったら、まずは下のGenerate Terrainを押してみましょう。
すると右パネルのバーや数値で計算された地形が左の画面に出てきます。
左ドラッグ上下でズームイン、アウト
右ドラッグで回転です。
右のパネルを見てみると、一番上に数字とアルファベットの羅列が並んでいます。
後ほどこのコードをmodule_scenes.pyに書き加えて地形を設定します。
後ほどこのコードをmodule_scenes.pyに書き加えて地形を設定します。
コピー | 現在の地形を表すコードをコピーします。 |
ペースト | 既存の地形コードをコピーして参照する事が出来ます。 |
次に地形を決める項目です。私もまだ全て把握していないので説明は未完成です。
ボタン | |
Place river | 川を作るかどうかです。 |
Deep water | これをEnabledにすると川が狭く深く刻まれるような気がします。 |
Shade occlude | よくわかりません |
Disable grass | よくわかりません |
Polygon Size | よくわかりません 2~5までありますがこれを変えると地形が変わってしまいます。 |
Terrain | 平原、雪原、ステップなどの土地を選びます |
スライダー | |
Vegetation | 配置される植物の量を調節します。 ※このスライダーはゼロにする事をお薦めします。ここで配置された植物はシーン編集で消す事ができません。 |
Ruggedness | 地形をでこぼこさせます。 |
Valley | 渓谷を形作ります。ある程度RuggednessとHill heightをあげないと意味がありません。 |
Hill height | 丘の高低を決めます。断崖絶壁を作れます。 |
Size | x,y軸でマップの広さを決めます。広いとやはり重いです。 |
randomize | |
flora | 草木の配置をランダムで決めます。 |
river | 河川の配置をランダムで決めます。 |
terrain | 地形をランダムで生成します。 数値を決めてrandomizeボタンを押します。数値が大きければ増える、といった事でもないようです。 |
少しずつスライダーをずらしながらGenerate Terrainを押して確認していくと良いでしょう。
良さそうな地形が出来たらとりあえずコピペでコードを残しておけば、
いじり過ぎてイマイチの地形になってしまった時も、そこからやり直す事ができます。
良さそうな地形が出来たらとりあえずコピペでコードを残しておけば、
いじり過ぎてイマイチの地形になってしまった時も、そこからやり直す事ができます。
そうして思い通りの地形が出来たら一番上のコピーボタンを押します。
メモ帳などにペーストしておくと忘れずに済みます。
メモ帳などにペーストしておくと忘れずに済みます。
CloseでTerrain画面を終了します。
ゲームを一旦抜けて、次はModuleSystem内のmodule_scenes.pyを開きます。
Villageは一番下の方です。
適当な村のどれかをコピペして、以前作ったnew_village_1という名で追加します。
それから先ほど作った地形のコードをペーストします。
Villageは一番下の方です。
適当な村のどれかをコピペして、以前作ったnew_village_1という名で追加します。
それから先ほど作った地形のコードをペーストします。
##Test Area
("new_village_1",sf_generate,"none", "none", (0,0),(100,100),-100,"0x0000000030e011278005f580000059a800000dac0000768f", [],[],"outer_terrain_plain"),
##Test Area
今回は平坦な土地に小川と丘のある地形を作ってみました。よかったら使ってみてください。
ここで"outer_terrain_plain"という文に注目してみます。
先ほどのTerrain画面で、ランダムで生成される地形の外側が変化しなかったのに気づきましたか?
これはシーンの額縁のようなもので、遠景として利用されています。ゲーム内で進入する事はできません。
この額縁も変更する事ができます。
先ほどのTerrain画面で、ランダムで生成される地形の外側が変化しなかったのに気づきましたか?
これはシーンの額縁のようなもので、遠景として利用されています。ゲーム内で進入する事はできません。
この額縁も変更する事ができます。
Nativeの村を見てみましょう。カーギットの村は"outer_terrain_steppe"です。荒涼な平原が広がっています。
village35のFearichenは"outer_terrain_town_thir_1"となっています。ここはNordの村で、海岸に船が停泊しているのが見えます。
名前の通り、Tihrの街も同じものが使われています。
village35のFearichenは"outer_terrain_town_thir_1"となっています。ここはNordの村で、海岸に船が停泊しているのが見えます。
名前の通り、Tihrの街も同じものが使われています。
今回は無難にplainを選びますが、自分の作りたい村に合わせて好きなのを選んでください。
CommonRes内にbrfファイルがあるので見てみても良いでしょう。たしかterrain_bordersだったと思います。
CommonRes内にbrfファイルがあるので見てみても良いでしょう。たしかterrain_bordersだったと思います。
build_module.batで変更を反映させたらゲーム内で確認してみましょう。
村に入ってみて、自分の作った地形が表示されていたら成功です。
村に入ってみて、自分の作った地形が表示されていたら成功です。
3 エディットモード
主な操作・機能一覧
W,A,S,D | 移動 |
マウス左 | カメラ回転 |
マウス右 | オブジェクトの選択・配置、地形変化、テクスチャの貼り付け |
マウス中ボタン | テクスチャ・カラーの消去 |
G押しながらドラッグ | オブジェクトの移動 |
T押しながらドラッグ | オブジェクトの上下 |
X or Y or Z押しながらドラッグ | それぞれX,Y,Z軸でオブジェクトの回転 |
B押しながらドラッグ | オブジェクトのスケール変更 |
H | EntryPointなどのゲーム内では見えないオブジェクトの表示/非表示 |
Space | Add Objectのオン/オフ |
(この他、Helpにも操作が書いてあります)
村に入り、ctrl+Eを押したら画面左側に出るのがエディットモードのウインドウです。
主に使うEdit Objectsのパネルを見てみます。
主に使うEdit Objectsのパネルを見てみます。
- Edit Objects
Add Objectを押している状態のときに、オブジェクトを配置できます。
① Edit Objectsを含め5つのモードがあります。
② 選択されているオブジェクトの情報が出てきます。Scaleは大きさ、Posは座標です。
③ 配置済みのオブジェクト一覧です。クリックするとオブジェクトを選択します。
④ オブジェクトのカテゴリです。
② 選択されているオブジェクトの情報が出てきます。Scaleは大きさ、Posは座標です。
③ 配置済みのオブジェクト一覧です。クリックするとオブジェクトを選択します。
④ オブジェクトのカテゴリです。
Scene Props | 家や壁などのオブジェクトです。 |
Entry Point | プレイヤー、NPCの初期位置を決めるオブジェクトです。 |
Item Kinds | 武器や食糧などゲーム内で購入できるアイテムのオブジェクトです。 |
Plants | 木々や草などのオブジェクトです。 |
Passage | 特殊なオブジェクトです。屋内とつながるドアなどに使用します。 |
⑤ チェックを入れると、オブジェクトの回転、スケールをランダムに変化させます。
草木など自然のオブジェクトに使います。
草木など自然のオブジェクトに使います。
その他の機能も見てみましょう。
- Ground Texture Paint
地面にテクスチャを貼ります。
Radiusで範囲を決めます。(Elevate、Color Paintも共通です)
Radiusで範囲を決めます。(Elevate、Color Paintも共通です)
- Ground Elevate
土地を隆起・降下させたり、なだらかにさせます。
- Ground Color Paint
Texture Paintで貼ったテクスチャに色をつけます。
どういう風に使うのか、NativeのSumbujaの村を見てみましょう。
中心部に四角いくぼみがあり、赤い土が広がってるのがわかります。
その近くには釜と壷が並んでいて、陶芸が盛んな村という演出がされています。
このように工夫次第で色々できそうな機能です。
どういう風に使うのか、NativeのSumbujaの村を見てみましょう。
中心部に四角いくぼみがあり、赤い土が広がってるのがわかります。
その近くには釜と壷が並んでいて、陶芸が盛んな村という演出がされています。
このように工夫次第で色々できそうな機能です。
※Ground~、の3つのモードにあるClear Allは、3つで操作した変更点全てが消えてしまいますのでご注意ください。
- Edit AI Mesh
勉強不足で何に使うのかわかっていません。情報求む
- Close
エディットモードを終了します。
変更をセーブする場合はYes,save
変更せず終わる場合はNo,discard changesを選びます。
変更をセーブする場合はYes,save
変更せず終わる場合はNo,discard changesを選びます。
シーンの編集
それではいよいよ自分で作った地形を村っぽくしていきましょう。
とはいっても、ここから先は作る人それぞれのやり方、作りたいものが異なりますので、
どうぞご自由に、と言ってしまっても構わない部分です。
とはいっても、ここから先は作る人それぞれのやり方、作りたいものが異なりますので、
どうぞご自由に、と言ってしまっても構わない部分です。
とりあえず重要なオブジェクトの紹介と、個人的に村を完成させる様子を載せていきたいと思います。
- Entry Point
矢印がキャラクターの向きを示しています。
選択するとEntry No.という項目が表示されます。このナンバーを書き換えてキャラの表示を決めます。
例としてNo.0はプレイヤーの初期位置です。まず最初に作ってください。
村長はNo.11、酒場の主人はNo.9など決まっているようです。
- Passage
街から酒場、城から領主の間などの移動の際にドアの正面に置くオブジェクトです。
少しややこしいのですが、Entry No.とMenu Item No.の数字でマップをつなげます。
Entry No.は移動先のマップにあるEntry Pointのナンバーです。初期位置なら0です。
Menu Item No.はよくわからないのですが、移動先のマップ種類ごとに決まっているようです。
街で見てみると、0が領主の間、3が町の広場、4は酒場、5は交易品、6がアリーナ、7は牢屋になっています。
- ai_limiter
透明なバリアで、NPCに入ってほしくないところを塞ぎます。
例として城の城壁の内側などに、城兵が落ちないように置かれています。
- barrier
文字通りバリアで、プレイヤーが入れないように塞ぐオブジェクトです。
スタックを防ぐ為にも必要な存在です。
- exit
バリアと同じく通る事ができませんが、Leave Areaと表示され、外に出ることができます。
街の入り口などに使用します。
- light
光を放つオブジェクトで、これ自体は透明です。
nightは夜のシーンのみ灯る松明などに置きます。redは焚き火、かまど、暖炉など直火に使います。
- shadow_
影のオブジェクトです。火鉢などの明るいオブジェクトの下に敷く感じで使います。
丸と四角がありますが、スケールを変える事でオブジェクトに合わせる事ができます。