トップページ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/
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)ではあかんですの?
0765riorio ◆rio2xMQlrQ 2010/05/12(水) 01:54:50ID:n0b79aSr
>>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 あれ?これじゃだめだな。

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

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

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

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

2つの違いがよくわからないのですが、
「版権的にフリーで使い勝手のがいいもの」と「綺麗なグラフをかける」
程度の認識でいいんですかね。
たとえばどちらのほうがCPUに負担をかけないとか、
どちらのほうが既存のシステムに影響を与えないとか・・・
0769名前は開発中のものです。2010/05/12(水) 20:00:13ID:S9Fs0SUu
株式市場プラグインに株価のグラフみたいなやつあるけど、あれは使えないの?
0770名前は開発中のものです。2010/05/12(水) 22:45:44ID:RyHnxNbI
>>768
肝心なのは、一方は扱いが「ソースを示すので勝手に組み込んでください」ってのと、
他方「外部ライブラリライセンスがLGPL」って所じゃないのか?

組みやすさは説明書を見ないとわからんが、どうせ表示するグラフは横軸が時間で
縦軸が金額の標準的なグラフだろうから、扱いとしては前者をカスタマイズするほうが
楽な気はする。
0771名前は開発中のものです。2010/05/12(水) 22:46:58ID:nnjxCBL8
荒らし云々の話だが
開発者が信用されて無いから、みんな文句の一つも言えないんだね。

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

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

荒らしがバレても平気なriorio氏なら、他の住人全員に総スカン食らっても大丈夫だと私は思うけどね。
ただ、上のような発言で、他者が面と向かって反論し辛い空気を作るのは開発者としていかがなものか。
0772riorio ◆rio2xMQlrQ 2010/05/13(木) 00:31:16ID:KpTzcKDI
>>769
ああーー ありますね。
今見てみたら、ソースはChartControl.csがそれでした。

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

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

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

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

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

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

それはどちらも条件同じだと思います。
0773riorio ◆rio2xMQlrQ 2010/05/13(木) 06:44:16ID:KpTzcKDI
accountingのTransactionHistory.csを、30日・12ヶ月の履歴を外から参照できる
ようにしたくていじってみたが、どうにもこうにも自分では。

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

できたところまで、がこれ。
「;が必要」とか怒られまくってビルドできません。
0774名前は開発中のものです。2010/05/13(木) 13:14:24ID:LsMV4anF
私女だけど、riorioさんは余計な一言さえ言わなければ抱かれたい男ランキングNo.1だと思う。

じゅんじゅわ〜
0775riorio ◆rio2xMQlrQ 2010/05/13(木) 17:54:53ID:KpTzcKDI
>>773はwikiのほうにアドバイスいただいたので解決しました。

次は表示部を作らなきゃ、というところでまたハマってます。
これはどーーーしたもんかなぁ。
0776riorio ◆rio2xMQlrQ 2010/05/13(木) 22:47:13ID:KpTzcKDI
>>736-737の進行表のその後

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

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

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

>・サッカースタジアムと同様に、プロ野球チームをもって試合させて球場収入と試合後の
> 観客輸送できるように。画像は既存建物プラグインの球場から拝借
火水木同一カード3連戦〜金土日同一カード3連戦、土日はデーゲームという対戦カード
作成アルゴリズムに悩んでいる。そこさえできれば、あとはサッカーの流用でちょちょい
かと思うのだけどなー あとオフシーズンが10〜3月で、3月最後の火曜にシーズンインと
したいのだが3月最後の火曜をどうやって探す?っていうのも。
0777名前は開発中のものです。2010/05/13(木) 22:51:37ID:fW05zUI/
ワールドカップイヤーで開催国になったら収入が増えるイベントもよろしく
0778名前は開発中のものです。2010/05/13(木) 23:24:49ID:4iTg+dTb
A駅からB駅経由C駅まで乗った乗客の運賃は
 1) distance(A→B) + distance(B→C)
 2) distance(A→C)
のどっちに比例だろう?
0779riorio ◆rio2xMQlrQ 2010/05/14(金) 01:06:15ID:qTKfnyO5
>>777
1プレイ中に1回起こるかどうかのイベント実装してうれしいかなあ…(苦笑)
複数人から同種の要望がもうちょっと具体性をもってあがってきたら考慮します。

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

マップ全体が「大都市近郊区間」に含まれてるとでも脳内設定しておいていただければ。
0780名前は開発中のものです。2010/05/14(金) 01:46:23ID:IOj7xBlN
>>776
とりあえず3月は1日の曜日と最終火曜日の関係は
日 31、 月 30、火 29、水 28、木 27、金 26、土 25
なので、3月1日の曜日が求まれば最終火曜日は簡単に求まる。
3月1日の曜日はdate型ならそれに関する関数はあるような、C#は知らんが。

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

実際のプロ野球ではもっと色々いじっているようだけど。
0781名前は開発中のものです。2010/05/14(金) 03:00:02ID:cQzTGp/6
球場はビジター遠征中とかオフシーズンだとイベント会場になったりするんだけどね
0782OPB ◆gJsqBz3wKU 2010/05/14(金) 07:59:23ID:Te7AqikM
>>776

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

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

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

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

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

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

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

テナント扱いであれば、自社物件として市役所を所有したり
公共施設から売上が上がっても説明がつきますね。
0783名前は開発中のものです。2010/05/14(金) 08:59:16ID:2C3EW+C3
乗客の一部降車しない仕様にした場合の疑問。
単純な2駅往復の場合どうするの?

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

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

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

詳細ダイヤ設定の方にはラジオボタンをいろいろ増やして、
通常停車と「全員強制下車」停車とを作ります。
通常停車+折返発車を組み合わせれば、一部が乗ったまま折り返させることもできます。
終点だとか車庫入れだとかのときは「全員強制下車」停車と組み合わせてください。
0785名前は開発中のものです。2010/05/14(金) 18:24:12ID:2C3EW+C3
>>784
なるほど。了解しました。
0786riorio ◆rio2xMQlrQ 2010/05/14(金) 19:09:32ID:qTKfnyO5
>>782
>いろいろと試算をしたいので、お手数ですけど今実装されている収入計算の数式を教えて頂けますか。

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

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

うん、まぁそうなんだけど。
毎日毎日で子会社収支を取るのは煩雑なんで、そこまでする必要ないんじゃないかなーと
思ってるのですが。
なんで曜日ごとにとかもなし。
すべての建物一括で、毎月1日に前月分の収支計算して収入支出、じゃダメかな。
29日に建てた建物は2日しか存在してなくても一ヶ月分の収入になっちゃたりするけど
もうそれは誤差ということで。
0787riorio ◆rio2xMQlrQ 2010/05/14(金) 20:18:57ID: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及びその変化型。
でもよりよいものを作るためなら手間は惜しみませんよ。
0788名前は開発中のものです。2010/05/14(金) 20:26:41ID:cRuw4M+k
exp(-distance/amenity)とでもすればおk
0789名前は開発中のものです。2010/05/14(金) 20:29:49ID:cRuw4M+k
exp(k*(-distance/amenity**3))
くらいにしても良いかもな。
0790名前は開発中のものです。2010/05/14(金) 20:49:05ID:/+g02z02
えー、駅毎に近隣建築物の集客度みて下車率(or人数)出す(だいたい乗車の逆パターンですな)
ぐらいはするもんかと思ってたわ。
0791名前は開発中のものです。2010/05/14(金) 20:56:20ID:GATFHMtN
>>790
乗る数以上に降りるのに違和感はわかる。が思うのは >>790 氏の勝手
案として「乗車数以下の下車数縛り」はとして出せばいいでしょ?
実現性の問題、負荷他検討すべきだろうけど。
0792名前は開発中のものです。2010/05/14(金) 20:56:31ID:cRuw4M+k
>>790
駅周辺の需要によって降車人数を見る必要もあるね。
集客力と言うのは難しいから、単純に待ち人数を使っても良いかも。
0793名前は開発中のものです。2010/05/14(金) 21:03:54ID:cRuw4M+k
http://wwwtb.mlit.go.jp/chubu/kikaku/chikousin/toshin2/toshin2_shiryo5.pdf
これの一番上の図を見ると、鉄道のトリップ距離と利用者密度の曲線が書けそうだが。
riorio氏の案で言えば2に近いが、これは都市内交通だから、トリップの最大距離自体が短い。
トリップ距離が無限に仮定できるなら、自然対数的に減少していっても良いのではないだろうか?
0794名前は開発中のものです。2010/05/14(金) 21:05:13ID:cRuw4M+k
>>791
>案として「乗車数以下の下車数縛り」はとして出せばいいでしょ?
これでは永遠に乗客が増え続ける。

それくらい考えなきゃだめね。
0795名前は開発中のものです。2010/05/14(金) 21:09:37ID:/+g02z02
待ち人数だと乗車と大体等価っぽくなるように思えるんだけど、
学校やビジネス街だと朝降車が多くて夕〜夜に乗車が多くなって欲しくね?
負荷的にも乗車待ち数の計算と直観的には大して変わらないように思えるのだが。
0796名前は開発中のものです。2010/05/14(金) 21:17:49ID:GATFHMtN
>>794
なんで否定なのかな?ま、それはいいや。よくわかってないと見えるし。
で案は >>793 って事だとriorioさんの2案でいいのかな?

なら私も同様ですよ。
0797名前は開発中のものです。2010/05/14(金) 21:36:42ID:cRuw4M+k
>>796
たぶん一番分かってないのは

全列車共通はありえないし、>>793見ると分かるとおり直線的な減少もあり得ない。
riorio氏2案+>>789
min(1,exp(k*((-distance/amenity**3)-amenity*2)))というのはどうだろう。
ある点まで1で、そこから先は自然関数で減少。
「ある点」と「減少の傾き」はamenityで決まる。
0798riorio ◆rio2xMQlrQ 2010/05/14(金) 21:43:27ID:qTKfnyO5
今の人口クラスは、calcPopulationメソッドで吐き出す人口を時間帯に応じて
変化させながら返すことだけしか実装されてないんだよね。
だからそれそのまま利用することはできない。

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

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

今は問答無用で次の停車駅で全員降りちゃうわけで。
それにくらべたらあんまり難しいことせずに単調減少でも違いとしていいんじゃねーかと
思ってたりもするのだが。
0799riorio ◆rio2xMQlrQ 2010/05/14(金) 21:49:15ID:qTKfnyO5
>>797
>見ると分かるとおり直線的な減少もあり得ない。

はい?
http://u4.getuploader.com/freetrain/download/74/%E4%B9%97%E8%BB%8A%E7%8E%87%E5%A4%89%E5%8B%95mlit.PNG
0800riorio ◆rio2xMQlrQ 2010/05/14(金) 21:57:27ID:qTKfnyO5
あと、amenityは使いません。
1970年ごろだと、中電は新車で長距離列車は旧型客車なんてこともザラだったわけで。

列車ごとに個性的・動的な減少パラメータを持たせたいということであれば、それは
新パラメータを追加する方向で考えようと思います。
0801名前は開発中のものです。2010/05/14(金) 22:14:11ID:cRuw4M+k
>>799
おい、まさかそのグラフの見方も分からんのか?
そのグラフはトリップ長の分布。そのグラフから>>787の図を書いてみろ。
そのピンクの線の傾きこそ、短距離利用が多く、長距離になるにつれて利用者が減少している事を表しているのだ。

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

個々の旅客に距離を持たせるのは無理だろうし、>>787の3案で良さそうだな。
ただ、むやみやたらにパラメータを増やされるのはごめんだ。
何でもかんでも新規パラメータに頼らず、既存のパラメータだけでやるべきだし
そういう設計思想を持たないと、今後の新機能追加がどんどん面倒になる。
0803名前は開発中のものです。2010/05/14(金) 22:30:07ID:/+g02z02
>778-779からすると、個々の客に距離をもたせる
(そうでないとA駅からの客とB駅からの客の運賃が計算できない)と判断出来るが。
0804OPB ◆gJsqBz3wKU 2010/05/14(金) 22:37:32ID:Te7AqikM
>>786

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

読めませんーwww

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

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

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

ただ、β2はともかくα3でプレイしているヒトは
「一か月も子会社収入無しじゃ待ってらんねー」
と思うかもですが。
0805蒼剣☆RUSH2010/05/14(金) 22:38:03ID:/y/7EEm3
ID:cRuw4M+kはいつもの粘着荒らし。
みんなスルーな。
riorio氏もどうせ、こいつはわけわからん仕様しか出してこないのだから、相手にしない。
0806名前は開発中のものです。2010/05/14(金) 22:39:26ID:cRuw4M+k
>>803
なるほど。なんかややこしくなりそうだな。。。

運賃なんて単純に距離比例だから
たとえB駅で旅客の乗降は無くても、B駅に停車した時点で、A駅から乗車した乗客全員分の運賃を計上してしまっても良さそうだが。。。
0807riorio ◆rio2xMQlrQ 2010/05/14(金) 22:52:43ID:qTKfnyO5
>>801
>そのグラフはトリップ長の分布。そのグラフから>>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
0808名前は開発中のものです。2010/05/14(金) 23:01:15ID:/+g02z02
ところで横軸の距離って最短距離?それとも道のり?
0809riorio ◆rio2xMQlrQ 2010/05/15(土) 01:13:54ID:2hPYeG8S
ごめんごめん。
身内に解説してもらってようやく理解した。
とりあえず>>807のほうで。

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

は取り消し。

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

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

>>808
最短距離。

ただし列車運行経費はそれとは別に道のりで3ボクセル(V2仕様)動く度に計上
されてる。
0810名前は開発中のものです。2010/05/15(土) 01:25:45ID:+HqYoqg/
集客施設の集客イベントと最寄駅での下車傾向を連動させる(施設の集客ピーク時間帯に最寄駅に到着する列車について
下車率にある程度の上方補正をかける)ことができれば良さそうだけど...。(これをやるには下車処理ルーチンだけでなく施設側
のプロパティにも手を入れる必要がありそう?)
■ このスレッドは過去ログ倉庫に格納されています