ページ 1 / 1
OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月17日(月) 01:05
by いつでも八方塞がり
初めまして、いつでも八方塞がりと申します。
この度初めて掲示板を利用させていただきます、よろしくお願いします。
この度、簡易的に動くアクションRPG(横スクロールではなく斜め上から見下ろしたような、MMORPG似よくあるタイプのもの)を作らなくてはいけないことになったのですが、自分はプログラムの初心者中の初心者なので(とりあえず学校で習ったと言うこともありC言語ならある程度使えるのですが)どうしたものか、と色々試していました。
DirectXやWin32API等で始めたのですが、途中でよくわからないエラーを吹いたりするので今ではOpenGL+SDLを使用したものを選択して勉強しています。
それにあたり、「初心者の初心者による初心者の為のSDL」と言うサイトを見つけたので参考にさせていただいています。
http://tokyo.cool.ne.jp/sdl/
しかし、このサンプルプログラムの「17.マップを歩く MapWalk」「19.コマンドメニューの表示 CommandMenu」において、プログラムをビルドしようとするとエラーメッセージが出てしまい困惑しています。
ビルドまでは成功するのですが、ビルドすると添付した画像のように「コンピューターにSDL.dllがないため、プログラムを開始できません。プログラムを再インストールしてみてください。」と言うコメントが出てしまいます。
「SDL-1.2.13」と「SDL_ttf-2.0.10」はインクルードファイルとライブラリファイルとして登録しているので、これがこれの問題となっているのか見当がつきません。
こちらのサイトの更新は2005年で停止してしまっていて、掲示板はリンク切れでメールアドレスの方にもメールは届かなくなってしまっているのでどうしたらいいものかと困っています。
どなたか、詳しい方がいらっしゃいましたらご教授いただけませんでしょうか。
また、よりアクションRPGらしいプログラムを学べるサイトをご存じでしたら紹介していただけませんでしょうか。
具体的には「マップがあり、プレイヤーキャラ(アバター)があり、NPCが存在する」程度の完成度で構いません。
よろしくお願いいたします。
使用環境は以下の通りです。
・Windows7 Pro
・PC:NEJC LaVie G (2010年秋モデル)
・使用ソフト:Visual Studio 2008 (C++)
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月17日(月) 01:35
by ISLe
SDL-devel-1.2.xx-VCx.zipという感じの名前のファイルをダウンロードしたのであればlibフォルダの中にSDL.dllがあります。
実行ファイルと同じ場所(正確にはカレントフォルダ)か、実行パスの通ったフォルダに配置してください。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月17日(月) 03:38
by いつでも八方塞がり
>>ISLeさん
はい、確かにプログラムの実行フォルダに「SDL.dll」「SDL_image.dll」「SDL_ttf.dll」「zlib1.dll」をコピーして入れたところ、「コンピューターにSDL.dllがないため、~」というようなメッセージは出なくなり、ウインドウが出るようになりました、ありがとうございます。
しかし、ここで新たに問題が出てきました。
出現したウインドウの中がブラックアウトしていて何も表示してくれません。
これは何処かがおかしいから起こっている現象だと思うのですが、具体的に自分で何処がおかしいのか理解できません。
お手数ですが、ご教授願えるとありがたいです。
ちなみに言い忘れましたが、サンプルプログラム原文だとエラーが出るので数ヶ所だけ変更を加えてあります。(変更と言うほどたいそうなものでもありませんが。)
Def.h
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
ここのSDL/SDLを全てSDLに変更しています。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月17日(月) 10:50
by softya(ソフト屋)
どちらかと言うとC言語ならDXライブラリの方が情報は多い気がしますが、SDLを選択された理由はなんでしょうか?
DXライブラリならDirectXよりもはるかに楽にプログラムを構築できます。Win7でも動きます。
参考までに、サイトご紹介しておきます。
「DXライブラリ置き場 HOME」
http://homepage2.nifty.com/natupaji/DxLib/
「DXライブラリ置き場 サンプルプログラム」
http://homepage2.nifty.com/natupaji/DxL ... ogram.html
「C言語~ゲームプログラミングの館~ [DXライブラリ]」 この掲示板の管理人さん作成の講座です。
http://dixq.net/g/
で、手前味噌でありますが私の書いている日記「RPG講座」
http://dixq.net/forum/blog.php?u=114&sd=a
DQ風RPGですが、基本的なところはアクションRPGでも変わらないはずです。
ただ、RPG系は作るものが多いので期限次第では仕様上捨てるものは捨てまくらないと間に合わないかと思います。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月17日(月) 19:02
by ISLe
いつでも八方塞がり さんが書きました:出現したウインドウの中がブラックアウトしていて何も表示してくれません。
画像ファイルはどこにありますか?
実行ファイルを直接起動するときは実行ファイルと同じ場所、VisualC++のIDEから起動するときはプロジェクトのフォルダから読み込むようになっています。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月25日(火) 17:13
by いつでも八方塞がり
色々手続きやらナンやらが合ったりで最近ここを見に来れず、返信が遅くなりました申し訳ありません。
>> softya(ソフト屋)さん
DXライブラリは一番最初に「14歳からはじめる わくわくC言語ゲームプログラミング教室」という本を買って進めていました。
が、そこに載っているサンプルプログラムを使用して進めている最中、途中で上手くプログラムが起動してくれない問題が発生し、結局この本を使用した開発は断念した経緯があります。(そもそもこの本では横スクロールのゲームの紹介ばかりで意図したゲームが作れなかったという問題もありましたが)
その後、様々なホームページのサンプルプログラムを使用しようとしましたが、大体どのサイトのサンプルプログラムをそのまま使用しても正常に起動しなかったためDXでの開発自体を断念しました。
次にDirectXとWin32APIでの開発も試しましたが、結局これも正常に起動しませんでした。
原因としてはWindows7を使用しているところが大きいような気もします、サンプルとしておいてあるプログラムの大半がそのまま起動しないあたりもう訳がわかりません。
正直だいぶ挫折気味になって色々調べていたところ、「OpenGL+SLDは自由度の幅は少ないが簡単に作れる」というような記述のサイトを発見したためこれで動作するものを作ろうと考えました。(この時点で1月5日ぐらいでした)
参考にしたサイトとしては、「Nojima's Wiki - 2DゲームのためのOpenGL-SDL入門」で簡単な練習をしてから「初心者の初心者による初心者のためのSLD」に移行しています。
詰まるところ、「何故OpenGL+SLDで制作しているのか」と言われますと、「他を試して正常に動かなかったから」ということです。
プログラム自体1月30日までに作らないといけないので、もうだいぶまいってます。
softya(ソフト屋)さんのサイトのプログラムも今から見させていただく予定ですが、なにぶん時間がないので今から仕様変更はかなり厳しいと思います。(これは自分が多忙で返信遅れたからなのです、本当に申し訳ありません。)
>>ISLeさん
とりあえずProjectの同じフォルダー内に作ってあると思います。
状況的に説明しにくいかと思うので、下のようになっていると思います。(Zip形式にまとめてみました。)
http://www.dotup.org/uploda/www.dotup.o ... 5.zip.html
PW:1010
参考にしてコメントをいただけるとありがたいです。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月25日(火) 18:04
by ISLe
いつでも八方塞がり さんが書きました:>>ISLeさん
とりあえずProjectの同じフォルダー内に作ってあると思います。
状況的に説明しにくいかと思うので、下のようになっていると思います。(Zip形式にまとめてみました。)
Windows 7の64ビット版、Visual C++ 2010 Expressでソリューションを開いて(追加のインクルードパスとライブラリパスを設定して)ビルド、デバッグを開始しました。
まったく問題なく動きました。
サイトのスクリーンショットと同じように画像も表示されますし、キーボードからの操作もできました。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月25日(火) 18:41
by softya(ソフト屋)
こちらはWindows 7の64ビット版、Visual C++ 2008でパスさえ設定すればコンパイルも通り動きました。
あと5日ほどしか無いですが、このプログラムは何処まで理解されていますか?
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月25日(火) 18:43
by ISLe
SDL_image.dllといっしょにlibpng12-0.dllというファイルが入っているはずなのでそれもSDL_image.dllと同じ場所に置いてください。
SDL_imageでpng形式の画像ファイルをロードするときに必要です。
ウチでは既にパスが通ってて気付くの遅れました。すみません。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月25日(火) 19:20
by softya(ソフト屋)
私も
SDL-1.2.14
SDL_image-1.2.10
SDL_ttf-2.0.10
をパスに追加しました。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月26日(水) 14:29
by いつでも八方塞がり
>>ISLeさん
>>softya(ソフト屋)さん
ありがとうございます、SDL_image-1.2.10をコピーしたらきちんと動くようになりました。
すごい初歩的なミスでがっかりしました。。。
コマンドも作ろうと考えていましたが、時間的に非常に余裕がないため割愛することにしました。
よって、コマンドのプログラム自体が余計になったので、「初心者の初心者による初心者の為のSDL」で言うところの「19.コマンドメニューの表示 CommandMenu」から「17.マップを歩く MapWalk」にデチューンしました。(基礎的なところは変わっていないはずです。)
とりあえずフルスクリーン化、画面サイズの1024*768化などは行っています。
今後の変更は以下の通りです。
・NPCを1体設置、吹き出しにURLのリンク
・(独り言の)チャット機能の追加
・Twitterのツイート投稿機能の追加
http://www.dotup.org/uploda/www.dotup.o ... 6.zip.html
PW:1010
今はNPCの設置方法とチャット機能の追加方法を検索して調べているところです。
Twitterの方はとりあえず2つほど参考になるかな、と言うようなサイトを見つけました、がこれが使えるかよくわかりません。
参考になるサイトやプログラムを教えていただけると大変ありがたいです、よろしくお願いします。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月26日(水) 14:46
by softya(ソフト屋)
・NPCを1体設置、吹き出しにURLのリンク
・(独り言の)チャット機能の追加
・Twitterのツイート投稿機能の追加
・マウス操作に変更する気でしょうか。URLリンクをどうやってクリックします?
あとURLリンクをクリックしたらフルスクリーンを抜けてブラウザを立ち上げるんでしょうか?
ユーザーの操作と起こるアクションを明確にしないとマズイと思います。
・チャット機能と言うと、キーボード入力ですができそうですか?漢字を含めるとすごく難しいかも。
・Twitterのツイートは、去年の夏にプロテクトが厳しくなった(oauth認証が必須)ので良いライブラリが見つからないと辛いかも知れませんね。
自分のTwitterへの接続パスワードをプログラムに埋め込むことにはなると思います。
「liboauthをVCでビルド - 忘備録」
http://blog.goo.ne.jp/scizor/e/de6b2241 ... 44631bc77b
ここらへんを足がかりにするしかなでしょうかね。これだけで軽く一週間ぐらいかかる気もしますが。
・アクションゲーム的な要素はまったく無くなったってことで良いのですね?
【追記】
それよりも前に予定にあるNPCの表示やらウィンドウの表示、縮小マップの表示などに注力したほうが良さそうです。
もしかしたら、それだけで期日を迎えることになるかも知れません。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月27日(木) 14:47
by いつでも八方塞がり
>>softya(ソフト屋) さん
いつも返信ありがとうございます。
ISLeさんとsoftya(ソフト屋)さんには無知な自分をいつも助けていただいて本当に感謝しています。
今回は箇条書きで失礼します。
「NPC1体設置~」について
当初、マウスで敵mobやコマンドを選択して操作できるように設定するつもりだったのですが、敵mobやコマンドの実装も含めて時間的に実装不可能ですのでここは簡略化します。
実際のところはブラウザをゲーム上にウインドウの形で使いたかったのですが。
ただ、「吹き出しにURLリンク」というのはプログラム的にもわかるように実装したいと思います。
これだけでは木偶の坊だと言うことはわかっていますが、一つのコンセプト(の名残)として重要なためここだけでも実装したいと考えています。
「(独り言用)チャット機能」
Entangled Spaceさんのところで公開されているSDL_Kanjiというものを利用しようと考えていたのですが、このチャット機能はあくまで独り言なのでひらがな真美入力できれば問題ないと時間的に妥協して考えています。
http://shinh.skr.jp/sdlkanji/
「Twitter投稿機能」
ここ数日、自分なりにいろいろ調べてみていましたが(とは言っても書類の提出などがあったためあまり本腰を入れて調べられなかったのがお恥ずかしいところなのですが……)、ソフト屋さんの仰るとおりAPIの禁止の頃から規制強化されたらしく、公開されているものでも使えないものも多数含まれているようです。
しかも今使えるものは結構複雑なものが多く、時間的にも技術的にも現段階での実装は厳しいと感じました。
そこで、代替として(というわけではないのですが)メールの投稿機能が追加できないかと言うことを考えています。
外部とのコンタクトが一つのコンセプトとなっているため、何かしらのこういった機能をつけたいと考えています。
「縮小マップ機能」
この機能ですが、今回開発するものでは、さほど重要な位置づけではない上に時間がないので省略することにしました。(マップも一つしかないですし)
ゲーム性に関しては、「ゲームの形式を利用した」ということが重要であるため、今回のプログラムでは重要視していません。
Re: OpenGLとSDLを使用したプログラムなのですが、解らないところがあるので教えていただけないでしょうか。
Posted: 2011年1月27日(木) 15:26
by softya(ソフト屋)
とりあえず仕様を整理するのと優先順位をつけてください。
最悪切り捨てる必要が出てくるかもしれません。
今の最大の問題は、実際に動いている状態のイメージが明確ではないことです。
こういうシステムは、明確な操作・動作イメージが出来ていないと作ることも出来ません。
いつでも八方塞がり さんが書きました:
「NPC1体設置~」について
当初、マウスで敵mobやコマンドを選択して操作できるように設定するつもりだったのですが、敵mobやコマンドの実装も含めて時間的に実装不可能ですのでここは簡略化します。
実際のところはブラウザをゲーム上にウインドウの形で使いたかったのですが。
ただ、「吹き出しにURLリンク」というのはプログラム的にもわかるように実装したいと思います。
これだけでは木偶の坊だと言うことはわかっていますが、一つのコンセプト(の名残)として重要なためここだけでも実装したいと考えています。
まず、吹き出しが出る条件とURLリンクとしてはどの様な機能がありますか?明確に。
その前に今のコードにウィンドウのメッセージ表示を組み込めますか?
吹き出しってことはキャラクタとウィンドウはスクロールに合わせて移動することになると思いますが。
いつでも八方塞がり さんが書きました:
「(独り言用)チャット機能」
Entangled Spaceさんのところで公開されているSDL_Kanjiというものを利用しようと考えていたのですが、このチャット機能はあくまで独り言なのでひらがな真美入力できれば問題ないと時間的に妥協して考えています。
http://shinh.skr.jp/sdlkanji/
このチャット機能は常に機能した状態ですか?
つまりキャラクタの移動とチャット機能は同時に動作するかということです。
そもそも「初心者の初心者による初心者の為のSDL」にキー入力のサンプルがないので初心者が組み込みするのは苦労すると思います。
>>真美入力??
意味不明。
いつでも八方塞がり さんが書きました:
「Twitter投稿機能」
ここ数日、自分なりにいろいろ調べてみていましたが(とは言っても書類の提出などがあったためあまり本腰を入れて調べられなかったのがお恥ずかしいところなのですが……)、ソフト屋さんの仰るとおりAPIの禁止の頃から規制強化されたらしく、公開されているものでも使えないものも多数含まれているようです。
しかも今使えるものは結構複雑なものが多く、時間的にも技術的にも現段階での実装は厳しいと感じました。
そこで、代替として(というわけではないのですが)メールの投稿機能が追加できないかと言うことを考えています。
外部とのコンタクトが一つのコンセプトとなっているため、何かしらのこういった機能をつけたいと考えています。
メール機能のライブラリに当てはありますか?
自分で実装するとすごく大変ですよ。