回答編集履歴

4

誤字

2015/10/23 04:58

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- まずゲームつくりおよび,タグのC++からみて,C++での開発も視野に入れて質問されているのだと予想します.今の流行は前述の回答者の通り,C#ですが性能を求める,iosやandroidなどのwindows製品以外でゲーム開発をおこなう,このような用途ではC++も現役と言えるでしょう.UEもblueprintだとかいう機能があったと思いますが,基本的にはC++での開発になるはずですし.
7
+ まずゲームつくりおよび,タグのC++からみて,C++での開発も視野に入れて質問されているのだと予想します.今の流行は前述の回答者の通り,C#ですが性能を求める,iosやandroidなどのwindows製品以外でゲーム開発をおこなう,このような用途ではC++も現役と言えるでしょう.UEもblueprintだとかいう機能があったと思いますが,基本的にはC++での開発になるはずですし.
8
8
 
9
9
  というわけで自分は低水準よりであるC++を例として回答させていただきます.IDEを使わずに開発したいという話にもかかわってくるでしょうし.
10
10
 
@@ -90,9 +90,9 @@
90
90
 
91
91
  .
92
92
 
93
- .  // 1 / 60 = 0.1666・・・.unsigned intで計算したいので整数に
93
+ .  // 1 / 60 = 0.01666・・・.unsigned intで計算したいので整数に
94
94
 
95
- .  if( (current_time - previous_time) > (100 / 60) )
95
+ .  if( (current_time - previous_time) > (1000 / 60) )
96
96
 
97
97
  .  {
98
98
 

3

訂正

2015/10/23 04:58

投稿

退会済みユーザー
test CHANGED
@@ -88,7 +88,11 @@
88
88
 
89
89
  .  current_time = time();
90
90
 
91
+ .
92
+
93
+ .  // 1 / 60 = 0.1666・・・.unsigned intで計算したいので整数に
94
+
91
- .  if( (current_time - previous_time) > 60 )
95
+ .  if( (current_time - previous_time) > (100 / 60) )
92
96
 
93
97
  .  {
94
98
 

2

誤字

2015/10/23 02:52

投稿

退会済みユーザー
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- ただしウィンドウを表示する部分だけは,残念ながらOS依存です.この部分はappleやmicosoftがあらかじめ用意してあるAPIを通じて処理させる必要があります.windowsを解説しますが,こちらではWindowsAPIの,有名なスケルトンコードを用いる必要があります.関数名を列挙すると,CreateWindow,WNDCLASS,RegisterClass,ShowWindow,UpdateWindowなどを利用しないといけません.
45
+ ただしウィンドウを表示する部分だけは,残念ながらOS依存です.この部分はappleやmicosoftがあらかじめ用意してあるAPIを通じて処理させる必要があります.windowsを解説しますが,こちらではWindowsAPIの,有名なスケルトンコードを用いる必要があります.関数名を列挙すると,CreateWindow,RegisterClass,ShowWindow,UpdateWindowなどを利用しないといけません.
46
46
 
47
47
 
48
48
 
@@ -64,7 +64,7 @@
64
64
 
65
65
  つまり30fpsとは一秒間に30回,メインループを回すことになります.これで動画を作成できます.
66
66
 
67
- ちなみに人間がループの速さから,動画のちょうどよい早さは60fpsまでといわれています.これ以上のfpsは無駄ですのでそれだけPC・ハード機の性能が有り余っているということです.というか早すぎると処理が一瞬で終わってしまいます.
67
+ ちなみに人間が動画のちょうどよい早さを認識するのは60fpsまでといわれています.これ以上のfpsは無駄ですのでそれだけPC・ハード機の性能が有り余っているということです.というか早すぎると処理が一瞬で終わってしまいます.
68
68
 
69
69
  コードで書けば以下のような感じです.
70
70
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  .   sleep(); // 60fps以上で暇なら寝る
96
96
 
97
- . }
97
+ .  }
98
98
 
99
99
  .
100
100
 

1

誤字

2015/10/23 01:10

投稿

退会済みユーザー
test CHANGED
@@ -58,47 +58,67 @@
58
58
 
59
59
  ちょっとまってください.じゃあ絵を出したはいいが動画とするにはどうしたらいいでしょうか.
60
60
 
61
- まあDirextXにはDirextShowという機能があったと思いますが,基本的はある方法を利用します.これは方法なので完全にプログラミングテクニックであり,べつにAPIが必要とかそういう話ではありません.
61
+ まあDirextXにはDirectShowという機能があったと思いますが,基本的はある方法を利用します.これは方法なので完全にプログラミングテクニックであり,べつにAPIが必要とかそういう話ではありません.
62
62
 
63
- それはメインループと呼ばれる,ループによ方式です.動画の基本原理もそうですが,一秒間に30回の静止画を立て続けに見せられると,その絵が動いて見えます.パラパラ漫画です.この単位を30fpsといいます.fpsはframe per secondの略で,frameとはメインループが何回ループしたかという単位です.
63
+ それはメインループと呼ばれる,ループによ方式です.動画の基本原理もそうですが,人は一秒間に30回以上の静止画を立て続けに見せられると,その絵が動いて見えます.パラパラ漫画です.この単位を30fpsといいます.fpsはframe per secondの略で,frameとはメインループが何回ループしたかという単位です.
64
64
 
65
65
  つまり30fpsとは一秒間に30回,メインループを回すことになります.これで動画を作成できます.
66
+
67
+ ちなみに人間がループの速さから,動画のちょうどよい早さは60fpsまでといわれています.これ以上のfpsは無駄ですのでそれだけPC・ハード機の性能が有り余っているということです.というか早すぎると処理が一瞬で終わってしまいます.
66
68
 
67
69
  コードで書けば以下のような感じです.
68
70
 
69
71
  ※わかりやすいように書いてます.しかもクラスの機能使ってないので実質C言語です.
70
72
 
73
+ .
71
74
 
75
+ .Data input;
72
76
 
73
- Data input();
77
+ .unsigned int current_time = 0;
74
78
 
79
+ .unsigned int previous_time = 0;
75
80
 
81
+ .
76
82
 
77
- while(true) // 永遠に回る
83
+ .while(true) // 永遠に回る
78
84
 
79
- {
85
+ .{
80
86
 
81
- draw();
87
+ .  previous_time = current_time;
82
88
 
83
- input = getUserInput(); // Data構造体(クラス)で状態を受け取る
89
+ .  current_time = time();
84
90
 
85
- update( input ); // ここでキャラの状態やらステージを更新
91
+ .  if( (current_time - previous_time) > 60 )
86
92
 
87
-
93
+ .  {
88
94
 
89
- if( input.clear_flag || input.exit )
95
+ .   sleep(); // 60fps以上で暇なら寝る
90
96
 
91
- {
97
+ . }
92
98
 
93
- releaseResouce();
99
+ .
94
100
 
95
- closeWindow();
101
+ .  draw();
96
102
 
97
- break; // 終了
103
+ .  input = getUserInput(); // Data構造体(クラス)で状態を受け取る
98
104
 
99
- }
105
+ .  update( input ); // ここでキャラの状態やらステージを更新
100
106
 
107
+ .
108
+
109
+ .  if( input.clear_flag || input.exit )
110
+
111
+ .  {
112
+
113
+ .   releaseResouce();
114
+
115
+ .   closeWindow();
116
+
117
+ .   break; // 終了
118
+
119
+ . }
120
+
101
- }
121
+ .}
102
122
 
103
123
 
104
124