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

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

750 :exlink.gif蒼剣☆RUSH  2010/05/11(火) 21:13:59 ID: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);
}
}

これが基本の書き方ですね。

751 :exlink.gif名前は開発中のものです。  2010/05/11(火) 21:24:35 ID:aqFTq1CD  
どうでもいいけど属性に()付けるのダサい
厳密に書きたいんだったら[OnDeserializedAttribute()]と書くべきだし中途半端

752 :exlink.gif名前は開発中のものです。  2010/05/11(火) 21:26:17 ID:YkDwEd6N  
すまん、今までのコテは忘れてくれwwww
外し忘れていたw

で、exlink.gif>>746の問題解決のためにはごめん、exlink.gif>>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なら生成ということ。

753 :exlink.gif名前は開発中のものです。  2010/05/11(火) 21:28:27 ID:YkDwEd6N  
exlink.gif>>751
なあ、横やり入れて来るのならおまえがriorio氏に教えろよ。
知っているのに教えもしないやつは黙ってろよな。
riorio氏、今後はexlink.gif>>751が教えてくれるそうなので自分は引っ込んでおきます

754 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/11(火) 21:35:16 ID:2IjeXIXA  
わぁ、751のばかばかばか〜
せっかく教えてくれてたのに。

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

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

今 OnDeserializedにexlink.gif>>750な記法で書いたら、「読み取り専用なものはOnDeserialized
できません」て怒られて。readonly外したらビルド通ったところでこれから動作確認なん
だけども。

755 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/11(火) 21:44:13 ID:2IjeXIXA  
ためしてみたけど、readonlyだから、ということはないみたいだなぁ。
なんだろう??
Avになってからこっち、セーブデータの互換性で悩んだことなかったんだけど……
謎だぁ。

で。
exlink.gif>>750な記法のままで、exlink.gif>>752のようなif分null判定を入れなくても、
新セーブデータを読み込んだときに既にデシリアライズ成功して変数あったら
それが上書き初期化されるということはなくセーブした数値がちゃんと読めたので
if分判定不要に思えたのだが。
間違ってないよね?

756 :exlink.gif名前は開発中のものです。  2010/05/11(火) 21:53:15 ID:aqFTq1CD  
OnDeserializedはシリアライズ後に呼ばれるんだから
チェックしないと全部上書き初期化されるよ

757 :exlink.gif756  2010/05/11(火) 21:54:22 ID:aqFTq1CD  
デシリアライズ後の間違い

758 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/11(火) 22:28:09 ID:2IjeXIXA  
exlink.gif>>756-757
理屈としてそうなのは分かるのですが、実際に変数追加後から新規ゲーム開始して
一ヶ月ぐらい経過してセーブしたデータを。

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

さて。
問題解決したことだし。日計は1ヶ月、月計は1年分ぐらいは保存するようにするか。
それをどう表示するかが問題だが。
タブ増やすわけにいかないし、「過去ログ表示」ウィンドウでも新たに作るかな。

759 :exlink.gif名前は開発中のものです。  2010/05/11(火) 23:26:54 ID:vGFSEqNX  
exlink.gif>>720exlink.gif>>727
仕事が忙しくプログラムに触る暇は無いため、今までも長い事プラグイン製作や仕様の議論という形で参加してきました。
これからもそのスタイルでいきたいと思っています。
ですので、これからもFreeTrainを良くする為の提案は続けます。
私の提案は、開発者のやる気を殺ぐためのものでは無いですよ。
結局は、彼が意地を張っているのです。私はそんなつもりは無いのにね。

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

以下チラシの裏

結局複数IDでスレを荒らしていた件についてはスルーなのかな?
面の皮の厚さだけは一級品ですね。
これを見て見ぬフリをするどころか全力フォローする諸氏にも軽く失望。
こんなんでいいの?このスレ。

760 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/11(火) 23:48:10 ID:2IjeXIXA  
exlink.gif>>759にはしたらばで回答しました。


以下抜粋:

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

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

「開発者がやる気を殺がれているという『事実』『現実』」から目をそむけるなアホウ。

761 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/12(水) 00:21:12 ID: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)

762 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/12(水) 00:28:45 ID:n0b79aSr  
本日のリリースは、exlink.gif>>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で、

763 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/12(水) 00:32:55 ID: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]とかで読み出せるといいなーってかんじなんですけど。

764 :exlink.gif名前は開発中のものです。  2010/05/12(水) 01:07:12 ID:T2X/TUjP  
TrainsactionHistory.dayago(5)ではあかんですの?

765 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/12(水) 01:54:50 ID:n0b79aSr  
exlink.gif>>764
おっけーですよ

むむむ、ということは、だ。
今書き込みながら考えてるので、思考の過程だだもれなのはゆるしてw
んー、でも月と日と変数型では見分けつかないから、外に見せるクラスは日と月と
べつのものを用意しないとだめかな。
クラス名考えるのめんどくさー
というかTransactionHistoryという既存クラス名がめっちゃよすぎ!これ以上これを
表すのに良い名前はないというかんじで、それよりいい名前がうかんでこないww

TrainsactionHistory.dayago(5)ではなくTrainsactionDaysHistory.day(5)とか
TrainsactionMonthsHistory.month(8)とかならアリかな? 
っていうか、あれ?そうするならTrainsactionDaysHistory(5)でよくて、.dayいらなくね?

public TransactionDaysHistory( int num ) {
で return TransactionSummary( num );
} ってこれじゃあ意味ねーー

public TransactionDaysHistory( int num, TransactionDaysHistory _history ) {
this.daysHistory = _history;
}とかになるんかな
public override long sales { get { return あれ?これじゃだめだな。

んーーー。なんか考えがまとまりません。

766 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/12(水) 02:08:20 ID:n0b79aSr  
あああ、聞こうと思ってたこと書き忘れてた。
で、30日or12ヶ月履歴貯めたら、ただ数字並べるよりグラフ表示した方が分かりやすいし、
既に右クリックメニューにメニューだけ「グラフ表示」っていうのがあるので、これ選んだ時に
することを実装したらちょうどいいかなって思ってるのだけど。
そのグラフ表示よ、問題は。

ぐぐったら、www110.kir.jp/csharp/index.htmlってとこに「著作権ありません」な各種グラフ
描画ソースコードが掲示されているので、それをお借りしてくるというのが一案。

ZedGraphControlっていうライブラリが綺麗なグラフを描けるようなので、外部ライブラリ
に頼ってみるというのが一案。
ZedGraphはLGPLなのでAvと同梱配布しても問題ない。

どっちがいいでしょ?

767 :名前は開発中のものです。  2010/05/12(水) 07:39:28 ID:nmXysG2o  
> 620 :riorio ◆rio2xMQlrQ :2010/05/07(金) 01:28:15 ID:naC75q3v
>
> 私から見ると、ID:DQiiOCVM がどこの誰なのかはコテ・トリつけてるとまったく
> 同様に丸わかりなんですよ。
> プラグイン公開するときにはauthorにコテ入れてるのに、スレに書き込むときには
> ガンとしてコテ入れないことにはなにかしらうしろめたいところがあるんだろうから
> あえてそこをこっちからバラすいやがらせするのはやめとこうと思って名指ししない
> だけで。
> メールでもしてもらえればこっそり教えますよ。

768 :exlink.gifモガミ ◆1zbgmm1SzU  2010/05/12(水) 18:26:52 ID:chB2CzS7  
exlink.gif>>766

2つの違いがよくわからないのですが、
「版権的にフリーで使い勝手のがいいもの」と「綺麗なグラフをかける」
程度の認識でいいんですかね。
たとえばどちらのほうがCPUに負担をかけないとか、
どちらのほうが既存のシステムに影響を与えないとか・・・

769 :exlink.gif名前は開発中のものです。  2010/05/12(水) 20:00:13 ID:S9Fs0SUu  
株式市場プラグインに株価のグラフみたいなやつあるけど、あれは使えないの?

770 :exlink.gif名前は開発中のものです。  2010/05/12(水) 22:45:44 ID:RyHnxNbI  
exlink.gif>>768
肝心なのは、一方は扱いが「ソースを示すので勝手に組み込んでください」ってのと、
他方「外部ライブラリライセンスがLGPL」って所じゃないのか?

組みやすさは説明書を見ないとわからんが、どうせ表示するグラフは横軸が時間で
縦軸が金額の標準的なグラフだろうから、扱いとしては前者をカスタマイズするほうが
楽な気はする。

771 :exlink.gif名前は開発中のものです。  2010/05/12(水) 22:46:58 ID:nnjxCBL8  
荒らし云々の話だが
開発者が信用されて無いから、みんな文句の一つも言えないんだね。

「もしやる気を無くしたらどうするの」という諸氏の懸念に、それが如実に表れている。

そんな懸念を知ってか知らずか、みずから便乗して
>「開発者がやる気を殺がれているという『事実』『現実』」から目をそむけるなアホウ。
とかいう甘えた発言をするアホウ。(実際のところやる気満々だろアホウ)

荒らしがバレても平気なriorio氏なら、他の住人全員に総スカン食らっても大丈夫だと私は思うけどね。
ただ、上のような発言で、他者が面と向かって反論し辛い空気を作るのは開発者としていかがなものか。

772 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/13(木) 00:31:16 ID:KpTzcKDI  
exlink.gif>>769
ああーー ありますね。
今見てみたら、ソースはChartControl.csがそれでした。

ざっくり眺めたところ、がしがし全部自力で描画してます。
www110.kir.jp/csharp/を参考にしたコードかもしれませんし、c477さん完全オリジナル
かもしれません。
株式に特化した折れ線グラフなのでそのまま流用は無理で、メソッドとか、やり方を
参考にさせてもらいつつという形になるかと思います。
できあがるものはwww110.kir.jp/csharp/をこぴぺしてくるのと同じものになるでしょう。

exlink.gif>>770
>扱いとしては前者をカスタマイズするほうが楽な気はする。

え、そう思う?
そっかーー
自分は、ZedGraph使った方が楽に手抜きしつつ綺麗なものできるかと思ってたがw

exlink.gif>>768
>たとえばどちらのほうがCPUに負担をかけないとか、

CPUに負担かけないのは自前で描画した方だと思います。
ただ現時点では、グラフをリアルタイム時間進行描画するつもりはありません。
A4,A7あたりの売上グラフは確かにリアルタイムで「今日」描画できて、するする線が
のびるの楽しかったりしたけど。
そこまでこなすのは無理だと思ってる。
なので、時間止めて、昨日までor先月までを描いて止める、だけにするつもりだから
CPU負担は考えなくていいのではないかな。

>どちらのほうが既存のシステムに影響を与えないとか・・・

それはどちらも条件同じだと思います。

773 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/13(木) 06:44:16 ID:KpTzcKDI  
accountingのTransactionHistory.csを、30日・12ヶ月の履歴を外から参照できる
ようにしたくていじってみたが、どうにもこうにも自分では。

http://u4.getuploader.com/freetrain/download/72/TransactionHistory.cs

できたところまで、がこれ。
「;が必要」とか怒られまくってビルドできません。

774 :exlink.gif名前は開発中のものです。  2010/05/13(木) 13:14:24 ID:LsMV4anF  
私女だけど、riorioさんは余計な一言さえ言わなければ抱かれたい男ランキングNo.1だと思う。

じゅんじゅわ〜

775 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/13(木) 17:54:53 ID:KpTzcKDI  
exlink.gif>>773はwikiのほうにアドバイスいただいたので解決しました。

次は表示部を作らなきゃ、というところでまたハマってます。
これはどーーーしたもんかなぁ。

776 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/13(木) 22:47:13 ID:KpTzcKDI  
exlink.gif>>736-737の進行表のその後

>・「売上レポート」を、日計過去30日間&月計過去12ヶ月間とる
 「とる」だけはできてる、と、思う。
 まだ「見れる」ように作れてないので、本当にちゃんととれてるか不安w
 とりあえず今、数字で30日間&12ヶ月間をずらっと見せるだけやろうとしてる。
 が、結構難航。いつできるかわかんない。
 数字並べてみて、ちゃんと「とる」ことができてることが確認できたら、グラフ描画に
 とりかかろうかとも思うけど、正直グラフはあんまし乗り気じゃない。

>・今はA4ゆずりで「駅に到着したら乗客全員そこで降りちゃう」けど、これを「一部は降りる
> が残りは乗り続ける」ようにできないか?とか思いついただけ
> それと並行して、ダイヤとして「乗車のみ(乗ってきた客全員とじこめ)」設定もあったら
> 欲しい?とか
> exlink.gif>>459exlink.gif>>482exlink.gif>>504
 今一番やりたいのはこれ。グラフ描画あとまわしにしてこれやりたいぐらい。
 なのでご意見・ご提案あればお早めにおねがいしますね。

>・子会社(建物)を意味のある収入計算をどうやるか
> これは私一人では思いつかないのでみなさまからのアイディアを大募集
> 現状の「子会社売買」ウィンドウに出てくる数値は、建設価格priceに立地の地価かけた
> 程度の超簡易なもの。収入の大小はあるが絶対赤字にならない。
 これは結局、地価を使うしかないかと考えてる。駅の降車客は地価としてじわじわっと
 周囲に広がるので。今の売買ウィンドウよりもうちょっと凝った演算して、地価が低い=
 降車客のまばらな土地に高額な物件建てたら赤字になるようにはしたい。

>・サッカースタジアムと同様に、プロ野球チームをもって試合させて球場収入と試合後の
> 観客輸送できるように。画像は既存建物プラグインの球場から拝借
火水木同一カード3連戦〜金土日同一カード3連戦、土日はデーゲームという対戦カード
作成アルゴリズムに悩んでいる。そこさえできれば、あとはサッカーの流用でちょちょい
かと思うのだけどなー あとオフシーズンが10〜3月で、3月最後の火曜にシーズンインと
したいのだが3月最後の火曜をどうやって探す?っていうのも。

777 :exlink.gif名前は開発中のものです。  2010/05/13(木) 22:51:37 ID:fW05zUI/  
ワールドカップイヤーで開催国になったら収入が増えるイベントもよろしく

778 :exlink.gif名前は開発中のものです。  2010/05/13(木) 23:24:49 ID:4iTg+dTb  
A駅からB駅経由C駅まで乗った乗客の運賃は
 1) distance(A→B) + distance(B→C)
 2) distance(A→C)
のどっちに比例だろう?

779 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 01:06:15 ID:qTKfnyO5  
exlink.gif>>777
1プレイ中に1回起こるかどうかのイベント実装してうれしいかなあ…(苦笑)
複数人から同種の要望がもうちょっと具体性をもってあがってきたら考慮します。

exlink.gif>>778
2番ですね。現状。
で、これは「一部は降りるが残りは乗り続ける」を実装したとしても変えないつもりです。
運賃徴収計算は客の降車時に行っているので、客の降車が起きない、既存の「駅通過」
ダイヤ設定で特急や快速が通過していった駅については計算が起こらないからです。

マップ全体が「大都市近郊区間」に含まれてるとでも脳内設定しておいていただければ。

780 :exlink.gif名前は開発中のものです。  2010/05/14(金) 01:46:23 ID:IOj7xBlN  
exlink.gif>>776
とりあえず3月は1日の曜日と最終火曜日の関係は
日 31、 月 30、火 29、水 28、木 27、金 26、土 25
なので、3月1日の曜日が求まれば最終火曜日は簡単に求まる。
3月1日の曜日はdate型ならそれに関する関数はあるような、C#は知らんが。

カードについては最初に組み合わせを並べてそれをシャッフルすると
対戦カードは特定のチームに偏ることなく組み合わせが組める。
(某ぷよぷよのぷよが落ちてくる順番もこれで決まっているらしい。)

実際のプロ野球ではもっと色々いじっているようだけど。

781 :exlink.gif名前は開発中のものです。  2010/05/14(金) 03:00:02 ID:cQzTGp/6  
球場はビジター遠征中とかオフシーズンだとイベント会場になったりするんだけどね

782 :exlink.gifOPB ◆gJsqBz3wKU  2010/05/14(金) 07:59:23 ID:Te7AqikM  
exlink.gif>>776

>>・子会社(建物)を意味のある収入計算をどうやるか
>> 現状の「子会社売買」ウィンドウに出てくる数値は、建設価格priceに立地の地価かけた
>> 程度の超簡易なもの。収入の大小はあるが絶対赤字にならない。

現状、地価0の物件の場合、売上に対しての利益と経費がまったく同額、つまり50%になってますね。

いろいろと試算をしたいので、お手数ですけど今実装されている収入計算の数式を教えて頂けますか。

>  これは結局、地価を使うしかないかと考えてる。駅の降車客は地価としてじわじわっと
>  周囲に広がるので。今の売買ウィンドウよりもうちょっと凝った演算して、地価が低い=
>  降車客のまばらな土地に高額な物件建てたら赤字になるようにはしたい。

地価からさらに子会社単体でのその日の人口を計算して、それに客単価を設定をかけたものを
売り上げにする方法もありますね。
客単価は建設価格priceから割り出すか、別途プラグインに記述するか、
いずれかで。

そうすると、例えば遊園地はLeisureLandPopulationに沿って人口が変わるので、
連動して曜日によって売り上げが違ったりといったことが表現できる気が。

もっとも、子会社によっては毎日売り上げが上がる性質のものとは限らないですね。
住宅や貸店舗などのように、家賃やテナント料が月に一度計上されるものもありますしね。
これは人口関係無しに地価と建設価格priceから割り出した方が自然かも。

テナント扱いであれば、自社物件として市役所を所有したり
公共施設から売上が上がっても説明がつきますね。

783 :exlink.gif名前は開発中のものです。  2010/05/14(金) 08:59:16 ID:2C3EW+C3  
乗客の一部降車しない仕様にした場合の疑問。
単純な2駅往復の場合どうするの?

一部はそのまま出発元の駅に戻る?
駅で折り返す場合は全員降車?
後者は簡単に出来そうだが、駅では折り返しても
その後は別の駅に向かう場合はあるよね?
そういう場合は全員降車もいたしかたなし、とするならばいいのだけど。


784 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 18:22:02 ID:qTKfnyO5  
exlink.gif>>783
>単純な2駅往復の場合どうするの?

A列車式ダイヤ設定の簡易設定で「折返」にチェックが入った場合は、
「全員強制下車」にするつもりです。

詳細ダイヤ設定の方にはラジオボタンをいろいろ増やして、
通常停車と「全員強制下車」停車とを作ります。
通常停車+折返発車を組み合わせれば、一部が乗ったまま折り返させることもできます。
終点だとか車庫入れだとかのときは「全員強制下車」停車と組み合わせてください。

785 :exlink.gif名前は開発中のものです。  2010/05/14(金) 18:24:12 ID:2C3EW+C3  
exlink.gif>>784
なるほど。了解しました。

786 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 19:09:32 ID:qTKfnyO5  
exlink.gif>>782
>いろいろと試算をしたいので、お手数ですけど今実装されている収入計算の数式を教えて頂けますか。

うーーん。logとってかけたりいろいろやってて複雑なので、なんというか示しづらい。
下手に私が翻訳するより、core\world\subsidiaries\Parameters.csを直接見てもらった
ほうが速いと思う。
単なる数式のならびなので、C#知らなくても読めるんじゃないかな。
CとかDとかは、一番最後にC=0.01、D=0と定数定義されてる。
「読めませんー」ということなら翻訳します。

>地価からさらに子会社単体でのその日の人口を計算して、それに客単価を設定をかけたものを
>売り上げにする方法もありますね。

うん、まぁそうなんだけど。
毎日毎日で子会社収支を取るのは煩雑なんで、そこまでする必要ないんじゃないかなーと
思ってるのですが。
なんで曜日ごとにとかもなし。
すべての建物一括で、毎月1日に前月分の収支計算して収入支出、じゃダメかな。
29日に建てた建物は2日しか存在してなくても一ヶ月分の収入になっちゃたりするけど
もうそれは誤差ということで。

787 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 20:18:57 ID:qTKfnyO5  
乗客の下車傾向をどうするか。
面倒なので一次関数(直線)にしちゃう。これは決定事項。
あとはその一次関数 y=ax+bのa,bをどうするか。
とりあえず簡単に図示したのが案1,2,3

http://u4.getuploader.com/freetrain/download/73/%E4%B9%97%E8%BB%8A%E7%8E%87%E5%A4%89%E5%8B%95%E6%A1%88%E3%82%B0%E3%83%A9%E3%83%95.PNG

案1は一番単純。距離Bで全員下車する。で全列車共通。
案2は、距離Aまでは誰も降りない、そこからはBに向けて直線的に降りていく。全列車共通。

案3は、案1に列車種別ごとに直線の傾きaを変化させて、通勤列車は短距離Bで降りきっちゃ
い、長距離列車はCまでなかなか降りないというふうにする。

このほか案3と2の合体型で、通勤列車は3のままだが長距離列車は最初Aまでまったく
降りずそこから直線的にCへ降りていくもあるだろう。

開発が一番楽なのは案1ですw
一番大変なのは3及びその変化型。
でもよりよいものを作るためなら手間は惜しみませんよ。

788 :exlink.gif名前は開発中のものです。  2010/05/14(金) 20:26:41 ID:cRuw4M+k  
exp(-distance/amenity)とでもすればおk

789 :exlink.gif名前は開発中のものです。  2010/05/14(金) 20:29:49 ID:cRuw4M+k  
exp(k*(-distance/amenity**3))
くらいにしても良いかもな。

790 :exlink.gif名前は開発中のものです。  2010/05/14(金) 20:49:05 ID:/+g02z02  
えー、駅毎に近隣建築物の集客度みて下車率(or人数)出す(だいたい乗車の逆パターンですな)
ぐらいはするもんかと思ってたわ。

791 :exlink.gif名前は開発中のものです。  2010/05/14(金) 20:56:20 ID:GATFHMtN  
exlink.gif>>790
乗る数以上に降りるのに違和感はわかる。が思うのはexlink.gif>>790氏の勝手
案として「乗車数以下の下車数縛り」はとして出せばいいでしょ?
実現性の問題、負荷他検討すべきだろうけど。

792 :exlink.gif名前は開発中のものです。  2010/05/14(金) 20:56:31 ID:cRuw4M+k  
exlink.gif>>790
駅周辺の需要によって降車人数を見る必要もあるね。
集客力と言うのは難しいから、単純に待ち人数を使っても良いかも。

793 :exlink.gif名前は開発中のものです。  2010/05/14(金) 21:03:54 ID:cRuw4M+k  
http://wwwtb.mlit.go.jp/chubu/kikaku/chikousin/toshin2/toshin2_shiryo5.pdf
これの一番上の図を見ると、鉄道のトリップ距離と利用者密度の曲線が書けそうだが。
riorio氏の案で言えば2に近いが、これは都市内交通だから、トリップの最大距離自体が短い。
トリップ距離が無限に仮定できるなら、自然対数的に減少していっても良いのではないだろうか?

794 :exlink.gif名前は開発中のものです。  2010/05/14(金) 21:05:13 ID:cRuw4M+k  
exlink.gif>>791
>案として「乗車数以下の下車数縛り」はとして出せばいいでしょ?
これでは永遠に乗客が増え続ける。

それくらい考えなきゃだめね。

795 :exlink.gif名前は開発中のものです。  2010/05/14(金) 21:09:37 ID:/+g02z02  
待ち人数だと乗車と大体等価っぽくなるように思えるんだけど、
学校やビジネス街だと朝降車が多くて夕〜夜に乗車が多くなって欲しくね?
負荷的にも乗車待ち数の計算と直観的には大して変わらないように思えるのだが。

796 :exlink.gif名前は開発中のものです。  2010/05/14(金) 21:17:49 ID:GATFHMtN  
exlink.gif>>794
なんで否定なのかな?ま、それはいいや。よくわかってないと見えるし。
で案はexlink.gif>>793って事だとriorioさんの2案でいいのかな?

なら私も同様ですよ。

797 :exlink.gif名前は開発中のものです。  2010/05/14(金) 21:36:42 ID:cRuw4M+k  
exlink.gif>>796
たぶん一番分かってないのは

全列車共通はありえないし、exlink.gif>>793見ると分かるとおり直線的な減少もあり得ない。
riorio氏2案+exlink.gif>>789
min(1,exp(k*((-distance/amenity**3)-amenity*2)))というのはどうだろう。
ある点まで1で、そこから先は自然関数で減少。
「ある点」と「減少の傾き」はamenityで決まる。

798 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 21:43:27 ID:qTKfnyO5  
今の人口クラスは、calcPopulationメソッドで吐き出す人口を時間帯に応じて
変化させながら返すことだけしか実装されてないんだよね。
だからそれそのまま利用することはできない。

まぁ必要とあらば、calcEnteringメソッドとでも名付けましょうか、下車需要を
返すものも追加して、もちろんそれがどのような時間変化するかのクラスごと
実装書き分けて、それ使うようにしてもいいけど。

でもあまりその影響を受けすぎるのもあれだから、gonePassengersの考え方で
arrivedPassengersもカウントして、需要を満たしつつあったらあんまり降りない
とかいうことにすべきなんだろうか?

今は問答無用で次の停車駅で全員降りちゃうわけで。
それにくらべたらあんまり難しいことせずに単調減少でも違いとしていいんじゃねーかと
思ってたりもするのだが。

799 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 21:49:15 ID:qTKfnyO5  
exlink.gif>>797
>見ると分かるとおり直線的な減少もあり得ない。

はい?
http://u4.getuploader.com/freetrain/download/74/%E4%B9%97%E8%BB%8A%E7%8E%87%E5%A4%89%E5%8B%95mlit.PNG

800 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 21:57:27 ID:qTKfnyO5  
あと、amenityは使いません。
1970年ごろだと、中電は新車で長距離列車は旧型客車なんてこともザラだったわけで。

列車ごとに個性的・動的な減少パラメータを持たせたいということであれば、それは
新パラメータを追加する方向で考えようと思います。

801 :exlink.gif名前は開発中のものです。  2010/05/14(金) 22:14:11 ID:cRuw4M+k  
exlink.gif>>799
おい、まさかそのグラフの見方も分からんのか?
そのグラフはトリップ長の分布。そのグラフからexlink.gif>>787の図を書いてみろ。
そのピンクの線の傾きこそ、短距離利用が多く、長距離になるにつれて利用者が減少している事を表しているのだ。

直線的減少はバスや自動車の方だな。

802 :exlink.gif名前は開発中のものです。  2010/05/14(金) 22:25:36 ID:cRuw4M+k  
ただ
・旅客の流入が一切無い
・駅に停車するごとに距離カウントリセット
という仮定ならexlink.gif>>787の3案でも自然対数的な利用者の分布を再現できるな。

個々の旅客に距離を持たせるのは無理だろうし、exlink.gif>>787の3案で良さそうだな。
ただ、むやみやたらにパラメータを増やされるのはごめんだ。
何でもかんでも新規パラメータに頼らず、既存のパラメータだけでやるべきだし
そういう設計思想を持たないと、今後の新機能追加がどんどん面倒になる。

803 :exlink.gif名前は開発中のものです。  2010/05/14(金) 22:30:07 ID:/+g02z02  
>778-779からすると、個々の客に距離をもたせる
(そうでないとA駅からの客とB駅からの客の運賃が計算できない)と判断出来るが。

804 :exlink.gifOPB ◆gJsqBz3wKU  2010/05/14(金) 22:37:32 ID:Te7AqikM  
exlink.gif>>786

> 「読めませんー」ということなら翻訳します。

読めませんーwww

まぁ、でもなんとなく子会社の利益と経費が同額な理由はつかめたかも。

> すべての建物一括で、毎月1日に前月分の収支計算して収入支出、じゃダメかな。
> 29日に建てた建物は2日しか存在してなくても一ヶ月分の収入になっちゃたりするけど
> もうそれは誤差ということで。

それでよろしいんじゃないですか。
子会社というよりも、建物をテナントとして貸しているというイメージなら
29日竣工の建物から収入があっても違和感無いし。

ただ、β2はともかくα3でプレイしているヒトは
「一か月も子会社収入無しじゃ待ってらんねー」
と思うかもですが。

805 :exlink.gif蒼剣☆RUSH  2010/05/14(金) 22:38:03 ID:/y/7EEm3  
ID:cRuw4M+kはいつもの粘着荒らし。
みんなスルーな。
riorio氏もどうせ、こいつはわけわからん仕様しか出してこないのだから、相手にしない。

806 :exlink.gif名前は開発中のものです。  2010/05/14(金) 22:39:26 ID:cRuw4M+k  
exlink.gif>>803
なるほど。なんかややこしくなりそうだな。。。

運賃なんて単純に距離比例だから
たとえB駅で旅客の乗降は無くても、B駅に停車した時点で、A駅から乗車した乗客全員分の運賃を計上してしまっても良さそうだが。。。

807 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/14(金) 22:52:43 ID:qTKfnyO5  
exlink.gif>>801
>そのグラフはトリップ長の分布。そのグラフからexlink.gif>>787の図を書いてみろ

http://u4.getuploader.com/freetrain/download/75/%E4%B9%97%E8%BB%8A%E7%8E%87%E5%A4%89%E5%8B%95%E6%A1%88%E3%82%B0%E3%83%A9%E3%83%952.PNG

808 :exlink.gif名前は開発中のものです。  2010/05/14(金) 23:01:15 ID:/+g02z02  
ところで横軸の距離って最短距離?それとも道のり?

809 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/15(土) 01:13:54 ID:2hPYeG8S  
ごめんごめん。
身内に解説してもらってようやく理解した。
とりあえずexlink.gif>>807のほうで。

>面倒なので一次関数(直線)にしちゃう。

は取り消し。

でもなぁ。
通勤列車ではMath.Pow(a,-distance)ってことに(aはEでも他の適当な数でも)なるのか、これ。
それはいいとして。
長距離列車だと意外と一次関数になりそうな気がするんだよなぁ。遠くに行きたい人こそが
その列車を選んで乗るわけだから。もっともFreeTrainの客は列車を選べず拉致られてる
んだけどw

あ。あと問題なのは。「乗り続ける客」を計算するより、「今こここの駅で降りる人数」
を計算したほうが実装上使い勝手がいい、ってことだな。
ある駅に停車したときに「今こここの駅で降りる人数」をどういう数式で出すか。

exlink.gif>>808
最短距離。

ただし列車運行経費はそれとは別に道のりで3ボクセル(V2仕様)動く度に計上
されてる。

810 :exlink.gif名前は開発中のものです。  2010/05/15(土) 01:25:45 ID:+HqYoqg/  
集客施設の集客イベントと最寄駅での下車傾向を連動させる(施設の集客ピーク時間帯に最寄駅に到着する列車について
下車率にある程度の上方補正をかける)ことができれば良さそうだけど...。(これをやるには下車処理ルーチンだけでなく施設側
のプロパティにも手を入れる必要がありそう?)

811 :exlink.gif名前は開発中のものです。  2010/05/15(土) 01:26:03 ID:eQYDLNgp  
駅前にアーケード商店街を立てたい

812 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/15(土) 01:31:59 ID:2hPYeG8S  
exlink.gif>>810
798にも書いたけど、建物・施設のplugin.xmlの記述を書き換える必要はなく、
calcEnteringのような新メソッドを各コントリビューション定義に書き足し、それがどのような
時間帯変動を示すか現行populatinのような表を作って数字埋め込めばイケます。

exlink.gif>>811
創作館さんのアーケード道路プラグインをうまく活用してどうぞ。

813 :exlink.gif名前は開発中のものです。  2010/05/15(土) 01:45:02 ID:oQLaZ4uv  
>最短距離。
そうすると、例えば2駅A/Bからなる環状線を作ったりすると
・A駅で100人乗ったとする。
・B駅で半分、50人降りたとする。(残り50人)
・A駅へ戻るが、距離0なので(Bで降りなかった残りの)50人は降りることは無い
・B駅では最初に付いたときと同じ最短距離なので50人が残る。誰も降りない。
以下同様。。。となるように思えるが如何か?

814 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/15(土) 01:48:22 ID:2hPYeG8S  
exlink.gif>>813
A駅で乗車した人数に対する比率で考えるとそうなっちゃうので、
「今乗ってる人数」に対する比率でおろしちゃえばいいのでは。

そうしたら、1周加わるごと25人・13人・7人・4人となっていきますよね。

あとは最遠駅に「強制全員下車」をプレイヤーのほうでダイヤ組むか。

815 :exlink.gif名前は開発中のものです。  2010/05/15(土) 01:54:58 ID:oQLaZ4uv  
それがまさに上で挙げられていた指数関数による低減ですよ。

816 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/15(土) 02:05:35 ID:2hPYeG8S  
だからそうしようっていうのがexlink.gif>>807じゃんちゃんと見てる?

817 :exlink.gif名前は開発中のものです。  2010/05/15(土) 02:10:14 ID:u1w5QVOQ  
exlink.gif>>802,806+降車駅の需要を勘案したアルゴリズムじゃだめかな。
これなら必要な情報は少ないから簡単に組める気がするけど。
・距離カウントは駅で客扱い停車するごとにリセットすれば、自然対数的な減少をある程度再現できそう。
・運賃は客扱い停車した時点で、降車しない客に対しても一旦計上(初乗り運賃分(が実装されていればの話だが)は乗車時に徴収)すれば
 運賃取りっぱぐれも無い。
以下は要望
・運賃は駅間の直線距離でなく、実際の運行経路に応じて徴収する
 (実際の鉄道の運賃計算方法がこの方式。環状線でなくてもループ線とか作っても利益にならないのは嫌だな。)

818 :exlink.gif名前は開発中のものです。  2010/05/15(土) 02:13:02 ID:oQLaZ4uv  
あと。もう少し。
強制下車が無いとした場合、今まで半周当たり100人分の売上があったけど、
修正後は今までより回す回数を多くしないといけないので運賃収入が減る
(というか収入のためのコストが増加する)ことになる。
なので、これに会わせてなにがしかの調整を後で入れる必要があるかも。

強制下車がある場合(環状線に限らず)、ある程度街が発展してしまう
(現状でどの区間でも列車がほぼ満員となるくらい)と、
全駅で強制下車させた方が有利になる
(運賃収入増加+下車人数増加で街が発展しやすくなる...よね?)んだけど、
それくらい発展してもあえて強制下車させないほうが有利になる点が
何かあった方がよさそうな気もするが、さて何が出来るか思い付かない...

819 :exlink.gifriorio ◆rio2xMQlrQ  2010/05/15(土) 02:24:59 ID:2hPYeG8S  
exlink.gif>>817
>・距離カウントは駅で客扱い停車するごとにリセットすれば、自然対数的な減少をある程度再現できそう

ごめん。よくわからない。
ちゃんと乗車駅管理とそこからの距離を個々に計算しないことには、自然対数的でも他の数式でも
減少を実現できないのでは?
あと「乗車駅情報」は持たすから。というか持たないとデバッグもままならないのでw

>・運賃は客扱い停車した時点で、降車しない客に対しても一旦計上

最短距離で計算と矛盾するので無理。

>実際の鉄道の運賃計算方法がこの方式

大都市近郊区間の考え方を調べてきてくださいな。
最短「直線距離」ではないけど、「実際の乗車経路」でもないから。
そのうえでFreeTrain EX Avで可能な手段でより近いのは最短直線距離計算になる。
あと昔は長万部以南〜札幌以遠の函館本線周り計算とか、上野〜仙台の東北本線周り
計算とか、乗った列車によって乗客が損しないような規定があったこともあった。

タグ:

+ タグ編集
  • タグ:

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

最終更新:2010年05月15日 03:15