エフェクトについて
エフェクトについて
[1] 質問文
ゲームプログラマーを目指す専門学校1年です。
学校では詳しくエフェクトの使い方を教えてもらえませんでした。
今ゲームを作っていてチーム名をエフェクトでカッコよく表示
させたいんですが、どうやっていいのかわかりません。
[1.1] 自分が今行いたい事は何か
今ゲームを作っていてチーム名をエフェクトでカッコよく表示
させたいです。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
まだどうやっていいのかわからないのでプログラムは組んでいません。
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
プログラムを組んでいないのでエラーも出ていません。
[1.4] 今何がわからないのか、知りたいのか
エフェクトの中でもホワイトイン・ホワイトアウトを
どうやって作ればいいのかわかりません。
[2] 環境
[2.1] OS : Windows
[2.2] コンパイラ名 : Visual Studio 2008 コマンド プロンプト
[3] その他
・どの程度C言語を理解しているか
ぎりぎりforがわかる程度です。
・ライブラリを使っている場合は何を使っているか
・dglib.h…ヘッダファイル(関数宣言)
・dglib.obj…ライブラリ本体
・cl2.bat…コンパイル用バッチファイル
ゲームプログラマーを目指す専門学校1年です。
学校では詳しくエフェクトの使い方を教えてもらえませんでした。
今ゲームを作っていてチーム名をエフェクトでカッコよく表示
させたいんですが、どうやっていいのかわかりません。
[1.1] 自分が今行いたい事は何か
今ゲームを作っていてチーム名をエフェクトでカッコよく表示
させたいです。
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
まだどうやっていいのかわからないのでプログラムは組んでいません。
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
プログラムを組んでいないのでエラーも出ていません。
[1.4] 今何がわからないのか、知りたいのか
エフェクトの中でもホワイトイン・ホワイトアウトを
どうやって作ればいいのかわかりません。
[2] 環境
[2.1] OS : Windows
[2.2] コンパイラ名 : Visual Studio 2008 コマンド プロンプト
[3] その他
・どの程度C言語を理解しているか
ぎりぎりforがわかる程度です。
・ライブラリを使っている場合は何を使っているか
・dglib.h…ヘッダファイル(関数宣言)
・dglib.obj…ライブラリ本体
・cl2.bat…コンパイル用バッチファイル
Re:エフェクトについて
dglibが分からないので、どこで公開されているか教えてください。
dxlibなら、このサイトでも取り上げられているので分かるのですが。
>今ゲームを作っていてチーム名をエフェクトでカッコよく表示させたいです。
ホワイトイン・ホワイトアウトだけだとカッコ良くとは言えないと思いますが、その他に考えているエフェクトがあれば教えてください。
例えば、チーム名の輪郭が光るとか、半透明で残像を残しながら拡大縮小するとか。
dxlibなら、このサイトでも取り上げられているので分かるのですが。
>今ゲームを作っていてチーム名をエフェクトでカッコよく表示させたいです。
ホワイトイン・ホワイトアウトだけだとカッコ良くとは言えないと思いますが、その他に考えているエフェクトがあれば教えてください。
例えば、チーム名の輪郭が光るとか、半透明で残像を残しながら拡大縮小するとか。
Re:エフェクトについて
おっしゃるエフェクトはちょっと簡単過ぎるのでせっかくならもっとこだわってみませんか?
私もロゴの表示とかはこだわりたい派です。
私が作ったエフェクトでよければ公開しているゲームをみてみて下さい。
後、独自のライブラリなら考え方位しか回答かけないですね。dxlibは使ってはダメですか?
私もロゴの表示とかはこだわりたい派です。
私が作ったエフェクトでよければ公開しているゲームをみてみて下さい。
後、独自のライブラリなら考え方位しか回答かけないですね。dxlibは使ってはダメですか?
Re:エフェクトについて
>dxlibはダイレクトエックスのことですか?
DXライブラリのことです。
http://homepage2.nifty.com/natupaji/DxLib/index.html
まず、このサイトの「ゲームプログラミングの館」を見てください。
http://dixq.net/g
分かりそうですかね?

DXライブラリのことです。
http://homepage2.nifty.com/natupaji/DxLib/index.html
まず、このサイトの「ゲームプログラミングの館」を見てください。
http://dixq.net/g
分かりそうですかね?

softya さんへ
質問に答えてくださってありがとうございます。
ゲームプログラミングの館を見ました。
自分が持っているダイレクトエックスとアイコンが違うんですけど
ここに書いてあるのをダウンロードしたほうがいいんですか?
ゲームプログラミングの館を見ました。
自分が持っているダイレクトエックスとアイコンが違うんですけど
ここに書いてあるのをダウンロードしたほうがいいんですか?
Re:softya さんへ
>自分が持っているダイレクトエックスとアイコンが違うんですけど
DXライブラリは、DirectXを隠蔽して使いやすくしたライブラリです。
もし、dglibを使わない生のDirectXでのプログラムが分かるならDirectXの情報を出しますけど。
こちらのコードとか意味が分かりますか?
http://www.interq.or.jp/black/minami-m/ ... ple_2d.htm
理解できないコードを示してもしょうが無いので色々聞いておりますが、ご了承ください。
DXライブラリは、DirectXを隠蔽して使いやすくしたライブラリです。
もし、dglibを使わない生のDirectXでのプログラムが分かるならDirectXの情報を出しますけど。
こちらのコードとか意味が分かりますか?
http://www.interq.or.jp/black/minami-m/ ... ple_2d.htm
理解できないコードを示してもしょうが無いので色々聞いておりますが、ご了承ください。
Re:softya さんへ
>とりあえずsample1を見たんですが、コードの意味は分かりません。
じゃあ、生のDirectXは使ったことが無いんですね。
うーーん。それでは方向性を変えてですね。
(1)半透明のスプライトの表示方法は分かりますか?
(2)半透明スプライトの透明度を変更するプログラムは作れますか?
(3)半透明スプライトを加算合成するプログラムは作れますか?
じゃあ、生のDirectXは使ったことが無いんですね。
うーーん。それでは方向性を変えてですね。
(1)半透明のスプライトの表示方法は分かりますか?
(2)半透明スプライトの透明度を変更するプログラムは作れますか?
(3)半透明スプライトを加算合成するプログラムは作れますか?
Re:softya さんへ
>>ヒガモリさん
> すいません。どれもわかりません。
ではどういったプログラムなら作れますか?
今ゲームを作っているということですが、どのようなゲームでしょう?
ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?
> すいません。どれもわかりません。
ではどういったプログラムなら作れますか?
今ゲームを作っているということですが、どのようなゲームでしょう?
ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?
Re:エフェクトについて
>すいません。どれもわかりません。
困りましたね。dglibにその機能があるかどうかも分からないんですよね。
で、dglibを公開している人を見つけてしまったので、ヘッダは合ってますかね?
#include <windows.h>
#include <stdio.h>
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow);
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
void ML(void);
int Main(void);
void dg_pset(HDC hdc,int x,int y,short color);
void dg_box(HDC hdc,int x,int y,int width,int height,int paintflg,short color);
void dg_line(HDC hdc,int x1,int y1,int x2,int y2,short color);
HDC dg_loadbmp(char *pfilename);
void dg_drawbmp(HDC hdc,int x,int y,int width,int height,HDC hMemdc);
void dg_drawbmp2(HDC hdc,int x,int y,int width,int height,HDC hMemdc,int sx,int sy);
void dg_drawbmp3(HDC hdc,int x,int y,int width,int height,HDC hMemdc,int sx,int sy,COLORREF toumei);
void dg_drawbmp4(HDC hdc,int x,int y,int width,int height,
HDC hMemdc,int sx,int sy,int swidth,int sheight,COLORREF toumei);
void dg_deletebmp(HDC hMemdc);
COLORREF dg_pget(HDC hdc,int x,int y);
void dg_circle(HDC hdc,int cx,int cy,int r,short color);
int getch(void);
int kbhit(void);
void dg_setfont(char fname[/url],int fw,int fh);
void dg_printf(int x,int y,short color,char *format, ...);
void dg_printf2(HDC hdc,int x,int y,short color,char *format, ...);
void wait(long wcnt);
HDC dg_createBB(void);
void dg_flip(HDC hdc,HDC hMemdc);
void dg_deleteBB(HDC hMemdc);
void dg_gcls(HDC hdc,short color);
void dg_setvideomode(int mode);
void dg_setscreen(int lx,int ly,int lwidth,int lheight,int lbai,char ltb[/url]);
typedef HDC char_far;
#define main Main
古いバージョンかも知れませんが、同じ機能があると仮定しますね。
ヘッダーから推測すると、dg_drawbmp3()関数でホワイトアウトとホワイトインは実現出来そうです。
加算半透明は出来なさそうなので、少し華々しさには欠けますけどね。
方法としては、まず真っ白なbmpを用意します。大きさは32x32程度で良いです。この画像を画面いっぱいまで拡大してタイトルの上に表示することでタイトルを隠してしまいます。これでホワイトアウト状態は出来ました。
あとはこの画像の透明度を調整することでホワイトインやアウトを制御します。
(1)32x32の画像をdg_drawbmp3()で画面いっぱいまで拡大して表示します。そのとき一番最前面になるように描画順番を工夫して下さい。これでホワイトアウト後の画面は表示出来ました。
(2)透明度を制御します。
ホワイトアウトとホワイトインの制御は、COLORREF toumeiパラメータで行います。
ただ、このパラメータの指定例が見つからないので、ここも勘ですが
COLORREF toumei = (COLORREF)(a << 6);
としてみてください。
aは半透明の度合いで、0から255です。255だと元のまま、0だと透明です。
以上なんですが、このdg_drawbmp3()の使い方だけは先生に聞いた方が良いと思いますけどね。そのぐらいは答えてくれるでしょう。
全部勘で書いているので、関数の使い方は間違っている可能性があります。ご了承ください。
困りましたね。dglibにその機能があるかどうかも分からないんですよね。
で、dglibを公開している人を見つけてしまったので、ヘッダは合ってますかね?
#include <windows.h>
#include <stdio.h>
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR lpCmdLine,int nCmdShow);
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
void ML(void);
int Main(void);
void dg_pset(HDC hdc,int x,int y,short color);
void dg_box(HDC hdc,int x,int y,int width,int height,int paintflg,short color);
void dg_line(HDC hdc,int x1,int y1,int x2,int y2,short color);
HDC dg_loadbmp(char *pfilename);
void dg_drawbmp(HDC hdc,int x,int y,int width,int height,HDC hMemdc);
void dg_drawbmp2(HDC hdc,int x,int y,int width,int height,HDC hMemdc,int sx,int sy);
void dg_drawbmp3(HDC hdc,int x,int y,int width,int height,HDC hMemdc,int sx,int sy,COLORREF toumei);
void dg_drawbmp4(HDC hdc,int x,int y,int width,int height,
HDC hMemdc,int sx,int sy,int swidth,int sheight,COLORREF toumei);
void dg_deletebmp(HDC hMemdc);
COLORREF dg_pget(HDC hdc,int x,int y);
void dg_circle(HDC hdc,int cx,int cy,int r,short color);
int getch(void);
int kbhit(void);
void dg_setfont(char fname[/url],int fw,int fh);
void dg_printf(int x,int y,short color,char *format, ...);
void dg_printf2(HDC hdc,int x,int y,short color,char *format, ...);
void wait(long wcnt);
HDC dg_createBB(void);
void dg_flip(HDC hdc,HDC hMemdc);
void dg_deleteBB(HDC hMemdc);
void dg_gcls(HDC hdc,short color);
void dg_setvideomode(int mode);
void dg_setscreen(int lx,int ly,int lwidth,int lheight,int lbai,char ltb[/url]);
typedef HDC char_far;
#define main Main
古いバージョンかも知れませんが、同じ機能があると仮定しますね。
ヘッダーから推測すると、dg_drawbmp3()関数でホワイトアウトとホワイトインは実現出来そうです。
加算半透明は出来なさそうなので、少し華々しさには欠けますけどね。
方法としては、まず真っ白なbmpを用意します。大きさは32x32程度で良いです。この画像を画面いっぱいまで拡大してタイトルの上に表示することでタイトルを隠してしまいます。これでホワイトアウト状態は出来ました。
あとはこの画像の透明度を調整することでホワイトインやアウトを制御します。
(1)32x32の画像をdg_drawbmp3()で画面いっぱいまで拡大して表示します。そのとき一番最前面になるように描画順番を工夫して下さい。これでホワイトアウト後の画面は表示出来ました。
(2)透明度を制御します。
ホワイトアウトとホワイトインの制御は、COLORREF toumeiパラメータで行います。
ただ、このパラメータの指定例が見つからないので、ここも勘ですが
COLORREF toumei = (COLORREF)(a << 6);
としてみてください。
aは半透明の度合いで、0から255です。255だと元のまま、0だと透明です。
以上なんですが、このdg_drawbmp3()の使い方だけは先生に聞いた方が良いと思いますけどね。そのぐらいは答えてくれるでしょう。
全部勘で書いているので、関数の使い方は間違っている可能性があります。ご了承ください。
Re:エフェクトについて
□ ----- ヒガモリさん
> ぎりぎりforがわかる程度です
専門の1年とはいえ12月になって for文がぎりぎりという状態ではなかなか厳しいですね。
> ホワイトイン・ホワイトアウト
既にご存じかもしれませんが、念の為に。
原理的にホワイトイン・ホワイトアウトは画面全体を白で塗りつぶす際の透明度の変化で
実現します。
この塗りつぶす白の透明度を 100%(完全に透明)から少しずつ変化させ 0%(完全に不透明)に
なるようするとホワイトアウト、反対に 0%から 100%にするとホワイトインになります。
> チーム名をエフェクトでカッコよく表示させたいです
そういうかっこいいアニメーションをしている複数枚のテクスチャを用意して、順次切り替えて
表示していくのが、現状手っ取り早いでしょう。
デザイナ担当がいるのであれば頼んでみては?
> dglib
softyaさんがDLしたものと多分同じものDLしましたが、学習用なのか
それほど高機能なものではないようですので、このライブラリで高度なことを
行うにはいろいろ書き足さないとだめなようです。
DXライブラリ/DirectX/OpenGLなどのまともなライブラリを使用することを
検討した方がいいかと思います。
□ ----- softyaさん
> dg_drawbmp3の引数 toumei
なんとなく、抜き色指定な気もしますね。
> ぎりぎりforがわかる程度です
専門の1年とはいえ12月になって for文がぎりぎりという状態ではなかなか厳しいですね。
> ホワイトイン・ホワイトアウト
既にご存じかもしれませんが、念の為に。
原理的にホワイトイン・ホワイトアウトは画面全体を白で塗りつぶす際の透明度の変化で
実現します。
この塗りつぶす白の透明度を 100%(完全に透明)から少しずつ変化させ 0%(完全に不透明)に
なるようするとホワイトアウト、反対に 0%から 100%にするとホワイトインになります。
> チーム名をエフェクトでカッコよく表示させたいです
そういうかっこいいアニメーションをしている複数枚のテクスチャを用意して、順次切り替えて
表示していくのが、現状手っ取り早いでしょう。
デザイナ担当がいるのであれば頼んでみては?
> dglib
softyaさんがDLしたものと多分同じものDLしましたが、学習用なのか
それほど高機能なものではないようですので、このライブラリで高度なことを
行うにはいろいろ書き足さないとだめなようです。
DXライブラリ/DirectX/OpenGLなどのまともなライブラリを使用することを
検討した方がいいかと思います。
□ ----- softyaさん
> dg_drawbmp3の引数 toumei
なんとなく、抜き色指定な気もしますね。
Re:エフェクトについて
>なんとなく、抜き色指定な気もしますね。
あぁ、その可能性の方が高いですね。
だとするとムリかな。
gdlibをやめて全部DXライブラリに移った方が良いかも知れませんね。
あぁ、その可能性の方が高いですね。
だとするとムリかな。
gdlibをやめて全部DXライブラリに移った方が良いかも知れませんね。
Dixq (管理人)さんへ
質問に答えてくださってありがとうございます。
> ではどういったプログラムなら作れますか?
複雑な処理はまだできないので2Dのシューティングゲームなら学校で
やったので作れます。
> 今ゲームを作っているということですが、どのようなゲームでしょう?
チームを組んで擬似3Dアクションゲームを作っています。
> ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
アドバイスありがとうございます。
> 画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?
すいません。できません。
> ではどういったプログラムなら作れますか?
複雑な処理はまだできないので2Dのシューティングゲームなら学校で
やったので作れます。
> 今ゲームを作っているということですが、どのようなゲームでしょう?
チームを組んで擬似3Dアクションゲームを作っています。
> ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
アドバイスありがとうございます。
> 画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?
すいません。できません。
Re:softya さんへ
dglibがどんなライブラリかよくみていませんが、
dglibを使いなさいという制限は無いのでしょうか?
もしDXライブラリでも良いのなら、是非DXライブラリをお使いになることをおすすめします。
また、
> コツコツDXライブラリの勉強をしたほうがいいかもしれないですよね。
という記述から「大変そうだな」と思っていらっしゃる感じが伝わってきますが、
全然難しくないですよ。
うちのサイトでもDXライブラリの使い方解説しています。
http://dixq.net/g/
DXライブラリを使った本格的なゲーム制作の解説もしています。
http://dixq.net/rp/
また、ここにはDXライブラリを良くご存じの方が多いので、
誰も知らないライブラリの話をするより、DXライブラリで話をした方が参考になる意見が沢山聞けると思います。
サンプルなんかも書いて見せてあげるのも楽だと思いますし。
dglibを使いなさいという制限は無いのでしょうか?
もしDXライブラリでも良いのなら、是非DXライブラリをお使いになることをおすすめします。
また、
> コツコツDXライブラリの勉強をしたほうがいいかもしれないですよね。
という記述から「大変そうだな」と思っていらっしゃる感じが伝わってきますが、
全然難しくないですよ。
うちのサイトでもDXライブラリの使い方解説しています。
http://dixq.net/g/
DXライブラリを使った本格的なゲーム制作の解説もしています。
http://dixq.net/rp/
また、ここにはDXライブラリを良くご存じの方が多いので、
誰も知らないライブラリの話をするより、DXライブラリで話をした方が参考になる意見が沢山聞けると思います。
サンプルなんかも書いて見せてあげるのも楽だと思いますし。
Dixq (管理人) さんへ
質問に答えてくださってありがとうございます。
お返事遅くなってすいません。
みんなが知らないライブラリの話をしても確かに
あんまり意味がないですね。
dglibはとりあえず置いといて今日からDXライブラリを
勉強しょうと思います。
dglibは学校の先生が作ったライブラリなのでまた学校の先生に
聞いてみます。そして、DXライブラリを勉強するということで
問題解決にしたいと思います。
今までたくさん書き込みをしてくださった方々ありがとうございました。
お返事遅くなってすいません。
みんなが知らないライブラリの話をしても確かに
あんまり意味がないですね。
dglibはとりあえず置いといて今日からDXライブラリを
勉強しょうと思います。
dglibは学校の先生が作ったライブラリなのでまた学校の先生に
聞いてみます。そして、DXライブラリを勉強するということで
問題解決にしたいと思います。
今までたくさん書き込みをしてくださった方々ありがとうございました。