トップページ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/
0233名前は開発中のものです。2010/04/14(水) 00:58:10ID:dhX9BRNI
まずはどういう仕様になっているのかを調べた方がいいのでは?
もしかすると何かしらのバグかもしれんし。
0234riorio ◆rio2xMQlrQ 2010/04/14(水) 01:12:31ID:nT7zqhap
ソース読んだけど正直よくわからんw

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

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

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

この定数の定義、これがもうわからん。
なにが0.9996なのよ?ってところから。
次のAVERAGE_PASSENGER_PER_DAY_FACTORの式は意味は分からなくもないんだけど。
0235riorio ◆rio2xMQlrQ 2010/04/14(水) 01:15:46ID:nT7zqhap
その直後にある

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

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

landValue.addQの中身も分かってないからまとはずれなこと言ってるかもしれんが。
0236riorio ◆rio2xMQlrQ 2010/04/14(水) 02:02:53ID:nT7zqhap
LastWeekってのは、前週実績を日割り平均化した「1日あたり」の数値らしい。
377行目あたり。

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

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

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

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

んー。
チラ裏がすぎるみたいなんで。あとはblogにて。
0237名前は開発中のものです。2010/04/14(水) 02:17:17ID:nT7zqhap
裏でエンコしてた動画ができたので貼って寝る

大崎駅の一日
http://www.nicovideo.jp/watch/sm10384793
0238riorio ◆rio2xMQlrQ 2010/04/14(水) 02:33:40ID:nT7zqhap
布団はいったらハッと気がついたので書きにきた

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

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

じゃあまた布団に戻る ノシ
0239名前は開発中のものです。2010/04/14(水) 03:01:07ID:02/BwQwn
電車が来るペースが変わったから乗降が分割されたのかも

とプログラミングだめな俺がつぶやく
0240名前は開発中のものです。2010/04/14(水) 04:11:49ID:nT7zqhap
川口さんとこのwiki壊れてない?
画像がリンク切れとかいうレベルのものではなくまったく見れないんだけど。
復活できるのかな……
どなたかデータ持ってます?
0241名前は開発中のものです。2010/04/14(水) 06:20:31ID:3d+/yeeI
>>237
これダイヤ作成のイメージとしてはどんな感じ?

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

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

それ以外にも
・15秒単位の発車時刻設定を効果的に使う事が出来ているか(本当に必要なのか)
・1秒単位では列車間隔が広い、時間の進み方が遅いため退屈にならないか
この辺を改めて問いたい。
0242192010/04/14(水) 06:58:59ID:NdLVfidU
>>237
凄過ぎる。
設定にどのくらい時間が掛かったか知りたい。
0243名前は開発中のものです。2010/04/14(水) 07:23:21ID:dhX9BRNI
>>241
おい、また以前のこと繰り返すのか?
荒れるだけだぞ?
それと最新版動いたのなら自分で確認できるだろうし、自分でプレイして確認しろって
前と同じ事言われるだけだぜ?
0244名前は開発中のものです。2010/04/14(水) 09:16:18ID:o6X4Ga15
>>243
既に出来てるダイヤの使用感を聞くぐらいいいだろう。
リリースするたびに、こんなダイヤを組んで自分で試せっていうのか?

嫌ならやら安定版が出るまでやらなきゃいいだけだが、
テストプレイってのもプロジェクトの貢献方法の一つってこと忘れるな。
貢献する気がないなら、無視してROMってればいい。
0245名前は開発中のものです。2010/04/14(水) 20:42:44ID:02/BwQwn
>>244
何で退屈とか書くんだよ
お前さんの勝手な思い込みだろうが
0246riorio ◆rio2xMQlrQ 2010/04/14(水) 21:08:44ID:nT7zqhap
感想っていっても、プロジェクトリーダーがうかつなこと書けなくね?w
一プレイヤーと書いたことの重みが違うような気がする。

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

驚いたのは「すぐ破産する」ってことかな。
客も乗ってないのにガンガン11両編成運転してるからそらそうなんだが。
1日に100本超だかんねー。運行経費めっちゃかかってるわ。
10日に1回ぐらい破産する。
そのせいで放置できない。放置して発展待とうとしても「破産しました OK」
でボタン押されるの待ってしまってる。
メッセージボックス出さずに勝手に資金足して勝手に続けるモードこっそり
入れるかなぁ。
0247名前は開発中のものです。2010/04/14(水) 21:58:11ID:dhX9BRNI
経営モードは今成立してないから、とりあえずメッセージボックス出しているとこを潰して
メッセージ出さないようにだけしておけばいいのでは?

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

>嫌ならやら安定版が出るまでやらなきゃいいだけだが、
>テストプレイってのもプロジェクトの貢献方法の一つってこと忘れるな。
>貢献する気がないなら、無視してROMってればいい。
おまえ自身がテストプレイしてないだろ。
していれば>>241
>それ以外にも
>・15秒単位の発車時刻設定を効果的に使う事が出来ているか(本当に必要なのか)
>・1秒単位では列車間隔が広い、時間の進み方が遅いため退屈にならないか
>この辺を改めて問いたい。
こんなこと聞かなくてもわかるはず。
それで他の人にテストプレイするのも貢献だ、貢献しないならROMれとか言ってること
矛盾していることに気がついてないのか?
0248名前は開発中のものです。2010/04/14(水) 22:12:56ID:nT7zqhap
wikiのほうに質問があったので転載。
今後の課題ですね。


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

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

---- ----

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

ごめんなさい。現状、売却益は実装されていません。お金はまったく戻ってきません。
単に列車が消えてなくなるというだけです。
将来的には払い戻しがあるよう実装したいですが、かなり先のことになるかと思います。
-- りおりお (2010-04-14 22:05:07)
0249名前は開発中のものです。2010/04/14(水) 22:55:54ID:dhX9BRNI
経営要素はかなり弄らないと駄目かもねー
しかも経営ゲームとして成立させるためにはバランス取りが結構難しいかと。
0250名前は開発中のものです。2010/04/14(水) 23:42:23ID:3d+/yeeI
>>243
俺は何もやってないあなたに質問してるわけではないのだが。
0251名前は開発中のものです。2010/04/14(水) 23:49:09ID:3d+/yeeI
>>246
>感想っていっても、プロジェクトリーダーがうかつなこと書けなくね?w
>一プレイヤーと書いたことの重みが違うような気がする。


そういう事であれば仕方が無いです。
>>137のマップ、ただ3分毎に列車を走らせてるだけで車庫を利用したダイヤが完成してないが
それが完成したら一応動画うpしてみます。
0252riorio ◆rio2xMQlrQ 2010/04/15(木) 00:48:32ID:zqiuVh7O
FreeTrain EX A-versionのアルファ版リリースです。

バージョンはα3.0.1.4です。

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

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


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


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

同じくフォーラムに要望のあった
列車プロパティ
については実現可能性が低いと思います。
そのあたりの事情についてはフォーラムのチケット参照。
ご意見があったらこちらでもwikiでもフォーラムでもお願いします。
「いやいや、簡単にできるよ」みたいなの歓迎w
0253riorio ◆rio2xMQlrQ 2010/04/15(木) 01:29:41ID:zqiuVh7O
あーー!大事なこと忘れてた。

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

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

お手数かけますが、2以前系統と3系統とセーブデータ両方作ってたら
拡張子変えないとどっちがどっちかわからんなってきたので。
0254名前は開発中のものです。2010/04/15(木) 03:31:47ID:zqiuVh7O
駅が周辺の自動発展に与える影響を調べてたんだけど。

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

strength *= F_StrDiffuse;
strength = target.ScoreExported;

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

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

さらに。上の行で*= F_StrDiffuseで値をかけてるのが、次の行で=で代入では
まったくなにもしていないことになりはしないか。ここ行が逆じゃない?
ってことで
strength = target.ScoreImported;
strength *= F_StrDiffuse;
にしてみます。
0255riorio ◆rio2xMQlrQ 2010/04/15(木) 04:17:00ID:zqiuVh7O
なんかヤメドキがつかめなくて、直してビルドしてリリースしちゃった!
だだだーーっとやったので、zip作成ミスなどなんか細かなケアレスミスがありそうで
こわい!!


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


あとPrototype3のほうは集客範囲を10から25に広げました。
列車の進行速度が相対的に速くなったことで駅間を広くとるであろうことを
想定しました。
0256名前は開発中のものです。2010/04/15(木) 07:44:05ID:zqiuVh7O
しばらく放置してから眺めたら、いきなり田舎に野球場がぼーーんってできてたので
なんじゃーーって調べたら。
39番さんから依頼されて作った野球場の価格が1だったために建っちゃったものだった。
価格5000に修正したものを第2うpロダにあげましたのでさしかえお願いします。
ほかにも価格がおかしいpluginあるかも。


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

人口のimplもうちょっと種類増やしてもいいかもなぁー
0257名前は開発中のものです。2010/04/15(木) 10:49:53ID:zqiuVh7O
以前、サッカースタジアムplugin追加したいなーってかたがおられた気がしますが。

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

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

<contribution type="anonymous" id="{riorio-test-43c8-941F-896EAF9396AF}">
<class name="freetrain.world.soccerstadium.StructureContributionImpl"
codebase="../org.kohsuke.freetrain.soccerStadium/bin/FreeTrain.SoccerStadium.dll" />
<name>サッカースタジアム</name>
<price>2000000</price><!--680*4-->
<size>10,6</size>
<height>2</height>
<sprite origin="0,0" offset="78">
<picture src="stadium.bmp">
<override when="night" src="stadium_n.bmp"/>
</picture>
</sprite>
<population>
<!-- スタジアムの集客性は特別なので特別な人口特性を実装 -->
<class name="freetrain.world.soccerstadium.PopulationImpl"
codebase="../org.kohsuke.freetrain.soccerStadium/bin/FreeTrain.SoccerStadium.dll"/>
</population>
</contribution>
</plug-in>
0258名前は開発中のものです。2010/04/15(木) 15:06:14ID:30rT6269
どうせなら今ある野球場も現状ただの建物だけど、サッカースタジアム方式に。

ついでに鉄道ゲームなんだから、試合開催日は人気に応じて乗降客が増えたり。
まあこれは帰りはともかく行きは難しそうだし、実際の鉄道も甲子園とか所沢は
臨時電車が出る(所沢は普段はローカル線な事もあるが)けど、水道橋みたいに
停車時間余分に取るだけだったり、だいたいは何にもしてないから微妙と言えば
そうなのだが。
0259名前は開発中のものです。2010/04/15(木) 15:21:47ID:fc9c23Uv
野球場はまだ使用してる日多い方だと思うよ
0260名前は開発中のものです。2010/04/15(木) 16:04:18ID:zqiuVh7O
>>258
あーw
考えてたこと先回りされちゃったww

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

今のサッカースタジアムも駅への影響を時間で激しくだすようにしてるようなコードに
見えるんだけど。
駅、真横にスタジアム、それだけにしてみて(Beta2で)そのコードに書かれてる時間に
駅発車させてみても乗車人数に変化が見られない。
なんか川口さんが意図したように動いてない感じがしてる。
0261名前は開発中のものです。2010/04/15(木) 17:10:44ID:zqiuVh7O
気になったんだけど。

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

ここで計算した損益が表に出てきてるところがないような気がするんだけど。
0262名前は開発中のものです。2010/04/15(木) 17:23:47ID:zqiuVh7O
自己解決

表示 〜 売上レポート

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

で、表示するほうに移すと、サッカーチームの運営経費がレポートされると!!
なるなる〜〜
0263名前は開発中のものです。2010/04/15(木) 20:32:42ID:gemiL8s5
>>257
自分です。
ありがとうございます。

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

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

当の自分はまだグラフィックに一苦労・・・というより割く時間が・・・
0264名前は開発中のものです。2010/04/15(木) 20:58:58ID:zqiuVh7O
曜日オーバーライドはできないですねぇ。

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

私もスタジアムの中身いじっててJリーグの熱心なファンの知人に確認したのですが。
シーズン開始は3月なんですってね。
終了が12月と。
3月は春だからいいとして、12月が冬なんでどうしますかねぇ。
季節気にせず、年中夜明るくてもいいんじゃないかと。
0265名前は開発中のものです。2010/04/15(木) 21:04:48ID:gemiL8s5
そうですね
改めて考えると一種のイルミネーションとしてそのままでもよさそうですね。
わざわざありがとうございます。
0266riorio ◆rio2xMQlrQ 2010/04/16(金) 00:48:21ID:VCFNi/Wy
動かないものひろげるの非常に心苦しいのだけど、煮詰まってどこか簡単な罠にはまってる
だけだと思うんだけど解決できなくて困ってるので広げてみる。

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

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

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

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

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

pplがからむ行をコメントアウトしてビルドしたら、試合はできると思います。
おたすけください。
0267名前は開発中のものです。2010/04/16(金) 01:10:08ID:/xSXiaOg
readonlyはconstructor内でしか初期化できないです
0268名前は開発中のものです。2010/04/16(金) 01:11:43ID:/xSXiaOg
正しくはインスタンス生成時までにしか変更できない、です
0269riorio ◆rio2xMQlrQ 2010/04/16(金) 01:19:17ID:VCFNi/Wy
あっと。

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

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


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

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

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

っていうか C# の基本的な内容じゃないか
0271riorio ◆rio2xMQlrQ 2010/04/16(金) 01:40:29ID:VCFNi/Wy
ええと待ってよ。

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

いや、それでよ、重要なのはそんなことじゃなくて。
PopulationImplって、実装を形作ってるだけで実行されなくね?
今のままだと。
ここ、私がこうしたわけじゃなくて最初っからこうなってたの。ほぼこのまま。
ちゃんと実行されれば、駅のstation listnerに捕捉されてpopulationが駅の待ち客に
加わるはずなんだけど、私がいじる前、川口さんが書いたであろうコードのそのとき
から、動かして様子見てると駅の待ち客に反映されてなかったの。
これじゃあ意味が無いから、ちゃんと実行されて駅のstation listnerに捕捉される
ようにするにはどうしたらいいんだろう??
0272名前は開発中のものです。2010/04/16(金) 02:42:33ID:9hVh1gPJ
PopulationImpl は書かれただけで使われてなかったクラスなんだから
動作に反映されてなくて当然だろう・・・

たぶん作者の意図としては StadiumStructure の StructureContributionImpl 経由で
Population として PopulationImpl を扱うつもりだったんじゃないかな
ざっと見ただけだし全体の構成も全然知らないからそれでいいのかどうかわかんないけど
0273riorio ◆rio2xMQlrQ 2010/04/16(金) 03:18:51ID:VCFNi/Wy
いや、ありがとうございます。
「書かれただけで使われてなかった」
ということが事実として確定できたのが収穫です。

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

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

しかし川口さんほかもここまで凝りまくったサッカースタジアムpluginを作って
おきながら、あとほんのちょっとの駅に結びつけるところだけやり残してた、
そのままで今まで来てたというのが若干不思議ではあります。
あと、誰も駅利用客が増えないことを疑問持たなかったんかとも。
0274riorio ◆rio2xMQlrQ 2010/04/16(金) 03:21:32ID:VCFNi/Wy
話ちょっち変わるんですが。
従来FreeTrainでは、駅で実際に列車に乗った乗客数の影響が、その後の駅に
1時間あたり0.8倍されて斬減しながら残っていくというアルゴリズムになっています。

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

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

ほんとは15分ごとに0.8倍とかゆるやかに影響した方がいいんでしょうけど、
「1時間後に」(0.8倍)ってなってるリピートタイマーの仕掛けられるのが駅建設時
なんで、もし間隔をいじろうとするとまた駅全部建て直しになっちゃうんです。
それでもゆるやかで自然な増減したほうがいい、という意見があればそうします。
駅建て直しめんどくさーーいって意見が多ければ1時間単位維持でパラメータいじります。
0275名前は開発中のものです。2010/04/16(金) 03:45:32ID:/xSXiaOg
ソースに流されてみた限りではContribution生成時、pupulationもメンバとして生成されているみたい
なのでgame生成時にそいつを渡すなり参照するなりすればいいと思う
0276名前は開発中のものです。2010/04/16(金) 08:59:58ID:dXJM5xRH
>>274
0.8がけしてるってのはStation.csのgonePassengersのこと?
だとすると、400人乗ったのが一時間後に320人になるのはその通りですが、
その減った80人が待ち人数に差し戻されるような風にはなってないかと。
ざっとみた感じですが。
待ち人数はpopulationですが、どうやら毎回周囲の建物から集計しなおしてるようなので、
そもそも積み残しの乗客を次の時間に引き継ぐような処理がなさそう。

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

一時間ごとに0.8がけしてるのは・・・明確な理由は不明だけど、
推測するなら、建物人口からの乗客数は、一時間前と後では、
80%は同じ人とみなす…ということかな。
上で、積み残しを引き継がないと書いたけど、
80%が積み残しで20%が新規増加分というイメージかな。
で、積み残し分である80%に対しては
一時間前にgonePassengersで既に運んだ人数を減らす
・・・そんなコードのように思えます。
0277名前は開発中のものです。2010/04/16(金) 09:09:43ID:dXJM5xRH
>>276を書いてて思った問題点。
その1
毎回populationを集計しなおしているので、列車数と周囲の建物が増えるとすごく処理が重くなりそう。
一時間毎に一回集計すれば十分。

その2
集計したpopulationが一時間前に比べて大幅に減った場合、
gonePassengersを0.8がけした値が上回ってしまう場合があり、
直前の一時間に大量輸送していると、次の一時間は
乗せるべき乗客が居ないことに。
仮に新規増加分は20%と考えるならせめて、次のようにすべき
total = Math.max(0,population*0.8f-gonePassengers)+population*0.2f
※上の式、populationは毎回集計しない前提で
0278266-2772010/04/16(金) 10:15:44ID:p64ILdlA
あー、そうそう。
もう一点、問題というか、気になったところ。
駅のプロパティに表示される駅の待ち乗客数は
gonePassengersで差し引く前のpopulationを表示してるので、
どれだけ列車が客を持って行っても減らないんじゃないかな?
0279名前は開発中のものです。2010/04/16(金) 18:20:38ID:VCFNi/Wy
wikiから転載

----

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

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

----

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

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

----

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

減ってないですね。 昨晩、β2で3日分、駅のプロパティの待ち乗客数を集計してみたけど、
数値が変動するのは毎時00分の時だけ。 ゲーム内の土日などはCPUは建物を建てないので、
1人の誤差も無く金曜日の同時刻の人数が表示されます。 -- OPB (2010-04-16 13:50:52)
0280riorio ◆rio2xMQlrQ 2010/04/16(金) 18:51:31ID:VCFNi/Wy
>>276
> その減った80人が待ち人数に差し戻されるような風にはなってないかと

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

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

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

>それがないと、

ご明察

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

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

ただα3の時間軸では大きすぎると思います。
なのでα3では0.5にするかどうするか〜〜というあたりも考えてみてください。
0281riorio ◆rio2xMQlrQ 2010/04/16(金) 19:01:34ID:VCFNi/Wy
>>277
>一時間毎に一回集計すれば十分。

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

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

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

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

なるほど、そうですね。

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

減りません。というかこれはそういう仕様だと考えています。
ですが、この仕様が良い仕様かどうかは議論すべきかと思います。
また川口さんは「乗りたい客のうち、来た列車に乗り込むのは30%だけ、
残りは乗らない。行きたい方向と違う列車だったからとかの理由脳内補完で」
という考えでプロパティ表示人数の30%しか乗りません。30%後の変数名としては
availですね。
駅プロパティに表示する数値として、30%する前の現状でいいのか、いや30%した後
を表示してくれた方が親切だよってなるか、これも議論がありそうに思います。
0282名前は開発中のものです。2010/04/16(金) 20:22:58ID:Zo1toCfv
乗車待ち人数は実際に乗る人数を表示してほしいな
乗車街を参考にして列車を走らせても、乗車率が0だったりするし
というか、乗らないならば乗車待ちじゃない訳で


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

そういえば、駅の影響範囲(乗車にくる範囲)を表示する事ってきないんですかね
数値で示されてもどれぐらいかいまいちわかりませんので
0283名前は開発中のものです。2010/04/16(金) 22:49:12ID:rw7NiLeD
そんなの無用にゲームっぽくなるだけで嫌だなあ。
見えない方が風流
0284riorio ◆rio2xMQlrQ 2010/04/17(土) 02:19:10ID:UXA6Esz4
サッカースタジアムのソース、動くようにしてみたのですが
http://u4.getuploader.com/freetrain/download/56/soccerStadium2021src.zip
パス src

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

わっかんねーー 助けて


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

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

なお、サッカースタジアムも含めて全体のソースはコミット済です。
全体が欲しい方もどうぞ。
0285riorio ◆rio2xMQlrQ 2010/04/17(土) 08:33:49ID:UXA6Esz4
たいふ〜んさん作115系で、国鉄身延線色やJR東日本弥彦線色で中間車が色化けする
問題に対処したパッチです。
たいふ〜んさんのpluginデータをインストールした状態でこのパッチを上書きしてください。

http://www.hiyohiyo.info/~riorio/freetrain/plugin-patch.html
0286riorio ◆rio2xMQlrQ 2010/04/17(土) 10:13:55ID:UXA6Esz4
サッカー場がなんとかなってからにしよーかと思ったのですが、
α3で遊んでる人も多いのかなーと思ってα3にも移植しました。
3.0.1.6出てます。

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

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

なお、今後サッカー場のプログラミングに駅への影響など課題が解決された
新バージョンが出ると、再びサッカー場を建て直す必要が出る場合があります。
0287riorio ◆rio2xMQlrQ 2010/04/17(土) 10:18:35ID:UXA6Esz4
あ……
すみません、バグみつけました。結構深刻っぽいです。

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

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

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

分かった方教えてください。
0288名前は開発中のものです。2010/04/17(土) 13:39:41ID:teq+kmYJ
clock.unregister
0289riorio ◆rio2xMQlrQ 2010/04/17(土) 13:55:41ID:UXA6Esz4
>>288
ありがと
でもなんかダメみたい

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

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

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

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

うーーん。「撤去できないアイテムです」って言い張って実装してもいいんだけど ^^;;
0290riorio ◆rio2xMQlrQ 2010/04/17(土) 14:02:05ID:UXA6Esz4
とりあえず最新のサッカースタジアムソースコードはこれ
http://u4.getuploader.com/freetrain/download/57/soccerStadium2022src.zip
パス src
0291riorio ◆rio2xMQlrQ 2010/04/17(土) 14:58:29ID:UXA6Esz4
すいません、ちまちまバージョンアップしてます。
サッカースタジアム問題は未解決です。
ご助力お待ちしてます。


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


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


wikiに、OPBさんから早速、サッカー試合開催日のツッコミが入ってた。
そこ今直してたんだよぉぉぉぉw
0292名前は開発中のものです。2010/04/17(土) 15:06:25ID:aBfTFvtP
サッカー場は昔のバージョン(いくつだか忘れたが、セーブデータ互換性うんぬんの頃のやつ)
だとサッカー場撤去でもブルドーザーで潰しても死なないね。
0293riorio ◆rio2xMQlrQ 2010/04/17(土) 15:15:16ID:UXA6Esz4
>>292
私が持ってるのは20050903版EXだけなんですが。
それだと撤去できます。
エラーにはなりません。

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

今回私がいじくって経費がかかるようにしたので、試合もやめるようにしないといけない
んですが……
うーーーーーん。
0294名前は開発中のものです。2010/04/17(土) 18:21:54ID:teq+kmYJ
何時のだか不明だが前のやつでもtimer解除はされてないね

null比較は何のためにやっているんだろうか
とりあえずremoveregister内のonGameDateのunregisterを一回に、
removeの際全てのfutureGameに対しremoveregisterを呼ぶ、
ついでにgameフィールド消去して呼ばれない事を簡易確認
しばらく手直し中…ver2にも3にも対応するためにtotal〜を消したい
0295名前は開発中のものです。2010/04/17(土) 18:48:03ID:+zbX1cNw
>>289
> World.world.clock.unregister( new ClockHandler(onGameDate) );
別のハンドラで取り消し要求しても意味ねぇよタコ
0296名前は開発中のものです。2010/04/17(土) 18:50:36ID:qoAOMqia
>>295
ところがどっこいC#の仕様だとそれがOKっぽいんだな。
以前、実際テストコード書いて確かめた。
0297名前は開発中のものです。2010/04/17(土) 18:59:07ID:teq+kmYJ
Delegate.Equalsより
比較する 2 つのメソッドがどちらもインスタンス メソッドであり、同じオブジェクトの同じメソッドである場合、その 2 つのメソッドは等しいと見なされ、比較対象も等しいと見なされます。
0298名前は開発中のものです。2010/04/17(土) 19:06:02ID:qoAOMqia
あ、ごめん、>>296で書いたのは
delegateを+=とか-=演算子で追加/削除する場合についての仕様だった。
unregisterは中でEqualsで比較してるから、どうなるか判らないです。
希望的観測では、Equalsも適切に実装されてるかもしれないけど。
0299名前は開発中のものです。2010/04/17(土) 19:08:47ID:qoAOMqia
入れ違いになりましたね。
>>297はいまいちわかりにくいけど、
OKだと言ってるっぽいですね。
0300riorio ◆rio2xMQlrQ 2010/04/17(土) 19:26:05ID:UXA6Esz4
ごほごほ、いつもすまないねぇ……

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

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


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

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

>>297
そのあたりも理解して書いたわけじゃなく、ほかの箇所のtimerをunregisterしてる
ところが全部newで読んで動いてるので真似ただけ。
0301名前は開発中のものです。2010/04/17(土) 19:48:26ID:qoAOMqia
>>300
フォントをシリアライズするってことは、何MBもあるフォントをわざわざバイナリコピーして保存するってことですよ?
さらに、デシリアライズした時にはシステムフォントにインストールするつもりなんでしょうか?

普通どんなソフトでも覚えるのはフォント名だけ。
仮にそのフォントが見つからなければデフォルトのを使うってのが常道かと。
0302名前は開発中のものです。2010/04/17(土) 20:03:23ID:+zbX1cNw
>296-299
もうちょっとコード見てみた。
Game::removeregisterを呼んでるのはStaduimStructure.cs145行目で、
 game.removeregister();
なんだけど、このgameが指してるのが最後にスケジュールされたGameなんだな。(StadiumStructure::scheduleNewGame)
なので、結局
World.world.clock.unregister( new ClockHandler(onGameDate) );
は次のGameのハンドラではないので、削除はされないことになる。
なので、gameに対して呼ぶのでなく、futureGamesの各要素に対してremoveregisterする必要がある。
。。。と推測される。
# いや、手元にC#環境(つーかWindows環境)無いから断定できないけど。
0303名前は開発中のものです。2010/04/17(土) 20:04:51ID:+zbX1cNw
ちょっと修正
>は次のGameのハンドラではないので、削除はされないことになる。
は次のGameのハンドラではないので、削除はされないまま次Gameが発生することになる。
0304riorio ◆rio2xMQlrQ 2010/04/17(土) 20:17:01ID:UXA6Esz4
>>301
いやー
C#(.NET)ってなんでもお手軽にできてるから、
Fontクラスをシリアライズに食わせたら向こうでうまくフォント名だけ切り出して
保存してくれるかと思ったんだが、そこまでお気軽ではなかったのね。

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

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

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

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


>>294
あっ、そうだ。
ver2むけに作ってくれたら、3向け移植はやりますよ。
0305riorio ◆rio2xMQlrQ 2010/04/17(土) 20:40:52ID:UXA6Esz4
ぐぐってたらこんなんがかかってきたんだけど……

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

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

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

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

理解してないけどw

が、今のFreeTrain EX Avのオプション保存はXMLシリアライズを使っているので
結局それとは別にSoap formatterでフォント専門の設定ファイルを読み書きする
必要はありそーーです。
0306名前は開発中のものです。2010/04/17(土) 22:22:52ID:teq+kmYJ
全然進まないのでとりあえずup
ttp://u4.getuploader.com/freetrain/download/58/soccerStadium.zip

パスはsrc
変更箇所は294の点だけ
ver2向けの内容です
0307riorio ◆rio2xMQlrQ 2010/04/17(土) 22:47:13ID:UXA6Esz4
>>306
もらいました。

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

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


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

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

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

ノートPCかどこかにあると思われる、画像地形ローダーに読ませた元画像を探した
ほうが早いかもな状況デス
0308名前は開発中のものです。2010/04/17(土) 23:41:13ID:UXA6Esz4
ちなみに今日サッカースタジアムの息抜きにやってた成果がこんなかんじ
http://u4.getuploader.com/freetrain/download/60/fontchangesample.PNG

なーんかね、保存がうまくできないんですよ。
一回だけは設定できるんですけど……
WinFormまだよくわかってねー
0309名前は開発中のものです。2010/04/18(日) 00:03:13ID:R1+Ex9Fn
>>307
こちらの環境では290のものでもエラーが確認できませんでした
アサートは確認しましたが
なのでできればエラーが出ないかどうかを確認していただければと思います

また独自のpopulationを内部実装しているのでpluginのpopulation記述は無い方がいいのでないかと思います
建物毎の動的なpopulationの実装をcoreのみで出来ればよかったのですが難しいようでした
0310riorio ◆rio2xMQlrQ 2010/04/18(日) 01:05:16ID:V7U+wPts
GlobalOptions.csのなかのGlobalOptionsクラスのload()って、
いつ呼ばれることが確定するんだろう。

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

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

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

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

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


>>309
290時点では、一度建てて壊してから半年ぐらいブン回すとエラーになってました。
306では同じ操作してもまったくエラーにならないので大丈夫そうです。
アサート出てました?おいといていいのかな……
031119改めUmezawa2010/04/18(日) 06:46:37ID:/R9j2sfu
>>307
地殻変動でも起こったようなマップですねw

これって空マップ作成から行なったものですよね?
どんなサイズで(どんな値を入力して)生成したか教えて下さい。
0312名前は開発中のものです。2010/04/18(日) 07:11:47ID:uKKCvYHx
他のスレで質問するときC#部分はある程度わかるとかいってたのはこのレベルだったのか
全然わかってないじゃないか
0313Umezawa2010/04/18(日) 07:38:13ID:/R9j2sfu
>>312
誰宛?
0314名前は開発中のものです。2010/04/18(日) 08:32:10ID:Eud58HLD
>>310
クラスのスタティックフィールドは、クラスがはじめて参照された時に初期化される
(上記の場合 new GlobalOptions().load() が呼ばれる)はず。

ってか、ブレークポイント設定するなり、デバッグプリント仕込むなりすればわかるじゃん?
0315名前は開発中のものです。2010/04/18(日) 13:34:28ID:wLtz4puF
いじるにしてもあっちもこっちもって一度に手広く行き過ぎない方がいいよ
わけわかんなくなりやすくなるから
経験者談
0316Umezawa2010/04/18(日) 17:21:29ID:/R9j2sfu
とりあえずホームだけですが、駅の入出力もできるようにしました。
0317riorio ◆rio2xMQlrQ 2010/04/18(日) 17:51:01ID:V7U+wPts
β2.0.2..3出しました。

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

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

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

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


>>312
ごめんなさい

>>314
だんだん分かってきました
ありがとうございます
0318riorio ◆rio2xMQlrQ 2010/04/18(日) 17:53:08ID:V7U+wPts
>>311
空マップ作成は400x600x16で
位置ずらしが+の16,16だったかと思います
0319名前は開発中のものです。2010/04/18(日) 17:56:26ID:V7U+wPts
若干調整いれたので、サッカースタジアムを直してくださる方は次の最新ソースを
使って直してくださるようお願いします。

http://u4.getuploader.com/freetrain/download/61/soccerStadium2023src.zip
パス football
0320Umezawa2010/04/18(日) 18:13:42ID:/R9j2sfu
>>318
了解しました。

もしチョココロネと完全同一のマップ取得が目的でしたら、
空マップの作成時に 400x568x16 と入力して、
位置ずらしを0,0にすればOKです。
0321Umezawa2010/04/18(日) 18:19:33ID:/R9j2sfu
>>307 >>318
空マップ400x600x16で(16,16)ずらしてみたんですが、
再現できませんでした。
0322名前は開発中のものです。2010/04/18(日) 19:13:57ID:V7U+wPts
>>321
あ、あれ(汗
すみません、どうやったらこうなったのか忘れました。

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


P.S.
川口さんのwikiが復活してたので、内容をちまちまとAvのwikiに移植する作業を始めました。
どなたかお暇な方、手伝ってくださるとありがたいです。
0323名前は開発中のものです。2010/04/19(月) 01:21:40ID:9jizZnUw
パラメータをいじったりしたところが、なぜそうしたのか後任の人が分からなくなったら
いけないと思ったので、wikiに書き残してきました。

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

もっとこれも書いとけとかあったらヨロ。
っていうかまとめてくれていい。
0324riorio ◆rio2xMQlrQ 2010/04/19(月) 08:06:54ID:9jizZnUw
Prototype(ALPHA)3の最新ソースを、ブランチを分けてSourceForgeにコミット
しました。

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

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

このALPHA3内のソースでちゃんとビルドできるか、どなたか確認お願いします。
ひょっとしたら置き換えなどがうまくいってないかもしれないので。
0325Umezawa2010/04/19(月) 12:21:49ID:CoAmGge4
質問です。
「列車の追跡」機能で追跡中の列車情報を、外部Pluginから参照する
方法は無いでしょうか?

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

前面展望のようなものを作ろうとしています。
もちろん、PS版A4にも劣るようなものですがw
0326riorio ◆rio2xMQlrQ 2010/04/19(月) 16:25:57ID:9jizZnUw
現状ないと思われ。

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

あれ作ったのついこないだですし。
0327Umezawa2010/04/19(月) 16:47:16ID:CoAmGge4
>>326
ホントですか!
ではお言葉に甘えて、public readonly かなにかにするか、
getメソッドでも追加していただけるとウレシイです。
0328riorio ◆rio2xMQlrQ 2010/04/19(月) 17:18:58ID:9jizZnUw
ふと思ったんだけど、それから取得するんじゃなくて、
TrainTrackingWindowがやってるのとまったく同じようにしてダイアログ
持ってツールチップ持ってきて、自分でTrain検索したらどうでしょう?
そっちのほうが簡単そうなんですけど。
0329Umezawa2010/04/19(月) 17:27:54ID:CoAmGge4
>>328
それも思ったんですが、クォータービューの追跡画面と、
前面展望画面が連動しているとカッコイイし(ニコニコでよくある)、
根本的な問題として、私が C# の GUI を知らないというのがあります。

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


もちろん、TrainTrackingWindow の修正は、今度何かの変更を
加えるときのついでで構いませんので、できればよろしくお願いします。
メンバ変数 Train train の private 宣言を public readonly に
変えるだけで結構です。
0330riorio ◆rio2xMQlrQ 2010/04/19(月) 17:48:33ID:9jizZnUw
そちらで本体C#のビルドできますよねぇ?

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

私がpuclicにする改造するのを待ってUmezawaさんが始めてって行ったり来たりすると
開発のスピード感がなくなるので、ガンガンやっちゃってください。
0331Umezawa2010/04/19(月) 18:09:44ID:CoAmGge4
>>330
ゴメン、本体はビルドできないです。

本当にスピードに関しては気にしないで下さい。
お遊びの期待するとガッカリする前面展望ですし。
0332riorio ◆rio2xMQlrQ 2010/04/19(月) 18:35:35ID:9jizZnUw
>ゴメン、本体はビルドできないです。

あっ、あれっ(ガクっw

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

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

これでいいのかなぁ。

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

いやでも期待しちゃうなぁ〜〜
できれば将来のメンテナンス考えるとC#で組んでもらいたいところなんですがねぇ……
ぜいたくは言いません。
■ このスレッドは過去ログ倉庫に格納されています