C言語を始めたのですが

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

C言語を始めたのですが

#1

投稿記事 by pupil » 17年前

このサイトをたまたま見つけて自分でもゲームを作ろうと思ったのですが、C言語でゲームを
作るサイトといえばココぐらいでした。ゲームプログラミング館はすべて読ませていただいたの
ですがゲームを1本作るには知識が少なすぎるように思います。なので、ゲームを作りながら
C言語を学べ、RPG、格闘、パズルなどのゲームが一通り作れるようになる良書を探しています。
本屋さんで聞いてもPCに詳しい人は居ないようなので、ぜひお勧めの本を教えてください。

あと、最終的には3Dゲームを作ろうと考えているので3Dゲーム製作の良書も教えてください。
キャラクターや背景はもうできているのであとはプログラミングだけと言うところなんです><
3Dゲーム作りながらC言語を1から学べる都合のいい本があればいいのですが;

PCのスペックは
4CPU 3GHz
RAM 1Gb
グラフィックカード VIA Chrome9 HC IGP WDDM
OS WindowsVista HomeBasic 32bitオペレーティングシステム

コレだけのスペックであれば3Dゲーム作れ無いでしょうか?


本題がわかりにくくてすみません。
最終的に3Dゲームが作りたくてC言語を学ぼうと思っているのですが、
始めは2Dゲームを作成しながらゲーム独特の考え方を学ぶための
良書を探していると言うことです。
資金は3万円ほどと考えています。

バグ

Re:C言語を始めたのですが

#2

投稿記事 by バグ » 17年前

シューティングゲームを作れたら、大抵のゲームに応用できますよ。

管理人

Re:C言語を始めたのですが

#3

投稿記事 by 管理人 » 17年前

勉強方法は人それぞれだと思いますし、以下は私の見解ですので、
以下ご自分の判断で参考にして下さい。

---------------------------------------

C言語に慣れていない状態でDirectXやOpenGLとかに手を出すと挫折する元だと思います。
本格的なゲームを目指すのでしたら、しっかりC言語の知識を固めるか、
簡単なゲームをDXライブラリで沢山作りながらC言語やゲームプログラミングの手法を勉強し、
慣れていくのが良いと思います。

本を読むこともとても大事な事だと思うのですが、
それ以上にプログラムは自分で沢山書いてコンパイルしてプログラムに慣れる事が大事だと思います。
(良書の紹介は他の回答者に譲ります。

また、プログラミングは数学と同じく、教科書を読むだけでは身に付きません。
やはり重要なのは演習ですね。

一通りゲームプログラミングの館をお読みになったのでしたら
簡単なゲームは作れると思います。

以前初心者と仰っている方に
「下でカゴを持って構えている人を操作して落ちてくるリンゴをカゴに入れるゲームを作ってみてはどうか」
と提案した事があります。

このような簡単なゲームでも、ゲームを作ったことが無ければ
結構難しく思うと思います。
以下に私がそれを実装してみたサンプルがあるので、よければ参考にして下さい。

http://www.play21.jp/board/formz.cgi?ac ... &lognum=64

バグさんの仰るように、シューティングが作れたら大抵のゲームに応用出来ます。
例えば格闘ゲームのハドウケンだってシューティングのアルゴリズムを使うでしょうし、
マリオのファイアだってシューティングのアルゴリズムが使えるでしょう。
上に紹介したリンゴが落ちるプログラムもシューティングの理論を使っています。

また、どのゲームでも、大きな計算アルゴリズムの骨格はかわりません。
なので、簡単なゲームでもしっかり汎用性や拡張性を考えて作っていくことで、
大規模で本格的なゲーム作りの勉強にもなります。

それに本ばかり読むより、沢山ゲームを作っていきながら覚えたほうが面白いと思いますしね。
重複しますが、本を読むことも大事であることはもっともだと思います。

pupil

Re:C言語を始めたのですが

#4

投稿記事 by pupil » 17年前

そうですか・・・・・・
私は理数系大学を目指していて文系はぜんぜんダメですが;
何回も同じような問題をやる事で徐々に難しい問題を解けるようになると言うのは
実感しています。ですがゲームの基礎の部分がいまいちわかりません^^;
一度、何か簡単なゲームを作って見るので、ご指導いただけますでしょうか?

もちろん、無理に「指導してくれ!」とは言いませんが><

>例えば格闘ゲームのハドウケンだってシューティングのアルゴリズムを使うでしょうし、
>マリオのファイアだってシューティングのアルゴリズムが使えるでしょう。

確かにおっしゃる通りです。
ですが、ゲーム館からいきなりグレードアップしすぎて難しいです^^;

御津凪

Re:C言語を始めたのですが

#5

投稿記事 by 御津凪 » 17年前

> ですがゲームの基礎の部分がいまいちわかりません^^;
(難しい話なので判らなかったら読み飛ばしてください)

本格的なゲーム(市販など)でよく使う手法の一つに「タスクシステム」というものがあります。
いわゆるこれがゲームの基礎になっていると思います。
しかし、作り手により沢山種類があるため、ゲームライブラリにはほとんど組み込まれていません。
(汎用性を持たせるためだと思いますが…)

もちろん、ゲームプログラミングの館などで紹介している方法が(絶対的に)簡単です。
覚えるのもC言語(+DXライブラリ)だけですし、三角関数を使えるようになるだけでも
作れるゲームの幅がグンと広がるはずです。


作り手によってゲームの基礎はまちまちです。
なので、何かの縁ということで、
ゲームプログラミングの館や龍神録の館を題材にして、

「管理人さんを筆頭に掲示板の皆さんが教授する会」

というのはどうでしょう(笑



…さて、気を取り直して、私の薦める本ですが、
ゲーム作りとして必要な数学、物理学として下記の本を薦めます。

「ゲーム開発のための数学・物理学入門」 (ISBN4-7973-2907-6) \2,800 + 税

この本で私は3Dに必要な行列や当たり判定の基礎を覚えました。
C言語を知らなくても先にこういう方法があるのだと予習できますしね。
(ちなみに会社にもありました)

管理人

Re:C言語を始めたのですが

#6

投稿記事 by 管理人 » 17年前

>pupilさん

試行錯誤してみるということも大事だと思います。
また、突然ゲームを作るのが難しければすごく簡単なものから作ればいいですよ。

最初はグー・チョキ・パーの3枚の画像を表示するだけのものから、
入力を受け付けて、それに対応した画像を表示するもの、
乱数に応じた画像を表示するもの、
実際にコンピュータとジャンケンできるもの・・。

こうしていけば作れそうじゃないでしょうか?

今後ステップアップされる時も、
ゲームプログラミングの館のほかに、シューティングゲームの館、龍神録プログラミングの館もあり、
ゲームの作り方はある程度参考にしていただけるのではないかと思います。


>御津凪さん

その会面白いですねw
私の方法を教科書の方法のように言ってしまうのはよくないので、
指導するという形は出来ないと思いますが、アドバイス位ならいくらでもします。
最初は私も本当に苦労したものです・・。
今思えば 正気か?! と思うようなプログラムをプログラムを始めた頃書いていましたが、
裏画面を使うでもなく、メインループを使うでもなく

DrawBox(黒);
描画1
sleep();

DrawBox(黒);
描画2
sleep();

DrawBox(黒);
描画3
sleep();

みたいにして、無限に同じような処理を書いてゲームを作っていました^^;
「いや~プログラミングって大変だな~」とか一人で思っていましたが、
一人で大変な方法をとっていただけでしたw

管理人

Re:C言語を始めたのですが

#7

投稿記事 by 管理人 » 17年前

上の4つの仕様を一つずつ実装してみましょう。

1、グー・チョキ・パーの3枚の画像を表示する
2、入力を受け付けて、それに対応した画像を表示する
3、乱数に応じた画像を表示する
4、実際にコンピュータとジャンケンする。

ここにジャンケン用の3枚の画像をおいておきます。

0.png
画像
1.png
画像
2.png
画像

これを表示するだけなら、ゲームプログラミングの館のサンプルをそのまま使えば良いので簡単ですね。

41章
http://dixq.net/g/#41
の毎回書く骨格をペタっと貼って、読み込みと、描画の処理を追加すれば終わりです。

実際にやってみて下さい。
答えを下に書いておくので、出来たら答え合わせしてみて下さい。
41章から追加したのは赤字の部分です。
#include "DxLib.h"

int Key[256];
int image[3];

int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
        else                            GetHitKeyStateAll_InputKey=0;
    }
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, 
                   HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1||SetDrawScreen( DX_SCREEN_BACK )!=0)return -1;

    image[0]=LoadGraph("0.png");//画像ロード
    image[1]=LoadGraph("1.png");
    image[2]=LoadGraph("2.png");

    while(ProcessMessage()==0 && ClearDrawScreen()==0 
        && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){

        DrawGraph(  0,0,image[0],TRUE);//描画
        DrawGraph(200,0,image[1],TRUE);
        DrawGraph(400,0,image[2],TRUE);

        ScreenFlip();
    }

    DxLib_End();
    return 0;
}

 
これで「1」はできました。

管理人

Re:C言語を始めたのですが

#8

投稿記事 by 管理人 » 17年前

次は「2」です。
ゲームプログラミングの館を一通りご覧になったと仰っていますので、
特に関数の説明はしませんので、なにかわからなければその都度お聞きになるか、
館をご覧下さい。
#include "DxLib.h"

int Key[256];
int image[3];

int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
        else                            GetHitKeyStateAll_InputKey=0;
    }
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, 
                   HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1||SetDrawScreen( DX_SCREEN_BACK )!=0)return -1;

    image[0]=LoadGraph("0.png");//画像ロード
    image[1]=LoadGraph("1.png");
    image[2]=LoadGraph("2.png");

    while(ProcessMessage()==0 && ClearDrawScreen()==0 
        && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){

        if(Key[KEY_INPUT_Z]>0)            DrawGraph(  0,0,image[0],TRUE);//描画
        if(Key[KEY_INPUT_X]>0)            DrawGraph(200,0,image[1],TRUE);
        if(Key[KEY_INPUT_C]>0)            DrawGraph(400,0,image[2],TRUE);

        ScreenFlip();
    }

    DxLib_End();
    return 0;
}
 

Zキーが押されるとグー
Xキーが押されるとチョキ
Cキーが押されるとパーを表示するというだけです。

if文が増えただけですね。

管理人

Re:C言語を始めたのですが

#9

投稿記事 by 管理人 » 17年前

次は「3」です。
2も3もいくらでも違う解釈が出来るあいまいな仕様なので、答え合わせに成らないかもしれませんが
参考程度にどうぞ。

Zキーを押すたびに画像がランダムに変わります。
GetRandという乱数を作る関数を使っています。
また、Keyに入っている値は入力している間カウンタのように上昇していくので、
1の時入力された瞬間だと解るという事は館に書いた通りです。
#include "DxLib.h"

int Key[256];
int image[3];

int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
        else                            GetHitKeyStateAll_InputKey=0;
    }
    return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, 
                   HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);//ウィンドウモード
    if(DxLib_Init() == -1||SetDrawScreen( DX_SCREEN_BACK )!=0)return -1;

    int num=0;

    image[0]=LoadGraph("0.png");//画像ロード
    image[1]=LoadGraph("1.png");
    image[2]=LoadGraph("2.png");

    while(ProcessMessage()==0 && ClearDrawScreen()==0 
        && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){

        if(Key[KEY_INPUT_Z]==1)
            num=GetRand(2);

        DrawGraph(0,0,image[num],TRUE);//描画

        ScreenFlip();
    }

    DxLib_End();
    return 0;
}
 
 
これでだいたい軌道に乗ってきたと思うので、「4」も作ってみて下さい。

pupil

Re:C言語を始めたのですが

#10

投稿記事 by pupil » 17年前

少し見ない間にこんなに立派なプログラムを作っていただき感謝感激です><
じゃんけんゲーム、後は自力で作って見たいと思います。これも練習になりますもんね。



>「ゲーム開発のための数学・物理学入門」 (ISBN4-7973-2907-6) \2,800 + 税
3Dゲームに物理はかかせませんもんね。本屋さんで立ち読みしてから購入します^^

>この本で私は3Dに必要な行列や当たり判定の基礎を覚えました。
>C言語を知らなくても先にこういう方法があるのだと予習できますしね。
>(ちなみに会社にもありました)
なんか、皆さんが神に見えてきました~
と、言う事はココに来ている解答者の方たちはほとんどゲーム会社勤務ってことなのでしょうか?
もしかして、管理人様は○EGAとか任○堂とか○UDSONのプログラマーだったりして・・・・・・


皆様、丁寧な解答ありがとうございました。
ガンバって管理人様の課題を解いて行こうと思います^^

PS
管理人様のシューティングゲーム面白かったですが難易度高いですね~;
あれも、DirectXライブラリとC++コンパイラで作られているのでしょうか?
そうであれば、スーパーファミコンいや、64のゲームあたりまで作れそうですね^^

pupil

Re:C言語を始めたのですが

#11

投稿記事 by pupil » 17年前

追加の質問させてください。
いま、3D描画ソフトはShadeを使ってるのですが、C++コンパイラと3D描画ソフト
以外に3Dゲームを作るために必用なものを教えてはいただけ無いでしょうか?
DXライブラリでキャラクターを動かすと言うのはとても無理そうなので;
できるとすれば、ある一つの物体を回転させるとか一定方向に動かす程度しか私にはできません><

よろしくお願いします

御津凪

Re:C言語を始めたのですが

#12

投稿記事 by 御津凪 » 17年前

DXライブラリを3Dに拡張した「DXライブラリ3D」というものがありますよ。

http://fatalita.sakura.ne.jp/3DLib/

モーションもちゃんと対応しているみたいですよ。

DirectX を使って1から3Dモデルを表示させるのには非常に難しいです。
ましてやモーションに対応するのは100%理解しないと出来ません。

だから上記のようなライブラリがあると非常に楽ですね。

さて、必要なもの、といいますか、一つ覚えるべきものがあります。
カメラの概念です。
3Dの概念もそうですが、3D空間を表示するカメラの扱い方をマスターしなければ
凝ったカメラワークなどを取れないと思います。

管理人

Re:C言語を始めたのですが

#13

投稿記事 by 管理人 » 17年前

>と、言う事はココに来ている解答者の方たちはほとんどゲーム会社勤務ってことなのでしょうか?

私の勝手な推測ですが、その逆じゃないかと思います。
実際に皆さんに確認取ったわけではないので確かな事は言えませんけど。
もちろんゲームプログラマーだと伺った方もいらっしゃいますよ。
プロの業界ではDXライブラリは使わないでしょうし、あくまで
趣味でゲームを作りたいと思っている方々が多いのではないかと思います。

また、アンケートを取っており、
http://dixq.net/board/ank/enq.cgi?mode=kekka
ここで確認出来ます。プログラマーは全体の20%。
多く見積もってその半分がゲームプログラマーだとしても、全体の10%ですよね。
(という勝手な推測です。「回答者の何%」と仰っているのでこの数値より多いでしょうけど)

>管理人様は○EGAとか任○堂とか○UDSONのプログラマーだったりして・・・・・・

私は学生ですよ。
簡単なプロフィールはHPのトップから見れますので、もしよければどうぞm(_ _)m

>管理人様のシューティングゲーム面白かったですが難易度高いですね~;

ありがとうございます。
やはり難易度設定にちと問題がありますよね~・・。
このゲームをしてくれる人は、東方知ってる人だろうと勝手に思って、
やや難しい目にしてしまいました^^;

>DirectXライブラリとC++コンパイラで作られているのでしょうか?

DXライブラリとVisualStudioです。

>スーパーファミコンいや、64のゲームあたりまで作れそうですね^^

スーファミはいけるでしょうけど、64は難しいと思います。
というのも、2D用のライブラリなので、Xファイルなどを読み込んだ3D描画が出来ません。
少しだけ3D関数があるので、それを最大限利用すれば立体的な背景は作れますけど、
ちょっと限界があります。

>C++コンパイラと3D描画ソフト 以外に3Dゲームを作るために必用なものを教えてはいただけ無いでしょうか?

OpenGLやDirectXとかそういうことでしょうか?
XNAとか他にも色々3Dが扱えるライブラリはあるので、探してみてはどうでしょう。

DirectXは書籍が多くwindowsでしか動かない。
OpenGLはOSに依存せず使える。
XNAはX-Boxで動かせるが書籍が少ない。

など色々特徴はあります。

pupil

Re:C言語を始めたのですが

#14

投稿記事 by pupil » 17年前

>DXライブラリを3Dに拡張した「DXライブラリ3D」というものがありますよ。
さすがDirectXですね~^^
そんなライブラリがあるとは・・・・・・私が3Dのページを飛び回ったのはいったいなんだったのか;

>3Dの概念もそうですが、3D空間を表示するカメラの扱い方をマスターしなければ
>凝ったカメラワークなどを取れないと思います。

おっしゃる通りです。3Dフリーゲームなどを遊んで見ると、カメラの使い方が最悪って
事が多いですよね。私の意見からするとカメラは360度自由に動かせて、なおかつ距離も
5段階、少なくとも3段階はあるとぐっと面白みと見やすさがあがると思います。なので、
ガンバってカメラの使い方もマスターしなければ。


>OpenGLやDirectXとかそういうことでしょうか?
>XNAとか他にも色々3Dが扱えるライブラリはあるので、探してみてはどうでしょう。
やっぱり、ライブラリを使って3D動画などは動かされているのでしょうか?
てっきり、3Dを簡単に動かすソフトか何かがあるのかと思っていました・・・・・

丁寧な解答ありがとうございました。とても勉強になりました^^

管理人

Re:C言語を始めたのですが

#15

投稿記事 by 管理人 » 17年前

ムービーじゃない限り、ゲーム内の3D描画はリアルタイムレンダリングされていると思いますよ。
3D映像を作るソフトはありますが、それはゲームでも、「ムービーシーン」のように視点がかえられない
きっぱりわかれた映像になっていると思います。

shade等を使ってモデリング出来ますが、動かしているのは座標をリアルタイムで計算しているプログラムです。

あと、DXライブラリ3Dは
私もすごく期待しているライブラリなのですが、
DirectX、OpenGL、XNA、DXライブラリなどと同じようには考えるとまずいかもしれません。
http://fatalita.sakura.ne.jp/3DLib/Ref.htm
まだまだ製作途中のライブラリだと思いますし、
リファレンスもまだ書いてないものが多いです。
なので、利用するならそれを知っていて、利用するべきでしょう。
ただ、DXライブラリと互換性があるのでそこが強みだと思います。

詳しい事はDXライブラリ3Dの製作者であるJEXさんに聞けば詳しく教えてくれますよb

pupil

Re:C言語を始めたのですが

#16

投稿記事 by pupil » 17年前

>ムービーじゃない限り、ゲーム内の3D描画はリアルタイムレンダリングされていると思いますよ。
>3D映像を作るソフトはありますが、それはゲームでも、「ムービーシーン」のように視点がかえられない
>きっぱりわかれた映像になっていると思います。

やっぱり、Cyberdeliaなんかで作った画像はゲームには使え無いんですね;
今までてっきり、3Dキャラクターが歩いているアニメーションを動かしているのかと
思っていました。ですが、リアルタイムで座標を計算して動いてるんですね~
いま、すでにキャラクターのアニメーション作ろうとしていましたが、話の中間や
おまけ用のムービにする事にします・・・・・・
あ、でもモーション付きモデルだから、カメラ変更ぐらいならできるのかな?

3Dの動きは難しいでしょうね><
例えば、鳥が羽ばたいている時の羽の曲線変化とか、人間の髪の動きとか・・・・
物体を動かすのではなく変化させるのは素人的にむりっぽそう。でも、今まで
やってきたゲームがどんな風に作られていたかって事が手に取るようにわかって
面白いですね。ますますプログラミングにハマりそうです。こんなわかりやすく丁寧な
HPを作ってくださった管理人様・上級者の皆様に感謝です><

管理人

Re:C言語を始めたのですが

#17

投稿記事 by 管理人 » 17年前

Cyberdeliaは使った事が無いですが、アニメーションをさせる事はで来ますよ。
行列計算じゃ手に負えないようなアニメーションはアニメーションを作るソフトで作ったり、
モーションキャプチャを使って、実際にダンサーが踊ったような動きのデータを作ったりしていると思います。

ゲームで使うなら座標を計算する必要があるので、
ポリゴンデータを自力で計算するか、アニメーション情報を読み込んで、
計算するか、になると思います。

3Dデータ作りは私もまさに今勉強中の身なので、詳しい事は言えませんが
複雑でリアルなモーションは難しいですよね・・。
FinalFantasyという映画が昔ありましたけど、
あのキャラクタの髪のナビキは計算式やキャプチャじゃうまく表現出来ないから、
マヤで一つ一つ手作業で作っていったとインタビューで答えている記事を見たことがあります。

アニメーションが作れるソフトを使えば羽ばたきや髪の動きも再現できると思います。
(ポリゴン数が増えるから、髪のナビキはリアルタイムレンダリング無理かもしれませんが)

Justy

Re:C言語を始めたのですが

#18

投稿記事 by Justy » 17年前

 DXライブラリ3D見てみました。
 ざっと見たところ本格的なのはちょっと厳しそうですが、本家のように
さくっとモノを作るには丁度いいかもしれませんね。



>プロの業界ではDXライブラリは使わないでしょうし

 ところがどっこい、去年非ゲームな製品内部で使われているのを見ました!
 画面にデバッグ時に文字を出すのと、Vsync待ちが別のデバイスとの通信待ちに
使われていました(ちょっと待てば結果が返ってくるだろう、という希望的観測による
待ち方なので Vsync待ちを止めた途端バグる)。
 何でそんなありえない選択をしたのかは、作った人がもういないので今となっては謎です。



>3Dフリーゲームなどを遊んで見ると、カメラの使い方が最悪って事が多いですよね。
>私の意見からするとカメラは360度自由に動かせて、なおかつ距離も
>5段階、少なくとも3段階はあるとぐっと面白みと見やすさがあがると思います

 どういうゲームでのことを言っているのかはわかりませんが、
動かすだけなら簡単なんですよね。

 ゲームの内容にも依るのですが、変にカメラ周りの自由度を上げれば上げるほど、
それに附随してプログラムが複雑になり調整が大変になって、
ゲームが破綻していきます。
 素直に見下ろし固定だけにしとけばどんなに作るのが楽になることかwww



>鳥が羽ばたいている時の羽の曲線変化とか、人間の髪の動きとか

 鳥の方は羽ばたきの1つ1つのモーション自体は実物の動きをよく見て落とし込めば
そんなに大変じゃないような気がします(ツールがショボイと辛いことはありますが)。
 むしろ実際に飛ばした時の鳥の移動・姿勢制御だったり、モーション遷移だったり
群衆制御だったりの方がよほど大変かもしれません。

 髪の方はいろんなやり方がありますんで、どういう髪なのかどこまでまじめに
やるかで難易度が変わってきますね。



>やっぱり、Cyberdeliaなんかで作った画像はゲームには使え無いんですね;

 使えるんじゃないですか?
 様々な形式(Xファイルも)にエキスポート出来るようですし。

管理人

Re:C言語を始めたのですが

#19

投稿記事 by 管理人 » 17年前

>ところがどっこい、去年非ゲームな製品内部で使われているのを見ました!

おぉ!ホントですか!
非ゲームですか、どんなソフトだろう・・。

>何でそんなありえない選択をしたのかは、作った人がもういないので今となっては謎です。

むむ。もういないって・・。

内部的な部分のどこにDXライブラリが使われているか
何か見たらわかるんですか?

たかぎ

Re:C言語を始めたのですが

#20

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

> >ところがどっこい、去年非ゲームな製品内部で使われているのを見ました!
>
> おぉ!ホントですか!
> 非ゲームですか、どんなソフトだろう・・。

私も実製品(非ゲーム)で使いたくなるときがあります。
それなりに便利ですからね。

Justy

Re:C言語を始めたのですが

#21

投稿記事 by Justy » 17年前


>むむ。もういないって・・。

 よくあることです(w



>内部的な部分のどこにDXライブラリが使われているか
>何か見たらわかるんですか?

 デバッグのあのLOGが exeと同じディレクトリに吐き出されてました。
 で、ソースもらって見てみたらやっぱり・・・ってかんじで。

管理人

Re:C言語を始めたのですが

#22

投稿記事 by 管理人 » 17年前

>たかぎさん
お~そうなんですか。
しかし意外にプロの世界で使われているにしても、
ゲーム用ライブラリがゲーム以外に使われているわけですね^^;

>Justyさん
>よくあることです(w
なるほど、、社会は怖い・・w
>デバッグのあのLOGが exeと同じディレクトリに吐き出されてました。
なるほど。SetOutApplicationLogValidFlag(FALSE)はしてなかったわけですねw
(こんな事言うと失礼ですが)DXライブラリはきっと学生時代の勉強用ライブラリか
同人ゲー製作用ライブラリにとどまっているだろうと
思っていましたが案外そうでもないんですね。

J

Re:C言語を始めたのですが

#23

投稿記事 by J » 17年前

自分は学生なので製品だのなんなのは言えないですが。
管理人さんの言う通りで勉強用ライブラリ兼同人ゲーの製作に使わせてもらっています。
これが無いとやっていけない!
DirectXの参考書をチラリと見たことはありますが、絶対にDXライブラリの方がいいですね。
DirectXと比べると、3Dに限界はあると思っていましたが、3Dバージョンがあったことを知り、
より一層DXライブラリの私的価値が上がりました。

しかし、製品版に使われているとは・・・
プロの方でも使われるのですね。でも肝心なところが間抜けだったみたいですが(笑
確かに使いやすくて便利なライブラリなのであらゆるプログラムに使えそうです。
プロの方が使っていたということで社会に出ても、胸を張って使って行けそうです(笑

pupil

Re:C言語を始めたのですが

#24

投稿記事 by pupil » 17年前

ちょっと今日、本屋さんで見てきたのですが、DirectXライブラリを使って
ゲームを作る本って無いのでしょうか? 私が見て見る限りDirectXを使った
本はたくさんありますが、ライブラリを使った本は見当たりませんでした。

DirectXを使いやすくしたものがDirectXライブラリと言う事はわかったのですが、
自際にどのように違うのかが全くわかりません。また、本屋さんはC++やDirectX
に関する知識が全く無く、自分で何を選んでいいのか全くです(種類が多すぎて)
C言語とDirectXを使ってゲームを作る本のお勧めを教えてください。
両方一つにまとめてあるものが無理ならば、別々の本でもかまいません。
やっぱり、それ相応の知識を身に付けるためには、ちゃんとお金を出さなければと思っています^^

レスが長くなって申し訳ないのですが、よろしくお願いします。

管理人

Re:C言語を始めたのですが

#25

投稿記事 by 管理人 » 17年前

DirectXライブラリじゃなく、DXライブラリですね。
DirectXもライブラリの一つです。
DirectX,OpenGL,XNAなどは世界規模で使う為に作られた本格的なものですが、
DXライブラリは一般の方が趣味で作られた物だと思いますから、そういう意味では全く種類が違います。
(まぁライブラリのライブラリという時点で種類は同じではないですが、それでもあのクオリティは神ですよね。)

なので、DXライブラリの使い方の本は出版されていなくて不思議は無いのです。
・・・ですが、先日DXライブラリを使ったゲームの作り方の本が出版されました。
DXライブラリ製作者さんの執筆ではないようですが。
DXライブラリのHPにいけばどんな本か書いてありますよ。

DirectXとDXライブラリは何が違うか使ってみればすぐわかると思います。

DirectXは細かい事が自在に設定でき、あらゆることが実現できる分、マスターするのも難しいです。
大規模な開発をすれば本格的な3Dゲーム、例えばCrysisや最近のFFのようなゲームも作れるでしょう。
DXライブラリは2D限定の表現しか出来ず、出来ることも制限されていますが、
すごく使いやすく、3日あれば結構やりたいことが実現出来るようになるでしょう。

pupilさんは、DirectXの勉強がしたいのでしょうか?DXライブラリでしょうか?
DXライブラリなら、上でも紹介したとおり、
うちのサイトである程度勉強出来ると思います。
綺麗なプログラムじゃないとは思いますが・・。
DirectXの良い本は人に聞いてもいいでしょうけど、
やっぱ自分で読んでみてやる気の出そうな本がいいですよ。

大きな書店に行ってまず沢山読んでみること。
「絵やサンプルが沢山のっててある程度抽象的な方がやる気が出る」と感じると感じる人もいれば
「事細かく厳密にかいてあるほうがやる気がでる」と感じる人もいるでしょう。
DirectXのような多くの人が挫折してしまいがちな難しい分野は自分が読み易いと思う本であることも重要だと思います。

そのためにはある程度プログラムがどんなものか解らないといけないと思います。
でないと、読んでもそれが読み易いのかどうかわからないでしょうし・・。

>また、本屋さんはC++やDirectXに関する知識が全く無く、自分で何を選んでいいのか全くです

とりあえず本を手にとって、序章を読んでも何がかいてあるのかわからない状態では、
本を購入しても辛いと思います。
なので、まずDXライブラリを使いながらC言語に慣れていくのがいいかもしれません。

Justy

Re:C言語を始めたのですが

#26

投稿記事 by Justy » 17年前


>同人ゲー製作用ライブラリにとどまっているだろうと
思っていましたが案外そうでもないんですね。

 気付かないだけで、意外なところで使われているのかもしれませんね。



>しかし、製品版に使われているとは・・・

 とはいえ、今はもうないはずです。
 私にところにオハチが回ってきたときに、再設計したらそのアプリは不要になったんで。

pupil

Re:C言語を始めたのですが

#27

投稿記事 by pupil » 17年前

管理人様、ありがとうございました。
今まで、「DXライブラリ=DirectXを簡単にした物」とばかり思っていました;
DXもまだ完璧に使いこなしてはいませんが、DirectXを使ってゲームを作って行こうかと
思います。始めてゲームを作るといっても、手の込んだものを作りたいですしね^^

御津凪

Re:C言語を始めたのですが

#28

投稿記事 by 御津凪 » 17年前

> 始めてゲームを作るといっても、手の込んだものを作りたいですしね^^
作っている最中にあれやこれやと追加するような書き方はなるべく避けてくださいね。
色々と修正を加えているうちに何がなんだか分からなくなって、
仕舞いには破綻、となりかねませんので。

私が昔そうであったように…。

最初は大まかに考えて作るより、具体的に何がしたいのかを
しっかり書き留めてから取り掛かったほうが吉かもしれません。
特に中規模以上のゲームを作るには必須でしょう。

管理人

Re:C言語を始めたのですが

#29

投稿記事 by 管理人 » 17年前

>Justyさん
>気付かないだけで、意外なところで使われているのかもしれませんね。

そうですね~。
とりあえず同人2Dゲームをのぞいてみると
かなりの頻度でDXライブラリをみかけました^^;

>pupilさん
> 始めてゲームを作るといっても、手の込んだものを作りたいですしね^^

いや~これはどうでしょう。
初めて作るものだからこそ、手を込んで作ってはいけないと私は経験上思います・・。
千羽鶴を折り始めるのと違い、作っていく中でその一つ一つは関連していますから、
途中から「こういうモジュールの作り方じゃ効率が悪かった・・」と思っても
根底から全部作り変えないとそれが解決出来なかったりするかもしれません。
うまく作れば完全に独立したモジュールから構成されるゲームもつくれるでしょうけど、
初めて作ってそこまで完璧に作っていく事は難しいのでは無いでしょうか。
う~ん、何かせっかくやる気を持っていらっしゃるのに否定的な意見は言いたく無いのですが、
最初から大きなものを作ろうとすると挫折してしまうと思います。
・・段々慣れていくのが一番だと思いますよ。とだけ言っておきますm(_ _)m

御津凪さんの仰るように、途中から思いつきで機能を付けて行ったりすると、
わけがわからないモジュールになったりしかねません。
初めて作る状態で全て先を見越した設計をするのは結構難しいですよ;
まぁ大変な思いをすることも、いい経験だと思います。
経験に無駄なことなんてありませんからb

私も昔ありえないスパゲティコードを延々と書き続けたこともいい経験だと思っています^^;

konacchi

Re:C言語を始めたのですが

#30

投稿記事 by konacchi » 17年前

私は未だにひとつもゲームを作った事がないです・・・・。
(未だにとは言っても、暦は浅い訳ですが(汗))
必死に勉強してまして、はやくゲーム作って公開したいなぁ~ といつも思っています(笑)
言語に対してすら知識が少ないのに同時にDirectXも覚えなくてはならず四苦八苦です。
ああ、早く本格的に開発したい・・・。
でも焦らずやっていこうと思います。
大風呂敷広げても後から苦労しそうですしね^^;

directXやライブラリの話が出てましたが。

DirectX→パズル工場
DXライブラリ→パズル
私達プログラマ→パズルを組み立てる人
コンパイラ→額縁
ゲーム公開→部屋に飾る

といったカンジですかね~~^^

Yuki

Re:C言語を始めたのですが

#31

投稿記事 by Yuki » 17年前

・DirectX→グラフィック処理に特化したMicrosoft提供ライブラリ
・DxLib→DirectXの処理をある程度まとめたライブラリ

つまり中身はDirectXだし、突き詰めればすべてはアセンブリないし機械語にたどり着く。

プログラマとコンパイラに関しては

・プログラマ→設計図、手順を作る人
・コンパイラ→設計図にしたがって組み立てる人

でしょう。

何はともあれ、これからプログラミングする人は、手段が目的化するのは避けたほうがいいと思いますね。
どういうことかと言うと、「目的」があまりにも高度だと「手段」に労力を費やすということです。
もっと簡単に言ってしまえば、「コンソールアプリから始めましょう」

バグ

Re:C言語を始めたのですが

#32

投稿記事 by バグ » 17年前

そうですね、コンソールアプリもWindows.hを利用すれば、結構色々とできますしね。
意外に奥が深いですよ。

pupil

Re:C言語を始めたのですが

#33

投稿記事 by pupil » 17年前

 >管理人様

>いや~これはどうでしょう。
>初めて作るものだからこそ、手を込んで作ってはいけないと私は経験上思います・・。

なるほど~手を込んで作るのも慣れてからですね^^
ココ2日ほどいろんなサイトを見て回って学んだ事がたくさんありました。
DXライブラリに関する本が無いのは、個人で作ったライブラリだから。
でも、初心者向けには使いやすい。そして、初級編サイトには大抵
DXのことが書かれている。その理由は、最初からいろんな物を詰め込むより
シンプルに作って行けるようにって事だったんですね^^
じゃんけんゲームは何とか作れたので、次ぎはテトリスやブロック崩し、4×4ぱずる
なんかを作ってみようと思います。



 >Yukiさん

>何はともあれ、これからプログラミングする人は、手段が目的化するのは避けたほうがいいと思いますね。
>どういうことかと言うと、「目的」があまりにも高度だと「手段」に労力を費やすということです。
>もっと簡単に言ってしまえば、「コンソールアプリから始めましょう」

了解です。
英語も始めは短文から習いますもんね^^
それと同じで高度を目指すならまず低いところからなんですね。


みなさんの貴重なアドバイスありがとうございました。
また困った事があればよろしくお願いします。

閉鎖

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