鉄道経営系ゲーム製作スレッド 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/
0678名前は開発中のものです。
2010/05/08(土) 15:51:54ID:xpPyu/cYそうなんですよ。E217系なんかが問題。
他にも似たような列車がごまんとあります。
定員は車両ごとに定義されていますから、車両の種別についても(「列車の種別」と定義していない事に注目!)
車両ごとに定義されるべきものと考えています。
ちなみにE217系のG車は余裕で乗車率100%超えますね。
0679OPB ◆gJsqBz3wKU
2010/05/08(土) 16:04:03ID:WCvCumBd> 確かにそういう考え方も出来ますが、現在か過去かの違いではないでしょう。
> 現在は過去に比べて、ダイヤや路線網が最適化されたからこそ、混雑率が低下してきているのです。
> 今後、急激に需要が伸びて路線建設や列車増発が追い付かない状況になる事があれば
> また250%という混雑率を見る事が出来るかもしれませんよ。
> ゲームのプレイヤーが、都市の需要に見合わないダイヤを組めば、300%という数字が出るのは当然ではないかと感じます。
どうでしょうか。
やはり、オイルショック前後と21世紀の現代では生活環境の違いは大きいものがあります。
その最たるものは自動車の普及です。特に地方では。
混雑率200%までならば、まだ乗客もガマンするでしょうが、250%(人の圧力でドアが開かなくなる…民鉄協会の見解)や
300%(物理的限界に近く身体に危険がある)ともなればマイカー通勤に切り替えてしまうことでしょう。
渋滞は激しくなるでしょうが、電車内で潰されるよりはマシと考えることでしょう。
実際、地方では鉄道を捨てて自動車に切り替えている例も多いのです。
列車に乗っているのは交通弱者(学生と高齢者だけ)という現状はよく聞かれることと思います。
プレイヤーが混雑率200%を超えても、車両の増車に踏み切らないのであれば、
単に乗客の逸走を招くだけではと思います。
まぁ、ゲーム中ではバスもマイカーも実装されてませんが…今のところ。
0680名前は開発中のものです。
2010/05/08(土) 16:07:46ID:RLnBfb1wおいおい、そこで逆ギレすんの?
うわぁ
>せっかく改善案を示したのにこういう非建設的なイチャモンを入れてくる馬鹿がriorio本人でない事を祈るわ。
>レスの中身を見る事が出来ない人種はこのスレに必要ないんだよね。
rio2さんや他の人達が定員について建設的な議論をしていた4月29日に、
>>どうでも良い方向に労力かけすぎだろ
と非建設的も非建設的なイチャモンつけた本人がこういうことを言いますか。
へぇ〜〜〜〜〜
その「このスレに必要ないんだよね」って同じ言葉、4月29日に戻って自分自身に投げ
つけてみなよ。
あのさ、あなたがまずすべきはスレのみんなへの謝罪じゃないの?
「これまで、スレでおこなわれている建設的な議論を「どうでもいい」呼ばわりして
きたことは謝罪します。二度としません。ですから私も議論に加わらせてください」
って。
そうしたらみんなも許してくれるよ、きっと。
それもせずして誰も求めてない勝手な議論を始めて「俺様は建設的」ぶられても
冷笑しかできません。
0681名前は開発中のものです。
2010/05/08(土) 16:08:32ID:fp212rZY駅の待ち人数を裁ききれない時だけそっちを参照するとかにしたらいいんでないの
(あくまでも第1段階としての案)
待ち人数がどっち方面に行きたいかまではホームごとに待ち人数設定するとかしないと無理だろうけど
0682OPB ◆gJsqBz3wKU
2010/05/08(土) 16:22:38ID:WCvCumBd> @一律で100%までとする。
でいいと思いますけど。本来立席の設定無いんですし。
3両しかないのぞみ号の自由席で新大阪までデッキで立ちん棒なんて再現したくないですし、
つばさ号からMAXやまびこへの福島ダッシュなんかも再現したくないですw
>>678
> 定員は車両ごとに定義されていますから、車両の種別についても(「列車の種別」と定義していない事に注目!)
> 車両ごとに定義されるべきものと考えています。
それで、4ドアセミクロス車は近郊型ですか、通勤型でしょうか?
誰に聞いても意見が分かれるとは思いますが…。
> ちなみにE217系のG車は余裕で乗車率100%超えますね。
そうかと言って、いくらなんでもグリーン車で200%にはなりようがないと思いますが…。
0683名前は開発中のものです。
2010/05/08(土) 16:29:20ID:xpPyu/cY>それで、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/cY3ドアオールロング、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:q1o1ZgWshttp://jbbs.livedoor.jp/game/50598/
0688riorio ◆rio2xMQlrQ
2010/05/08(土) 18:21:04ID:q1o1ZgWsFreeTrain 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そもそも駅に待っている人が多いのに列車本数が少なければそれだけ乗車率は上がるだろうし
逆に列車本数が多ければ乗車率は下がると思う。
で今の仕様だと詰め込み乗客上限 = 着席定員 + ( 列車の定員 - 着席定員 ) * 2
で乗車できる最大の人数を求めていると思うけど、この「* 2」の部分を多少(例えば1.5 - 2.5とか)
幅を持たせて、乗車率を多少変化を持たせてみるとか。
混雑時(ラッシュ時)は乗車率が上がり(* 2.5)、通常時は乗車率が下がる(* 1.5)とか。
今更終わった議論蒸し返しても意味ないか。
0690riorio ◆rio2xMQlrQ
2010/05/08(土) 22:21:59ID:q1o1ZgWsいや、意味なくないですよ。
その「* 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書き方が悪かった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>実際に乗る人数は
>乗客数 = min( (駅利用人口 - 消費乗客数) * 0.3 * amenity , 列車の詰め込み乗客上限)
>こっちですね
そゆことーー
でもラッシュ時間帯には列車の詰め込み乗客上限のほうで頭おさえられることになるから、
そこで立席*2を上限にするか*2.2を上限にするかって議論はアリだと思うのよ。
で、この「駅利用人口」を決めてるのが周辺にある建物のpopulationなわけで、
populationの数値を土日分どうするかとか、既存の平日でもおかしなところが
あったら直さなきゃとか(Residentalの7:00が少なすぎって指摘ありましたね)、
クラス増やすとしたら増やしたクラスはどういう数値にするかとか、それをplugin.xml
から情報抽出して既存パラメータの妥当性を確認してよくないものは直してとか、
そういうことがひいては、列車の乗客がちゃんと乗る、ということにつながるのです。
0694名前は開発中のものです。
2010/05/09(日) 00:51:37ID:DaaP5wHjなってますけど、新しく追加する、もしくはちょっとこの建物は特殊だから人工を変えたい
という場合、いちいちプログラムを弄ったり、もしくは自分で作らないと駄目じゃないですか。
ある程度はbaseというので帰れそうですけど、特定の時間帯の人口を増やすとなると
やっぱり新しく定義しないと駄目ですよね?
これ、クラスよりはplugin.xmlの中で時間帯と人口を指定した方が建物プラグインの作者も
指定しやすくなる気がしますが、今更変更は大変そうですよね。
互換性の問題もあるだろうし。
0695名前は開発中のものです。
2010/05/09(日) 01:08:10ID:ZGbmXM9Oそちらを適用した計算処理をするようにしておけばいいんじゃないの
0696riorio ◆rio2xMQlrQ
2010/05/09(日) 05:38:44ID:ppOqI2u9>やっぱり新しく定義しないと駄目ですよね?
はい。
なので、今、欲しい新クラスがあれば具体的にこういう建物が使うクラスで
こういう人口変動するっていうのを示してもらえば、作りますよ。
どうせ数種類追加するわけですから。
そのついでに作れます。
>これ、クラスよりはplugin.xmlの中で時間帯と人口を指定した方が建物プラグインの作者も
>指定しやすくなる気がしますが、今更変更は大変そうですよね。
いやぁー、面倒なんじゃないかな。プラグイン作者さん。
本体のほうでこういうクラス用意するのはさほど大変じゃないと思いますよ。
>互換性の問題もあるだろうし。
まぁそれはV2プラグインの時点で、過去の本体では使えないの確定なんで考えなくて
いいでしょう。
>>695
オプショナルな項目についてはそれでいいと思いますが。
これ許すと省略すべきでないプラグインなのに省略しちゃったりしてめちゃくちゃになる
ことも多いので。記入必須・なければエラー!でもいいかと。
0697riorio ◆rio2xMQlrQ
2010/05/09(日) 06:44:10ID:ppOqI2u9あくまでも案です。決定稿じゃないです。
これをベースにしてもらって、このクラスのこの時間帯はもっと多いとか少ないとか
だったらこんなクラスも追加して欲しいとかいやこれいらないとか、活発に議論して
いただけたらうれしいなー
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了解しましたー。
わざわざロダ借りるのもアレなんで
とりあえずメールのほうに添付させていただきます
0700riorio ◆rio2xMQlrQ
2010/05/09(日) 15:18:43ID:ppOqI2u9公開しました。
人口の平日・土日変化を取り入れ、また学校や遊園地などの特徴的な人口クラスを
取り入れました。
まだまだパラメータの調整を行わねばならない段階ですので、テストプレイをしていた
だいたら、ぜひともパラメータのフィードバックをお願いします。
学校ですが、大学では院に行ったり卒論前になったりすると夏休みとかなしに研究
してたりするので、c477さん作の大学建物群のうち教育棟はSchoolにして夏休みあり、
研究棟は従来のOfficeのままにして夏休みなし、という変化をつけてみました。
ウチのコロネ島で、駅前にtoaruさんのナイトクラブビルを建てまくった歓楽街がある
のですが、そのおかげで駅に乗客が集まる金曜夜にうまく出発する電車を設定して
ないもんで、せっかくの新人口クラスが空振りになってたりします。
みなさんのほうでうまく乗客を拾えるダイヤを組んでみてください。
あと私案のままのResidentalなクラスでは、平日より土日の方が終日にわたって
幅広く乗客需要があるので、数時間に1本レベルの運転頻度だと土日のほうが1日
としての乗客数は多くなったりしている様子が伺えます。
朝ラッシュ・夕ラッシュにうまく列車がはまらないんですね。
0701名前は開発中のものです。
2010/05/09(日) 22:51:07ID:ej3DeXoc学校長期休暇populationは正式なものにしても良いのではないかと。
なぜなら、学校が休みになると逆に人が増える遊園地やら動物園水族館(はなかった
様に思うけど)、そういう施設に使えそうだ。
実際にやるとすると、休日とダブるから平日の長期休暇中とでもするんだろうが。
プラグインの最新版か・・・乗客がデタラメで使い物にならない車両はなくなったから
まだマシだといえばそうなのだが、また色変えただけの○○タイプを削除する作業は
せにゃならんのか・・・。
0702riorio ◆rio2xMQlrQ
2010/05/09(日) 23:06:28ID:ppOqI2u9あ。
今日だしたβ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だからこの場合はMajorRoadType.railballastが正しい。
ソース見てないけど、accountingは変数名、それともクラス名?
0705名前は開発中のものです。
2010/05/10(月) 00:07:12ID:AeWmVu/5最初の開発者はC#嫌いだったんだろうか
0706名前は開発中のものです。
2010/05/10(月) 00:09:15ID:4phEMnjDaccounting.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ビルドとおりましたーー!
論理バグが残ってないか動かして確認する必要ありますが、
まずは一歩というところで、ありがとうございました。
accountingのほうなんですけど、参考にした線路をひくほうのコードで、
core\world\rail\SingleRailRoad.csでは、usingなしでいきなり私が真似たような
accounting.AccountGenre.RAIL_SERVICE.spend(cost);
と書いてて通ってるのは、これはなんでなんでしょう?
0708名前は開発中のものです。
2010/05/10(月) 00:42:51ID:gdjSYFhSまた「議論は済んだ、お前がやれ」の一点張り、そういう事言われましても理解できません。
現状が最も優れている理由だけ仰って頂いた方が十分に伝わりますよ?
私としては、過去に現実に起こった事象すら再現できない「リアルなシュミレーション」はちょっと。。。と思いますがね。
熟考するより先にあなたが動いてしまったのに「私は苦労したのだから尊重しろ」と言われましても。。。
頑張っているのは認めますが、正直「骨折り損のくたびれ儲け」だとしか言えません。
それに、そのような開発姿勢で、果たしていいゲームが出来るのでしょうか?
私が何度も言ってきたように「動く前に良く考えて」という事です。
あなたがコーディングする前に、皆でしっかり考えていれば、今回のように私が修正を求める意見
(あなたにとっては「苦情」でしょうか?)を申し上げる必要もなかったのです。
「車両の種別」については、以下の2点についても加味して、もう一度考えてみていただけますか?
@「車両の種別」が「列車の種別」でない点(>>678)
A今後プラグイン作者が大量の車両プラグインを製作した際、仮に今回策定したガイドラインに準拠していない場合
パラメータの管理・修正をするとしてどちらが楽か
・個々の車両のamenityとfare、その他のパラメータを個別に管理する。
・「車両の種別」を管理する。
暇があれば>>670-671の、駅での旅客の乗降の扱いについても返答してください。
これは比較的簡単に実装でき、かつ現状よりは良い案だと思いますが。。。
0709名前は開発中のものです。
2010/05/10(月) 00:51:20ID:dx3tPwL70710riorio ◆rio2xMQlrQ
2010/05/10(月) 01:04:23ID:gq7P0zuQしたらばに書かれたことを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返答しないんじゃなくて出来ないんでしょ、事実を認めたくないんだから。
0712riorio ◆rio2xMQlrQ
2010/05/10(月) 01:09:16ID:9zo11PdN>>486
486 名前:名前は開発中のものです。 投稿日:2010/04/29(木) 03:03:43 tMEW/tAM
駅の乗客とか定員とか、どうでも良い方向に労力かけすぎだろ。
0713名前は開発中のものです。
2010/05/10(月) 01:13:21ID:Gz2C5Hi/したらばでやれ
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:4phEMnjDfreetrain.controllers.AbstractLineControllerの定義からabstructを外して、それで
デザイナは開けないですか?
で、編集終わったらabstruct戻して。
>>711
したらばにいけよ、おまえ邪魔なんだよ。
したらばいって思い切り議論してこい。
あとなYzは野郎から勝手に出て行ったんだよ。
経緯も知らんのに勘違いしたこと言うな。
0717名前は開発中のものです。
2010/05/10(月) 02:09:01ID:4phEMnjDよく、わからんね。
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一段落ついたら一時的に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
0720Umezawa
2010/05/10(月) 07:35:11ID:CHwKLoKdなぜ頑なに自分でプログラミングすることを拒むのか分からないです。
あなたの要望のみを実現するだけであれば、そのためのC#の習得には
それほど時間は掛からないと思いますよ。
もちろん、キレイなソースを記述したいとか、自分で1からA列車モドキを
作成したいとなると話は別ですが。
0721名前は開発中のものです。
2010/05/10(月) 11:54:52ID:+pT+Vdvxぐっさんに失礼だろ。
0722名前は開発中のものです。
2010/05/10(月) 13:03:25ID:nZbS5XlUあっちでやれ
0723名前は開発中のものです。
2010/05/10(月) 18:01:09ID:FOjclZDa解決しないなら、もう一回抜いてください。
まだ解決しないな(ry
0724モガミ ◆1zbgmm1SzU
2010/05/10(月) 20:01:48ID:Fxn+ZLDRここで口喧嘩したら生産性がないどころか、周りのやる気を殺ぐんですが。
ここで騒いだら周りに迷惑だといい加減気づいてください。
自分以外の意見が何も見えないのですか?
迷惑だから他でやれとさんざん言われて、
「したらばの内容が〜」とか言い訳して、
こっちで文句言い続けるとはどういった了見でしょうか。
0725名前は開発中のものです。
2010/05/10(月) 20:10:32ID:nZbS5XlU悪いが直接生産に関与しない発言ならあなたもあっちでやってくれ。
私もこれを最後に以後はあっちでちゃんとトリ付きでやるよ。
スレの皆ごめん。偉そうに言わせてくれ。
以後も続くかもしれない。いや、多分続く可能性は皆も理解できると思う。
でも完全にスルーして欲しい。
もしこの発言にも文句があるならあっちで話そう。一回トリ付きで書き込むよ。
これ以上ここが荒れてはいろいろな意味でマイナスがでかすぎる。
0726riorio ◆rio2xMQlrQ
2010/05/10(月) 20:33:12ID:gq7P0zuQ【2.1.0.5 -> 2.1.0.6 変更箇所】
・地下線路の建設費を地上の2倍に設定した
・道路の建設費・撤去費がバスの収支に計上されるようにした
・鉄橋・ガード高架・トンネル・機関庫の建設・撤去に費用がかかるようにした
・サッカースタジアムの建設費が計上されるようにした
・半ボクセル建築の建築費が子会社の収支に計上されるようにした
・建物総合の建築費が子会社の収支に計上されるようにした
・地表の工事費が子会社の収支に計上されるようにした
・鉄道アクセサリの建設費が鉄道の収支に計上されるようにした
・「建物の建設(仮)」と「貸ビル」をメニューから削除(建物総合に完全移行)
・人口クラスに長期休暇と祝日(ハッピーマンデー施行前)を実装
・LeisureHotelPopulation・LeisureLandPopulationでは長期休暇中の平日は、週末と通常平日の間の来客がある
・ブルドーザーによるボクセル撤去及び各メニュー内の撤去を行った際に経費が計上されるようにした
おそらく、現時点で実行可能な操作で考えうるすべての支出を実装出来ているはずです。
もし抜かりがあったら教えてくださいw
ただこうなると、子会社(建物)が単なる金食い虫になってしまうので、今度はいかにして
子会社の儲けを実装するかという点が課題かと思います。
【既知の問題点】
・鉄橋・ガード高架・トンネル・機関庫の建設時、ダイアログ中に表示される「費用」が正確ではない
(収支表には正確に記載される)
これが解決できてません。詳細は>>718のとおり。力及ばずすいません、分かる方教えてください。
あと、「地表」コントローラにもCostBoxつけようとしたのですが、こっちはうまくコントリビューションの
priceをゲットできなくてやはり実装できてません。コントローラにCostBoxつける余地だけ作ってます(トホー
0727Umezawa
2010/05/10(月) 20:56:32ID:CHwKLoKdそうは言っても肝心の ID:gdjSYFhS がしたらばに移ってくれず、
現在ほぼ唯一の FreeTrain 本体開発者であるりおりおさんが
彼の書き込みにより気力を無くしてしまう以上、ここでやるしか
ないでしょ?
問題は皆がスルーできるかどうかではなく、彼により開発者の
開発意欲が削がれることなんですよ。
0728riorio ◆rio2xMQlrQ
2010/05/10(月) 21:09:15ID:gq7P0zuQいや、皆が全員スルーできたら、あんまり気にはなりません。
私はもちろんここではスルーしますし、看過できなければしたらばに書くまでのことです。
一番エナジードレインになるのは、彼の蒸し返しにつられて、種別がどうのなどという
解決済の議論に乗っかってしまう人が出ることです。
ここでそういう蒸し返しが起こると、それが一番つらい。
このことは皆様にご理解いただけると幸いです。
まぁ彼に対して、蒸し返しへの反応をしたくなれば、それもしたらばに書いてもらえれば
ここに書かれるのとは違ってさしてダメージにはなりません。
せっかく場所用意したので、したらばのほうも有効活用していただければと思います。
0729モガミ ◆1zbgmm1SzU
2010/05/10(月) 21:21:33ID:Fxn+ZLDRすいません。以後気を付けます
>>726
いろいろ変更点があるようですが
これから作るプラグイン関係のxml文書は今までどおりで大丈夫ですかね
また子会社の儲け云々は、やはり建物そのものに付与させる形になりそうな気がしますが・・・
何分「赤字が発生しない」という状態にすると、ゲームとしては成り立たなくなりますし
調整が難しそうですね
本体のほうで調節するとなると高さとボクセル数から維持費を持ち出して、
居住・就労人口から利益を算出させる・・・ってところですかね。
しかし数値固定じゃゲームになりませんし・・・
0730名前は開発中のものです。
2010/05/10(月) 21:44:22ID:QP5nOWYx>私はもちろんここではスルーしますし、
えっ
0731riorio ◆rio2xMQlrQ
2010/05/10(月) 21:47:03ID:gq7P0zuQ>これから作るプラグイン関係の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すみません。
問題のあるソースは、コミットしましたと書いた時点の最新のもの、
からそれ以降現時点最新のものまで引き続き同じ問題を抱え続けています。
リビジョンでいえば74と75がそうです。
>どういう状況になるのですか?
>ビルドが通らない?
ビルドが通りません。
「calcCostOfBuildはoverrideすべき相手がみつかりません」「calcCostOfRemoveは(ry」
という意味のエラーになりました。
なのでその箇所を /* */ してビルドとおしたのが今公開してるバイナリになります。
0734名前は開発中のものです。
2010/05/11(火) 01:33:03ID:YkDwEd6Nすいません、書き方悪かったです。
バージョンというのは1.0系なのか、2.0系なのか、ALPHA系なのかという意味です。
ビルドが通らないのですね。
とりあえずtrunkの下のソースを見たところ
TrainGarageContributionImpl<-SpecialRailContribution<-LineContribution
<-Contribution
のような継承の流れなのでAbstractControllerImplは継承してないかと。
もうそろそろおねむの時間なのでこれ以上の調査は今日は無理です〜
0735riorio ◆rio2xMQlrQ
2010/05/11(火) 01:43:26ID:2IjeXIXAあぁー、重ねてもうしわけないです。
同時公開したバイナリがβ2.1系なことからβ2.1系の話なのは自明だと思い込んでました。
>TrainGarageContributionImpl<-SpecialRailContribution<-LineContribution
><-Contribution
>のような継承の流れなので
そうなんですよねー
じゃあ、コントローラ(GUI・ダイアログ)はどこから継承してきてるの??というのが
分からないのです。
動作的にも、またビルド時のエラーメッセージからも、コントローラとしては
AbstractLineControllerを継承してるはずなんですけど。
これが解決したら、α3.1系に支出関係のアップデートを持ち込みたいと思います。
今夜はβ2.1系で、駅舎建設とホーム建設の費用支出ができました。
駅舎・ホームの撤去には費用0としてますけど、それはさすがにいいですよね。
0736riorio ◆rio2xMQlrQ
2010/05/11(火) 01:52:49ID:2IjeXIXA・列車売却益、即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うげっ、本当に動かない。
なんだろう……
前バージョンに上書きしたら動いたんですか?
あっれーー
調査します。
ごめんなさい。
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:Iq88B4960744蒼剣☆RUSH
2010/05/11(火) 17:35:27ID:YkDwEd6N新しいオブジェクトを追加したけど、データをロードするとそのオブジェクトが生成されず
参照した時に例外が発生するということでしょうか?
MSDNの「カスタムのシリアル化」というところにデシリアライズした時にオブジェクトを初期化
するために呼び出すメソッドが書かれています。
OnDeserializedAttributeという属性をメソッドに付与することでデシリアライズした後に.NETから
呼び出されるようになります。
[OnDeserialized()]
private void OnDeserializedMethod(StreamingContext context)
{
//ここで追加されたオブジェクトを生成する
}
メソッド名は何でもいいですが、パラメータはこのまま書く必要があります。
ただ、このパラメータは使う必要はありません。
このメソッドを新しいメンバが追加されたクラス内に書いておけば、後は.Netがデシリアライズした
後に勝手に呼び出してくれます。
0745蒼剣☆RUSH
2010/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蒼剣☆RUSH
2010/05/11(火) 18:40:55ID:YkDwEd6Nあー、今見直したらちょっと問題があるか。
というのはとりあえず今のバージョンでロードすると新規に追加したオブジェクトが生成されて
問題が発生しないようになる。
今のバージョンでセーブされたデータをロードすると既に生成されてシリアライズ化されている
ため、新規に追加したオブジェクトもちゃんとロードされた状態になる。
しかしOnDeserializedMethodメソッドでオブジェクトを生成しようとするので、既存のオブジェクト
が消去されて新しくオブジェクトが生成されてしまう。
解決作としては
・新規追加オブジェクトを生成する前に、そのオブジェクトが存在するか確認する
ない場合は生成、ある場合は何もしない
チェックは
classname aaa = obj as classname
とas演算子で別オブジェクトに代入して、aaaがnullであれば生成されていない、null以外なら
既に存在すると判断
・そもそも保存する必要のないオブジェクトであれば[NonSerialized()] を付与して保存されない
ようにする
0747riorio ◆rio2xMQlrQ
2010/05/11(火) 19:44:44ID:2IjeXIXAさんくすーー
でも両者あわせて考えると結局現物に即するとどうしたらいいんじゃ?というのが
また分からなくなってしまってます。
>チェックは
> classname aaa = obj as classname
> とas演算子で別オブジェクトに代入して、aaaがnullであれば生成されていない、null以外なら
> 既に存在すると判断
この考え方は理解できるのですが。
これをif文で判定した時の新たに生成するのはnewになるのかな?
744に書いてもらったOnDeserializedAttributeは使えませんよね。
クラスを生成してるのがTransactionHistory.cs内で、
参照しててエラー起こしてるのがAccountSummaryWindow.cs内なので、
判定するとしたらAccountSummaryWindow.csで判定することになるのですけど
追加生成をAccountSummaryWindow.cs内でやって大丈夫?
なんかすっきりしない……
0748蒼剣☆RUSH
2010/05/11(火) 20:02:54ID:YkDwEd6NOnDeserializedメソッドを追加です。
参照することは関係ないです。
0749riorio ◆rio2xMQlrQ
2010/05/11(火) 20:42:04ID:2IjeXIXA話が循環してるーー
それだと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蒼剣☆RUSH
2010/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外し忘れていた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なあ、横やり入れて来るのならおまえがriorio氏に教えろよ。
知っているのに教えもしないやつは黙ってろよな。
riorio氏、今後は>>751が教えてくれるそうなので自分は引っ込んでおきます
0754riorio ◆rio2xMQlrQ
2010/05/11(火) 21:35:16ID:2IjeXIXAせっかく教えてくれてたのに。
で、今まで変数増やしたりしても今日みたいにハマることなかったのになんでだろーって
不思議だったんだけど。
変数がreadonlyだと旧セーブデータのデシリアライズのとき初期化されないとか、ある?
public TransactionHistory()の
day; Month; year; yesterday ; lastmonth; lastyear;
これ全部readonlyついてた。
今 OnDeserializedに>>750な記法で書いたら、「読み取り専用なものはOnDeserialized
できません」て怒られて。readonly外したらビルド通ったところでこれから動作確認なん
だけども。
0755riorio ◆rio2xMQlrQ
2010/05/11(火) 21:44:13ID:2IjeXIXAなんだろう??
Avになってからこっち、セーブデータの互換性で悩んだことなかったんだけど……
謎だぁ。
で。
>>750な記法のままで、>>752のようなif分null判定を入れなくても、
新セーブデータを読み込んだときに既にデシリアライズ成功して変数あったら
それが上書き初期化されるということはなくセーブした数値がちゃんと読めたので
if分判定不要に思えたのだが。
間違ってないよね?
0756名前は開発中のものです。
2010/05/11(火) 21:53:15ID:aqFTq1CDチェックしないと全部上書き初期化されるよ
0757756
2010/05/11(火) 21:54:22ID:aqFTq1CD0758riorio ◆rio2xMQlrQ
2010/05/11(火) 22:28:09ID:2IjeXIXA理屈としてそうなのは分かるのですが、実際に変数追加後から新規ゲーム開始して
一ヶ月ぐらい経過してセーブしたデータを。
750記法のif文判定してない本体でロードしたとき。
もしyesterday/lastmonth/lastyearが強制初期化されてしまってたら「昨日」の収支は
0,0,0になってしまっているはずなのですが。
実際にはロード直後に売上レポート開けて「昨日」を見ると、ちゃんとセーブした時点の
昨日のデータが入ってるんですよ。
だから初期化されてないんです。
さて。
問題解決したことだし。日計は1ヶ月、月計は1年分ぐらいは保存するようにするか。
それをどう表示するかが問題だが。
タブ増やすわけにいかないし、「過去ログ表示」ウィンドウでも新たに作るかな。
0759名前は開発中のものです。
2010/05/11(火) 23:26:54ID:vGFSEqNX仕事が忙しくプログラムに触る暇は無いため、今までも長い事プラグイン製作や仕様の議論という形で参加してきました。
これからもそのスタイルでいきたいと思っています。
ですので、これからもFreeTrainを良くする為の提案は続けます。
私の提案は、開発者のやる気を殺ぐためのものでは無いですよ。
結局は、彼が意地を張っているのです。私はそんなつもりは無いのにね。
>>728
「解決済み」と言うには早いんじゃないでしょうか。
私の提案と現状とを比較した上で、どうしても出来ない理由を示して頂ければいいのです。
あなたの愚痴を聞いても、正直、何の参考にもなりませんよ。
以下チラシの裏
結局複数IDでスレを荒らしていた件についてはスルーなのかな?
面の皮の厚さだけは一級品ですね。
これを見て見ぬフリをするどころか全力フォローする諸氏にも軽く失望。
こんなんでいいの?このスレ。
0760riorio ◆rio2xMQlrQ
2010/05/11(火) 23:48:10ID:2IjeXIXA以下抜粋:
>私の提案は、開発者のやる気を殺ぐためのものでは無いですよ。
それはあんたが決めることじゃねー
「開発者がやる気を殺がれているという『事実』『現実』」から目をそむけるなアホウ。
0761riorio ◆rio2xMQlrQ
2010/05/12(水) 00:21:12ID:n0b79aSr【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ありがとうございました。
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:n0b79aSrprivate 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/TUjP0765riorio ◆rio2xMQlrQ
2010/05/12(水) 01:54:50ID:n0b79aSrおっけーですよ
むむむ、ということは、だ。
今書き込みながら考えてるので、思考の過程だだもれなのはゆるして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>
> 私から見ると、ID:DQiiOCVM がどこの誰なのかはコテ・トリつけてるとまったく
> 同様に丸わかりなんですよ。
> プラグイン公開するときにはauthorにコテ入れてるのに、スレに書き込むときには
> ガンとしてコテ入れないことにはなにかしらうしろめたいところがあるんだろうから
> あえてそこをこっちからバラすいやがらせするのはやめとこうと思って名指ししない
> だけで。
> メールでもしてもらえればこっそり教えますよ。
0768モガミ ◆1zbgmm1SzU
2010/05/12(水) 18:26:52ID:chB2CzS72つの違いがよくわからないのですが、
「版権的にフリーで使い勝手のがいいもの」と「綺麗なグラフをかける」
程度の認識でいいんですかね。
たとえばどちらのほうがCPUに負担をかけないとか、
どちらのほうが既存のシステムに影響を与えないとか・・・
0769名前は開発中のものです。
2010/05/12(水) 20:00:13ID:S9Fs0SUu0770名前は開発中のものです。
2010/05/12(水) 22:45:44ID:RyHnxNbI肝心なのは、一方は扱いが「ソースを示すので勝手に組み込んでください」ってのと、
他方「外部ライブラリライセンスがLGPL」って所じゃないのか?
組みやすさは説明書を見ないとわからんが、どうせ表示するグラフは横軸が時間で
縦軸が金額の標準的なグラフだろうから、扱いとしては前者をカスタマイズするほうが
楽な気はする。
0771名前は開発中のものです。
2010/05/12(水) 22:46:58ID:nnjxCBL8開発者が信用されて無いから、みんな文句の一つも言えないんだね。
「もしやる気を無くしたらどうするの」という諸氏の懸念に、それが如実に表れている。
そんな懸念を知ってか知らずか、みずから便乗して
>「開発者がやる気を殺がれているという『事実』『現実』」から目をそむけるなアホウ。
とかいう甘えた発言をするアホウ。(実際のところやる気満々だろアホウ)
荒らしがバレても平気なriorio氏なら、他の住人全員に総スカン食らっても大丈夫だと私は思うけどね。
ただ、上のような発言で、他者が面と向かって反論し辛い空気を作るのは開発者としていかがなものか。
0772riorio ◆rio2xMQlrQ
2010/05/13(木) 00:31:16ID:KpTzcKDIああーー ありますね。
今見てみたら、ソースは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ようにしたくていじってみたが、どうにもこうにも自分では。
http://u4.getuploader.com/freetrain/download/72/TransactionHistory.cs
できたところまで、がこれ。
「;が必要」とか怒られまくってビルドできません。
0774名前は開発中のものです。
2010/05/13(木) 13:14:24ID:LsMV4anFじゅんじゅわ〜
0775riorio ◆rio2xMQlrQ
2010/05/13(木) 17:54:53ID:KpTzcKDI次は表示部を作らなきゃ、というところでまたハマってます。
これはどーーーしたもんかなぁ。
0776riorio ◆rio2xMQlrQ
2010/05/13(木) 22:47:13ID:KpTzcKDI>・「売上レポート」を、日計過去30日間&月計過去12ヶ月間とる
「とる」だけはできてる、と、思う。
まだ「見れる」ように作れてないので、本当にちゃんととれてるか不安w
とりあえず今、数字で30日間&12ヶ月間をずらっと見せるだけやろうとしてる。
が、結構難航。いつできるかわかんない。
数字並べてみて、ちゃんと「とる」ことができてることが確認できたら、グラフ描画に
とりかかろうかとも思うけど、正直グラフはあんまし乗り気じゃない。
>・今はA4ゆずりで「駅に到着したら乗客全員そこで降りちゃう」けど、これを「一部は降りる
> が残りは乗り続ける」ようにできないか?とか思いついただけ
> それと並行して、ダイヤとして「乗車のみ(乗ってきた客全員とじこめ)」設定もあったら
> 欲しい?とか
> >>459 >>482 >>504
今一番やりたいのはこれ。グラフ描画あとまわしにしてこれやりたいぐらい。
なのでご意見・ご提案あればお早めにおねがいしますね。
>・子会社(建物)を意味のある収入計算をどうやるか
> これは私一人では思いつかないのでみなさまからのアイディアを大募集
> 現状の「子会社売買」ウィンドウに出てくる数値は、建設価格priceに立地の地価かけた
> 程度の超簡易なもの。収入の大小はあるが絶対赤字にならない。
これは結局、地価を使うしかないかと考えてる。駅の降車客は地価としてじわじわっと
周囲に広がるので。今の売買ウィンドウよりもうちょっと凝った演算して、地価が低い=
降車客のまばらな土地に高額な物件建てたら赤字になるようにはしたい。
>・サッカースタジアムと同様に、プロ野球チームをもって試合させて球場収入と試合後の
> 観客輸送できるように。画像は既存建物プラグインの球場から拝借
火水木同一カード3連戦〜金土日同一カード3連戦、土日はデーゲームという対戦カード
作成アルゴリズムに悩んでいる。そこさえできれば、あとはサッカーの流用でちょちょい
かと思うのだけどなー あとオフシーズンが10〜3月で、3月最後の火曜にシーズンインと
したいのだが3月最後の火曜をどうやって探す?っていうのも。
0777名前は開発中のものです。
2010/05/13(木) 22:51:37ID:fW05zUI/■ このスレッドは過去ログ倉庫に格納されています