鉄道経営系ゲーム製作スレッド Ver.7
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2010/03/30(火) 22:05:34ID:62jSr8U0情報交換スレッドです。
[前スレ]
鉄道経営系ゲーム製作スレッド Ver.6
http://pc11.2ch.net/test/read.cgi/gamedev/1239023536/
[このスレッドで主に話題となるゲーム]
FreeTrain EX Another version
http://sourceforge.jp/projects/freetrain-exav/
FreeTrain EX Another version wiki
http://www19.atwiki.jp/freetrain-exav/
Tera Train
http://teratrain.la.coocan.jp/wiki/?FrontPage
FreeTrain
http://www.kohsuke.org/freetrain/
FreeTrainヘルプ
http://www.kohsuke.org/freetrain/wiki/pukiwiki.php (IDとPASSはダイアログよく読んだら分かる)
[関連サイト]
アートディンク
http://www.artdink.co.jp/
0289riorio ◆rio2xMQlrQ
2010/04/17(土) 13:55:41ID:UXA6Esz4ありがと
でもなんかダメみたい
スタジアム1つ建てると、試合予定4回分、一ヶ月ごとのチームパラメータ調整、
年一回の成績リセットなど6つぐらいWorld.world.clock.registerOneShotを仕掛ける
んだけども。
撤去のときは当然これを取り消さないとまずい。
で、
World.world.clock.unregister( new ClockHandler(onNewYear) );
とかってやってって、試合は4試合分予約が入ってるから
World.world.clock.unregister( new ClockHandler(onGameDate) );
を4回やったんだけど、消えないみたいで撤去後も勝手に試合があってそのあと
エラーが起きて止まった……
とほーー
ていうか、あのさぁ、これって昔っからサッカースタジアム撤去したらエラーになって
なかったのぉ?なってないとおかしいと思うんだけど。
うーーん。「撤去できないアイテムです」って言い張って実装してもいいんだけど ^^;;
0290riorio ◆rio2xMQlrQ
2010/04/17(土) 14:02:05ID:UXA6Esz4http://u4.getuploader.com/freetrain/download/57/soccerStadium2022src.zip
パス src
0291riorio ◆rio2xMQlrQ
2010/04/17(土) 14:58:29ID:UXA6Esz4サッカースタジアム問題は未解決です。
ご助力お待ちしてます。
【2.0.2.1 -> 2.0.2.2 変更箇所】
・サッカースタジアム調整
・反転折返・反転回送で1両編成も反転できるようになった
(ソースコミット済)
α3.0.1.7です。
○3.0.1.6からの変更点
・サッカースタジアム微調整
・反転折返・反転回送を1両編成に対応
wikiに、OPBさんから早速、サッカー試合開催日のツッコミが入ってた。
そこ今直してたんだよぉぉぉぉw
0292名前は開発中のものです。
2010/04/17(土) 15:06:25ID:aBfTFvtPだとサッカー場撤去でもブルドーザーで潰しても死なないね。
0293riorio ◆rio2xMQlrQ
2010/04/17(土) 15:15:16ID:UXA6Esz4私が持ってるのは20050903版EXだけなんですが。
それだと撤去できます。
エラーにはなりません。
おそらくタイマーは解除できず、裏で週2回の試合がずっと続いてると思われるのですが。
当時はそれで問題なかった模様です。
今回私がいじくって経費がかかるようにしたので、試合もやめるようにしないといけない
んですが……
うーーーーーん。
0294名前は開発中のものです。
2010/04/17(土) 18:21:54ID:teq+kmYJnull比較は何のためにやっているんだろうか
とりあえずremoveregister内のonGameDateのunregisterを一回に、
removeの際全てのfutureGameに対しremoveregisterを呼ぶ、
ついでにgameフィールド消去して呼ばれない事を簡易確認
しばらく手直し中…ver2にも3にも対応するためにtotal〜を消したい
0295名前は開発中のものです。
2010/04/17(土) 18:48:03ID:+zbX1cNw> World.world.clock.unregister( new ClockHandler(onGameDate) );
別のハンドラで取り消し要求しても意味ねぇよタコ
0296名前は開発中のものです。
2010/04/17(土) 18:50:36ID:qoAOMqiaところがどっこいC#の仕様だとそれがOKっぽいんだな。
以前、実際テストコード書いて確かめた。
0297名前は開発中のものです。
2010/04/17(土) 18:59:07ID:teq+kmYJ比較する 2 つのメソッドがどちらもインスタンス メソッドであり、同じオブジェクトの同じメソッドである場合、その 2 つのメソッドは等しいと見なされ、比較対象も等しいと見なされます。
0298名前は開発中のものです。
2010/04/17(土) 19:06:02ID:qoAOMqiadelegateを+=とか-=演算子で追加/削除する場合についての仕様だった。
unregisterは中でEqualsで比較してるから、どうなるか判らないです。
希望的観測では、Equalsも適切に実装されてるかもしれないけど。
0299名前は開発中のものです。
2010/04/17(土) 19:08:47ID:qoAOMqia>>297はいまいちわかりにくいけど、
OKだと言ってるっぽいですね。
0300riorio ◆rio2xMQlrQ
2010/04/17(土) 19:26:05ID:UXA6Esz4今、マップに駅名を表示してるフォントをオプションで自由に選べるように
してたんだけど。
オプションの変数にFontクラスで選んだフォントを格納して保存しようとするじゃない?
今オプションの保存もC#のシリアライズ使ってるんで、そうすると
「Fontクラスが混ざってるせいでシリアライズできねーよバカ!」
って怒られて差し戻されて、FreeTrain EX Avは終了するときにもオプション再度
書いて残そうとするのでまた怒られて差し戻されて、タスクマネージャから殺さないと
終了できなくなってしまったwww
今のシリアライズを使ったままのオプション保存方法を使いつつ、フォントを記録する
手段はないのだろうか……
それかシリアライズ捨てて、テキスト形式のiniファイルにでも記録するメソッドを自力
でごりごり書く??
疑問にお答え:
>>294
>null比較は何のためにやっているんだろうか
あー、それはtimer解除されてなくて飛んできたときに、stadiumがもう無くなってたら
解除忘れとみなして返すつもりで入れたんだけど、stadiumがnullにならないから無意味
でした。orz
>ver2にも3にも対応するためにtotal〜を消したい
うーー、ごめんよ。
自分がメンテナンス出来る間は、手で毎回書き換えて移植するつもりでtotal分〜秒
元のままそのまま生かしてる。
>>297
そのあたりも理解して書いたわけじゃなく、ほかの箇所のtimerをunregisterしてる
ところが全部newで読んで動いてるので真似ただけ。
0301名前は開発中のものです。
2010/04/17(土) 19:48:26ID:qoAOMqiaフォントをシリアライズするってことは、何MBもあるフォントをわざわざバイナリコピーして保存するってことですよ?
さらに、デシリアライズした時にはシステムフォントにインストールするつもりなんでしょうか?
普通どんなソフトでも覚えるのはフォント名だけ。
仮にそのフォントが見つからなければデフォルトのを使うってのが常道かと。
0302名前は開発中のものです。
2010/04/17(土) 20:03:23ID:+zbX1cNwもうちょっとコード見てみた。
Game::removeregisterを呼んでるのはStaduimStructure.cs145行目で、
game.removeregister();
なんだけど、このgameが指してるのが最後にスケジュールされたGameなんだな。(StadiumStructure::scheduleNewGame)
なので、結局
World.world.clock.unregister( new ClockHandler(onGameDate) );
は次のGameのハンドラではないので、削除はされないことになる。
なので、gameに対して呼ぶのでなく、futureGamesの各要素に対してremoveregisterする必要がある。
。。。と推測される。
# いや、手元にC#環境(つーかWindows環境)無いから断定できないけど。
0303名前は開発中のものです。
2010/04/17(土) 20:04:51ID:+zbX1cNw>は次のGameのハンドラではないので、削除はされないことになる。
は次のGameのハンドラではないので、削除はされないまま次Gameが発生することになる。
0304riorio ◆rio2xMQlrQ
2010/04/17(土) 20:17:01ID:UXA6Esz4いやー
C#(.NET)ってなんでもお手軽にできてるから、
Fontクラスをシリアライズに食わせたら向こうでうまくフォント名だけ切り出して
保存してくれるかと思ったんだが、そこまでお気軽ではなかったのね。
ということは、Fontクラスからfont.name.toStringかなんかその手のメソッドで
名前取り出して、それを文字列変数に代入して、文字列変数をシリアライズに
食わせて保存し。
呼び出しはまた文字列変数からFontの実体を呼び出して
って感じになるんですかねー?
変数でFontクラスいじるのも初めてなんですべてが手探りwww
>>294
あっ、そうだ。
ver2むけに作ってくれたら、3向け移植はやりますよ。
0305riorio ◆rio2xMQlrQ
2010/04/17(土) 20:40:52ID:UXA6Esz4http://bbs.wankuma.com/index.cgi?mode=al2&namber=11142&KLOG=25
>思い出そうと、今やってみたんですが、普通にできました。
>あれれ?
>>あれ、ちょっとまって、本当だ普通に出来るw
>>エラーでないw
XMLシリアライズはできないけれども
Soap formatterでのシリアライズはできる
ということのよーーです
理解してないけどw
が、今のFreeTrain EX Avのオプション保存はXMLシリアライズを使っているので
結局それとは別にSoap formatterでフォント専門の設定ファイルを読み書きする
必要はありそーーです。
0306名前は開発中のものです。
2010/04/17(土) 22:22:52ID:teq+kmYJttp://u4.getuploader.com/freetrain/download/58/soccerStadium.zip
パスはsrc
変更箇所は294の点だけ
ver2向けの内容です
0307riorio ◆rio2xMQlrQ
2010/04/17(土) 22:47:13ID:UXA6Esz4もらいました。
294時点ということは、もうこれでエラーは出なくなってると考えていいんでしょうか?
かまわなければこのまんまビルドしてテストのうえ、自分で大丈夫そうならリリースに
回してしまいますが。
どこかひっかかってる点がありましたら、私の方でもチェック入れますけれど。
>>Umezawaさん
地形ローダーなのですが
最新版でセーブ・ロードして開始XY座標に16,16って入れたら、ぼっこぼこの
おかしな地形ができてしまいました。
http://u4.getuploader.com/freetrain/download/59/chikeiokashii.PNG
行き過ぎて折返ノイズが出たみたいなですね。
烈火さんから「3でコロネ島やりたい(はぁと」って言われたんでコンバートしてお渡し
しようと思ってたけどなんかうまくいかない(苦笑)
ノートPCかどこかにあると思われる、画像地形ローダーに読ませた元画像を探した
ほうが早いかもな状況デス
0308名前は開発中のものです。
2010/04/17(土) 23:41:13ID:UXA6Esz4http://u4.getuploader.com/freetrain/download/60/fontchangesample.PNG
なーんかね、保存がうまくできないんですよ。
一回だけは設定できるんですけど……
WinFormまだよくわかってねー
0309名前は開発中のものです。
2010/04/18(日) 00:03:13ID:R1+Ex9Fnこちらの環境では290のものでもエラーが確認できませんでした
アサートは確認しましたが
なのでできればエラーが出ないかどうかを確認していただければと思います
また独自のpopulationを内部実装しているのでpluginのpopulation記述は無い方がいいのでないかと思います
建物毎の動的なpopulationの実装をcoreのみで出来ればよかったのですが難しいようでした
0310riorio ◆rio2xMQlrQ
2010/04/18(日) 01:05:16ID:V7U+wPtsいつ呼ばれることが確定するんだろう。
Core.csのなかのCoreクラスのなかで、
public static readonly GlobalOptions options = new GlobalOptions().load()
ってことでoptionsにnewされてるところは分かるんだけど。
なんていうんだろ。
main(){}ループの中に書かれてないのに実行(?)されるというのがよくわかんない。
C#のクラスとインスタンスの基本的なところだろうと思うんだけど。
やっぱし分かんない。
今、フォント情報を持つFontOptionsクラスを作ってあって、GlobalOptionsにある
フォント指定文字列・intカラーコードからFontクラス・Colorクラスを作らないと
いけないんだけど。
どこにどう変換をかませばうまくいくのかが分からない。
分からないというか、分からないなりにまねっこで記述してみたら、半分ぐらいは
思ったとおりに動くんだけど残り半分がうまくいかないみたいなかんじでどーも。
「どっからでも値に代入できるグローバル変数にしたい!」という衝動にかられて
ますw
んー、こんな不完全なものでもソース公開したら誰か直してくれるかね。
β版といってもあんまし途中なもの流すのもどーかと思わなくも……
>>309
290時点では、一度建てて壊してから半年ぐらいブン回すとエラーになってました。
306では同じ操作してもまったくエラーにならないので大丈夫そうです。
アサート出てました?おいといていいのかな……
031119改めUmezawa
2010/04/18(日) 06:46:37ID:/R9j2sfu地殻変動でも起こったようなマップですねw
これって空マップ作成から行なったものですよね?
どんなサイズで(どんな値を入力して)生成したか教えて下さい。
0312名前は開発中のものです。
2010/04/18(日) 07:11:47ID:uKKCvYHx全然わかってないじゃないか
0314名前は開発中のものです。
2010/04/18(日) 08:32:10ID:Eud58HLDクラスのスタティックフィールドは、クラスがはじめて参照された時に初期化される
(上記の場合 new GlobalOptions().load() が呼ばれる)はず。
ってか、ブレークポイント設定するなり、デバッグプリント仕込むなりすればわかるじゃん?
0315名前は開発中のものです。
2010/04/18(日) 13:34:28ID:wLtz4puFわけわかんなくなりやすくなるから
経験者談
0316Umezawa
2010/04/18(日) 17:21:29ID:/R9j2sfu0317riorio ◆rio2xMQlrQ
2010/04/18(日) 17:51:01ID:V7U+wPts【2.0.2.2 -> 2.0.2.3 変更箇所】
・列車名の表示を可能にした
・サッカースタジアムのエラー修正(>>306採用)
【既知の問題点】
・サッカースタジアムが近隣駅の乗車客に影響できていない
・列車名を表示すると周囲に文字の消え残りゴミが出る
ま、β版なので、問題点あってもリリースしていいかなと。
サッカースタジアムのpopulationとstation listner問題は引き続きご助力お願いします。
列車名表示のゴミは、列車の周囲数ボクセルを再描画しないとどうしようもありません。
しかし周囲数ボクセルを再描画するというメソッドが今存在しないような気がします。
どうしよう…… まぁ表示の有無を選択可能にしてあるから、嫌なら表示消してねって
いうのでもいいのかなぁ。
>>312
ごめんなさい
>>314
だんだん分かってきました
ありがとうございます
0318riorio ◆rio2xMQlrQ
2010/04/18(日) 17:53:08ID:V7U+wPts空マップ作成は400x600x16で
位置ずらしが+の16,16だったかと思います
0319名前は開発中のものです。
2010/04/18(日) 17:56:26ID:V7U+wPts使って直してくださるようお願いします。
http://u4.getuploader.com/freetrain/download/61/soccerStadium2023src.zip
パス football
0320Umezawa
2010/04/18(日) 18:13:42ID:/R9j2sfu了解しました。
もしチョココロネと完全同一のマップ取得が目的でしたら、
空マップの作成時に 400x568x16 と入力して、
位置ずらしを0,0にすればOKです。
0321Umezawa
2010/04/18(日) 18:19:33ID:/R9j2sfu空マップ400x600x16で(16,16)ずらしてみたんですが、
再現できませんでした。
0322名前は開発中のものです。
2010/04/18(日) 19:13:57ID:V7U+wPtsあ、あれ(汗
すみません、どうやったらこうなったのか忘れました。
ひょっとして、元サイズと同じサイズの空マップに対して位置ずらししちゃったのかな……
P.S.
川口さんのwikiが復活してたので、内容をちまちまとAvのwikiに移植する作業を始めました。
どなたかお暇な方、手伝ってくださるとありがたいです。
0323名前は開発中のものです。
2010/04/19(月) 01:21:40ID:9jizZnUwいけないと思ったので、wikiに書き残してきました。
http://www19.atwiki.jp/freetrain-exav/pages/114.html
もっとこれも書いとけとかあったらヨロ。
っていうかまとめてくれていい。
0324riorio ◆rio2xMQlrQ
2010/04/19(月) 08:06:54ID:9jizZnUwしました。
trunk内がBeta2
ALPHA3内がPrototype3
となります。
なぜかルートとALPHA3内とにRelease1.0がありますが、気にしないでください。
このALPHA3内のソースでちゃんとビルドできるか、どなたか確認お願いします。
ひょっとしたら置き換えなどがうまくいってないかもしれないので。
0325Umezawa
2010/04/19(月) 12:21:49ID:CoAmGge4「列車の追跡」機能で追跡中の列車情報を、外部Pluginから参照する
方法は無いでしょうか?
freetrain.views.map.TrainTrackingWindow クラスで宣言されている
private の train を参照できればベストなのですが。
前面展望のようなものを作ろうとしています。
もちろん、PS版A4にも劣るようなものですがw
0326riorio ◆rio2xMQlrQ
2010/04/19(月) 16:25:57ID:9jizZnUwでも、もしそういうのができるとなったら、
freetrain.views.map.TrainTrackingWindow クラスを改造して
trainを外部参照できるようにしますけど。
あれ作ったのついこないだですし。
0327Umezawa
2010/04/19(月) 16:47:16ID:CoAmGge4ホントですか!
ではお言葉に甘えて、public readonly かなにかにするか、
getメソッドでも追加していただけるとウレシイです。
0328riorio ◆rio2xMQlrQ
2010/04/19(月) 17:18:58ID:9jizZnUwTrainTrackingWindowがやってるのとまったく同じようにしてダイアログ
持ってツールチップ持ってきて、自分でTrain検索したらどうでしょう?
そっちのほうが簡単そうなんですけど。
0329Umezawa
2010/04/19(月) 17:27:54ID:CoAmGge4それも思ったんですが、クォータービューの追跡画面と、
前面展望画面が連動しているとカッコイイし(ニコニコでよくある)、
根本的な問題として、私が C# の GUI を知らないというのがあります。
まあ、TrainTrackingWindow を丸コピーすればいいんでしょうが、
ソースの丸コピーというのもなんだかなと。
もちろん、TrainTrackingWindow の修正は、今度何かの変更を
加えるときのついでで構いませんので、できればよろしくお願いします。
メンバ変数 Train train の private 宣言を public readonly に
変えるだけで結構です。
0330riorio ◆rio2xMQlrQ
2010/04/19(月) 17:48:33ID:9jizZnUwじゃあかまわないんで、最新ソースからTrainTrackingWindow好きなように改造して
利用してもらっちゃって、そのソース私にください。
そしたらそれ次回ビルドにコミットしますので。
私がpuclicにする改造するのを待ってUmezawaさんが始めてって行ったり来たりすると
開発のスピード感がなくなるので、ガンガンやっちゃってください。
0331Umezawa
2010/04/19(月) 18:09:44ID:CoAmGge4ゴメン、本体はビルドできないです。
本当にスピードに関しては気にしないで下さい。
お遊びの期待するとガッカリする前面展望ですし。
0332riorio ◆rio2xMQlrQ
2010/04/19(月) 18:35:35ID:9jizZnUwあっ、あれっ(ガクっw
SourceForge.jpにβ2.0.2.4としてあげました。
> public Train trainView { get { return train; } }
これでいいのかなぁ。
>期待するとガッカリする前面展望ですし。
いやでも期待しちゃうなぁ〜〜
できれば将来のメンテナンス考えるとC#で組んでもらいたいところなんですがねぇ……
ぜいたくは言いません。
0333Umezawa
2010/04/19(月) 21:01:36ID:CoAmGge4MapViewWindow クラスの trainTrackingWindow が internal だった。
ゴメン、吊って(ry
ちなみに、今回のDLLは全てC#で記述しました。
と言っても表示部は別の「exe」で、プロセス間通信をしています。
なので改造は出来ないと思いますが、メンテナンス性は問題ないと
思いますよ。
というわけで、対象列車を選べませんが、一応動くものを公開します。
http://www.free.netgamers.jp/freetrain/
配置済みの列車の中から、最初に見つかったものが対象です。
反映されているものは、「地形」「線路」「ホーム」のみです。
よって、非常に寂しい画面です。生活感が無い感じ。
0334riorio ◆rio2xMQlrQ
2010/04/19(月) 22:45:39ID:9jizZnUwぶほ……
そういえば、複数のマップビューを開きまくったときに、それぞれのマップビューに
1つずつ追跡ダイアログを出して全部のマップビューで異なる列車を追跡すること
もできるようにと考えて、internalにしたんだったかも。
これってinternalに保たないとまずいですよねぇ。
もいっこ、controllerの中にtrainInformationWindowってのがあって、これやってる
ことはTrackingWindowとまったく一緒でそのかわりマップビューへの紐付けが無い
ものなんですが。
こっち利用できないでしょうか。
それか、やっぱり同じコードを内部に持つかですかね。
今、ALPHA3でうごかしてみたら、「マップ生成中」が「134/197」からカウントアップ
止まってしまったのですが。これこのまま待ってていいのかなぁ。
0335riorio ◆rio2xMQlrQ
2010/04/19(月) 23:19:37ID:9jizZnUwいい!
非常にいい!!
やっぱり、なんというか不思議なワクワク感がありますね、これは。
並走・すれ違いの他の列車を表示できるようになったらずいぶん変わるんじゃないかなぁ。
列車のモデリングどうすんじゃーーって問題がありますが。
0336riorio ◆rio2xMQlrQ
2010/04/20(火) 00:27:27ID:/ag6H5my山手線マップは何度やってもロード完了しないなぁーー
今はカウントアップが224/197で止まってます。
1/1超えちゃってカウントアップに分母意味あんのこれwww
線路配置が複雑すぎるのかな。
地形は「なし=空マップ開始」なんですけどねぇ。
0337名前は開発中のものです。
2010/04/20(火) 04:53:26ID:GaCLh8++いい加減自分のブログでチラ裏はやって欲しいわ。
しかもレベル低い話ばっかりだし、他の回答しているやつの方がレベル高いから
その人達が開発した方がいいんじゃないのか?
もっとC#の勉強してから質問して欲しいわ。
0338名前は開発中のものです。
2010/04/20(火) 06:01:43ID:IH4/h5eA0339Umezawa
2010/04/20(火) 06:04:06ID:rrPJfq+/>>336
わざわざ動画まで作っていただきありがとうございます。
あれを見て思ったんですが、昼夜の表現が無いのはヘンですねぇ。
他の列車を表示すれば、確かに少しは変わるでしょうね。
ただの四角い箱であれば表示できるのですが、
何色で表示すべき? という問題があります。
列車の画像から一番使用ドット数が多い色を抜き出せば
いいのかな? 単純な処理だけど面倒そう。
山手線マップはロードできるようにしますね。
0340名前は開発中のものです。
2010/04/20(火) 06:07:40ID:72gm2NAQ他に何について話すんだよ
0341Umezawa
2010/04/20(火) 06:14:28ID:rrPJfq+/C#のプログラミング能力が一定以上あって、
かつFreeTrainに対する意欲がある←これ重要
今のところ上記に該当するのは、りおりおさんただ一人かと
>>338
このスレでFreeTrain以外に話題になったのって、
「A列車で逝こう」くらいじゃない?
「TeraTrain」は盛り上がりかけたけど……。
「最強都市計画」は論外www
0342Umezawa
2010/04/20(火) 07:28:33ID:rrPJfq+/とりあえず、山手線マップがロードできるよう修正した
ものをアップしました。
ただ、以前頂いたマップなので、最新の山手線が配置された
マップを読み込める保障はありませんが。
0343Umezawa
2010/04/20(火) 08:11:02ID:rrPJfq+/TrainInformationWindow ザッと見てみました。
確かに TrainTrackingWindow とそっくりですね。
似たようなものが2つある理由を把握するまで
少々時間が掛かりそうです。
っていうか、自分でUI作れって話ですね。
それに、前面展望画面に他の列車も表示するとなれば、
どのみち全ての列車情報を取得する必要がありますから、
あまり追跡中列車にこだわることはないのかも。
でも頑張って他列車を表示してもただの箱というオチw
列車のモデリングをどこかから拝借してくる?
0344名前は開発中のものです。
2010/04/20(火) 08:28:48ID:uyvV9z+C0345riorio ◆rio2xMQlrQ
2010/04/20(火) 08:31:52ID:/ag6H5my>似たようなものが2つある理由を把握するまで
>少々時間が掛かりそうです。
ゴメン
それ私の仕業なので、私が自白する以外に把握するすべはないですw
流れを言うと自動追跡はYzさんが作りかけてたんだけど、列車選択窓の実装に苦労されてて
(パネルで実装してみたら、パネルがマップごとスクロールしてあっちいっちゃったり)
それを自分もどうにもできなくて。
本体いじってたら(旧名)TrainTrackingWindow==(現名)TrainInformationWindowがある
ことに気づき。
ただ(旧名)TrainTrackingWindowで列車を選ぶと、すべてのマップビューが一度にその
列車を追ってしまって都合が悪かったので、このままではダメだと。
ただし後方互換性のためにこれはTrainInformationWindowと名前を変えて残し。
マップビュー1つと紐付けられたパチモンを真似してコード書いたのが今のTrainTrackingWindow
なのデス
追跡は1つしかしないけど乗客の乗り方は複数監視したいってときに、Tracking1つと
Information3つ開くみたいなやりかたができて便利かなぁと思ってるのは自分ひとりか?(爆
>列車のモデリングをどこかから拝借してくる?
モデリングツールを提供してもらえれば、私がしこしこ作りますよ。
理想を言えば、存在する列車プラグインの車両1両1両につき1つの3Dモデルですね。
コントリビューションIDで一対一。
0346名前は開発中のものです。
2010/04/20(火) 08:37:54ID:tReuWWAO出してきたことが今まで一度もないんじゃないかこのスレ
0348名前は開発中のものです。
2010/04/20(火) 09:01:41ID:abcxsV7i目的地をどうやって決めるのか。
ランダムに選んでも線路が繋がってない可能性がある。
線路が繋がっていても、ある列車はその駅には寄らないかもしれない。
だが、乗車時点でそれを調べるためには、
現状では実際ダイヤに沿ってをシミュレート運行してみるしかない。
まあ、目的地にたどり着かないと永遠に客車の虜囚となって
放浪しつづけてもいいって仕様なら、多少簡単だろうが。
0349Umezawa
2010/04/20(火) 09:10:56ID:rrPJfq+/TrainTrackingWindow の件、了解しました。
そもそも、追跡画面って複数出せたんでしたね。
結局、その中からどれの前面展望を見るかという
選択肢が出てきてしまうので、UIは必要なんですね。
>モデリングツールを提供してもらえれば、私がしこしこ作りますよ。
>理想を言えば、存在する列車プラグインの車両1両1両につき1つの3Dモデルですね。
りおりおさんに行動力があるのは知ってますけど、
流石に全てのモデルを作るというのはチョットwww
私がモデリングツールを提供する(作成する)のは
ムリですけど、メタセコイアか何かで作成したデータを
バッチで一発変換するようなものなら頑張れば作成できます。
いや、一発変換はキツイか……。
どちらにしても、そういったものを作るとすれば、
1ヵ月後とかになってしまいます。
あとは、列車がボクセル単位で移動するので、前面展望も
カクカク動画になってしまう問題が解決困難ですね。
PS版A4は確か、時間の流れと連動しないようにしてたんでしたっけ?
0350riorio ◆rio2xMQlrQ
2010/04/20(火) 11:07:54ID:/ag6H5my私が以前いじってたのは「A列車で行こう7」の車両でして。
これとその前の「A列車で行こう21C」では、車両の3Dグラフィックが
3D設計図データと、2D展開図とに分離して持ってまして。
2D展開図のほうはしごく普通のTGA形式画像データだったんです。
ほんとに、いわゆる図工の展開図と一緒で。
平面に車体を切り開いたものが描かれていて。
それが3D設計図データに従って3D化されていたのですね。
で、ユーザのほうで3D設計図はいじれなかったけど。
2D展開図は好きに書き換えできたので。
カラーバリエーションを増やすとか、形状が同じまったく別の会社の別の車両に
塗り替えちゃうとか。そういうことが簡単にできたのです。
http://www.hiyohiyo.info/~riorio/a7/a7TGAedit.html
なのでー、メタセコイアで3D形状を作った後、色を塗ったりするところがそれらと
同じく2D展開図でTGAとかBMPとかでできるなら非常にやりやすくてイイのですが。
メタセコイアが出力できる形式の中にそういうのってあるのでしょうか。
0351Umezawa
2010/04/20(火) 11:49:19ID:rrPJfq+/A21Cのテクスチャ張替えをご存知であれば説明は簡単です。
ポリゴンデータを表示するためには、下記の3つの情報が必要です。
1. 3Dモデル
2. テクスチャ画像
3. テクスチャ画像を3Dモデルに対して貼り付ける位置
A21Cでは上記2番のみユーザーがいじれたんですよね。
今回私が作成したものも、当然上記3つが全て必要ですし、それぞれを
いじれるようにするのも簡単なのですが、普通は?「3Dモデルを作成する」
と言った場合、上記3つをセットにしたものを言うと思います(多分)。
がしかし、今回私が作成したものは上記3つがバラバラになっています。
普通の3Dモデリングソフトでしたら上記3つはセットで作成されますので、
バラバラで情報をよこせ! と言われると一般の方は戸惑うと思います。
ですので、その一体になった3Dデータから、3種類の情報をバラバラにする
バッチを作成するのが大変だなぁ〜、ということでした。
A21C等と同等の苦労をいとわないという事でしたら、まあ私としては非常に
助かりますが、今時そんなことをするのは時代遅れ?ですね。
ちなみに、今回の前面展望プラグインですが、ランダムで建物が作成されると
思います。そのテクスチャ画像BMPはbin/resourceフォルダに入っていますので
見てみてください。これをA21Cと同じ要領で変更すれば反映されるはずです。
0352Umezawa
2010/04/20(火) 13:06:45ID:rrPJfq+/増やしたものをアップしました。ついでに昼夜の表現も。
http://www.free.netgamers.jp/freetrain/
0353riorio ◆rio2xMQlrQ
2010/04/20(火) 13:18:14ID:/ag6H5my>ですので、その一体になった3Dデータから、3種類の情報をバラバラにする
>バッチを作成するのが大変だなぁ〜、ということでした。
なるほどー
でも一度完全なバッチツールさえできてしまえば、あとはプレイヤーおまかせで
どんどん車両は増えていきそうですね。
>A21C等と同等の苦労をいとわないという事でしたら、まあ私としては非常に
>助かりますが、今時そんなことをするのは時代遅れ?ですね。
いや、時代遅れでもないと思いますよ。
たとえば東京の通勤路線でしたら、E231-500の箱モデルとテクスチャ画像例を
一つ用意してあげてれば。
3Dモデルをいじらずともテクスチャ画像をいじるだけで
帯を黄緑→山手線 帯を黄色→総武線 帯を赤→京葉線
とバリエーションを増やせるわけなので。
3Dモデルで作りなさい、って言われるより一般の人には受付よくないかな……
もちろん、完全新作で3Dモデルも作れれば、複雑な先頭形状をしてる特急車両
も作れてうれしいですね。
0354Umezawa
2010/04/20(火) 14:09:29ID:rrPJfq+/先ほど、昼夜の表現を行なおうと World.world.clock.totalMinutes を
取得するようにしたのですが、これって3系からは削除されてしまったのですか?
0355名前は開発中のものです。
2010/04/20(火) 14:22:21ID:PPfLxkt8せめて次の停車駅がわかれば、乗車する際の判断材料に加えられるんだがな。
次の駅を自動で取得させることが難しいなら、手動で指定しても構わないと思うが。
0356Umezawa
2010/04/20(火) 14:28:54ID:rrPJfq+/自己解決。
totalMinutes から totalSeconds に代わったんですね。
でもそうなると2系と3系でプラグインを別々にしないといけないのかな。
何か良い解決策は無いでしょうか?
0357riorio ◆rio2xMQlrQ
2010/04/20(火) 16:54:19ID:/ag6H5myすいませーん。
そこが3系統の変更点キモなもんで……
で、
DayNight World.world.clock.dayOrNightを呼んで返ってきた値が
DayNight.DayTimeか
DayNight.Nightか
で判定するといいかと思います。
中身についてはcore\wprld\time.csを見てください。
0358riorio ◆rio2xMQlrQ
2010/04/20(火) 19:33:19ID:/ag6H5myごめんなさい、最新版動かさずに答えてた。
すごい!夕焼けしてからゆっくり闇が広がってくのね。
うほーー
これをやろうとしたら、Timeクラスがhourやminutesを返すようになってるので、
時間単位で良ければhour、分まで使いたければhour*60+minutesとかで計算
して現在分を得たら2でも3でも動くものにできると思います。
中身はTIme.cs見てください。
0359名前は開発中のものです。
2010/04/20(火) 20:37:34ID:/ag6H5myおこたえしてなかったですね
>また独自のpopulationを内部実装しているのでpluginのpopulation記述は無い方がいいのでないかと思います
>建物毎の動的なpopulationの実装をcoreのみで出来ればよかったのですが難しいようでした
駅への集客がうまく実装できたら、その次はplugin.xmlのpopulation - base値を
「スタジアムの観客定員」とみなしてうまくpopulationの変動の計算に組み込みたいと
思ってます。
0360名前は開発中のものです。
2010/04/21(水) 07:10:28ID:2oYDrH2B車体形状の判定が難しいですが、簡易的なものと割り切って、テキトーに四角い箱に貼り付けるだけでもいいかもしれない。
それでも白い箱が走るだけと比べればマシかと。
http://ranobe.sakura.ne.jp/src/up53202.png
3D View、線路の高さ方向を半分くらいに圧縮しても良いかもしれません。
動画に出てた感じだと、まるで崖から落ちるみたい。
0361Umezawa
2010/04/21(水) 10:41:15ID:FiFgxW6h意外といけるかも。
りおりおさんのE231toukaidoa.bmpを借りました。
http://www.free.netgamers.jp/freetrain/texture.png
抜き色の指定が違うのでヘンですが。
0362Umezawa
2010/04/21(水) 11:45:35ID:FiFgxW6hhttp://www.free.netgamers.jp/freetrain/texture2.png
窓が抜けるのも捨てがたいですけど、やっぱりこっちの方がイイ
0363名前は開発中のものです。
2010/04/21(水) 11:52:49ID:s4ZpTWSCスケールは実物準拠に?
0364Umezawa
2010/04/21(水) 12:08:38ID:FiFgxW6h列車のことは全然詳しくなくて、実物はよく知りませんが、
19200x2800x3400(mm) にしてみました。
A8のようないわゆるプラレールサイズにすれば、元の画像との
縦横比は合うんでしょうが、そっちのほうがいいのかなぁ。
0365名前は開発中のものです。
2010/04/21(水) 15:13:25ID:s4ZpTWSCゲーム画面との整合性から、縦横比は元画像に合わせたほうが良いかなと思う。
画像の作者も、ドアの形状とかいろいろデフォルメしてる部分があるだろうし。
0366Umezawa
2010/04/21(水) 15:49:55ID:FiFgxW6hポリゴンのサイズはいくつにすべきだと思いますか?
元画像は斜め上から見たのを想定して描かれていて、
テクスチャとして貼り付ける場合は垂直に貼り付けるから、えーっと……
0367名前は開発中のものです。
2010/04/21(水) 17:37:54ID:nGWENici3D化した事で後にズームイン・アウト機能等がもし追加された時、
スケールがおかしいと見た目の違和感が凄いんですよ。(某●列車最新版を例示)
もしそういう機能を追加するときは3Dエンジン丸々データごと見直しますと言うなら
多少誇張されたサイズの方が見た目が良いですよね。
0368Umezawa
2010/04/21(水) 19:46:49ID:FiFgxW6hTrain オブジェクトから、属する全ての TrainCar を
取得する方法はあるのでしょうか?
TrainCar[] cars の属性は private だし、
Train.head で取得できるのは先頭車だけだし、
TrainCar.previous で取得できるのは前の車両だし。
先頭車取得&前の車両取得メソッドの組み合わせって意味無くない?
「先頭車取得&後ろの車両取得」か「最後尾車取得&前の車両取得」
なら全車両取得できるんだけど。
先頭車両取得後、Train.reverseメソッドで反転させて
後で戻そうとしても上手くいかないし……助けて。
0369riorio ◆rio2xMQlrQ
2010/04/21(水) 19:57:10ID:On7ascYefoobarさんがやってた反転機能がなんかうまいことやってたな。
えっとね、最新β2以降、pluginsの下のkohsuke〜の.tc.tat内src見てみて。
「A列車で行こう式ダイヤグラム」設定プラグインのソース。
そこのAdvancedStationHandler.cs見たら、
1両ずつ取り出してる部分があるはず。
P.S.
チラ裏はブログに書けって言われたので昨夜から今日にかけてブログにぶつくさ
書いてますがw
StationListener大改造してますw
これが成功したらサッカースタジアムが駅に直結できる!
0370riorio ◆rio2xMQlrQ
2010/04/21(水) 20:10:00ID:On7ascYeスマートに、TrainCar[] carsをpublicにするのもいいかもねぇ。
それでどっかよそに影響でなければ、だけど。
影響出るか出ないか全然分からないので断言できなくてすみません。
それならそれで、ちゃきちゃき本体いぢっちゃいますけど……
0371Umezawa
2010/04/21(水) 20:25:22ID:FiFgxW6hAdvancedStationHandler.cs 見てました。
で、これはわざわざダミーの TrainCar 生成して、
ポイントだったら云々と色々やってたので、
私が今回知りたいのは個々の車両の位置だけなので、
こんな面倒なことしなくても済む筈だ!
と思い込んで他を探してても見つからなくてイヤになりましたw
う〜ん、こんな方法しかないのかなぁ。
っていうか、このカプセル化の意図が正直分からない。
何故編成車両一覧さえ取得させないのか。
そんな筈はないと思うんだけど……。
0372Umezawa
2010/04/21(水) 20:30:00ID:FiFgxW6hおおーっ!
それなら public にするのはどうかと思うので、
headで先頭車が取得できるような感じで、
最後尾の車両を取得できるようにして下さいませ。
最後尾が取得できれば、あとは previous で前を追っていけば
いいだけのはずですので。
よろしくお願い致します。
0373riorio ◆rio2xMQlrQ
2010/04/21(水) 21:22:13ID:On7ascYepublic TrainCar tail { get { return cars[cars.Length-1]; } }
って1行足しといたらいいかなー?
すみません、StationListenerをイジってたら、大ハマリしてしっちゃかめっちゃかでw
うわーーん、どうしよう。
またセーブデータの互換性が失われるかもしれない。
しょっくぅ。
あと10分ぐらいのうちに、SourceForge.jpに2.0.2.5として置きますので。
それ持っていってみてください。
0375riorio ◆rio2xMQlrQ
2010/04/21(水) 22:09:18ID:On7ascYeちょっとC#詳しい方、ALPHA2.0.2.6(2系統だけどα版です)のソース確認して
おかしいところなおしてもらえませんか。
ソースと実行バイナリ同梱
http://www.hiyohiyo.info/~riorio/freetrain/FreeTrainEXAvALPHA2026.zip
新規ゲーム開始すると、たぶん問題なく動くと思うんです。
ただ、まだサッカースタジアムの駅への影響がちゃんとできてないっぽい。
でもそれは現時点では重要ではない。後から直せばいいから。
最大の問題は、これに従来の1,2系統セーブデータをロードすると、最初の列車が
最初に駅を出発しようとするときにgetPopulationでエラー起こして止まるんです。
おそらく100%止まる。
StationListnenerを真似て、SpecialStationListenerってのを追加してみたのですけど。
従来セーブデータをロードすると、SpecialStationListenerがねーぞってなるのかそのへんっぽい。
見て頂く必要があるのは、
core\world\rail\Station.csと、同じフォルダに有るSpecialStationListener.cs。
core\wold\structs\SpecialStationListenerImpl.csです。
なんとか互換性を保ってこれを実装できればよいのですが。
互換性がなくなるようだったらもうなかったことにするしか……
0376Umezawa
2010/04/21(水) 22:33:51ID:FiFgxW6hhttp://www.free.netgamers.jp/freetrain/
全車両が、りおりおさんのプラグイン、東海道線E231系の先頭車です。
全てが先頭車ですが、まあ雰囲気を掴むには別に問題ないかなと。
また、民家が1/2の確立で列車に化けてます(テスト用に)。
作ってみて気が付いたんですが、斜めに走るときに車両の間隔が
すごく空いちゃうんですよね。以前の simutrans みたいに。
>>375
お役に立てなくてゴメン
0377riorio ◆rio2xMQlrQ
2010/04/21(水) 22:42:23ID:On7ascYeなるんじゃないかと思う<E231系
ひょっとしたらさらに親世代どなたかが公開されてたものかもしれないのですが……
あんまり誰の誰のって言われて誤解うんでもあれなのでw
0378名前は開発中のものです。
2010/04/22(木) 00:22:58ID:a675FHCq役に立つのかな?
0379名前は開発中のものです。
2010/04/22(木) 08:10:13ID:tRxUkMRL0380Umezawa
2010/04/22(木) 14:39:36ID:zeC/usqT・右クリックで前面展望/クォータービュー切り替え
・クォータービュー画面にて車両クリックで対象変更
・ホイール回転で、拡大縮小
車両選択が少々シビアなので、拡大してから行なって下さい。
http://www.free.netgamers.jp/freetrain/
ところで、やはりというかなんというか、こういうものを作ってしまうと、
車両がボクセル単位で移動するのが残念に感じてしまいますね。
FreeTrain はボクセル単位でガチガチにプログラミングされているので、
これをいじってドット単位で移動するようにするとドツボにはまりそうだし、
ソースも汚くなるだろうからやめたほうがいいとは思うけど、やっぱり残念。
まあ、良いロジックが思い浮かび、かつ C# のスキルも高い人が修正すれば
上手くいくのかもしれないけど……。
今までドット単位での移動要望は無かったのかな?
0381riorio ◆rio2xMQlrQ
2010/04/22(木) 15:45:51ID:fEg4Xsfb>今までドット単位での移動要望は無かったのかな?
無かったんじゃないかなぁーと思います。
移動を細かくするということは、同時に車両グラフィックのドット絵のバリエーションも
それだけ細かく増やさないといけないということになりますので。
車両プラグイン作者の負担がものすごいものになりそうです。
旧フォーラムの過去ログに何か有用な情報がないか探しに行ったことあるのですが、
「車両プラグイン作者のドット絵作成負担が大きいように思うので、方向を8方向に減らせ
ませんか」という質問&要望があったりしたぐらいでした。
黙殺されてましたけどw
3D Viewがカクカクになってしまうというのであれば、FT本体側と完全同期動作を
やめればいいように感じるのですが、それは無理なのでしょうか。
FT本体の列車の動きを4tick()分記録して、4tick()遅れて動かして。
その間に動いた列車については、3D View側で適切に中割して動きを補完してしまう
ことで、FT本体が今のままで3D Viewはスムーズなアニメーションできそうに思います。
0382Umezawa
2010/04/22(木) 16:21:20ID:zeC/usqTsimutrans は8方向グラでもドット単位の移動なんですよね。
だからと言って FreeTrain に真似しろと言ってる訳ではないですが。
3D Viewer はホントにただのビューアーなので、今のところ内部では
何もしてません。本体と完全同期してこそ「Viewer」だと思うし、
それを変える気も無いです。でもPS版のA4は非同期だったんでしたっけ。
0383名前は開発中のものです。
2010/04/22(木) 16:24:29ID:cakzj61Y0384Umezawa
2010/04/22(木) 16:42:05ID:zeC/usqT3系が主流になれば印象も変わるだろうし。
0385名前は開発中のものです。
2010/04/22(木) 20:19:12ID:a675FHCq今どのボクセルにいるかという情報があるはずだから、それと1緒に何ドット目の移動という
のを保存しておけばいいのではないかな。
1ボクセルを何ドットに分割して移動させるかは決めないといけないけど、たとえば6段階に
したとしてどのボクセルにいて、何ドット目の移動ですよ。
一定の単位時間毎にドットを進めて、その位置に表示。
列車も細かく作り直す必要はない。
描画位置だけの問題だと思う。
日本語でおk>俺orz
0386riorio ◆rio2xMQlrQ
2010/04/22(木) 22:23:25ID:fEg4Xsfb処理が重くなるドット単位移動を受け持つ余裕はどこにもありません。
また、プレイヤー全員がメリットのほうを享受するのなら、それの裏返しの
デメリットがあってもいいかもしれませんが、外部ビュワーである3D Viewを
どれだけのプレイヤーが使うか使わないか分からないし起動してない間は
まったく無用になる処理を本体が受け持つのは業務分掌が違うと思います。
また、本体の改造にしても2系統→3系統どころではない大改造が必要に
なるでしょう。
技術レベル的にも私の手におえるものではないでしょう。
>>385日本語の必要ないからC#でおk
一方、3D View側が4tick()分描画を遅くして中割アニメーションを作成する
のであれば、本体側の負担にはなりません。
非同期と言ってもまったくの非同期なわけじゃなく、4tick()遅いだけです。
4tick()の遅さでぬるぬるになるであれば、そりゃみんな(3D Viewを使う人の
みんな)うれしいと思うけどなぁー
こちら本体いじりはSpecialStationListenerの互換性維持がいまだできず
昨日時点からソースはいじってなくてうんうんうなってます orz
0387名前は開発中のものです。
2010/04/22(木) 23:19:28ID:aS/vz3rFカーブも45度にカクっと曲がる感じじゃなく滑らかだし。
ただ、1マスに1車両という設計はA4から変わってなくて、
列車のスマートさは表現できずに結局どうしてもプラレール。
まあそれよりか、複線にしたときの線路の隙間の見た目がひどかったけどw
FTはドット単位移動ができたとしても、
それだけじゃあ苦労に見合うほどのインパクトは得られない気がする。
どうせ無理を言うのなら、高解像度化を希望するわw
現在の画像資産が死んでしまうため現実的ではないが
もうちょっとだけアップに耐えうるくらいに描画された列車を眺めてみたい。
WUXGAで遊んでるといろいろ小さすぎるってのもあるし。
0388riorio ◆rio2xMQlrQ
2010/04/23(金) 00:52:41ID:I0iPS/HY>WUXGAで遊んでるといろいろ小さすぎるってのもあるし
そうですなー
ウチも開発機で最大にするとUXGAにはできるんじゃが……
(でもCRTダゼw ダセ−ww)
単純に、元1pixelを2x2pixelに打つ、というのなら実現は早いかもしれないが。
そんながっくがっくのズームインを必要とする人いるかな??
さて、話かわるのだけど。
Station.csのStationメソッド、それからStationListenerまわり解説できる人いませんか。
Stationメソッドで
// advertise listeners in the neighborhood that a new station is available
foreach( Entity e in Cube.createInclusive( baseLocation-r, baseLocation+r ).getEntities() ) {
StationListener l = (StationListener)e.queryInterface(typeof(StationListener));
if( l!=null )
l.advertiseStation(this);
}
ってやってるわけなんだけど(これは駅を新設すると周囲の建物を探してあれば持ち人口を
駅に結びつけるということをしてるというのは理解できるんだけど)、baseLocationってのが
宣言も無くいきなりでてきててこれなんぞ?ってのからして分かってないし、Entityも分かってないし、
Cube.createInclusiveってのもブラックボックスだし、e.queryInterfaceもブラックボックスだし。
この2行の解説をお願いしたい。
■ このスレッドは過去ログ倉庫に格納されています