SDLスレ ver.2.0
■ このスレッドは過去ログ倉庫に格納されています
マルチプラットホームな汎用ゲームライブラリの SDLについてのスレッドです。 最新情報、参考になるソース、質問等なんでもどうぞ 本家 ttp://www.libsdl.org/ SDL_mixer ttp://www.libsdl.org/projects/SDL_mixer/ SDL_image ttp://www.libsdl.org/projects/SDL_image/ SDLdoc-jp ttp://www.tacoworks.jp/software/SDLdoc-jp/ GamDev ttp://gamdev.org/w/?%5B%5BSDL%5D%5D 初心者の初心者による初心者の為のSDL ttp://tokyo.cool.ne.jp/sdl/ 前スレ http://pc8.2ch.net/test/read.cgi/gamedev/1005469181/ ノーマークなリナックスゲームでも作ってノーマークのまま消えるか・・・ DirectXよか敷居低そうに見えるけど、実際どうですか? ちなみに2Dのゲーム作ろうと思ってるんですが。 カラーキーを考慮して普通に描画、 半透明、加算、減算、拡大縮小、回転等の機能はひととおりそろってるんでしょか。 SDLのコアな機能として、BMPファイルの読み込み、カラーキーの設定、WAVファイルの再生、などなど... ほかの定番な機能も、補助ライブラリによって大概のものが提供されている SDL_image 様々な画像ファイルの読み込みを扱う SDL_gfx 基本的な図形の描画や、画像の回転拡大描画を扱う SDL_mixer 様々な音楽ファイルを便利に扱える SDL_gfxは拡大縮小といっていいのだろうか・・・ 初心者の〜 ttp://tokyo.cool.ne.jp/sdl/index2.html ココ参考にしてVisualStudio2005EEでコンパイルしてみたんですけど 警告が出ます。どなたか、解決方法わかりませんか? 1>------ ビルド開始: プロジェクト: sam, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.cpp 1>i:\documents and settings\hoge\my documents\visual studio 2005\projects\sam\sam\main.cpp(57) : warning C4715: 'Init' : 値を返さないコントロール パスがあります。 1>マニフェストをリソースにコンパイルしています... 1>リンクしています... 1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。 1>マニフェストを埋め込んでいます... 1>ビルドログは "file://i:\Documents and Settings\hoge\My Documents\Visual Studio 2005\Projects\sam\sam\Debug\BuildLog.htm" に保存されました。 1>sam - エラー 0、警告 2 ========== ビルド: 1 正常終了、0 失敗、0 更新、0 スキップ ========== >>13 それはちょっとキツイ. 初心者の〜なんだし. >>12 サンプルソース見ると分かるけど,Init()の最後に return true; が無い. 解説サイトでそりゃ無いだろ,って気もするけど... あと,msvcrt.lib を無視する設定にすると後半の警告は消える. VisualStudio2005EE では設定方法分からないけど, VC++6.0 の場合は,メニュー→プロジェクト→設定→リンク→インプット で無視するライブラリを設定する. SGE http://www.etek.chalmers.se/ ~e8cal1/sge/ 主に画像関係がつまってる。 当たり判定のチェックも出来るみたい。 Ruby/SDL製のクラスライブラリ、Miyako v0.6リリース http://www.twin.ne.jp/ ~cyross/Miyako/ ・最適化すると動かなくなる ・起動時に自動でテキストが出力される このあたりは設定で回避できたりしないんでしょうか? あとは、フォルダ内にDLLが多くなるので、 使う機能だけをexeファイルに内包させ、実行ファイルだけで済むようにしたいんですが… >>21 最適化云々は知らん。ウチの環境(VC++2005)では動いてる。 あと2つは、 ヒント: ./configure --disable-stdio-redirect --disable-shared --enable-static >>21 exeファイルに内包させるとLGPLが適用されるけど、それは構わないという認識でOK? 俺はSDL.dllやSDLimage.dllなどをまとめてSDL_cust.dll(仮)1つにしたいんだがやり方が分からないでいる。 散らばるのがアレならディレクトリに放り込めばいいんじゃないんでしょうか。 オープンソースなんだから自分でビルドすれば もし成功したら欲しい >>20 * 画面サイズは640x480のみ * 同時発色数はハイカラー以上(フルカラー奨励、256色非対応) * ウィンドウスタイルのみ、フルスクリーンモードなし * 遅い(どうしようもないなぁ・・・) * ウィンドウ、マップのインタフェースが煩雑(どうしようか・・・) * Windows以外ではフォントパス検索が不十分(解決したい・・・) * エラーの整備が不十分 * ドキュメントが全然整っていない(リファレンスはまだまだ・・・) >>28 SDLの2Dってソフト連打じゃなかったけ?ソース見てないからなんともいえんが OpenGLにすれば早くなるよね Mix_LoadMUS_RWが使えないんだが… 原因に心当たりのある人、助言plz。 環境・やったこと ・ VC.NET, SDL1.2.9, SDLMixer1.2.6 ・ SDL_mixer と mikmod を USE_RWOPS でビルド ・ 自分のプロジェクトにも USE_RWOPS ・ 自分のプロジェクトをビルドすると、LNK2019。Mix_LoadMUS_RWが未実装。 ・ 関数の実体が定義されてないっぽいと分析したが、SDLの該当ソース部分はifdefの嵐でわけわかんないよギヴアップ。 ・ ここ読んだ。でも意味がよくわからないから、上に書いたことしかやってない。 ttp://ilaliart.sourceforge.jp/tips/mix_rwops.html >>34 つ ttp://www.freeml.com/message/sdl-fan-jp@freeml.com/0000828 とりあえず、SDL_mixer 1.2.5の時点では実装されていない 待望のバージョンアップ!!! SDL version 1.2.10でますた。 さっそくSDL-devel-1.2.10-mingw32.tar.gzダウンローーード!!! …。 肝心の libSDL.a が含まれてないような気がする…。 しかもINSTALLみると、コンパイルしなければならない??? configureもみつからない…。 ファイルサイズもちっこいし…。 なんか怖いのでSDL-1.2.9に戻しますた。 >>36 libSDL.dll.a が入ってるだろ… INSTALLファイルはソースからのインストール方法が書いてあるだけだし… ざっとChangeLog見てみたが、大きな結構変更点多いな とりあえず、 ・Added SDL_GL_SWAP_CONTROL to wait for vsync in OpenGL applications. (GLアプリでvsync待ちが出来るようになった) ・SDL_WM_SetCaption() now officially takes UTF-8 title and icon strings, and displays international characters on supported platforms. (ウィンドウタイトルがUTF-8に対応した…英語以外もおk) ・SDL_opengl.h has been updated with the latest glext.h from http://oss.sgi.com/projects/ogl-sample/registry/ (SDL_opengl.hが最新のGL拡張に対応した) ・[Windows] Window positions are retained when switching between fullscreen and windowed modes. (フルスクリーンとウィンドウモードの切り替えをした時にウィンドウ位置が維持されるようになった) ・[Mac OSX] SDL now supports building Universal binaries, both through Xcode projects and when using configure/make. See README.MacOSX in the SDL source archive for details. (ユニバーサルバイナリに対応した) このあたりが個人的におぉ!と思った > 大きな結構変更点多いな 結構大きな変更点多いな orz Windows上で、VisualC++とSDLでゲーム開発したいのですが、 SDLはDirectXのラッパーらしいので、となるとDirectX SDKも インストールする必要があるのでしょうか? ランタイムDLLだけじゃダメ? SDLでドキュメントのPlaySoundのサンプル見ながら音を鳴らすコード書いてみました。 ちゃんと動きましたが、でも音の再生や停止に微妙な遅れが出る… コールバックが呼ばれてるまでの遅れでしょうか? ゲームだと音の遅れはかなり目立ちます。何か解決策はありますか? >42 なんか前に少しいじったとき、 すごい音がブチブチに途切れるんで何ごとかと思ったら フルスクリーンにしたら直った。 ウインドウモードだとBltにスゴイ時間がかかって 処理落ちしてるみたい。呆れるほどの低速動作・・ でもフルスクリーン限定のゲームを作るならいいかな。 ていうかSDLってウインドウ時すごく遅いですよね 呼び方を間違ってるのかな・・? ↑ もしかしてAPIのバージョン使ってる? ドキュメントより: 「バージョンが2種類あります。 Win32 API 上で動く全てのシステムで 安全なバージョンと、 DirectX API 上で動くハイパフォーマンスの バージョンです。」 あと、描画する前にテクスチャのフォーマットを 画面のフォーマットと同じに変換してメモリ上に置いておかないとすごく遅くなるよ GL使ってる場合は別だが >>35 Mix_LoadMUS_RWが使えるようになった。ありがとう。 >>45 ダウンロードできるバージョンは一つしか無いようですが… どうやってDirectXとWindowsAPIを切り替えるんでしょうか? >>48 環境変数 SDL_VIDEODRIVER や SDL_AUDIODRIVER で切り替え可能. そういえばSDL-1.2.10からwin32環境のデフォルトのビデオドライバが directx から windib に変更になったらしいね。 ttp://zinnia.dyndns.org/~hiki/SDLKB/?%B4%C4%B6%AD%CA%D1%BF%F4SDL_VIDEODRIVER ttp://zinnia.dyndns.org/~hiki/SDLKB/?%B4%C4%B6%AD%CA%D1%BF%F4 >>49 レスさんくす。 環境かよ!って突っ込みたくなりますね。 環境変数となるとユーザに配る時面倒だな 小さなローダプログラムで設定して本プログラムに渡すのが一番いいかな… >>51 自分で書いたプログラムならSDLの初期化前にputnev()で 設定してやればいいだけじゃね? どこかに1.2.9のアーカイブまだ残ってないのかな。 1.2.10にしたらBCCでコンパイルが通らなくなって、 とりあえずエラーが出ないようにはできたんだけど。 どうして1.2.9だとエラーでなかったのか調べたいと思ったら このまえうっかり消しちゃって…。 ああごめん。 リンクされて無いだけで、普通にファイルは残ってたのね。 >45>46 情報ありがとうございます。試してみます。 >>55 ありがとう、見つけました。 でもヘッダーファイルの構成変わったみたいで見てもわかんなかったや。 ところでbccでコンパイルしたときって、 SDL単体でもmsvcr71.dll必要じゃなかったっけ? 今やったら無くても動いたんだけど、1.2.10でなんか変わった? 前から? 普通にVisualStudioとかgdbとかXcodeとかで はぁそんな高低さあるデバッグ環境並べられても 困るのですが 3つ並べたけど、自分の環境に従ってどれでもどうぞってことだよ? VisualStudioのデバッガじゃ不満なの? あのねあのね、SDLってMFCでいうとこの MDIみたいにWindowをネストして管理しることできますか? >>64 SDL単体にそんな機能は無いな そもそもそういう用途向けのライブラリじゃないし http://www.libsdl.org/libraries.php で GUI で検索してみれば? 何がわからないのかもわかってない自分にとっては こういう流れも荒れてるようには見えない… 参考になります。 マウスカーソルをSDL_JOYAXISMOTIONで動かす為にSDL_WarpMouseを使った所、 カーソルがあった位置の画像が欠けたみたいになってしまいました。 こうならずに動かす方法はないでしょうか? SDL 1.3(開発版)を使っている人はいますか? >>68 そういえば、1.3ではLGPLとは違うライセンス形態が追加されるんだっけ。 誰か情報知ってる? >>69 LGPLと、別のライセンスによるデュアルライセンスみたい。 いまなぜかwww.libsdl.orgが見られないんでグーグルのキャッシュでごめん。 ttp://72.14.253.104/search?q=cache:NjYq8XR_4aEJ:www.libsdl.org/pipermail/sdl-cvs/2006-June/001796.html ttp://72.14.253.104/search?q=cache:IZ4CJHmKo7MJ:www.libsdl.org/pipermail/sdl-cvs/2006-June/001797.html ウェブサイトが見えるようになったので追記。 ttp://www.libsdl.org/license.php ttp://www.libsdl.org/license-commercial.php commercial licenseがどういうものかはわかんない。 MLでは話題に上がっているのかな。 SDL.dllとSDL_image.dll、それぞれどのバージョンがどんな感じに対応しているか、 詳しく知っている人いませんか? または、対応表とか。 SDL 1.2.7をbcc32でコンパイルしたプログラムを SDL.dll 1.2.7とSDL_image.dll 1.2.5を一緒に使ったところ、 「SDL_Error関数がSDL.dllにない」と言われました。 SDL.dllを1.2.11にしてみたところ問題なく動いたので、SDL.dllの対応がSDL_image.dllに 追いついていないということになるみたいなのですが……。 >>72 SDL_image をコンパイルするときに使った SDL を使えばよいだけなのでは? >>73 あ、そういう方法がありましたか。 自分は基本的にバイナリ配布のものをそのまま使っている軟弱者なので、気づきませんでした。 ありがとうございます。 >>53 氏も言っていましたが、 bcc32の場合、SDL 1.2.10以降はヘッダーファイルがコンパイルに引っかかって困ります。 どこかに修正版が落ちていないものでしょうか……。 VC++2005が無料で使える今となっては、 bccでやる人はほとんどいないだろうしなぁ >>74 コンパイルできないとかならBTSにレポートすれば? >>75 まぁ確かにVS2005あるし,gccな人はMinGWやcygwinがあるし, でも使い慣れたものを使いたいという人もいるだろうしサポートはしといて欲しいなぁ… >>74 1.2.11での話だけど、"SDL_config_win32.h"の32行目 -------------------------------------------------- #elif defined(_MSC_VER) -------------------------------------------------- を -------------------------------------------------- #elif defined(_MSC_VER) | defined(__BORLANDC__) -------------------------------------------------- と書き換えればエラーは出なくなる。 多分64bit対応部分で、bccには関係ないのでこれでOKだと思う。 勘だけど… >>77 コンパイル通りました!実行も問題ありません。 (といっても、ウィンドウ作って、背景色をつけるぐらいのことしかしていないので、 他の機能がどうなっているかまではわかりませんが) 本当にありがとう。 SDLコンパイルはできるのに .exeを実行すると画面が一瞬だけ出て消えてしまいます 原因はググってもわかりませんでした 何が原因でしょうか・・・・ >>80 初心者用のサンプルコードのためと思われる。 ウィンドウを作るだけでプログラムが終わるので、ウィンドウは速攻で破棄される。 試しに、SDL_Quit()を呼ぶ前にSDL_Delay( 2000 )とでも書いてみ。 SDLとDXライブラリはどちらが初心者向きですか? ちなみにスト2のような2D格ゲーを作りたいと思っています。 >>82 初心者向け、ということならDXライブラリのほうが初心者向け。 日本人による日本人のためのゲーム作成ライブラリだから、日本語の資料しかない。 SDLは英語の資料がほとんど。 勉強になる、スキルアップにつながるという点では、SDLのほうに軍配があがると思われる。 関係ないけど先日から挙動がおかしかったSDL公式ページ、サーバー落ちてるよ……。 >>83 回答ありがとうございます。 途中で挫折してしまっては意味がないので、DXライブラリにしようと思います。 >>82 マルチプラットホームを意識しないならDXが日本語ドキュメント豊富で でいいんじゃないかな www.libsdl.orgおかしくね? 契約切れかな >>87 ちょっと前まで、サーバが挙動不審だったり、落ちてたりしてたけど、 今は大丈夫じゃないか? アクセスしたけど、問題なかったよ。 Linux版を配布する場合,ライブラリのlibSDLはどのように同梱すれば良いのでしょうか? Windowsであれば同一フォルダにSDL.dllを置いておけば認識して起動します でも,Linuxはそれだと認識されないみたいです Linuxerならライブラリ自分で入れちゃうだろうから同梱しなくていいんじゃね SDL使ってますってだけどっかに書いといたら? >90 PS3用なので,ユーザのスキル低いんです 依存関係調べて,元から入っている古いやつを削除とかムリ 配布したファイルだけで完結していたい >>91 本当にユーザのスキル低いのか? ってか低いって言えるほどPS3 Linux のユーザのサンプルが存在してるのかしら…? 低いやつってか使えないやつはLinuxインストールしてもすぐ消すんじゃね? というだけだとあれなんで… SDLがLGPLなんでソースをLGPLやGPLで公開できるなら全部スタティックリンクしちゃって配布すればいい。 できないなら libSDL を含む実行に必要な共有ライブラリ全部を同封して起動用のシェルスクリプトを 書いてやればOKだろう。シェルスクリプトの中で環境変数LD_LIBRARY_PATHに共有ライブラリを 置いたディレクトリを設定してやる、というかんじで… LGPL だからリンク出来る様に *.o だけ同梱しておけば、ソースを晒す必要は無いよ。 スタティックリンクしちゃいな。 >>91 PS3Linux使用者のスキルは低くないだろ 現状を考えると シェアウェアや同人ゲームなどでSDLを動的リンクで使う場合、 LGPLライセンスは感染しないのだから ゲーム本体の著作権は開発者が完全に保持できるという理解で正しいんでしょうか。 第三者による無断配布やリバースエンジニアリングを禁止できるか否か、ということなのですが。 動的リンクすれば商用もokだから問題ない。 しかし、1.3以降はどうするんだろ? 今、ホームページ見たら1.3以降は LGPLまたは別途商用って... もめそうだな。 >>97 ありがとうございます。 ライセンスが過渡期というのはいかにも怖いので、無難にDXライブラリを採用することにします。 デュアルライセンスにするとなぜもめるのか分からん. コミッタがいっぱいいると了承得るのはメンドイだろうが, ホームページに書かれてるって事は,既に大体解決してるからだろう. ようはあれでしょ。 金払ってもいいから、プロプライエタリなソフトに組み込みたいっていう 人のためのライセンスも用意するってことでしょ。 むしろ、今より選択肢が増えるんじゃない? でもSDL本体に商用ライセンスができても、周辺ライブラリが LGPLだったりするからなー。 2ヶ月書き込みがないとは… ライセンス云々で質問なんだけど ソース同梱しちゃえばGPLだろうが何だろうが 販売しちゃっても問題無いんですかね? >>102 Yes. GPLの場合はライブラリのソース/おまえさんの作ったソフトのソース 両方共同梱だから注意な ついでにSDLはGPLじゃなくてLGPLだからな >>102 SDLはLGPLだからSDLをダイナミックリンクすればアプリの ソース非公開でバイナリのみ配布(販売含む)してもOKだ でも同封したSDLのバイナリの元になったSDLのソースは同梱しよう バイナリ入手者が、ソースを手に入れたい時に入手できればよいから、 SDLの公式URLでも書いとけばいいはず だから、GPLのも必ずしもソース同梱しなくていい。 サポート窓口か何か用意しておいて、ソース公開問い合わせが来たら渡すでもよかったはず。 ただし、その入手者が、さらなる公開を妨げることができないのでたいして変わらないが。 ToHeart2も確かその体制だったような なんかバージョン上がってから、タイトルバーの日本後表示ができなくなったんだけど、なんでかわかる人いるかしら? GUIで文字列を入力したいんだけど、SDLにそんな機能はないよね・・? >>110 GUIで入力って意味がよくわからないけどドラクエ入力みたいの? それともGUIウィジェットのテキストエリアにIMEで入力するような話? # どっちにしろSDL本体にそんな機能はないけどね… >>111 抽象的でごめんなさい、後者の方を想定してた(テキストボックスにサーバのアドレスを入力して接続) ちょっと他の方法を模索してみます。 >110 SDL用のライブラリを探せばそんなのもあるんじゃないですか? と、無責任なことを言ってみる SDLSKKってのがあるっぽいけど110氏の用途に合うかどうかは よく分からんかった。 SDLスレはなんて良スレなんだろう!ほかのスレときたら… >>110 アドレスならASCIIコードの範囲で収まるから自前でキーコードから 入力させてもすぐできると思う。でも楽したいならSDLベースのGUIライブラリが あるから適当なのを探してみるといいよ。 これがチャットしたいからIMEで日本語入力させろとかだと一気に大変になって SDL_inputmethod や SDL-IM みたいなライブラリを使うことになる。 - http://sdlinputmethod.sourceforge.net/ - http://sdl-im.csie.net/ ちゃんと動くか知らないけどね >>114 これは良さそうです、もっと調べてみます >>116-117 確かにすぐに実装できそうですね。ライブラリに逃げて、上手くいかないようでしたら 自前で作ってみることにします。 わざわざ調べていただき、ありがとうございます。 よっしゃ!頑張ろう! >>103-106 ソースも必ず同梱しないといけないのかと思ってましたが 意外と自由度があるんですね… readme.txt にURL書いておくのが簡単そうでいいですね >>121 > readme.txt にURL おれも最初それが楽そうかな?とか思ったんだが、 一次配布元が移転してたり、もっとひどいと無くなってたりして、 さらに自分も当時のバージョンを手元に持ってなかったりする状態の時に 「ソースくれ」と言われたらやっかいだなぁ、とか思ったのでやめにした記憶があるんだぜ まぁ、心配しすぎなだけかもしれないが >>121 厳密に運用しようとすると >>122 に書いてあるような問題があるんだけど 実際にはソース同梱しない人が多いね. CD配布とかで容量の問題がないなら同梱した方が面倒はないはず. SDLで音をパニングしたいんだけど、可能ですか? デフォルトのメソッドには無いので普通には出来ないっぽいですが。 自分でミキシングすればもちろん可能ですよ。 SDL_mixer にも Mix_SetPanning がありますよ。 >>125 ありがとうございました。 テンプレの一部の文書しか読まず、他の豊富な関数の存在を見落としました。 ttp://jcatki.no-ip.org/SDL_mixer/SDL_mixer_frame.html 重ねて質問恐縮なのですが… SEについても、SetMusicPosition などの便利な命令を使いたいのです。 それが無理なのでしたら、複数のBGMを同時に扱い、SEとして使いたいのです。 どのような方法があるでしょうか? というか・・・ SEでしか使えない命令とBGMでしか使えない命令が多く、かなり不便で困ってます。 SetPanningを使いたいならSEでないといけないが、SetMusicPositionで再生位置を指定したいのならBGMでないといけない…… 何か対策はあるのでしょうか? 全部の関数が使える型があれば嬉しいのですが… よくわからないけど、これも似たような話? ttp://star-engine.sourceforge.jp/wiki/index.php?%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89 SDL_mixer は mixer って名前の割に mixer 機能と音声デコーダとしての機能が ひっついてたりと微妙な設計の上に mixer としての機能はいろいろ制限付きだから 凝ったことしたいなら mixer を自作するか他のライブラリを使った方がいいと思う >>129 ,130 回答ありがとうございました。 SDLは音関係はまだ弱いみたいですね。今後に期待します。 今後強くなることはほぼ無いよ どうしても欲しけりゃ自分で作れ マジで SDL使ってないんだが、 SDL製のゲームってなんで、フルスクリーンから戻ると、 ウインドウがくっちゃくちゃになるんだ? WindowsXPになってからから、最近はあまりならなくなったが、 デュアルディスプレイ環境にしたとたん、今度は、フルスクリーンから戻ると サブディスプレイ側にウインドウが全部持ってかれるwwww SDL製ゲーム、妙に腹立つんだが…… SDLって、フルスクリーンに、どんなAPI使ってる? >133 SDL-1.2.10のリリースノートに対策したと書いてあった気がするので それ以前のバージョンだとダメとかありそう とりあえずSDLのDLL群だけ公式サイトの1.2.10のものに入れ替えてみたらどうよ? まーそれでもデュアルディスプレイ時は問題がある、とかだったらアウトだが QuickTime を最新版にしたら ld: Undefined symbols: _HIPointConvert referenced from QuickTime expected to be defined in Carbon ってのが出てコンパイルできなくなった これは俺だけ? エラーメッセージから多分OSXだろうな、ということぐらいは推測出来るけども それが分かったところでそんな環境でやってる人が少なすぎて誰も答えられない予感 OS Xなんだけど、むしろ137を見て、 iTunesとQuickTimeのパッチを宛ててない俺がいる。 真相が明らかになるまで宛てない。 >>137 もしかして Panther ですか? うちも 6 月 26 日に SDL をコンパイルした時は何の問題もなくて mplayer をビルドできたんだけど、QuickTime の更新後他にも ライブラリを追加して mplayer をリビルドしようと ./configure したら SDL を認識しなくて configure.log に >>137 と同じログが残っていました。 --enable-sdl、--with-extraincdir、--with-extralibdir、--with-sdl-config 等を オプションに加えてみたけどダメだった。 ム板のQtスレで似たような症状を見かけたな。 紛らわしいがQuicktimeじゃなくてQtのスレな。 そのときはQuickTimeのバージョンを落とせと言う結論が出てた。 QuickTime ProにしてたらQuickTImeのバージョンをあげずにシステムだけソフトウェアアップデートできる すいません初心者なんですが SDLで描画する際に描画処理をもっと高速化したい場合 どんな方法があるでしょうか? もしくは気を付けるべき点とかありますでしょうか? 主にわりと広い領域を1フレームごとに単一色で塗りつぶしたいです >>144 ビデオカードによってはGL併用で板ポリで塗りつぶしたほうが早いことがあるかもね >>145 レスありがとうございます 試してみます 今日始めたんだがもうなにがなにやら 導入できないしなんとか出来たと思ったらビルドできないし… 解説が少し古いから最新バージョンを使わないで説明に使われてるバージョンにしたほうがいいんだろうか 泣きそうだ 俺も始めたばかりだけど、windowsでのバイナリ作成はイマイチよくわからん unixならmakefileかいてmakeすればいいだけだったからなぁ WindowsならVC++用のDLLやらlibやらひと通りバイナリで公式に置いてあるじゃないか SDL-devel-1.2.12-VC8.zipでいいの? だよね… 設定からincludeとlibにパス通してから ttp://www.tacoworks.jp/software/SDLdoc-jp/html/guidebasicsinit.html の一番下のコードをコンパイルしようとしたらエラーが… 1>------ ビルド開始: プロジェクト: SDL_test, 構成: Debug Win32 ------ 1>コンパイルしています... 1>main.c 1>c:\documents and settings\*****\my documents\visual studio 2005\projects\sdl_test\sdl_test\main.c(4) : warning C4026: 関数はパラメータ リストを使って宣言されています。 1>リンクしています... 1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_Quit が関数 _SDL_main で参照されました。 1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_GetError が関数 _SDL_main で参照されました。 1>main.obj : error LNK2019: 未解決の外部シンボル _SDL_Init が関数 _SDL_main で参照されました。 1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 1>C:\Documents and Settings\Anpan\My Documents\Visual Studio 2005\Projects\SDL_test\Debug\SDL_test.exe : fatal error LNK1120: 外部参照 4 が未解決です。 1>ビルドログは "file://c:\Documents and Settings\Anpan\My Documents\Visual Studio 2005\Projects\SDL_test\SDL_test\Debug\BuildLog.htm" に保存されました。 1>SDL_test - エラー 5、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== >>152 リンクするライブラリに SDL.lib SDLmain.lib を追加してないだけじゃないか、それ >>154 できた。できました。 ttp://www.geocities.jp/jq2hpl2000/SDL/environment.html の一番下に書いてあることをやってみたらついにできた パス通せば勝手にやってくれるわけじゃないんだね できる人から見たらくだらないミスかもしれないが、完全に詰まってたから助かった しかもこんな過疎スレでタイミング良く… 本当にありがとう >>155 動いてよかったすな あとこのスレ特に話題にすること無いから過疎ってるけど ROMは結構いるんじゃないかと思う そうなのか 一年半で150レスだと知って絶望したが安心した これからよろしく >>155 SDL ってか VisualStudio の使い方の問題だから一度は ツールの使い方の勉強をするといいと思うよ.他にも応用が効くし. 自分も、見てはいるけど、書き込んではいない人ですね。 SDLで同人ゲーム作って3年後には成金の予定です>< いくつかかサンプルプログラム組んでみたんだが、 やたらCPU使用率が高いのは仕様なのだろうか >>162 適当にSDL_Delayでも入れたら? ほぼCPUによる描画だからCPUの使用率が高いというオチは無いかね。 なんらかのSDL_VIDEODRIVERを指定しないとSDL_BlitSurfaceは重いよ。 ありがとう たぶんCPUだけでひたすらループをまわしているからかな… 参考にしてみる まったくDelay入れてなければ普通にビジーループと同じなんだから どんなCPUでも100%近くまで食うだろうけど… 1.2.12って先月出てたんだな……。 Added support for UTF-8 window titles on Windows. が嬉しい。 SDL入門てきなページのサンプルにprintf使ってるのあるんですけど、 printf使ってみてもなにも表示されないんですよ。原因わかる人 教えてくれますか? >>168 Cヘッダファイル読み込んでないとかいうオチじゃないよな? 実行ファイルと同じディレクトリにstdout.txtってのがないですか? あるならそれに出力されてるはず >>169 ヘッダファイルよみこんでました >>170 すいません、意味がわかりませんでした。ほんと、すみません。 >>171 stdout.txtありました。ちゃんとかいてありました。 画面に出力する場合は fprintf( stdout, "maimai" ); でいけるかなと思ったんですが、 うまくいきませんでした。 もしかしてSDLの標準ライブラリには、そのような関数はないんですか? >>172 そうですかやっぱりSDL_kanjiなどをつかうべきですか? >>168 そのサンプルで同じようにしたいなら どのような手段を利用したいのか教えて欲しい もしくはそのサイトへリンクを張るのも手だ 不足している情報は「どこに」「どういった目的で」文字を出力したいか そして、現在は「どのような手段」を使ってそれを達成しようとしているかだ 間違いを修正して欲しいなら正解だと思っている方法を提示すべきだし 新たな方法を示して欲しいなら目的や条件をはっきりさせて欲しい デバッグ目的であればコンソールやファイルに出す方法があるし もしくは(Windows限定になるが)OutputDebugStringを使うのも便利だ ただ、現象からみてコンソール出してないだけだよなぁ…… 出し方わかる?たぶん色んなソースをチャンポンしたせいで mainとWinMainのソースが混ざってるだけだと思うんだが Windows版のSDLでprintfをコンソールに表示したかったら、 SDLmain.libをコンソールアプリで作り直さないと無理だよ レスありがとうございます。 >>175 本当にごめんなさい、意味がわからないです。 >>176 >>不足している情報は「どこに」「どういった目的で」文字を出力したいか そして、現在は「どのような手段」を使ってそれを達成しようとしているかだ。 「どこに」は、ウィンドウです。「どういった目的で」は、いまはとくに目的はありませんが、 サンプルどうりの結果が得られないのは、自分の環境に問題があるように思えて、心配です。 「どのような手段」は、今は、見つかっていません。どうしようもなければSDL_kanjiを使おう思っています。 間違いを修正して欲しいなら正解だと思っている方法を提示すべきだし>>printf("maimai");をメイン関数の中に入れてウィンドウにmaimaiと表示させたいです 。 デバッグ目的であればコンソールやファイルに出す方法があるし >>デバックが目的ではないです。 もしくは(Windows限定になるが)OutputDebugStringを使うのも便利だ>>調べてみます。 ただ、現象からみてコンソール出してないだけだよなぁ…… 出し方わかる?たぶん色んなソースをチャンポンしたせいで mainとWinMainのソースが混ざってるだけだと思うんだが>>ごめんなさい、いみがわかりません。 SDLより前に基礎的なことが分かってなさ過ぎる。 printfは基本的に標準出力(コンソールやファイルやプリンタ)への文字表示命令であって、 SDLみたいなグラフィック画面への出力とは全く別物なんだよ。 そもそも、どこのサンプルでどう上手く行かないかも明示せずに 曖昧で焦点がぼやけた質問で人様を煩わせるのはちょっとどうかと思うんだわ。 そんな調子では超能力でもなければ君の問題を把握することができんよ。 もーっ、そのものズバリ書いたってのにー printf() は Windows 以外だったら標準出力(コンソール)に出るが、 公式で配っているWindows版のSDLはコンソールアプリじゃなくてWindowアプリとして作られてるので そのままではprintf()を使ってもコンソールには何も出ない その代わりに標準ではstdout.txtに出力されるようになってる これはfreopen()を使って別のファイルにすることは可能 あと、Windows版SDLでは、自分で書いたmain()は #define 使ってSDL_mainに書き換えられてる 本当のエントリポイントはSDLmain.libの中にあるWinMain() だから、コンソールにprintfを出力させたかったらSDLmain.libを作り直す必要があるってこと SDL_kanjiは知らないけど、日本語使わない漏れはSDL_ttfのTTF_RenderUTF8_Solid()で作ってSDL_BiltSurface()で貼り付けるのを関数化して文字列渡して使ってる しかしstdout.txtあるのは便利だよな お前ら凄い親切なw 伝わってないのが端から見てて歯痒い。 >>179-180 以上にかみ砕くのは俺には無理と思うが、補足。 ・printfでstdout.txtに出力されるのはとりあえずWindows環境では普通の動作なんで別に心配しなくていい。 とりあえず出力した文字の確認もできるだろうし、ウィンドウに出力されなくても問題ないよね? ・普段printfで出力してるコンソール画面は、SDL使ってる限り出せないと思っていい。 ウィンドウに文字を出したいなら、文字列を画像(サーフェス)として生成して、それを表示する必要がある。 それをやってくれるのがSDL_ttfとかSDL_kanji。使えるフォントの種類に違いがあるんだが、Windowsなら何も考えずSDL_ttfを使っていい。 あと、なんか、上のレスを見る限り意味がわかりませんと返ってくる気が凄くするんだが、わからんのがどの部分のどの用語なのかとかを書かないと説明しようがないんじゃないかと思う。 >>179 ものっっっすごく申し訳ありません。 もしよければhttp://web1.nazca.co.jp/studioh/diary015.html に飛んでもらって、そのページのEvent関数の if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。 { printf("キーが押されました");ここについて説明してもらえれば助かります。 >>180 わかりやすい説明ありがとうございます。 mainに見えても実はWinMainとゆうことですね。WinMainでprintfが使えないのはしっています、ですが、 http://web1.nazca.co.jp/studioh/diary015.html の if(ev.type == SDL_KEYDOWN) //キーが押されたかどうかの確認。 { printf("キーが押されました"); で使われています。普通の環境で"キーが押されました"が表示されないのは当たり前でしょうか? >>183 > 普通の環境で"キーが押されました"が表示されないのは当たり前でしょうか? 「Windowsの」普通の環境では表示されないのが当たり前 stdout.txtに出力されるのが当たり前 違う人だけど答えます printfの出力先は"stdout"ってのは常識ですよね?(俺もまちがってるかも) で、windowsのSDLではこの"stdout"ってのは[stdout.txt]とイコールなわけです。 だから、printfは[stdout.txt]に出力するようになっているわけです。 だから、このプログラムはもし、何かしらのキーが押された場合に、[stdout.txt]に キーが押されました と、書き込むプログラムなわけです。 要は、SDLのイベントの処理の仕方を説明したプログラムです なんだか、いろいろ勘違いされてるみたいですが、SDLにウィンドウに文字列を描画する、WinAPIでいうところのTextOutのような関数は存在しません。 もし、ウィンドウに文字列を描画したいなら皆さんが言うようにSDL_ttfや、SDL_kanjiなどを使うか、 自分でbitmapを用意して、それを描画しなくてはなりません というより、stdoutとか理解してますか? SDL以前にCがあやふやではないですか たぶん>>185 の言っていることの一割も理解してないんじゃないかと すまん、誤爆、、、 >>187 どこか、間違ってますか?できれば教えてもらいたいのですが、、、 こんな長文書いといてなんですが、自分もC は結構微妙なんで てか、すみません なんか、ビューワの調子が、、、 >>185 >>要は、SDLのイベントの処理の仕方を説明したプログラムです 完璧理解しました、簡単なことでしたね。 どうもありがとうございます。 みなさん親切にどうもありがとうございました。 簡単なことでしたね、じゃない。捨て台詞みたいでちょっと感心しないな。 お前には難しかったんだろ。 っていうかVC++2005EEでもbcc+devでもビルド設定でコンソールアプリケーションに指定したら普通にでるよ 処理止めないとすぐ消えるけど >194 いわれてみれば、確かにw 思いつきもしなかった if( g_WindowActive ){ // ウィンドウがアクティブかどうか move(); draw(); } else { SDL_WaitEvent(&g_Event); } if(!PollEvent()){ // SDL_PollEventでイベント処理 break; } こんな感じでウィンドウがアクティブのときは動いて、 非アクティブのときは止まっているようにしたいんですけど、 ウィンドウが完全に見えている状態で非アクティブからアクティブになっても 止まったままなんです。 非アクティブのときにCPU使わないようにしようとWaitEvent入れたらこうなりました。 どうすれば対処できますか? >>196 そもそもアクティブ/非アクティブの状態の取得をどうやってる? 完全に想像だから間違ってたらすまんが、SDL_APPACTIVEは最小化されてるorされてないしか判定しない。 フォーカスの有無ならSDL_APPINPUTFOCUS >>197 PollEvent()内で、このような処理をしています。(ほかのイベントは省略しています) while(SDL_PollEvent(&g_Event)){ switch(g_Event.type){ case SDL_ACTIVEEVENT: if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 0 ){ g_WindowActive = false; } if( (g_Event.active.state & SDL_APPINPUTFOCUS || g_Event.active.state & SDL_APPACTIVE) && g_Event.active.gain == 1 ){ g_WindowActive = true; } break; } } 最小化からの復帰と別ウィンドウからフォーカスが移って再描画されるときはまた動き出すのですが ウィンドウが完全に見えているときのフォーカスの変化に反応してくれないんです。 >>196 SDL_WaitEvent() で拾ったイベントを捨ててるからだろ… SDL_WaitMessage()のあとにもイベント処理をはさむようにしたらうまくいきました。 どうもありがとうございます。 先生!SDL_AddTimerが0しか返してくれやがりません>< >>201 エスパーすると SDL_Init() に SDL_INIT_TIMER を渡してないんだろう ごめんなさいSDL_InitにSDL_INIT_TIMER渡してないだけでしたごめんなさい 久々にいいモン見れた 今日は夢に美少女が出てくるに違いない 質問です。SDL_VIDEORESIZEが送られてくるタイミングっていつですかね? SDL_SetVideoMode()で SDL_RESIZABLE を渡してウィンドウ作って そのウィンドウをリサイズしたときじゃね? ごめんなさい間違えた。SDL_VIDEOEXPOSEです。 >>209 Windowsとかだと普通にウィンドウが表示されたときや隠れたウィンドウが表に出たときに 飛んでくると思うけどXだと全然こなかったりするね… あとは別スレッドでデータ更新してメインスレッドで描画する場合に別スレッドから 自前で SDL_PushEvent() で送ってやるときとかに使うこともあるかな… X の場合 GL と併用しない限り送られてこないと思う。 Windows の場合は WM_ERASEBKGND のタイミング。 ありがとうございます。 SDL_PushEvent() を使えばInvalibateRect()のように SDL_VIDEOEXPOSEを送ることができますか? >>212 あんな感じで使える。 でもSDL_ExposeEvnet には範囲がないから範囲指定はできない。 しかしゲームだと毎フレーム描画することが多いのであまり使われる機会はないよなぁ… ツールとかなのかな? Wizのような疑似3DRPGやADVならアリかもしれないな >>215 ですよね、毎フレーム描画するほうが自然ですよね。やっぱり舞いフレーム描画することにしました。 レスしてくれたみなさまどうもありがとうございます。 すみません、ちょっと質問です。 C++で使うときに便利なラッパーて存在しますか? 自分で書いていたんですけど、途中まで書いたところで嫌んなってきたので…… >>220 あの辺はラッパーの域を大きく越えてもっと高レベルなゲームエンジンだろ 見てみました。 >219 ……全部死に絶えているようです。 あと、実装も古かったのであまりC++らしく無かったです。自分の実装の方がまだましだった…… あっと、一つだけ質問。 イベント構造体って、どういう使い方するのが一般的? やっぱり設定を済ませたらとっととイベントキューに押し込む&使うときだけイベントキューから取り出す ということで、イベント構造体を保存しておくようなことはあんまり無い? >>222 要するに気にいらなかったんだなw ぶっちゃけるとSDLみたいな低レベルのAPIをそのままC++ラップしてもあまり嬉しくない。 余程潔癖なC++プログラマじゃない限り C の API そのまま呼ぶのは別に苦じゃないしね。 g3d まで行かなくてももう少し高レベルのゲームエンジンとか特定ジャンル向けAPIなら 使ってみるかという気になるけれど。 遅レスすみません。 G3Dがなかなか良さそうだったので色々弄っていたのですが……初っ端のstarterサンプルも走らない……。 なんで〜〜〜〜。ドキュメント通りに設定したのに……。 >225 >余程潔癖なC++プログラマじゃない限り C の API そのまま呼ぶのは別に苦じゃないしね。 まあ、そうですけどね。リソース管理といってもboost::shared_ptr併用すれば大した手間じゃないし。 それは判っているのですが、ついゴテゴテとクラスを構築してしまって…… 普段boostの便利ツールを使っているとどうも納得行かなくて。 基本的なところを実装できたらなんかのフレームワークでっちあげてみようかな。 そして目的がゲーム製作からライブラリ製作へ・・・w クルマ一台一人で作るより ネジや歯車を一人でつくる方が完成する可能性高いしな やべえ、楽しい。SDL自体のボリュームも大きくないから、絶望的な気分になることも無いですし。 しかし、SDL側で管理しているリソースとかが所々にあって、ちょっと厄介ですね。 使い込みながらブラッシュアップしよ。 >>233 ゲームを作りながらライブラリを作ることをお勧めします。 できたらある程度高レベルなライブラリ(ってかゲームエンジン)を頼む。 すみません、質問です。 SDL_mixerでoggファイルを再生しようとしてるんですが、 再生中中断して次の曲を鳴らすと一瞬ノイズが入ってしまいます。 Mix_PlayMusic、Mix_HaltMusic以外に何か必要な手順等あるんでしょうか? Mix_OpenAudioでバッファ長4096を指定していて、 これを1024とかにしたら注意しないと気づかないくらいノイズも短くなるんですが、 根本的な対策にはなってないので…。 >>235 音を瞬時に切ったらプチっていうノイズになるのは当たり前 横着せずにMix_FadeOutMusic()とMix_FadingMusic()を使うべし >>236 ありがとうございます。 知りませんでしたが、ものすごく基本ぽいですね…。 SDL_imをSDL 1.2.12で使ってる人います? パッチを手動でシコシコ移してるんだがめんどくせぇ・・・ g3dのstarter動かないんだが>>218 の解決策ギボン msys+mingwでSDLを試しているんですが、bmpの読み込みはできるんですが pngの読み込みができずに頭を抱えています。 SDL_image.hをインクルードするとあるんですが、やってみてもIMG_Loadの ところでビルドエラーになってしまいます。 $ gcc -o myLibTest.exe myLibTest.c myLib.c -g -O2 -I/usr/include/SDL -D_GNU_SOU RCE=1 -Dmain=SDL_main -DHAVE_OPENGL -L/usr/lib -lmingw32 -lSDLmain -lSDL -mwind ows C:/DOCUME~1/ほげ/LOCALS~1/Temp/cca2baaa.o: In function `SDL_main': C:/msys/1.0/home/moregusi/SDL-1.2.12/mytest/myLibTest.c:65: undefined reference to `IMG_Load' collect2: ld returned 1 exit status pngを読み込もうとしない場合は無事実行できます。どなたか教えてくだされ。 SDL_imageをどのように環境に組み込むのが正しいのでしょうか。 同ディレクトリ内にSDL_image.dllを置いて、includeディレクトリ内にSDL_image.hをおいて ビルドをしてみましたが状況に変化がありませんでした。 ttp://cefiro.homelinux.org/resources/doc/SDL_image/install-mingw32-04.html すいません、質問をするまえに調べるべきでした。 こちらをみながらがんばって見ます。 >>245 さんありがとうございます たびたびすいません。 無事SDL_imageのインストールは済んだようなのですが、 ひとつのディレクトリ内に SDL-1.2.12 SDL_image-1.2.6 と並べてインストールしたんですが、SDL-1.2.12内で作業している場合 どうすれば正常にpngを読み込めるようになるでしょうか? 標準のままだとmake installで/usr/local以下の同じディレクトリに SDLもSDL_imageも入るはずだけど、変更したってことかな? もし標準のままだったら/usr/local/bin/sdl-config参照 オプションに-mSDL_imageと、-I -Lでインクルードファイルとライブラリ置いてあるディレクトリへのパス指定すればいいんじゃね? 漏れは全部SDLの中にぶちまけてたけど(笑 -lSDL_imageオプションの指定をすることで無事ビルドがとおるようになりましたが IMG_Load(ファイル名文字列)の返り値ポインタがNULLになってしまうようで 表示にいたりませんでした。画像自体はサンプルにあるものなので不正なファイルで ないと思うのですが。 SDL_imageライブラリを扱う際にzlib,libpngなどSDL_image以外の拡張も 必要になるのでしょうか? ttp://hp.vector.co.jp/authors/VA016379/cpplib/libpng.htm perrorを使ってみるとなんか出してくれるかも? 便利な関数を教えていただきありがとうございます perror(ファイル名文字列)をためしてみましたが、No errorと出力されました。 IMG_Load関数の挙動に問題がある様子です。 どこの落とし穴にハマっているんでしょう... なにかエラーが出たら、IMG_Loadで呼び出されるSDL_RWFromFileでエラーがセットされるようなので、 IMG_Load呼び出した後にSDL_GetError();をやってみるといいかもしれないです。 ごめんなさい、正しくは printf("%s\n",SDL_GetError()); です さっそくためしてみました Unsupported image format というエラーがセットされていました 念のため読み込まれるpngの透過情報をなくしてみたりと データ側をいじってみましたが変化がありませんでした。 一度SDLの環境を見直してみます ttp://risky-safety.org/~zinnia/sdl/intro/intro.1.html こちらのサイトの解説に 「SDL_imageではjpeglibやlibpngなどを使いますし、 」とありますが、 windowsXP上でmsys+mingwの環境の場合もlibpngなどの導入は必須なんでしょうか? どなたかご存知でしょうか。 >>258 そのSDL_imageはどこで手に入れたんだ? 自分でコンパイルしたのだとしたらコンパイルする前にlibpngを入れとかないとだめだよ? で、libpngをコンパイルするには zlib を入れとく必要がある。 なんか基本的なとこがわかってない気がするな… SDL1.2.13のリリース情報 SDL1.2.13はちょっとしたバグフィクスリリースです。 【一般注意事項】 インテルCompiler10と共に建てるときの固定連結路誤り。 公共のヘッダーから迷っているC++コメントを取り除きました。 【unix注意】 セキュア・オペレーティング・システムにSDL_SoftStretch()でのクラッシュを固定しました。 UTF-8サポートなしでX11実装に未定義のシンボルを固定しました。 XFree86インテルのIntegrated Graphicsドライバーの上にXVideoを使用するときのBadAlloc誤りの周りで扱われます。 取り除かれたもの時に止まることの代わりにリナックスのすべてのジョイスティックのために、スキャンします。 sdl.m4でのsdl-コンフィグ議論の固定使用 【Windows注意】 ビデオドライバーが32のbppビデオモードより高く報告するとき、クラッシュを修理しました。 24ビットのOpenGLビデオモードを設定した後にデスクトップを復旧しながら、修理されています。 Windows95/98/MEに窓のタイトルを固定しました。 拡張マウスボタンのためにSDL_BUTTON_X1とSDL_BUTTON_X2定数を加えました。 引用されたコマンドライン議論のサポートを加えました。 【Mac OS X注意】 SDLは現在、Mac OS X10.5(ヒョウ)に建てます。 速成の意味ありげなテキストが入力した高周波を固定しました。 ESCキーが押されて、ユニコード翻訳が可能にされるとき、ビープを修理しました。 サポートをスクロールするtrackpadを改良しました。 あるジョイスティックを届け出るジョイスティック帽子を修理しました。 プログラムも専門領域だよな その機械翻訳やばすぎるwww >インテルCompiler10と共に建てるとき build with ICC10かwww 「建てる」ってカコイイなw 拙作ながら SDL でこんなものを作ってみました http://www.starruby.info/ >>266 ありがとうございます。 「スーパーファミコン風」を目指しているもので、 低解像度 (320×240) で 30FPS 程度のゲームを作るならば全く問題ないです。 解像度をあげると (640×480) ちょっと苦しくなるかも。 - Pentium M 1.6 GHz - メモリ 512 MB - 解像度 320×240 - 16×16 のスプライトを 200 個表示 で、最大 180 FPS ほどは出ました。 >>265 ↓みたいのないの? Greenbear Laboratory - Ruby/SDLスターターキット http://mono.kmc.gr.jp/ ~yhara/w/?RubySDLStarterKit 最近こういうの増えたけど今一つはやらないんだよね。。。 MyGame http://dgames.jp/ja/projects/mygame/ Miyako メインサイト http://www.twin.ne.jp/ ~cyross/Miyako/ >>270 HSPみたいにRubyも裾野を広げたいって Rubyの制作者が煽ってなかったっけ? >>269 > ↓みたいのないの? > Greenbear Laboratory - Ruby/SDLスターターキット ないです。 ワンコマンドのインストーラーは作ったのでそれでいいかなと。 exerb は入っていないですが。 > 最近こういうの増えたけど今一つはやらないんだよね。。。 そうですね。 いろいろな人に使われるためには、クラスライブラリだけじゃ足りなくて、 なんらかのエディタが要るんじゃないかと考えています。 HSPってそこそこ小さいバイナリになるし同人も商業利用もOKじゃん Rubyつかうとどうなんの? HSPについてるエディタって大したことないし、その辺のがネックじゃないの 逆にHSPのエディタってたいしたことなさ過ぎてそれでやる意味自体薄いよな むかしemacsのhspモードとかあったな >>274 「そこそこ小さく」はないですが、 Exerb を使えばバイナリにはできます。 ソースコードがまんま exe に含まれてしまうので、 みられたくないならば暗号化などの工夫は要りますけど。 RPG ツクールの例を鑑みるに、商用利用は可能です。 > HSPについてるエディタって大したことないし、その辺のがネックじゃないの > 逆にHSPのエディタってたいしたことなさ過ぎてそれでやる意味自体薄いよな コマンドプロンプトでの作業すら抵抗を感じる程度の初心者相手を想定しています。 エディタ自体の機能が重要ではなくて (むしろしょぼくてもよくて)、エディタの中で - ゲームが作れる - ゲームが実行できる という安心感こそが必要と思いました。 と、書いている途中で調べましたが、吉里吉里や NScripter とかにはエディタがありませんね。 あると思い込んでいました。 やっぱり >>269 のスターターキットみたいなのがいいのかなあ。 SDL の話から脱線してますね。すみません。 >>278 やっぱHSPの層狙うんならそれぐらい簡単である必要があるんじゃない? もしくはrubyのダウンロード、インストールから ちょっと画像表示して動かすまでの馬鹿丁寧なチュートリアルがあればいいんじゃねww 完全に説明通りの手順踏むだけでいいような >>279 > もしくはrubyのダウンロード、インストールから > ちょっと画像表示して動かすまでの馬鹿丁寧なチュートリアルがあればいいんじゃねww やっぱりチュートリアル書いた方がいいですよね。はい。今度書きます。 動かない・・・ 画面が表示されてすぐに、エラーが出てとまります。 OSはwindows XP sp2です。 エラーメッセージ何もない。windowsのエラー報告が出てそれだけ。 >283 だからそれを書け あとSDLのバージョンも すいませんSDLスレだということを忘れてました。 上のはStarrubyの話です。Game.runをすると止まります。 >>285 使っていただきありがとうございます。 > 上のはStarrubyの話です。Game.runをすると止まります。 Ruby の例外が出ていて止まっているんでしょうか? SEGV ですか? 質問の問答を始めるとスレ違いになるので、どこかに避難しましょうか。 Google アカウントをお持ちでいらっしゃるならば、 Google Group に書き込んでいただければ幸いです。 http://groups.google.com/group/starruby 色々なlibを使用しない、おすすめなWindow managerって どれですか? >287 板違いだが,あえてevilwmと言っておく 学校の課題で、Ruby/SDLを使ってゲームを作っているのですが、 コンパイル、実行しようとすると、次のようなエラーが出てしまいます。 ALSA lib confmisc.c:769:(parse_card) cannot find card '' ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_concat returned error: No such device ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name ALSA lib conf.c:3510:(_snd_config_evaluate) function snd_func_refer returned error: No such device ALSA lib conf.c:3982:(snd_config_expand) Evaluate error: No such device ALSA lib pcm.c:2144:(snd_pcm_open_noupdate) Unknown PCM default /usr/lib/ruby/1.8/sdl.rb:220:in `open_imp': Couldn't open audio: No available audio device (SDL::Error) from /usr/lib/ruby/1.8/sdl.rb:220:in `open' from main.rb:34 オーディオデバイスに異常がありそうなことは分かるのですが、 解決法がわからず困っています。 >>290 です。 >>291 板違いかもしれませんが、どうやったらサウンドデバイスを認知してくれるようになりますか? それに対し、こちらの環境で知りたいことがあれば、また載せたいと思います。 >>293 ここはお前の宿題を教えてやるスレじゃねーんだよボケ。 だいたい人にものを聞くのに教えてくださいも言えないのか? 困ってます?ああそう。 >>295 ここにきた私が間違っていました。 すいませんでした。 何が間違ってたのか分からないんじゃ、また同じことの繰り返しだぞ そろそろ卒業のシーズンだし時間やばいんだろうなwww プログラムと環境どっちが悪いのかわからんけど、 プログラム弄って回避する手段がないなら環境変えればよくね sdl_Imageって、gifやPNG、jpgは読めるのに、icoは読めないのか。残念だ。 昔調べたと限りではすごく簡単なフォーマットだと思ったが… 確かbmpの中身みたいなのを複数詰め込めるような程度だった気が… で、中身がbmpと大差ないのでSDL_imageでサポートするメリットもないだろうなぁ やっぱりSDLは過疎スレだよな 日本でSDLなんて使ってくれるのはRubyくらいか そんで>286にランチャーとか言うのが増えてるよ 目指せHSPならRuby,SDL,Exerb,RDEとかのセットと 簡単ドキュメント+サンプルでいいのだろうけど GUIがどうしようもないんだよな・・・まあこれはSDL関係ない問題かw IronRubyとか.NETでよければ、それでいいのかな・・・ >>305 特に語るネタがないんだよ… SDL自体に複雑な機能が存在しないから使える人は悩むことなく使えるし、 SDL自体がライブラリとしてすっかり枯れてるからAPIの変化とかもないし… SDL 1.3とか2.0とか出ればまた違うんだろうがな >>305 286 の中の人です。 Ruby の GUI ライブラリはないわけではなくて、僕は ruby-gnome2 か Visualu Ruby のどっちか使おうかなと思ってます。 テキストエディタは、こちらで用意しなくても、各人好きなもの使ってもらった方がいいと思ったんですが、どうなんでしょう。 IronRuby だと C で書いた拡張ライブラリが動かないのが問題です。 >>306 早くでるといいな・・・ >>307 駄文にレス有り難う。HSP基準で考えるとだけど、それだけで始められるセットがいいのかなと思ったの。 GUIはWindowsネイティブっぽい見た目が必要だけど、マルチOS対応にすると選択肢が微妙かなと思う。 エディタもF5押したらたとえ保存しなくても、実行して試せるみたいなHSP仕様(違ったかな?)だといいかなと。 普通の人ならメモ帳で始めたりするだろうし、Rubyに色分け対応したエディタは少ないから。 .NETは見た目がWindows標準になるから幸せに思えるのかな。 >>308 > HSP基準で考えるとだけど、それだけで始められるセットがいいのかなと思ったの。 なるほど。 メモ帳 (か、ユーザーの好きなテキストエディタ) のプロセスをランチャー内で立ち上げられるようにすれば いいかなと思ったのですが、こちら側でも用意した方が初心者は安心なのかもしれませんね。 メモ帳 + α程度のものだったら作れそうなので検討してみます。 シンタックスハイライトはきつそうです。 > .NETは見た目がWindows標準になるから幸せに思えるのかな。 そうですね。ネイティブ描画は重要ですね。 ruby-gnome2 はファイルを開くダイアログが萎え萎えなので悩んでます。 Visualu Ruby はネイティブ対応なのでその点安心でした。 wxRuby は、描画はネイティブなんですが、挙動が不安定なので見送りました。 .NET で (GUI) ライブラリを書いて、 Ruby (または C) から叩こうと思ったんですが、できるのかな。 RubyCLI というのがありますがまだ開発途中っぽいなあ。 .NETならIronRubyかな .NET使うんだったらTao.Sdl通して全部C#使って書いちゃった方が楽で早くて速いけど 以前ゲームライブラリを C# で実装し、ゲーム自体は Ruby を使うという無茶なことをしたことがあります。 SDL の C# へのポーティングは Tao.Sdl ではなくて、 YaneuraoSDK.NET のものを使用しました。 http://star-engine.sourceforge.jp/ >>309 わざわざエディタ作るくらいなら、RDEや適当なエディタでも付けた方が良さそうだけどね 個人的にはzip解凍したら、そのままRubyとStar Ruby(SDL)とIDE(エディタ)が使えるのがいいかな チュートリアルとか大変だと思いますが、頑張ってください。期待しています。 あと.NETまぜるのならIronRubyでいいやは同意。 そういやYaneuraoSDK.NETも最近音沙汰無いよね >>313 > わざわざエディタ作るくらいなら、RDEや適当なエディタでも付けた方が良さそうだけどね 既存のエディタに上手に組み込めればいいんですが。 エディタを作ることはメインではないので程々にしようかと思います。 Eclipse プラグインとかは使いたくないしなあ。 > 個人的にはzip解凍したら、そのままRubyとStar Ruby(SDL)とIDE(エディタ)が使えるのがいいかな なるほど。それを目指そう。 > チュートリアルとか大変だと思いますが、頑張ってください。期待しています。 ありがとうございます! もしかして、最近のSDLってstdout.txt生成されない? もしそうだとしても、freopenしちまえばいいだけだからあんまり困らなくない? Mix_LoadMUS_RWに使ったrwをMix_FreeMusic後にcloseするとアクセス違反で死ぬんだけど、 これはMix_FreeMusic内で解放してくれてるって解釈でいいの? 調べると「再生中も開きっぱなしにしないとマズいよ。再生終了後にcloseするのが正しいよ」って情報がぼちぼち出てくるんだが……。 デフォで実装されるようになってから仕様変わったんかな。 >>318 仕様上は Mix_FreeMusic() だけで問題ないはず。 でもすべてのフォーマットでちゃんと実装されているかどうかは知らない。 # Mix_LoadMUS_RW()ってどのフォーマットでも動くようになったんだっけ? >>319 サンクス。 1.2.7でmp3に対応、1.2.6でOgg Vorbisに対応したいうようなこと(たぶん)がCHANGESに書いてある。 個人的にはoggで動くなら問題ないなーって感じなんで他の形式については知らない。すまん。 SDL_mixerでwavしか再生されないんだが。 サンプルプログラムを動かしてみたらmp3やoggが鳴らない。 SDLのバージョンは1.2.9、SDL_mixerのバージョンは1.30なんだが何故? スマン。 SDL_mixerのバージョンは1.2.8だった。 その SDL_mixer に libogg や smpeg がリンクされていないんじゃない? そもそもその SDL_mixer をどうやって手に入れたんだ? カーソル左クリックでスタートボタンを作りたいのですが、 SDLを使う場合Cではどんな風に書いたらいいのでしょうか? 環境も書かずに書いてみるけど、 Uint8 *keys = new Uint8; keys = SDL_GetKeyState(NULL); (略 delete keys; とかするとSDL_GetKeyState()でデバッガうまく動かなくね? ステップ実行だとうまく通過するんだけど通しでやるとそこでプログラムが止まっちまう デバッグでなく通常実行なら動くんだけど で、どこでこんな書き方したのか探してたんだけどとりあえず↓にしたら正常になったからキニシナイ Uint8 *keys = SDL_GetKeyState(NULL); >>328 どう見ても動かなくて当然です。 C/C++勉強しなおしましょう。 どうみてもこれですね本当にありがとうございました ttp://www.tacoworks.jp/software/SDLdoc-jp/html/sdlgetkeystate.html >返されたポインタはSDL内部の配列へのポインタですので、 呼び出し側で解放してはいけません。 やっぱ変だとは思ったんだけど、なんでデバッグで通しで実行した時だけ止まるのか気になって newする必要なんてない しかも、そのnewしたやつは開放されてない >>330 デバッグ版のほうが不正なコードに対するチェックきついんだよ。特にメモリまわりはね。 サンクスコ だから動かなかったんですか 理由もわかったしデバッガとかのバグでなくてすっきりした >>331-332 330の時点でその辺は分かってるyo 自分でもなんでこんなの書いたのかすげー不思議だ SDL1.2.10以降でSDL_WM_SetCaptionに日本語を使うと文字化けしてしまうのですが、 2byte文字を化けないようにする方法はないでしょうか。 >>335 UTF8で渡せとかそういう話じゃなかったっけか? ソースをUTF-8で保存してればできたような。(≒>>337 ) SDL_EnableUNICODEしないといけないんだっけ? ソースをUTF-8ってか関数に渡すバイト列がUTF-8になればいい。 SDL_EnableUNICODEはキーイベントの振舞を変える関数だから関係ないはず。 こっちこそゴメン… あやまるから、もう一度やり直そうぜ! SDLに付属のサンプルプログラム testgl.c に関する質問です。 icon.bmpの周りの黒い部分を切り取った状態で、スマイルのみを 表示するように改造するにはどのようにしたらよいのでしょうか。 描画前に以下を追加すればよいとの情報がありましたが、うまくいきませんでした。 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glColor4d(1.0, 1.0, 1.0, 1.0); そもそもこのbmpにはアルファ値が含まれていないのでしょうか。 bmpは普通アルファチャネル入ってないしょ。 今ならPNGあたりが妥当か。あとはTGAとか。 SDLなんだし、パレットからアルファチャネル捏造してもよさそうだな >>342 -logocursor や -logo で出てくるicon.bmpのテクスチャだよな? icon.bmp は 4bit カラーの DIB なんて当然アルファとか入ってない。 SDL_LoadBMP() で icon.bmp をロードした後に SDL_SetColorKey(image, (SDL_SRCCOLORKEY|SDL_RLEACCEL),*(Uint8 *)image->pixels); とかやって透過色を指定してやる。そうすると SDL_GL_LoadTexture()でアルファ付きの テクスチャにしてくれるはず。そうした上で描画前に glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glColor4d(1.0, 1.0, 1.0, 1.0); とする。あるいは、 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); とかでテクスチャの色でポリゴンの色を置き換ちゃってもいいかも。 >>345 できました!!本当にありがとうございました。 こんなことで2日ほど悩んでました。 ちなみに、このSDL_SetColorKey()で指定しているキーというのは、画像のはじっこの色を 指定している、という理解であってますか? *(Uint8 *)image->pixelsが左上のピクセルを指してるので、その理解で合ってる。 SDL_MapRGBで任意の色を指定してもいいよ。 なるほど、ありがとうございました。 いろいろ弄ってみます。 SDLのKEYUP/KEYDOWNのエッジ検出というか変化した瞬間の検出する機能ってないですよね? >>351 普通にイベント処理するか、ゲームみたいに扱うキーが少ない なら自分で1フレーム前の状態を記憶しておくかじゃね? サンクスコ イベント処理ってのがよくわからなかった('A`) ので、記憶させるほう作って終わしますた bool isKeyboardPressAndRelease(int key){ Uint8 *keys = SDL_GetKeyState(NULL); static int oldkeys[SDLK_LAST]; if(keys[key] == SDL_PRESSED ) { oldkeys[key] = SDL_PRESSED; return false; }else if(oldkeys[key] == SDL_PRESSED ) { oldkeys[key] = SDL_RELEASED; return true; } return false; } sdl_ffmpegなんてものもあるんだな ただmplayerで再生するより重くなっちゃうけど よく見てないが出来るのはデコードだけなのか エンコードも出来ればリプレイをそのままようつべにうpとか 夢が広がりまくりんぐなんだが Note: We've moved libsdl.org to new hosting and the mailing lists have not been restored yet. This is a high priority and will be fixed as soon as possible. Please report any other issues you find ASAP. Thanks! サーバ変更か SDLも十分扱いやすいんだが、DXライブラリほどではないんだよな ちょっとSDLのラッパー作ったらはやるんじゃないか?これ マルチプラットフォームだし SDLのラッパーなんて腐るほど出てるよ Cスタイルで手軽に使えるのが特徴なんだから需要ないと思う DXライブラリみたいにハンドルまで何でもかんでもint型でラップしないと使えないようなこともないし 勢いないから誰も居ないと思ったらROMがいるようで安心した 考えてみればSDL使うやつは自分でラッパー作るなりしてやってるな SDL_gfxの日本語ドキュメントあれば教えてください。 ぐぐったけど無いみたいで…ソース読むしかないですか 亀レスだけど初心者のSDLに少しだけかいてあったかも OpenGL使ってゲーム作ろうと思うんだが SDLとGLUTの違い教えてください 二つもAPI覚えてたら頭パンクしちゃいます。OpenGLでもうカオスなのに OpenGL自体は計算しか行わないので、計算結果をディスプレイへ表示するためには 何か他のライブラリを使って行う必要がある。 SDLは画像の表示、音声の再生、(マウスやゲームパッドなど)入力機器のコントロールを行うためのライブラリ。タイマーやスレッドなどの機能も提供。 GLUTは画像の表示と、(マウスやキーボードなど)入力機器のコントロールを行うためのライブラリ。 ゲームを作りたいだけならGLUTは捨ててSDLに絞ればいい。 >>367 Ubuntu >>368 ありがとう。とてもわかりやすかった SDLとOpenGLでマルチプラットフォームなゲーム作りに挑戦するよ Glutがあればティーポットが簡単に表示できるだろうが ティーポットをキャラにしてゲームを作りたいなら両方リンクすればいいじゃない >>371 glutがなくてもgluがあればティーポットは表示できる。 しかしゲームでティーポットだけの表示もないだろ >>373 >しかしゲームでティーポットだけの表示もないだろ ネタにマジレスすぎだろ… あと glutWireTeaport() や glutSolidTeapot() で簡単に表示できるって話じゃないの? SDL_LoadBMP で確保したSDL_Surface(1) と SDL_CreateRGBSurface で確保したSDL_Surface(2) で 何か違うのかな? それぞれscreenに表示する関数に渡した後、 (1)は描画されるのに (2)は何も描画されない(アプリが落ちることもない) 関数に渡さず、どちらも確保した関数内で screenにSDL_BlitSurface+SDL_UpdateRectした場合は、表示されるんだけどね SDL_LoadBMP内ではSDL_CreateRGBSurfaceが呼ばれてるから本質的には何も違わない。 SDL_Surface構造体の中身を表示して比べてみればいいんじゃない。 ABAのようにSDLでゲーム開発していてオープンソースなところを教えてください コード見て勉強したいです SDL.NETで作ったソース公開されてるゲームないかな? SDL.NET自体情報が少なくて、へたれな俺にはぴんとこない。 codezineでやってたのでやっと少し理解できたぐらいで。 できれば日本人が作ってるのがいいんだが・・・ >>379 海外か。やっぱ国内のは少ないのか… 見てみる。ありがとう >>380 ttp://d.hatena.ne.jp/fslasht/20080722#1216721957 質問です。 SDL_DisplayFormatAlphaでα情報を持たせたSurfaceに SDL_SetAlphaで全体α情報を付加させたいのですが どうもうまくいきません。 これは仕様で出来ないのでしょうか? >>383 本家のドキュメントWiki( http://www.libsdl.org/cgi/docwiki.cgi/SDL_SetAlpha ) に、 > RGBA->RGB with SDL_SRCALPHA > The source is alpha-blended with the destination, using the alpha channel. SDL_SRCCOLORKEY and the per-surface alpha are ignored. とあるので、仕様で不可能になってるんだと思います。 そうですか… 何回やっても出来ないわけだ 素早い回答ありがとうございました。 SDLでフルスクリーンを使用するときに、使っているディスプレイでの最大の解像度(1680x1050)でフルスクリーンにしようとするとウィンドウ化、フルスクリーンを繰り返してしまいます それ以下の対応した解像度(たとえば1440x900)では正常に表示されます 原因として何が考えられますか? >386 カメレスだが OSはWindows? 下で動作してる古いDirectXが対応してないとか こんなスレあったのか。これこそ俺が求めてたスレ しかし過疎ってんな サーフェスが内部で持ってるバッファの横幅のバイト数 主に効率の理由で、SDL_CreateRGBSurfaceは要求されたwidthより多めにバッファを確保することがある そのためwidthとは別に、実際のバッファサイズpitchを提供している 大抵は width * BytesPerPixels == pitch になるんだがwidthが中途半端な値の時に行末にパッディングを入れて 効率よくアクセスできる様に行頭位置を調整したりする環境があったりする。 そういう環境では、 width * BytesPerPixels != pitch になるんで座標(x, y)の値をpixelsから得るときなどpitchを使う方ようにする。 SDLで垂直同期待ちをするにはどうしたらいいのでしょうか SDL_SetVideoModeでSDL_FULLSCREEN | SDL_HWSURFACE | SDL_DOUBLEBUFを指定してSDL_Flip() >>397 環境が分からんけど OpenGL 使うなら SDL_GL_SetAttribute() で SDL_GL_SWAP_CONTROL に 1 を設定する ローグライクのようなビジュアル的な計算が不要なゲームだと、 OpenGL使わずSDLだけでも十分って認識でおk?age シンプルなのに本が必要って理解できない。 関数の説明とかサンプルがあれば十分だと思う。 言語を本を見て勉強する人も理解できない。 文法なんて数日で慣れるし、実際にコーディングした方が早い。 実行ファイルに埋め込んだリソースのBMPを読み込むにはどうしたらいいんですか SDL_RWFromMem と SDL_LoadBMP_RW で プログラムの中でgzファイルを解凍して使うにはどうしたらいいですか もうそれ SDL 関係なくね? zlib 用意して gzopen, gzread, gzclose あとはここ http://www.gzip.org/zlib/rfc-gzip.html >>408 すいません。SDL_RWFromMemに与えるべき引数が分かりません。 VisualStudioでresource.rcという下記内容のファイルを作って、 RSC_BMP BITMAP "./test.bmp" test.bmpを実行ファイルに埋め込むことはできているのですが、どうやって取り出したらいいのでしょうか。 え、そこから? なら FindResource, LoadResource, LockResource で 実行優先度を設定する関数とかない? 今のところ窓でしか使ってないんだけど、 せっかくのマルチプラットフォームでWin32API使うの勿体無い('A`) 可搬性のあるやり方は未だ無いと思う __WIN32, __darwin, __linux, __unix, __FreeBSD で場合分けするしか無いんじゃない? Winだと、printfとかが使えなくなかったっけ。 >>419 標準出力の内容がstdout.txtに書き出されるとかそういうのじゃなくて? SDL_SetVideoModeを繰り返し呼んでも問題ないでしょうか SMPEG_playで再生中の動画の現在の再生時間を得るにはどうしたらいいですか SDL_getinfo()でできましたありがとうございました。 サンクスコ とりあえず__WIN32のだけ適当に作るわ _WIN32はあったけど__WIN32はなかったような やけにCPU使用率高いなと思ったらSDL_VideoDriverName()の結果が"windib"でさらに SDL_SetVideoModeの戻り値のflags見たらSDL_HWSURFACEがセットされてねえし。 ネットの情報調べたらデフォルトでwindib使うようになっててハードウェアアクセラレーション使いたかったら opengl使えとか書いてあるしまじ糞ライブラリ デフォルトでハードウェアアクセラレーションの効かないグラフィックライブラリ。 SDL_putenv("SDL_VIDEODRIVER=directx");やっても遅くなったし。。 >>427 ちょっとSDL_main.h辿ってたら #if defined(__WIN32__) だったからこのまま使ってるんだけど、 WIN32、_WIN32、__WIN32、__WIN32__とも動作するみたいだった マウスがウィンドウの内部にあるかどうか判定する方法ありませんか? ウィンドウの外にいくとマウスがクリックしたことになるので。 たまに >>482 みたいな勘違い君がいますがSDLはグラフィックスライブラリではありません. - 画面の初期化 - ジョイスティック,マウス,キーボードでの入力 - PCM出力 のためのライブラリです. ってか昔Windows環境のデフォルトドライバは dirextx だったんだが ちょっと前に windib がデフォルトになった.現状の SDL の directx ドライバ ってDirectX 5 とかだしね. 今の directx ドライバ使ったとしても SDL_FULLSCREEN|SDL_HWSURFACE を指定して かつ実際にハードウェアサーフェスになってなければただのメモリコピーだし速くもならない. 素のSDLのBitBlitで作るのはスーファミくらいのレベルのゲームまででそれ以上 やりたかったらOpenGLを使う.これ世界の常識.あとマルチプラットフォームに 興味ないなら最初から DirectX 直接使っておけばよい. # SDL 2.0 とかになればこの辺の状況も少しは変るだろうけど… OpenGLでやるにしてもSDLとOpenGLをつなぐ部分の資料を少なすぎてすぐいきづまるし。まじSDLは糞。 Linuxで2Dゲーム作りたい人くらいしか存在価値ない。winでやるならwin32api直の方がまし。 やっぱオープンソースは糞。人間は金が絡まないと本気にならないのだ。 >>434 いきづまるのは勝手だが、SDL+OpenGLはなんの問題もないよ。 とりあえず、 ttp://www.libsdl.org/opengl/SDLgears-1.0.2.tar.gz でも見ればいいと思うよ。 >>434 >>435 のおっしゃるとおり ttp://risky-safety.org/zinnia/sdl/sourcetour/ こちらさんのhtmlのソースを眺めて、たどる あーめんどくせー 衝突検知用の画像作りたいんだけど、pngから透明部分以外を一定値として抜き出す楽な方法ない? ってふと戻り値boolな関数でreturnさせたら0,1でちょうどいい具合だったのでそういう事にするチラシの裏 >> 443 一般的に言えばゲームとかだと画像通りの当たり判定を用意したりしないと思うが… # まぁゲームとはかぎらないけど… >>443 Photoshop使用 またはlibpngを使用して自作、とか 陰影などで実際よりも大きくなってる絵の場合、 見た目より当たり判定が大きくなるのは嫌だな。 C++でゲーム作るならツール作成用にサブ言語覚えるのは必須だよな 悪いこと言わないから.NETならC#かVB使いなさい やっぱり VB 2005 + C++/CLI + アンマネージコード(SSE使用) C++/CLIではアンマネージコードを含むことができるので、速度がきわめて重要な部分に使う。 まぁ、小物はスクリプト系(そのときの気分で言語色々、場合によっては秀丸マクロも) GUIが必要ならDelphiを使ってる 本格的なツールって大抵は既存のフリーでまかなえるし、データ整形がメインだから 秀丸とUWSCで間に合うよな そしてさらに小物の場合はbashのシェルスクリプト さらにさらに小物ならシェルスクリプトにせずbashシェルに長い1行で打ち込む SDL使いながら自前でソフトウェアレンダリングしてる人ってどれぐらいいるんだろ。 3Dのレンダリングのこと?ワイヤーフレームなら自前処理したことあるけど結構楽しいな SDL/OpenGLは環境構築ややこしくて諦めたorz 今はいい解説サイト増えたからまたやってみようかな >>456 OpenGL つかえる環境作って SDL 使える環境を作ったら終わりだろ… どこがややこしいんだ?? >>457 インタラクティブなことをしようとするならオーディオレイヤと入力レイヤを備えているのはメリットだと思うが。 OpenGLを表示に使いたいだけならglutなりgluxなり使えばいいわな。 [GLUTを使用すべき場合] 瞬間的にウィンドウサイズを変更できるようにする場合。 簡単なプログラムをすばやく作成する場合。 [SDL+GLを使用する場合} ウィンドウサイズを変更させたくない場合。 (ブルームエフェクトなどを使用する場合、ウィンドウサイズ変更時にエフェクト用の バッファを割り当て直す必要がある) 音も鳴らす場合 GLFWというものもあるね gamedev.orgのスレではこれがプッシュされてたみたい http://www.gamedev.net/community/forums/topic.asp?topic_id=444230 GLUTは長い間メンテされてないからあまりお勧めしないとかなんとか gl系は画像読み込みがものすごく不親切だった記憶がある 前にビットマップファイル作ってヘッダ消して読み込むってやらせてたけど 流石にこれは俺が悪いよな オッス、おらニート サマージャンボで3億円当たっちまってボーっと遊びまくってらこのスレ見つけたわけだ。 おまいらどうやって生活費まかなってんの。後学のためにおしえてくんろだぺ。 あ、俺もう寝るから、明日でもえぇよ。じゃーねぃ。?x2665; GLFWは前に試してみたけどlinux環境ではスタティックリンクできなくて フォーラム見たら作者が仕様だと開き直ってたので捨てた Win前提なら問題ないみたいだけどそれじゃGLFW使う意味半減だからなあ 最近は改良されてるのかもしれないが… HSPでSDL_BlitSurface呼ぶとエラーになる もうねるし HSPからSDL呼んで何か嬉しいことってあるのか・・・? OpenGLメンドくせーだのDirect3Dメンドくせーだの言うが 出来て損なことは何一つねえ のだよ 偉い人にはそれがわからんのです。 WindowsにおけるSDLはDirectXを利用しているんだけどな。 SDL+OpenGLでゲーム作ってます ゲームの流れは 動作処理→描画→Swap→Delay と 動作処理→Swap→描画→Delay のどちらがよいのでしょうか?垂直同期待ちについてもよくわからないのでそこと包めて教えてください 二個目は動作処理→描画→Delay→Swapでした 連投申し訳ありません 映像信号は左から右へ1ドットずつ、それを上から下へ1ラインずつ送っているんだ 下まで送りきった後、また上から送りなおすまでに若干の準備期間があって その期間が来るのを待つのが垂直同期待ち 描画が終わったからと言ってすぐSwapしてしまうと、 送信前と送信後の境目で映像を切り替えてしまうことがあり ちらついたように見えてしまう これを俗にティアリングと呼んでいる 垂直同期待ちをする場合はSwapの前に必ずDelayが入る 言いたいことは分かるけど476が勘違いしそうだな SDL_Delayとティアリングが起こるかどうかは直接関係ない。 垂直同期待ちを有効にしてある場合はティアリングが起きないように Swap時に自動的に内部で待機が行われる(>>478 のいうDelay)ので 描画とSwapの間にSDL_Delayを入れる必要はない。むしろ入れたら遅れすぎてしまうかも。 あぁそうだ。478で言うDelayはSDL_Delayのことじゃなくて、単なる待ち時間と捉えてくれ。 補足サンクス。 >>476 Swap ってことはダブルバッファ使ってるって前提で言うと 1) 垂直同期待ち ON(SDL_GL_SetAttribute() で SDL_GL_SWAP_CONTROL に 1 を設定している)なら SDL_GL_SwapBuffers() で自動的に垂直同期待ちするので SDL_Delay() などは必要ない。 処理→描画→SDL_GL_SwapBuffers()[自動でVBLANK待ち] 2) 垂直同期待ち OFF なら SDL_Delay() で適当な時間待って SDL_GL_SwapBuffers() を呼べばいいんじゃないだろうか。 処理→描画→SDL_Delay(適当)->SDL_GL_SwapBuffers() 1) はモニタのリフレッシュレート依存のフレームレートになる。 2) はティアリングするけど、自分でフレームレートの調整ができる。 ってとこじゃないだろうか。 ちなみに俺の環境(Debian) だと環境変数 __GL_SYNC_TO_VBLANK に 0 以外の値が入ってないと SDL_GL_SWAP_CONTROL に 1 を設定しても 垂直同期待ちしない。 質問ですが、 FR・LGのROMの0xF00000〜0xFDFFFFを 使っても大丈夫なのでしょうか 既出だったら申し訳ありません SDL_FULLSCREEN で真ん中に寂しく表示される場合があ るけど、同じ SDL 使ってて mplayer とかはどんな解像 度でもちゃんと画面一杯に出るのは mplayer が頑張っ てるってこと? >どういう理由であれ、ハードウェアによる解像度変更ができない場合は >一段階解像度の高いモードが使われ、黒い背景の中央に表示ウインドウが置かれます。 だから、例えば最低解像度が640*480の環境で320*240を指定するとそういう状態になる。 確実に画面いっぱいに表示したければ、SDL_ListModesで作成可能な解像度を調べて 適切な拡大処理をすれ。 mplayerがどうしてるかは知らんけど、たぶんオーバーレイってやつだと 思うよ。SDL_CreateYUVOverlayで作れるけど、対応してればハード ウェアで拡大してくれる。前にためしで使ってみたけど、色指定が面倒 だから使うのやめた。画面一杯に拡大しても、CPU使用率ほとんど 変わらないのは魅力的だったけど。 mplayer のログに YUV planner がどうの、と出るから 多分それだと思う。使ったことないや… http://en.wikipedia.org/wiki/YUV 一番いいのは、ユーザーに選択させること。 こっちは800x600前提で作ってりゃいい 描画部をアダプタパターン的にリファクタリングしてス ケーラを挟むようにした。とりあえず RGB のままでソ フト的にスケールさせて、アプリ側に問題ないようなら オーバレイを試してみるよ。 ffmpeg のライブラリ使うと変換も楽そうだし。 http://www.dranger.com/ffmpeg/tutorial08.html >>485 ヒントサンクス。 ttp://cefiro.homelinux.org/topics/SDL/printable/setup-win32-mingw-1.1-20030402.html を参考にMinGW5.1.6にsmpeg 0.4.4を入れようとしているのですがmakeに失敗します。 いくつかのサイトで-lstdc++が必要とのことで cd smpeg-0.4.4 env LIBS="-lstdc++" sh configure --prefix=/mingw make エラーの内容は undefined reference to 'SDL_XXX' undefined reference to '__cxa_pure_virtual' などです。SDLはインストール済みで/mingw/lib/libSDL.aはあります。 どなたか解決策をご存知ないでしょうか。 >>490 make CC=g++ CXX=g++ LD=g++ と打つと成功する可能性があります。 >>491 アドバイスありがとうございます。 コンパイルやリンクにc++の代わりにg++を使うようになったのですがエラーメッセージは変わらずです・・・ エラーを出力して調べてみたところ Warning: This library needs some functionality provided by -lSDLmain. I have the capability to make that library automatically link in when you link to this library. But I can only do this if you have a shared version of the library, which you do not appear to have. と出ていました。SDLがリンクできていないのがエラーの原因のようですが上記メッセージと関係あるでしょうか? ちなみにPATHを通したC:/MinGW/binにはSDL.dllというshared libraryがあります。 もし何かわかる方がいたらアドバイスください。 >>492 SDL のダイナミックライブラリが見つからないと言っている。 libSDL.a はスタティックライブラリ。 ああ、dll はあるのか。 >>490 に書いてあるパスとよく見比べてみろ。 >>494 dllは/usr/local/binじゃなくて/mingw/binにインストールしたんですが、MSYSでecho $PATHとやると .:/usr/local/bin:/mingw/bin:/bin:... となっていてSDL.dllがおいてある/mingw/binはパスに入ってます・・・もうお手上げ よく見たら ttp://cefiro.homelinux.org/topics/SDL/printable/setup-win32-mingw-1.1-20030402.html のサイトにMinGWでコンパイルしたsmpeg-0.4.4のバイナリがおいてあるのでそれを/mingwに展開したらとりあえず使えるようになりました。 同じプログラムでSDLをダイナミックリンクしたものと、スタティックリンクしたものを作成したのですが、 ダイナミックリンク版ではコンソールへ標準出力されていたものが スタティックリンクでは出ないような現象が発生しています。 SDLのリンク方法によってこういう現象は発生するものなのでしょうか。 また、リンク方法が原因である場合、スタティックリンクで標準出力へ出力する方法は あるでしょうか。 >>497 標準出力に表示されない設定でコンパイルされたライブラリをリンクしてるだけでしょ >>498 1ライブラリが本体のソースの動作まで変えてしまうものなんですね。 勘弁してほしいものですが... --enable-stdio-redirect ですかね。試してみます。 でも現状ではファイルにリダイレクトされてるわけでも無いようですが... floatに頼子だ割ったプログラムソースを目指す人のためのブランド「float志向」 SDL_MixerでBGMを任意の位置でループさせる方法はないものか・・・。 やっぱりSDL_Audioで作るしかないのかな どうしてもSDL_Mixerでやりたきゃオーディオソースを切っちゃえばいいじゃん どうせならOpenAL使おうぜ SDL_WM_SetCaptionで日本語を表示したいのですがどうすれば良いですか? 最新バージョンだと文字コードがUTF-8だったと思うんで変換して渡せばいいはず。 変換の仕方はググって下さい。 こんなんあったよー。 Shift-JIS -> UTF8 ttp://www.atmark.gr.jp/~s2000/r/rtl/encode.html ttp://www2s.biglobe.ne.jp/~satosi/soft/sjis2utf8.h SDLdoc-jp を置いている tacoworks.jp の管理人です。 サーバの移転を行うため、3/15 のあたりに DNS 情報の切り替えを予定しています。 ドメイン名自体の変更はないので移転後も ttp://www.tacoworks.jp/software/SDLdoc-jp/ のURL は そのままアクセスできますが、 切り替えの時期に一時的に見えなくなるかも知れません。 もしそうなったら申し訳ありません。 openglを使う時に最初の画面が真っ白になるのを回避できませんか? できれば画像を読み込んで、いきなりそれを表示したいのですが。 >514 もしかしてSDL_SetVideoModeしてから最初のSDL_GL_SwapBuffersを呼ぶまでの時間が長いんじゃないのか? ファイルの読み込みとか いえ、別に何もしていませんが、最初の一瞬だけ真っ白になります。 それが嫌なのです。 >>514 うちではならない。 再現する最小のソース書いてうpするか他のPCで試しても同じになるか試してみるか。 #include <SDL.h> #include <SDL_opengl.h> #include <windows.h> #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "opengl32.lib") void End(); // 終了処理 bool PollEvent(); // イベント処理 bool Init(); SDL_Surface *gScreenSurface; int main(int argc, char* argv[]) { // 初期化 if( !Init() ){ printf( "初期化に失敗しました" ); return 0; } // メインループ while( 1 ){ glClearColor(1.0f, 1.0f, 1.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); // 四角形を描く glBegin(GL_QUADS); // 描画色を白に設定 glColor3f(1.0, 0.0f, 0.0); // 4つの頂点を指定 glVertex3f(100.0f, 100.0f, 0); glVertex3f(540.0f, 100.0f, 0); glVertex3f(540.0f, 380.0f, 0); glVertex3f(100.0f, 380.0f, 0); glEnd(); // 更新を画面に反映する SDL_GL_SwapBuffers(); // イベント処理 if( !PollEvent() )break; } // 終了処理 End(); return 0; } // 初期化処理 bool Init() { // SDLの初期化 if( SDL_Init( SDL_INIT_VIDEO ) < 0 )return false; SDL_WM_SetCaption("test", NULL); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); // ウィンドウの初期化 gScreenSurface = SDL_SetVideoMode(640,480,32,SDL_OPENGL | SDL_HWSURFACE); glOrtho(0.0, 640, 480, 0.0, -1.0, 1.0); glClearColor(255.0f, 255.0f, 255.0f, 255.0f); glClear(GL_COLOR_BUFFER_BIT); return true; } // 終了処理 void End() { // SDLの終了 SDL_Quit(); } // イベント処理 bool PollEvent() { SDL_Event ev; SDLKey *key; while(SDL_PollEvent(&ev) ) { switch(ev.type){ case SDL_QUIT:// ウィンドウの×ボタンが押された時など return false; break; case SDL_KEYDOWN:// キーボードからの入力があった時 { key=&(ev.key.keysym.sym); // どのキーが押されたかを取得 if(*key==27){// ESCキー return false; } } } } return true; } 上のコードを試してみて下さい。 真っ白なウインドウが出てからちょっとしたら赤い四角形が出てくる のですが、最初からいきなり赤い四角を表示したいのです。 >>521 OS: windowsXP sp3 コンパイラ: gcc version 3.4.5 (mingw-vista special r3) コンパイルコマンド: g++ hogehoge.cpp `sdl-config --cflags --libs` -lglu32 -lglut32 -lopengl32 私の環境では初回起動時に一瞬、背景が透明なウィンドウが生成されてから、中身が表示されました。 二回目以降は最初から白の背景に赤い四角が表示されます。 通りすがり OS : Linux 2.6.18-164.11.1.el5.centos.plus i686 i386 コンパイラ : cc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46) コマンド : cc piyo.cxx `sdl-config --cflags --libs` -lglut 背景が黒のウィンドウができてから白の背景に赤の矩形が表示された SDLがウィンドウ関連の処理にてこずってるようにも見える。 苦肉の策として サイズ(1 x 1) でウィンドウを作っておいてから 初期化が終わったあとでサイズ変更(or 作り直す)すると まだマシかもしれない。 関係ないけど >glClearColor(255.0f, 255.0f, 255.0f, 255.0f); これ変じゃない? 画面上をクリックするゲームを作ってるんですが、 画面上でマウスカーソルを動かしまくるとイベントを受け付けないフレームが出てきます。 どうすればいいですか。 すいません。自己解決しました。 イベントキューからイベントを取り出してないだけみたいでした。 下のコード動かすと画像表示しないで画面が真っ黒になります。 イベントハンドラのセット(SDL_SetEventFilter(&filterEventsHandler);) を画像転送の後に配置すると画像表示されるんですけど そういうものなんですか?何かルールありますのですか? 以下ソース(D言語) ----------- void main() { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE); SDL_SetEventFilter(&filterEventsHandler); // イベントハンドラ // ビットマップ読込 SDL_Surface *image = SDL_LoadBMP("hell.bmp"); // 転送 SDL_BlitSurface(image, cast(SDL_Rect*)0, screen, cast(SDL_Rect*)0); // イベントループ bool done = false; SDL_Event e; while ( !done ) { while ( SDL_PollEvent(&e) ) { done = e.type == SDL_QUIT; } SDL_Delay(1000/30); } SDL_Quit(); } SDL_Flip( screen ); したら表示されました。イベントハンドラ設定したら プライマリサーフェイスがクリアされるとか・・・? わからねえ SDL_SetVideoModeのことろで、 SDL_DOUBLEBUFも指定しない場合、 SDL_Flip以外でも「誤って」画面表示される場合があります。 >>530 ありがとうございます。 逆に偶然表示されたって感じなんですね。 ウィンドウを最大化状態から、「元の大きさに戻す」をした場合に、 SDL_ResizeEvent が発生しないのは仕様なのでしょうか。 WindowsXP です。 openalで音出せなくて泣きそうになってたけど、 sdlでやってみたら何の苦労もなく音鳴らせた。 難しいものだな。 ttp://www.kekkai.org/roger/sdl/index.html ここがすごく良かったです。 keysymの"sym"ってどういう意味ですか? 何かの略語でしょうか? GUI(ボタンとか)で使いやすいLIBってどれでしょうか? 軽めのやつで WindowsでSDL使っています ウィンドウのタイトルバーをドラッグしてるときに 処理がとまらないようにするにはどうすればいいんでしょうか SDLのソースを書き換えてWM_MOVEを別スレッドで処理すればできると思うけどオススメはしない 亀で人違いだが >>382 thx! ほんとSDL.netって流行ってないなw そんなもん俺ライブラリの一つに過ぎないんだから流行ってるも何も SDLの人気の理由の一つとしてシンプルで簡単というのがあるけど .NETは簡単にGPU使えちゃうからな ブラウザ上で動く.NETのSilverlightなんかでもSDLとは比べ物にならないパフォーマンス出るんだぜ DirectXやXNAの話か? そっちの方が将来性あるしいいか。 古いバージョンのsdlが欲しいのですが… MacOS9用のsdlが本家で見つかりません。 あ、http://www.libsdl.org/release/ にありました。 しかし、普通にたどれるようにして欲しいです。 SDLで日本語入力を実装したいのですが、SDL_inputmethod、SDL_textmanager、SKK どれがついすやすいのでしょう? 懐かしいな、SDL。昔WindowsとMacOS9で同時開発しなくちゃならなくてこれも検討したな。 結局使わずにWindows用の自社ライブラリ移植したんだけど、どうして採用しなかったか 理由忘れちまった。 書き込みテストも兼ねて・・・ なんであまり普及してないんだ?便利だと思うんだが・・・ OpenGL使ってて、ゲーム作るならGLUTよりSDL!と言われてたのに してなくは無いだろ SDL.dllが同梱されてるゲームやデモは結構あるぞ サーセンw でもやっぱ資料が見つかりやすくはない・・ 日本語にこだわるからかもしれんがorz 使うのが簡単とは言っても初心者にもおすすめって感じでは無いのか・・・? 更新が途中で数年止まってる入門サイトとか、リンク切れしてるサイトとかあったから もう廃れたのかと思ってしまった ライブラリの使い方(個々の関数の仕様)を知りたいのか、 SDLを使ったゲーム作りのチュートリアルを知りたいのかわからん。 両方ですがどちらかと言うと後者です 今までは検索すれば入門サイトが2つも3つも出てくる環境でやってたので もしかしたら探し方が甘いだけかもしれんが・・・ 自分が探してるのはSDL自体の使い方というより、 SDL(SDL_imageなども)とOpenGLで作る2D、3Dゲームのごく基本的な部分 例えば画像を読み込んでテクスチャにしたりとかそのあたり 関数の仕様等は調べられるけど、具体的で決定的な使い方がわからず 「これでいいのか・・・?」といった状態です・・・ 「sdl_surface texture」でわんさか出てくるんで、確かにこれ探せないなら使うの辛いかもな。 いろんな例のサイトがありますが自分なりにまとめてみます ありがとうございました。 連投ばかりスマソ うーん、、、いっぱい検索して調べれば最後にはなんとかなるけど やっぱ初心者が容易にとっつける物ではない感じ わがままかもしれないが、もうちょい至れり尽くせりなサイトがあってもバチは当たらないとも思った SDL+OpenGLはクロスプラットフォームで有望な選択肢だと思ったし、いつか自分でまとめたいと思った >>559 一口に初心者といってもいろいろあるよね。 a. OpenGLのみ経験済み。SDLは初めて。 b. SDLのみ経験済み。OpenGLは初めて。 c. SDLとOpenGLそれぞれ個別に経験済み。SDL+OpenGLは初めて。 d. SDLもOpenGLも初めて。だけどゲームは作ったことがあります。 e. ゲーム以外のジャンルのプログラムは経験済み。 f. そもそもプログラムを作ったことがありません。 g. その他 バックグラウンドもわからずに初心者って言われると上記くらいは想像できるので、 まあ>>550 にはガンバレくらいしか言えないw http://hg.libsdl.org/SDL/file/05af1b9ff46d/test/testgl.c これとSDLのAPIリファレンス見ればだいたい分かるはず。 SDLとかGLUTは描画に専念できるから導入にはいいと思う。 GLUTなんて使ってゲーム作る人は DirextXのときはDXUTを使うんだろうか。 GLUTって数値計算シミュレーションの可視化とかに使うもんでしょ DirectXで2Dゲームなら素のままで十分いける 別にDirectXでシミュレーションしたっていいんだよ。 大学とかだと研究用PCがLinuxだからOpenGLの例が公開されてるだけで。 そういう時にToolkitとして使われるのがGLUT。 >564 久しぶりに言ってみるか。 お前は何を言っているんだ? GLUTではウィンドウの移動ができたのに SDLではなんでできないんだろう・・・ >>567 SDL 1.2の頃はまだ不要だと考えてたんじゃない? SDL 1.3ならSDL_SetWindowPosition()があるよ。 ttp://wiki.libsdl.org/moin.cgi/SDL_SetWindowPosition 1.3からはマルチウインドウに対応するんだっけ 窓そのものをキャラクタに見立てたウザシューティングが作れるな だいぶ待ってるんだが、リリースいつになるんだろうなあ。 現状普通に使えるの? >>571 つまり、現バージョンまでを一度も使用せず、次バージョンを待ってると? 安定版にしか興味がないならSDL 1.2一択かな。 SDL 1.3には1.2にない機能が入っているから、 それらに興味があるなら1.3を使い始めればいいと思う。 いや、1.2は使い倒してる 1.3はwarning under construction! とか書いてあるけど やっぱどっか未実装だったりすんのかなあって >>575 SDL 1.3を使ってSDL_imageをビルドしなおしているよね? 手元の環境で使う分には問題ないんだけど。 ごめん、>>576 はSDL 1.3とSDL_imageの話であって、 >>575 のリンク先のチュートリアルをビルドしたわけじゃないです。 コンパイル済みのBinaryのを使ってましたorz できればzlib・libpngのビルド→SDL_imageのビルド、libogg・libvorbisのビルド→SDL_mixerのビルドとか 長い手順踏みたく無いけどその場合は安定版のSDL1.2じゃなきゃ駄目かorz そりゃそうかorz SDL Perl を使ってゲームっぽいものを書いてみました。 けれどゲーム製作についてサッパリ知らないもので、 ある動作を実現するのにどんな定番なやり方があるのか知りたく思っています。 ゲーム製作初心者向けのサイトやドキュメントや書籍をご存知なら、 教えていただけないでしょうか? SDL 1.3が正式にリリースされたら、そのバイナリ(本体とSDL_imageなど)の配布が始まるんでしょうか・・・? 今更だが>>567 リサイズ時にスクリーン座標 100, 50 へウィンドウを移動させる: SDL_putenv("SDL_VIDEO_WINDOW_POS=100,50"); リサイズ時にディスプレイ中央へウィンドウを移動させる: SDL_putenv("SDL_VIDEO_CENTERED=1"); SDL1.2 の幾つかのビデオドライバのみの対応だけど それと SDL1.3 正式版が zlib ライセンスになってリリース予定らしいね ありがとう、試してみます。 1.3からはiPhoneやらandroidへの移植が可能になるみたいですが、 これもバイナリ配布で簡単に導入できるようになるんでしょうか そこが気になって夜も眠れないorz すいません考え方を変えます 粘着でスマソですがやっぱり情報が探せない。。。 VC使っててSDL_imageにlibpngをリンクする方法が未だわからないorz どのサイトを見ても「pngを読むにはlibpngが必要」とだけ書いてあって ビルド時にlibpngの存在をどう伝えるのかがわからん SDL_mixerのoggも同じ SDLで書いたコード見ると簡潔で初心者にもうってつけな印象だったけど 実際はやっぱりそうじゃないのか android移植だっておそらくNDKだろうし、やろうとしたら導入で死にそうorz ソースコード追えばいいよ で終わらすのもあれなんで SDL_image や SDL_mixer とかのソース内では #ifdef 使ってライブラリ利用を切り替えてる SDL_image+libpng なら追加のオプションに /D "LOAD_PNG" を入れたり、 /D "LOAD_PNG_DYNAMIC=\"libpng.dll\"" なんて入れると VC++ が libpng の API を参照するようになるかもね それとその iPhone やら Android やら DS への移植について あれらは共有ライブラリの仕組みが無いから 否応無しに SDL をスタティックリンクしなければいけない なので各開発者は自分の開発環境で扱えるように一からビルドする必要がある 開発環境ごとにスタティックリンクに必要なファイルは異なるわけで 余程優しい人が居なければバイナリ (ビルド済み lib ファイル等) 配布なんて無いかもね 詳しい答えをありがとうございます。 少しソースコード見てみます。 重ね重ねすみませんが、もし良ければこの質問に答えてください。 Android開発を今しているわけではないのですが、気になる事なので。 Androidは調べてみるとJavaからJNIでCを動かすようで、 結局 入力や音声はJava側でやるみたいですし(iPhoneはわかりません)、 スマートフォンの入力はパソコンのキーボードやゲームパッドと異なるので そのまま移植というわけにもいかないと思います。 そうなると、SDL 1.3で謳っているこれらへの移植がどういった物なのかイメージが湧きません。 実際にはほとんど書き直す必要があるのでは?と思ってしまいます。 Android は『ARM CPU で動く Linux の上の箱庭』 脱獄すればそこは素の Linux つまり組み込み Linux 向けのコードが動くし、その開発環境も流用できる ttp://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite もちろんプログラムはお馴染みの int main(...) から始まる iPhone みたいなキーの無い携帯端末もあるけど SDL_MOUSEBUTTONDOWN で液晶画面タッチは捕捉できるので バーチャルボタンみたいな物を画面上に用意すれば良い SDL 自体、そういう OS 毎のインターフェースの違いを吸収する役割を担ってるから こちらはコードを使い回せるわけだね ほうほう、なるほど!ありがとうございました。 ということはマルチタッチ的に複数のMOUSEにも対応するのか? まだやってないけどwktkしてきた この度はサンクスでした! 上のほうでも書かれていましたが、確認させてください。 SDL単独では垂直同期はできないということですか? 590 名前:名前は開発中のものです。[] 投稿日:2011/06/04(土) 16:34:50.15 ID:k66UbPBd 上のほうでも書かれていましたが、確認させてください。 SDL単独では垂直同期はできないということですか? SDL_Flipで同期待ちするかもしれないし、しないかもしれない >1の初心者の初心者による初心者の為のSDL ttp://tokyo.cool.ne.jp/sdl/ がCOOL終了で6月末に消滅する(と思われる)んだけどどうしたものか? >>593 各個人でページのミラーをローカルにとっておいたほうがいいと思う ミラーソフトは色々あるけど俺のオススメはPageDown http://www.vector.co.jp/soft/win95/net/se068515.html 内容も少し古くなっているし、最新版にあわせた記述にしたいけど 時間もないからまずは今の状態でミラーリングする事を優先したい >>594 一応がんばってるけど閉鎖までに間に合わないかも http://wiki.game-develop.com/index.php?SDL_tutorial 掲示板のほうはもうすでに消えてるね スパムが多かったけど、それ以前はやり取りがあったので残しておきたかった 当時の書き込み内容どこかに残ってない? PageDownで4階層まで・他サイトを含まない・jpg,gif,lzhをDL でDLできた。 infoseekもなくなって、COOLもなのか・・・貴重なページが無に消える・・・ 貴重なサイトが無に消えるのは残念だけど、 だからといって丸々転載するのはどうなんかね? 転載するだけでもグレーなのにそれを編集するとか真っ黒だし >>597 みたいな意見もよくわかるけど実際どうするよ? 丸々転載は複製権、編集は同一性保持権にひっかかると思う グレーなんて言い方してる所をみると著作権を知らないんだと思うけどどっちも真っ黒 現時点での判断基準はサイトに書いてあったこの文章がヒントになると思う >なお、サンプルソースおよび私の作成したデータの使用には特に条件はつけませんが、 >著作権は放棄していません >まぁ常識の範囲で自由に使ってもらって問題はないと思います >私の作ったデータは自分のゲームに取り入れて使ってもまったくかまいませんが、 >フリー素材の場合は製作者のサイトなり連絡先なりで使用条件を必ず確認してください まぁ、SDLはもともとゲームメーカーが開発して使っていたもので、今はGNU LGPLのオープンソースなんだけど、 そのあたりの肌感覚にあわせると「改良して公開するのは善」みたいな所もあると思うわけよ そして2ちゃんねる的にもおまえのサイトは俺らのもの的な妙な一体感というか感覚があると思う たしか作者ってここの住人だったよな?違ったらごめん、前スレ残してないからうろ覚え プロフィールに2ちゃんがきっかけって書いてあったからこっちかム板のどっちかだとは思うけどな 一番確実なのは作者に連絡を取る事だけど、今までずっと放置されてる所をみると返事がある可能性は低いと思う そんなわけで俺一人でどうこう考えても仕方ないのでおまえらがどう考えてるのか聞きたい ちなみに俺は別にいいんじゃねーのという考えです >>597 が転載ならグレーゾーンになると考えているなら、ミラーリングしたアーカイブをアップローダに置いておくのが 落としどころになると思っています 丸ごと別サイトに置いてもいいけどな。 一応説明しないとわからないと思うのでしときますが 連絡していつまでに返事がなかったらどうするとか それまでに保全どうするのとか 連絡するならするでどんな条件で誰が保守するんだとか そのあたりも含めた相談です。 ちなみに私は面倒な展開になったら手を引くつもりなので 皆を巻き込んでおこうという腹なのですが>>599 さんは SDLに興味はおありですか? ちなみに変な物アップしたらwiki管理人に迷惑かかるんじゃねーのとかも 懸念してはいたのですがよく見たら私の文章が勝手にいっぱいコピペされてるので そのあたりはもう気にする必要はないよね、お互い様なんだからって感じです(怒ってるわけじゃないですよ、念のため) というかコピペするだけしといて、コピペブログするなとかいって荒らしてるのはおまえらですか? あまりの手法にガクブルでしたよ というわけでそろそろ返事は貰えましたか?>>599 さん 出版社から「本を出しませんか?」と声がかかったときに重要じゃないか!!! macで使ってみたいんだが…… フレームワークとテンプレートをコピーしてxcodeで立ち上げるまではいくんだけどそこで syntax error before no such file or directory で11のエラーが出る 初心者丸出しで悪いけど誰かアドバイスしてくれないだろうか とりあえず,ソースコードとコマンドラインを張ろうか SDLとコンパイラのバージョンがあればなお良し ってか,パスが通ってないように思えるが パス通してなかったかフレームワークを置いてなかったか。 もう皆さんは、SDL-1.3で開発してるのですか? いや、古いまま 別に困ってないし・・・ 1.3って何か新機能あるの? >>614 SDL 1.3を使っていますよ。 >>615 ttp://wiki.libsdl.org/moin.cgi/Introduction > Full 3D hardware acceleration > Support for OpenGL 3.0+ > Support for multiple windows > Support for multiple displays > Support for multiple mice, tablets, etc. > Force Feedback available on Windows, Mac OS X and Linux 他にも細かい機能追加や仕様変更はあるはず。 ただ、SDL 1.3でサポートを打ち切られたプラットフォームもあるから、 SDL 1.2じゃないとダメという人もいると思う。 Nintendo DS向けのコードとか入ってるし、ML見るとiOS向けにがんばってる風もあるよね1.3。 iOS向けはRotation周りで苦戦してるっぽかったからまだ実用できないと思うけど。 > Support for multiple mice, tablets, etc. ちなみにtabletsはIntuosとかの話かと思いきや、コード見ると wintab(いわゆるWacomのペンタブ)じゃなくてタブレットPCの話だったぜ。 添付のプロジェクトファイルだとVC++がSDL_gfx.libを作ってくれないから マクロをBUILD_DLLからDLL_EXPORTに書き換えて解決 過疎ってるみたいだけど質問です Win7 64bit + VS2010 C++ ExpressでSDL1.2.14-1を使っています。 この環境でSDL_PollEventを実行すると以下の様なエラーが出て困っています。 'hoge.exe': 'C:\Windows\SysWOW64\RpcRtRemote.dll' を読み込みました。Cannot find or open the PDB file hoge.exe の 0x75cfb9bc で初回の例外が発生しました: 0x000006F4: NULL 参照ポインターがスタブに渡されました。 色々ググって見ましたが解決方法がわかりませんでした。 とりあえずリリースビルドでやってみればいいんじゃね >>620 リリースビルドでも出るんです 例外が出ているけどストップさせなければ問題なく動いている(ように見える)んですが 出来れば解決したいところです。 尚、PollEvent以外のイベント取得系の関数でも同じエラーがでるようです あ、もう一つ情報ですが デバッグでステップ実行すると例外は発生しないようです… とりあえず原因はわかったので追記です SDL_ACTIVEEVNETが発生すると例外が飛ぶようです 解決方法はまだわかりません。 エラーメッセージが似てますが、参考になりますか? ttp://dixq.net/forum/viewtopic.php?f=3&t=5719 ttp://watery.dip.jp/slash/archives/400 解決したので報告です 関係ないと思って書いてなかったのですがSDL_mixerを一緒に使っていました。 で、SDL_mixerの初期化(Mix_OpenAudio)を SDL_Initの後に呼び出すとSDL_Initで確保したメモリの一部が破壊されてしまうようです Mix_OpenAudioの後でSDL_Initすると問題は解決しました。 詳細は不明ですがとりあえずこれで進めてみます。 レスくれた方ありがとうございました SDLの周辺ライブラリが一斉にアップデートされた。 SDL_image 1.2.11 SDL_mixer 1.2.12 SDL_net 1.2.8 SDL_ttf 2.0.11 各ライブラリがzlibライセンスへ移行した。 朗報だなあ。これで1.3使う意義がぐっと増したと思う。 ライセンスだけのアップデートって訳じゃなくて、結構いろいろ変更点あるみたいだし。 SDL_ttfに「欧文以外についてキャッシュを改善した」って書いてあるっぽいが パフォーマンスよくなってるのかしら。 WindowsだとHWの恩恵をうけるには3Dで作成しないといけないのねぇ 2Dゲームなのに....3Dで作りなおそうかな 1.2 が zlib になったのかと思った。 結局、1.3 から変わるんだよな。まだ stable じゃないみたいだが >>628 SDL 1.3は2D描画にDirect3DやOpenGLを使用可能なので、 3Dのアクセラレーションが効けば SDL 1.3を使うだけでもとりあえずは速くなる、はず。 >>629 SDLの周辺ライブラリは特にバージョンを1.3とかに引き上げる様子がないから 現状のままライセンスのみSDL 1.3に合わせたんじゃないかな。 [SDL] Creating SDL2 ttp://lists.libsdl.org/pipermail/sdl-libsdl.org/2012-January/083550.html SDL 1.3はSDL 2.0になった模様。 それに伴いライブラリの名前が変更されるため、SDL 1.2との共存が可能となる。 周辺ライブラリの名前もSDL2_imageなどに変更されるみたい。 あと、SDL 2.0からSDL 1.2互換APIが削除されたようだ。 test以下の古いAPIを使ったサンプルもいくつか削除されている。 動いてるなって感じだ。 思いがけずスレのタイトルと一致したな ウィンドウの生成とサウンド部分にのみSDLを使用したいのですが、 その場合、普通に生のGL描画関数を直接使えるでしょうか? SDLでラップされてる?描画関数を使わないって事ですが。 >>631 Direct3Dレンダラの話でいい?詳しくないけどソースを読んだか印象では、 SDLの関数がデバイスロストが原因でエラーを返した場合、 エラーメッセージにDEVICELOSTという文字列を含めるのでそれで判定する感じかな。 例えばSDL_RenderPresent()内部でIDirect3DDevice9::Present()がデバイスロストのエラーを返すと、 SDL_GetError()は"Render(): DEVICELOST"という文字列を返す。 >>635 ttp://mono.kmc.gr.jp/~nojima/hiki/?2D%A5%B2%A1%BC%A5%E0%A4%CE%A4%BF%A4%E1%A4%CEOpenGL%2FSDL%C6%FE%CC%E7%281%29 ここで紹介されているようなこと? >>636 前半の最後の行間違えた。 SDL_GetError()は"Present(): DEVICELOST"という文字列を返す、です。 >>636 まさにこういう事でした。ありがとう SDL1.2だとOPEN_GL3以降に対応してないとか、どっかでちらっと見たような気がしたので 完全にGL関数がSDLにラップされてて、いちいち経由しないと 使えないようになってるのかと勘違いしました。 >>636 わざわざソースまで追ってもらって申し訳ない。ありがとう。 でもSDL_RenderPresentって返値voidなんだよなー。 他の関数は失敗したら0以外を返すからGetErrorで調べろ、みたいな感じなのになんでこれだけ、という気がする。 Presentが失敗する環境が少数派(Direct3Dだけ?)なのか。 >>639 SDL_RenderPresent()の戻り値はvoidだけど、 内部ではIDirect3DDevice9_Present()のエラーチェックを行なってて、 かつ実際にエラーが起きたらSDL_GetError()が返すメッセージを設定している。 なのでデバイスロストが起きたらSDL_GetError()で拾えるはず(良い方法ではないとは思う)。 ただ、D3Dレンダラのソースを読むと、ちまたのデバイスロスト関連記事にあるような リソースの破棄だとかその手の処理がなくて、単に無視しているように見える。 この振る舞いが正しいかどうか分らないけど、実際困るようなら開発者に働きかけるのが良いと思う。 ラップなんかされてねーYO! アハ カモ イエ (ここでフレミング右手の法則、の手) OpenGLにはデバイスロストなんてないのに なんでDirectXにはあるんですか? SDL_Surfaceを任意のピクセルサイズ(たとえば64x64)で生成するのは、SDL_CreateRGBSurfaceを使うしかないのでしょうか・・・ スクリーンサーフェイスはグラフィックボードとAPIが対応してるものしか出来ないのは 当然ではないか。 SDL_CreateRGBSurface を使いたくない理由をはっきりさせてからじゃ ぐは、3D化するのめんどいからglTexSubImage2Dで手抜きOpenGL対応したら さらにおそくなった。まあわかってたけど真面目にやろう うーむ・・・SDL_gfxやSDL_rotozoomを使わずにスクリーンの拡大に挑戦しているが、なかなかうまくいかないな・・・ SDLと相性がいい。OpenGLラッパーってありますか? 拡大縮小回転とかやりたいだけじゃないの? うん、俺も知りたい。gfxは出来がいいとは思えない つーかソフトウェアでその辺やろうとすると重すぎてきついよね >>651 レスありがとうございます、やはり3Dエンジン使ったほうが簡単に作成できますね でもそうなるとSDL使う必要ないToTような。 SDLは2D専用とて使用していきます。 >でもそうなるとSDL使う必要ないToTような。 確かに必要はなくなるけど、 3Dエンジンは描画がメインなので、 音や入力などはSDLを併用して用いる方法もある。 逆にBillboard機能とか2D部分だけを使っていくなら、 3Dを導入するにしてもそれほど面倒ではない。 もちろん、最後は好みの問題だが… SDLとOpenSceneGraphはどちらもOpenGLのみなので、 組み合わせ的には干渉が少ないかな。 海外だけと一応チュートリアルもあるので張っとくよ。 http://www.cs.clemson.edu/ ~malloy/courses/3dgames-2007/tutor/index.html というかSDLの利点って音声と入力のAPIがポータブルなところだろ それと、簡単な何かを作るのには手軽ってこと 「簡単に何かを」じゃないからな Mac SnowLeopard&Xcode3からLion&Xcode4に変えたら "ld: symbol(s) not found for architecture x86_64" と出てbuildが通らない・・・ SDLは-arch i386 -arch x86_64付けてmakeしたんだけどな。 もはやお手上げ\(^o^)/ もう、どうにもならんしよく考えたらSDLあんまり必要ないことに気づいた OpenGL+glut+OpenAL+Freetype2+libpngでやります。 各種イベント(キーボードとかマウス)は欲しいです(^q^) あと、ObjectiveC全然わからんです。 基本OpenGLの各種ライブラリでやってるんだけど、 画像ファイル読み込みと音声処理のためだけにコレ入れるのってアリ? それだけなら別にSDL使わなくてもって感じはするかな 音声処理->OPENAL 画像->libPNGなど キー,ジョイスティック入力->各OSのAPI でいいよ >>663 画像もOSGとかエンジン寄りのライブラリなら複数対応している気もするが。 そういえば以前SDL1.2系ベースで作った自前フレームワークも ゲームループとキー入力、OpenGL2Dテクスチャ位しか機能無いな。 glutの代わり程度には成るので、 SDL_opengl.hを1.3系のに入れ替えてOpenGL3.0環境にして、 http://www.arcsynthesis.org/gltut/ ↑のサイトのチュートリアルを移植して勉強中。 2.0でSDL_RenderCopyExで回転できることそれだけで嬉しい >>669 試しに作ったくそげーでよければ ttp://www1.axfc.net/uploader/File/so/81760.zip DLパスはneet デバイスロストの対応だけど、SDL_RenderPresentした後 エラーメッセージにINVALIDCALLが含まれてたらrenderer作り直しにしてるけど これでいいのかが解らない 手持ちの環境で試した限りDEVICELOSTが帰ってきたこと無いんだよな >>671 素直にソースコードもよこせって言えばいいのに。 >>670 よくできてんなー 5970点付近に俺の限界があるわ 簡単にゲーム作ろうってなるとWindowsだと選択肢たくさんあるけど その他民だとSDLが一番手軽感あるな >>673 Windows用のゲームをLinux上で作りたかったからSDLを選んだよ 規模が適度に小さいので覚えること少なくていいわ そのぶん自分で色々つくんなきゃいけないけどねw MessageBoxが入ったか 地味に欲しかったから結構助かるわ hg最新版でDebian関連ファイルが整えられてるけど、SDL 2.0のリリースが近いのかな。 MLではDuke Nukem Foreverネタしか見つけられんかった。 http://lists.libsdl.org/pipermail/sdl-libsdl.org/2013-January/086697.html まだちゃんと見てないけどGameControllerとかできたのね、wikiは追いついてないみたいだけど CMakeにも対応してきてるし、そろそろ2.0くるのか? hg最新版でプラットフォームにPSPが追加され、代わり?にDSサポートが削除された。 この手の自作ソフト(homebrew)勢ってよく知らないんだけど、需要あるんだねえ。 ほんとだ、DS無くなったんだな DSはハード考えると直接叩いた方がいいだろうし使ってる人少なそうだしな SDLサポートしとけば各種エミュがすぐ移植できそうだし 結構需要はあるんじゃないかな、ユーザー層的に SDLの関数を使った画像や音声の読み込みって別スレッドから呼び出しても平気? 画面Flipしながら別スレッドで読み込めたら最高なんだけど。 ネットで検索しても全然出てこないから、俺が見逃してるだけだったら教えてください・・・。 でも流石にDXライブラリみたいな非同期読みこみが用意されてるなんてありえないよね >>682 SDLのBMPやWAVの読み込みだけならファイルを開いて読み込んで閉じるだけだから問題ないと思う。 あと非同期関数は無かったはず。 SDL_imageやSDL_mixerについては知らない。 というか、画像や音声の読み込みを別スレッドで行うと起こる問題ってなんだろう。 ファイル読み込み処理が使用するメモリをグローバルで共有してたりするとか? 読み込みだけなら競合も関係無さそうだし。 正直どういう実装になってるか次第なんだろうけど別スレッドでSDLの命令は呼ぶなってマニュアルに書いてあるよ Surfaceだとビデオメモリ使ってたりしたらまずいだろうし…エラーメッセージとか確実に取る方法がない SDL2でテクスチャ周り実装した時は、画像読み込み展開を裏でやってメインスレッドでテクスチャ変換って処理書いた 裏で読まなきゃいけないほどのデータ量作ったことないけどねw ありがとう〜 正直俺も裏で読むのが必要になるくらいのデータ量は作ったことないから とりあえずそのままでいきますかね 正直、どうでも良い気がしてるなぁ。 なんか、SDLに新しい事は求めてない。 SDLを使うときはそれなりの時で、 結局はそれなりのフレームワークやミドルウェア使うんだし、 と思ってしまう。 まぁ、それよりもC#なりPythonのバインディングあります!!とか 言われても、既にそっちならOpen Sourceで楽で一通り評価の通ったのがあったりで、 2.0来るのが2年ぐらい遅かったと思うわ。 今更感が。 実際2.0なるの大分遅れたんだっけ androidやiphone対応ついでにいろいろ見なおしたーって思えば悪くは無いと思うけどね 便利だとは思うんで地味に使われるんじゃね 地味〜に変わったところで、IME対応とかあるよねぇ ちょっと毛色の違うアプリが出てくるかな? おーRC版お試しして以来放置してたけど、正式リリースされたんだ?おめでたい しかしもう時代的にアレだなぁ、ライブラリのみのエンジンってめんどい・・・。 ただただゲームを作りたいだけなら、もうエディタとかGUIな開発環境と リンクしてるような言語やスクリプト使えばいいやってなる 技術力向上のための練習と考えても良いけど、ライブラリじゃ中途半端だよね SDLのソースコードをビルドして導入するあたりがピークな気がする SDLの2Dレンダラと併用できそうな3Dライブラリってないかな デバイスの違いを意識せずに書けたらいいんだけど OpenSceneGraphは無駄にでかくてちょっと敬遠してる SDLでカメラに貼りつくオペレーション部分作って 別ので3Dモデルを描画したいって意味? 遅まきながら2.0がリリースされていた事を知って触り始めたんだが…… オフラインにダウンロードできるAPIドキュメント一式って無いの? 手元のFreeBSD+OpenGL環境でも動くには動くんだがいくらなんでも公式サイトは手抜き過ぎではないかと。 >>696 レスどうも。Wikiは当然目を通してるよ。 その上でドキュメントの充実を公式もWiki任せにしないで欲しいって発言だったんだけど。 まあソースにdoxygen形式のコメントが付いてるのは後にないて気づいたんだけど。 それにしても思ったよりレンダラ周りのコードが綺麗でびっくりしたわ。 SDL2.0/mixer/image/ttfのC++のラッパーライブラリ作ったので、良かったらどうぞ ttps://sourceforge.jp/projects/dxframework/simple/ SDL使ってる人って全員こういう自前ラッパーライブラリ作ってるのかな SDL2.0/mixer/image/ttfのC++のラッパーライブラリ作ったので、良かったらどうぞ ttps://sourceforge.jp/projects/dxframework/simple/ SDL使ってる人って全員こういう自前ラッパーライブラリ作ってるのかな どーでもいいが、frameworkで1つの単語だぞ 連投してたスマン >framework と言うか、配布ファイル名とプロジェクト名が合ってなかった... SDL_BlitSurfaceって遅くない? SDL_Render使わないと速くならないのかな gfxのrotozoomSurfaceがうまく機能しないんだが SDL2でやるんならSDL_Renderer一択でしょ SDL1ベースのソースを使いたいなら話は変わるかもしれんが >>706 やっぱりそうか。 SDL_BlitSurfaceは手軽だからとりあえず使ってみたけど、ちゃんと作るならかえないといけないな。 さりげにSDL2.0の日本語リファレンスマニュアルが公開されてるじゃん。 使ってみようかな。 IME対応に喜んで、SDL2にしてみたけど けっきょくIMM APIつかわないとあかんのね。ん〜なんか使い方間違ってる? ウインドウが干渉しあったりポップアップがとんでもないところに出たりしないなら 対応といえるんじゃね それすら出来てない人気アプリもあるべ SDL2とSFML比べるとどうなんだろう OpenGL叩くならあんまり違いないのかな 前のSDLのページには、他の人が作成したlibがありましたが あれどこにあるのでしょうか なんでこれ日本で流行らないの? 俺も使ってないけど 他の便利なもの使ってるんじゃない? そもそも日本以外では流行ってるんだっけ そもそもフレームワークをフルスクラッチで書く人間があまりいないからじゃね 本物のプロが使うものであって流行る=素人にウケるものじゃない プロは社内ライブラリがあるだろう。 音も個別の物を使う SDL_TextInputってAndroidでも使える? ググったら出てきたとか書いた方がいいのかな・・・(´・ω・`) SDLのフォーラムに「SDL2 + XIM problem & patch」と言うのが有ったよSDL2-2.0.4に当ててみたら動いたよ でもこの時点でiBus対応とか言ってsrc/core/linux/SDL_ibus.cが追加されている・・・これどう使えば良いのかな? 上のパッチでも日本語入力は出来るしiBusの何に対応したのか良く分からない・・・ 今はmozcを使っているのだけど、mozcのソースツリーからiBus関係のコードを削除しますって言われているみたいで どうせ対応するなら本家でfcitxにも対応して欲しいな〜と思ってみたり (SDL-fcitxというのも有るらしくソースを見てみたらSDL_fcitx.cが追加されていたよ、でも本家との関係が良く分からない) Linux版Steamで日本語入力がしたいなと思ってちょっと調べたんだけどここまでのようだ もっと詳しい方、情報が有ったら教えて下さい SDL2 + XIM problem & patch: ttp://forums.libsdl.org/viewtopic.php?t=11421 SDL2-2.0.4: ttp://forums.libsdl.org/viewtopic.php?t=11305 SDL-fcitx: ttps://github.com/timxx/SDL-fcitx 久しぶりに本家を見てver2.0.4に更新(前はver2.0.1)してみたんだけど、 微妙にマウスイベント周りとかも変更されてるのね。 それはともかく、うちのFreeBSD上のSDL2+OpenGL環境でベンチマークもどきを試してみたところ、 420FPS->260FPSと6割近くまでスピードが落ちてしまった。 他にもgoogle profilerがエラー吐いたりしたので結局ver2.0.1に戻した…… SDL_RendererとOpenGLの相性悪くないかい? Openglを利用して3Dで作っててフォントを表示したいだけなんだけど, テクスチャにしないと表示できないのかな… allegroも見てみるかな SDLを何も知らない超初心者がsdlを導入しようと思って早速詰まったところです。macです。 SDLのダウンロードページからdmgファイルをダウンロードして中にあった「sdl2.framework」というものを システム>ライブラリ>frameworksフォルダのところにドラッグして入れようと思ったのですがどうしても弾かれて入れることができません。 Runtime Binariesという方とDevelopment Librariesで両方やってみましたがどうしてもframeworksフォルダに入れることができませんでした。 インターネットの情報も古いものしかないのでどうにも信頼性が・・・ Mac なら、Homebrew で管理しているのじゃ? macでのsdlの環境構築の方法を詳しく教えてください。ここ3日くらいやってもなかなかうまくいきません。 http://qiita.com/inomasa/items/d5a9c6ebfb2ff2e40003 このサイトを参考にしました。 よろしくお願いします。 何がどのようにうまくいかないのか教えてくれよ 回答者はエスパーじゃないんだぞ すいません。 先ほど貼り付けたURL通りにsdlのインストールを進めて一番上にあったURLを実行しましたが、#include <SDL2/SDL.h>←ここの部分でエラーが発生します。何がどうなったのかの説明もないので困っています。 もしかすると正しくインストールされなかったのかもしれません。 一番上にあったURL→× 一番上にあったソースコード 君は、あちこちのスレに、マルチポストしてるが、マルチポストは禁止! プログラム板の、1つのスレだけで聞け 回答者はエスパーじゃないと指摘されてるにもかかわらず 「エラーが発生します」だけしか書かないあたり根本的に知能が足りてないだろ それは本当に英語で「エラーが発生した」とだけしか書いておらずなんのエラーなのか自分でもわからず困っていました。そこを書いていませんでしたね。 知能が足りてなくてすいませんでした。 もう少し一人で頑張ってみます。 それは本当に英語で「エラーが発生した」とだけしか書いておらずなんのエラーなのか自分でもわからず困っていました。そこを書いていませんでしたね。 知能が足りてなくてすいませんでした。 もう少し一人で頑張ってみます。 コンパイルエラーごときでつまずくレベルならSDLなんか使うもんじゃない コンパイルエラーなのか? 君は、それすらも書いていないじゃん。 漏れらには、何のエラーかも分からん コンパイルエラーなら、コンパイルオプションで、すべての過程を最大限に詳細表示すればいい 日本語入力できるみたいだからWindows(MS IME)で試してみてるんだけど ざっくりした未確定文字列と確定時の文字列しか受け取れない上に 変換候補ウィンドウも表示されなくて使いものにならんね windowsでもmozcだと変換候補のウィンドウが表示される 選択範囲は取れないけど候補見ればどこが選択されてるか分かるので、まあ使えるレベル ものによって変わってくるのか。IMMの実装が悪いのかな SDLって結構多方面で採用されてるから影響大きい気がする TSFの方が詳細なやり取りが求められそうだからこっちの方が良さそうなんだが 必要になった人間が作るしかないよな http://sdl2referencejp.osdn.jp/TextInput.html の例を元にして、日本語入力のテストをしてみたけど、結果は ×Ubuntu ○Debian(GNOME) ×Debian(LXDE) だった。 Debianの場合、共にuim-ximを使ってるんだが、なぜ違いが出るのだろう? すいません、初心者です c++ 'sdl2-config --cflag --libs' -o test test.cop gcc -o test test.cpp -lSDL2 どちらを使ってもsdlを使ったプログラムをコンパイルできたのですがこの二つは何が違うのですか?違うとしたらどちらを使うべきでしょうか? コマンドプロンプトで、where で、 そのコマンドがどの実行ファイルを起動するか、調べれば? もし複数見つかったら、先に見つかった方(上の方)の、実行ファイルが起動される C:\>where notepad ……メモ帳(notepad)を検索する C:\Windows\System32\notepad.exe ……2つ見つかった C:\Windows\notepad.exe where c++ where gcc 詳細は、環境変数PATH を検索して >>746 同じくドの付く初心者です 前者はpkg-config を使って予めSDL2用に設定されたパスやライブラリ文字列を取得する書き方 後者はビルドに必要なパスやライブラリ等を全部自分で指定する書き方(-lSDL2みたく) だったと思います(間違ってたら誰か優しい人訂正して下さい) pkg-configって何なのかについてはWikipediaがわかり易かったので検索してみて 学習目的ならまずは理解の為に後者で書いて、慣れたら前者を覚えれば良いと思います c++かgccかについてはc++コンパイラかcコンパイラのどちらを起動するかだと思う 個人的にはcファイルはgcc、cppファイルはg++で書く方が好き 少し調べてみた。 #include <stdio.h> class CCC { }; int main(int argc, char *argv[]) { } をコンパイルした場合、gccはエラーとなる #include <stdio.h> int class=0; int main(int argc, char *argv[]) { } をコンパイルした場合、g++はエラーとなる gccとg++では、C++言語の予約語(class)の扱いが違う (c++はg++にシンボリックリンクされている) c++ `sdl2-config --cflags --libs` -o test test.cpp を実行すると、 最初に sdl2-config --cflags --libs 部分が実行される 次に c++ □□□ -o test test.cpp が実行される (□□□部分は、最初に実行した結果が設定される) なお、'(シングルクォート)と`(バッククォート)では意味が違うので注意 `(バッククォート)で囲むと、コマンド置換 `処理` 先に処理が実行された後、その結果に置き換えられてから、 本体のコマンドが実行される 詳細は、シェルスクリプトを参照 そんなレベルの輩がSDLなんか使うなっつってるだろ SDL2.0.6でたな 日本語入力は強化されてないみたいだが、XIM (X Input Method)等を勝手に使えというスタンスなのか? >>745 ×Ubuntu ---- SDL2-2.0.4 ○Debian(GNOME) ---- SDL2-2.0.5 ×Debian(LXDE) ---- SDL2-2.0.4 バージョンの違いだったようだ。 >>755 既にSDL2-2.0.5時点で日本語入力に対応している模様だ。 2.0.6はWindowsではno-soundで問題になっている。 2.0.7-prerelease もビルドしてみたがこれもだめだ、Fixされていない。 mingw windows7 期待はしてるんだが、SDLは製品として使うだけのクオリティがないんだな >>759 SDLって昔からあるのに 普及度はイマイチだよな >>761 今までゲームといったらDirectXだったし、OpenGLが今一だったからね 近年、GPUメーカーがLinux用ドライバ開発に意気込んでるみたいだから、 マルチプラットホームのAPIが欲しいところだね チタニウムっていう エンジンやらフレームワークはあったな 2.0.7がリリースされたがやはり音がでない at mingw windows7 ここの開発陣はWindowsでテストしていないのだろうか >>766 エラーメッセージでてない? 環境変数をセットしろって言われたケースがあって SDL_AUDIODRIVER=winmmで音が出たことはあったけど 止まったな 燃料になるかしらんが、投下してみる ここLinux用ゲーム積極的に作ってるみたいだけど、SDLは使ってないな http://www.feralinteractive.com/en/linux-games/ zlibライセンスだから表記してない(しなくても問題ない)ってケースも多いんじゃない ValveつながりでSource Engineと共通コードも多いだろうし 実質Linux/SteamOSで動くSteamゲーはSDLを使ってるようなものだと思ってる feralinteractive sdlでググってみると、 ・Life Is Strange ・Deus Ex: Mankind Divided ・Middle-earth とか、SDL使ってる感じだった。 zlibライセンスだから表記してないだけか 燃やすしかないよ SDLはもうだめじゃ 手遅れになると 谷は腐海にのみ込まれてしまう >>771 小僧はゲームばっか 若造は3D制作アプリのスクリプトしか使えず APIを気にするのは老害だけってことか? 2006年からのスレがまだ埋まってない時点で察しろ(´・ω・`) 日本で人気がないのは察した。 Linux自体人気がなかったから、最近Linuxさわって思ったがDirectX勉強するのもいいが、 SDL+vulkanも視野に入れるべきたと 今、スレタイ一覧見て気づいたけどDirectXすら話題に上がんないんだね スレ立てて馴れ合いを求める奴らのオヤツにはむいてない なんか気に入ったんで貼ってみる Google Polyは3Dオブジェクトを多数掲載したサイト Spring-Poly https://poly.google.com/view/4Ix3f_d38Zh APIの話題出しただけで老害認定か…… >>777 Thx しかしそもそも極端に例えていうなら、自分がイメージする「こういう音源を使って、こういうテンポで、こういう雰囲気の曲」を作りたい時に、その部分的なフレーズだけ、有象無象の外部リソースで代用できるか?と言う話。 また、X-Wingとか平気で出てるから、ライセンス面の信頼性についてはお話にならない。 >>778 相手してくれてありがとうね どの3D制作ソフトも、結局は内部でAPI呼んでんだよね 複雑な動作をさせたいときは、スクリプトやC言語使ってAPIを呼ばないといけないんだよね どうせ覚えるならクロスプラットフォームのAPIが良いね。そのAPIにSDLは使えないだろうかって話をしてんだよね 始まっていたことに気付かなかったが、遠慮なく続けてくれ給え 既出かも知れんけど、日本語化サイトもあるんだな ttps://ja.osdn.net/projects/sdl2referencejp/ SDL製にHalf Life 2が見当たらない。どのゲームも遊んだこと無い。FTLはSteamサイトで見たこと有る。 ttps://en.wikipedia.org/wiki/List_of_games_using_SDL Source EngineのLinux、Mac版がSDLを使ってるみたいなので、Source Engineのマルチプラットフォーム化に一役買っているのか Source Engineを使えば、個人でもHalf Life 2を作れるかな^q^ もっとチュートリアルが充実していればいいんだが 個人的な意見ですまんが、 ttps://ja.osdn.net/projects/sdl2referencejp/ 最初は自分の勉強とかで始めたんだろうけど、継続して翻訳を続けるってなかなかできないことだと思う。 ttps://en.wikipedia.org/wiki/List_of_games_using_SDL 0 A.D. は、知っている。もう、五年以上前になるが、Linuxの勉強がてらこのゲームをインストールしてみた。 その時は、バグで頻繁にフリーズしていたけど、オフシャルサイトの動画を見てみると、今はきれいに動くみたい。 https://play0ad.com/ >Source Engineを使えば、個人でもHalf Life 2を作れるかな^q^ Mod(パソコンゲーム用の改造データ)ならできるみたい http://wikiwiki.jp/sourcesdk/?%C6%B3%C6%FE%CA%FD%CB%A1 >>783 色々教えていただいてサンクス 継続は力なりと言うのは、その通りすね 例のサイトの様な「ネットの片隅に咲く偉大な良心」(もしくは「大欲は無欲に似たり」)には、いつも感謝しています https://patchwork.ffmpeg.org/patch/5859/ ffplayのパッチが出た まだbuildして確認してないがいけそうだ at mingw windows7 あ、俺、ffplay改良して自分専用の再生ソフト作ったよ。 追加した機能は、 ・マウスホイール回すことで、三秒進めたり、戻ったりする ・マウス中クリックで、サムネイル一覧を表示する アニメのパンチラ探すのに重宝するんだよなぁ ffplayのUI部分のコードは改造しやすいからな Shantae Half-Genie Hero ゲームパッド制御にSDLを使ってる 次のバージョンでAndroidStudioに対応しそうだな Android Studioってんがあるんだ Linux版があるから、使い勝手をためしてみよう AndroidStudioを試した結果(あくまで主観的感想) ・UIテーマで黒背景に白文字が選べてよかった ・Javaがデフォルト(C++はインクルード可)はいただけない ・開発できるアプリがAndroid機専用なのがいただけない ・個人的には ◎VisualStudio(でも、Linuxでは使えない) ○KDevelop △MonoDevelop ×AndroidStudio(自分の用途に合わない) Android StudioがAndroid開発に特化されてて文句言う奴初めて見た >>792 普通にC++開発ができて強力なデバッグ・解析ツールが付いていれば、喜んでAndroid Studioで開発して、gccでコンパイルするんだけど、そうできないって言ってるわけ >>793 Android Studio開発元のJetBrainsはC++の開発環境としてCLionというIDEを販売している。 JetBrainsからすれば、そういう使い方ならCLionを買ってねというところだろうね。 CLion年間$199.00(約22,000円/年) 買おうと思い立つだけの魅力を感じない 2016年7月IDE人気ランキング(マイナビ) http://news.mynavi.jp/news/2016/07/01/241/ 1.VisualStudio 23.46% 2.Eclipse 23.34% 3.AndroidStudio 10.0% 2017年11月IDE人気ランキング(PYPL) http://pypl.github.io/IDE.html 1.Eclipse 26.08% 2.Visual Studio 20.14% 3.Android Studio 9.61% とあるが、拮抗しているEclipseは、数年前に触ったことがあるが やたら機能が多くて、分けわかんないやになって、VisualStudio最強って感じになったけどなぁ おすすめのIDEってない? >>795 >CLion年間$199.00(約22,000円/年) 何を参照したのか不明だが正確には個人での購入の場合は 1年目 $89/year ただし1年で購入した場合、購入した時点のバージョンをずっと使用できる。 IDE人気ランキングは無償で多機能なものが上位にくるのは当然だろう。 Visual Studioは特別だし。 それから考えるとAndroidに特化している Android Studioが3位なのは 検討していると言えると思う。 無償で目的外で使用しているIDEにぶーたれるような人間には知っていても 紹介しないだろうな。正直上から目線は鼻につく。 というかランキングなんて見てる時点で目が点 IDEが持ってる機能を理解してないってことだからね 「このIDEでは○○ができます」と言われても○○がなにかわからないから評価できない 「AA版は△△の機能がありBB版は□□がついています」と言われても比較できない 本当はプログラミングなんてできてないんだ プログラミングができないのはアイディーイーのせいだと思っていて、アイディーイーを変えれば自分はプログラマかなにかになれると思ってる 多機能じゃなくて一生使わないムダ機能をカットすることも大事 VisualStudio が評価されるのは Windowsアプリ一筋20年でブレないから だいたい IDE 気にするやつが SDLなんか使うな >>795 SDLの造詣を深めている開発者のインプレッションなんだったら参考にさせてもらう それはそうとEclipseは、そんなに色々機能があるかな。VSの方が多くない? 自分はC++ゲ制はなんとなく(旧版の)VSでやってるけど、VSの機能の1割も使いこなせてない気がする ところでPythonやりだすとEclipse便利だぜ。SDLはPythonからも呼べるらしいじゃん と思ったら、最近はVSでもPythonのプロジェクト管理ができるのか Eclipseはパースペクティブ切り替えが独特だったけど、最近はVSもそんな感じになってるのかな >>796 >無償で目的外で使用しているIDEにぶーたれるような人間には知っていても紹介しないだろうな。正直上から目線は鼻につく。 何に言ったんだ?自分の用途に合うかどうか品定めしてるだけだろ >>798 >だいたい IDE 気にするやつが SDLなんか使うな 全く理屈が分からん >>799 >それはそうとEclipseは、そんなに色々機能があるかな。VSの方が多くない? 説明が下手だった。VSは新規プロジェクト選んでC++選んで、最後にF5押せば雛形のアプリが動いたけど、EclipseでC++を動かそうとしたらいろいろ調べないといけなかった 個人的には、操作が複雑なIDEは苦手意識がある google画像検索で、"doxygen 呼び出し関係図"や、"visualstudio 呼び出し関係図"とするといろいろ画像が出てくるけど、 こんな機能が付いてる無料のIDEってないのかなぁ? >800 失礼した。無償のIDEしか話題にしてなかったあんたが、 ビジネスプランで購入しようするとは思わなかったよ。 それともよく読まなかったのかな?まあ、お互い様だけどね。 商用ツールを確保する責任が出てきた場合、真っ先に思いつくのが無料ツールだからな >>803 それは分かる Windowsのウィンドウ生成なんて仕様のしわ寄せの塊だからな あれをそらで一からフルスクラッチできるほど、仕様の勉強と習練に時間は避けない しかし海外メジャー系なら、中にはそういう凄腕のスタッフもいるのかな・・・ >>805 よく読んでませんでした。 てへぺろ(・ω<) >>806 偏見かもしれないけど、インドのプログラマって、 カースト制度で迫害されている人とが立身出世って感じで ガンバってるんじゃないかなぁと思うわけ、 そういう人は、すごく努力して、なんでそんなことまで知ってんのって 思うぐらい知識深めてると思う それと、分かってくれてありがとう。ちょっと安心した。 こんなの見つけた。 オープンソース3Dゲームエンジン http://armory3d.org/ アップルと言えばimac proが話題だね。 世の中が狂ってるのか?、オレの認識がずれてるのか?、あの値段設定は狂ってる! 消費税だけで、オレの自作PCがもう一台作れるじゃないか。 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 40RAIIHLY8 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる