Develop and Download Open Source Software

Browse Subversion Repository

Contents of /NeoFT/framework/TODO.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 104 - (show annotations) (download)
Mon Oct 14 11:05:33 2013 UTC (10 years, 5 months ago) by c477
File MIME type: text/plain
File size: 8796 byte(s)
ParamsReaderの修正、テストコード
1 ・プラグイン関連ファイルをParamReaderで抽象化、最終的にStreamで読み込むように
2 ・前景と背景に分かれた3Dオブジェクト(線路など用)
3 ・選択UIの基本、ステータス表示の基本
4 ・MRT昼夜同時描画/HitTest用マップ
5
6 ◎開発メモ
7 ビルドしてobjからbinへのファイルコピー時にNFT.Framework.dllがロックする問題の暫定対処に
8 \NeoFT\framework\AssemblyInfo.cs
9 \NeoFT\core\AssemblyInfo.cs
10
11 の29行目"AssemblyVersion"をコメントアウトした。最終リリースではコメント外すべき。
12
13 ■線路・道路の基本パターン
14 斜めは1:1対角線(45゚)と1:2(30゚)および2:1(60゚)対角線の3種類
15 1:1線の太さは、TTDX式『1/√2』ではなく、A列車式改『√2』とする
16 ※TTDX式 A列車式 A列車式改『√2』
17  ∠|/   □    /□/
18 ∠|/   □    /□/ 
19 TTDXはマス目の辺の中点を通るが、A列車は対角頂点を通る。
20 A列車式『改』と銘打つのは斜めに繋がるマスとマスの間も補間するため。
21
22 ■3D座標空間
23 XNA空間での座標軸   NeoFTのゲーム空間
24 x y z               y z x
25 \|/  yは上が正、x,zは奥が正    \|/  zは上が正、x,yは奥が正
26
27
28 北 東  後  
29  ×  左◇右 
30 西 南  前  
31 (X軸:東が正、Y軸:北が正、Z軸:上が正)
32 ・デフォルトは北東を画面上方とする。
33 ・InterCardinalDirectionはNE(北東)から始まる。
34 ■Ground/Cliff Polygon のID割り当てについて
35 【×】左後右前→ne,nw,sw,se?TerrainPatternのIDか?
36 【×】後左前右→ne,nw,sw,se(09/5/3訂正)
37 【○】前左後右→sw,nw,ne,se(13/2/17再訂正。影響範囲、要確認)
38 ・現仕様:ushortを4bitに分けて高さを格納。使われない頂点には0xfを適用
39  MSB<far|right|near|left>LSB 
40  →see GroundPolygon.PrivateMakePolygonID()
41  Cliffポリゴンではfarを使わない
42  →see CliffPolygon.PrivateMakePolygonID()
43 ◎もしもID割り当てを変える場合に留意すること
44 ・TerrainPieceTemplate.TerrainPolygonSetのコンストラクタでは
45  Ground/Cliff PolygonのIDの相関性を利用している
46
47 World.ProvisionalDistrictクラスの実装
48 →テラインマップから、実際の地形データを生成
49
50 DistrictFactory(=マップの実体を生成する部分)は、
51 交換は考えなくてもよいだろう。
52 広範囲のマップで効率のよいデータ保持を行うには?
53
54 アイデア:
55 フォームのGUIを定義できるコントリビューション
56 プラグインのPreferenceをxmlで記述できるように→設定画面汎用化
57 プラグイン読み込みをフィルタするプラグイン、プラグインマネージャにそのためのイベント追加
58
59 PictureManagerがキャッシュを実装する?→キャッシュのヘルパを用意
60 SpriteクラスがFilterクラスを呼び出し、生成画をキャッシュに保存する。
61 イメージのID検索:
62 ・他のコントリビューションから
63 ・デシリアライズ
64 →デシリアライズの際に、キャッシュに無ければ生成しなければならない。
65  生成するのはコントリビューション?ピクチャー?
66
67 マップ容量節約のため、ボクセル配列は[x,y,z]→[x,y]とする。
68 この配列は、地価データなど数値データと、ストラクチャ配列の参照を持つ。
69 z方向のスタックは、ストラクチャ配列に持たせるため、配列の次元は二次元
70 (ただし、描画時には、表示範囲のみ3次元配列に展開して、重ね合わせ判定に使用する。かも?)
71
72 memo:技術メモ
73 ・PixelShaderでTexCoordを0~1内に収める(Wrap)するにはfrac関数を使う
74 ・BitmapはCloneを使えばメモリ節約。しかもDisposeしても大丈夫。
75 ・int配列は通常参照渡しだが、Cloneを使えば値渡しと同じに扱える。
76 ・Q.いつフィルタを掛けるか。
77  A.OffScreenSerfaceを更新時に。→XNAのPSで
78
79 ■MultiRenderTargetの用途割り当てについて
80 ゲームビュー&プレコンバインドでは下記
81 0:RGB=昼間色、A=透過情報
82 1:RGB=ID塗り分け、A=深度
83 2:RGB=夜間色、A=照り返し
84
85 IDは24bit枠
86 ・地形は(x-y)値(16bit)+0xff
87 ・物体は global index(16bit) + local index(8bit,0xff以外)
88
89 ※アイデア:オブジェクトの深度情報は、カメラの最近点のz値をベースに加算すればよさそう
90  →複合型オブジェクトの保存とロードのサポート
91
92 ■地形パターンについて
93 地形の増減は0~4。それ以上は断崖。
94 ★ただし坂道用に緩やかな斜面のパターンを特殊例として用意。
95 対角線で三角形ポリゴンに分割して描画。
96 パターンは基本テクスチャから動的生成。側面は別プラグインとしてパターン生成&描画。
97
98 地形テクスチャは向きに関係なく彩度最大で書く。ゲーム画面では明暗加工される。
99 水平面はオリジナルより若干(≒1/16)暗くなる。もっとも光量の多い面では若干明るくなる。
100 地形テクスチャの色合わせは、ゲーム画面の色ではなく、オリジナル画像の色で合わせる必要がある。
101
102 地形の最少グリッドと建物配置の最少グリッドは同じにする。ポリゴン数低減などの工夫は当面考えない。
103 線路用勾配は本来の勾配地形+坂の手前1マス使う。
104 +1マスの延長分は坂の始点と終点それぞれで、水平面との滑らかな弧を描くために使う(予定)。
105
106
107 ■多言語対応の方針(下準備)
108 ◆アプリケーション・コアのテキスト(エラーメッセージなど)
109 nftfw.resouce.xml, nftcore.resouce.xmlなど外部ファイル化
110 動的な言語切替を考えなければ、単純置き換えでよい。
111 ◆プラグイン内テキストの多言語化対応
112 XmlUtil.LoadFileで読み込んだ際に、ファイルごと翻訳置換処理する。
113 個々のコントリビューションやGUI側で意識しないように。
114 ◆フォームなどのUI上のテキスト
115 メニューのようにサイズ自動調整のものはともかく、
116 カスタムフォームでは文字列長次第ではレイアウトの変更も必要。
117 フォームそのものを別DLLに切り分けるか、
118 javaライクにレイアウトを子コントロールに併せて変更させるか。
119
120 ■XNA4.0ライブラリの特性
121 ◆動作環境
122 WinXP以降
123 .NET4.0/XNA4.0/DirectX9.0c以上/
124 グラフィックボード ShaderModel2.0対応
125 ◆配布
126 現時点でMS側の明確な指針なし。バイナリを同梱してもOK?という記事を読んだ
127 ClickOnceを使う?と.NET/XNAを自動インストールしてくれる?要調査
128
129 ■優先度:高■
130 ClockEvent指定時間の最少単位を決める必要あり。それより大きくTickを進めるときは
131 最小単位に分割してループで回して各Queueを巡回する必要あり。
132 ○Zバッファを使った2D描画は可能か?→疑似2D描画:XNAライブラリで実現
133 OverrideTableもコントリビューション化しよう。
134 気候を定義するクラス、→季節オーバーライドを定義。パーサー、画像保持配列
135 ■優先度:中■
136 ☆特殊描画系ルーチン16ビットモードは実装不完全→XNAでは常に32bitモードなので不要
137
138 ■優先度:低■
139 PreFormatContribution:他のコントリビューションがplugin.xmlを読む前に修正を加えることができる。
140 地域マップモード:
141 +広域マップゲームを読み込む→地域選択→個別ゲーム
142 +個別ゲームはマップの人口、産業、需要などと、路線図を広域マップからアクセスできるように保存する。
143 +個別マップでマップ外に接続すると、隣の個別マップとの接続口になる。
144 +上記で、隣の個別マップでは、接続口からマップ内の路線や駅と繋がないと、機能しない。
145
146 画像
147 オーバーライド【高次元】
148 +早朝:午前:午後:夕方:夜:深夜
149 +曜日指定(土日祝日)
150 +日付(毎年)指定(毎月指定)
151 +春:夏:秋:冬
152 +月指定
153 レイヤー【中次元】
154 アニメーション【低次元】
155 +フレーム番号、ウェイト

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26