エフェクトについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ヒガモリ

エフェクトについて

#1

投稿記事 by ヒガモリ » 15年前

[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…コンパイル用バッチファイル

たかぎ

Re:エフェクトについて

#2

投稿記事 by たかぎ » 15年前

勘違いかもしれませんが、dglibということから学校名がわかるような...
独自ライブラリの場合は、学校の先生に聞いた方がよいと思います。

softya

Re:エフェクトについて

#3

投稿記事 by softya » 15年前

dglibが分からないので、どこで公開されているか教えてください。
dxlibなら、このサイトでも取り上げられているので分かるのですが。

>今ゲームを作っていてチーム名をエフェクトでカッコよく表示させたいです。

ホワイトイン・ホワイトアウトだけだとカッコ良くとは言えないと思いますが、その他に考えているエフェクトがあれば教えてください。
例えば、チーム名の輪郭が光るとか、半透明で残像を残しながら拡大縮小するとか。

ヒガモリ

softyaさんへ

#4

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
dglibは学校の先生が作ったライブラリです。
特にほかに考えているエフェクトないです。
でも、もしチーム名の輪郭が光るとか、半透明で残像を残しながら拡大縮小するなども
教えてもらえるなら教えてほしいです。

ヒガモリ

たかぎさんへ

#5

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
その通りです。
学校の先生が作ったライブラリです。
学校の先生に聞いたんですが、答えを教えたら
考えない生徒が増えるから答えは教えてくれなかったんです。

Dixq (管理人)

Re:エフェクトについて

#6

投稿記事 by Dixq (管理人) » 15年前

おっしゃるエフェクトはちょっと簡単過ぎるのでせっかくならもっとこだわってみませんか?
私もロゴの表示とかはこだわりたい派です。
私が作ったエフェクトでよければ公開しているゲームをみてみて下さい。

後、独自のライブラリなら考え方位しか回答かけないですね。dxlibは使ってはダメですか?

softya

Re:エフェクトについて

#7

投稿記事 by softya » 15年前

公開されていないライブラリでは例は示せないですね。
dxlibで良ければ書けると思いますよ。 画像

ヒガモリ

Dixqさんへ

#8

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
dxlibはダイレクトエックスことですか?
dxlibでも大丈夫です。
Dixqさんのゲームをプレイしてみます。

ヒガモリ

たかぎさんへ

#9

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
dxlibはダイレクトエックスのことですか?
dxlibでもいいので教えてください。

softya

Re:エフェクトについて

#10

投稿記事 by softya » 15年前

>dxlibはダイレクトエックスのことですか?
DXライブラリのことです。
http://homepage2.nifty.com/natupaji/DxLib/index.html

まず、このサイトの「ゲームプログラミングの館」を見てください。
http://dixq.net/g
分かりそうですかね?
画像

ヒガモリ

softya さんへ

#11

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
ゲームプログラミングの館を見ました。
自分が持っているダイレクトエックスとアイコンが違うんですけど
ここに書いてあるのをダウンロードしたほうがいいんですか?

softya

Re:softya さんへ

#12

投稿記事 by softya » 15年前

>自分が持っているダイレクトエックスとアイコンが違うんですけど
DXライブラリは、DirectXを隠蔽して使いやすくしたライブラリです。
もし、dglibを使わない生のDirectXでのプログラムが分かるならDirectXの情報を出しますけど。

こちらのコードとか意味が分かりますか?
http://www.interq.or.jp/black/minami-m/ ... ple_2d.htm

理解できないコードを示してもしょうが無いので色々聞いておりますが、ご了承ください。

ヒガモリ

softya さんへ

#13

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
とりあえずsample1を見たんですが、コードの意味は分かりません。

softya

Re:softya さんへ

#14

投稿記事 by softya » 15年前

>とりあえずsample1を見たんですが、コードの意味は分かりません。
じゃあ、生のDirectXは使ったことが無いんですね。
うーーん。それでは方向性を変えてですね。

(1)半透明のスプライトの表示方法は分かりますか?
(2)半透明スプライトの透明度を変更するプログラムは作れますか?
(3)半透明スプライトを加算合成するプログラムは作れますか?

ヒガモリ

Re:softya さんへ

#15

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
使ったことないです。
すいません。どれもわかりません。

Dixq (管理人)

Re:softya さんへ

#16

投稿記事 by Dixq (管理人) » 15年前

>>ヒガモリさん

> すいません。どれもわかりません。

ではどういったプログラムなら作れますか?
今ゲームを作っているということですが、どのようなゲームでしょう?

ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?

softya

Re:エフェクトについて

#17

投稿記事 by softya » 15年前

>すいません。どれもわかりません。

困りましたね。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()の使い方だけは先生に聞いた方が良いと思いますけどね。そのぐらいは答えてくれるでしょう。
全部勘で書いているので、関数の使い方は間違っている可能性があります。ご了承ください。

Justy

Re:エフェクトについて

#18

投稿記事 by Justy » 15年前

□ ----- ヒガモリさん
> ぎりぎりforがわかる程度です

 専門の1年とはいえ12月になって for文がぎりぎりという状態ではなかなか厳しいですね。


> ホワイトイン・ホワイトアウト

 既にご存じかもしれませんが、念の為に。

 原理的にホワイトイン・ホワイトアウトは画面全体を白で塗りつぶす際の透明度の変化で
実現します。
 この塗りつぶす白の透明度を 100%(完全に透明)から少しずつ変化させ 0%(完全に不透明)に
なるようするとホワイトアウト、反対に 0%から 100%にするとホワイトインになります。



> チーム名をエフェクトでカッコよく表示させたいです

 そういうかっこいいアニメーションをしている複数枚のテクスチャを用意して、順次切り替えて
表示していくのが、現状手っ取り早いでしょう。

 デザイナ担当がいるのであれば頼んでみては?


> dglib

 softyaさんがDLしたものと多分同じものDLしましたが、学習用なのか
それほど高機能なものではないようですので、このライブラリで高度なことを
行うにはいろいろ書き足さないとだめなようです。

 DXライブラリ/DirectX/OpenGLなどのまともなライブラリを使用することを
検討した方がいいかと思います。



□ ----- softyaさん
> dg_drawbmp3の引数 toumei

 なんとなく、抜き色指定な気もしますね。

softya

Re:エフェクトについて

#19

投稿記事 by softya » 15年前

>なんとなく、抜き色指定な気もしますね。

あぁ、その可能性の方が高いですね。
だとするとムリかな。

gdlibをやめて全部DXライブラリに移った方が良いかも知れませんね。

ヒガモリ

Dixq (管理人)さんへ

#20

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。

> ではどういったプログラムなら作れますか?
複雑な処理はまだできないので2Dのシューティングゲームなら学校で
やったので作れます。

> 今ゲームを作っているということですが、どのようなゲームでしょう?
チームを組んで擬似3Dアクションゲームを作っています。

> ロゴの表示について、まずは簡単なところからやってみてはいかがでしょうか。
アドバイスありがとうございます。

> 画像をアルファブレンドや加算ブレンドをして重ね合わせることは出来ますか?
すいません。できません。

ヒガモリ

softyaさんへ

#21

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
たぶんあっていると思います。
丁寧に教えてくださってありがとうございます。
がんばってみます。

ヒガモリ

Justyさんへ

#22

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
やっぱり今の時期でfor文がぎりぎりわかるぐらいは厳しい状態ですよね。
ホワイトインとホワイトアウトの原理すらわかっていなかったので
解説やアドバイスありがとうございます。

ヒガモリ

softya さんへ

#23

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
コツコツDXライブラリの勉強をしたほうがいいかもしれないですよね。
アドバイスありがとうございます。

Dixq (管理人)

Re:softya さんへ

#24

投稿記事 by Dixq (管理人) » 15年前

dglibがどんなライブラリかよくみていませんが、
dglibを使いなさいという制限は無いのでしょうか?

もしDXライブラリでも良いのなら、是非DXライブラリをお使いになることをおすすめします。
また、

> コツコツDXライブラリの勉強をしたほうがいいかもしれないですよね。

という記述から「大変そうだな」と思っていらっしゃる感じが伝わってきますが、
全然難しくないですよ。
うちのサイトでもDXライブラリの使い方解説しています。

http://dixq.net/g/

DXライブラリを使った本格的なゲーム制作の解説もしています。

http://dixq.net/rp/

また、ここにはDXライブラリを良くご存じの方が多いので、
誰も知らないライブラリの話をするより、DXライブラリで話をした方が参考になる意見が沢山聞けると思います。
サンプルなんかも書いて見せてあげるのも楽だと思いますし。

ヒガモリ

Dixq (管理人) さんへ

#25

投稿記事 by ヒガモリ » 15年前

質問に答えてくださってありがとうございます。
お返事遅くなってすいません。
みんなが知らないライブラリの話をしても確かに
あんまり意味がないですね。
dglibはとりあえず置いといて今日からDXライブラリを
勉強しょうと思います。
dglibは学校の先生が作ったライブラリなのでまた学校の先生に
聞いてみます。そして、DXライブラリを勉強するということで
問題解決にしたいと思います。
今までたくさん書き込みをしてくださった方々ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る