砂場

Last-modified: 2021-10-24 (日) 12:33:40

しまった!ココは砂漠バイオームだ!

砂場2

                                   

Simple Weapons
長所

Propulsion

関数in/outデータ型 or 参照説明
I:TellAiThatWeAreTakingControl()AIによる制御が無効化される。これがない場合AIが指定した値とLua内で指定した全ての値の合計値になる
I:RequestControl(mode,type,drive)int , int , float /指定した各AIモードによる一般的な機動を行う。出力は-1~1の間で調整する
mode : Water=0, Land=1, Air=2.
type : YawLeft=0, YawRight=1, RollLeft=2, RollRight=3, NoseUp=4, NoseDown=5, Increase=6, Decrease=7, MainPropulsion=8
I:RequestThrustControl(type)int /xyz軸方向と回転方向の動きを行う
type : forwards=0, backwards=1, right=2, left=3, up=4, down=5, rollright=6, rollleft=7, yawright=8, yawleft=9, noseup=10, nosedown=11
I:RequestThrustControl(type, scale)int , float /xyz軸方向と回転方向の動きを行う。Sacaleで出力を0~1の間で調整できる
type : forwards=0, backwards=1, right=2, left=3, up=4, down=5, rollright=6, rollleft=7, yawright=8, yawleft=9, noseup=10, nosedown=11
I:RequestWaterForwards(drive)float /プロペラの全後進の出力を-5~5の間で調整できる
I:RequestComplexControllerStimulus(stim)int /指定した値のcomplex controlerを実行する。ACBとの連携などに使える
stim: none=0, T=1, G=2, Y=3, H=4, U=5, J=6, I=7, K=8, O=9, L=10, up=11, down=12, left=13, right=14
I:GetDrive(mode)int / floatWater DriveやAir Driveなどの値を返す
mode : Water=0, Air=1, Primary=2, Secondary=3, Tertiary=4
*多分こっちに代わってる→mode:Primary=0, Secondary=1, Tertiary=2
I:GetInput(mode, type)int , int / float指定したDrive fractionの値を返す
mode : Water=0, Land=1, Air=2
type : YawLeft=0, YawRight=1, RollLeft=2, RollRight=3, NoseUp=4, NoseDown=5, Increase=6, Decrease=7, MainPropulsion=8
I:MoveFortress(Vector3)Vector3 /指定したベクトル方向にフォートレスを動かす
 

PAC構築のコツ

ゲーム通常インベントリ内プレハブテスト

file48.blueprint

ACB使用するinputinputの設定使用するAffected使用するAffectAffectの設定
1個目項目項目項目項目項目
  • 数値説明
    Horizontal focus power左右方向への収束具合を示す数値
    Vertical focus power上下方向への収束具合を示す数値
    Time between shots現在設定されている発射間隔
    Energy Use一回の発射で使用されるエネルギー量
    Range射程距離
    Initial Damage発射直後の威力
    Attenuation~~per km粒子が1km進んだ際の減衰度合い。初期設定の0.5per kmだと1km進んだ時点でInitial Damage数値の半分となる。

Wood Block/木ブロック

  • ステータス/使用資源量
1m4mBeam
Health120720
Amour33
Weight1040
 
NaturalMetalOilScrapCrystal
1m100000
4m400000
 
  • ゲーム内解説

Trusty wooden block. It floats!
信頼出来る木製のブロック。水に浮くよ!

  • 解説

筆者的には1m木ブロックは古い戦列艦をイメージした形状になったりするためあまり信頼していない。
そもそも1mブロックの乱用は無為にビークルの情報量を増やしてゲーム全体を重くする原因となるので切り欠きブロックではない普通の1mブロックは極力使わずに済ませることをお勧めする。(古いプリセットのビークルの中には1mブロックだけで作られているものもある。流石に最近はビークルの更新や有志の努力による1mブロック殺しで大分減ったが)
水に浮くため船の構造材に適する。
構造材としてはかなり柔らかい為防御力には期待出来ないが、兎に角お安い。

 
  • 上級者向け解説

電流はやや流れ難い(流れない訳ではない)
その為表面を鉄、内部に木という構造にする事でEMPの電流を内部に流さない等も可能。

EMP Susceptability0.00
EMP Damage Factor1.00
EMP Resistivity100.0
HEAT Damage0.05

FromTheDepthsのコミュニティについて

各種形状の重量、資源使用倍率

  • 木、鉄、軽量合金、ガラスブロックにのみ存在する。
  • 耐久値などは一致しない、若干高い等が有る。
1mSlope1mSquareC1mTriangleC1mInvertedTC1m
x1x0.5x0.25X0.25x0.75
 
Slope2mSquareC2mTriangleC2mInvertedTC2m
x1x0.5X0.5x1.5
 
4mBeamSlope4mBeam slope diagonalcut4minvertedTC4mtriangleC4m
x4x2x2X3x1.
 

Wood Block/木ブロック

  • ステータス/使用資源量
1m4mBeam
Health120720
Amour33
Weight1040
 
NaturalMetalOilScrapCrystal
1m00000
4m00000
 
EMP Susceptability0.00
EMP Damage Factor1.00
EMP Resistivity100.0
HEAT Damage0.05
 

Ship/船

画像Name名称和訳/出典BPVolumeRP設計難易度
&ref()Easy
説明文的なサムシング
&refRegular
説明文的なサムシング
&refExpert
説明文的なサムシング
&refGodly
説明文的なサムシング
 

基本操作} &aname(v9131684,super,full){

通常モードの操作} &aname(ye154e1a,super,full){

一部の操作は特定のゲームモードでしか機能しない。

center:動作center:キーcenter:備考
キャラの移動W/A/S/DW(奥)/A(左)/S(手前)/D(右)
ジャンプSPACE足のジェットを吹かして飛行する。長押しで結構な時間飛べる
アクションQ
リペアモード切替R自キャラの触手が修理を行うか、否か
ビルドモードBビルドモードを起動
Connect & Disconnect Foot\?
プライマリ切り替え1~0各スロットに登録されたプライマリを装備。プライマリはLVアップ時のポイントを使って取得
プライマリ使用左クリックプライマリ(アイテム/遠距離武器)使用
近接武器/セカンダリ右クリック近接武器使用/プライマリのセカンダリ機能
カメラモード切替Tab三人称で自由にカメラを飛ばせる(W/A/S/D/SPACE[上]/ALT[下]で操作)。もう一度Tabで元の一人称に
Follow ProjectCaps発射したミサイル、キャノンの弾頭に追従するカメラに切り替える。手動発射のみ?
キャラクターシートZキャラクターの各種バフや装備品、アイテムの取得ができる。詳細はこちら?のページを参照。
エネミースポーンメニューX選択した敵を出現させる事が出来る
AIコントロールメニューC各AIの動作を切り替える。ON、OFFやその他の指示
ビークル情報メニューVビークルの詳細な各種情報が表示される
ストラテジーコマンド画面N艦隊にいろいろと指示が出せる。移動指示(戦闘中の)や優先目標など。詳しい操作はこちら?のページを参照。
艦隊メニューE自分の近くの艦、要塞の一覧。AI操作、移動、艦隊を組む事などが出来る。詳しい操作はこちら?のページを参照。
マップM艦隊の移動や敵艦隊への攻撃の宣言を行える。また、ゲーム内時間を加速することも可能。詳しい操作はこちら?のページを参照。
派閥一覧F1各派閥の勢力、関係性が分かる画面。貢物を送って関係性を良くしたり、宣戦布告したり出来る。
乗り物の武器使用中クリック/左Ctrl左Ctrlはビルドモード時でも動作する
ウェポンスロット切替マウスホイール操作する武装(操作範囲内のビークルや要塞の)を切り替える。
UI表示F9UIを隠す/表示する
レンダリングモード切替F10ブロックを簡略化して表示?
スクリーンショットF12Steam共通のF12でのスクリーンショット

アドキャの大きさ表

Gauge increaseの数0個1個2個3個4個5個6個7個8個
1門60mm120mm178.8mm236.42mm292.89mm348.23mm402.47mm455.62mm500mm
2門30mm60mm89.4mm118,21mm146.44mm174.11mm201.23mm227.81mm250mm
3門27mm54mm80.46mm106.39mm131.80mm156.7mm181.11mm205.03mm225mm
4門24mm48mm71.52mm94.56mm117.15mm139.29mm160.98mm182.24mm200mm
5門21mm42mm62.58mm82.74mm102.51mm121.88mm140.86mm159.46mm175mm
6門18mm36mm53.64mm70.92mm87.86mm104.47mm120.74mm136.68mm150mm

アドキャの大きさ表 縦横反転版

  1門2門3門4門5門6門
0個60mm30mm27mm24mm21mm18mm
1個120mm60mm54mm48mm42mm36mm
2個178.8mm89.4mm80.46mm71.52mm62.58mm53.64mm
3個236.42mm118.21mm106.39mm94.56mm82.74mm70.86mm
4個292.89mm146.44mm131.80mm117.15mm102.51mm87.86mm
5個348.23mm174.11mm156.7mm139.29mm121.88mm104.47mm
6個402.47mm201.23mm181.11mm160.98mm140.86mm120.74mm
7個455.62mm227.81mm205.03mm182.24mm159.46mm136.68mm
8個500mm250mm225mm200mm175mm150mm

折り畳みテスト

見たな?
ああ、窓に、窓に!!

330mm対シールド目標用EMP弾

2016-08-11_14 44 56.jpg


 

Disruptor Conduitを使用することで、シールドに着弾するとそれを展開しているシールドプロジェクターブロックにEMPダメージが入る

 

・メリット
どんなにガチガチに守られたシールドプロジェクターでも直接攻撃できる

 

・デメリット
非常に精度が悪い
Munition warnerに探知されやすくレーザーで迎撃されやすい
装甲に対してほぼ無力

 

上記理由から非常に運用が難しい
精度に関しては、手数は減るがレールガンで運用することでかなりマシになる
迎撃されやすさに関しては他の武装で飽和攻撃を仕掛けるほかない

 

いずれにしても単体で運用すべきものではないので
他のメイン砲弾に混ぜて使用するか副砲に使用するべきであろう

 

テスト ヘリコプター構築

スナーバ

何も挿していないメインフレーム  
This mainframe has acesss to 2 units of general purpose processing power to process the detections of it's 0 detectors (of which 0 are trackers). The detectors and trackers need 0 power in total. This means the detection systems are running at 100% of their maximum detection rate.
GPPC挿したメインフレーム
This mainframe has acesss to 3 units of general purpose processing power to process the detections of it's 0 detectors (of which 0 are trackers). The detectors and trackers need - 0 power in total. This means the detection systems are running at 100% of their maximum detection rate.
更にレーダーシステム1個追加
This mainframe has acesss to 3 units of general purpose processing power to process the detections of it's 1 detectors (of which 0 are trackers). The detectors and trackers need 1 5 power in total. This means the detection systems are running at 100% of their maximum detection rate.
横に360度カメラ設置
This mainframe has acesss to 3 units of general purpose processing power to process the detections of it's 2 detectors (of which 0 are trackers). The detectors and trackers need 4 power in total. This means the detection systems are running at 75% of their maximum detection rate. 

ステータス一覧、翻訳用文章用

MOD機能から抜き出している為(順番はソレに準ずる)ステータス一覧に仕様する際は変更を
更に簡略化の為同種ブロックは選別してある。しれっと未実装ブロックの残骸があるのが面倒。
逆に日本語化作業の場合は此方の方が使いやすい。

 

Core_Structural

 
Wood Block
Stone Block
Metal Block
Light-weight Alloy Block
Window Block
Glass Block
Lead Block
Rubber Block
Light Block
ERA Armour
Heavy Armour
 

Core_Water

 

Boat Propeller
Hydrofoil
Sail Main Block
Sail Attachment
Sail Winch
Air Pump
Boat Rudder
Weather Vane
Huge propeller
Paddle
Sail Main Block (Square Rig!)

 

Core_Air

 

Jet Engine
Wing
Aileron
Helicopter Blade (Upside down!!)
Tail Plane
Helicopter blade
Wheel (power)
Wheel (turning)
Hot air balloon Deployer
Jet Stabiliser
Switch
Huge Jet Engine
Heat Decoy
Ion Thruster
Jet controller
Jet intake
Jet Compressor
Jet Combuster
Jet Exhaust
Jet intake add-on
Jet fuel injector
Jet extra combuster
Jet extra compressor
Dedicated heliblade spinner
Dedicated heliblade extension
Dedicated heliblade pole extender
Huge Ion Thruster

 

COre_ Misc

 

Vehicle Controller
Fire control computer
Chair
Repair Tentacle
Repair Bot
Respawning beacon
Vehicle Blueprint Spawner
Vehicle Respawner & Scrapper
Spin Block Controller
Fortress Controller
Automated Control Block
NPC Spawner
Origin block
Control Terminal
Remote Vehicle Controller
Wireless Camera
Heart Stone
Heart Stone Extension
Shield Projector
Complex Controller
Drive maintainer
Ship's wheel
Compact Repair Tentacle
Docking station
Subvehicle Spawner
Teleport pad
Strategic Antenna
Dish piece
Thrust Controller
Surge Protector
Shield Color Changer
LUA Box
PID (General Purpose)
Tactical Nuke

 

Core_AI

 

AI Mainframe
AI Card Slot (Left & Right)
AI Card Slot (Front & Back)
Connector
(CARD) Naval AI
Retroreflection Sensor 360
Laser Range finder Tracker
Wireless Reciever
Local Weapon Controller
Radar 360
Flag post
(CARD) Aerial AI
(CARD) Target Prioritisation
(CARD) Aim point selection
Wireless Transmitter
(CARD) Tracker Target Association
(CARD) Fortress AI
(CARD) water start
Build conduit
(CARD) sailing
Munition warner
Failsafe
Smoke dispenser
Laser warner
(CARD) Propulsion Balancing
Enemy Simulator
PID
Anti Missile Cannon Controller
(CARD) Land AI
General Purpose Processing Card
IR Camera Gimbal Tracker
Passive Radar 360
Passive Sonar 360
Sonar 360
Tracking Computer
Wireless Snooper
IR Camera 360
IR Camera 90
Camera 360
Camera Gimbal Tracker
Radar 90
Radar Gimbal Tracker
Sonar 90
Camera 90
Range Finder 5m
Range Finder 5m armour
Intra Vehicle Transmitter

 

Core_APS

 

6-way connector
Ammo Controller
Ammo Customiser
Ammo Input Feeder
Ammo Clip [1m shells]
Autoloader [1m shells]
Adv. Firing piece
Gauge increase
Railgun barrel magnet
Railgun Magnet Attaching Fixture
Barrel
Laser Targeter
1m omni Mantlet
1m Elevation Mantlet
3m x 3m Omni Mantlet
3m tall Elevation Mantlet
2m tall AA Mantlet
Fall of Shot Predictor
Railgun Charger
Gauge increase left right splitter
Gauge cooling unit
Hydraulic recoil absorber [1m]
Muzzle Brake
Bore Evacuator
Belt feed autoloader [1m shells]
Solid Ammo Clip [1m shells]
Ammo Ejector
Ammo Customiser single module
Ammo Ejector Backwards

 

Core_Construct

 

Structure
Fortress
Sky Fortress Turbine
Spin / Turn block
Spin block
Two Axis Turret
Turret Block Two Axis
Turret Block One Axis
One Axis Turret
Vehicle

 

Core_CRAM

 

Firing piece
Barrel
Recoil Suppression Barrel
Flash Suppression Barrel
Ammo Box
Auto Loader x3 automatic orientation
Predictor
Six Way Connector
High Explosive Pellets
Hardener Pellets
Motor Driven Barrel
Gauge Increase
Interface screen
Elevation barrel
Auto Loader x3 Manual Orientation
Gauge Increase Corner
Gauge Increase Top
Gauge Increase Port
EMP Pellets
Fragmentation Pellets
Laser Targeter
Fusing Box
Bomb Chute

 

Core_Decorations

 

Stairs
Deck Port
Display
Standard door
Light fitting
Sign Post
Poster holder

 

Core_drill

 

Drill
Drill Bit (Large)
Drill Bit (Small)
Drill Extension
Power Input
Torque Amplifier
Drill Extension horizontal splitter
Drill Extension vertical splitter

 

Core_FuelEngine

 

Fuel Engine Generator
Adapter
Carburettor
Crank Shaft
Cylinder
Exhaust
Supercharger
Turbocharger
Injector
Radiator
Large Radiator
Inline turbocharger
Hull Pipe

 

Core_Laser

 

Multipurpose Laser
Laser Coupler
Laser Cavity
Single Input Laser Cavity
Storage Laser Cavity
Frequency Doubler
Laser Pump
Laser Q switch
Laser Optics
Laser Destabiliser
Laser Combiner
Laser Munition Defence
Laser Steering Optics
Laser Connector
Laser Transceiver
Laser Colorer
Particle Cannon
Particle Tube
Particle Tube Corner
Particle Tube Terminator
Particle Input Port
Particle Accelerator Lens
Laser Wavefront Adjuster

 

Core_missile

 

Gantry
Controller
Laser Emitter
Launch Pad
Connector
Staggered fire add-on
Identify Friend Or Foe Add-on
Winch
Ejector Add On
LUA Transceiver
Reversed Launch Pad
Missile Radar Buoy Holder
Missile Sonar Buoy Holder

 

Core_SimpleWeapon

 

Ram
Small Cannon
Large Cannon
Auto Cannon
Harpoon Gun
Laser

 

Core_WarpDrive

 

Warp Controller
Warp Rod 2m
Warp Charger 2m
Warp Terminator

キャンペーンモードの遊び方

キャンペーンモードの遊び方

キャンペーンモードは限られた資源を運用してビークルや要塞を作り、襲い来る敵を撃破して陣地を広げていくリアルタイム・ストラテジー(RTS)に近いモードです。
プレイヤーはロボットみたいなキャラを操ってFPS視点で自由に移動できますが、広い世界を自分の足で駆けまわって支配するのはとても困難です。
ビークルデザイナーで作ったAIによる無人運転ビークルたちをうまく用いれば、彼らはあなたの手足となり、目となってくれるでしょう。

キャンペーン序盤向きのビークル設計

wikiのチュートリアルを参考にしながら、ビークルデザイナーで序盤向きのビークルをいくつか設計しましょう。
一応キャンペーンモードプレイ中でも設計できますが、何かと不便なので「デザイナーで設計してキャンペーンで建造する」と覚えたほうがいいです。
ビークル例

長距離ミサイル艦

遠距離から一方的にホーミング攻撃できる長距離ミサイルは頼れる武器です。
木造の小型船に積んで低コストな部隊を編成できるようにしましょう。
序盤はマテリアルが惜しいため、防御力は二の次で構いません。
サルベージや応急修理のため多少のマテリアル運搬能力を備えさせるのが得策です。

偵察ビークル

キャンペーンモードではマップの殆どが暗くなっており、そのままではどこから敵が出てくるかわかりません。
初期拠点備え付けのクルクル回っているレーダーを参考に、戦略レーダーを搭載した偵察用ビークルも設計しましょう。
戦略レーダーを搭載したビークルの周囲は、レーダーの大きさと高度に応じて見通しが効くようになります。
こういった偵察ビークルを適切に配備することで敵の不意打ちを防ぐことが出来ます。

輸送・工作船

豊富なマテリアルストレージと燃料タンク・リペアテンタクルを搭載した輸送と工作に長けるビークルです。
拠点と前線部隊の間を行き来して運搬・修理・拠点構築に活躍してもらいます。

マテリアルの入手

ビークルが設計できたら、ようやくキャンペーンに乗り出せます。
ビークルデザイナーと違い、ブロック配置で消費するマテリアルがキャンペーンでは有限となります。
プレイヤーはマテリアルを採掘できるリソースゾーン(緑の破線円の領域)をひとつ確保した状態からスタートします。
最初のビークルを作るのに十分なマテリアルは、初期拠点で確保できることでしょう。
しかしうかうかしているとあっという間にマテリアルの採掘が追いつかなくなりビークル建造や修理が間に合わなくなります。
そこで敵のリソースゾーンを奪い、そこにも採掘拠点を建造してマテリアルの獲得量を増やしていく必要があります。

 

また敵味方問わずビークルが撃破された地点には一部のマテリアルが残されます。
マテリアルストレージを搭載した船が近づくだけでサルベージできますので、マテリアルの入手手段として覚えておきましょう。

建造

デザイナーモードではLoad vehicleすれば一発でビークルが出現しますが、
キャンペーンモードではビークルブループリントスポナーとリペアテンタクルを使います。
リペアテンタクルを周囲に設置し、ビークルブループリントスポナーに向かってQキーを押すと任意のビークルをロードできます。
マテリアルが足りていれば彼らがビークルを組み立ててくれるので、完成を待ちましょう。
組み立てている間にビークルが沈んだり飛んでいってしまう場合がしばしばありますので、
ドッキングステーションを使いましょう。Qキーから指定したビークルを空中に係留してくれる便利な設備です。

非実体化を知ろう

デザイナーモードでは使わない概念のため、戸惑いがちな非実体化について解説します。
少しとっつきにくいですがこのゲームをシンプルにしてくれる要素なので覚えておきましょう。

 

このゲームでは進行につれて多数のビークルを操ることになるため、
「不必要なブロック情報をカットして簡易的処理する」という意図のシステムとしてビークルの非実体化が存在します。
ビークルの実体、非実体は戦略画面の横向き帆船のマークのボタンで切り替えます。
実体化中のビークルは戦略画面でのビークル名が青背景、非実体化中のビークルは灰背景になります。

実体化状態

  • 通常モード。ビークルが当たり判定のあるブロックの集合として表示されるふつうの状態です。
  • こんな時に実体化しよう
    • ビルドモードでの建築、改修をする時
    • ビークルや要塞の設備にアクセスする時
    • 戦闘時(戦闘に参加すると自動的に実体化します)
    • プレイヤー自身がビークルに乗りたい時

非実体化状態

  • 簡易処理モード。ビークルは当たり判定のない直方体のワイヤーフレームとして表示される状態です。
  • ビークルが実際に今どんな状態であるかというより、戦略用の駒として位置情報だけを利用される状態と言えばよいでしょうか。
  • 戦略画面で非実体化中のビークルを選択して任意の箇所を右クリックするとそこに移動を指示できます。
  • こんな時に非実体化しよう
    • 非戦闘中にビークルを移動・待機させる時
    • 時間を高速経過させる時(4倍・10倍を選ぶと全ビークルが自動的に非実体化します)

戦闘

戦略画面で選択中のビークルと敵が接近すると赤い剣のマークが表示され、これをクリックすることで戦闘を挑めるようになります。
また、逆に戦いを挑まれて「Vehicle Blockaded」の表示が出た場合も、戦闘を余儀なくされます。
「Prepare the Battle」の表示が出たら戦闘準備の時間です。
戦闘に参加する艦隊を選択します。選択されている艦隊には数字が表示され、参加できるが選択されていない艦隊は盾マークが表示されます。

「Begin battle」を選べば戦闘開始です。戦闘に参加しないビークルは非実体化され、戦闘外の時間が止まるので戦闘に集中できます。

 

戦闘は「敵か味方のビークルが全滅する」か「戦略画面からView battle options→End the battle!を選ぶ」まで続きます。
戦って勝てればよいのですが、勝ち目がない場合はEnd the battleを選ばざるを得ません。
この時、自分から仕掛けた時は撤退できますが、仕掛けられた戦闘の場合は味方ビークルはHP0%扱いとなってしまいます。

撃破判定について

  • 敵味方共通
    • HPが80%以下のとき水面下10m以上沈没する。「Health below 80% and sinking」
    • HPが55%以下になる。「Too damaged」
    • ブロックが10個以下になる。「Too few blocks alive」
  • 敵のみ
    • AIブロック・NPCが全て破壊される。「AI dead」
    • プレイヤーの支配海域内にいて、なおかつHPが(戦闘開始後経過分/5)以下になる。「Damaged in enemy territory」
       
      これらの状況になると10からカウントダウンが始まり、0になると崩壊して戦闘離脱します。
      ただし、リベアが行われている場合カウントダウンは100からになります。「sustained by repairs」

拿捕

「AI dead」判定のカウントダウン中にプレイヤー自身が敵船に乗り込んでいると敵船を拿捕(ビークル強奪)できます。
そのまま使うも良し、解体してマテリアルをごっそりいただくも良しの最上の撃破法と言えるでしょう。
AIブロックの位置を把握した敵ビークルに対しては、プレイヤー自身による殴り込みも非常に有効的な戦法となりえます。

プレイヤーは戦闘中何ができる?

  • 座乗ビークルの操作に参加
    • AIに攻撃を任せて操縦を担当してもいいですし、逆に砲撃手になるのもOK。
    • 忙しいけど操縦と攻撃両方やってもいいのよ。
  • AIへの指示(下記「戦略画面の使い方」参照)
    • 位置取りが悪く攻撃が当たらないビークルを回りこませる。
    • 敵の射程内に捉えられて撃破されそうなビークルを退かせる。
  • 修理
    • プレイヤーはマテリアルを消費して近くのビークルを自動修理することができるので、
      損傷を受けたビークルに乗り移り戦線維持に活躍できます。
      戦略画面からワープ機能を使うと便利です。
  • 生身で突撃
    • プレイヤーキャラ自身も一応携行武器を持って敵ビークルにケンカを売ることができます。
    • 拿捕狙いのAIブロックのピンポイント破壊には有効的な手段。
    • プレイヤーキャラは脆弱なため味方の砲撃の巻き添えになったりNPCに迎え撃たれたりするのに注意。

戦略画面の使い方

Eキーで戦略画面が開きます。
ここから各ビークルに指示をしたり編成などが可能です。
キャンペーンは基本的にこの画面とにらめっこするモードです。
(ボタン画像未設置)

  1. このボタンを押すと、ビークルの位置に画面がスクロールします。
  2. このボタンを押すと、プレイヤーキャラがビークルの位置にワープします。どこからでも無制限に使えます。
  3. このボタンを押すと、ビークルの実体、非実体を切り替えます。
  4. このボタンを押すと、今選択しているビークルの艦隊に合流します。
  5. このボタンを押すと、AIをオフにします。AIは何もしなくなります。
  6. このボタンを押すと、AIをオンにします。AI制御による移動はせず、使える武器で敵を攻撃します。
  7. このボタンを押すと、AIをコンバットモードにします。Naval AI Cardなどで指定された戦闘機動を取りながら戦うモードです。
  8. このボタンを押すと、AIをパトロールモードにします。指定箇所にまっすぐ移動しながら戦うモードです。
    シフト+右クリックで巡回箇所を次々設定できます。
  9. このボタンを押すと、AIを艦隊行動モードにします。このモードのビークルは旗艦との位置関係を維持して移動しながら戦います。
  10. このボタンを押すと、艦隊は解散します。
  11. このボタンを押すと、ビークルのビルドモードに入ります。
  12. このボタンを押すと、選択されているビークルに旗艦を変更します。
  13. このボタンを押すと、ビークルのリペアを始めます。搭載したリペアボットか1km以内にリペアテンタクルが必要です。
    もちろんマテリアル供給も必要です。
  14. このボタンを押すと、このビークルに個別の名前をつけられます。
  15. このボタンを押すと、艦隊名を変えられます。
  16. このボタンを押すと、その場にHP0%状態のビークルのコピペができます。
  17. このボタンを押すと、ビークルを別のビークルに改修できます。差分となる部分のマテリアルはその場に落ちます。
  18. このボタンを押すと、ビークルを最新バージョンに更新できます。
  19. このボタンを押すと、ビークルの全マテリアルをその場に落とします。ビークル自体はHP0%状態としてその場に残り、移動させたりリペアが可能です。
  20. このボタンを押すと、ビークルの全マテリアルをその場に落とします。ビークルは完全に消去されます。
  21. このボタンを押すと、指定した艦隊間で資源分配が行えるようになります。
  22. このボタンは、資源分配時にどれだけの資源を要求するかを指定します。
    マテリアル・弾薬・燃料・エネルギーそれぞれに関して、0%から100%まで要求できます。
    ビークルそれぞれの要求を勘案して、艦隊内で資源が分配されます。
  23. このボタンは補給グループを1~5班で設定できます。
    異なる補給グループ間では資源の分配が行われません。
    グループは複数指定でき、バツボタンを押すと全てのグループへの所属が解除されます。
  24. このボタンで時間の流れるスピードを変更できます。
    0.1倍と1倍の他、Pull Allを押すと4倍と10倍も表示されます。
    4倍・10倍にすると全てのビークルが非実体化されます。

レーザー兵器の組み立て方

ft.png
Multipurpose Laser(中央の立方体)の左側がエネルギーを貯める為のパーツ、右側が貯めたエネルギーを発射する為のパーツ

[添付]
エネルギーを貯めるパーツは、Laser couplerから伸ばす形で設置します。
エンジン、及びバッテリーからのエンジン出力はLaser pumpを通して、同じcouplerに繋がるLaser cavityに溜まっていきます。
Laser destabiliserをつけると、つけたcouplerから出せる威力が上がります。
Frequency doublerをつけると、1つにつきAP値が1上がります。

[添付]
同じMultipurpose Laserに繋がるcouplerは、Q switchの数ごとに一纏めにして扱われます。
Frequency doublerは別のcouplerに繋がっていても、Q switchの数が同じなら共有されます。

[添付]
Single input Laser cavityとStorage Laser cavityはcavityの一種です。
Pumpを挿せる数が少ない/挿せないので、エネルギーを貯める速度はどうしても遅くなりますが、より多くのエネルギーを貯められます。
断続的に使用するレーザー向けです。

レーザー兵器のダメージについて

砂場の練習がてら自分で調べた事のメモ
注意!!ポンプの性能がゲーム内表記と実際で違う恐れ有り
ポンプ出力/エンジンリソース 250/100
追加メモ
Q-Swichは隣接するCoupler同士で共有できる
FreaquencyDoublerの効果は、全ての枝に繋がっているモノの合計=Doublerのみの枝を作る事も可能(当然Couplerは必要)

Q-swich未使用の場合の表記ダメージ量はレーザーエネルギー量100で1、それ以降エネルギー量が200増える毎に1ずつ増加していきます
→ぶっちゃけると、Laser cavityを1個伸ばす毎に1ダメージ増加するイメージ

ただし、Storage Laser cavityを併用した場合エネルギーの保有可能量が大幅に増える為、威力の増加が見込めます

  • Laser cavity 10個Storage Laser cavity 未使用(総エネルギー量2000)の場合の表記ダメージ10
  • Laser cavity 10個Storage Laser cavity 1個使用(総エネルギー量10000)の場合の表記ダメージ50
    Storage Laser cavityのレーザーエネルギー量が8000の為、単純に40ずつダメージが増加する計算となります
  • Laser pumpについて
    • Laser cavity 1個に付きLaser pumpを4つつけた場合
      Laser cavityのエネルギー保有量200に対してLaser pumpの生成量が1000になるので、エネルギー生産が800余ります
      そして、レーザーの威力の元になるエネルギーはLaser cavity のキャパシティしかありません
      なので、単純にLaser cavity4個分の生産能力が余剰として発生します
       
      Q.つまりどういうことだってばよ?
      A.ぶっちゃけ、Laser cavityにLaser pumpを4個付けたら5箇所で同時に発射しても威力が下がらないって事
      (Laser combinerだろうがLaser Munition Defenceだろうが、同じように1箇所として数えます)
       
      補足:Laser destabiliserを取り付けた場合、最初の威力は上がりますがレーザーエネルギーの消費量も増えてしまうため
      継続射撃を続けた場合、最終的にはLaser destabiliserを使わなかった時と同じダメージになります
      →消費するレーザーエネルギー1に対しての威力が上がるわけではなく、一度の照射で消費するエネルギーが増加する為に威力が増す
       
      Q.じゃあ具体的にどう組んだら効率がいいの?
      A.レーザー発射口5個を1単位として、1単位毎に
      • Laser cavity1個にLaser pumpを4個の組み合わせを10個並べてStorage Laser cavityを1個繋げる(威力10)
      • Laser cavity1個にLaser pumpを4個の組み合わせにSingle input Laser cavity1個(威力1)
        上記のいずれかを必要威力分伸ばす形が今の所無駄がなさそうです
         
        補足:Laser couplerを増やして系統を増やした場合、Q-swichの接続数が同じであればLaser pumpの接続数もまとめて扱われます
        ①Q-swich 未使用 Laser pump 40個
        ②Q-swich 未使用 Laser pump 20個
        この場合同じレーザーの系統であると見なされて、Laser pump 60個分の出力を得る事が出来ます
  • Q-swichの個数と表記ダメージ
    Q-swichが未使用の場合を1とした時の表記ダメージは
    Q-swich 1個の場合40倍
    Q-swich 2個の場合28.28倍
    Q-swich 3個の場合17.32倍
    Q-swich 4個の場合10倍
    で表示されます
    (正確には複雑な計算式があり上記はざっくりとした倍率の為、超大容量のレーザー機関を組んだ場合違いが出ると思われます)
  • 照射口の数とダメージについて
    照射口(Laser combiner でも Laser Munition Defence でも同じ1つとして扱う)の数が増えれば、表示ダメージを発射口の数で割った数値がそれぞれの発射口毎のダメージとなります

こちらは自分のグーグルドライブにコピーして保存してから利用してください

Wood Block/木ブロック

  • ステータス/使用資源量
1m4mBeam
Health120720
Amour33
Weight1040
Material Cost14
 
 

FromTheDepthsのコミュニティについて

Neter歴史避難所

部族設定

Tribe of the Iron Wing:

This tribe specializes in Fast flying attack aircraft with large wings and topped with over sized cannon turrets. Most cannons tend to have a very high fire rate, and they also use a variety of fast AA missiles.

New Additional Info: Iron wing is to function as the fast attack and Anti air tribe. They have standard shielding (as listed in the update thread).

Tribe of the Iron Blockade:
This tribe specializes in slow hovering battleships that are always supported by large armored VTOL helicopter systems.
Due to having a stable Firing platform they rely on Higher caliber cannons and Large missile and torpedoes with many warheads.

New additional Info: Iron Blockade is a low altitude tribe, they use Naval AI (if possible) so they can circle the enemy and broadside at distance. Their shielding is heaviest at the sides, not the front.

Tribe of the Rusted Ram:

The tribe, also referred to as "paintrains" used as "breakthrough" craft.
Larger aircraft are typically heavily armored on the front by Iron shields, this tribe specializes in breaking through the enemy lines and getting in behind.
They typically have good defensive abilities and rely heavily on cannons of all kinds.

New Additional Info: The craft are slow and supported with internal Heliblades to keep them hovering. They slowly advance with their heavily armored shields up front pounding on the enemy. Their shielding should have 1 additional level of shielding on the front and front bottom in addition to the normal shielding rules. Missiles should be used very sparingly.
Lore: This tribe at one time feared an ancient god know as the "Bovine destroyer" who would send rampaging herds of bulls into the tribes lands destroying homes and crops. Over time when the tribe developed vehicles and ships they would always make sure to include a cow guard on the front.

Tribe of Foreboding:

This tribe is the largest of all with the most powerful ships. Each ship is a flying fortress where hundreds of Gray Talons work and live.
Each Aircraft is defined by the under-slung "maw" cockpit at the from of the craft, and typically many walking paths and viewing platforms on the aircraft. Each Aircraft uses as much firepower as it can, using many kinds of cannons and missile/torpedo systems.
New Additional Info: None really, normal shielding is applied to them, and they can use any missile as stated above.

Tribe of the Crystal Keepers:

This is the rare and enigmatic Tribe of Mystics, who are charged with protecting Holy artifact Crystals that they use to power their laser systems.
Each Aircraft revolves around displaying and protecting the Crystals

New Additional Info: Armed the same way as Foreboding, but Crystal keepers get Repair Cheese and normal shielding

Tribe of the Wayward Travelers:

Anything that looks good enough for GT, but doesn't fit any Tribe.
No specific rules apply to this group.

Tribe of Foreboding

Gnasher
Dreadnaught
Colossus
Ascension
Lamprey
Bombardier
Hobgoblin
Convictor
Noir
Smog
Devils Curse
HellSpike
Tribe of the Iron wing
Iron butterfly
Kite Fighter
Pelican
Peacekeeper
Toucan
Vulture
Werebat
Iron juggernaut
Iron Dragonfly
Iron Curtain

Tribe of the Rusted Ram

Endeavor
Warhorse
Cirrus
Dragon
Puffer
Tribe of the Iron Blockade
Aardwolf
Aeonic
Abomination

Tribe of the Crystal Keepers

Hummingbird
Songbird
Corruption
Tribe of the Wayward Traveler
Bunny Bee
Hot spur

抗力

(元の用語説明と画像解説は生かす方向で)

1.なぜ抵抗を減らす必要があるのか?

速度を上げるためである。
抵抗を半分に減らすことができれば、推力が2倍になったのと同じ効果を得られる。
では速度を上げる利点は何だろうか?

1-1.マップ上の移動速度

キャンペーンで拠点を守るときや拠点を攻めるときに、
一定の速度があれば戦闘に間に合って参加できることがある。
機動力があるビークルが多ければ、防衛や攻撃のために保有する量を削減できる可能性があるのだ。

1-2.ミサイル/魚雷の回避

飛行艦の速度がミサイルの速度を上回っていればほとんどミサイルは命中しない。
また、潜水艦の速度が魚雷の速度を上回っていればほとんど魚雷は当たらない。
レーザーによる防御ができない場合は、速度による回避は有効な手段となる。

1-3.索敵誤差を増やす

索敵センサーは相手がそのままの速度でまっすぐ移動すると仮定して位置を予想するので、
単純に速度を上げても相手の索敵誤差が増えるわけではない。
しかし、速度が高ければ加速度もふつう大きくなるので、
方向転換などで相手の索敵を大きく狂わせることができ、回避率を上げることができる。
search.jpg

1-4.速度を稼がなくてもよい場合

逆に言うと、防御がしっかりしていれば速度はそこまで必要がない。
シールドは自ビークルの速度が低いほうがよくはたらくし、
相手ビークルに対する照準も自ビークルの速度が低いほうが安定する。

2.抵抗の計算方法

FtD公式wiki - 推力と抵抗によると、

抗力=速度^2×(Cross Section + Length Friction)

となっている。


以降の説明では、抗力係数=Cross Section + Length Frictionとする。

抗力=速度^2×抗力係数

となる。

2-1.抵抗と推力・最高速度の関係

ビークルが最高速度のとき、抗力=推力の関係が成り立つので

推力=最高速度^2×抗力係数

が成り立つ。

最高速度=√(推力/抗力係数)

と変形することもできる。


推力を2倍に上げても、最高速度は約1.4倍にしかならないことがわかる。
また、抗力係数を半分に下げれば、推力を2倍に上げたのと同じ効果があることもわかる。

まとめ
最高速度は推力の平方根に比例し、抗力係数の平方根に反比例する。

2-2.空気中と水中での抵抗の違い

空気中の抵抗倍率を100%とすると、水中での抵抗倍率は2000%となる。

例1)
空気中の抵抗倍率は水中の1/20になるので、空中での速度は√20≒4.47倍。
水中速度が 30 m/sのヘリブレード潜水艦が空中に飛び出すと
およそ 30 m/s×4.47≒134 m/sで飛ぶことになる。


ビークルの一部が水中に漬かっている場合は水中に漬かっている部分のみの抵抗を20倍して合計する。

例2)
空中で抵抗 4.0 の船の6割が水面下に入ると、抵抗はおよそ 4.0×0.4+4.0×0.6×20=49.6 となる。
空中で抵抗 4.0 の船の5割が水面下であれば、抵抗はおよそ 4.0×0.5+4.0×0.5×20=42 となる。
一部の推力を船体を浮かせる力に回せば、大きく速度を稼ぐことができる。
しかし水面下の割合が多いほうが被弾率は下がるので、一長一短ではある。

2-3.大気の濃度の変化

Air density(大気の濃度)はジェットやヘリブレードの推力倍率であり、
高度0m~300mでは100%、300mを超えると徐々に減少していき500mで0%になる。
500m以上ではジェットやヘリブレードははたらかない。
イオンスラスタや帆は問題なくはたらく。


抵抗の倍率はこれとは少し違い、
高度0m~300mでは100%、300mを超えると徐々に減少していき500mで最低値の10%になる。
宇宙空間でも抵抗は少し残るバランスになっている。

例)
空気抵抗が1/10になると速度は√10≒3.16倍になるので、
低空での速度が 80 m/sのイオンスラスタ航空機ならば、
高度500m以上では 80 m/s×3.16≒ 253 m/sで飛行できる。

まとめ
高度抵抗の倍率
500m以上10%
0m~300m100%
0m未満(水中)2000%

3.Cross SectionとLength Friction

Cross SectionとLength Frictionは、ビークルの形状によってのみ決まる。
先端はどのような形状がいいのか、
ビークルはどの程度細長くするといいのか、その解にせまってみよう。


※)この章では抵抗の倍率が100%のときの数値を用いることにする。

3-1.Length Frictionの計算方法

計算が易しいので先にLength Frictionから。
Length Frictionは、そのビークルを真上から見た時の面積と、真横から見た時の面積が広いほど大きくなる。
1m^2あたりの値は0.002と、Cross Sectionよりもずっと少なくなっている。

Length Friction=0.002×(真上から見た面積+真横から見た面積)

例)
length.jpg


Length Frictionは、水中での抵抗値が空気中のちょうど20倍にならないことがある。
なぜか空気中と水中で面積のとらえ方が違うため、20倍よりも少なくなることが多い。

3-2.Cross Sectionの計算方法

Cross Sectionはビークルを前から見た時の各ブロックの抵抗値の合計になる。
ほとんどのブロックの抵抗値は0.1でこれが最も大きく、
最も抵抗の小さい 4m wedgeブロックの抵抗値は0.005である。


3-2-1.ブロックの形状と抵抗
構造材ブロック(Wood,Metalなど)は長さと形状によって抵抗が決まっている。

長さ\形状Down slopeSquare cornerTriangle cornerInverted triangle cornerwedge
1m0.040.030.030.040.02
2m0.020.0150.0150.020.01
3m0.0130.010.010.0130.007
4m0.010.0080.0080.010.005

※1)インベントリ欄の数値ではなく、実際に設置した時の空気中の値。

※2)中には複数の方向の抵抗値をもつブロックもあるが、最も抵抗値の少ない方向のみ記している。


3-2-2.ブロックの配置制限
構造材ブロックの置き方によっては、抵抗減少効果が得られないことがある。
開けておくべき箇所がブロックでふさがれていると、抵抗値が0.1で計算されてしまう。


4mブロックの各形状について、開けておくべき箇所を赤で示した。
両方の箇所が空いている必要がある。
corner.png


3-2-3.判定を通すブロックと通さないブロック
構造材ブロック以外にも、抵抗が少ないブロックはある。

ブロック名抵抗値
Light Block
Spin Block/Turret
Spin Block/Turret上に置かれたブロック全て
0
Wing/Aileron/Tail Plane
Jet Engine(小さい方のみ)
Hydrofoil/Helicopter blade
0.01
Rudder
(実際は0.02×2=0.04の抵抗値を持つ)
0.02
Exhaust
(Fuel Engineの排気管)
0.025
Camera 90,Camera 360
IR Camera 360,Sonar 360,Radar,360
0.05

ただし、これらのブロックは抵抗値の判定を後ろに通す。
後ろ側により大きな抵抗値を持つブロックがあれば、そのブロックの抵抗値が優先される。
構造材ブロックは判定を後ろに通すことはない。
drag2.jpg


drag1.jpg
前から順に抵抗値を見ていき、構造材ブロックに当たると判定が終わる。
その列で最も高い抵抗値のブロックが採用される。


判定を通すブロックは、構造材の抵抗減少効果を妨げない。
前項で示した赤ブロックの箇所にも問題なく置くことができる。


3-2-4.抵抗によるモーメントの発生
Cross SectionはLength Frictionと違い、ブロックごとに抵抗が計算される。
重心の上下(もしくは左右)で抵抗が違っていると、ビークルを回転させる力が発生してしまうのだ。
moment.jpg

3-3.抵抗と体積の最適化

抵抗を減らすためには細長い形がいいと言われている。
しかしあまりに長くしてしまうとLength Frictionが大きくなってしまうし、
必要なものを載せられなくなってしまう。
前から見た時の面積と長さのバランスについて考えてみよう。


仮にCross SectionとLength Frictionの1m^2あたり抵抗値が同じだったとしよう。
全体の抵抗は表面積に比例する。
同じ体積で表面積が一番小さくなるのは立方体であるから、
幅と高さと長さが等しいときに抵抗は最も小さくなる。
このとき、全ての方向の抵抗は等しくなっている。


では実例として、前項のくさび形の機首で考えることにしよう。
くさび形機首の1m^2あたり抵抗値は0.01、
Length Frictionの1m^2あたり抵抗値は0.002である。
cross.jpg
Cross SectionはLength Frictionの5倍の抵抗があるので、
ビークルを長さ方向に5倍に引き伸ばしてやれば全ての方向の抵抗は等しくなる。
つまり、長さ:幅:高さ=5:1:1となる。
このとき、同じ体積で抵抗が最も小さい状態になる。


一般には次のことが言える。
幅と高さが等しく、
長さと幅がCross SectionとLength Frictionの1m^2あたりの抵抗値の逆比になったとき、
同じ体積で抵抗が最も小さい状態となる。

まとめ
一定の体積で抵抗が最も小さい状態にするには、
幅と高さが等しく、長さをそれより長くする必要がある。
Length FrictionがCross Sectionの値の2倍になったとき、
全ての方向の抵抗は等しくなり、抵抗が最小値となる。
数式に免疫がある人向け

ラグランジュの未定乗数法を用いた説明


ビークルの長さをl,幅をw,高さをhとおくと、
抗力係数はD(l,w,h)=0.01hw+0.002(lw+hl)
体積はV(l,w,h)=lwh
となるから、


抗力/体積が最大値になるとき、
(δD/δl)/(δV/δl)=(δD/δw)/(δV/δw)=(δD/δh)/(δV/δh)
が成り立つ。


DとVはw,hについて対称な式なので、(中辺)=(右辺)よりw=hは自明。
(左辺)=(中辺)より
0.002(w+h)/wh=(0.01h+0.002l)/hl
w=hを代入して整理すると
l:h=0.01:0.002=5:1
l:w:h=5:1:1のとき、抗力/体積が最小になるとわかる。

Railgunの仕組みと設定について

Railgunで使用する電力は、レーザー機関とよく似た仕組みになっている。

Laser: エンジン出力 → Laser pump → Cavity
Railgun: バッテリー電力 → Railgun Charger → レールガンエネルギー

Railgunにおけるバッテリー電力はLaserにおけるエンジン出力に対応し、Railgun ChargerはLaser pumpに対応、
Railgun ChargerによってチャージされたレールガンエネルギーはLaserでいえばCavityに蓄積されたレーザーエネルギーに対応している。
レーザーではキャビティ容量が存在し、容量を増やすためにはパーツを接続する必要があるが、Railgunでは謎空間に保持されるようだ。
ここでLaserにおいてエンジン出力100がレーザーエネルギー50に変換されるのと同じく、Railgunにおいても
バッテリー電力とレールガンエネルギーは等価とは限らない
ことを覚えておこう。
またLaserでいうDestabiliserに対応するものは、Railgun barrel magnetである。
Laserとの違いとして、Destabiliserは0個でもLaserとして機能するのに対し、magnetは1個以上接続しない限りRailgunの効果を得られない。

Set charger overclockの設定について

Railgun settingsで一番複雑と思われる "Set charger overclock" の効果について説明する。
Set charger overclockの設定値を c, Railgun barrel magnetの数を n とするとき、
設定値 c における Overclock Level: OL(c, n) を次で定める

OL(c, n) := round(c*n)

ここでroundは "最も近い整数への丸め" であり、小数部が0.5のときは偶数に丸める。つまり

c*nOL(c, n)
0 ~ 0.50 *
0.6 ~ 1.41
1.5 ~ 2.52
2.6 ~ 3.43
3.5 ~ 4.54
4.6 ~ 5.45
5.5 ~ 6.56
6.6 ~ 7.47

となる。 (* OL(c) = 0 のとき、Railgunの効果は発生しない)

Railgun Chargerの数を k 個、 Railgun barrel magnetの数を n 個、Set charger overclockの設定値を c とするとき、
レールガンエネルギーのチャージ速度は

 

(チャージ速度) = 100k*c [毎秒]

 

チャージ可能な最大レールガンエネルギーは

 

(最大レールガンエネルギー) = 0.2*(1 - 0.9^OL(c, n))*(利用可能バッテリー電力)
(n と OL(c) の少なくとも一方が 0 であるとき、最大レールガンエネルギーが 0 になるため、Railgunの効果は発生しない)

 

Railgunにエネルギーをチャージするだけではバッテリーの電力は消費されない。
実際にバッテリーの電力が消費されるのは射撃時であり、その時点でチャージされたレールガンエネルギーを (実チャージエネルギー) として、
実際に消費されるバッテリー電力は

 

(消費バッテリー電力) = c*(実チャージエネルギー)

ちなみにnやcの値が大きいと、(バッテリー電力) < (消費バッテリー電力) となるが、
このような場合 (消費バッテリー電力) ≦ (バッテリー電力) となるようにcの設定値が強制的に下げられる。
n = 1のときこの限界値がc = 7.4であるため、7.5以上の値は実質設定不可能である。

テスト

テスト2
設定欄名和訳効果
Penetration factor浸透率メタルジェットの浸透距離が伸びたら破片発生量が減る。短くしたら増える

Desktop Screenshot 2018.07.25 - 00.55.32.32.jpg

 

public override void SetExtraInfo(ExtraInfoArrayReadPackage v)
public override void GetExtraInfo(ExtraInfoArrayWritePackage v)
float500個分のデータを記憶可能。

 

public override void SetParameters1(Vector4 p)
public override Vector4 GetParameters1()
Vector4記憶可能、ExtraInfoがあれば必要なし。

 

public override void SetParameters2(Vector4 p)
public override Vector4 GetParameters2()
Vector4記憶可能、ExtraInfoがあれば必要なし。

 

public string SetText(string newText, bool sync = true)
public string GetText()
stringを無制限に記憶可能。
IBlockWithTextの継承とUniqueIdが必要。

 

実行順
BlockStart
StateChanged
SetExtraInfo
SetText
FinalOptionalInitialisationStage

 
 
 

Mod作成 ブロックの機能追加

 

必要なもの
FTD内のコードをみるやつ(今回はILSpyを使用)
C#ビルドしたりできるやつ(今回はVisual Studio 2017を使用)

 
 

~準備編~

 

まずはModを作成しよう。
FTDを起動して、Mod編集画面で「Add a new mod」ボタンをクリック
好きなModの名前を付けてあげよう。
この解説では「NewTestMod」という名前を付けたことにする。
名前を付け終わって、Modが生成されたのを確認したら、「Save all mods to disk」ボタンをクリック
FTDを閉じよう。

 

C:\Users\ユーザー名\Documents\From The Depths\Mods
ここに、Modに付けた名前と同じ名前のフォルダ(NewTestMod)があるはずだ。
そのフォルダを開いて、中にheader.headerという名前のファイルがあれば問題なし。

 

次はModで追加したブロックに機能を追加するためのコードの準備をしよう。
実際は新しいプロジェクトを生成したり、ModをFTDに認識させるための色々をしないといけないのだが、
最近、開発者がModの例として、「ExampleMod」を用意してくれたので、まずはこれをベースに色々いじってみよう。

 

C:\Program Files (x86)\Steam\steamapps\common\From The Depths\From_The_Depths_Data\StreamingAssets\Mods
ここにExampleModという名前の付いたフォルダがあるので開いてみよう。

 

ExampleMod
Items
MyWidgets
header.header
plugin.json

 

これらのファイルやフォルダがあるはずだ。
ExampleModとplugin.jsonをコピーして、先ほど生成を確認したNewTestModフォルダ内に貼り付けよう。
NewTestMod内はこうなるはず。

 

ExampleMod
header.header
plugin.json

 

次はNewTestModフォルダ内に貼り付けたExampleModフォルダを開いて
ExampleMod.slnを開いてみよう。
ここでVisual Studio 2017を使用する。

 

ExampleModプロパティにある、ExampleModPlugin.csを開こう。
そして、ExampleModPlugin.csの中身を全部消して、下のコードを貼り付けてしまおう。

 
using BrilliantSkies.Core.Constants;
using BrilliantSkies.Modding;
using System;
using System.IO;
public class ModPlugin : GamePlugin
{
    public string name
    {
        get { return "TestMod"; }
    }
    public Version version
    {
        get { return new Version(0, 0); }
    }
    public void OnLoad()
    {
        ModProblem.AddModProblem(name, Path.Combine(Get.ProfilePaths.RootModDir().ToString(), name), "Mod Version " +
version, false);
    }
    public void OnSave()
    {
    }
}
 

貼り付けたら、ソリューションのビルドを実行して、FTDを起動してみよう。
無事に起動できたら準備完了です!

 
 

~機能実装編~

 

まずとても簡単な機能の実装からやって見ましょう。
ブロックに視点を合わせると、文字が表示される機能の追加をめざしてみます。

 

NewTestModフォルダに戻り、ExampleMod.slnを開き、ExampleModプロジェクトを右クリックして、追加・クラスを選択します。
新しい項目の追加画面が出てくるので、適当な名前を付けて追加ボタンを押します。
新しいcsファイルが生成されたと思います。
そのcsファイルの中身を全部消して、下のコードを貼り付けてしまおう。

 
public class Test : Block
{
    public override InteractionReturn Secondary()
    {
        InteractionReturn interactionReturn = new InteractionReturn
        {
            SpecialNameField = "hello, world"
        };
        return interactionReturn;
    }
}
 

貼り付けたら、FTDを終了しているのを確認してから、ソリューションのビルドを実行しましょう。
(FTDが起動しているままソリューションのビルドを実行すると、ビルドが出来ません)
ビルドが完了したらFTDを起動しましょう。

 

ブロックを追加しましょう(詳細は自作MOD 基礎を参照)
機能を追加したいブロックのCoding and block group optionsにチェックをいれ、
Class nameに使用するクラスの名前を入れましょう。
今回は上のコードを使用するので、Testを入力します。

 

「Save all mods to disk」ボタンをクリックしてからFTDを再起動。
これで実装出来ると思います。

 
 

~ExtraInfoの使い方~
 float,int,bool,stringを記憶できます。
 内部では記憶するデータをすべてdoubleに変換して、doubleの配列(大きさは500)に格納しているようです。
 WriteNextFloat,WriteNextInt,WriteNextBool,WriteNextStringを実行した順番通りに値が格納されます。

例:────────────────────────────

public override void SetExtraInfo(ExtraInfoArrayReadPackage v)
{

	base.SetExtraInfo(v);
	if (v.FindDelimiterAndSpoolToIt(DelimiterType.BaseTier))
	{
		float変数1 = v.GetNextFloat();
		int変数 = v.GetNextInt();
		bool変数 = v.GetNextBool();
		float変数2 = v.GetNextFloat();
		float変数3 = v.GetNextFloat();
	}

}

public override void GetExtraInfo(ExtraInfoArrayWritePackage v)
{

	base.GetExtraInfo(v);
	v.AddDelimiterOpen(DelimiterType.BaseTier);
	v.WriteNextFloat(float変数1);
	v.WriteNextInt(int変数);
	v.WriteNextBool(bool変数);
	v.WriteNextFloat(float変数2);
	v.WriteNextFloat(float変数3);
	v.AddDelimiterClose(DelimiterType.BaseTier);

}

──────────────────────────────

・SetExtraInfo
 ビークルのロードや、ブロックデータのペーストで実行されます。

・ExtraInfoArrayReadPackage.FindDelimiterAndSpoolToIt
 ExtraInfoArrayWritePackage.AddDelimiterOpenで指定したデリミタが存在するかを返す。

・ExtraInfoArrayReadPackage.GetNextFloat
 ExtraInfoArrayWritePackage.GetExtraInfoで記憶したfloatを取り出す。

・ExtraInfoArrayReadPackage.GetNextInt
 ExtraInfoArrayWritePackage.GetExtraInfoで記憶したintを取り出す。

・ExtraInfoArrayReadPackage.GetNextBool
 ExtraInfoArrayWritePackage.GetExtraInfoで記憶したboolを取り出す。

・ExtraInfoArrayReadPackage.GetNextString
 ExtraInfoArrayWritePackage.WriteNextStringで記憶したstringを取り出す。

・GetExtraInfo
 ビークルのセーブや、ブロックデータのコピーで実行されます。

・ExtraInfoArrayWritePackage.AddDelimiterOpen
 デリミタを開く。

・ExtraInfoArrayWritePackage.WriteNextFloat
 floatを記憶する。

・ExtraInfoArrayWritePackage.WriteNextInt
 intを記憶する。

・ExtraInfoArrayWritePackage.WriteNextBool
 boolを記憶する。

・ExtraInfoArrayWritePackage.WriteNextString
 Stringを記憶する。

・ExtraInfoArrayWritePackage.AddDelimiterClose
 デリミタを閉じる。

~BlockWithTextの使い方~
 文字列を記憶できます。
 記憶する文字列の長さに制限が無いのが特徴です。
 IBlockWithTextを継承したり、UniqueIdをExtraInfoなどで記憶したり、
 ブロック生成でGetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Add(this);
 ブロック撤去でGetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Remove(this);
 を実行する必要があったりと、ExtraInfoより少し複雑です。

例:────────────────────────────

int UniqueId { get; set; }

public override void SetExtraInfo(ExtraInfoArrayReadPackage v)
{

	base.SetExtraInfo(v);
	if (v.FindDelimiterAndSpoolToIt(DelimiterType.BaseTier))
	{
		UniqueId = v.GetNextInt();
	}

}

public override void GetExtraInfo(ExtraInfoArrayWritePackage v)
{

	base.GetExtraInfo(v);
	v.AddDelimiterOpen(DelimiterType.BaseTier);
	v.WriteNextInt(UniqueId);
	v.AddDelimiterClose(DelimiterType.BaseTier);

}

public override string SetText(string NewText, bool sync = true)
{

	string変数 = NewText;
	return string.Empty;

}

public override string GetText()
{

	return string変数;

}

public override void StateChanged(IBlockStateChange change)
{

	base.StateChanged(change);
	if (change.InitiatedOrInitiatedInUnrepairedState_OnlyCalledOnce)
	{
		GetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Add(this);
	}
	else if (change.IsPerminentlyRemovedOrConstructDestroyed)
	{
		GetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Remove(this);
	}

}

──────────────────────────────

・SetText
 ビークルのロードや、ブロックデータのペーストで実行されます。
 SetExtraInfoより後に実行されます。
 引数のsyncや返り値のstringは、マルチプレイの同期で使うことが多いです。
 (詳しくはILSpyで「SignPost」を覗いて見てください。)

・GetText
 ビークルのセーブや、ブロックデータのコピーで実行されます。
 GetExtraInfoより後に実行されます。

・StateChanged
 ブロックの更新用メソッドです。
 BlockWithTextとの直接の関係は無いので、ここで詳しい説明はしません。
 ここでは
 GetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Add(this);と
 GetConstructableOrSubConstructable().iBlocksWithText.BlocksWithText.Remove(this);
 を実行するために使用しています。

~Parametersの使い方~
 Vector4を記憶できます。
 ExtraInfoで十分なので、最近追加されたブロックにはあまり使用されていません。
 Parameters1とParameters2の二つが存在します。

例:────────────────────────────

public override void SetParameters1(Vector4 v)
{

	Vector4変数1 = v;

}

public override Vector4 GetParameters1()
{

	return Vector4変数1;

}

public override void SetParameters2(Vector4 v)
{

	Vector4変数2 = v;

}

public override Vector4 GetParameters2()
{

	return Vector4変数2;

}

──────────────────────────────

・SetParameters1
 ビークルのロードや、ブロックデータのペーストで実行されます。

・GetParameters1
 ビークルのセーブや、ブロックデータのコピーで実行されます。

・SetParameters2
 SetParameters1と同じ。

・GetParameters2
 GetParameters1と同じ。

abcd
e234
f678
g234
h678

コメント記入欄