BVE Trainsim 路線製作示範教學 (基本路線設計篇) CSV 形式

閱讀本篇路線製作示範教學前先跟各位說明,看不懂得指令或是為何參數這樣設定請參考製作路線這一篇,場景物件該如何製作、修改請參考製作物件篇。如果您已經會編寫路線也可參考看看,互相交流一下,畢竟某些個人心得可能有錯。

※ 以下路線範例均使用 bve 原作者 mackoy 之內房線使用物件做為範例解說。


編輯指令路線設計場景設置站場設計時刻設定號誌設定場景音效輔助指令


製作前的準備

路線編輯前先製作路線草稿,將預定製作路線的資訊列出,如彎道、坡度、橋樑、隧道、建築物、樹林、山坡、車站、月台、轉轍器、等等…將其作成平面草稿,將相關位置標入,完成後就可以開始將這些資訊轉換成 bve 的路線指令。

※ 可以準備一本筆記本,將路線草稿資料;物件製作紀錄、方式等等…寫在筆記中,未來會更加方便整理及製作。

正確的文字與記號

在製作物件或路線編寫有一點非常重要,那就是正確的文字與記號。

為什麼很重要呢?如果使用錯誤的文字或是相似的文字,只要其中有一個文字錯誤,程式在路線場景及物件結構建立與繪製時就會造成錯誤,當然只要稍微注意一下,能夠正確的使用記號,這種錯誤就不會發生。

※ 特別注意,輸入法全形和半形的區分要正確,全形的記號是不能夠作為 bve 的記號,所有記號一律使用半形。

編寫習慣

製作前要先有路線製作的良好的編寫習慣,不要想到什麼指令就寫什麼指令,造成整篇雜亂無章,將來若要修改某指令或片段時會不知從何改起。如下面兩個範例,哪個會比較方便繼續製作及編寫?

※真正在路線製作告一段落時,畫面上的指令會密密麻麻,不會像範例中指令還算好找,所以要自己擬定一套良好的編寫習慣。

寫法編輯範例一
With Track,
0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;,.Height 0.45,.Pole 0; 0; 0; 50,.Form 0;R; 0; 0,,.stop 0,
100,.Curve 300,.Pitch 25,.Pole 0; 0; 0; 25
500,.Curve 0,.Pole 0; 0; 0; 50,.Pitch 0
975,.Form 0; L; 0; 0,
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;,.stop 0,,.Form 0; L; 1; 0,
1025,.Form 0; L; 0; 0,
寫法編輯範例二
With Track,
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
    ,.Form 0; R; 0; 0,
 100,.Curve 300
    ,.Pitch 25
    ,.Pole 0; 0; 0; 25
 500,.Curve 0
    ,.Pitch 0
    ,.Pole 0; 0; 0; 50
 975,.Form 0; L; 0; 0,
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ,.Form 0; L; 1; 0,
1025,.Form 0; L; 0; 0,

善用註解


當製作的指令密密麻麻,說不定哪些指令及參數是什麼設定及模樣都忘了,難道每次都要開啟程式進去看看是什麼物件嗎?其實不需要,只要製作時順便加上一行註解說明這是什麼,或是在路線中同一處地點整體尚可歸為一組的物件中運用註解將其分類歸納。將來要再編輯或修改時看一下註解,應該就能喚起你的記憶了。

註解編寫範例
Train.Folder 113_4 ;列車形式
With Structure
.Rail(0) BallastS.csv ;含電力線
.Ground(0) Grass.csv ;
Texture.Background(0) Bg_Fine.bmp
With Track,
    ;<!-//起點站開始//>
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0, ;不顯示停車牌
    ;<!-//起點站結束//>
    ;※終點站開始
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ;※終點站結束

所以善用記號可以增加辨識速度,這裡說的可不是電腦對指令的判讀會加快喔~。而是個人在書寫、閱讀指令時方便辨識。

前言說完了,接下來就要進入路線製作示範教學了。


路線指令編輯

首先想一想,一條路線最基本需要哪些指令就可以運行了?
是不是要有輛可以駕駛的車在起點位置準備發車開到終點位置。
所以最基本的路線指令只要寫成這樣,就可以在 bve 裡運轉了。

編輯指令中我們可以查到

車輛指定的指令和參數是Train.Folder Value
車站的指令和參數寫法是Track.Sta Name; Time1; Time2; PassAlarm; Door; Stop; Device; Sound1; Halt; Jam; Sound2;
停車位置的指令和參數是Track.Stop markerDir; marginBk; marginFw

只要將指令 Train.Folder 的參數 Value 依照編輯指令中的說明,將參數 Value 改成 Train 資料夾中任一列車資料夾的名稱即可。

不過在這裡將各種參數說明的教學等於照抄編輯指令而已,所以在此盡量不談各種指令的參數說明,請自行查詢編輯指令中的參數說明。
同時要留意一些注意事項,像指令 Track.StaTrack.Stop 要同時搭配出現,不然有車站沒有停車位置,程式會判定無停靠車站。

基本指令編寫範例 執行結果
Train.Folder 113_4

   0,Track.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,Track.Stop 0,
1000,Track.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,Track.Stop 0,


執行後會發現,喂~有沒有搞錯,什麼都沒有,沒有鐵軌、天空和地面。
繼續增加這些物件的相關指令吧!

想想看:如果 bve 這樣也能執行運轉時可以做什麼路線型態或新用途?

不過我們在編輯指令只能直接找到 Track.Rail 指令、 Track.RailEnd 指令、 Track.RailType 指令和軌道有關。
而天空和地面我們也只能找到 Track.Ground 這個用於地面的指令而已?

呵呵...。不是什麼指令都是在 Track 這個(軌道指令及參數)的聲明裡面下。像車輛指定不就歸類在 Train 聲明下
查看看其他聲明!在 StructureTexture 這兩個聲明下可以找到一點端倪。

是不是看到Structure聲明下的 Structure.StType.Load 指令 和 Texture聲明下的Texture.TxType.Load 指令

同樣的依照編輯指令的說明將其物件類型參數替換。

可以得到 Structure.Rail(IdxTxType).Load FileName
     Structure.Ground(IdxTxType).Load FileName
     Texture.Background(IdxTxType).Load FileName 這三個指令,而編輯指令提到 Load 的文字可以省略。

那麼就將 Load 省略後,將這些指令的參數替換成預定要讀取使用的物件檔案名稱後寫入路線檔中。

※ 若是在這裡不瞭解沒關係,下一篇會針對放置物件的基本法則仔細說明,
  只要記得,路線中看到的一切物件、場景一定要在聲明中寫上使用指令預定導入的物件檔,讓程式有索引、路徑、檔案可以讀取。


軌道、天空、地面編寫範例 執行結果
Train.Folder 113_4

Structure.Rail(0) BallastS.csv
Structure.Ground(0) Grass.csv
Texture.Background(0) Bg_Fine.bmp

   0,Track.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,Track.Stop 0,
    ,Track.RailType 0; 0
    ,Track.Ground 0
1000,Track.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,Track.Stop 0,

重新執行會發現鐵軌在草裡?天上浮著條電線?所以我們要做調整,不過在這裡要先做一個指令輸入的寫法。
在一開使編寫時我們依照編輯指令一條一條輸入,
不過每次要新增一個指令就要連同聲明一起輸入,真是麻煩。等到輸入幾百行的指令在加上聲明不就令人眼花撩亂?

BVE 的作者可不是那麼沒良心,其實早就設計了一個簡略聲明的寫法。
當屬於相同聲明下的指令只要在最前面一行寫下 With Keyword 的寫法,後面的指令就不用再寫聲明了。
現在就將路線檔做簡略聲明的編寫,然後看看有何不同。06/11/30編寫

簡略聲明編寫範例 執行結果
Train.Folder 113_4
With Structure
.Rail(0) BallastS.csv
.Ground(0) Grass.csv
Texture.Background(0) Bg_Fine.bmp
With Track,
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.Stop 0,
    ,.RailType 0; 0
    ,.Ground 0
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.Stop 0,

修改後的路線檔的內容是否看來清爽多了?

接下來再回到鐵軌在草裡,天上浮著條電線問題。

發生鐵軌在草裡這種現象首先要調整軌道物件的高度,使其能夠完整顯示,所以現在要將鐵路路基提高,
使用 Track.Height 這個高程指令,大約調整 0.3m~0.45m 即可,太低或太高可能會造成部分埋沒或物件懸浮。

天上浮著條電線則是因為範例中使用內房線物件,該鐵軌的物件含電力線,有兩種方法,選擇沒有電力線的軌道物件,或是架設電桿。 在這裡選擇架設電桿,選用 Track.Pole 這個指令,然後設定 50m 一處電桿,便接在電力線上。

同樣的,記得電桿是路線中看的到的物件檔案,要在物件聲明中寫上使用指令預定導入的物件檔案名稱與路徑。

※ 建議路線使用之物件盡量自行製作,除較符合該設計路線之風貌,也能完全掌握物件尺寸及位置,
  不然就會發生像是沒有電化的路線天上有著騰空的電力線的神奇現象?


高程、電桿編寫範例 執行結果
Train.Folder 113_4
With Structure
.Rail(0) BallastS.csv
.Ground(0) Grass.csv
.Pole(0; 0) Pole1.csv
Texture.Background(0) Bg_Fine.bmp
With Track,

   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.Stop 0,
    ,.RailType 0; 0
    ,.Ground 0
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.Stop 0,

路線中會有起伏彎曲的地形吧,不能說路都是直直開,也沒有上下坡吧~

我們查詢編輯指令可以找到,軌道坡度的是 Track.Pitch 指令、軌道曲率是 Track.Curve 指令。
現在在距起點 100m 處設一個曲率 R=300、坡度千分之 25 的上坡彎道,到距起點 400m 時變為直線無坡度,接著來到距起點 500m 處設一個曲率 R=-300、坡度千分之 25 的下坡彎道,到距起點 900m 時變為直線無坡度。因為彎道處電桿不能跨距太長,電線自己是不會轉彎的,所以彎道處要設定 25m 一處電桿。
※電桿在設定上是用距離控制的,增加電桿即減少距離,最遠為 50m 最近為 25m 一處電桿,其他數字無效。

想想看:電桿指令是否能夠改變其型態,將物件改製作成像邊坡、圍牆形式之循環物件?與邊坡、圍牆指令的不同特色在哪?

電桿修改,彎道、坡度編寫範例 執行結果
Train.Folder 113_4
With Structure
.Rail(0) BallastS.csv
.Ground(0) Grass.csv
.Pole(0; 0) Pole1.csv
Texture.Background(0) Bg_Fine.bmp
With Track,
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
 100,.Curve 300
    ,.Pitch 25
    ,.Pole 0; 0; 0; 25
 400,.Curve 0
    ,.Pitch 0
    ,.Pole 0; 0; 0; 50
 500,.Curve -300
    ,.Pitch -25
    ,.Pole 0; 0; 0; 25
 900,.Curve 0
    ,.Pitch 0
    ,.Pole 0; 0; 0; 50
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,


走完一趟後必定會發現怎麼上坡時路基懸空,下坡坡時軌道鑽到土裡了!
因為軌面高程只有 0.45m 高, bve 的設定是 25m 為一單位,在平面時軌道高程軌道頭端設定每 25m 單位時軌道高程離地 0.45m ,也就是當 25m 單位的軌道尾端因坡度上升或下降後造成高程會低於或高於設定上離地 0.45m 的地面時,軌道尾端必定會懸浮在半空中或是沉沒地底下。

上坡道路基懸空可以利用物件或許能夠掩飾及解決,但下坡用物件掩飾前需要先加入軌面高程來控制這種狀況,畢竟這樣若隱若現的軌道不能用啊~
所以在下坡的地方作個高程調整,然後我們順便在路基旁加上邊坡及圍牆來看看。

※ 其實要掩飾落差可以加製作有坡度的地面來掩飾,但需要製作屬於地面的特別物件,在這裡先用現成物件示範。

同樣的查詢與邊坡和圍牆相關的編輯指令
Track 聲明下找到與邊坡相關的 Track.DikeTrack.DikeEnd 指令以及圍牆相關的 Track.WallTrack.WallEnd 指令。
Structure 聲明下組合後導入邊坡 Structure.DikeL(IdxTxType)Structure.DikeR(IdxTxType) 以及
             導入圍牆 Structure.WallL(IdxTxType)Structure.WallR(IdxTxType) 等指令。

是否發現還有分左右側呢?在編輯指令中的說明提到可以只顯示某一側的邊坡和圍牆,或是兩側均顯示,如此一來能更為活用此類物件,
不過要注意喔!在Structure 聲明下導入分左、右側物件時,在路線左側寫成的物件不要導入右側,寫相反了位置可是會相差很多喔!

另外在這裡提供一個簡單的運算式:

簡易的坡度下降運算式
H=25*grade+Ho

H: 坡道新軌道高程
grade: 坡度[]單位千分之
Ho: 原設定之軌面高程[m]

想想看:如何迅速且方便設定軌面高程又使地面與物件之間不至於感覺懸空?

高程修改,邊坡、圍牆編寫範例 執行結果
Train.Folder 113_4
With Structure
.Rail(0) BallastS.csv
.WallL(0) WallL.csv
.WallR(0) WallR.csv
.DikeL(0) DikeL.csv
.DikeR(0) DikeR.csv
.Ground(0) Grass.csv
..Pole(0; 0) Pole1.csv
Texture.Background(0) Bg_Fine.bmp
With Track,
   0,.Sta 起點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,
    ,.Height 0.45
    ,.Pole 0; 0; 0; 50
 100,.Curve 300
    ,.Pitch 25
    ,.Pole 0; 0; 0; 25
    ,.Dike 0; 1; 0
 125,.Wall 0; 0; 0,
 400,.Curve 0
    ,.Pitch 0
    ,.Pole 0; 0; 0; 50
 475,.Height 0.45
 500,.Curve -300
    ,.Pitch -25
    ,.Pole 0; 0; 0; 25
    ,.Height 1.1
    ,.WallEnd 0
 900,.Curve 0
    ,.Pitch 0
    ,.Pole 0; 0; 0; 50
    ,.Height 1.1
 925,.DikeEnd 0
    ,.Height 0.45
1000,.Sta 終點; ; ; 0; 0; 0; 0; ; 0; 0;
    ,.stop 0,



等等…在里程起 500m、900m 處軌面高程設為 1.1m 還可以理解,但為何里程起 475m 和 925m 還要再設一次高程呢?
應該里程起 500m 處軌面高程設為 1.1m,900m處軌面高程設為 0.45m 就可以了,為什麼畫蛇添足在這前後又加上軌面高程?
原因是若在這坡道前後不設高程,末端的軌道一樣會陷入地底,主要是只設頭尾高程時, bve 程式會自動幫你在坡道間自動計算升高或降低軌面高度,但是因為自動改變高程會造成坡道起點及終點所設定的固定軌面高程可能又變的過高或過低,造成部分軌面一樣沉陷於地面之下。
所以在此段下坡處高程均設為 1.1m,下坡道頭尾端強制高程設為 0.45m 即為為避免此現象,這種寫法是將坡度落差累計到最後,預定使用有坡度的地面來掩飾。不過這裡只是作簡單介紹而已,寫法不是只有這一種。

想想看:如果 bve 會自動修正高程,那麼要設計U字型河谷時,該如何寫高程指令?

※彎道很怪對不對! bve 的物件轉彎方式為行進路線正中央為原點依25公尺作一次偏角來達到轉彎效果,25公尺對於小曲率半徑的軌道來說太長了,所以要在物件動點點手腳,軌道物件補上新座標點使物件形成的軌道面能成為一個圓弧。

※當碰到上下坡時地面如果還是平坦的樣貌不是很奇怪嗎?作出屬於適合這種有坡度地形的地面物件吧!

以上就先介紹到這裡了,下一回詳細介紹軌道型式與周邊場景建立
本段因06/7/26起插入場景設置篇,故此段介紹變更,原文移至場景設置篇。

編輯指令路線設計場景設置站場設計時刻設定號誌設定場景音效輔助指令


2005/05/29~2005/05/30 編寫
2005/06/03~2005/06/04 修訂
2005/07/14 修訂二
2006/11/30 配合 With 寫法局部修改、以及使用指令編寫導入。


遊戲安裝遊戲操作遊戲問題製作工具製作路線製作列車製作物件製作音效
鐵道知識製作心得檔案下載物件圖片真實場景路線風光站務紀錄本站首頁
製作感想網站推薦自我介紹音效編輯影像處理站內導覽簡易分站無用留言



Copyright © 2002~2007 Chikainn83