以下は、exlink.gifhttp://pc11.2ch.net/test/read.cgi/gamedev/1269954334/から引用

鉄道経営系ゲーム製作スレッド Ver.7

201 :exlink.gif名前は開発中のものです。  2010/04/11(日) 20:54:38 ID:A7koO+23  
exlink.gif>>198
どこまで遡って、食いついとんねん!w

202 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/11(日) 22:09:43 ID:++YAHBfo  
exlink.gif>>185
>りおりおさんのチョココロネマップのサイズは
>てっきり 400x600x16 だと思っていたのですが、
>実際は 400x568x16 で作成されたものなんですね。

え゛

自分も400x600x16のつもりだった……
568みたいなはんぱな数字にするとは思えないのだがなぁ。
なんだろう???

というか今のFreeTrain EX Avって、そうなる前のEXもなんだけど、
開始後のマップの広さや水面高をプレイヤーが確認する手段が
ないんですよね。
だから今のままだと書き出ししたxmlを読み込むための新規マップの
サイズをどうするかって困る人が多いと思う。
だから書き出しxmlの先頭付近にマップサイズを記録して、読み出し
時にはもう新規マップを確保することまで含めて動作するようにして
いいかもしれない。

あとは「表示」メニューのなかに「マップ基本情報」みたいな項目を
追加して、マップのXYZ広さ・水面高・陸地広さ・線路長などを表示
してくれるpluginがあるとうれしいかもねー

203 :exlink.gif名前は開発中のものです。  2010/04/11(日) 22:27:29 ID:Ps30bsOo  
600-16*2=568
高さx2の分じゃないかな。
なぜ差し引かれてるのかは知らないが。

204 :exlink.gif名前は開発中のものです。  2010/04/12(月) 00:17:31 ID:+OLIIHse  
A4だかにあったようなミニマップ表示とまでは言わなくても
表示位置の座標移動ができるといいかも
あとからサイズ変更できないからと大きめのマップにして作り出すと
開発前の部分の移動とかアバウトにしかできないし

どこを基点に0,0にしてx,yなのかよくわかってないけどw

205 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/12(月) 00:50:55 ID:AG10ysx3  
いわゆる「サテライト」ですよねー

欲しいけど自分の手には余るな……


あと関係ないんだかあるんだかな事で、開始時のマップサイズで
縦横数値打ち込むんだけど、できてきたものが横長につぶれたものに
なるのなんでなんだっけ。
いまだ全貌を理解してなくてスマン。


XYZ座標系は、左上すみ最下層が(0,0,0)で、
左下向けてX軸増加
右下向けてY軸増加
だったと思う。

右手系っていえばいいのかな。
親指X・人差し指Y・中指Z。

206 :exlink.gif名前は開発中のものです。  2010/04/12(月) 01:53:12 ID:muyeyKNm  
サテライトって考えようによっては、マップキャプチャの縮小版でしょ?
nanasiさんがマップキャプチャ作ってたよね。
あれで1ボクセルを1ピクセルで表示すればサテライト擬きできない?

207 :exlink.gif名前は開発中のものです。  2010/04/12(月) 02:05:16 ID:7cy/+6JA  
マップの大きさが可変だから難しいな。

208 :exlink.gif19  2010/04/12(月) 06:18:40 ID:RJb+RX/w  
exlink.gif>>202
より正確に言うと、
「新規作成」の空マップで 400x568x16 と入力すると、
400x600x16 のマップが生成されるということです。

たぶんexlink.gif>>203さんの言うとおり、高さとの整合性のために、
こんな仕様になっているのかなと思う。

まあとにかく、「568」なんていう数字をユーザーに
入力させないと使い物にならないというのは不便だし、
「マップ基本情報」の表示機能を追加したところで、
新規作成で入力した値ではなく、生成後の値がと表示
されてしまうので、何かしらの対策が必要ですね。

209 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/12(月) 07:35:10 ID:AG10ysx3  
チョココロネは、「空マップ作成」ではなく「地形ローダー」で作成したマップ
なので(動画参照)、地形ローダーpluginのソース見るとなにか分かる
かもしれません。


もし「マップ基本情報」表示pluginを作成するとしたら、生成後の値でいいと
思います。
地形ローダーのほうになにがしかの制約があって数値がずれることがあっても
それはしょうがないというか。

210 :exlink.gif19  2010/04/12(月) 09:21:10 ID:RJb+RX/w  
線路入出力は勾配にも対応しました。
が、残念ながら高架線路に橋脚が表示されません。
高架は SingleRailRoad じゃないのかな?
それとも何か付け加える必要がある??

ちなみに、チョココロネマップで試したら、
途中で「資金不足」と言われてしまいましたw
この機能では資金を消費しないようにしたいけど、
もうソース読むの疲れた。英語(ry

地形のほうの読み込みはどうにかしないとね……。

211 :exlink.gif19  2010/04/12(月) 20:45:53 ID:RJb+RX/w  
とりあえず、元のサイズより大きい空マップに
読み込んでもズレなくなりました。

212 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/12(月) 21:23:39 ID:AG10ysx3  
線路入出力はまだ左上の位置確定ができてないのかなー?
保存した時より右下にずれた位置に再現されるっぽい。

高架の橋脚は、んーと、チョココロネでは元から生えてないのでサンプルとして
不適当かも。
下に何もなければ自動で橋脚が生えて、もし鉄道アクセサリプラグイン・建物プラグイン
などがすでに地表に存在する上のボクセルに線路をしいたときは橋脚は生えないという
仕様だったと思うので。
そのおかげで、コンクリート橋脚とか盛土高架とか、鉄道アクセサリや建物でリアルな
高架をデザインできることになってまして。
チョココロネの高架はそういう、別プラグインを下に置いた高架になってるのです。

空マップから、レールだけひきまわしたら橋脚がはえたデータができると思うので。
それを書き出してみてどうか、というところですね。

その自動の橋脚はレールと一体の取り扱いになってたような。
橋脚をブルドーザでぶちこわすと上のレールも消えちゃうので。


あとどうでもいいところですが、読み込みのときだけでなく書き出しの時も、拡張子
.dxfとか.xmlが自動で補完されると便利かなと思いました。

213 :exlink.gif19  2010/04/12(月) 22:03:20 ID:RJb+RX/w  
あれっ、まだズレますか?
本来の位置からはズレても、地形と線路が同じだけ
ズレるようにしたつもりなので、少なくともチョココロネ
のような島のマップであれば問題ないかなと思ったんですが、
もしズレるようであれば、そのデータも頂けませんか?

高架の橋脚は空マップで試してダメだったので、
SingleRailRoad を生成するだけじゃ足りないようです。
必ず橋脚があるのであれば SingleRailRoad と一体
なのかもしれませんが、地表になにかあると生えない
ということは、個別に何か生成しているのかな?

でもブルドーザーで一緒に消えるということは、
何かしらの関連付けはされているんでしょうね。


ちなみに、保存のときは一応拡張子は自動で付与されます。
画面には表示されないですけどね。

214 :exlink.gif名前は開発中のものです。  2010/04/12(月) 22:27:56 ID:AG10ysx3  
Prototype3向けのセーブデータとpluginsつめあわせ
http://www.hiyohiyo.info/~riorio/freetrain/yamanote2099.zip

地形のない、「空マップ」で開始して線路だけひいたものです。
鉄道アクセサリプラグインの高架なんかはあります。
サイズはすみません、作った本人が忘れてます。

左上まで詰めて線路ひいてあるのですが、
線路書き出しして読み込みすると右下にズレます。
それで右も下もぎっちぎちに詰まってるので、はみ出ます。(汗)

215 :exlink.gif名前は開発中のものです。  2010/04/13(火) 01:48:50 ID:3dyhfU2K  
山手線に列車が走り始めました。
http://www.nicovideo.jp/watch/sm10374364

216 :exlink.gif19  2010/04/13(火) 06:57:53 ID:Cwx/ymMX  
exlink.gif>>214
頂きました。

exlink.gif>>215
一昔前なら無謀とも思えるリアルな山手再現が実現できた感じですね。

それにしてもFreeTrainは、Vistaにも対応したし、A21を超える
時間軸も手に入れたのにあまり盛り上がらないのは何故?

217 :exlink.gif19  2010/04/13(火) 11:07:52 ID:Cwx/ymMX  
地形読込、及び線路読込共に位置指定を出来るようにしました。

218 :exlink.gif名前は開発中のものです。  2010/04/13(火) 12:42:08 ID:TT2EhWKn  
exlink.gif>>216
まだ川口さんが開発してた頃に私も参加しておりましたが、
その頃のイメージとして、いろんな人のプラグインをまとめて導入出来ず「めんどくさい」というものがありました。
今は、間口を広めるために敷居は低くなってるでしょうか。
現状を知らずに書いておりますので、変化があったのならスマンコ
あと、この板内で勢いTOPなんだから盛り上がってる方じゃネーノ?

219 :exlink.gif名前は開発中のものです。  2010/04/13(火) 12:51:35 ID:TGGZCZqv  
このスレにいる歴が長けりゃこれでも十分盛り上がってる部類になるよな
何日もレスつかないこととかザラだったんだからw

220 :exlink.gif19  2010/04/13(火) 13:22:46 ID:Cwx/ymMX  
昔は.NETのインストールも敷居の高さのひとつだったような。
今は一般的だし、それにプラグインセットも配布されてます。

ニコニコの総統閣下動画じゃないけど、少なくともA7なんか
いまだにやってるような人は、よく分からない。

221 :exlink.gif218  2010/04/13(火) 13:53:52 ID:TT2EhWKn  
FTのインストールをすれば流行りの(現在の作者公認の)プラグインまで導入完了、、、
とかって感じなら激熱なんだけど、そこんとこどーなの?

222 :exlink.gif19  2010/04/13(火) 14:16:16 ID:Cwx/ymMX  
残念ながら本体とプラグインセットのインストールは別々だけど、
同じ場所で配布されているから面倒ではないと思う。

223 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/13(火) 22:07:46 ID:3dyhfU2K  
モガミさんから代理投稿

----

そろそろ、プラグインのまとめパックも更新するべきなんですかねぇ・・・
-- モガミ (2010-04-13 19:50:50)

----

どうなんでしょう。需要あるんでしょうか。

やるならEX時のPlugin Setとの差分にするんじゃなく、「これ1ついれればOK」な
単体完全版にしたほうがいいのかな。
需要あるならちまちま作業します。

本体に同梱はする予定ありません。
本体が頻繁にバージョンアップする際にpluginsがくっついてくるのはサイズの
肥大になるし無駄が多いです。

あとは、実行ファイルなものは本体バージョン依存になるので、除外。
発車メロディもサイズの問題で別梱包かな。

224 :exlink.gif名前は開発中のものです。  2010/04/13(火) 22:11:42 ID:5oPrQ85b  
サイズってか著作権侵害してるようなものの同梱はありえないしな。

225 :exlink.gif名前は開発中のものです。  2010/04/13(火) 22:37:25 ID:eRQAIvQe  
発メロはまだまだ。
いつになるか分からんがrev.2が完成するまで待ってね。

226 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/13(火) 23:03:41 ID:3dyhfU2K  
plugin作者本人から置くなって言われたら置きませんが。

拡張子wavのくせに中身フォーマットmp3問題があるので
既存の公開済発メロについてはかまわなければパッチ後の
ものを置こうかと思ってますが。

rev2はrev2で楽しみにしておくとして。

227 :exlink.gif名前は開発中のものです。  2010/04/13(火) 23:29:33 ID:VHQ5KJ5Y  
駅の乗車待ち人数って300人とかいても、上下両方向とも乗車率0だったして
待ってる人数の割りに実際の乗車率が低いと思う。




















228 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/13(火) 23:39:02 ID:3dyhfU2K  
exlink.gif>>227
ええとバグ報告なのかな??

バグ報告でしたら。
特定バージョンで起こるのか、すべてのバージョンで起こるのか、
そのたもろもろ詳細に教えていただきたいのですが。


っていうかFreeTrainて、駅で待ってる人がいたら根こそぎ拉致って
しまわなかったっけ……

229 :exlink.gif名前は開発中のものです。  2010/04/13(火) 23:46:24 ID:eRQAIvQe  
exlink.gif>>228
そういう感じではなかったような。なかなか乗ってくれない。
乗客が目的地を持っているわけでは無いとは思うが。

230 :exlink.gif名前は開発中のものです。  2010/04/14(水) 00:14:17 ID:r8Hkv0Jk  
exlink.gif>>228
3.0.1.3だけど、バグというわけじゃなく駅の乗車待ち人数の割りに
乗車率が低いと感じたもので
FTは駅では総入れ替えだけど、列車に乗っている方は全部降りるけど
乗る方は乗車待ちの人数がたとえ列車の店員より低くても、全員乗るわけじゃないですね

231 :exlink.gif名前は開発中のものです。  2010/04/14(水) 00:18:54 ID:nT7zqhap  
目的地持ってないのは間違いないです。
山奥ノンストップだろうがかまわず乗ります。

ただ、Prptotype3ではなんか乗り方が少ないかもしれないですね。
今、大崎駅前に急遽マンション建てまくって様子見てますが。

81人の乗車待ちに対して乗客3人。
まったく乗らないわけではないらしい。

乗客数えるときに待ち客数を発着本数でlogとってたよぉーな気もするので、
ソース見直してみます。

A4では根こそぎ拉致っちゃうんだよねー、たしか。
それはおかしいということで、川口さんほかスレ判断で拉致らないよう数式入れて演算してて、
それが時間経過か1日の発着本数か利用してたかなぁぁぁ……

でー、おそらく1日の乗車人数が平均化するように演算してるんだと思いますが、
どうしますかこれ。
当初の意図とすれば、1日の発着本数が100本なら1/100に平均化されるのが意図通りという
ことになりますが。
FreeTrain原型を壊してでもじゃんじゃん乗ってくれたほうがうれしいって意見が多かったら
そう変更するかも。

232 :exlink.gif名前は開発中のものです。  2010/04/14(水) 00:22:06 ID:3d+/yeeI  
exlink.gif>>231
変える前に仕様をよく確認してからにしましょ。

233 :exlink.gif名前は開発中のものです。  2010/04/14(水) 00:58:10 ID:dhX9BRNI  
まずはどういう仕様になっているのかを調べた方がいいのでは?
もしかすると何かしらのバグかもしれんし。

234 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/14(水) 01:12:31 ID:nT7zqhap  
ソース読んだけど正直よくわからんw

駅の乗降客関係は、
core\world\rail\Station.cs
の250行目あたりにあるんだけど。

/// <summary>
/// Factor that we apply to averageLoaded/UnloadedPassengers every hour.
/// </summary>
const float AVERAGE_PASSENGER_RATIO = 0.9996f;

/// <summary>
/// Factor that we need to apply to obtain average passengers per day.
/// obtained by 24*(1-RATIO)
///
/// Justification of the above equation is that if you always carry 1 passenger
/// for every hour, thie accumulated value should converge to C
/// where C = C*RATIO + 1. Such C = \frac{1}{1-RATIO}
/// </summary>
const float AVERAGE_PASSENGER_PER_DAY_FACTOR = 24.0f*(1.0f-AVERAGE_PASSENGER_RATIO);

この定数の定義、これがもうわからん。
なにが0.9996なのよ?ってところから。
次のAVERAGE_PASSENGER_PER_DAY_FACTORの式は意味は分からなくもないんだけど。

235 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/14(水) 01:15:46 ID:nT7zqhap  
その直後にある

public void unloadPassengers( Train tr ) {
// TODO: do something with unloaded passengers
int r = tr.unloadPassengers();
import.AddAmount(r);
trains.AddAmount(1);
Debug.WriteLine(string.Format("devQ on unload v={0} for {1} passengers.",import.LastWeek/24,r));
World.world.landValue.addQ( location, Math.Min((float)(import.LastWeek/24),r) );
accumulatedUnloadedPassengers += r;
GlobalTrafficMonitor.TheInstance.NotifyPassengerTransport(this,r);
}

っていうのが降車客なんだけども、
Math.Min((float)(import.LastWeek/24),r)
のimport.LastWeek/24がまたわからん。
24で割るってことは1日あたりを1時間平均にしてるっぽく見えるけど、import.LastWeekって
「前週の降車客数」だと思われるそれを(7*24)で割るのではなくただの24で割ってるのはなぜ?

landValue.addQの中身も分かってないからまとはずれなこと言ってるかもしれんが。

236 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/14(水) 02:02:53 ID:nT7zqhap  
LastWeekってのは、前週実績を日割り平均化した「1日あたり」の数値らしい。
377行目あたり。

ってことで/24でその1時間あたりということになるのだが。

ゴメン。これ降車客だから今問題の乗客ではなかったね。
まぁ駅の発展もなんかおかしいので、降車客の考え方も追求したいんだが。

281行目のコメントがあって282行目にあるとおり、駅がもつ乗りたい人=population
全員が乗るわけはないという仮定のもと、乗りたいのはそのうちの30%であるとして、
0.3fをかけてる。
あと既に乗って行った人は差し引くようになってる。
int avail = Math.Max(0, total - gonePassengers);

export.AddAmount(tr.passengerCapacity-pass);
ってのはなんかおかしい気がするな。
export.AddAmount(pass);
じゃないんだろうか。
もっともこれで計算してるのは「駅の乗車人数」であって、列車の乗客じゃないから
列車の乗客には影響ないはずだし。

んー。
チラ裏がすぎるみたいなんで。あとはblogにて。

237 :exlink.gif名前は開発中のものです。  2010/04/14(水) 02:17:17 ID:nT7zqhap  
裏でエンコしてた動画ができたので貼って寝る

大崎駅の一日
http://www.nicovideo.jp/watch/sm10384793

238 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/14(水) 02:33:40 ID:nT7zqhap  
布団はいったらハッと気がついたので書きにきた

川口さんがスレに顔出して作ってた頃のログか、
本家フォーラムかwikiかで、
乗客計算方法についての議論があったりした??

もしぎろんべーすがあるなら読んでおかないとと思って。

じゃあまた布団に戻る ノシ

239 :exlink.gif名前は開発中のものです。  2010/04/14(水) 03:01:07 ID:02/BwQwn  
電車が来るペースが変わったから乗降が分割されたのかも

とプログラミングだめな俺がつぶやく

240 :exlink.gif名前は開発中のものです。  2010/04/14(水) 04:11:49 ID:nT7zqhap  
川口さんとこのwiki壊れてない?
画像がリンク切れとかいうレベルのものではなくまったく見れないんだけど。
復活できるのかな……
どなたかデータ持ってます?

241 :exlink.gif名前は開発中のものです。  2010/04/14(水) 06:20:31 ID:3d+/yeeI  
exlink.gif>>237
これダイヤ作成のイメージとしてはどんな感じ?

1.列車(1本または数本のグループ)ごとに1日分の全ダイヤを作成(車両運用固定)
2.全ての列車が同じダイヤを共有していて、採時駅(大崎駅)の発車時刻と、ポイント・信号の制御だけで列車を誘導(車両運用は変動)

という2パターンが考えられるけど。
今までの時間軸だと前者、この時間軸であれば後者が有効だと思う。

それ以外にも
・15秒単位の発車時刻設定を効果的に使う事が出来ているか(本当に必要なのか)
・1秒単位では列車間隔が広い、時間の進み方が遅いため退屈にならないか
この辺を改めて問いたい。

242 :exlink.gif19  2010/04/14(水) 06:58:59 ID:NdLVfidU  
exlink.gif>>237
凄過ぎる。
設定にどのくらい時間が掛かったか知りたい。

243 :exlink.gif名前は開発中のものです。  2010/04/14(水) 07:23:21 ID:dhX9BRNI  
exlink.gif>>241
おい、また以前のこと繰り返すのか?
荒れるだけだぞ?
それと最新版動いたのなら自分で確認できるだろうし、自分でプレイして確認しろって
前と同じ事言われるだけだぜ?

244 :exlink.gif名前は開発中のものです。  2010/04/14(水) 09:16:18 ID:o6X4Ga15  
exlink.gif>>243
既に出来てるダイヤの使用感を聞くぐらいいいだろう。
リリースするたびに、こんなダイヤを組んで自分で試せっていうのか?

嫌ならやら安定版が出るまでやらなきゃいいだけだが、
テストプレイってのもプロジェクトの貢献方法の一つってこと忘れるな。
貢献する気がないなら、無視してROMってればいい。

245 :exlink.gif名前は開発中のものです。  2010/04/14(水) 20:42:44 ID:02/BwQwn  
exlink.gif>>244
何で退屈とか書くんだよ
お前さんの勝手な思い込みだろうが

246 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/14(水) 21:08:44 ID:nT7zqhap  
感想っていっても、プロジェクトリーダーがうかつなこと書けなくね?w
一プレイヤーと書いたことの重みが違うような気がする。

まだ建物も建ててないし。列車を入れただけなので。
特段のことは。

驚いたのは「すぐ破産する」ってことかな。
客も乗ってないのにガンガン11両編成運転してるからそらそうなんだが。
1日に100本超だかんねー。運行経費めっちゃかかってるわ。
10日に1回ぐらい破産する。
そのせいで放置できない。放置して発展待とうとしても「破産しました OK」
でボタン押されるの待ってしまってる。
メッセージボックス出さずに勝手に資金足して勝手に続けるモードこっそり
入れるかなぁ。

247 :exlink.gif名前は開発中のものです。  2010/04/14(水) 21:58:11 ID:dhX9BRNI  
経営モードは今成立してないから、とりあえずメッセージボックス出しているとこを潰して
メッセージ出さないようにだけしておけばいいのでは?

exlink.gif>>244
感想はいいが、exlink.gif>>241の1行目以外は蛇足だ。
あれではまた文句言ってるのかと思われてもしょうがない。
あとexlink.gif>>244の文章おかしいだろが。

>嫌ならやら安定版が出るまでやらなきゃいいだけだが、
>テストプレイってのもプロジェクトの貢献方法の一つってこと忘れるな。
>貢献する気がないなら、無視してROMってればいい。
おまえ自身がテストプレイしてないだろ。
していればexlink.gif>>241
>それ以外にも
>・15秒単位の発車時刻設定を効果的に使う事が出来ているか(本当に必要なのか)
>・1秒単位では列車間隔が広い、時間の進み方が遅いため退屈にならないか
>この辺を改めて問いたい。
こんなこと聞かなくてもわかるはず。
それで他の人にテストプレイするのも貢献だ、貢献しないならROMれとか言ってること
矛盾していることに気がついてないのか?

248 :exlink.gif名前は開発中のものです。  2010/04/14(水) 22:12:56 ID:nT7zqhap  
wikiのほうに質問があったので転載。
今後の課題ですね。


今現在の構造では、Trainクラスに「購入に要した金額」の情報がないと思う。
なので払い戻しができるわけもない。
まずかTrainクラスに「購入額」変数を追加し、
車両購入時にそこに購入額を代入し、
しかるのちに売却したとき50%なり30%なり適当な額が払戻されるよう実装
するということになるかと思われる。

ちなみに「売却」そのものは
core\controllers\rail\TrainPlacementController.cs
のなかのsellってところ。
コメントで「お金が戻ってくるようにしないとなー」てなことが英語で書かれてるw

---- ----

「車両の配置」メニューで車両を売却したら、購入費用の何%かは払い戻しが
あるのでしょうか…? -- OPB (2010-04-14 21:56:08)

ごめんなさい。現状、売却益は実装されていません。お金はまったく戻ってきません。
単に列車が消えてなくなるというだけです。
将来的には払い戻しがあるよう実装したいですが、かなり先のことになるかと思います。
-- りおりお (2010-04-14 22:05:07)

249 :exlink.gif名前は開発中のものです。  2010/04/14(水) 22:55:54 ID:dhX9BRNI  
経営要素はかなり弄らないと駄目かもねー
しかも経営ゲームとして成立させるためにはバランス取りが結構難しいかと。

250 :exlink.gif名前は開発中のものです。  2010/04/14(水) 23:42:23 ID:3d+/yeeI  
exlink.gif>>243
俺は何もやってないあなたに質問してるわけではないのだが。

251 :exlink.gif名前は開発中のものです。  2010/04/14(水) 23:49:09 ID:3d+/yeeI  
exlink.gif>>246
>感想っていっても、プロジェクトリーダーがうかつなこと書けなくね?w
>一プレイヤーと書いたことの重みが違うような気がする。


そういう事であれば仕方が無いです。
exlink.gif>>137のマップ、ただ3分毎に列車を走らせてるだけで車庫を利用したダイヤが完成してないが
それが完成したら一応動画うpしてみます。

252 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/15(木) 00:48:32 ID:zqiuVh7O  
FreeTrain EX A-versionのアルファ版リリースです。

バージョンはα3.0.1.4です。

◎既知の不具合
・時間進行軸の値がセーブデータに保存されない

○3.0.1.3からの変更点
・破産時のメッセージボックス有無・追加資金額をオプションで選択可とした
・時間進行軸の値をオプションとしてはセーブするようにした


変更点にからむあたりは動作テストはしてますが、見落としがあるかもしれないので
なにかおかしな点があったらお問い合わせください。


今後の予定ですが、フォーラムに
車両配置メニューの情報充実
という要望があがってますので、これをβ2とPrototype3に取り入れたいと思います。

同じくフォーラムに要望のあった
列車プロパティ
については実現可能性が低いと思います。
そのあたりの事情についてはフォーラムのチケット参照。
ご意見があったらこちらでもwikiでもフォーラムでもお願いします。
「いやいや、簡単にできるよ」みたいなの歓迎w

253 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/15(木) 01:29:41 ID:zqiuVh7O  
あーー!大事なこと忘れてた。

今回から、セーブデータの拡張子が.ftgd3になってます。
末尾に3がつきます。

中身が変わってるわけじゃないので、3.0.1.3までのPrototype3でセーブした
データは末尾に3を付け足すだけで読めます。

お手数かけますが、2以前系統と3系統とセーブデータ両方作ってたら
拡張子変えないとどっちがどっちかわからんなってきたので。

254 :exlink.gif名前は開発中のものです。  2010/04/15(木) 03:31:47 ID:zqiuVh7O  
駅が周辺の自動発展に与える影響を調べてたんだけど。

core\world\development\DevelopmentAlgorithm.cs
の187行目あたり。update()内がおかしい気がする。

strength *= F_StrDiffuse;
strength = target.ScoreExported;

このScoreExportedっていうのは駅から出発していった人数の前週平均値なので。
これだと出発人数の多い、既に栄えてる駅でさらに発展させようとなって。
出発人数が0のまったく栄えてない駅では、降車客がいーーっぱいいてもまったく
発展しないことになりはしないか。

ここは
strength = target.ScoreImported;
として降車客で判断すべきではないのか。
ということで次のリリースではImportedに変えます。

さらに。上の行で*= F_StrDiffuseで値をかけてるのが、次の行で=で代入では
まったくなにもしていないことになりはしないか。ここ行が逆じゃない?
ってことで
strength = target.ScoreImported;
strength *= F_StrDiffuse;
にしてみます。

255 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/15(木) 04:17:00 ID:zqiuVh7O  
なんかヤメドキがつかめなくて、直してビルドしてリリースしちゃった!
だだだーーっとやったので、zip作成ミスなどなんか細かなケアレスミスがありそうで
こわい!!


β2とPrototype3と両方出して、直したところはexlink.gif>>254
これで五反田と品川が栄えるはず!


あとPrototype3のほうは集客範囲を10から25に広げました。
列車の進行速度が相対的に速くなったことで駅間を広くとるであろうことを
想定しました。

256 :exlink.gif名前は開発中のものです。  2010/04/15(木) 07:44:05 ID:zqiuVh7O  
しばらく放置してから眺めたら、いきなり田舎に野球場がぼーーんってできてたので
なんじゃーーって調べたら。
39番さんから依頼されて作った野球場の価格が1だったために建っちゃったものだった。
価格5000に修正したものを第2うpロダにあげましたのでさしかえお願いします。
ほかにも価格がおかしいpluginあるかも。


あと、hermsさんの旧家シリーズに含まれる道祖神とか水車小屋が、初期にぽこぽこ
できまくって水車小屋が川ぞいじゃなしにあるのは見た目おかしいので、computercannotbuild
付け加えました。

人口のimplもうちょっと種類増やしてもいいかもなぁー

257 :exlink.gif名前は開発中のものです。  2010/04/15(木) 10:49:53 ID:zqiuVh7O  
以前、サッカースタジアムplugin追加したいなーってかたがおられた気がしますが。

せっかくなので、ノーマルな建物pluginではなく、サッカースタジアムの機能がついた
従来のサッカースタジアムのグラフィック違いにしてみませんか。
テストしてみたら、plugin.xmlをこう書いたらグラフィック違いを <> で選べました。

<?xml version="1.0" encoding="Shift_JIS" ?>
<plug-in>
<title>サッカースタジアムtest</title>
<author>riorio</author>
<homepage>http://www.kohsuke.org/freetrain/</homepage>

<contribution type="anonymous" id="{riorio-test-43c8-941F-896EAF9396AF}">
<class name="freetrain.world.soccerstadium.StructureContributionImpl"
codebase="../org.kohsuke.freetrain.soccerStadium/bin/FreeTrain.SoccerStadium.dll" />
<name>サッカースタジアム</name>
<price>2000000</price><!--680*4-->
<size>10,6</size>
<height>2</height>
<sprite origin="0,0" offset="78">
<picture src="stadium.bmp">
<override when="night" src="stadium_n.bmp"/>
</picture>
</sprite>
<population>
<!-- スタジアムの集客性は特別なので特別な人口特性を実装 -->
<class name="freetrain.world.soccerstadium.PopulationImpl"
codebase="../org.kohsuke.freetrain.soccerStadium/bin/FreeTrain.SoccerStadium.dll"/>
</population>
</contribution>
</plug-in>

258 :exlink.gif名前は開発中のものです。  2010/04/15(木) 15:06:14 ID:30rT6269  
どうせなら今ある野球場も現状ただの建物だけど、サッカースタジアム方式に。

ついでに鉄道ゲームなんだから、試合開催日は人気に応じて乗降客が増えたり。
まあこれは帰りはともかく行きは難しそうだし、実際の鉄道も甲子園とか所沢は
臨時電車が出る(所沢は普段はローカル線な事もあるが)けど、水道橋みたいに
停車時間余分に取るだけだったり、だいたいは何にもしてないから微妙と言えば
そうなのだが。

259 :exlink.gif名前は開発中のものです。  2010/04/15(木) 15:21:47 ID:fc9c23Uv  
野球場はまだ使用してる日多い方だと思うよ

260 :exlink.gif名前は開発中のものです。  2010/04/15(木) 16:04:18 ID:zqiuVh7O  
exlink.gif>>258
あーw
考えてたこと先回りされちゃったww

まぁ、そのためには今あるサッカースタジアムがなにやってるのか正確に把握して
それから真似ないとね。

今のサッカースタジアムも駅への影響を時間で激しくだすようにしてるようなコードに
見えるんだけど。
駅、真横にスタジアム、それだけにしてみて(Beta2で)そのコードに書かれてる時間に
駅発車させてみても乗車人数に変化が見られない。
なんか川口さんが意図したように動いてない感じがしてる。

261 :exlink.gif名前は開発中のものです。  2010/04/15(木) 17:10:44 ID:zqiuVh7O  
気になったんだけど。

core\world\accountingの下にある
accountingしてるコードって働いてる???

ここで計算した損益が表に出てきてるところがないような気がするんだけど。

262 :exlink.gif名前は開発中のものです。  2010/04/15(木) 17:23:47 ID:zqiuVh7O  
自己解決

表示 〜 売上レポート

で売上レポートだすと、初期状態では鉄道・子会社・バスしか表示がないけど、
ここで表で右クリックすると「表示項目の編集」っていう拡張メニューが登場する
ので、選ぶと中に「サッカーチーム」っていうのが出てくるのね!

で、表示するほうに移すと、サッカーチームの運営経費がレポートされると!!
なるなる〜〜

263 :exlink.gif名前は開発中のものです。  2010/04/15(木) 20:32:42 ID:gemiL8s5  
exlink.gif>>257
自分です。
ありがとうございます。

サッカーは基本土日の昼か夜なんでどれかにどどっとくるといいかも(個人的には夜のライト表示あるから土曜の夜あたり)
というよりサッカー場のグラフィックを春〜秋の土日だけ夜も点灯にしたりしたいのですが
画像オーバーライドって曜日も指定できますか?

お客さんの分散は後回しでいいんで画像オーバーライドの質問に答えていただけると嬉しいです。

当の自分はまだグラフィックに一苦労・・・というより割く時間が・・・

264 :exlink.gif名前は開発中のものです。  2010/04/15(木) 20:58:58 ID:zqiuVh7O  
曜日オーバーライドはできないですねぇ。

四季×昼夜の8通りだけです。
なので、冬夜は真っ暗、その他3季節は曜日問わずあかあか、ということまでが
可能な範囲かと思います。

私もスタジアムの中身いじっててJリーグの熱心なファンの知人に確認したのですが。
シーズン開始は3月なんですってね。
終了が12月と。
3月は春だからいいとして、12月が冬なんでどうしますかねぇ。
季節気にせず、年中夜明るくてもいいんじゃないかと。

265 :exlink.gif名前は開発中のものです。  2010/04/15(木) 21:04:48 ID:gemiL8s5  
そうですね
改めて考えると一種のイルミネーションとしてそのままでもよさそうですね。
わざわざありがとうございます。

266 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 00:48:21 ID:VCFNi/Wy  
動かないものひろげるの非常に心苦しいのだけど、煮詰まってどこか簡単な罠にはまってる
だけだと思うんだけど解決できなくて困ってるので広げてみる。

http://u4.getuploader.com/freetrain/download/55/BETAsrc.soccerStadium.zip
パスはBETA

pluginsの下にあるサッカースタジアムpluginの実行部分ソース。
試合するところのブラッシュアップは完成してます。
今詰まってるのは、試合のある日・ある時間帯から3時間だけ、観客動員の1/2が
駅を利用しようとするという部分です。

PopulationImpl.csが駅の利用客にカウントされる部分のはずで、ここの
PopulationImplクラスの_populsに試合のある3時間だけ観客数を代入して
OneShotTimerしかけて3時間後に1に戻そうとしています。

代入とタイマーはGame.csのonGameDate()メソッドの中に書いてあります。

ビルドしようとすると、Game.csの前のほうの
public readonly PopulationImpl ppl;
で、「pplには常にnullが割り当てられました」となってしまい、それは警告だけなので
ビルドは通るのですが、もちろんそれでは実行したとき
onGameDate()メソッド内で代入しようとすると当然null pointerに代入しようと
することになってエラーになります。
なんでnullが常に割り当てられちゃうのだろう???と分からなくて困ってます。

pplがからむ行をコメントアウトしてビルドしたら、試合はできると思います。
おたすけください。

267 :exlink.gif名前は開発中のものです。  2010/04/16(金) 01:10:08 ID:/xSXiaOg  
readonlyはconstructor内でしか初期化できないです

268 :exlink.gif名前は開発中のものです。  2010/04/16(金) 01:11:43 ID:/xSXiaOg  
正しくはインスタンス生成時までにしか変更できない、です

269 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 01:19:17 ID:VCFNi/Wy  
あっと。

readonlyにする必然性はなくて、もともとつけてなかったんだけどつけてなくてうまくいかな
かったかたつけたのがそのままになってたね。

readonlyにせず
public PopulationImpl ppl;
にしてもまったく同じ警告が出て使えません。


あれ? ppt = new PopulationImpl();っているんだっけ??
コンストラクタで思い出したけど。

このGame.csもなんだけど、
StadiumStructure.cs
なんかでも全然new()せずに使い回ってて動いてるけど
こりゃなんぞ??

ゴメン。本当に分かってなしにイジってるから。申し訳ない。

270 :exlink.gif名前は開発中のものです。  2010/04/16(金) 01:29:47 ID:9hVh1gPJ  
PopulationImpl は参照型だから初期化しなければ null になる
StadiumStructure stadium も参照型だが Game のコンストラクタ内で
代入による初期化が行われているため null 参照にならない

っていうか C# の基本的な内容じゃないか

271 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 01:40:29 ID:VCFNi/Wy  
ええと待ってよ。

そのGameはコンストラクタ内で……ゆえnull参照にならないというあたりが分かってない。
FreeTrainいじるようになって、既にあるものをちょこちょこっといじってみるってことから
始めて、自分でゼロからイチからコード書いたことないもので、なんかねー、クラスと
インスタンスとコンストラクタあたりがあやふやっていうか。
既にそのへんに書かれてるそれっぽいものこぴぺしたらできるんじゃん的なーー
てへ

いや、それでよ、重要なのはそんなことじゃなくて。
PopulationImplって、実装を形作ってるだけで実行されなくね?
今のままだと。
ここ、私がこうしたわけじゃなくて最初っからこうなってたの。ほぼこのまま。
ちゃんと実行されれば、駅のstation listnerに捕捉されてpopulationが駅の待ち客に
加わるはずなんだけど、私がいじる前、川口さんが書いたであろうコードのそのとき
から、動かして様子見てると駅の待ち客に反映されてなかったの。
これじゃあ意味が無いから、ちゃんと実行されて駅のstation listnerに捕捉される
ようにするにはどうしたらいいんだろう??

272 :exlink.gif名前は開発中のものです。  2010/04/16(金) 02:42:33 ID:9hVh1gPJ  
PopulationImpl は書かれただけで使われてなかったクラスなんだから
動作に反映されてなくて当然だろう・・・

たぶん作者の意図としては StadiumStructure の StructureContributionImpl 経由で
Population として PopulationImpl を扱うつもりだったんじゃないかな
ざっと見ただけだし全体の構成も全然知らないからそれでいいのかどうかわかんないけど

273 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 03:18:51 ID:VCFNi/Wy  
いや、ありがとうございます。
「書かれただけで使われてなかった」
ということが事実として確定できたのが収穫です。

Station listenerに登録するのと、removeしたときに解除するのとを書く必要が
あるということですね。
なんとかやってみましょう。

うーーん、でもそうなるとPopulationImplにせっかく書いたreturnはどう使えば
いいのかなぁ。いまいちImplの使い方が分かってません。
そこ、すべてが分かってないとか言うな。自覚してるんだからw

しかし川口さんほかもここまで凝りまくったサッカースタジアムpluginを作って
おきながら、あとほんのちょっとの駅に結びつけるところだけやり残してた、
そのままで今まで来てたというのが若干不思議ではあります。
あと、誰も駅利用客が増えないことを疑問持たなかったんかとも。

274 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 03:21:32 ID:VCFNi/Wy  
話ちょっち変わるんですが。
従来FreeTrainでは、駅で実際に列車に乗った乗客数の影響が、その後の駅に
1時間あたり0.8倍されて斬減しながら残っていくというアルゴリズムになっています。

乗りたい客が500人いて、今到着した列車に400人乗り込んだら、その次の列車に
乗る人は100人しかいませんよと。
それが1時間後になったら(乗り込んだ影響が0.8倍の320人に減って)列車に実際に
乗りたい人は180人まで回復しますよ、となってます。2時間後だと244人まで回復。

ただこれ、今までの時間軸だといいんですけど、ALPHA3系統では回復がゆっくり
すぎると思います。
1時間で0.5倍・半減まで効果の減る速度を速めたいと思います。

ほんとは15分ごとに0.8倍とかゆるやかに影響した方がいいんでしょうけど、
「1時間後に」(0.8倍)ってなってるリピートタイマーの仕掛けられるのが駅建設時
なんで、もし間隔をいじろうとするとまた駅全部建て直しになっちゃうんです。
それでもゆるやかで自然な増減したほうがいい、という意見があればそうします。
駅建て直しめんどくさーーいって意見が多ければ1時間単位維持でパラメータいじります。

275 :exlink.gif名前は開発中のものです。  2010/04/16(金) 03:45:32 ID:/xSXiaOg  
ソースに流されてみた限りではContribution生成時、pupulationもメンバとして生成されているみたい
なのでgame生成時にそいつを渡すなり参照するなりすればいいと思う

276 :exlink.gif名前は開発中のものです。  2010/04/16(金) 08:59:58 ID:dXJM5xRH  
exlink.gif>>274
0.8がけしてるってのはStation.csのgonePassengersのこと?
だとすると、400人乗ったのが一時間後に320人になるのはその通りですが、
その減った80人が待ち人数に差し戻されるような風にはなってないかと。
ざっとみた感じですが。
待ち人数はpopulationですが、どうやら毎回周囲の建物から集計しなおしてるようなので、
そもそも積み残しの乗客を次の時間に引き継ぐような処理がなさそう。

gonePassengersの使われ方を見ると、積み込んで減ったはずの乗客が
別の列車の乗客に加算されないようにしているっぽいですね。
それがないと、ある時間帯において、周囲の建物の人口から
待ち乗客数が400人と計算されると、その時間帯に何本列車が発車しても
最大400人までは積み込めてしまうことになってしまうから。

一時間ごとに0.8がけしてるのは・・・明確な理由は不明だけど、
推測するなら、建物人口からの乗客数は、一時間前と後では、
80%は同じ人とみなす…ということかな。
上で、積み残しを引き継がないと書いたけど、
80%が積み残しで20%が新規増加分というイメージかな。
で、積み残し分である80%に対しては
一時間前にgonePassengersで既に運んだ人数を減らす
・・・そんなコードのように思えます。

277 :exlink.gif名前は開発中のものです。  2010/04/16(金) 09:09:43 ID:dXJM5xRH  
exlink.gif>>276を書いてて思った問題点。
その1
毎回populationを集計しなおしているので、列車数と周囲の建物が増えるとすごく処理が重くなりそう。
一時間毎に一回集計すれば十分。

その2
集計したpopulationが一時間前に比べて大幅に減った場合、
gonePassengersを0.8がけした値が上回ってしまう場合があり、
直前の一時間に大量輸送していると、次の一時間は
乗せるべき乗客が居ないことに。
仮に新規増加分は20%と考えるならせめて、次のようにすべき
total = Math.max(0,population*0.8f-gonePassengers)+population*0.2f
※上の式、populationは毎回集計しない前提で

278 :exlink.gif266-277  2010/04/16(金) 10:15:44 ID:p64ILdlA  
あー、そうそう。
もう一点、問題というか、気になったところ。
駅のプロパティに表示される駅の待ち乗客数は
gonePassengersで差し引く前のpopulationを表示してるので、
どれだけ列車が客を持って行っても減らないんじゃないかな?

279 :exlink.gif名前は開発中のものです。  2010/04/16(金) 18:20:38 ID:VCFNi/Wy  
wikiから転載

----

exlink.gif>>277
>毎回populationを集計しなおしているので、列車数と周囲の建物が増えるとすごく処理が重くなりそう。

今の私の状況がまさにそうww
β2だけど、最高速でプレイしてもゲーム時間で1日経過するのにリアルで17分かかる。
マップ上に20編成あった列車を全て撤去してみたけど、やっぱり17分かかる。
もう死にそうww -- OPB (2010-04-16 13:44:42)

----

>集計したpopulationが一時間前に比べて大幅に減った場合、
>gonePassengersを0.8がけした値が上回ってしまう場合があり、
>直前の一時間に大量輸送していると、次の一時間は
>乗せるべき乗客が居ないことに。

20時台に発車する列車がいきなり乗車率0%になってて、 おかしいなぁと思っていたん
だけど、そういうことだったんですね。 -- OPB (2010-04-16 13:45:39)

----

exlink.gif>>278
>駅のプロパティに表示される駅の待ち乗客数は
>どれだけ列車が客を持って行っても減らないんじゃないかな?

減ってないですね。 昨晩、β2で3日分、駅のプロパティの待ち乗客数を集計してみたけど、
数値が変動するのは毎時00分の時だけ。 ゲーム内の土日などはCPUは建物を建てないので、
1人の誤差も無く金曜日の同時刻の人数が表示されます。 -- OPB (2010-04-16 13:50:52)

280 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 18:51:31 ID:VCFNi/Wy  
exlink.gif>>276
> その減った80人が待ち人数に差し戻されるような風にはなってないかと

差し戻されるって考えると語弊があるんだけど。
待ち人数populationからgonePassengersを引いた人数で次の列車に乗ろうとする
人を計算してるので、gonePassengersが80減ったら次の列車に乗ろうとする人数
は80増えると理解したんだけどなぁ。

> 次の時間に引き継ぐような処理がなさそう

それはないです。私は必要だとは思いません。
「乗りたい電車が来なかったから別の手段に変えて乗らないことにした」ぐらいに
脳内補完しときゃいいんじゃないかと。

>それがないと、

ご明察

>80%が積み残しで20%が新規増加分というイメージかな。

おーー。なるほど。これは読むまであまり真面目に考えてなかったので、まさになるほど
というかんじです。
β2までの時間軸ではこの0.8というのは結構いいバランスな数値だと思います。

ただα3の時間軸では大きすぎると思います。
なのでα3では0.5にするかどうするか〜〜というあたりも考えてみてください。

281 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/16(金) 19:01:34 ID:VCFNi/Wy  
exlink.gif>>277
>一時間毎に一回集計すれば十分。

1時間1回にできるかどうか研究してみます。

>集計したpopulationが一時間前に比べて大幅に減った場合、
>直前の一時間に大量輸送していると、次の一時間は
>乗せるべき乗客が居ないことに。

あーー。
ここは、「そういうこともあるさ」ぐらいに考えてて、おかしいと感じてなかったので
目からウロコというか。
どっちの算出方法がいいのか他の方の意見も聞いてみたいかな。

>仮に新規増加分は20%と考えるならせめて、次のようにすべき
>total = Math.max(0,population*0.8f-gonePassengers)+population*0.2f

なるほど、そうですね。

exlink.gif>>278
>駅のプロパティに表示される駅の待ち乗客数は
>gonePassengersで差し引く前のpopulationを表示してるので、
>どれだけ列車が客を持って行っても減らないんじゃないかな?

減りません。というかこれはそういう仕様だと考えています。
ですが、この仕様が良い仕様かどうかは議論すべきかと思います。
また川口さんは「乗りたい客のうち、来た列車に乗り込むのは30%だけ、
残りは乗らない。行きたい方向と違う列車だったからとかの理由脳内補完で」
という考えでプロパティ表示人数の30%しか乗りません。30%後の変数名としては
availですね。
駅プロパティに表示する数値として、30%する前の現状でいいのか、いや30%した後
を表示してくれた方が親切だよってなるか、これも議論がありそうに思います。

282 :exlink.gif名前は開発中のものです。  2010/04/16(金) 20:22:58 ID:Zo1toCfv  
乗車待ち人数は実際に乗る人数を表示してほしいな
乗車街を参考にして列車を走らせても、乗車率が0だったりするし
というか、乗らないならば乗車待ちじゃない訳で


>「乗りたい客のうち、来た列車に乗り込むのは30%だけ、
>残りは乗らない。行きたい方向と違う列車だったからとかの理由脳内補完で」
>という考え
乗らないのは逆方向ってのはわかるんですが、末端駅だと逆方向がないから
脳内補完ができませんよw
とはいえ、中間駅なのか末端駅なのかを判断するのは難しそうですが

そういえば、駅の影響範囲(乗車にくる範囲)を表示する事ってきないんですかね
数値で示されてもどれぐらいかいまいちわかりませんので

283 :exlink.gif名前は開発中のものです。  2010/04/16(金) 22:49:12 ID:rw7NiLeD  
そんなの無用にゲームっぽくなるだけで嫌だなあ。
見えない方が風流

284 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 02:19:10 ID:UXA6Esz4  
サッカースタジアムのソース、動くようにしてみたのですが
http://u4.getuploader.com/freetrain/download/56/soccerStadium2021src.zip
パス src

まだ駅への影響ができてません。
なんかstation listnerに二重登録されてしまってるみたいで、
デバッグモードで動かして駅プロパティ開くと、観客数/2を返すと同時に1も返してて、
駅で実際に使われてるのは1のほうっていう感じになってるみたい。

わっかんねーー 助けて


あと、このサッカースタジアムを組み込んだ本体β2.0.2.1を出しました。
【2.0.2.0 -> 2.0.2.1 変更箇所】
・駅が周辺の発展に与える影響に「前週の乗車客数」を少し加味
・「サッカースタジアム」に登場するチームを更新。サッカースタジアム運営に経営要素を追加
・「列車の配置」ダイアログに両数・速度・定員の表示を追加

せっかくカウントしてて使わないのもアレなので、乗車客数も0.1倍だけ使ってみることに
しました。
サッカースタッジアムは、建ててほっとくと赤字の源になります。
頑張ってチーム強化と人気アップを図るとドル箱に化けます。
そういうふうにしてみました。

なお、サッカースタジアムも含めて全体のソースはコミット済です。
全体が欲しい方もどうぞ。

285 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 08:33:49 ID:UXA6Esz4  
たいふ〜んさん作115系で、国鉄身延線色やJR東日本弥彦線色で中間車が色化けする
問題に対処したパッチです。
たいふ〜んさんのpluginデータをインストールした状態でこのパッチを上書きしてください。

http://www.hiyohiyo.info/~riorio/freetrain/plugin-patch.html

286 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 10:13:55 ID:UXA6Esz4  
サッカー場がなんとかなってからにしよーかと思ったのですが、
α3で遊んでる人も多いのかなーと思ってα3にも移植しました。
3.0.1.6出てます。

○3.0.1.5からの変更点
・駅が周辺の発展に与える影響に「前週の乗車客数」を少し加味
・駅が周辺の発展に与える範囲を半径10ボクセルから半径25ボクセルに拡大
・サッカースタジアムに登場するチームを更新。サッカースタジアム運営に経営要素を追加
・「列車の配置」ダイアログに両数・速度・定員の表示を追加

3.0.1.5までにサッカー場を建ててた人は、エラー原因になるので一度撤去して
建て直してください。

なお、今後サッカー場のプログラミングに駅への影響など課題が解決された
新バージョンが出ると、再びサッカー場を建て直す必要が出る場合があります。

287 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 10:18:35 ID:UXA6Esz4  
あ……
すみません、バグみつけました。結構深刻っぽいです。

β2.0.2.1とα3.0.1.6で、それ以前にあったサッカー場を撤去するか、撤去しなくても
そのままゲーム続けた場合、次のサッカー試合予定日にエラーになってゲームが
止まるみたいです。
どうにもできないのかなぁ、これ。

どうしたら解消できるんだろう、えっえーー?

OneShotTimerで架空試合してるのが問題だと思うので、OneShotTimerを取り消せば
いいと思われるのだが、取り消しのハンドラがどこにあるーーー
分からんぞヲイ

分かった方教えてください。

288 :exlink.gif名前は開発中のものです。  2010/04/17(土) 13:39:41 ID:teq+kmYJ  
clock.unregister

289 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 13:55:41 ID:UXA6Esz4  
exlink.gif>>288
ありがと
でもなんかダメみたい

スタジアム1つ建てると、試合予定4回分、一ヶ月ごとのチームパラメータ調整、
年一回の成績リセットなど6つぐらいWorld.world.clock.registerOneShotを仕掛ける
んだけども。

撤去のときは当然これを取り消さないとまずい。

で、
World.world.clock.unregister( new ClockHandler(onNewYear) );
とかってやってって、試合は4試合分予約が入ってるから
World.world.clock.unregister( new ClockHandler(onGameDate) );
を4回やったんだけど、消えないみたいで撤去後も勝手に試合があってそのあと
エラーが起きて止まった……
とほーー

ていうか、あのさぁ、これって昔っからサッカースタジアム撤去したらエラーになって
なかったのぉ?なってないとおかしいと思うんだけど。

うーーん。「撤去できないアイテムです」って言い張って実装してもいいんだけど ^^;;

290 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 14:02:05 ID:UXA6Esz4  
とりあえず最新のサッカースタジアムソースコードはこれ
http://u4.getuploader.com/freetrain/download/57/soccerStadium2022src.zip
パス src

291 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 14:58:29 ID:UXA6Esz4  
すいません、ちまちまバージョンアップしてます。
サッカースタジアム問題は未解決です。
ご助力お待ちしてます。


【2.0.2.1 -> 2.0.2.2 変更箇所】
・サッカースタジアム調整
・反転折返・反転回送で1両編成も反転できるようになった
(ソースコミット済)


α3.0.1.7です。
○3.0.1.6からの変更点
・サッカースタジアム微調整
・反転折返・反転回送を1両編成に対応


wikiに、OPBさんから早速、サッカー試合開催日のツッコミが入ってた。
そこ今直してたんだよぉぉぉぉw

292 :exlink.gif名前は開発中のものです。  2010/04/17(土) 15:06:25 ID:aBfTFvtP  
サッカー場は昔のバージョン(いくつだか忘れたが、セーブデータ互換性うんぬんの頃のやつ)
だとサッカー場撤去でもブルドーザーで潰しても死なないね。

293 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 15:15:16 ID:UXA6Esz4  
exlink.gif>>292
私が持ってるのは20050903版EXだけなんですが。
それだと撤去できます。
エラーにはなりません。

おそらくタイマーは解除できず、裏で週2回の試合がずっと続いてると思われるのですが。
当時はそれで問題なかった模様です。

今回私がいじくって経費がかかるようにしたので、試合もやめるようにしないといけない
んですが……
うーーーーーん。

294 :exlink.gif名前は開発中のものです。  2010/04/17(土) 18:21:54 ID:teq+kmYJ  
何時のだか不明だが前のやつでもtimer解除はされてないね

null比較は何のためにやっているんだろうか
とりあえずremoveregister内のonGameDateのunregisterを一回に、
removeの際全てのfutureGameに対しremoveregisterを呼ぶ、
ついでにgameフィールド消去して呼ばれない事を簡易確認
しばらく手直し中…ver2にも3にも対応するためにtotal〜を消したい

295 :exlink.gif名前は開発中のものです。  2010/04/17(土) 18:48:03 ID:+zbX1cNw  
exlink.gif>>289
> World.world.clock.unregister( new ClockHandler(onGameDate) );
別のハンドラで取り消し要求しても意味ねぇよタコ

296 :exlink.gif名前は開発中のものです。  2010/04/17(土) 18:50:36 ID:qoAOMqia  
exlink.gif>>295
ところがどっこいC#の仕様だとそれがOKっぽいんだな。
以前、実際テストコード書いて確かめた。

297 :exlink.gif名前は開発中のものです。  2010/04/17(土) 18:59:07 ID:teq+kmYJ  
Delegate.Equalsより
比較する 2 つのメソッドがどちらもインスタンス メソッドであり、同じオブジェクトの同じメソッドである場合、その 2 つのメソッドは等しいと見なされ、比較対象も等しいと見なされます。

298 :exlink.gif名前は開発中のものです。  2010/04/17(土) 19:06:02 ID:qoAOMqia  
あ、ごめん、exlink.gif>>296で書いたのは
delegateを+=とか-=演算子で追加/削除する場合についての仕様だった。
unregisterは中でEqualsで比較してるから、どうなるか判らないです。
希望的観測では、Equalsも適切に実装されてるかもしれないけど。

299 :exlink.gif名前は開発中のものです。  2010/04/17(土) 19:08:47 ID:qoAOMqia  
入れ違いになりましたね。
exlink.gif>>297はいまいちわかりにくいけど、
OKだと言ってるっぽいですね。

300 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 19:26:05 ID:UXA6Esz4  
ごほごほ、いつもすまないねぇ……

今、マップに駅名を表示してるフォントをオプションで自由に選べるように
してたんだけど。
オプションの変数にFontクラスで選んだフォントを格納して保存しようとするじゃない?
今オプションの保存もC#のシリアライズ使ってるんで、そうすると
「Fontクラスが混ざってるせいでシリアライズできねーよバカ!」
って怒られて差し戻されて、FreeTrain EX Avは終了するときにもオプション再度
書いて残そうとするのでまた怒られて差し戻されて、タスクマネージャから殺さないと
終了できなくなってしまったwww

今のシリアライズを使ったままのオプション保存方法を使いつつ、フォントを記録する
手段はないのだろうか……
それかシリアライズ捨てて、テキスト形式のiniファイルにでも記録するメソッドを自力
でごりごり書く??


疑問にお答え:
exlink.gif>>294
>null比較は何のためにやっているんだろうか
あー、それはtimer解除されてなくて飛んできたときに、stadiumがもう無くなってたら
解除忘れとみなして返すつもりで入れたんだけど、stadiumがnullにならないから無意味
でした。orz

>ver2にも3にも対応するためにtotal〜を消したい
うーー、ごめんよ。
自分がメンテナンス出来る間は、手で毎回書き換えて移植するつもりでtotal分〜秒
元のままそのまま生かしてる。

exlink.gif>>297
そのあたりも理解して書いたわけじゃなく、ほかの箇所のtimerをunregisterしてる
ところが全部newで読んで動いてるので真似ただけ。

301 :exlink.gif名前は開発中のものです。  2010/04/17(土) 19:48:26 ID:qoAOMqia  
exlink.gif>>300
フォントをシリアライズするってことは、何MBもあるフォントをわざわざバイナリコピーして保存するってことですよ?
さらに、デシリアライズした時にはシステムフォントにインストールするつもりなんでしょうか?

普通どんなソフトでも覚えるのはフォント名だけ。
仮にそのフォントが見つからなければデフォルトのを使うってのが常道かと。

302 :exlink.gif名前は開発中のものです。  2010/04/17(土) 20:03:23 ID:+zbX1cNw  
>296-299
もうちょっとコード見てみた。
Game::removeregisterを呼んでるのはStaduimStructure.cs145行目で、
 game.removeregister();
なんだけど、このgameが指してるのが最後にスケジュールされたGameなんだな。(StadiumStructure::scheduleNewGame)
なので、結局
World.world.clock.unregister( new ClockHandler(onGameDate) );
は次のGameのハンドラではないので、削除はされないことになる。
なので、gameに対して呼ぶのでなく、futureGamesの各要素に対してremoveregisterする必要がある。
。。。と推測される。
# いや、手元にC#環境(つーかWindows環境)無いから断定できないけど。

303 :exlink.gif名前は開発中のものです。  2010/04/17(土) 20:04:51 ID:+zbX1cNw  
ちょっと修正
>は次のGameのハンドラではないので、削除はされないことになる。
は次のGameのハンドラではないので、削除はされないまま次Gameが発生することになる。

304 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 20:17:01 ID:UXA6Esz4  
exlink.gif>>301
いやー
C#(.NET)ってなんでもお手軽にできてるから、
Fontクラスをシリアライズに食わせたら向こうでうまくフォント名だけ切り出して
保存してくれるかと思ったんだが、そこまでお気軽ではなかったのね。

ということは、Fontクラスからfont.name.toStringかなんかその手のメソッドで
名前取り出して、それを文字列変数に代入して、文字列変数をシリアライズに
食わせて保存し。

呼び出しはまた文字列変数からFontの実体を呼び出して

って感じになるんですかねー?

変数でFontクラスいじるのも初めてなんですべてが手探りwww


exlink.gif>>294
あっ、そうだ。
ver2むけに作ってくれたら、3向け移植はやりますよ。

305 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 20:40:52 ID:UXA6Esz4  
ぐぐってたらこんなんがかかってきたんだけど……

http://bbs.wankuma.com/index.cgi?mode=al2&namber=11142&KLOG=25

>思い出そうと、今やってみたんですが、普通にできました。
>あれれ?

>>あれ、ちょっとまって、本当だ普通に出来るw
>>エラーでないw

XMLシリアライズはできないけれども
Soap formatterでのシリアライズはできる
ということのよーーです

理解してないけどw

が、今のFreeTrain EX Avのオプション保存はXMLシリアライズを使っているので
結局それとは別にSoap formatterでフォント専門の設定ファイルを読み書きする
必要はありそーーです。

306 :exlink.gif名前は開発中のものです。  2010/04/17(土) 22:22:52 ID:teq+kmYJ  
全然進まないのでとりあえずup
ttp://u4.getuploader.com/freetrain/download/58/soccerStadium.zip

パスはsrc
変更箇所は294の点だけ
ver2向けの内容です

307 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/17(土) 22:47:13 ID:UXA6Esz4  
exlink.gif>>306
もらいました。

294時点ということは、もうこれでエラーは出なくなってると考えていいんでしょうか?
かまわなければこのまんまビルドしてテストのうえ、自分で大丈夫そうならリリースに
回してしまいますが。

どこかひっかかってる点がありましたら、私の方でもチェック入れますけれど。


>>Umezawaさん
地形ローダーなのですが
最新版でセーブ・ロードして開始XY座標に16,16って入れたら、ぼっこぼこの
おかしな地形ができてしまいました。
http://u4.getuploader.com/freetrain/download/59/chikeiokashii.PNG

行き過ぎて折返ノイズが出たみたいなですね。

烈火さんから「3でコロネ島やりたい(はぁと」って言われたんでコンバートしてお渡し
しようと思ってたけどなんかうまくいかない(苦笑)

ノートPCかどこかにあると思われる、画像地形ローダーに読ませた元画像を探した
ほうが早いかもな状況デス

308 :exlink.gif名前は開発中のものです。  2010/04/17(土) 23:41:13 ID:UXA6Esz4  
ちなみに今日サッカースタジアムの息抜きにやってた成果がこんなかんじ
http://u4.getuploader.com/freetrain/download/60/fontchangesample.PNG

なーんかね、保存がうまくできないんですよ。
一回だけは設定できるんですけど……
WinFormまだよくわかってねー

309 :exlink.gif名前は開発中のものです。  2010/04/18(日) 00:03:13 ID:R1+Ex9Fn  
exlink.gif>>307
こちらの環境では290のものでもエラーが確認できませんでした
アサートは確認しましたが
なのでできればエラーが出ないかどうかを確認していただければと思います

また独自のpopulationを内部実装しているのでpluginのpopulation記述は無い方がいいのでないかと思います
建物毎の動的なpopulationの実装をcoreのみで出来ればよかったのですが難しいようでした

310 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/18(日) 01:05:16 ID:V7U+wPts  
GlobalOptions.csのなかのGlobalOptionsクラスのload()って、
いつ呼ばれることが確定するんだろう。

Core.csのなかのCoreクラスのなかで、
public static readonly GlobalOptions options = new GlobalOptions().load()
ってことでoptionsにnewされてるところは分かるんだけど。

なんていうんだろ。
main(){}ループの中に書かれてないのに実行(?)されるというのがよくわかんない。

C#のクラスとインスタンスの基本的なところだろうと思うんだけど。
やっぱし分かんない。

今、フォント情報を持つFontOptionsクラスを作ってあって、GlobalOptionsにある
フォント指定文字列・intカラーコードからFontクラス・Colorクラスを作らないと
いけないんだけど。
どこにどう変換をかませばうまくいくのかが分からない。
分からないというか、分からないなりにまねっこで記述してみたら、半分ぐらいは
思ったとおりに動くんだけど残り半分がうまくいかないみたいなかんじでどーも。
「どっからでも値に代入できるグローバル変数にしたい!」という衝動にかられて
ますw

んー、こんな不完全なものでもソース公開したら誰か直してくれるかね。
β版といってもあんまし途中なもの流すのもどーかと思わなくも……


exlink.gif>>309
290時点では、一度建てて壊してから半年ぐらいブン回すとエラーになってました。
306では同じ操作してもまったくエラーにならないので大丈夫そうです。
アサート出てました?おいといていいのかな……

311 :exlink.gif19改めUmezawa  2010/04/18(日) 06:46:37 ID:/R9j2sfu  
exlink.gif>>307
地殻変動でも起こったようなマップですねw

これって空マップ作成から行なったものですよね?
どんなサイズで(どんな値を入力して)生成したか教えて下さい。

312 :exlink.gif名前は開発中のものです。  2010/04/18(日) 07:11:47 ID:uKKCvYHx  
他のスレで質問するときC#部分はある程度わかるとかいってたのはこのレベルだったのか
全然わかってないじゃないか

313 :exlink.gifUmezawa  2010/04/18(日) 07:38:13 ID:/R9j2sfu  
exlink.gif>>312
誰宛?

314 :exlink.gif名前は開発中のものです。  2010/04/18(日) 08:32:10 ID:Eud58HLD  
exlink.gif>>310
クラスのスタティックフィールドは、クラスがはじめて参照された時に初期化される
(上記の場合 new GlobalOptions().load() が呼ばれる)はず。

ってか、ブレークポイント設定するなり、デバッグプリント仕込むなりすればわかるじゃん?

315 :exlink.gif名前は開発中のものです。  2010/04/18(日) 13:34:28 ID:wLtz4puF  
いじるにしてもあっちもこっちもって一度に手広く行き過ぎない方がいいよ
わけわかんなくなりやすくなるから
経験者談

316 :exlink.gifUmezawa  2010/04/18(日) 17:21:29 ID:/R9j2sfu  
とりあえずホームだけですが、駅の入出力もできるようにしました。

317 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/18(日) 17:51:01 ID:V7U+wPts  
β2.0.2..3出しました。

【2.0.2.2 -> 2.0.2.3 変更箇所】
・列車名の表示を可能にした
・サッカースタジアムのエラー修正(exlink.gif>>306採用)

【既知の問題点】
・サッカースタジアムが近隣駅の乗車客に影響できていない
・列車名を表示すると周囲に文字の消え残りゴミが出る

ま、β版なので、問題点あってもリリースしていいかなと。

サッカースタジアムのpopulationとstation listner問題は引き続きご助力お願いします。
列車名表示のゴミは、列車の周囲数ボクセルを再描画しないとどうしようもありません。
しかし周囲数ボクセルを再描画するというメソッドが今存在しないような気がします。
どうしよう…… まぁ表示の有無を選択可能にしてあるから、嫌なら表示消してねって
いうのでもいいのかなぁ。


exlink.gif>>312
ごめんなさい

exlink.gif>>314
だんだん分かってきました
ありがとうございます

318 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/18(日) 17:53:08 ID:V7U+wPts  
exlink.gif>>311
空マップ作成は400x600x16で
位置ずらしが+の16,16だったかと思います

319 :exlink.gif名前は開発中のものです。  2010/04/18(日) 17:56:26 ID:V7U+wPts  
若干調整いれたので、サッカースタジアムを直してくださる方は次の最新ソースを
使って直してくださるようお願いします。

http://u4.getuploader.com/freetrain/download/61/soccerStadium2023src.zip
パス football

320 :exlink.gifUmezawa  2010/04/18(日) 18:13:42 ID:/R9j2sfu  
exlink.gif>>318
了解しました。

もしチョココロネと完全同一のマップ取得が目的でしたら、
空マップの作成時に 400x568x16 と入力して、
位置ずらしを0,0にすればOKです。

321 :exlink.gifUmezawa  2010/04/18(日) 18:19:33 ID:/R9j2sfu  
exlink.gif>>307exlink.gif>>318
空マップ400x600x16で(16,16)ずらしてみたんですが、
再現できませんでした。

322 :exlink.gif名前は開発中のものです。  2010/04/18(日) 19:13:57 ID:V7U+wPts  
exlink.gif>>321
あ、あれ(汗
すみません、どうやったらこうなったのか忘れました。

ひょっとして、元サイズと同じサイズの空マップに対して位置ずらししちゃったのかな……


P.S.
川口さんのwikiが復活してたので、内容をちまちまとAvのwikiに移植する作業を始めました。
どなたかお暇な方、手伝ってくださるとありがたいです。

323 :exlink.gif名前は開発中のものです。  2010/04/19(月) 01:21:40 ID:9jizZnUw  
パラメータをいじったりしたところが、なぜそうしたのか後任の人が分からなくなったら
いけないと思ったので、wikiに書き残してきました。

http://www19.atwiki.jp/freetrain-exav/pages/114.html

もっとこれも書いとけとかあったらヨロ。
っていうかまとめてくれていい。

324 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 08:06:54 ID:9jizZnUw  
Prototype(ALPHA)3の最新ソースを、ブランチを分けてSourceForgeにコミット
しました。

trunk内がBeta2
ALPHA3内がPrototype3
となります。

なぜかルートとALPHA3内とにRelease1.0がありますが、気にしないでください。

このALPHA3内のソースでちゃんとビルドできるか、どなたか確認お願いします。
ひょっとしたら置き換えなどがうまくいってないかもしれないので。

325 :exlink.gifUmezawa  2010/04/19(月) 12:21:49 ID:CoAmGge4  
質問です。
「列車の追跡」機能で追跡中の列車情報を、外部Pluginから参照する
方法は無いでしょうか?

freetrain.views.map.TrainTrackingWindow クラスで宣言されている
private の train を参照できればベストなのですが。

前面展望のようなものを作ろうとしています。
もちろん、PS版A4にも劣るようなものですがw

326 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 16:25:57 ID:9jizZnUw  
現状ないと思われ。

でも、もしそういうのができるとなったら、
freetrain.views.map.TrainTrackingWindow クラスを改造して
trainを外部参照できるようにしますけど。

あれ作ったのついこないだですし。

327 :exlink.gifUmezawa  2010/04/19(月) 16:47:16 ID:CoAmGge4  
exlink.gif>>326
ホントですか!
ではお言葉に甘えて、public readonly かなにかにするか、
getメソッドでも追加していただけるとウレシイです。

328 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 17:18:58 ID:9jizZnUw  
ふと思ったんだけど、それから取得するんじゃなくて、
TrainTrackingWindowがやってるのとまったく同じようにしてダイアログ
持ってツールチップ持ってきて、自分でTrain検索したらどうでしょう?
そっちのほうが簡単そうなんですけど。

329 :exlink.gifUmezawa  2010/04/19(月) 17:27:54 ID:CoAmGge4  
exlink.gif>>328
それも思ったんですが、クォータービューの追跡画面と、
前面展望画面が連動しているとカッコイイし(ニコニコでよくある)、
根本的な問題として、私が C# の GUI を知らないというのがあります。

まあ、TrainTrackingWindow を丸コピーすればいいんでしょうが、
ソースの丸コピーというのもなんだかなと。


もちろん、TrainTrackingWindow の修正は、今度何かの変更を
加えるときのついでで構いませんので、できればよろしくお願いします。
メンバ変数 Train train の private 宣言を public readonly に
変えるだけで結構です。

330 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 17:48:33 ID:9jizZnUw  
そちらで本体C#のビルドできますよねぇ?

じゃあかまわないんで、最新ソースからTrainTrackingWindow好きなように改造して
利用してもらっちゃって、そのソース私にください。
そしたらそれ次回ビルドにコミットしますので。

私がpuclicにする改造するのを待ってUmezawaさんが始めてって行ったり来たりすると
開発のスピード感がなくなるので、ガンガンやっちゃってください。

331 :exlink.gifUmezawa  2010/04/19(月) 18:09:44 ID:CoAmGge4  
exlink.gif>>330
ゴメン、本体はビルドできないです。

本当にスピードに関しては気にしないで下さい。
お遊びの期待するとガッカリする前面展望ですし。

332 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 18:35:35 ID:9jizZnUw  
>ゴメン、本体はビルドできないです。

あっ、あれっ(ガクっw

SourceForge.jpにβ2.0.2.4としてあげました。

> public Train trainView { get { return train; } }

これでいいのかなぁ。

>期待するとガッカリする前面展望ですし。

いやでも期待しちゃうなぁ〜〜
できれば将来のメンテナンス考えるとC#で組んでもらいたいところなんですがねぇ……
ぜいたくは言いません。

333 :exlink.gifUmezawa  2010/04/19(月) 21:01:36 ID:CoAmGge4  
exlink.gif>>332
MapViewWindow クラスの trainTrackingWindow が internal だった。
ゴメン、吊って(ry


ちなみに、今回のDLLは全てC#で記述しました。
と言っても表示部は別の「exe」で、プロセス間通信をしています。

なので改造は出来ないと思いますが、メンテナンス性は問題ないと
思いますよ。


というわけで、対象列車を選べませんが、一応動くものを公開します。

http://www.free.netgamers.jp/freetrain/

配置済みの列車の中から、最初に見つかったものが対象です。
反映されているものは、「地形」「線路」「ホーム」のみです。
よって、非常に寂しい画面です。生活感が無い感じ。

334 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 22:45:39 ID:9jizZnUw  
> MapViewWindow クラスの trainTrackingWindow が internal だった。

ぶほ……
そういえば、複数のマップビューを開きまくったときに、それぞれのマップビューに
1つずつ追跡ダイアログを出して全部のマップビューで異なる列車を追跡すること
もできるようにと考えて、internalにしたんだったかも。

これってinternalに保たないとまずいですよねぇ。

もいっこ、controllerの中にtrainInformationWindowってのがあって、これやってる
ことはTrackingWindowとまったく一緒でそのかわりマップビューへの紐付けが無い
ものなんですが。
こっち利用できないでしょうか。

それか、やっぱり同じコードを内部に持つかですかね。

今、ALPHA3でうごかしてみたら、「マップ生成中」が「134/197」からカウントアップ
止まってしまったのですが。これこのまま待ってていいのかなぁ。

335 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/19(月) 23:19:37 ID:9jizZnUw  
Beta2で動かしてみた。

いい!
非常にいい!!

やっぱり、なんというか不思議なワクワク感がありますね、これは。

並走・すれ違いの他の列車を表示できるようになったらずいぶん変わるんじゃないかなぁ。
列車のモデリングどうすんじゃーーって問題がありますが。

336 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 00:27:27 ID:/ag6H5my  
むぅー
山手線マップは何度やってもロード完了しないなぁーー

今はカウントアップが224/197で止まってます。
1/1超えちゃってカウントアップに分母意味あんのこれwww

線路配置が複雑すぎるのかな。
地形は「なし=空マップ開始」なんですけどねぇ。

337 :exlink.gif名前は開発中のものです。  2010/04/20(火) 04:53:26 ID:GaCLh8++  
でいつまでこの独り言は続くの?
いい加減自分のブログでチラ裏はやって欲しいわ。
しかもレベル低い話ばっかりだし、他の回答しているやつの方がレベル高いから
その人達が開発した方がいいんじゃないのか?
もっとC#の勉強してから質問して欲しいわ。

338 :exlink.gif名前は開発中のものです。  2010/04/20(火) 06:01:43 ID:IH4/h5eA  
鉄道経営系ゲームのスレであって、FTの専用スレじゃないのに自分がFTのプロマネだからかしらんけど、横暴になってきてるな。

339 :exlink.gifUmezawa  2010/04/20(火) 06:04:06 ID:rrPJfq+/  
exlink.gif>>335
exlink.gif>>336
わざわざ動画まで作っていただきありがとうございます。
あれを見て思ったんですが、昼夜の表現が無いのはヘンですねぇ。

他の列車を表示すれば、確かに少しは変わるでしょうね。
ただの四角い箱であれば表示できるのですが、
何色で表示すべき? という問題があります。
列車の画像から一番使用ドット数が多い色を抜き出せば
いいのかな? 単純な処理だけど面倒そう。


山手線マップはロードできるようにしますね。

340 :exlink.gif名前は開発中のものです。  2010/04/20(火) 06:07:40 ID:72gm2NAQ  
exlink.gif>>338
他に何について話すんだよ

341 :exlink.gifUmezawa  2010/04/20(火) 06:14:28 ID:rrPJfq+/  
exlink.gif>>337
C#のプログラミング能力が一定以上あって、
かつFreeTrainに対する意欲がある←これ重要

今のところ上記に該当するのは、りおりおさんただ一人かと


exlink.gif>>338
このスレでFreeTrain以外に話題になったのって、
「A列車で逝こう」くらいじゃない?
「TeraTrain」は盛り上がりかけたけど……。
「最強都市計画」は論外www

342 :exlink.gifUmezawa  2010/04/20(火) 07:28:33 ID:rrPJfq+/  
exlink.gif>>336
とりあえず、山手線マップがロードできるよう修正した
ものをアップしました。

ただ、以前頂いたマップなので、最新の山手線が配置された
マップを読み込める保障はありませんが。

343 :exlink.gifUmezawa  2010/04/20(火) 08:11:02 ID:rrPJfq+/  
exlink.gif>>334
TrainInformationWindow ザッと見てみました。
確かに TrainTrackingWindow とそっくりですね。
似たようなものが2つある理由を把握するまで
少々時間が掛かりそうです。

っていうか、自分でUI作れって話ですね。


それに、前面展望画面に他の列車も表示するとなれば、
どのみち全ての列車情報を取得する必要がありますから、
あまり追跡中列車にこだわることはないのかも。

でも頑張って他列車を表示してもただの箱というオチw
列車のモデリングをどこかから拝借してくる?

344 :exlink.gif名前は開発中のものです。  2010/04/20(火) 08:28:48 ID:uyvV9z+C  
目的地の概念は実装して欲しい。難しくないから

345 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 08:31:52 ID:/ag6H5my  
exlink.gif>>343
>似たようなものが2つある理由を把握するまで
>少々時間が掛かりそうです。

ゴメン
それ私の仕業なので、私が自白する以外に把握するすべはないですw

流れを言うと自動追跡はYzさんが作りかけてたんだけど、列車選択窓の実装に苦労されてて
(パネルで実装してみたら、パネルがマップごとスクロールしてあっちいっちゃったり)
それを自分もどうにもできなくて。
本体いじってたら(旧名)TrainTrackingWindow==(現名)TrainInformationWindowがある
ことに気づき。
ただ(旧名)TrainTrackingWindowで列車を選ぶと、すべてのマップビューが一度にその
列車を追ってしまって都合が悪かったので、このままではダメだと。
ただし後方互換性のためにこれはTrainInformationWindowと名前を変えて残し。
マップビュー1つと紐付けられたパチモンを真似してコード書いたのが今のTrainTrackingWindow
なのデス

追跡は1つしかしないけど乗客の乗り方は複数監視したいってときに、Tracking1つと
Information3つ開くみたいなやりかたができて便利かなぁと思ってるのは自分ひとりか?(爆

>列車のモデリングをどこかから拝借してくる?

モデリングツールを提供してもらえれば、私がしこしこ作りますよ。
理想を言えば、存在する列車プラグインの車両1両1両につき1つの3Dモデルですね。
コントリビューションIDで一対一。

346 :exlink.gif名前は開発中のものです。  2010/04/20(火) 08:37:54 ID:tReuWWAO  
○○は簡単だ、といってる本人が簡単なはずのそれをC#のコードで書いて
出してきたことが今まで一度もないんじゃないかこのスレ

347 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 08:55:08 ID:/ag6H5my  
exlink.gif>>342
読めました

報告のみにて失礼

348 :exlink.gif名前は開発中のものです。  2010/04/20(火) 09:01:41 ID:abcxsV7i  
ぶっちゃけそう簡単じゃない。
目的地をどうやって決めるのか。
ランダムに選んでも線路が繋がってない可能性がある。
線路が繋がっていても、ある列車はその駅には寄らないかもしれない。
だが、乗車時点でそれを調べるためには、
現状では実際ダイヤに沿ってをシミュレート運行してみるしかない。

まあ、目的地にたどり着かないと永遠に客車の虜囚となって
放浪しつづけてもいいって仕様なら、多少簡単だろうが。

349 :exlink.gifUmezawa  2010/04/20(火) 09:10:56 ID:rrPJfq+/  
exlink.gif>>345
TrainTrackingWindow の件、了解しました。
そもそも、追跡画面って複数出せたんでしたね。
結局、その中からどれの前面展望を見るかという
選択肢が出てきてしまうので、UIは必要なんですね。


>モデリングツールを提供してもらえれば、私がしこしこ作りますよ。
>理想を言えば、存在する列車プラグインの車両1両1両につき1つの3Dモデルですね。
りおりおさんに行動力があるのは知ってますけど、
流石に全てのモデルを作るというのはチョットwww

私がモデリングツールを提供する(作成する)のは
ムリですけど、メタセコイアか何かで作成したデータを
バッチで一発変換するようなものなら頑張れば作成できます。
いや、一発変換はキツイか……。

どちらにしても、そういったものを作るとすれば、
1ヵ月後とかになってしまいます。


あとは、列車がボクセル単位で移動するので、前面展望も
カクカク動画になってしまう問題が解決困難ですね。
PS版A4は確か、時間の流れと連動しないようにしてたんでしたっけ?

350 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 11:07:54 ID:/ag6H5my  
exlink.gif>>349
私が以前いじってたのは「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とかでできるなら非常にやりやすくてイイのですが。
メタセコイアが出力できる形式の中にそういうのってあるのでしょうか。

351 :exlink.gifUmezawa  2010/04/20(火) 11:49:19 ID:rrPJfq+/  
exlink.gif>>350
A21Cのテクスチャ張替えをご存知であれば説明は簡単です。

ポリゴンデータを表示するためには、下記の3つの情報が必要です。

1. 3Dモデル
2. テクスチャ画像
3. テクスチャ画像を3Dモデルに対して貼り付ける位置

A21Cでは上記2番のみユーザーがいじれたんですよね。

今回私が作成したものも、当然上記3つが全て必要ですし、それぞれを
いじれるようにするのも簡単なのですが、普通は?「3Dモデルを作成する」
と言った場合、上記3つをセットにしたものを言うと思います(多分)。

がしかし、今回私が作成したものは上記3つがバラバラになっています。
普通の3Dモデリングソフトでしたら上記3つはセットで作成されますので、
バラバラで情報をよこせ! と言われると一般の方は戸惑うと思います。

ですので、その一体になった3Dデータから、3種類の情報をバラバラにする
バッチを作成するのが大変だなぁ〜、ということでした。

A21C等と同等の苦労をいとわないという事でしたら、まあ私としては非常に
助かりますが、今時そんなことをするのは時代遅れ?ですね。

ちなみに、今回の前面展望プラグインですが、ランダムで建物が作成されると
思います。そのテクスチャ画像BMPはbin/resourceフォルダに入っていますので
見てみてください。これをA21Cと同じ要領で変更すれば反映されるはずです。

352 :exlink.gifUmezawa  2010/04/20(火) 13:06:45 ID:rrPJfq+/  
ランダム建造物があまりに少なく分かりづらかったので
増やしたものをアップしました。ついでに昼夜の表現も。

http://www.free.netgamers.jp/freetrain/

353 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 13:18:14 ID:/ag6H5my  
exlink.gif>>351
>ですので、その一体になった3Dデータから、3種類の情報をバラバラにする
>バッチを作成するのが大変だなぁ〜、ということでした。

なるほどー
でも一度完全なバッチツールさえできてしまえば、あとはプレイヤーおまかせで
どんどん車両は増えていきそうですね。

>A21C等と同等の苦労をいとわないという事でしたら、まあ私としては非常に
>助かりますが、今時そんなことをするのは時代遅れ?ですね。

いや、時代遅れでもないと思いますよ。

たとえば東京の通勤路線でしたら、E231-500の箱モデルとテクスチャ画像例を
一つ用意してあげてれば。
3Dモデルをいじらずともテクスチャ画像をいじるだけで
帯を黄緑→山手線 帯を黄色→総武線 帯を赤→京葉線
とバリエーションを増やせるわけなので。
3Dモデルで作りなさい、って言われるより一般の人には受付よくないかな……

もちろん、完全新作で3Dモデルも作れれば、複雑な先頭形状をしてる特急車両
も作れてうれしいですね。

354 :exlink.gifUmezawa  2010/04/20(火) 14:09:29 ID:rrPJfq+/  
りおりおさん、教えて下さい。

先ほど、昼夜の表現を行なおうと World.world.clock.totalMinutes を
取得するようにしたのですが、これって3系からは削除されてしまったのですか?

355 :exlink.gif名前は開発中のものです。  2010/04/20(火) 14:22:21 ID:PPfLxkt8  
exlink.gif>>348
せめて次の停車駅がわかれば、乗車する際の判断材料に加えられるんだがな。
次の駅を自動で取得させることが難しいなら、手動で指定しても構わないと思うが。

356 :exlink.gifUmezawa  2010/04/20(火) 14:28:54 ID:rrPJfq+/  
exlink.gif>>354
自己解決。
totalMinutes から totalSeconds に代わったんですね。
でもそうなると2系と3系でプラグインを別々にしないといけないのかな。
何か良い解決策は無いでしょうか?

357 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 16:54:19 ID:/ag6H5my  
exlink.gif>>356
すいませーん。
そこが3系統の変更点キモなもんで……

で、
DayNight World.world.clock.dayOrNightを呼んで返ってきた値が
DayNight.DayTimeか
DayNight.Nightか
で判定するといいかと思います。

中身についてはcore\wprld\time.csを見てください。

358 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/20(火) 19:33:19 ID:/ag6H5my  
exlink.gif>>356
ごめんなさい、最新版動かさずに答えてた。
すごい!夕焼けしてからゆっくり闇が広がってくのね。
うほーー

これをやろうとしたら、Timeクラスがhourやminutesを返すようになってるので、
時間単位で良ければhour、分まで使いたければhour*60+minutesとかで計算
して現在分を得たら2でも3でも動くものにできると思います。

中身はTIme.cs見てください。

359 :exlink.gif名前は開発中のものです。  2010/04/20(火) 20:37:34 ID:/ag6H5my  
exlink.gif>>309
おこたえしてなかったですね

>また独自のpopulationを内部実装しているのでpluginのpopulation記述は無い方がいいのでないかと思います
>建物毎の動的なpopulationの実装をcoreのみで出来ればよかったのですが難しいようでした

駅への集客がうまく実装できたら、その次はplugin.xmlのpopulation - base値を
「スタジアムの観客定員」とみなしてうまくpopulationの変動の計算に組み込みたいと
思ってます。

360 :exlink.gif名前は開発中のものです。  2010/04/21(水) 07:10:28 ID:2oYDrH2B  
3D用の簡易的な展開図を得るなら、今のpluginから自動的に正面、側面を抜き出す事は出来ないのかな。
車体形状の判定が難しいですが、簡易的なものと割り切って、テキトーに四角い箱に貼り付けるだけでもいいかもしれない。
それでも白い箱が走るだけと比べればマシかと。
http://ranobe.sakura.ne.jp/src/up53202.png

3D View、線路の高さ方向を半分くらいに圧縮しても良いかもしれません。
動画に出てた感じだと、まるで崖から落ちるみたい。

361 :exlink.gifUmezawa  2010/04/21(水) 10:41:15 ID:FiFgxW6h  
exlink.gif>>360
意外といけるかも。
りおりおさんのE231toukaidoa.bmpを借りました。

http://www.free.netgamers.jp/freetrain/texture.png

抜き色の指定が違うのでヘンですが。

362 :exlink.gifUmezawa  2010/04/21(水) 11:45:35 ID:FiFgxW6h  
抜き色をちゃんと指定したもの

http://www.free.netgamers.jp/freetrain/texture2.png

窓が抜けるのも捨てがたいですけど、やっぱりこっちの方がイイ

363 :exlink.gif名前は開発中のものです。  2010/04/21(水) 11:52:49 ID:s4ZpTWSC  
exlink.gif>>362
スケールは実物準拠に?

364 :exlink.gifUmezawa  2010/04/21(水) 12:08:38 ID:FiFgxW6h  
exlink.gif>>363
列車のことは全然詳しくなくて、実物はよく知りませんが、
19200x2800x3400(mm) にしてみました。

A8のようないわゆるプラレールサイズにすれば、元の画像との
縦横比は合うんでしょうが、そっちのほうがいいのかなぁ。

365 :exlink.gif名前は開発中のものです。  2010/04/21(水) 15:13:25 ID:s4ZpTWSC  
exlink.gif>>364
ゲーム画面との整合性から、縦横比は元画像に合わせたほうが良いかなと思う。
画像の作者も、ドアの形状とかいろいろデフォルメしてる部分があるだろうし。

366 :exlink.gifUmezawa  2010/04/21(水) 15:49:55 ID:FiFgxW6h  
exlink.gif>>365
ポリゴンのサイズはいくつにすべきだと思いますか?
元画像は斜め上から見たのを想定して描かれていて、
テクスチャとして貼り付ける場合は垂直に貼り付けるから、えーっと……

367 :exlink.gif名前は開発中のものです。  2010/04/21(水) 17:37:54 ID:nGWENici  
あくまでも1ユーザのたわ言なにですが、、、

3D化した事で後にズームイン・アウト機能等がもし追加された時、
スケールがおかしいと見た目の違和感が凄いんですよ。(某●列車最新版を例示)
もしそういう機能を追加するときは3Dエンジン丸々データごと見直しますと言うなら
多少誇張されたサイズの方が見た目が良いですよね。

368 :exlink.gifUmezawa  2010/04/21(水) 19:46:49 ID:FiFgxW6h  
どなたか知っている方がいれば教えて下さい。

Train オブジェクトから、属する全ての TrainCar を
取得する方法はあるのでしょうか?

TrainCar[] cars の属性は private だし、
Train.head で取得できるのは先頭車だけだし、
TrainCar.previous で取得できるのは前の車両だし。

先頭車取得&前の車両取得メソッドの組み合わせって意味無くない?
「先頭車取得&後ろの車両取得」か「最後尾車取得&前の車両取得」
なら全車両取得できるんだけど。

先頭車両取得後、Train.reverseメソッドで反転させて
後で戻そうとしても上手くいかないし……助けて。

369 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/21(水) 19:57:10 ID:On7ascYe  
exlink.gif>>368
foobarさんがやってた反転機能がなんかうまいことやってたな。

えっとね、最新β2以降、pluginsの下のkohsuke〜の.tc.tat内src見てみて。
「A列車で行こう式ダイヤグラム」設定プラグインのソース。
そこのAdvancedStationHandler.cs見たら、
1両ずつ取り出してる部分があるはず。


P.S.
チラ裏はブログに書けって言われたので昨夜から今日にかけてブログにぶつくさ
書いてますがw
StationListener大改造してますw
これが成功したらサッカースタジアムが駅に直結できる!

370 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/21(水) 20:10:00 ID:On7ascYe  
あー

スマートに、TrainCar[] carsをpublicにするのもいいかもねぇ。
それでどっかよそに影響でなければ、だけど。
影響出るか出ないか全然分からないので断言できなくてすみません。

それならそれで、ちゃきちゃき本体いぢっちゃいますけど……

371 :exlink.gifUmezawa  2010/04/21(水) 20:25:22 ID:FiFgxW6h  
exlink.gif>>369
AdvancedStationHandler.cs 見てました。
で、これはわざわざダミーの TrainCar 生成して、
ポイントだったら云々と色々やってたので、
私が今回知りたいのは個々の車両の位置だけなので、
こんな面倒なことしなくても済む筈だ!
と思い込んで他を探してても見つからなくてイヤになりましたw

う〜ん、こんな方法しかないのかなぁ。
っていうか、このカプセル化の意図が正直分からない。
何故編成車両一覧さえ取得させないのか。
そんな筈はないと思うんだけど……。

372 :exlink.gifUmezawa  2010/04/21(水) 20:30:00 ID:FiFgxW6h  
exlink.gif>>370
おおーっ!
それなら public にするのはどうかと思うので、
headで先頭車が取得できるような感じで、
最後尾の車両を取得できるようにして下さいませ。
最後尾が取得できれば、あとは previous で前を追っていけば
いいだけのはずですので。

よろしくお願い致します。

373 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/21(水) 21:22:13 ID:On7ascYe  
Train.csに
public TrainCar tail { get { return cars[cars.Length-1]; } }
って1行足しといたらいいかなー?

すみません、StationListenerをイジってたら、大ハマリしてしっちゃかめっちゃかでw

うわーーん、どうしよう。
またセーブデータの互換性が失われるかもしれない。
しょっくぅ。

あと10分ぐらいのうちに、SourceForge.jpに2.0.2.5として置きますので。
それ持っていってみてください。

374 :exlink.gifUmezawa  2010/04/21(水) 22:00:16 ID:FiFgxW6h  
exlink.gif>>373
ありがとうございます。無事、成功しました!

375 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/21(水) 22:09:18 ID: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です。
なんとか互換性を保ってこれを実装できればよいのですが。
互換性がなくなるようだったらもうなかったことにするしか……

376 :exlink.gifUmezawa  2010/04/21(水) 22:33:51 ID:FiFgxW6h  
他の列車が表示される前面展望を作成しました。

http://www.free.netgamers.jp/freetrain/

全車両が、りおりおさんのプラグイン、東海道線E231系の先頭車です。
全てが先頭車ですが、まあ雰囲気を掴むには別に問題ないかなと。

また、民家が1/2の確立で列車に化けてます(テスト用に)。


作ってみて気が付いたんですが、斜めに走るときに車両の間隔が
すごく空いちゃうんですよね。以前の simutrans みたいに。


exlink.gif>>375
お役に立てなくてゴメン

377 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/21(水) 22:42:23 ID:On7ascYe  
たぶんそれ、私が改造して使ってた分で、オリジナルは北の汽車屋さんに
なるんじゃないかと思う<E231系

ひょっとしたらさらに親世代どなたかが公開されてたものかもしれないのですが……

あんまり誰の誰のって言われて誤解うんでもあれなのでw

378 :exlink.gif名前は開発中のものです。  2010/04/22(木) 00:22:58 ID:a675FHCq  
全然関係ない話だけどジオラマコレクション完全マニュアルだとかは絵書く人には
役に立つのかな?

379 :exlink.gif名前は開発中のものです。  2010/04/22(木) 08:10:13 ID:tRxUkMRL  
普段あんまり目にすることのない、建物の背面や上面がわかるなら参考になるかな。

380 :exlink.gifUmezawa  2010/04/22(木) 14:39:36 ID:zeC/usqT  
前面展望、対象車両の選択をできるようにしました。

・右クリックで前面展望/クォータービュー切り替え
・クォータービュー画面にて車両クリックで対象変更
・ホイール回転で、拡大縮小

車両選択が少々シビアなので、拡大してから行なって下さい。

http://www.free.netgamers.jp/freetrain/


ところで、やはりというかなんというか、こういうものを作ってしまうと、
車両がボクセル単位で移動するのが残念に感じてしまいますね。

FreeTrain はボクセル単位でガチガチにプログラミングされているので、
これをいじってドット単位で移動するようにするとドツボにはまりそうだし、
ソースも汚くなるだろうからやめたほうがいいとは思うけど、やっぱり残念。

まあ、良いロジックが思い浮かび、かつ C# のスキルも高い人が修正すれば
上手くいくのかもしれないけど……。
今までドット単位での移動要望は無かったのかな?

381 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/22(木) 15:45:51 ID:fEg4Xsfb  
まだ380版は動かしてないのと、3D Viewの中身をしらないので適当言っちゃいますが。

>今までドット単位での移動要望は無かったのかな?

無かったんじゃないかなぁーと思います。
移動を細かくするということは、同時に車両グラフィックのドット絵のバリエーションも
それだけ細かく増やさないといけないということになりますので。
車両プラグイン作者の負担がものすごいものになりそうです。

旧フォーラムの過去ログに何か有用な情報がないか探しに行ったことあるのですが、
「車両プラグイン作者のドット絵作成負担が大きいように思うので、方向を8方向に減らせ
 ませんか」という質問&要望があったりしたぐらいでした。
黙殺されてましたけどw

3D Viewがカクカクになってしまうというのであれば、FT本体側と完全同期動作を
やめればいいように感じるのですが、それは無理なのでしょうか。
FT本体の列車の動きを4tick()分記録して、4tick()遅れて動かして。
その間に動いた列車については、3D View側で適切に中割して動きを補完してしまう
ことで、FT本体が今のままで3D Viewはスムーズなアニメーションできそうに思います。

382 :exlink.gifUmezawa  2010/04/22(木) 16:21:20 ID:zeC/usqT  
exlink.gif>>381
simutrans は8方向グラでもドット単位の移動なんですよね。
だからと言って FreeTrain に真似しろと言ってる訳ではないですが。

3D Viewer はホントにただのビューアーなので、今のところ内部では
何もしてません。本体と完全同期してこそ「Viewer」だと思うし、
それを変える気も無いです。でもPS版のA4は非同期だったんでしたっけ。

383 :exlink.gif名前は開発中のものです。  2010/04/22(木) 16:24:29 ID:cakzj61Y  
見栄えがよくなるなら別に非同期でもいいんじゃないのかな

384 :exlink.gifUmezawa  2010/04/22(木) 16:42:05 ID:zeC/usqT  
まあ同期/非同期は今の段階で決める必要は無いのかな。
3系が主流になれば印象も変わるだろうし。

385 :exlink.gif名前は開発中のものです。  2010/04/22(木) 20:19:12 ID:a675FHCq  
つうかドット単位の移動ならできるでしょ。
今どのボクセルにいるかという情報があるはずだから、それと1緒に何ドット目の移動という
のを保存しておけばいいのではないかな。
1ボクセルを何ドットに分割して移動させるかは決めないといけないけど、たとえば6段階に
したとしてどのボクセルにいて、何ドット目の移動ですよ。
一定の単位時間毎にドットを進めて、その位置に表示。
列車も細かく作り直す必要はない。
描画位置だけの問題だと思う。

日本語でおk>俺orz


386 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/22(木) 22:23:25 ID:fEg4Xsfb  
FreeTrain EX Avは今でも処理の高速化を求められているぐらいなのに、
処理が重くなるドット単位移動を受け持つ余裕はどこにもありません。

また、プレイヤー全員がメリットのほうを享受するのなら、それの裏返しの
デメリットがあってもいいかもしれませんが、外部ビュワーである3D Viewを
どれだけのプレイヤーが使うか使わないか分からないし起動してない間は
まったく無用になる処理を本体が受け持つのは業務分掌が違うと思います。

また、本体の改造にしても2系統→3系統どころではない大改造が必要に
なるでしょう。
技術レベル的にも私の手におえるものではないでしょう。
exlink.gif>>385日本語の必要ないからC#でおk

一方、3D View側が4tick()分描画を遅くして中割アニメーションを作成する
のであれば、本体側の負担にはなりません。
非同期と言ってもまったくの非同期なわけじゃなく、4tick()遅いだけです。
4tick()の遅さでぬるぬるになるであれば、そりゃみんな(3D Viewを使う人の
みんな)うれしいと思うけどなぁー



こちら本体いじりはSpecialStationListenerの互換性維持がいまだできず
昨日時点からソースはいじってなくてうんうんうなってます orz

387 :exlink.gif名前は開発中のものです。  2010/04/22(木) 23:19:28 ID:aS/vz3rF  
A7とかだと列車がヌルヌル動いてる感じで見た目いいよね。
カーブも45度にカクっと曲がる感じじゃなく滑らかだし。
ただ、1マスに1車両という設計はA4から変わってなくて、
列車のスマートさは表現できずに結局どうしてもプラレール。
まあそれよりか、複線にしたときの線路の隙間の見た目がひどかったけどw

FTはドット単位移動ができたとしても、
それだけじゃあ苦労に見合うほどのインパクトは得られない気がする。

どうせ無理を言うのなら、高解像度化を希望するわw
現在の画像資産が死んでしまうため現実的ではないが
もうちょっとだけアップに耐えうるくらいに描画された列車を眺めてみたい。
WUXGAで遊んでるといろいろ小さすぎるってのもあるし。

388 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/23(金) 00:52:41 ID:I0iPS/HY  
exlink.gif>>387
>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行の解説をお願いしたい。

389 :exlink.gif名前は開発中のものです。  2010/04/23(金) 01:21:16 ID:/YLtdDhS  
baseLocation:多分現在の場所("PThreeDimStructure")
Entity:不明("Entity.cs")
createInclusive:ベクトルAからベクトルBまでの3次元立方体を作成する
queryInterface:これを実装しているか問い合わせ、あれば自身をなければnullを返す

多分baseLocation±rの範囲のボクセル全てに対しStationListenerがあるかどうか問い合わせ、
あればそいつに対してadvertiseStationを呼び出している

390 :exlink.gif名前は開発中のものです。  2010/04/23(金) 01:39:55 ID:OXmDWqZA  
exlink.gif>>388
baseLocationはベースクラスで宣言されてるんだけど、クラスの継承も解ってない?
だとすると、ここで全部説明するのは厳しすぎる。
まずオブジェクト指向プログラミングの基礎から学んでくれ。

VS Express使ってるんだっけ?
自分はVS2008使ってるから多少違うかもしれんが、
baseLocationにマウスかざして何かでない?
Location PThreeDimStructure ...とか
Location型でPThreeDimStructureクラスで定義されてますってことなんだけど。

あるいは、右クリックメニューで「定義へ移動」ってのない?
それでPThreeDimStructureクラスが開く
createInclusiveもブラックボックスじゃないし。
同じく「定義へ移動」すれば見られる。

ただし、Entityはインターフェースだから、queryInterfaceの実装を探すのは
ちょっと面倒だけど・・・ってか、インターフェースは解ってる?
これも基礎知識として知ってないと説明がしんどい。
queryInterfaceを右クリックして「全ての参照を検索」を実行すれば、
検索結果ウィンドウに一覧が表示される。
検索結果を一つづつ追っていけば、あらましは解るでしょう。

391 :exlink.gif名前は開発中のものです。  2010/04/23(金) 01:48:41 ID:zuR948Fe  
これは初心者レベルすぎる...
exlink.gif>>389-390
おまいらが開発やってくれ。

392 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/23(金) 02:32:10 ID:I0iPS/HY  
exlink.gif>>389
さんくす

exlink.gif>>390
継承は@itの第4章に書かれてるぐらいのことは理解してる。

が、VSのKDEをまったく理解してなかったということのほうが重要かも。
マウスポインタ置いたら<summary>が表示されるのも今知ったし、右クリックで
ソース呼べるのも知らなかった。
こんなに便利なのかー
今まで外部テキストエディタでいっこいっこ継承のスーパークラスたどっていって
「まだないーー」って頭かきむしってたのはいったい……

>インターフェースは解ってる?

@itの14章はまだ分かってない。
4章までなら分かる。
とりあえず今日、14章よく読み込んでみます。
ありがとうございました。

exlink.gif>>391
それはいいアイディアかもしれん。

393 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/23(金) 03:42:39 ID:I0iPS/HY  
全然話かわるんだけど(実は裏ではつながってるのだが)

駅のStationListenerが取りまとめてる「population」すなわち人口なのだけど。
その駅の周辺にある建物に住んでる人や利用する人については、建物プラグインのplugin.xml内で
<population>
<class name="人口の種類を表すクラス名"/>
<base>建物の基準人口</base>
</population>
と書いて、そのクラスにあるgetPopulation( 現在時刻 )メソッドが基準人口×その時刻の
外出率とゆーか駅利用率をかけたものを返すようになってる。
http://www19.atwiki.jp/freetrain-exav/pages/136.html
http://www19.atwiki.jp/freetrain-exav/pages/137.html
基準人口と時刻以外のファクターはまったく考慮されていない。
それで、先日から今にかけて、サッカースタジアムの駅への影響で悩んでるのだけど。

でよ。
この"人口の種類を表すクラス名"内のgetPopulation()メソッドのreturn値に、将来的にその建物の
利用率とか営業人気とかそういうものを加味しようとした場合、現在の設計で可能なのかな?
私がながめてた感じ、"人口の種類を表すクラス"が建物本体クラスから独立しちゃってて、
建物本体クラス側で値を上下とかできそうにないように思えるのだけど。
可能なら、getPopulation内にどう書くのか教えて欲しい。
やっぱり不可能なら、可能にするためにはどのような再設計をしたらいいだろうか。
提案求む。

394 :exlink.gifriorio ◆rio2xMQlrQ  2010/04/23(金) 03:55:39 ID:I0iPS/HY  
さらに話が変わって、このplugin.xmlのpopulationで指定できるclassが、
現状5通りしかない。
住宅・農業・オフィス・飲食店・買い物。
プラス、コンビネーションで上記から任意に組み合わすだけ。

これは少ないと思う。
飲酒産業・ホテル旅館・遊園地を追加したいと思う。
既存のプラグインについては、plugin.xml書き換えで対処。
そのほかに追加した方がいいと思うclassあったら、こんな業種がこういう変動するのを
実装して欲しいって具体的に提案ヨロ〜
なるほど、これは欲しい、という提案があったら採用します。

で、もし提案されてきたものに、時刻だけでは人口を決められないようなモノが出てきた
ときにはexlink.gif>>393な話にからんでくるというわけ。

あと飲酒産業で思ったんだけど。
「花キン」実装したいよね。金曜夜はお客さんいっぱい。
今って、時間帯で1時間ごと区切っただけで曜日すら見てないんだけど。
既存のオフィス・買い物なども内部的には月〜金の平日/土日の週末、の2通りのかけ率
を持てるようにはなってる。2通り実装してないだけで。
ただ飲み屋だと、平日と週末に区切られると都合が悪いわけで、これは使えない。
独自に24時間×7曜日分のテーブル持ってもいいし、スーパークラスとして
月〜木平日・金だけ・土だけ・日だけの4通りのテーブルを要求するクラスを作ってみても
いいかもしれないが、飲み屋以外にそのクラスを継承して利用しようとするものがなければ
作るだけ手間かかるだけで意味ないんで、それだったら飲み屋の独自実装でいいことになる。
さて。どうなんでしょうなぁー

395 :exlink.gif名前は開発中のものです。  2010/04/23(金) 04:17:16 ID:B7bfRG/Y  
riorioの方が向いてるよこのプロジェクト

396 :exlink.gif名前は開発中のものです。  2010/04/23(金) 04:49:32 ID:E//QvmpZ  
exlink.gif>>394
それやるんだったらサッカー場は普通に解決するような気がする。
水曜日と土曜日(だっけ?)の試合時間の数値を増やして。
人気で値を上下できるとさらにリアルに。まあオイラは野球派ですが、
となると野球場なんかも((だいたい)月曜休み、土日はデーゲームを仕込む?)

増やすんなら田舎の超ローカル線を支えていると言って過言でない学校か?
朝ワッと乗って(これはまだ無理か)3時に帰宅部が帰り、6時には運動部が、
夏休みは誰も居ないと。昔は土曜昼ってのがあったけどもう無いね。

飲み屋が実装されるとなると幻の横須賀線の花金電車(まだあるの?)が再現
できるわけですが・・・金曜日だからって飲みになんか行けないよウワァァン。

397 :exlink.gif名前は開発中のものです。  2010/04/23(金) 08:17:43 ID:Uki1z4a6  
乗客集計時に数だけ引っ張るのでなくpopulation種別も保持できるなら
駅の乗車待ち客のうちオフィス由来は何人〜とか見れて面白そう。
乗ってる間も列車側で保持できれば降りるときにいろいろ利用できてよさそうだが
乗車待ち全員が素直に乗れるわけじゃないから厳しいか。

398 :exlink.gif名前は開発中のものです。  2010/04/23(金) 09:41:59 ID:CMSflQ2q  
exlink.gif>>392
言語仕様の学習と同時に、IDEの使い方も覚えると良いよ。
使いこなせば、大幅に生産性向上する。

右クリックメニューや、「編集」、「リファクタ」メニューは、
一通りどんな機能があるか知っておくべき。出来たら実際使ってみる。

以下余談

自分は仕事ではeclipse+javaで開発してるんだけど、
言語仕様的な生産性のポテンシャルはC#>javaなんだが、
IDEの至れり尽くせり度がVS<<eclipseで、
トータルでの生産効率はeclipse+javaの方がまだ上。

eclipseを100点とすると、VS2008は40点くらい。
2005以前は10点未満だったから、多少マシにはなったとはいえ、
まだまだ格段の差がある。次のVerでは80点くらいになってほしいねぇ。

399 :exlink.gifUmezawa  2010/04/23(金) 09:55:28 ID:d3sqGdQq  
exlink.gif>>398
スレ違いだけど聞かせて。

C# と Java 両方理解している人から見て、C++/CLI ってどうですか?
個人的には将来はこれ1択だな、って感じているんですけど(分野にもよる)。

また、今回の一連のプラグイン作成は C++ で作成しちゃったけど、
C++/CLI なら C# との親和性も高そうだし、これで作ればよかったなと少々後悔。
.NET 事情をよく理解していなかったのが敗因ですな。


FreeTrain は今のところ .NET 2.0 ですけど、.NET は 4 で大幅に
変わるようですし、その際また EX -> EXAv に変えるときのような
苦労を避けるという観点でも、何か意見があれば聞かせて下さい。

400 :exlink.gif名前は開発中のものです。  2010/04/23(金) 10:15:49 ID:CMSflQ2q  
exlink.gif>>399
申し訳ない、C++/CLIの細かい仕様はよく知らない。
ただ、結局 .NETの共有言語基盤を使うのだから、
C#/VB.NETなどと機能面では同じはず。
あとは、個々人が馴染みやすい言語を選べばいい。
・・・というのがM$のスタンスだと思うけど、

個人的には、.NET Frameworkと同時に誕生したC#こそが、
もっともCLIのと親和性が高く、王道と言えるのではないかと・・・
一方、VBやC++など既存言語を拡張したものは、
どうしても無理矢理なところが出る可能性がある・・・と思っている。
なので、既にC#を使ってる自分としては、他を選ぶ理由が見あたらない。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年05月15日 02:56