• R/O
  • HTTP
  • SSH
  • HTTPS

提交

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqt誰得windowscocoapythonphprubygameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

Violet Vreath is Shooter Game for Windows XP+(個人制作シューティングゲーム)


Commit MetaInfo

修订版807576f71f532b47a20713d4220d19a126c62035 (tree)
时间2022-05-17 23:43:45
作者gecchi <gecchi@boch...>
Commitergecchi

Log Message

またちょっと整理

更改概述

差异

--- a/GgafCore/include/jp/ggaf/core/God.h
+++ b/GgafCore/include/jp/ggaf/core/God.h
@@ -70,13 +70,16 @@ public:
7070 HANDLE _handle_god_love01;
7171 /** [r] GgafCore::God::love スレッドID */
7272 unsigned int _th_id01;
73- /** [r] 神のフレーム開始システム時間 */
74- DWORD _time_at_beginning_frame;
73+// /** [r] 神のフレーム開始システム時間 */
74+// DWORD _time_at_beginning_frame;
7575 /** [r] 次にこの世を活動させるシステム時間 */
7676 DWORD _time_of_next_view;
77+
78+ DWORD _time_calc_fps_next;
79+
7780 /** [r] 神誕生からのフレーム数 */
7881 frame _frame_of_God;
79- int _cnt_frame;
82+ frame _cnt_frame;
8083
8184 /** [r] この世を視覚化できなかった(スキップした)回数 */
8285 int _skip_count_of_frame;
@@ -85,7 +88,7 @@ public:
8588 /** [r] fps値(約1000ms毎に計算される) */
8689 double _fps;
8790
88- DWORD _time_calc_fps_next;
91+
8992 /** [r] 描画フレームカウンタ */
9093 frame _visualize_frames;
9194 /** [r] 前回fps計算時の描画フレームカウント値 */
@@ -170,7 +173,7 @@ public:
170173 virtual Spacetime* createSpacetime() = 0;
171174
172175 /**
173- * 描画を一時停止し、フレームと時間の同期を行う
176+ * フレームと時間の同期を行う
174177 */
175178 void syncTimeFrame() {
176179 _sync_frame_time = true;
--- a/GgafCore/src/jp/ggaf/core/God.cpp
+++ b/GgafCore/src/jp/ggaf/core/God.cpp
@@ -14,6 +14,7 @@ using namespace GgafCore;
1414
1515 CRITICAL_SECTION God::CS1;
1616 CRITICAL_SECTION God::CS2;
17+
1718 #ifdef MY_DEBUG
1819 unsigned int God::_num_drawing = 0;
1920 #endif
@@ -36,9 +37,9 @@ God::God() : Object(),
3637 ::InitializeCriticalSection(&(God::CS2));
3738 ::ResumeThread(_handle_god_love01);
3839 ::SetThreadPriority(_handle_god_love01, THREAD_PRIORITY_IDLE);
39- _time_at_beginning_frame = timeGetTime();
40- _time_of_next_view = _time_at_beginning_frame;
41- _time_calc_fps_next = _time_at_beginning_frame + 1;
40+ DWORD time_now = timeGetTime();
41+ _time_of_next_view = time_now;
42+ _time_calc_fps_next = time_now + 1;
4243 _visualize_frames = 0;
4344 _prev_visualize_frames = 0;
4445 _is_behaved_flg = false;
@@ -127,7 +128,7 @@ void God::be() {
127128 //
128129 //【安定時の理想図】
129130 // _time_of_next_view _time_of_next_view
130- // | 3frame begin | 4frame begin
131+ // | 3frame begin(_frame_of_God++) | 4frame begin(_frame_of_God++)
131132 // | | | |
132133 // v v v v
133134 // ==================================================================================================================================================> 時間
@@ -156,9 +157,9 @@ void God::be() {
156157 }
157158 #endif
158159 _pSpacetime->_pGod = this;
159- _time_at_beginning_frame = timeGetTime();
160- _time_of_next_view = _time_at_beginning_frame+100; //0.1秒後開始
161- _time_calc_fps_next = _time_at_beginning_frame + 1;
160+ DWORD time_now = timeGetTime();
161+ _time_of_next_view = time_now + 100; //0.1秒後開始
162+ _time_calc_fps_next = time_now + 1;
162163 }
163164 #ifdef MY_DEBUG
164165 //神(別スレッド)例外をチェック
@@ -166,9 +167,16 @@ void God::be() {
166167 throw *_pException_god;
167168 }
168169 #endif
170+ //フレームと時間の同期を行う
171+ if (_sync_frame_time) {
172+ DWORD time_now = timeGetTime();
173+ _time_of_next_view = time_now + 100; //0.1秒後開始
174+ _time_calc_fps_next = time_now + 1;
175+ _TRACE_("God::be() フレームと時間の同期を実施。");
176+ _sync_frame_time = false;
177+ }
169178
170179 if (_is_behaved_flg == false) {
171- _is_behaved_flg = true;
172180 BEGIN_SYNCHRONIZED1; // ----->排他開始
173181 _frame_of_God++;
174182 presentSpacetimeMoment(); //?
@@ -176,50 +184,49 @@ void God::be() {
176184 _time_of_next_view += _apaTime_offset_of_next_view[_slowdown_mode][_cnt_frame];
177185 _cnt_frame++;
178186 if (_cnt_frame >= CONFIG::FPS) { _cnt_frame = 0; }
179- if (timeGetTime() >= _time_of_next_view) { //描画タイミングフレームになった、或いは過ぎている場合
180- //makeSpacetimeMaterialize はパス
187+
188+ if (timeGetTime() >= _time_of_next_view) {
189+ //描画タイミングフレームになった、或いは過ぎている場合
190+ //描画無し(スキップ時)?はパスする。
181191 _is_materialized_flg = false;
182192 } else {
183193 //描画タイミングフレームになっていない。余裕がある。
194+ //描画有り(スキップなし)
184195 _is_materialized_flg = true;
185196 makeSpacetimeMaterialize(); //?
186- //但し makeSpacetimeMaterialize() によりオーバーするかもしれない。
197+ //但し ? によりオーバーしたかもしれない。
187198 }
199+ _is_behaved_flg = true;
188200 END_SYNCHRONIZED1; // <-----排他終了
189201 }
190202
191- _time_at_beginning_frame = timeGetTime();
192-
193- if (_time_at_beginning_frame >= _time_of_next_view) {
203+ DWORD time_now = timeGetTime();
204+ if (time_now >= _time_of_next_view) {
194205 //描画タイミングフレームになった、或いは過ぎている場合
195206 BEGIN_SYNCHRONIZED1; // ----->排他開始
196- if (_is_materialized_flg) { // ? makeSpacetimeMaterialize() 実行済みの場合
197- //描画有り(スキップなし)
207+ if (_is_materialized_flg) {
208+ //描画有り(スキップなし)(??? 実行済みの場合)
198209 presentSpacetimeVisualize(); _visualize_frames++; //?
199- finalizeSpacetime(); //?
200- } else { // ? makeSpacetimeMaterialize() 実行していない場合
201- //描画無し(スキップ時)
202- if (_sync_frame_time) { //同期調整モード時は
203- //無条件で描画なし。
204- finalizeSpacetime(); //?
205- } else { //同期調整モードではない場合は通常スキップ
206- _skip_count_of_frame++;
207- //但し、スキップするといっても MAX_SKIP_FRAME フレームに1回は描画はする。
208- if (_skip_count_of_frame >= _max_skip_frames) {
209- makeSpacetimeMaterialize(); //?
210- presentSpacetimeVisualize(); _visualize_frames++; //?
211- finalizeSpacetime(); //?
212- _skip_count_of_frame = 0;
213- } else {
214- finalizeSpacetime(); //?
215- }
210+ } else {
211+ //描画無し(スキップ時)(??実行済み、?実行していない)
212+ _skip_count_of_frame++;
213+
214+ if (_skip_count_of_frame >= _max_skip_frames) {
215+ //但し、スキップするといっても MAX_SKIP_FRAME フレームに1回は
216+ //無理やり描画して、アプリが動作していることをアピール。(無理やり?を実行し、?を実行)
217+ makeSpacetimeMaterialize(); //?
218+ presentSpacetimeVisualize(); _visualize_frames++; //?
219+ _skip_count_of_frame = 0;
220+ } else {
221+ //??をスキップとなる。
216222 }
217223 }
224+ finalizeSpacetime(); //?
218225 _is_behaved_flg = false;
219226 END_SYNCHRONIZED1; // <-----排他終了
220227
221228 //fps計算
222- if (_time_at_beginning_frame >= _time_calc_fps_next) {
229+ if (time_now >= _time_calc_fps_next) {
223230 const int d_visualize_frames = _visualize_frames - _prev_visualize_frames;
224231 if (d_visualize_frames == 0) {
225232 _fps = 0;
@@ -232,7 +239,6 @@ void God::be() {
232239 }
233240
234241 } else { //描画タイミングフレームになってない(余裕がある)
235- _sync_frame_time = false;
236242 Sleep(1); //<--- wait ---> な ひととき
237243 }
238244 return;
--- a/GgafDx/src/jp/ggaf/dx/sound/IkdLib/PCMPlayer.cpp
+++ b/GgafDx/src/jp/ggaf/dx/sound/IkdLib/PCMPlayer.cpp
@@ -261,6 +261,12 @@ unsigned __stdcall PCMPlayer::streamThread(void* playerPtr) {
261261 bool waitFinish = false;
262262
263263 while (player->_is_terminate == false) {
264+ if (pGOD->_sync_frame_time) {
265+ _TRACE_("PCMPlayer::streamThread() 演奏停止中・・・");
266+ Sleep(100);
267+ continue;
268+ }
269+
264270 BEGIN_SYNCHRONIZED2;
265271 switch (player->getState()) {
266272 case STATE_PLAY: // 再生中
--- a/GgafDx/src/jp/ggaf/dx/util/Util.cpp
+++ b/GgafDx/src/jp/ggaf/dx/util/Util.cpp
@@ -98,7 +98,7 @@ void Util::init() {
9898 //PARABORA[ang] = (float)((double)((ang-(D360SANG/2))*(ang-(D360SANG/2))) / (double)(-1.0*(D360SANG/2)*(D360SANG/2)) + 1.0);
9999 ////PARABORA[0] = 0 , PARABORA[D180SANG] = 1, PARABORA[D360SANG-1] = 0 で y = -x^2 放物線の値をとる
100100 }
101-
101+ Sleep(100);
102102 Util::COS[0] = 1;
103103 Util::COS[9000] = 0;
104104 Util::COS[18000] = -1;
@@ -167,6 +167,7 @@ void Util::init() {
167167 }
168168 index_slant_prev = index_slant;
169169 }
170+ Sleep(10);
170171 d_index_slant = 100000 - index_slant_prev;
171172 for (int i = index_slant_prev+1, d = 1; i <= 100000; i++, d++) {
172173 if (i > 100000) {
@@ -174,7 +175,7 @@ void Util::init() {
174175 }
175176 Util::SLANT2ANG[i] = (angle)( (45000-1) + (1.0*d)/(1.0*d_index_slant) );
176177 }
177- Sleep(1);
178+ Sleep(10);
178179 //<PROJ_ANG2ROT_ANG> (2009/10/20 経緯・・・速くするためなら何でもやってみよう)
179180 //ある方向ベクトルから、XY平面、ZY平面に投影した時にできる軸との角(それぞれXY射影角、ZY射影角と呼ぶこととする)と、
180181 //その方向ベクトルの単位ベクトルが指す単位球の緯度と経度(Z軸回転角、Y軸回転角)を紐つけることを目的とする。
@@ -220,8 +221,9 @@ void Util::init() {
220221 //_TRACE_("["<<prj_ang_xy<<"]["<<prj_ang_xz<<"]=("<<PROJANG_XY_XZ_TO_ROTANG_z[prj_ang_xy][prj_ang_xz]<<","<<PROJANG_XY_XZ_TO_ROTANG_y_REV[prj_ang_xy][prj_ang_xz]<<")");
221222
222223 }
224+ Sleep(2);
223225 }
224- Sleep(1);
226+ Sleep(10);
225227 vz = 1.0;
226228 for (s_ang prj_ang_zy = 0; prj_ang_zy <= D90SANG; prj_ang_zy++) {
227229 prj_rad_zy = (PI * 2.0 * prj_ang_zy) / (1.0*D360SANG);
@@ -256,9 +258,10 @@ void Util::init() {
256258 //_TRACE_("PROJANG_ZY_ZX_TO_ROTANG_y["<<prj_ang_zy<<"]["<<prj_ang_zx<<"] = D90ANG - "<<ry_rev<<"*SANG_RATE = "<<PROJANG_ZY_ZX_TO_ROTANG_y[prj_ang_zy][prj_ang_zx]);
257259 //_TRACE_("["<<prj_ang_xy<<"]["<<prj_ang_xz<<"]=("<<PROJANG_XY_XZ_TO_ROTANG_z[prj_ang_xy][prj_ang_xz]<<","<<PROJANG_XY_XZ_TO_ROTANG_y_REV[prj_ang_xy][prj_ang_xz]<<")");
258260 }
261+ Sleep(2);
259262 }
260263
261-
264+ Sleep(10);
262265 //円内、球内に一様に分布するランダムな点を生成
263266 for (int i = 0; i < 10000; i++) {
264267 const double r = dRND(0.0, 1.0);
--- a/GgafLib/include/GgafLib.h
+++ b/GgafLib/include/GgafLib.h
@@ -69,19 +69,30 @@ void LibWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine,
6969 */
7070 void LibWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
7171 switch (message) {
72- case WM_CHAR:
72+ case WM_CHAR: {
7373 GgafLib::WMKeyInput::catchWmChar(wParam);
7474 break;
75- case WM_SIZE:
75+ }
76+ case WM_SIZE: {
7677 if (pGOD && GgafDx::God::_pHWndPrimary) {
7778 if (!CONFIG::FULL_SCREEN) {
78- _TRACE_("LibWndProc WM_SIZE");
7979 GgafDx::God::_adjustGameWindow = true;
80- GgafDx::God::_pHWnd_adjustScreen = hWnd;
80+ GgafDx::God::_pHWnd_adjustScreen = hWnd; //サイズ変更したほうのWINDOW
8181 }
8282 }
83+ GgafCore::God::_pGod->syncTimeFrame();
8384 break;
84- case WM_SETFOCUS:
85+ }
86+ case WM_SIZING: {
87+ GgafCore::God::_pGod->syncTimeFrame();
88+ break;
89+ }
90+ case WM_MOVING: {
91+ GgafCore::God::_pGod->syncTimeFrame();
92+ break;
93+ }
94+
95+ case WM_SETFOCUS: {
8596 if (GgafDx::God::_pHWndPrimary) {
8697 HRESULT hr;
8798 // マウス強調レベル設定
@@ -113,14 +124,17 @@ void LibWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
113124 }
114125 }
115126 break;
116- case WM_SYSCOMMAND:
127+ }
128+ case WM_SYSCOMMAND: {
117129 if(wParam == SC_CLOSE) {
118130 PostQuitMessage(0);
119131 }
120132 break;
121- case WM_DESTROY:
133+ }
134+ case WM_DESTROY: {
122135 PostQuitMessage(0);
123136 break;
137+ }
124138 default:
125139 break;
126140 }
--- a/SimpleSample/src/SimpleSample.cpp
+++ b/SimpleSample/src/SimpleSample.cpp
@@ -55,4 +55,3 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
5555 return DefWindowProc(hWnd, message, wParam, lParam);
5656 }
5757
58-
--- a/VioletVreath/src/jp/gecchi/VioletVreath/actor/my/Bunshin/MyBunshin.cpp
+++ b/VioletVreath/src/jp/gecchi/VioletVreath/actor/my/Bunshin/MyBunshin.cpp
@@ -60,11 +60,11 @@ MyBunshin::MyBunshin(const char* prm_name, MyBunshinBase* prm_pBase) :
6060
6161 //レーザーストック
6262 pLaserChipDepo_ = NEW LaserChipDepository("DepoBunshinLaser");
63- for (int i = 0; i < 80; i++) {
63+ for (int i = 0; i < MAX_LASER_CHIP_NUM; i++) {
6464 std::string name = std::string(getName()) + "'s LaserChip(" + XTOS(i) + ")";
6565 pLaserChipDepo_->put(NEW MyBunshinWateringLaserChip001(name.c_str()));
6666 }
67- pLaserChipDepo_->config(80, 25);
67+ pLaserChipDepo_->config(MAX_LASER_CHIP_NUM, MAX_LASER_CHIP_NUM/3);
6868 appendGroupChild(pLaserChipDepo_);
6969
7070 //ロックオンコントローラー
--- a/VioletVreath/src/jp/gecchi/VioletVreath/actor/my/Bunshin/MyBunshin.h
+++ b/VioletVreath/src/jp/gecchi/VioletVreath/actor/my/Bunshin/MyBunshin.h
@@ -13,7 +13,8 @@ namespace VioletVreath {
1313
1414 DECLARE_HASHVAL(EVENT_MyBunshin_ChangeGeoFinal);
1515
16-#define MAX_AIM_INFO_NUM (MAX_BUNSHIN_NUM * MAX_LOCKON_NUM)
16+#define MAX_LASER_CHIP_NUM (85)
17+#define MAX_AIM_INFO_NUM (MAX_LASER_CHIP_NUM / 2)
1718
1819 //class MyBunshin : public GgafLib::DefaultMorphMeshActor {
1920 class MyBunshin : public VvEffectActor<GgafLib::DefaultMeshSetActor> {
--- a/VioletVreath/src/jp/gecchi/VioletVreath/scene/Spacetime/World.cpp
+++ b/VioletVreath/src/jp/gecchi/VioletVreath/scene/Spacetime/World.cpp
@@ -327,9 +327,9 @@ void World::processBehavior() {
327327 if (getActiveFrame() % CONFIG::FPS == 0) {
328328 _TRACE_("***** "<<aBufDebug_);
329329 }
330- if (pGOD->_sync_frame_time) {
331- _TRACE_N_("z");
332- }
330+// if (pGOD->_sync_frame_time) {
331+// _TRACE_N_("z");
332+// }
333333 #else
334334 sprintf(aBufDebug_, "%03.1fFPS", askGod()->_fps);
335335 pLabel_debug_->update(aBufDebug_);