トップページgamedev
819コメント672KB

鉄道経営系ゲーム製作スレッド 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/
0665riorio ◆rio2xMQlrQ 2010/05/08(土) 06:55:38ID:q1o1ZgWs
>>664
ありがとうございます! まさにそれでした!!
@ITでざっと読んではいたところなのですが(MemberwiseCloneと浅いコピー)
実際に使わなければいけない場面に出会わなかったので忘れてました。
MemberwiseCloneで解決しました。

private void buttonOK_Click(object sender, EventArgs e) {
// buy trains
Time now = (Time)World.world.clock.Clone();
for (int i = 0; i < (int)count.Value; i++)
{
new Train(World.world.rootTrainGroup,
(int)length.Value, selectedTrain, now );
}

実はまだ解決した方がいない部分があって。
初期配置の3つの編成、this.boughtThisTrainがnullなんでエラーになるのを回避するため。
もう「買ったわけじゃないから売ったとき0円!」という手抜きで処理してしまってます。
ゲームとしてこれでいいのか?
TimeLength usedTimeに、開始時からの経過時間を入れられれば、返金額計算可能
なのですけど。totalMinutesを使うと、β2からα3に移植するときSecondsに直して、
割るところに*60加えてとハードコーディングが生じてあんまし良くないような気がして
いるので。なんとかTimeLength.fromDaysなどを使ってβ2からα3で同じコード使える
ようにしたいとこねくりまわしたんですがどうしても型キャストできなくてハマりました。
大した手間かけずにβ2・α3で共通コード使える手段で、初期配置3編成も値段つけ
られるなら、つけたげたいな、という程度のものなんですけど。

とりあえず上記仕様で売却益でるようにしたのが2.0.3.4として公開してます。
ソースもコミット済です。
0666riorio ◆rio2xMQlrQ 2010/05/08(土) 08:02:56ID:q1o1ZgWs
>>641 >>651
についてはしたらばのほうに返答しましたので、以降したらばでおねがいします。
0667名前は開発中のものです。2010/05/08(土) 11:42:38ID:xpPyu/cY
声を上げれば動いてくれるものですね。
今後も、多くの人に伝える努力を怠らないでください。

>>662
実装された乗客の計算方法については良くわかりましたが、いくつか課題があるように思います。

課題
@特急などでも乗車率100%超はある。(200%くらいまで)
A混雑率は最高でも{(定員−着席定員)*2/定員}*100ですから、この計算式ではせいぜい180%止まり。
 ダイヤが不適切な場合、250〜300%超の、いわゆる殺人的混雑が有得ると思います。

そもそも列車というのは、基本的に積み残し(乗客が乗りたい列車に乗れないこと)は出しません。
何故かというと、殆どの乗客は嫌でもその列車に乗らないと目的地に到着できないからです。
ですから、最大定員=(定員−着席定員)*2 というものは、本来は誰が決めるものでもないのです。
ここにリアリティを持たせるには、列車の乗車定員を変えるよりは、駅の旅客需要の計算方法を変えた方が良いのではないでしょうか。
それが難しいとしたら、amenityを使って最大定員をいじるとか。
一覧ファイルを見たところ、少しパラメータの見直しが必要な所もありますが

最大定員=capacity*3 /amenity

とでもすれば、上記の課題を解決できそうな気がします。
amenityは主観が入りそうなので、ある程度の値に決定する事が必要だと感じます。
で、車両の種別という概念を追加したらいかがでしょうかと提案。
車両の種別を選べば、列車に関する様々な細かいパラメータ(fare、amenityなど)を自動で設定できる機能。

amenityの値(案)
新幹線:1.5 (最大乗車率200%)
在来線特急・急行形:1.4 (約215%)
近郊型:1.3 (約230%)
通勤型:1 (300%)

それで満足できないプラグイン作者に対しては、従来どおり個別のパラメータを設定してもらえば良いでしょう。
0668名前は開発中のものです。2010/05/08(土) 11:58:42ID:xpPyu/cY
・新幹線(高速鉄道)
・在来線特急・急行形
・近郊型
・通勤型

という4つが通常の旅客車の種別。
それに加えて以下の種別も準備しておいた方が良いでしょう。

・貨車
・事業用車両(機関車、作業用車両、線路計測車、荷物者など、乗客が乗らない車両)
・観光用車両(展望車、食堂車、ラウンジ車など、乗客が常に乗るわけではない車両)

「未定義」の場合は適当に「近郊型」の値でも流用しとけば良いのではないでしょうか。
そこの改変作業まで、プログラマが面倒見る必要はありませんよ。
0669名前は開発中のものです。2010/05/08(土) 12:01:02ID:xpPyu/cY
補足
寝台車は通常、定員以上載せる事は無いので
・寝台車(amenity=0.34)という種別を追加した方が良いかも。
0670名前は開発中のものです。2010/05/08(土) 12:05:49ID:xpPyu/cY
失礼、寝台車のamenityは3です。

ただ、これやると寝台車が常に満員になりそうですな。
(実際は乗車率悪いのに)
乗車人数の計算
(駅人口−消費乗客)*0.3*amenityは見直した方がいいでしょう。
実際、この計算式で乗車人数を表現できるとは思いません。
0671名前は開発中のものです。2010/05/08(土) 14:07:19ID:xpPyu/cY
駅での乗車人数ですが、以下のようなファクターを加えた計算式にしては如何でしょうか。

・運賃
・速度
・前の列車がその駅を発車してからの時間

以下のような状況を再現できれば良いかと思います。
@運賃が安く、速度が速い列車ほど乗客が乗る。
A運賃が速度に比べて高く、バランスの悪い寝台列車には、客はあまり乗らない。
 一方、観光用車両を連結した列車は、週末に乗客が増えるようにするなどの工夫も必要。
B列車間隔が3時間もあるようなローカル線では、特急だろうが何だろうが乗らざるを得ないから
 特急列車の乗車率もある程度上がる。
C列車間隔が短い通勤路線では、特急を選んで乗車する人は多くない。
D新幹線は運賃と速度のバランスが良く、それなりの乗車率を確保できる。

amenityは一種の制動係数として考えてみては如何でしょう。
amenityが高い車両は長距離用という扱いにして、駅での降車人数を少なめに設定し、客の入れ替わりを少なくする。
逆にamenityが低い通勤型は短距離用で、駅での降車人数を多くします。

以上、皆様の意見を求めます。
0672名前は開発中のものです。2010/05/08(土) 15:09:14ID:Xyqa/3Xy
>>667-671の、ID:xpPyu/cY って、
4月29日に>>486 >>489書いてるID:tMEW/tAM と同一人物だよね?

自分で「拘りたいならプレーヤー自身が自分の好きなようにcapacityを変更すればいいだろ。」
って主張したんだから、自分自身でそのとおり行動されたらどうですか。
以下そのときの書き込み引用。


486 名前:名前は開発中のものです。 投稿日:2010/04/29(木) 03:03:43 tMEW/tAM
駅の乗客とか定員とか、どうでも良い方向に労力かけすぎだろ。

489 名前:名前は開発中のものです。 投稿日:2010/04/29(木) 03:25:07 tMEW/tAM
オープンソースなんだから、拘りたいならプレーヤー自身が
自分の好きなようにcapacityを変更すればいいだろ。
プラグイン作者は今までどおり、各々の基準で定員を決定すればいい。

ちなみに自分の定員決定方法は・・・
車両のサービス定員を調査した上で
その車両が実際に運用される両数で編成を組成したときに、車両諸元と定員が一致するように
各車両(両先頭車、中間車、その他)の乗車定員を振り分ける。

定員と言っても色々種類があるが・・・
http://www.mintetsu.or.jp/knowledge/term/157.html
そもそも乗車率100%以上載せたら法令違反だからね。有名無実な法律だが。
0673OPB ◆gJsqBz3wKU 2010/05/08(土) 15:09:47ID:WCvCumBd
>>667

> @特急などでも乗車率100%超はある。(200%くらいまで)

自由席に限定すれば、今後のGWでも160%という報道がありましたが、
編成での多数派の指定席の車両との平均をとると、列車全体では100%ちょっとに過ぎません。
また、私鉄の有料特急では大多数が、JRでも全席指定の特急がありますし、
ゲーム中での特急の最大混雑率が100%ピッタリでも良いのではないでしょうか。

個人的には、ゲーム中の特急くらいは、お客さんには通路ではなくちゃんと
座席を提供してあげたいものですが。

> A混雑率は最高でも{(定員−着席定員)*2/定員}*100ですから、この計算式ではせいぜい180%止まり。
>  ダイヤが不適切な場合、250〜300%超の、いわゆる殺人的混雑が有得ると思います。

250〜300%って、オイルショック前後の、国鉄が通勤五方面作戦とかいってた時代の混雑ですね…。
あの頃の日本人なら耐えられた(いや、耐えられなくて上尾事件になったんだっけ?)かもしれませんが、
おそらく現代がモデルなこのゲームで再現するのはどうでしょうか。

ここ最近のデータでは、最悪の混雑は山手線の216%、私鉄だと田園都市線の198%だそうです。
確かに、{(定員−着席定員)*2/定員}*100では現実の山手線の混雑は完全には再現できないかもしれませんが、
かなり近いところまで表現できていますし、なにより単純でわかりやすい計算式だと思います。

> そもそも列車というのは、基本的に積み残し(乗客が乗りたい列車に乗れないこと)は出しません。
> 何故かというと、殆どの乗客は嫌でもその列車に乗らないと目的地に到着できないからです。

地方の路線であれば、確かに積み残しは避けるでしょうけれど、列車頻度の多い都市部では
普通に積み残しますしねぇ…、というか乗客も無理して乗りませんし。

無理して250〜300%なんて大時代的な混雑率をゲーム中で再現する必要は無いと思います。
0674名前は開発中のものです。2010/05/08(土) 15:25:02ID:xpPyu/cY
>>672
せっかく改善案を示したのにこういう非建設的なイチャモンを入れてくる馬鹿がriorio本人でない事を祈るわ。
レスの中身を見る事が出来ない人種はこのスレに必要ないんだよね。

>>673
確かにそういう考え方も出来ますが、現在か過去かの違いではないでしょう。
現在は過去に比べて、ダイヤや路線網が最適化されたからこそ、混雑率が低下してきているのです。
今後、急激に需要が伸びて路線建設や列車増発が追い付かない状況になる事があれば
また250%という混雑率を見る事が出来るかもしれませんよ。

ゲームのプレイヤーが、都市の需要に見合わないダイヤを組めば、300%という数字が出るのは当然ではないかと感じます。
0675名前は開発中のものです。2010/05/08(土) 15:38:05ID:fp212rZY
なんか昔あった信号とか設置して交通量コントロールするゲームを思い出した
0676OPB ◆gJsqBz3wKU 2010/05/08(土) 15:39:56ID:WCvCumBd
>>667

> 車両の種別を選べば、列車に関する様々な細かいパラメータ(fare、amenityなど)を自動で設定できる機能。
>
> amenityの値(案)
> 新幹線:1.5 (最大乗車率200%)
> 在来線特急・急行形:1.4 (約215%)
> 近郊型:1.3 (約230%)
> 通勤型:1 (300%)

これは無理でしょう。
国鉄時代ならともかく、今ではカテゴリーキラーな車両が多すぎます。

例えばE217系。
4ドアロングかと思えば編成中にはセミクロスもあり、グリーン車もあります。
これ、近郊型ですか、通勤型ですか?
近郊型か通勤型かで最大混雑率が70%も違うことになってしまいます。

211系も313系も近郊型のようでいて、オールロングシート車もいます。
205系も209系も通勤型のようでいて、セミクロスを一部取り付けられた車両もあります。
キハ120、オールロングの0番台とセミクロスの200番台の定員の差は7人しかありませんが、
オールロングは通勤型、セミクロスは近郊型になってしまうのでしょうか?

この辺の整合性をとり、かつ車両ごとに異なった定員数を再現するために、
議論の末考えられたのが、

{(定員−着席定員)*2/定員}*100

という計算式であり、seatcapacityというパラメータなのです。
0677名前は開発中のものです。2010/05/08(土) 15:48:02ID:xpPyu/cY
>>673
特急の指定席の扱いですが、確かに指定席では普通は100%以上は行かないですね。
ただ
・自由席の立ち客を指定席の通路に移したり(東海道新幹線)
・定員を超えて乗車した立席特急券を販売して立席乗車を認める場合(東北新幹線)
もあります。

そこの扱いとしては色々考えられます。
@一律で100%までとする。
A指定席/自由席の区分をつくる。
B200%まで乗せるようにする。
CBと同じく200%まで、ただし、100%を超える部分に関してはamenityの高い車両or「着席率=着席定員/定員」が大きい車両に関しては、乗客の増加率を抑える

@はとにかく簡単。
Aは面倒だが、ライナーとかを再現できたり。
Bは>>673の問題がある。
Cは>>673の問題をある程度緩和でき、実際の条件に近い。

と考えますが、どうでしょうか。
0678名前は開発中のものです。2010/05/08(土) 15:51:54ID:xpPyu/cY
>>676
そうなんですよ。E217系なんかが問題。
他にも似たような列車がごまんとあります。

定員は車両ごとに定義されていますから、車両の種別についても(「列車の種別」と定義していない事に注目!)
車両ごとに定義されるべきものと考えています。

ちなみにE217系のG車は余裕で乗車率100%超えますね。
0679OPB ◆gJsqBz3wKU 2010/05/08(土) 16:04:03ID:WCvCumBd
>>674

> 確かにそういう考え方も出来ますが、現在か過去かの違いではないでしょう。
> 現在は過去に比べて、ダイヤや路線網が最適化されたからこそ、混雑率が低下してきているのです。
> 今後、急激に需要が伸びて路線建設や列車増発が追い付かない状況になる事があれば
> また250%という混雑率を見る事が出来るかもしれませんよ。
> ゲームのプレイヤーが、都市の需要に見合わないダイヤを組めば、300%という数字が出るのは当然ではないかと感じます。

どうでしょうか。
やはり、オイルショック前後と21世紀の現代では生活環境の違いは大きいものがあります。
その最たるものは自動車の普及です。特に地方では。

混雑率200%までならば、まだ乗客もガマンするでしょうが、250%(人の圧力でドアが開かなくなる…民鉄協会の見解)や
300%(物理的限界に近く身体に危険がある)ともなればマイカー通勤に切り替えてしまうことでしょう。
渋滞は激しくなるでしょうが、電車内で潰されるよりはマシと考えることでしょう。
実際、地方では鉄道を捨てて自動車に切り替えている例も多いのです。
列車に乗っているのは交通弱者(学生と高齢者だけ)という現状はよく聞かれることと思います。

プレイヤーが混雑率200%を超えても、車両の増車に踏み切らないのであれば、
単に乗客の逸走を招くだけではと思います。
まぁ、ゲーム中ではバスもマイカーも実装されてませんが…今のところ。
0680名前は開発中のものです。2010/05/08(土) 16:07:46ID:RLnBfb1w
>>674

おいおい、そこで逆ギレすんの?
うわぁ

>せっかく改善案を示したのにこういう非建設的なイチャモンを入れてくる馬鹿がriorio本人でない事を祈るわ。
>レスの中身を見る事が出来ない人種はこのスレに必要ないんだよね。

rio2さんや他の人達が定員について建設的な議論をしていた4月29日に、
>>どうでも良い方向に労力かけすぎだろ
と非建設的も非建設的なイチャモンつけた本人がこういうことを言いますか。
へぇ〜〜〜〜〜

その「このスレに必要ないんだよね」って同じ言葉、4月29日に戻って自分自身に投げ
つけてみなよ。

あのさ、あなたがまずすべきはスレのみんなへの謝罪じゃないの?
「これまで、スレでおこなわれている建設的な議論を「どうでもいい」呼ばわりして
 きたことは謝罪します。二度としません。ですから私も議論に加わらせてください」
って。
そうしたらみんなも許してくれるよ、きっと。

それもせずして誰も求めてない勝手な議論を始めて「俺様は建設的」ぶられても
冷笑しかできません。
0681名前は開発中のものです。2010/05/08(土) 16:08:32ID:fp212rZY
capacityとは別に最大乗車数も車両プラグイン側に定義させて
駅の待ち人数を裁ききれない時だけそっちを参照するとかにしたらいいんでないの
(あくまでも第1段階としての案)
待ち人数がどっち方面に行きたいかまではホームごとに待ち人数設定するとかしないと無理だろうけど
0682OPB ◆gJsqBz3wKU 2010/05/08(土) 16:22:38ID:WCvCumBd
>>677

> @一律で100%までとする。

でいいと思いますけど。本来立席の設定無いんですし。
3両しかないのぞみ号の自由席で新大阪までデッキで立ちん棒なんて再現したくないですし、
つばさ号からMAXやまびこへの福島ダッシュなんかも再現したくないですw

>>678

> 定員は車両ごとに定義されていますから、車両の種別についても(「列車の種別」と定義していない事に注目!)
> 車両ごとに定義されるべきものと考えています。

それで、4ドアセミクロス車は近郊型ですか、通勤型でしょうか?
誰に聞いても意見が分かれるとは思いますが…。

> ちなみにE217系のG車は余裕で乗車率100%超えますね。

そうかと言って、いくらなんでもグリーン車で200%にはなりようがないと思いますが…。
0683名前は開発中のものです。2010/05/08(土) 16:29:20ID:xpPyu/cY
>>682
>それで、4ドアセミクロス車は近郊型ですか、通勤型でしょうか?

>誰に聞いても意見が分かれるとは思いますが…。
て分かってるならいちいち聞かないで下さいよ。
それとも私に決定権があるのですか?

それこそプラグイン作者のさじ加減一つでしょう。
(何らかの基準を作り、それに準拠させるというのもアリだと思います)
それで満足できないならプレーヤー自身が書き換える。
それで問題ありますか?
0684名前は開発中のものです。2010/05/08(土) 16:35:33ID:Xwl/thvY
今、あれっ、て思ったんだけど。

>>672
ID:xpPyu/cY == ID:tMEW/tAM
って書いてることにはなんの根拠もないよねえ?
単なるあてずっぽでしょー。

それに対してID:xpPyu/cY自身が否定もせず>>674のような反応をするということは、
これは>>672の書いた通り、
ID:xpPyu/cY == ID:tMEW/tAM
だったってこと?
それを自分自身で認めたってことだよねえ。

ID:tMEW/tAMは>>517でも
>pluginの属性を自分で変更すれば済む話。
>要は、便利にplugin.xmlのパラメータを吸い出してきて変更するツールを作れば良いんだろ?
>わざわざXMLという簡単に扱える言語でプラグイン作ってるんだから。
って主張してるんだから。

>>667-671に対しては「pluginの属性を自分で変更すれば済む話」と回答すれば
それでオッケーなんじゃないかな。
OPBさんもそうは思わない?
こんなのの相手に無駄な労力使わないほうがいいんじゃないのかな。
0685名前は開発中のものです。2010/05/08(土) 16:36:20ID:xpPyu/cY
逆に質問しますが、着席定員を比較すると
3ドアオールロング、4ドアセミクロス、4ドアオールロングの違いをどうやって出すのでしょうか。
恐らく通勤型に分類される3ドアロングの方が(定員−着席定員)は少ないですし
4ドアセミクロス、4ドアオールロングでは着席定員は4人しか違いません(その分サービス定員は違いますが)
(定員−着席定員)という指標で一律に比較するのも難しいと思いますよ。
0686名前は開発中のものです。2010/05/08(土) 16:42:03ID:xpPyu/cY
>でいいと思いますけど。本来立席の設定無いんですし。
>3両しかないのぞみ号の自由席で新大阪までデッキで立ちん棒なんて再現したくないですし、
>つばさ号からMAXやまびこへの福島ダッシュなんかも再現したくないですw

まぁそういう意見が大半であればそれでも良いかと思います。
どうせやるならその辺まで再現できた方が、個人的には面白いとは思いますけどね。

>そうかと言って、いくらなんでもグリーン車で200%にはなりようがないと思いますが…。

200という数字は一つの案に過ぎません。
実態をもっと調査して、最適な数字を探していければいいと思います。
0687riorio ◆rio2xMQlrQ 2010/05/08(土) 17:57:30ID:q1o1ZgWs
>>667 以下については、したらばで返答しました。
http://jbbs.livedoor.jp/game/50598/
0688riorio ◆rio2xMQlrQ 2010/05/08(土) 18:21:04ID:q1o1ZgWs
α3系統のリアル速度軸でお楽しみの皆様。お待たせしました。
FreeTrain EX Av α3.0.2.1出しました。
リアル速度軸の3系統で、やっとこさ【V2】プラグイン対応となりました。

また、【V2】プラグインセットにver 2.0.0.4出しました。
内容的には、道路プラグインを利用した線路敷石に、線路敷石styleを書き足したぐらいですが。

あわせてよろしくお願いします。


なお、α3.0.2.1では、plugin.xmlに記入されたすべての<price>を、内部で3倍して使用して
います。
これにより、車両価格はおよそ1両1億円(基礎運賃fareの高い新幹線などは2億5千万円ほど)
となり、建物価格もおおよそリアルな建設費用に近い金額となるはずです。
もし、建物価格でリアルな建設費用からかけ離れているものがあるとすれば、これからの
建物プラグインのパラメータ見直しにおいて修正したいと思いますので、ご報告ください。
パッと見で、あの一番最初に立ち始める「農家」などが安すぎる感じがします。
鉄道の線路建設費用などもβ2.0.3.1系の3倍に設定しています。

もろもろ含めたゲームバランスについても検証していただければと思います。
0689名前は開発中のものです。2010/05/08(土) 21:52:54ID:Nu5HileF
横からだけど、乗車率300%は行き過ぎとしても200%はあるかもね。
そもそも駅に待っている人が多いのに列車本数が少なければそれだけ乗車率は上がるだろうし
逆に列車本数が多ければ乗車率は下がると思う。
で今の仕様だと詰め込み乗客上限 = 着席定員 + ( 列車の定員 - 着席定員 ) * 2
で乗車できる最大の人数を求めていると思うけど、この「* 2」の部分を多少(例えば1.5 - 2.5とか)
幅を持たせて、乗車率を多少変化を持たせてみるとか。
混雑時(ラッシュ時)は乗車率が上がり(* 2.5)、通常時は乗車率が下がる(* 1.5)とか。
今更終わった議論蒸し返しても意味ないか。
0690riorio ◆rio2xMQlrQ 2010/05/08(土) 22:21:59ID:q1o1ZgWs
>>689
いや、意味なくないですよ。

その「* 2」の部分の「2」が「2」でいいのかは、まだこれから議論と調整の余地がある数字です。
ここを「* 2.2」がいいとか、議論と合意ができれば変更したいと思ってます。
「2.5」はちょっとでかすぎるかなぁ?どうだろう。乗車率計算してみないと分からんけど……

順番前後しますが
>混雑時(ラッシュ時)は乗車率が上がり(* 2.5)、通常時は乗車率が下がる(* 1.5)とか。

この混雑時か通常時かというのを作っているのは、「建物の持つ人口」であるpopulation
なのです。
この表にあるような率で周辺の建物から駅に乗客が集まってくるわけで
http://www19.atwiki.jp/freetrain-exav/pages/137.html
周辺に家が多い駅は朝8:00にすごく混むというようになってるわけなんですね。

だから、このpopulationの変動によって、上記の「* 2」は「* 2」のままであっても、
8:00は上限に達するけど、10:00は上限まで達しない。
min( (駅利用人口 - 消費乗客数) * 0.3 * amenity , 列車の詰め込み乗客上限)
のうちの、(駅利用人口 - 消費乗客数) * 0.3 * amenityのほうが小さいからこっちが
使われるということになるわけです。


>そもそも駅に待っている人が多いのに列車本数が少なければそれだけ乗車率は上がるだろうし
これは難しい。
「この次の列車がすぐくるのか、なかなかこないのか」が分からないのです。
過去に出発した列車のからみでは、「消費乗客数」という考え方で(私、この言い方より、ソースの
変数名のgonePassengersのほうが「あ、行ってしまった客ね」って分かりやすい気がするが)
前までの列車にたくさん乗って行ってると、駅に残った客が少なく次の列車にはそれほど
乗らないということが実現されてます。
0691riorio ◆rio2xMQlrQ 2010/05/08(土) 23:28:26ID:q1o1ZgWs
ここ数日でリリースしたバージョンのリナンバリングを行いました。
番号が変更になっただけで内容が変わったわけではありません。
Beta2.0.3.1→2.1.0.1
Beta2.0.3.2→2.1.0.2
Beta2.0.3.3→2.1.0.3
Beta2.0.3.4→2.1.0.4
α3.0.2.1→3.1.0.1

このリナンバリングによって、マイナーバージョン(2つめの数字)が「0」なもの=V1、
マイナーバージョンが「1」なもの=V2、と明確になったと思います。
0692名前は開発中のものです。2010/05/09(日) 00:25:02ID:DaaP5wHj
>>690
書き方が悪かったorz
混雑、通常時の*2.5とかは乗車の方ですね。
詰め込み乗客上限 = 着席定員 + ( 列車の定員 - 着席定員 ) * 2
この最後の*2の部分です。
ここが例えばの話で、1.5 - 2.5まで変動することで、同じ型式の列車でもその時々の
乗車数が変わるという意味です。
で、書き直して気づきましたが、これ意味ない仕様ですねw
頭がボケていたのかorz
実際に乗る人数は
乗客数 = min( (駅利用人口 - 消費乗客数) * 0.3 * amenity , 列車の詰め込み乗客上限)
こっちですね
やっぱり頭ボケてるw
吊ってきますorz
0693riorio ◆rio2xMQlrQ 2010/05/09(日) 00:35:58ID:ppOqI2u9
>>692

>実際に乗る人数は
>乗客数 = min( (駅利用人口 - 消費乗客数) * 0.3 * amenity , 列車の詰め込み乗客上限)
>こっちですね

そゆことーー
でもラッシュ時間帯には列車の詰め込み乗客上限のほうで頭おさえられることになるから、
そこで立席*2を上限にするか*2.2を上限にするかって議論はアリだと思うのよ。

で、この「駅利用人口」を決めてるのが周辺にある建物のpopulationなわけで、
populationの数値を土日分どうするかとか、既存の平日でもおかしなところが
あったら直さなきゃとか(Residentalの7:00が少なすぎって指摘ありましたね)、
クラス増やすとしたら増やしたクラスはどういう数値にするかとか、それをplugin.xml
から情報抽出して既存パラメータの妥当性を確認してよくないものは直してとか、
そういうことがひいては、列車の乗客がちゃんと乗る、ということにつながるのです。
0694名前は開発中のものです。2010/05/09(日) 00:51:37ID:DaaP5wHj
wiki見て思ったのですが、populationってクラスで定義してそれをplugin.xmlで指定してと
なってますけど、新しく追加する、もしくはちょっとこの建物は特殊だから人工を変えたい
という場合、いちいちプログラムを弄ったり、もしくは自分で作らないと駄目じゃないですか。
ある程度はbaseというので帰れそうですけど、特定の時間帯の人口を増やすとなると
やっぱり新しく定義しないと駄目ですよね?
これ、クラスよりはplugin.xmlの中で時間帯と人口を指定した方が建物プラグインの作者も
指定しやすくなる気がしますが、今更変更は大変そうですよね。
互換性の問題もあるだろうし。
0695名前は開発中のものです。2010/05/09(日) 01:08:10ID:ZGbmXM9O
システム側にはデフォルト値用意しておいてxmlの方に記述が存在しなければ
そちらを適用した計算処理をするようにしておけばいいんじゃないの
0696riorio ◆rio2xMQlrQ 2010/05/09(日) 05:38:44ID:ppOqI2u9
>>694
>やっぱり新しく定義しないと駄目ですよね?

はい。
なので、今、欲しい新クラスがあれば具体的にこういう建物が使うクラスで
こういう人口変動するっていうのを示してもらえば、作りますよ。
どうせ数種類追加するわけですから。
そのついでに作れます。

>これ、クラスよりはplugin.xmlの中で時間帯と人口を指定した方が建物プラグインの作者も
>指定しやすくなる気がしますが、今更変更は大変そうですよね。

いやぁー、面倒なんじゃないかな。プラグイン作者さん。
本体のほうでこういうクラス用意するのはさほど大変じゃないと思いますよ。

>互換性の問題もあるだろうし。

まぁそれはV2プラグインの時点で、過去の本体では使えないの確定なんで考えなくて
いいでしょう。


>>695
オプショナルな項目についてはそれでいいと思いますが。
これ許すと省略すべきでないプラグインなのに省略しちゃったりしてめちゃくちゃになる
ことも多いので。記入必須・なければエラー!でもいいかと。
0697riorio ◆rio2xMQlrQ 2010/05/09(日) 06:44:10ID:ppOqI2u9
早く目が醒めちゃったので、population案作りました。

あくまでも案です。決定稿じゃないです。
これをベースにしてもらって、このクラスのこの時間帯はもっと多いとか少ないとか
だったらこんなクラスも追加して欲しいとかいやこれいらないとか、活発に議論して
いただけたらうれしいなー

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

ホテルをビジネスとレジャーに分けたのは、とりあえずで、もし
「このホテルは両方の性格あるんだよなー」ってことがあればCombinationPopulation
組んで、両方にbaseを半々ずつふることでそれは実現できるしってことで。

学校は、中高校ぐらいを想定してます。
「大学はもっと遅くまでいるぜ」っていうのは、OfficePopulationクラスにしてもらう、
ということで。

あ…… その学校、普通のHourlyPopulationでは長期休暇を再現できませんね。
4/1〜4、7/25〜8/31、12/25〜1/4、3/25〜3/31は休日扱いになるように新しい
隠蔽クラス作ります。
0698riorio ◆rio2xMQlrQ 2010/05/09(日) 10:56:50ID:ppOqI2u9
で、そのまますることもなくヒマしてたのでソースいじってたら、人口クラスの新設と
土日人口の設定が、とりあえず(案)の数値ではできてしまった。

ということで、モガミさん、すみません、メールも送りましたが一旦リスト化作業は中断
でできあがってるところまでデータください。

クラスは全部でこんなとこです。
http://www19.atwiki.jp/freetrain-exav/pages/136.html


0699モガミ ◆1zbgmm1SzU 2010/05/09(日) 13:09:44ID:Od7dq4Xx
>>698

了解しましたー。
わざわざロダ借りるのもアレなんで
とりあえずメールのほうに添付させていただきます
0700riorio ◆rio2xMQlrQ 2010/05/09(日) 15:18:43ID:ppOqI2u9
FreeTrain EX Av β2.1.0.5、α3.1.0.2、両者向けV2 Additional Plugin Set 2.0.0.5を
公開しました。

人口の平日・土日変化を取り入れ、また学校や遊園地などの特徴的な人口クラスを
取り入れました。
まだまだパラメータの調整を行わねばならない段階ですので、テストプレイをしていた
だいたら、ぜひともパラメータのフィードバックをお願いします。

学校ですが、大学では院に行ったり卒論前になったりすると夏休みとかなしに研究
してたりするので、c477さん作の大学建物群のうち教育棟はSchoolにして夏休みあり、
研究棟は従来のOfficeのままにして夏休みなし、という変化をつけてみました。


ウチのコロネ島で、駅前にtoaruさんのナイトクラブビルを建てまくった歓楽街がある
のですが、そのおかげで駅に乗客が集まる金曜夜にうまく出発する電車を設定して
ないもんで、せっかくの新人口クラスが空振りになってたりします。
みなさんのほうでうまく乗客を拾えるダイヤを組んでみてください。

あと私案のままのResidentalなクラスでは、平日より土日の方が終日にわたって
幅広く乗客需要があるので、数時間に1本レベルの運転頻度だと土日のほうが1日
としての乗客数は多くなったりしている様子が伺えます。
朝ラッシュ・夕ラッシュにうまく列車がはまらないんですね。
0701名前は開発中のものです。2010/05/09(日) 22:51:07ID:ej3DeXoc
>>697
学校長期休暇populationは正式なものにしても良いのではないかと。
なぜなら、学校が休みになると逆に人が増える遊園地やら動物園水族館(はなかった
様に思うけど)、そういう施設に使えそうだ。
実際にやるとすると、休日とダブるから平日の長期休暇中とでもするんだろうが。




プラグインの最新版か・・・乗客がデタラメで使い物にならない車両はなくなったから
まだマシだといえばそうなのだが、また色変えただけの○○タイプを削除する作業は
せにゃならんのか・・・。
0702riorio ◆rio2xMQlrQ 2010/05/09(日) 23:06:28ID:ppOqI2u9
>>701
あ。
今日だしたβ2.1.0.5、α3.1.0.2、両者向けV2 Additional Plugin Set 2.0.0.5で、
学校の長期休暇は実装できてるはずです。

ただですねぇ、これ人口クラスとしてはSchoolPopulationという名前なのですが、
夏休み=休日であることとを何月何日〜何月何日をif文で判定して、
そこは人がいないっていうハードコーディングしてしまってるんです。
なので、これを流用して
>学校が休みになると逆に人が増える遊園地やら動物園水族館
は作れないんです、ゴメンナサイ。

そのかわり、現時点では土日しか人の増えないLeisureLandPopulation・
LeisureHotelPopulationに、これもハードコーディングになってしまいますが
if文つけたして同じ期間休日扱いにすることは可能です。
そうしましょうか。
それか、Time.csあたりに、isHolidayとか関数作って判定した方がスマートかな。
それだと祝日対応もできるかもだし。


>また色変えただけの○○タイプを削除する作業はせにゃならんのか・・・。

うー、ごめんよー。
私個人としても色替え列車はキライなんですが、プラグインセットとして恣意的に
除外することはできないもんですから、お手数かけます。

あれかなぁ…… フォルダ構造を変えて色替え車両だけまとめて、フォルダいっこ
削除したらOKにする……と、それはそれで上書きインストールした人が二重になって
困っちゃうかー

P.S. 誰も読んでないかもしれないけど、SourceForge.jpにいくつかチケット登録しました
0703riorio ◆rio2xMQlrQ 2010/05/09(日) 23:53:20ID:ppOqI2u9
すいません、ヘルプ。
追加したコード部分がどうやってもビルドできなくなっちゃった。
たぶんまたC#の初歩中の初歩でつまづいてるんだと思うが、笑って指摘して欲しい。

ソース丸ごと、SourceForge.jpにコミットしてるので、見てもらったらいいのですが。
core\contributions\road\AbstractRoadContributionImpl.csです。
道路敷設時に費用が計上されるようにしたくて、かつ、道路styleのTypeがrailballastで
あれば鉄道費目から計上し、それ以外のTypeであればバス費目から計上するように
したいです。

まずここの70行目なんですが、
if( this.style.Type == railballast )
で「railballast」がコンテクスト内にないぞ、と怒られます。
このrailballastは、core\world\road\RoadStyle.cs内で
public enum MajorRoadType:byte{ unknown, footpath, street, highway, railballast }
と宣言してあるenum型なんですが。名前空間もちゃんと含まれてると思うのに?

さらに次の71行目などで
accounting.AccountGenre.RAIL_SERVICE.spend(cost);
else
accounting.AccountGenre.ROAD_SERVICE.spend(cost);
と収支に計上しようとするところで、「accounting」がコンテクスト内にないぞ、と怒られます。
これはcore\world\accounting\AccountManager.csで、これも名前空間あってると
思うんですけどなんでだろう……

以上2点、よろしくお願いします。
0704名前は開発中のものです。2010/05/10(月) 00:00:34ID:4phEMnjD
enum型を使う場合は型名.要素って書く。
だからこの場合はMajorRoadType.railballastが正しい。

ソース見てないけど、accountingは変数名、それともクラス名?
0705名前は開発中のものです。2010/05/10(月) 00:07:12ID:AeWmVu/5
FTのソース(特にコア部分)見ると片っ端からリネームしたくなる
最初の開発者はC#嫌いだったんだろうか
0706名前は開発中のものです。2010/05/10(月) 00:09:15ID:4phEMnjD
>>703追記
accounting.AccountGenre.RAIL_SERVICE.spend(cost);

freetrain.world.accounting.AccountGenre.RAIL_SERVICE.spend(cost);
に変更

または
using freetrain.world.accounting;
を先頭に追加して、
accounting.AccountGenre.RAIL_SERVICE.spend(cost);

AccountGenre.RAIL_SERVICE.spend(cost);
に変更

でどぉ?
0707riorio ◆rio2xMQlrQ 2010/05/10(月) 00:20:58ID:gq7P0zuQ
>>704 >>706
ビルドとおりましたーー!
論理バグが残ってないか動かして確認する必要ありますが、
まずは一歩というところで、ありがとうございました。

accountingのほうなんですけど、参考にした線路をひくほうのコードで、
core\world\rail\SingleRailRoad.csでは、usingなしでいきなり私が真似たような
accounting.AccountGenre.RAIL_SERVICE.spend(cost);
と書いてて通ってるのは、これはなんでなんでしょう?
0708名前は開発中のものです。2010/05/10(月) 00:42:51ID:gdjSYFhS
>>687
また「議論は済んだ、お前がやれ」の一点張り、そういう事言われましても理解できません。
現状が最も優れている理由だけ仰って頂いた方が十分に伝わりますよ?
私としては、過去に現実に起こった事象すら再現できない「リアルなシュミレーション」はちょっと。。。と思いますがね。

熟考するより先にあなたが動いてしまったのに「私は苦労したのだから尊重しろ」と言われましても。。。
頑張っているのは認めますが、正直「骨折り損のくたびれ儲け」だとしか言えません。
それに、そのような開発姿勢で、果たしていいゲームが出来るのでしょうか?
私が何度も言ってきたように「動く前に良く考えて」という事です。
あなたがコーディングする前に、皆でしっかり考えていれば、今回のように私が修正を求める意見
(あなたにとっては「苦情」でしょうか?)を申し上げる必要もなかったのです。

「車両の種別」については、以下の2点についても加味して、もう一度考えてみていただけますか?
@「車両の種別」が「列車の種別」でない点(>>678)
A今後プラグイン作者が大量の車両プラグインを製作した際、仮に今回策定したガイドラインに準拠していない場合
 パラメータの管理・修正をするとしてどちらが楽か
  ・個々の車両のamenityとfare、その他のパラメータを個別に管理する。
  ・「車両の種別」を管理する。

暇があれば>>670-671の、駅での旅客の乗降の扱いについても返答してください。
これは比較的簡単に実装でき、かつ現状よりは良い案だと思いますが。。。
0709名前は開発中のものです。2010/05/10(月) 00:51:20ID:dx3tPwL7
そこまで言うんならおまえさんもプログラムの勉強しろよw
0710riorio ◆rio2xMQlrQ 2010/05/10(月) 01:04:23ID:gq7P0zuQ
>>708
したらばに書かれたことを2chに持ち込まないでください。
したらばで質問されればしたらばで受け答えもできますが、2chに持ち込まれた分に
ついては返答を要しません。
これは私の意志どうこうではなく私以外のこのスレ住人の総意です。
それでも持ち込みたいとおっしゃるんでしたら、あなたがあなたの責任でスレ住人
全員を説得してください。


以下、ほんとのチラ裏。

論理バグが取れねぇ〜
のはいいとして、Visual Studio 2008 Express Editionの根本的な問題に直面。

たとえばいま私がいじってる道路建設するコントローラGUIとかは、
freetrain.controllers.AbstractLineControllerで設計したやつを、必要なところで
継承して使いまわすっていうか、利用してるんだけど。
今回「費用」をCostBoxで表示したらそのままではRoadControllerのおかしなところに
CostBoxが出て困るからRoadControllerをデザイナで編集しようとしたところ。

>データが失なわれる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。
> 1 エラー
> このページが表示されている理由
> デザイナは型 'freetrain.controllers.AbstractLineController' のインスタンスを作成しなければなりませんが、
>型が abstract として宣言されているため、作成できませんでした。

となって、編集できない。これは建物の工事(仮)とかでも同じ現象が起こる。
が、abstractなコントローラはabstractで宣言しておかなかったら継承できないわけで
(ためしにabstract宣言消してみてどうなるかやってみたさw)、これどーにもなんないの?
RoadControllerは、結局、FreeTrain EX Avの画面見ながら「ツリー表示を上に12ドット狭めて」
「そのあいたところにCostBoxがはまるようにするにはSystem.Drawing.Point(12, 128)か」
とか全部手打ちで座標いれこみましたよww 俺何時代のプログラマだよwww
0711名前は開発中のものです。2010/05/10(月) 01:08:36ID:gdjSYFhS
>>710
返答しないんじゃなくて出来ないんでしょ、事実を認めたくないんだから。
0712riorio ◆rio2xMQlrQ 2010/05/10(月) 01:09:16ID:9zo11PdN
>>708

>>486

486 名前:名前は開発中のものです。 投稿日:2010/04/29(木) 03:03:43 tMEW/tAM
駅の乗客とか定員とか、どうでも良い方向に労力かけすぎだろ。
0713名前は開発中のものです。2010/05/10(月) 01:13:21ID:Gz2C5Hi/
>>711-712
したらばでやれ
0714名前は開発中のものです。2010/05/10(月) 01:36:16ID:gdjSYFhS
おいおい、コテ外し忘れてるよ。
ちょうど登場時期も一致するし、まさかYz氏を追い出した粘着荒らしって。。。

と、変な詮索はおいといて
したらばに書いてあることって、大抵が言い訳と悪口だけで見る気も失せる。まして書き込みなんて。。。
定量的な評価なんか一つも無いんだもん。
それに一部のレスのさらに一部分しか見てないよあれ。
あんなところで口げんかしてても何の生産性も無い。
いい加減気づけ。
0715名前は開発中のものです。2010/05/10(月) 01:44:29ID:gdjSYFhS
ちなみに
>>712
その忠告も聞かずにGW丸潰しした奴が
いまさらその発言を引用してくるなんて都合が良過ぎるんじゃないのかな。
0716名前は開発中のものです。2010/05/10(月) 02:05:31ID:4phEMnjD
>>710
freetrain.controllers.AbstractLineControllerの定義からabstructを外して、それで
デザイナは開けないですか?
で、編集終わったらabstruct戻して。

>>711
したらばにいけよ、おまえ邪魔なんだよ。
したらばいって思い切り議論してこい。
あとなYzは野郎から勝手に出て行ったんだよ。
経緯も知らんのに勘違いしたこと言うな。
0717名前は開発中のものです。2010/05/10(月) 02:09:01ID:4phEMnjD
>>707
よく、わからんね。
core\world\rail\SingleRailRoad.cs見るとusingないのにaccounting見れてるというのが。
しかもfreetrain.worldすらusingしてないような。
というかfreetrain.world.railとfreetrain.world.accountingは別空間だから見えないと思うけどなぁ。
うーん、なんでこれでビルド通るのか...
0718riorio ◆rio2xMQlrQ 2010/05/10(月) 02:29:43ID:gq7P0zuQ
>>716
一段落ついたら一時的にabstract外せるかやってみます。
これからたぶん、何度もGUIいじることがあると思うので。

で、またヘルプ たびたびすまんw

ソースは今回コミットせずにロダにあげてますが
http://u4.getuploader.com/freetrain/download/68/FreeTrainEXAv2.0.1.6ALPHA.zip

今うまく動いてるのは、「道路」建設で、「バス」部門の支出につけること。
道路プラグインだけど「線路敷石(バラスト)」なものに限っては「鉄道」部門の支出につけること。
それぞれ道路コントローラで費用もあらかじめ正確に表示できてる。

で、今度はそれを組み込み済みプラグインの機関庫でやろうとした。
org.kohsuke.freetrain.rail.garageです。
建設・撤去を実際にしたときに、「鉄道」部門に支出をつけることは成功しました。
ただ、その前のワンクリックでアンカーして長さ決めるときの半透明時にCostBoxに費用を
リアルタイム表示させたいのですが、その数値が道路のときの安いままで機関庫の実際
の費用にできていません。
この費用計算の部分は、AbstractControllerImpl.csにcalcCostOfBuild・calcCostOfRemove
をvirtual宣言して、AbstractLineController.csの中で道路の費用でoverrideしてます。
それを同じようにTrainGarage.cs内でoverrideしたらイクだろうと思ってやってたのですが、
できませんでした。
その残骸が152行目〜179行目のコメントアウトで、これを実行できたらリアルタイム費用
表示できるはずなのにーーというところなのです。

いや、そもそもTrainGarage.cs内でAbstractLineController.csを継承してねーじゃん、という
のはまずあるツッコミどころなのですが。
あれ?じゃあこの機関庫の建設メニューはどっから継承されてきてるんだろう??が不明。
AbstractLineControllerをどっか経由で継承してきてるのは間違いないので。
0719riorio ◆rio2xMQlrQ 2010/05/10(月) 02:31:05ID:gq7P0zuQ

まちがえた
ロダにあげてるのはビルド済のバイナリです orz

ソースはこれからSourceForge.jpにコミットしてきます orz orz
0720Umezawa2010/05/10(月) 07:35:11ID:CHwKLoKd
>>708
なぜ頑なに自分でプログラミングすることを拒むのか分からないです。
あなたの要望のみを実現するだけであれば、そのためのC#の習得には
それほど時間は掛からないと思いますよ。

もちろん、キレイなソースを記述したいとか、自分で1からA列車モドキを
作成したいとなると話は別ですが。
0721名前は開発中のものです。2010/05/10(月) 11:54:52ID:+pT+Vdvx
FTを「A列車もどき」などと思って作ってもらいたくはないな。

ぐっさんに失礼だろ。
0722名前は開発中のものです。2010/05/10(月) 13:03:25ID:nZbS5XlU
>>708,720,721
あっちでやれ
0723名前は開発中のものです。2010/05/10(月) 18:01:09ID:FOjclZDa
riorioと愉快な仲間たちは一回抜いてください。多分それで解決するんじゃないかなぁ。
解決しないなら、もう一回抜いてください。
まだ解決しないな(ry
0724モガミ ◆1zbgmm1SzU 2010/05/10(月) 20:01:48ID:Fxn+ZLDR
>>714
ここで口喧嘩したら生産性がないどころか、周りのやる気を殺ぐんですが。
ここで騒いだら周りに迷惑だといい加減気づいてください。
自分以外の意見が何も見えないのですか?

迷惑だから他でやれとさんざん言われて、
「したらばの内容が〜」とか言い訳して、
こっちで文句言い続けるとはどういった了見でしょうか。
0725名前は開発中のものです。2010/05/10(月) 20:10:32ID:nZbS5XlU
>>724
悪いが直接生産に関与しない発言ならあなたもあっちでやってくれ。
私もこれを最後に以後はあっちでちゃんとトリ付きでやるよ。

スレの皆ごめん。偉そうに言わせてくれ。

以後も続くかもしれない。いや、多分続く可能性は皆も理解できると思う。
でも完全にスルーして欲しい。
もしこの発言にも文句があるならあっちで話そう。一回トリ付きで書き込むよ。

これ以上ここが荒れてはいろいろな意味でマイナスがでかすぎる。
0726riorio ◆rio2xMQlrQ 2010/05/10(月) 20:33:12ID:gq7P0zuQ
FreeTrain EX Av β2.1.0.6だしました!

【2.1.0.5 -> 2.1.0.6 変更箇所】
・地下線路の建設費を地上の2倍に設定した
・道路の建設費・撤去費がバスの収支に計上されるようにした
・鉄橋・ガード高架・トンネル・機関庫の建設・撤去に費用がかかるようにした
・サッカースタジアムの建設費が計上されるようにした
・半ボクセル建築の建築費が子会社の収支に計上されるようにした
・建物総合の建築費が子会社の収支に計上されるようにした
・地表の工事費が子会社の収支に計上されるようにした
・鉄道アクセサリの建設費が鉄道の収支に計上されるようにした
・「建物の建設(仮)」と「貸ビル」をメニューから削除(建物総合に完全移行)
・人口クラスに長期休暇と祝日(ハッピーマンデー施行前)を実装
・LeisureHotelPopulation・LeisureLandPopulationでは長期休暇中の平日は、週末と通常平日の間の来客がある
・ブルドーザーによるボクセル撤去及び各メニュー内の撤去を行った際に経費が計上されるようにした

おそらく、現時点で実行可能な操作で考えうるすべての支出を実装出来ているはずです。
もし抜かりがあったら教えてくださいw
ただこうなると、子会社(建物)が単なる金食い虫になってしまうので、今度はいかにして
子会社の儲けを実装するかという点が課題かと思います。

【既知の問題点】
・鉄橋・ガード高架・トンネル・機関庫の建設時、ダイアログ中に表示される「費用」が正確ではない
 (収支表には正確に記載される)

これが解決できてません。詳細は>>718のとおり。力及ばずすいません、分かる方教えてください。
あと、「地表」コントローラにもCostBoxつけようとしたのですが、こっちはうまくコントリビューションの
priceをゲットできなくてやはり実装できてません。コントローラにCostBoxつける余地だけ作ってます(トホー
0727Umezawa2010/05/10(月) 20:56:32ID:CHwKLoKd
>>725
そうは言っても肝心の ID:gdjSYFhS がしたらばに移ってくれず、
現在ほぼ唯一の FreeTrain 本体開発者であるりおりおさんが
彼の書き込みにより気力を無くしてしまう以上、ここでやるしか
ないでしょ?

問題は皆がスルーできるかどうかではなく、彼により開発者の
開発意欲が削がれることなんですよ。
0728riorio ◆rio2xMQlrQ 2010/05/10(月) 21:09:15ID:gq7P0zuQ
>>727
いや、皆が全員スルーできたら、あんまり気にはなりません。
私はもちろんここではスルーしますし、看過できなければしたらばに書くまでのことです。

一番エナジードレインになるのは、彼の蒸し返しにつられて、種別がどうのなどという
解決済の議論に乗っかってしまう人が出ることです。
ここでそういう蒸し返しが起こると、それが一番つらい。
このことは皆様にご理解いただけると幸いです。

まぁ彼に対して、蒸し返しへの反応をしたくなれば、それもしたらばに書いてもらえれば
ここに書かれるのとは違ってさしてダメージにはなりません。
せっかく場所用意したので、したらばのほうも有効活用していただければと思います。
0729モガミ ◆1zbgmm1SzU 2010/05/10(月) 21:21:33ID:Fxn+ZLDR
>>725
すいません。以後気を付けます
>>726

いろいろ変更点があるようですが
これから作るプラグイン関係のxml文書は今までどおりで大丈夫ですかね

また子会社の儲け云々は、やはり建物そのものに付与させる形になりそうな気がしますが・・・
何分「赤字が発生しない」という状態にすると、ゲームとしては成り立たなくなりますし
調整が難しそうですね

本体のほうで調節するとなると高さとボクセル数から維持費を持ち出して、
居住・就労人口から利益を算出させる・・・ってところですかね。
しかし数値固定じゃゲームになりませんし・・・
0730名前は開発中のものです。2010/05/10(月) 21:44:22ID:QP5nOWYx
>>728
>私はもちろんここではスルーしますし、
えっ
0731riorio ◆rio2xMQlrQ 2010/05/10(月) 21:47:03ID:gq7P0zuQ
>>729
>これから作るプラグイン関係のxml文書は今までどおりで大丈夫ですかね

建物プラグインはV1仕様で作ってもらえればと思います。
それはそのままではV2本体では使えませんが、公開されたらそれを私の方で
V2仕様に書き換えてAdditional Plugin Setに含めて公開します。

建設費・priceの数字が10000〜100000違うことになるので、V1に揃えた方が
たぶんこれまでの人には親切じゃないのかなぁ。
もうモガミさん自身がV2で遊ぶ!と決めておられたら、最初からV2で作成され
てもかまいません。

wikiのGenericStructure解説は、V1/V2両対応の書き方をしておきました。
http://www19.atwiki.jp/freetrain-exav/pages/111.html
建物の場合違いはpriceだけですので
>【V1】プラグインでは、この<price>に設定する数値は現実の建物価格の1/30000の値を記入します。
>30000000の一戸建て住宅であれば、1000と記入します。
>
>【V2】プラグインでは、この<price>に設定する数値は現実の建物価格の1/3の値を記入します。
>60000000の木造アパートであれば、20000000と記入します。
というところで。

V2のβ2.1.0.5で新規追加された人口クラスについてはここを見てください
http://www19.atwiki.jp/freetrain-exav/pages/136.html


P.S.
駅とホームの建設費が抜かってた orz
0732名前は開発中のものです。2010/05/10(月) 21:53:29ID:4phEMnjD
何点か。
>>718
まずどのソースを登録したとありますが、問題のあるソースがどのバージョンなのか書いてくれると
ありがたいです。
次に
>それを同じようにTrainGarage.cs内でoverrideしたらイクだろうと思ってやってたのですが、
>できませんでした。
どういう状況になるのですか?
ビルドが通らない?
動くけど意図した動作にならない?
もっと具体的にこう書いたら、こうなったと書いて欲しい。

0733riorio ◆rio2xMQlrQ 2010/05/11(火) 00:23:51ID:2IjeXIXA
>>732
すみません。

問題のあるソースは、コミットしましたと書いた時点の最新のもの、
からそれ以降現時点最新のものまで引き続き同じ問題を抱え続けています。
リビジョンでいえば74と75がそうです。

>どういう状況になるのですか?
>ビルドが通らない?

ビルドが通りません。
「calcCostOfBuildはoverrideすべき相手がみつかりません」「calcCostOfRemoveは(ry」
という意味のエラーになりました。

なのでその箇所を /* */ してビルドとおしたのが今公開してるバイナリになります。
0734名前は開発中のものです。2010/05/11(火) 01:33:03ID:YkDwEd6N
>>733
すいません、書き方悪かったです。
バージョンというのは1.0系なのか、2.0系なのか、ALPHA系なのかという意味です。
ビルドが通らないのですね。

とりあえずtrunkの下のソースを見たところ
TrainGarageContributionImpl<-SpecialRailContribution<-LineContribution
<-Contribution
のような継承の流れなのでAbstractControllerImplは継承してないかと。
もうそろそろおねむの時間なのでこれ以上の調査は今日は無理です〜
0735riorio ◆rio2xMQlrQ 2010/05/11(火) 01:43:26ID:2IjeXIXA
>>734
あぁー、重ねてもうしわけないです。
同時公開したバイナリがβ2.1系なことからβ2.1系の話なのは自明だと思い込んでました。

>TrainGarageContributionImpl<-SpecialRailContribution<-LineContribution
><-Contribution
>のような継承の流れなので

そうなんですよねー
じゃあ、コントローラ(GUI・ダイアログ)はどこから継承してきてるの??というのが
分からないのです。
動作的にも、またビルド時のエラーメッセージからも、コントローラとしては
AbstractLineControllerを継承してるはずなんですけど。


これが解決したら、α3.1系に支出関係のアップデートを持ち込みたいと思います。

今夜はβ2.1系で、駅舎建設とホーム建設の費用支出ができました。
駅舎・ホームの撤去には費用0としてますけど、それはさすがにいいですよね。
0736riorio ◆rio2xMQlrQ 2010/05/11(火) 01:52:49ID:2IjeXIXA
>>660でまとめたことの再掲&現状報告

・列車売却益、即1/2〜1年後1/3〜2年後1/4〜の実現。
→実装済
・特殊線路(鉄橋など)の敷設撤去に通常線路と同等のコスト計算と徴収
 コスト計算と支出は実装できてる。ダイアログ表示がデタラメなままなのを要改修
・道路の敷設に、鉄道よりは安いが一定の距離比例コストを計算して「バス」項目から徴収
 →実装済
・今まで「道路プラグイン」として実現されてきた線路敷石=バラストについて、
 一定の距離比例コストを計算して「鉄道」項目から徴収  →実装済
・鉄道アクセサリの建設や建物の建設できちんとコストが発生・徴収されるように
 →実装済
・V2における、列車プラグインのfareや、運行コスト計算は適正かチェック
 テストプレイのフィードバック待ち
・V2における、建物プラグインのpriceは適正かチェック
 テストプレイのフィードバック待ち
・建物プラグインの「人口」(population)に土日を設ける
 →実装済、パラメータの調整はテストプレイのフィードバック待ち
・建物プラグインの「人口」(population)に祝日を設ける
 →実装済、パラメータの調整はテストプレイのフィードバック待ち
・建物プラグインの「人口」(population)のクラスがおかしいの、baseがおかしいのの修正
 モガミさんがExcelにまとめはじめてくれてます
・建物の人口クラスに、これまでのに追加して、学校・ホテル・遊園地・飲み屋を作ろう。
 →実装済、plugin.xml書き換えも完了してPluginSetとして配布中
0737riorio ◆rio2xMQlrQ 2010/05/11(火) 02:01:13ID:2IjeXIXA
あとは実装できてないこといろいろですが、優先度はどうしましょう。
これから先にやって欲しい、というのがあれば言ってもらえればそこから手をつけます。
とくに、乗客下車と子会社とどっち先やる?っていうの。

・今はA4ゆずりで「駅に到着したら乗客全員そこで降りちゃう」けど、これを「一部は降りる
 が残りは乗り続ける」ようにできないか?とか思いついただけ
 それと並行して、ダイヤとして「乗車のみ(乗ってきた客全員とじこめ)」設定もあったら
 欲しい?とか
 >>459 >>482 >>504

・子会社(建物)を意味のある収入計算をどうやるか
 これは私一人では思いつかないのでみなさまからのアイディアを大募集
 現状の「子会社売買」ウィンドウに出てくる数値は、建設価格priceに立地の地価かけた
 程度の超簡易なもの。収入の大小はあるが絶対赤字にならない。

・サッカースタジアムと同様に、プロ野球チームをもって試合させて球場収入と試合後の
 観客輸送できるように。画像は既存建物プラグインの球場から拝借
 といっても交流戦とか2リーグ制とか実装できんですよw 対12チームランダム対戦で
 いいですか。

・バス
 欲しいねぇ〜 誰か実装してくれないかな
・貨物列車が意味のある貨物を運輸できるように
 したいねぇ〜 誰か(ry

・α3系統のV2対応
 →β2.1.0.5相当のは公開済
0738名前は開発中のものです。2010/05/11(火) 02:32:14ID:Co6U9QLR
なんか最新単体だけでは起動しなくね?
前のバージョンに上書きしたら動いたけど
0739riorio ◆rio2xMQlrQ 2010/05/11(火) 02:49:24ID:2IjeXIXA
β2.1.0.6は問題なくて、動かないのはα3.1.0.2のことですよね。
うげっ、本当に動かない。

なんだろう……
前バージョンに上書きしたら動いたんですか?
あっれーー
調査します。
ごめんなさい。
0740名前は開発中のものです。2010/05/11(火) 03:39:23ID:Co6U9QLR
うん、リリース毎に落としてるわけではないんで
手元にzip残ってた3018を全展開して、そこに3102のファイル全部上書きって形で動いた
(どっちも、追加プラグイン等はなしの状態)
0741riorio ◆rio2xMQlrQ 2010/05/11(火) 03:43:22ID:2IjeXIXA
なんか、ウチでもよく分からなくて。
手元でもアーカイブは動かなかったけど、リビルドしたら動いて、あれーーってかんじで。
とりあえず今あげなおしたものは動くと思うのですが。

あと、ソースのビルドができないって言ってた方も、今はできると思います。
0742riorio ◆rio2xMQlrQ 2010/05/11(火) 13:45:09ID:2IjeXIXA
ちょっと改造してたら、セーブデータ互換性に問題をはらんだバージョンができてしまったので、
どう修正したらセーブデータを互換性維持を取り戻せるかご教授願います。
http://u4.getuploader.com/freetrain/download/69/FreeTrainEXAv2016ALPHA.zip
PASS: ALPHA

β2.1系統なんですけど。
「【売上レポート】見てるとき、「今日」とか「今月」とか、最後の最後どうなったんだよーー」
と分からないことが多くてイライラしたので。
「昨日」「昨月」「昨年」をタブにつけたしました。
いつでもゆっくり、1日の結末・1ヶ月の結末を確認できるようになりました。

が、新規ゲーム開始では問題ないものの、既存セーブデータをロードするとエラーに
なって異常停止してしまいます。
accountingの「昨日」「昨月」「昨年」のインスタンスが作られてなく、「昨日」「昨月」「昨年」
にアクセスしようとしたときにエラーになるものです。
なので、エラーを未然にnullかなにかで判定してなければnewする、というような感じで
対策できないかと思うのですが、どこでさせたらいいのか、またそれでいいのか、という
のが分かりません。

あと、こういうときって既存セーブデータをロードしても「昨日」「昨月」「昨年」のインスタンス
は0フィルで用意されないっけ??ていうのも疑問点ではあったり。

アーカイブ同梱のaccountingフォルダに入ってるのが、core\world\accounting以下の
ソースです。
0743名前は開発中のものです。2010/05/11(火) 14:30:36ID:Iq88B496
ごくり…
0744蒼剣☆RUSH2010/05/11(火) 17:35:27ID:YkDwEd6N
>>742
新しいオブジェクトを追加したけど、データをロードするとそのオブジェクトが生成されず
参照した時に例外が発生するということでしょうか?

MSDNの「カスタムのシリアル化」というところにデシリアライズした時にオブジェクトを初期化
するために呼び出すメソッドが書かれています。
OnDeserializedAttributeという属性をメソッドに付与することでデシリアライズした後に.NETから
呼び出されるようになります。

[OnDeserialized()]
private void OnDeserializedMethod(StreamingContext context)
{
  //ここで追加されたオブジェクトを生成する
}

メソッド名は何でもいいですが、パラメータはこのまま書く必要があります。
ただ、このパラメータは使う必要はありません。
このメソッドを新しいメンバが追加されたクラス内に書いておけば、後は.Netがデシリアライズした
後に勝手に呼び出してくれます。
0745蒼剣☆RUSH2010/05/11(火) 18:07:40ID:YkDwEd6N
ちょっと古い件ですけど
>>703の名前空間について。
MSDN呼んでたり、IDE上で確認しましたが名前空間の性質として以下のようですね。

例えばこの前のAbstractRoadContributionImpl.csのAbstractRoadContributionImplですが
これはfreetrain.contributions.roadという空間に属しています。
こいつの場合は
freetrain.contributionsに属している空間はfreetrain.contributionsを付けずにrail.RailAccessoryContribution
とかland.Bulldozerとかで参照できる。(freetrain.contributions.roadから見ると兄弟にあたる)
更にその親であるfreetrain.contributionsの兄弟であるworldやframeworkは
world.accounting.AccountGenreやframework.plugin.PluginManagerというように参照できる。
この両者の違いは、
・自空間と兄弟の場合は兄弟の空間名から書き始めることができる
・自分の親の兄弟の場合はその兄弟の空間名から書き始めないと駄目
ということです。(すっげぇややこしいですが)

で、この前のAbstractRoadContributionImpl.csのAbstractRoadContributionImplの場合は属している
空間がfreetrain.contributions.roadなので、直接親空間の兄弟の子であるaccountingは参照できず、
その親であるworldから書き始める必要があります。
で、SingleRailRoad.csのSingleRailRoadの場合は属している空間がfreetrain.world.railなので兄弟で
あるaccountingは直接accountingから書き始めることができるということです。
かなーり、ややこしいですが。
そのため、AbstractRoadContributionImplからAccountGenreを参照するためには
・world.accounting.AccountGenreと書く
・using freetrain.world.accounting;を先頭に追加する
のどちらかということです。

長文すまん。
0746蒼剣☆RUSH2010/05/11(火) 18:40:55ID:YkDwEd6N
>>744
あー、今見直したらちょっと問題があるか。
というのはとりあえず今のバージョンでロードすると新規に追加したオブジェクトが生成されて
問題が発生しないようになる。
今のバージョンでセーブされたデータをロードすると既に生成されてシリアライズ化されている
ため、新規に追加したオブジェクトもちゃんとロードされた状態になる。
しかしOnDeserializedMethodメソッドでオブジェクトを生成しようとするので、既存のオブジェクト
が消去されて新しくオブジェクトが生成されてしまう。

解決作としては
・新規追加オブジェクトを生成する前に、そのオブジェクトが存在するか確認する
 ない場合は生成、ある場合は何もしない
 チェックは
 classname aaa = obj as classname
 とas演算子で別オブジェクトに代入して、aaaがnullであれば生成されていない、null以外なら
 既に存在すると判断
・そもそも保存する必要のないオブジェクトであれば[NonSerialized()] を付与して保存されない
 ようにする
0747riorio ◆rio2xMQlrQ 2010/05/11(火) 19:44:44ID:2IjeXIXA
>>744 >>746
さんくすーー

でも両者あわせて考えると結局現物に即するとどうしたらいいんじゃ?というのが
また分からなくなってしまってます。

>チェックは
> classname aaa = obj as classname
> とas演算子で別オブジェクトに代入して、aaaがnullであれば生成されていない、null以外なら
> 既に存在すると判断

この考え方は理解できるのですが。
これをif文で判定した時の新たに生成するのはnewになるのかな?
744に書いてもらったOnDeserializedAttributeは使えませんよね。

クラスを生成してるのがTransactionHistory.cs内で、
参照しててエラー起こしてるのがAccountSummaryWindow.cs内なので、
判定するとしたらAccountSummaryWindow.csで判定することになるのですけど
追加生成をAccountSummaryWindow.cs内でやって大丈夫?
なんかすっきりしない……
0748蒼剣☆RUSH2010/05/11(火) 20:02:54ID:YkDwEd6N
クラスを生成してるのがTransactionHistory.cs内であれば、TransactionHistory.csに
OnDeserializedメソッドを追加です。
参照することは関係ないです。
0749riorio ◆rio2xMQlrQ 2010/05/11(火) 20:42:04ID:2IjeXIXA
>>748
話が循環してるーー
それだと746な解決策がなってないではないですかー

今回問題になってるのは
public TransactionHistory() {
day = new DayTransactionSummary(this);
month = new MonthTransactionSummary(this);
year = new YearTransactionSummary(this);
yesterday = new YesterdayTransactionSummary(this);
lastmonth = new LastMonthTransactionSummary(this);
lastyear = new LastYearTransactionSummary(this);
}
の部分の、yesterday/lastmonth/lastyearの後ろ3つのはずなんですが。

ソースのケツんとこに
[OnDeserialized()]
private void OnDeserializedMethod(StreamingContext context)
{
public TransactionHistory() {
yesterday = new YesterdayTransactionSummary(this);
lastmonth = new LastMonthTransactionSummary(this);
lastyear = new LastYearTransactionSummary(this);
}

}
だと「}がない」とか「;がない」とか怒られてビルドできん???なんか根本的に間違えてる
可能性大(自分が)。
そこんとこ見たいのに、ぐぐってMSDN読んでみても「// Code not shown.」『いやそこが
見たいんじゃボケェ』なの自分だけ?
0750蒼剣☆RUSH2010/05/11(火) 21:13:59ID:YkDwEd6N
書き方が全然違う。
正しくはこう。

public class TransactionHistory {
public TransactionHistory() { //コンストラクタ
yesterday = new YesterdayTransactionSummary(this);
lastmonth = new LastMonthTransactionSummary(this);
lastyear = new LastYearTransactionSummary(this);
}

[OnDeserialized()]
private void OnDeserializedMethod(StreamingContext context) { // デシリアライズ時に呼ばれる
yesterday = new YesterdayTransactionSummary(this);
lastmonth = new LastMonthTransactionSummary(this);
lastyear = new LastYearTransactionSummary(this);
}
}

これが基本の書き方ですね。
0751名前は開発中のものです。2010/05/11(火) 21:24:35ID:aqFTq1CD
どうでもいいけど属性に()付けるのダサい
厳密に書きたいんだったら[OnDeserializedAttribute()]と書くべきだし中途半端
0752名前は開発中のものです。2010/05/11(火) 21:26:17ID:YkDwEd6N
すまん、今までのコテは忘れてくれwwww
外し忘れていたw

で、>>746の問題解決のためにはごめん、>>746は冗長すぎたので簡潔にすると
[OnDeserialized()]
private void OnDeserializedMethod(StreamingContext context) { // デシリアライズ時に呼ばれる
if (yesterday == null) {
yesterday = new YesterdayTransactionSummary(this);
}

if (lastmonth == null) {
lastmonth = new LastMonthTransactionSummary(this);
}

if (lastyear == null) {
lastyear = new LastYearTransactionSummary(this);
}
}
という書き方になる。
つまりnullチェックしてnullなら生成ということ。
0753名前は開発中のものです。2010/05/11(火) 21:28:27ID:YkDwEd6N
>>751
なあ、横やり入れて来るのならおまえがriorio氏に教えろよ。
知っているのに教えもしないやつは黙ってろよな。
riorio氏、今後は>>751が教えてくれるそうなので自分は引っ込んでおきます
0754riorio ◆rio2xMQlrQ 2010/05/11(火) 21:35:16ID:2IjeXIXA
わぁ、751のばかばかばか〜
せっかく教えてくれてたのに。

で、今まで変数増やしたりしても今日みたいにハマることなかったのになんでだろーって
不思議だったんだけど。
変数がreadonlyだと旧セーブデータのデシリアライズのとき初期化されないとか、ある?

public TransactionHistory()の
day; Month; year; yesterday ; lastmonth; lastyear;
これ全部readonlyついてた。

今 OnDeserializedに>>750な記法で書いたら、「読み取り専用なものはOnDeserialized
できません」て怒られて。readonly外したらビルド通ったところでこれから動作確認なん
だけども。
0755riorio ◆rio2xMQlrQ 2010/05/11(火) 21:44:13ID:2IjeXIXA
ためしてみたけど、readonlyだから、ということはないみたいだなぁ。
なんだろう??
Avになってからこっち、セーブデータの互換性で悩んだことなかったんだけど……
謎だぁ。

で。
>>750な記法のままで、>>752のようなif分null判定を入れなくても、
新セーブデータを読み込んだときに既にデシリアライズ成功して変数あったら
それが上書き初期化されるということはなくセーブした数値がちゃんと読めたので
if分判定不要に思えたのだが。
間違ってないよね?
0756名前は開発中のものです。2010/05/11(火) 21:53:15ID:aqFTq1CD
OnDeserializedはシリアライズ後に呼ばれるんだから
チェックしないと全部上書き初期化されるよ
07577562010/05/11(火) 21:54:22ID:aqFTq1CD
デシリアライズ後の間違い
0758riorio ◆rio2xMQlrQ 2010/05/11(火) 22:28:09ID:2IjeXIXA
>>756-757
理屈としてそうなのは分かるのですが、実際に変数追加後から新規ゲーム開始して
一ヶ月ぐらい経過してセーブしたデータを。

750記法のif文判定してない本体でロードしたとき。
もしyesterday/lastmonth/lastyearが強制初期化されてしまってたら「昨日」の収支は
0,0,0になってしまっているはずなのですが。
実際にはロード直後に売上レポート開けて「昨日」を見ると、ちゃんとセーブした時点の
昨日のデータが入ってるんですよ。
だから初期化されてないんです。

さて。
問題解決したことだし。日計は1ヶ月、月計は1年分ぐらいは保存するようにするか。
それをどう表示するかが問題だが。
タブ増やすわけにいかないし、「過去ログ表示」ウィンドウでも新たに作るかな。
0759名前は開発中のものです。2010/05/11(火) 23:26:54ID:vGFSEqNX
>>720>>727
仕事が忙しくプログラムに触る暇は無いため、今までも長い事プラグイン製作や仕様の議論という形で参加してきました。
これからもそのスタイルでいきたいと思っています。
ですので、これからもFreeTrainを良くする為の提案は続けます。
私の提案は、開発者のやる気を殺ぐためのものでは無いですよ。
結局は、彼が意地を張っているのです。私はそんなつもりは無いのにね。

>>728
「解決済み」と言うには早いんじゃないでしょうか。
私の提案と現状とを比較した上で、どうしても出来ない理由を示して頂ければいいのです。
あなたの愚痴を聞いても、正直、何の参考にもなりませんよ。

以下チラシの裏

結局複数IDでスレを荒らしていた件についてはスルーなのかな?
面の皮の厚さだけは一級品ですね。
これを見て見ぬフリをするどころか全力フォローする諸氏にも軽く失望。
こんなんでいいの?このスレ。
0760riorio ◆rio2xMQlrQ 2010/05/11(火) 23:48:10ID:2IjeXIXA
>>759にはしたらばで回答しました。


以下抜粋:

>私の提案は、開発者のやる気を殺ぐためのものでは無いですよ。

それはあんたが決めることじゃねー

「開発者がやる気を殺がれているという『事実』『現実』」から目をそむけるなアホウ。
0761riorio ◆rio2xMQlrQ 2010/05/12(水) 00:21:12ID:n0b79aSr
FreeTrain EX Av β2.1.0.7と、V2 Additional Plugin Set 20100511をあわせてリリース。


【2.1.0.6 -> 2.1.0.7 変更箇所】
・「売上レポート」に、「昨日」「昨月」「昨年」を追加
・自動発展による畑などの「地表」ボクセル造成で経費徴収されていたものを修正

独自の実行DLLを持ってる「地表」プラグインのチェックが漏れている可能性が有りますので
、もし自動発展で「これ」ができたときに経費を徴収されてしまった、ということがあればバグ
レポート等でお知らせください。


2010年05月11日版 version 2.0.0.7
・price,operationCostがおかしい駅プラグイン修正

2010年05月10日版 version 2.0.0.6
・priceがおかしい一部プラグイン修正

2010年05月09日版 version 2.0.0.5 
・TOMYさんの建物プラグイン価格調整
・学校の建物プラグインにSchoolPopulation適用
・遊園地や景勝地の建物プラグインにLeisureLandPopulation適用
・ホテルや旅館の建物プラグインにLeisureHotelPopulationあるいはBusinessInnPopulation適用
(要本体FreeTrain EX Av β2.1.0.5)
0762riorio ◆rio2xMQlrQ 2010/05/12(水) 00:28:45ID:n0b79aSr
本日のリリースは、>>744さんのアドバイスがなかったら実現できませんでした。
ありがとうございました。

Plugin Setは、ウチでマップを自動発展させて様子を伺い、おかしいなと思ったもの
があったらちまちま直しています。
もし、最新版でもまだpriceの設定がおかしいと気づいたものがあれば、お知らせ
くださいね。


さてさて。
>日計は1ヶ月、月計は1年分ぐらいは保存するようにするか。
というのにとりかかってみたのですが。
早速いきづまってます <はえぇよw

β2系でソースコミットしてあるんですけど(trunk下)。
core\world\accounting\TransactionHistory.cs
で、とりあえずRecorderクラス内に_dayAgoTotal = new long[32]; _monthAgoTotal = new long[13];
と配列でもって、毎日
for( int i=0; i<31; i++)
_dayAgoTotal[ i+1 ] = _dayAgoTotal[ i ];
ってやってるんですけど(配列の中身いっこずつずらせ!って命令あったりする?C#に)

ええとこれですね、変数もRecorderクラスもprivateなものなんですよね。
で、カプセル化されてて、もともとあった_dayTotalとかは、いったん
internal long dayTotal { get { return _dayTotal; } }
としたあと、これをさらに
private readonly Recorder sales = new Recorder();
private readonly Recorder expenditures = new Recorder();
とここでもまだprivateで、
0763riorio ◆rio2xMQlrQ 2010/05/12(水) 00:32:55ID:n0b79aSr
private class DayTransactionSummary : TransactionSummary {
private readonly TransactionHistory history;

internal DayTransactionSummary( TransactionHistory _history ) {
this.history = _history;
}

public override long sales { get { return history.sales.dayTotal; } }
public override long expenditures { get { return history.expenditures.dayTotal; } }
}

と、それぞれの項目いっこずつになんとかTransactionSummaryってクラスを作った上で、

public TransactionHistory() {
day = new DayTransactionSummary(this);
month = new MonthTransactionSummary(this);
year = new YearTransactionSummary(this);
yesterday = new YesterdayTransactionSummary(this);
lastmonth = new LastMonthTransactionSummary(this);
lastyear = new LastYearTransactionSummary(this);
}

と、ここでやっと外に出るんです。
えーーーと、これ、_dayAgoTotal[]; _monthAgoTotal[]; を外に連れ出すのってどぉーすん
ですか、こういうとき。
無理ぽ???
外から、TrainsactionHistory.dayago[5]とかで読み出せるといいなーってかんじなんですけど。
0764名前は開発中のものです。2010/05/12(水) 01:07:12ID:T2X/TUjP
TrainsactionHistory.dayago(5)ではあかんですの?
■ このスレッドは過去ログ倉庫に格納されています