その過去スレってどんどん伸びていったらどうなるの?
普通は前スレじゃね
ゲ製でそんな心配無用だろ
普通は過去スレ保管したwikiかなんかを用意するものだが不要だろ
>>4 あーこういうこと気にするプログラマいるいるw
気持ちはわかるんだが
そういう未来を無視した結果、2000年問題とかが発生したりするので
プログラマとしては正しい姿勢だw
2D描画のミップマッピングに対応してくれないかなぁ
画像を1/2以下に縮小して描画するとどうにもジラジラしちゃう……
直接DirectXでプログラム組んだことがないから的はずれなこと言ってるかもしれないけど
リニア縮小とか出来ないの?
縮小率が決まってるのなら、最初から縮小画像用意すればいいんじゃ。
俺はミニマップ表示させるのに、マップ全体のミニ画像を1枚用意して使ってる。
やっぱりそうなるかなぁ
一応手動で作った縮小版画像を自動的に読み込めるようにはしてるんだけど、描画の方も組んでみるかー
あらかじめ作っておくならわざわざデータで作らなくてもプログラムでバイキュービック縮小かけた奴作って持っておけばいいよ
>>15 描画可能なテクスチャを作って、それに元画像を縮小描画したものを試したことがあったけど
白い画像とかが縁が黒くなっちゃうんだよね……
求めてるミニマップのデザインによって色々だと思うよ。
ものによっては必然的に
>>13になるし、
>>15で済む事もあるし。
マップエディタ作って製作するかしないかでも違ってくるね。
>>16 複雑な計算で小数点以下が落ちて
16ドットで表示したいとき15.4になって15ドットしか表示しないみたいな
19 :
名前は開発中のものです。:2010/10/09(土) 01:07:30 ID:+qDWiRTl
20 :
名前は開発中のものです。:2010/10/09(土) 15:35:12 ID:CD66miFB
作者がツイッターでもやれば
有名になれそうだけど140文字でプログラムの説明は無理だな・・・
ちょっとリファレンスマニュアルにだけは隠し関数とかあってほしくないなあ
リファレンスマニュアルに隠し関数ってどういうことだ?
すまん語弊ありすぎた
隠し関数も全部包み隠さずリファレンスマニュアルには書いてあって欲しいなあと言いたかった
DXライブラリは導入の敷居の低さを重視してるから
これはこれでいいと思うよ。
俺もそれのおかげで入れたクチだし・・・。
隠し関数もヘッダファイルとそのコメント見れば大体機能分かるしね。
隠し関数は結構な量あるからリファレンス整備するだけでも相当手間かかっちゃうんじゃないかな。
まあ最初は使い方が難しかったり不安定だったりするものだけだったんだろうね
それが今は巨大になってしまったと
幾つか分からんのがあるのは説明して欲しい
シェーダーとか
解るやつまとめてどっかに解説サイトでも作ったら?
わからない部分はだれかが教えてくれるかもよ。
28 :
名前は開発中のものです。:2010/10/10(日) 23:44:12 ID:VsGQPTmP
うぃき
29 :
名前は開発中のものです。:2010/10/11(月) 14:33:16 ID:SCuDoG9V
Alt+F4キーでウインドウが閉じるのを無効化するにはどうすればいい?
やめてください
みんな迷惑します
ウィンドウプロシージャをフックしてAlt+F4が押されていたら無効化する。具体的な方法はやったことないからしらん。
終了時に確認ダイアログ出すだけでいいじゃない
終了時に確認ダイアログ出すのだけはやめてください
終了するためにAlt+F4押すのに確認いらないです
でもそういうゲームは多いよなw
なければ文句言う奴の方が多いだろうな
なんらかのトラブルで、操作が不能になった時、
ALT+F4で強制終了させようとしたら
確認ダイアログがでて、操作不能だからダイアロク操作もできなくて
終わらせる事が出来ない、となってむかついた事がある。
説明書がすごく煩雑なのに、ゲームの終了のさせ方が特殊(Alt+F4もうまく働かない)なSTGがあったなぁ
DXlib作品ではないけど
通信メインのゲームとかでもない限り強制終了はスパっとさせて欲しいかな
らじおぞんでと見た
タスクマネージャーがあるじゃない
それバグってんだろw
SetWindowUserCloseEnableFlag関数で閉じるボタン無効にできるな
なんのためのALT+F4なのかって話になるね。
単にゲームを終了させるだけなら他のキーに割り当てればいい。
緊急事態に問答無用で一発終了させられるのがALT+F4の強みなのに
その機能を殺すとか、本末転倒もはなはだしい。
Alt+F4はうっかりでは押さないけど
クリックゲーだとうっかりペケポン押しちゃうんだよ
45 :
名前は開発中のものです。:2010/10/13(水) 18:21:14 ID:uFzeiFNk
>>42 あのね、うん。
俺中2でね友達に「ウイルス作ってー」って言われたんだよ。
でも、DLLの書き換え方とか知らないしwhileとCheckHitKeyでEnterを50回押さないと
ウインドウが閉じないやつ作ったんだよ。
それをパソコン部で披露したらみんな「すげー」とか言ってくれたんだけど
ウザい奴がAlt+F4で強制終了させてきたんだよ。ニヤッって顔して。(こいつprintfすら理解できなかったバカなのに)
だからそれを何とかしたい。
sage進行なんですね
無視してすいません
C言語の知識とPCの知識は違うし、知識として何かを知らないから馬鹿ってことはない
まぁウザい奴なら貶したいのはわかるけど
ソフトの終了時に、フラグが立ってなきゃ、自身を起動するってのが一番楽だと思う
>>45 alt+F4封じてもタスクマネージャーでアウアウな気もするけど、いい機会だから色々思考錯誤してみると楽しそうだね
一時期そういう「ジョークソフト」流行ったよね
DirectXのスレって事ですし、フルスクリーン時にAlt+F4が効かないのは確かにウザイね。
ウィンドウモードの時 →終了しますか?ダイアログ出して確認
フルスクリーン時 →強制終了させる or ウィンドウモードに戻す
こんなのが優しいんじゃないか
>>891 合計見たら0.66だったわ
てかアプデ再起動かよクソが
誤爆った死にたい
イインダヨ
DXライブラリで著作権表示守ってる人あんまいないよなぁ……
libpngやzlibは配布元は「強制じゃないよー」とは言ってるけどDXライブラリの規約として、
機能を使ったら著作権を表記してください、って書いてるし
OGGに関しては元のライブラリが組み込み時ライセンス表記しろー、って言ってるわけだし
表記しやしょうぜ
libpngやzlibはそれぞれの作者の意向を最重要視するべきだろ。
その部分についてはDXライブラリの作者が強制するほうがおかしい。
強制ってほどの感じではないが、トラブル回避用って感じであまり深く考えてない印象があるな。
自分は乱数周りしか使ってないから、MT法のライセンス表記だけあれば良いのかな…
readmeにでも書いておけばいいだけだったよな?
ひょっとしてやってないヤツいるのか?
ぎくっ
やってなかったわ・・・
ユーザがライセンス違反しないように、リソースでうめたりシステムにホットキーで表示するような機能をいれこんどくのが親切ではある。
例えば自分の作ったゲームでは、
JPEG/PNG画像の読み込みや、OGG関連の関数を使っていないとする。
こういう場合でも、デフォルトのDXライブラリを使ってる限りはバイナリに結合されるから、
著作権表示を記載しないと駄目……だよな?
不安なら全部書いとけよw
あわよくば記載しないでもいいのでは・・・みたいな貧乏根性はマジでトラブルの元だからちゃんと書け
コピペしとけばいいだけなのに、なにを面倒がることが。
>>60-62 いや、面倒とかって話じゃなくて、
改めてDXライブラリの公式を確認してただけなんだけども。
〜の機能を使っている場合は表記してね、って書かれ方をしてたから
ちょっと気になったんだ。
本家で聞いたら?
本家の解答じゃないとなんにもならないと思う
心配なら自分がただコピペしとけばいいだけだろ。
なんでもかんでも人にあまえて世話かけんな。
>65 本家の話じゃねーの?
これさ、白コード取得するとさ GetColor(255, 255, 255) = 0x FF FF FF FF となるのに
白ドットのコード取得すると . GetPixel(x, y) = 0x 00 .FF FF FF となってややこしいわ
これのせいでバグでちょっと苦しんだぞw
龍神録の弾画像を使ったゲームが多いのはなんでだろう……
弾画像くらい自作したらいいのに
コピペ世代。
ドラクエTのようなものを作りたいのだけど
なんでも質問の所だけだと中途半端な気がしてきた
コードを書け。グラフィックスを描け。SEを作れ。BGMを創れ。
は な し は そ れ か ら だ
先生!コードの書き方がわかりません!
マップと戦闘シーンだけ作れてしまえば、後はなんとでもなりそう
Cがいいね
C#で使うならどのDXライブラリが一番いいの?調べると結構個人改良のあるよね
公式以外はここで取り扱っておりません
一応100%カバーしてるし最新のバージョンのものが使えるから公式一択。
ただし明らかにラッパーが間違ってたり欠けてるものがあるので
自分で対処できるスキルは必要。
初心者なら使わない方がいいと思う。C丸出しのインターフェイスなのでC#の勉強にもならん。
誘導されたので質問します
VC2008でDXライブラリを使用しています
PlayMusic命令でMIDIファイルが再生できません
0x4b7e2bd8 で初回の例外が発生しました: 0xC0000005: 場所 0x4b7e2bd8 を読み込み中にアクセス違反が発生しました。
というエラーで出力が埋め尽くされています…
どなたか解決法を知っている方はございませんでしょうか
1回呼び出せばいい所を毎ループ呼び出してるとか
>>74 マリオ風アクションの項目がめちゃくちゃ参考になった、ありがとう!
XNAから来ました。
とりあえずモデルを表示してみたくて下記のように書いてみたんですが
線は出るんですがモデルが表示されません。
どこか問題があるでしょうか?
//初期化
DX.ChangeWindowMode(1);
DX.DxLib_Init();
//カメラ
DX.SetCameraNearFar(0.1f, 150.0f);
DX.SetCameraPositionAndTarget_UpVecY(DX.VGet(0f,0f,100f), DX.VGet(0f,0f,0f));
//箱
int h;
h = DX.MV1LoadModel("box.mqo");
DX.MV1SetPosition(h, DX.VGet(0.0f, 0.0f, 0.0f));
DX.MV1DrawModel(h);
//線
DX.DrawLine3D(DX.VGet(-10.0f, 0.0f, 0.0f), DX.VGet(10.0f, 0.0f, 0.0f), DX.GetColor(255, 255, 255));
DX.WaitKey();
DX.DxLib_End();
3D知らんけど光当たってないんじゃないの?
>>84 ありがとうございます。
DX.SetLightDirection(DX.VGet(0f, 0f, -1f));
とやったら表示されました。
初音ミクを表示してみたんですけど
あまり綺麗に出ません。ちょっと崩れます。ミクとはわかります。
どこが問題でしょうか?
//初期化
DX.ChangeWindowMode(1);
DX.DxLib_Init();
DX.SetDrawScreen(DX.DX_SCREEN_BACK);
DX.ClearDrawScreen();
//ライト
DX.SetLightDirection(DX.VGet(0f, 0f, 1f));
//カメラ
DX.SetCameraNearFar(0.1f, 500.0f);
DX.SetCameraPositionAndTarget_UpVecY(DX.VGet(50f,50f,-50f), DX.VGet(0f,0f,0f));
//線
DX.DrawLine3D(DX.VGet(-50.0f, 0.0f, 0.0f), DX.VGet(50.0f, 0.0f, 0.0f), DX.GetColor(255, 255, 255));
//箱
int h;
h = DX.MV1LoadModel("初音ミク.pmd");
DX.MV1SetPosition(h, DX.VGet(0f, 0f, 0f));
DX.MV1SetScale(h, DX.VGet(2f, 2f, 2f));
DX.MV1DrawModel(h);
//フリップ
DX.ScreenFlip();
DX.WaitKey();
DX.DxLib_End();
崩れるってのがわからんけど、トゥーン用のテクスチャ用意してないとか?
pmdの注意書きっぽいのはリファレンスのMV1LoadModel
89 :
名前は開発中のものです。:2010/10/22(金) 21:06:00 ID:J0eORwEn
わからん
本家の掲示板に似たのがいる。↓のレスみてみれば?
3Dモデルが上手く表示されない
>>90 うわっ!
かなり綺麗に表示されました!!
ありがとうございます。
あと少しです。目がおかしいorz
DX.MV1DrawModel(h);
DX.MV1DrawMesh(h, 5);
としたら目も表示されました。
なるほどメッシュを書く順番も考えないといけないのか。
しかしモデルを描画する順番ってモデルファイル自体に入ってないんですかねー
メタセコならあったと思うけど
95 :
名前は開発中のものです。:2010/10/23(土) 18:42:20 ID:vt0DlvMi
4)本ソフトウェアの出版権、公衆送信権、または本ソフトウェアを含む二次的
著作物への著作権の許諾等の権利は、すべてインターネットに帰属します。
5)インターネットは、レンタル業による本ソフトウェア製品のレンタルによる
使用許諾は一切認めていません。
6)インターネットは、本ソフトウェア製品を中古品売買を仲介業とする業者へ
譲渡することを一切認めていません。
7)本ソフトウェアの全部または一部をインターネットの事前の了承なしに第三
者に再配布、使用許諾、公衆送信または可能な状態にすることはできません。
インターネット?なにこれ? にこ動画の無料動画作成ツールの同意書なんだけど
>>95 誤爆だろうけどちゃんと最初から隅々まで読みなさいよ
会社の名前が「インターネット」でしょ
株式会社インターネットの商品だから
98 :
名前は開発中のものです。:2010/10/23(土) 18:46:26 ID:vt0DlvMi
(株)インターネットだろJK
これ書いたの小学生か
まぁ、使うけどwwwwwwwwwwww
これはひどい小学生ですね!
ほんとに酷い小学生だなw
これが噂の闇プログラマか・・・ゴクリ・・・
詐欺ってるだろうけど
他にすることナッシング
今までマップを選択式にしてたんだけど、Googleマップのようにマウスドラッグでグリグリ動かしたくなった。
画像をマウスでドラッグするやり方すら危ういんだけど、こういうサンプルや考え方を載せてるサイトありませんか?
ドラッグ開始位置と現在位置さえわかれば楽でしょ
半ダッシュはもうちょっと目の前の箱を活用したほうがいい
107 :
名前は開発中のものです。:2010/10/29(金) 06:07:31 ID:Zgu4501s
2D特化の頃のDXライブラリで作ったゲームを修正したいと思っている。
スコア表示などを除いた、ゲーム画面全体を拡大/縮小したり、回転したりしたい時は、
どのような方法をとるのが簡単だろうかか?
2D描画関数をラップして、1つ1つの画像の位置/角度/拡大率を計算しようかとも考えたが、
そこまでやるなら3Dベースで書き直したほうが楽かな? 3Dの勉強もしなきゃならないけど。
どう考えても前者の方が楽そう。
もとのサイズのレンダリングターゲットに一旦レンダリングしてから
拡大回転してからバックバッファに転送すればいいじゃない
俺もその方法
複数のウィンドウサイズで動かすために、
描画は描画可能なテクスチャに全部してから、バックバッファに拡大して貼りつけてフリップしてる
個人的な要望なんだけど、DXライブラリでゲーム作ってる人はサボらずにマルチ解像度かフルスクに対応してほしい
最近フルスクにできないゲームが多くてちょっとストレス
111 :
107:2010/10/29(金) 11:53:34 ID:Zgu4501s
要は、既存のバックバッファ以外に、
もう1つバッファを用意するってこと……だよな? たぶん。
リファレンスやDxLib.h眺めてるけど、どうやれば良いか分からなかった。
>>110 自分の場合は、フルスクリーン化&デュアルディスプレイ対応は実装してる。
開発環境がデュアルだから、ゲーム画面はセカンダリのモニタに映した方が楽だったり。
解像度変更は、拡縮なしで作ったらすげぇ面倒だった。
デバイスに直アクセスして自分で叩く
空のグラフィックを作ってそこに全部描画して、描画し終わったらそれをバックバッファに拡大して描画してバックバッファをフロントにフリップして描画
をやりたいのにできないどうしたらいいの
今は直接バックバッファに個々のグラフィックを拡大描画して対応している。描画の命令の実行回数が多いせいで処理時間が無駄にかかっているように思う。
115 :
107:2010/10/29(金) 13:06:10 ID:Zgu4501s
うまくいきませんが何がまずいんでしょうか。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// 初期化
ChangeWindowMode(TRUE);
SetGraphMode(256, 240, 16, 60);
if( DxLib_Init() == -1 ) { return -1 ; }
// バックバックバッファに描画
int back_back_buffer = MakeScreen(128, 120);
DrawBox(10, 10, 128-10, 120-10, GetColor(0, 0, 255), TRUE);
// バックバックバッファをバックバッファに描画
SetDrawScreen(DX_SCREEN_BACK);
DrawExtendGraph(0, 0, 256, 240, back_back_buffer, FALSE);
// バックバッファをフロントに描画
ScreenFlip();
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
SetDrawScreen(back_back_buffer);
こうじゃないの?
SetDrawScreen(back_back_buffer);
を追加したらできました。ありがとうございました。
SetDrawScreenにそんな使い方もあったのか
稀に対応してない環境もあるらしい
が、もうそんな環境は無視していいよなー
むかしはそれやるときにSetCreateDrawValidFlagとかそんな名前の関数叩いたな。関数名うろ覚えだが
フルスクリーン切り替えやろうとしてDxLib::SetUseASyncChangeWindowModeFunction使ってみたんだが、
最大化ボタンでフルスクリーンになるのがなんか嫌だ。
WINAPI使っても最大化ボタンをオフに出来なかったし。
C#用のライブラリを地道に作ってたけどコメント整理するのが面倒過ぎて止まったw
先にゲーム作ってしまえば良いのねん。
出来上がったら、そこから汎用的な部分だけ残して削除するのねん。
汎用的な部分というか、公式のライブラリを名前空間とクラスで分けて、エラーを例外投げるようにして、
定数を列挙体にって感じなんだよ。
とりあえずコメントは無視してタワーディフェンスでも作るかな。
C#への乗り換えを少し考えてるんだけど
ライブラリ自作してる人が結構いるって事は公式にあるC#用のライブラリだとやっぱり出来があんまりよろしくないんだね
C#は言語仕様だけをさらっとしかやってないんだけどなんで公式のC#ライブラリは避ける傾向にあるの?
基本的にC向けのと同じだよ
C#やってるとわかるけど、一般的なC#の小奇麗なライブラリと比べると浮きまくりで気持ち悪いことこの上ない
つまりC#で使えるようにしただけでC#向きにしたわけではないてことかしら
挑戦してみようかなーどうしよっかなー。
C#に限ったことじゃないけど、DXライブラリの関数を直接使う箇所は最小限にとどめる
それができてれば全然問題ないよ
全部一つのクラスに突っ込まれてるからインテリセンスが凄いことになってるw
自前で軽くラッピング
mp3の再生しようとすると読み込みでゲームが止まるんだけどどうしたらいいの
まずMP3をゲームで使うためのライセンス購入します。
最初から読んでおくか
読み込みを別スレッドに投げる
メタセコで3Dモデル(人型)を作ってみたんだけど
どうやって手を動かせばいいのでしょうか
どうか教えてください
>>135 keynoteっていうプラグインを使えばおk
ただしメタセコイアは課金しないとプラグイン使えないから注意
>>136 結局フリー版は使い物にならないよね、UV展開も出来ないし
3D作りに限ってはちゃんとお金出さないと
めちゃせこいや!!!
3D作りてぇなぁ
ここんとこ2Dの練習ばっかだ
DXライブラリに特化した開発環境て需要あるかな?
プロジェクトごとの設定とか不要で、ライブラリ自体も同梱されてるような。
初心者は開発環境だけインストールすればすぐプログラム始められるようなやつ。
もう存在する?
そんなのヘッダー1つ書くだけじゃん?
DXライブラリを更にラップしようっていうなら無駄すぎる
言語の敷居を低くする方向しか受容ないかと。
DxLibはc, c++前提なんだし、そこに躓く奴用って話。
つまりHSPみたいな?
俺が考えた最強に汎用性のある構造体とかが宣言されてる感じかな
引数が関数ポインタなのは使いづらいな
実際、DXライブラリを使おうとすると
俺フレームワークでラップしまくりではあるんだが。
all-in-one-dxlib…… まず再配布できるC/C++コンパイラ持ってこないと駄目じゃないか?
vc入れてdxlib解凍するだけじゃん
DXライブラリをラップしたライブラリくらいしか無理だろ
しかもそんなの作るならDirectXをラップした新しいライブラリでも作れって話で・・・。
VCのテンプレートとかスニペット作ればそれなりに楽になるかもね
いや、ちょっと思ったつぶやきにレスサンクスw
あのインクルードディレクトリを指定したり、文字セットを設定したりがさ
ゲーム作りたいって初期衝動だけでVCインストールした初心者には
めんどくさい&折れるきっかけになるんじゃないかと思うんだよね
そこ抜ければファミリーベーシック並の世界が待ってるのにもったいないなと
そんなので躓くならプログラミングなんか無理ってのももっともなんだけど
すでにファミベ並みに簡単かと・・・
「今夜は寝かせないんだから」
谷はそういって服を脱ぎ始めた。
亮子はいつもそうだった。自分勝手で、わがままで。明日、試合を控えてる俺の事情などそっちのけで
子作りしたいなどと。まったくこまった奴だ。
でも、今日は許してあげようかと思う。最近ご無沙汰だった為、亮子はご機嫌斜めだったしな。
いやと言ってもやめてくれなさそうだし、諦めて夜のお勤め、させていただくとするか。 俺は服を脱ぎ始めた。
真っ赤にほてった亮子の素肌は、柔道家とは思えないきれいな肌だった。
カラダには無駄な肉は付いてないし、引き締まっててナイスボディだ。
裸体の谷も、柔道家の谷も、妻としての谷も、どれも俺は好きなのは知っていた。しかし、やはり郡を
ぬいて今の亮子は素敵だ。 なんつーのはいつも言ってる言葉か。 少し笑う。
いきり立つ俺の息子は、亮子の裸体に反応していた。それをみかねた亮子は、そっと
手でさすり始めた。 いや、しごきはじめた。が適切だろうか。 手コキだ。
くちゅくちゅと、唇で息子の先端をいやらしく吸っている亮子は、どこか激しかった。
ルビーのように赤くなった俺の息子は、激しい攻めに負け、一本とられてしまったようだ。 僕は射精した
単純な命令、少ないシステム関数、だから簡単かと。
ゲームも作れるってだけで
ゲームのライブラリっぽくはないな
簡単なんだけど関数だから自前で用意しなくちゃいけないことが多々ある
それが良いんだろうけど
イメージ的には
開発環境起動して新規ボタンをクリックすると白紙が現れて、すぐそこにDXライブラリの関数を使ったプログラムを書いてゆけるような。
実行ボタンをポチっとするとコンパイルして実行されてさ。
あとはライブラリ関数のリファレンスがヘルプに実装されてたり。
初心者が意味不明&使わないような機能は極力排除した、万能ではないけどシンプルで直感的にわかりやすい開発環境。
チラシの裏ですまんw
極端な話、ツクールが作りたいわけでしょ。
まぁ頑張って。
メモ帳にコード書いてアイコンにドロップするだけで実行ファイルが作成できる
LGPという言語(BASIC)がある。
機能はDXライブラリと同等だが、バグ等のサポートがいまいち。
ぶっちゃけ、C/C++で書く時点でこれ以上簡単にするのは需要ない気がするけどな。
簡単に表示させたいだけならHSPとかでいいべ
ツクールでいいじゃん
ツクールってRubyで基礎から開発できるんじゃなかったかな
eclipseで環境作って固めれば出来上がりじゃないの?eclipseでDXライブラリ使えるか知らんが
そっか。
ゲームプログラミング自体の壁はDXライブラリが十分下げてくれたから、
プログラミングをスタートするまでの環境作りの壁をさらに下げられないかと思ったんだけど、
手軽にゲーム作り始めたいだけなら、方法はそれこそツクールも含めて他言語とかいろいろあるもんね
俺がCの勉強初めたとき入門書の終わりまでやってもグラフィカルな処理のことが出てこなくてショックうけたんだよね。
DXライブラリで出来るようなことがCの命令文として有ると思ってたから。
だったら、最初からC言語にDXライブラリが含まれているかのように扱える環境があれば初心者の夢も膨らむんじゃないかと。
まあ、そのかわりにC言語の姿を歪めて伝えてしまうことになるけど。
他の手軽な方法については考えがおよばなかったw
つまらん雑談につきあわせてスマンかった
>>162 分かる気はするね。
実際、「Cの入門書は読み終わりましたが、これで何が出来るんですか?」みたいな質問は多いみたいだし。
初心者はこれを最初に作れってゲームも無いしな
ブロック崩しとか作っても退屈だし、あんまり勉強にもならないし
色々要素足して勉強になるブロック崩しを作れるならもう初心者じゃないし
CUIゲームでおk
初心者はSTGを作れ
いやならすんなボケ
そんなつまらんレスよこすなよ?
>>162 初心者だろうがどうでもいいけど、みんな3Dゲームを作ってみようと思わないのかな
DXLibアップデートで3Dに対応して1年以上経つのに未だに3Dやれる人が僅か、弾幕シューやブロック崩しでは虚しくないかな
ゆとり言語と馬鹿にされてるHSPやXNA(C#)でさえも3Dでセミプロ級の作品作る奴らゴロゴロ居るのに
何のために難しいC/C++言語学習するのか疑問に思う、DXLibユーザーはレベル低いのばっかりなのかな
少なくとも俺はレベル低い。
2Dがやっとだ。
日本は2Dの文化だし仕方ない。
3Dゲー作るなら慣れてる人間はDXライブラリじゃなくてももっと充実したミドルウェアライブラリ使う
そういうのがわからない初心者にはDXライブラリを使った3Dプログラミングのチュートリアルとか解説が必要だろうけど……そんなもん無いだろ?
バグとり いやだもん
C言語オンリーでゲーム作ろうと思うやつなんていないだろ
必然的にフレームワークが必要になる→DxLibの必要性に疑問を持つ
→自前でAPI叩く、もしくは統合ライブラリに移るんじゃないの
ごめんDxLibも統合型だった
オブジェクト指向の統合ライブラリで通じるだろうか
DxLibはオブジェクト指向ではないでしょ
Cだけで組めるのを売りにしてるからしょうがないっちゃしょうがないけど
>3Dゲー作るなら慣れてる人間はDXライブラリじゃなくても
>もっと充実したミドルウェアライブラリ使う
DXライブラリをディスる気は微塵もないけれど、確かに
できる人とできない人の両方が使いにくい部分があるので
使う人を案外選ぶ部分はあるかもしれない。
HSPとかに比べると、より低レベル(より知識が必要という意味。
たとえばZソートとかも自分でやらないといけない)なので
3Dのキャラクタを表示する、動かすという意味では
初学者にとっては、ステップが多くなり敷居が高い部分がある。
一方DirectXを直接触るのに比べると、非常に楽な部分もあるけれど
シェーダーとかマルチテクスチャとかで、ポテンシャルが制限されて
しまう部分もあるので、上級者の人は使わない。
という部分はあるように思う。
もっとも口を動かすよりも手を動かさないとダメというか
各自が好きな方法で作りたいものを作ればいいんじゃね?
というオチになるわけだけど。
3Dの管理なんてそもそも面倒が増えるだけでゲームとして2Dより優れるとは限らんから
なにか3Dでしかできない画期的アイディアを実現したいなら3Dもありだろうけど、2Dで補えるのがほとんど
>>176 まさにこれだな
ゲームライブラリとしては機能が足らない
特に3DゲームをDxLibで作るとなると自前実装が多く、敷居が高まってる
が、勉強にはなる
3Dで作るのならSource engineとか使うかな
MODでも完成するのに数年かかったりしているところを見るとベースから自作する気がしない・・・
3Dゲーにまず興味沸かないっていうね
仕方ないよ。作ってるのがスーファミ世代ばかりなんだから
3Dはゲームって感じがしない。あれはシミュレーターだろ?ジャンルが違う
DXライブラリの3Dって、低レベル(知識が必要という話)なのか。
それはそれで勉強になりそうだし別にいいけど。
下手に簡単に作れる独自機能を追加すると、他のライブラリやDirectX直叩きに
移行したときにその知識が役に立たなくなるしな。
作者も相当そのことを考えてるように見える
ライブラリ → ラッパーとか? 使ってはいない
>>181 俺、同意w
家族持ちの会社員の趣味に使える時間じゃ、スーファミどころかファミコンレベルでちゃんと完成させてくくらいがちょうど良い
出来たゲームがつまらなくたって、作る過程がどんな大作ゲームより面白いからハマる
3Dゲーム好きだし作りたいけど、2Dでさえ苦戦してるので当分手が出ない
3D機能を使って、2Dゲームを作るととっても楽だよ。
おっさんな自分も同意できてしまうから困るw
スーファミとか2Dのドット絵のゲームばかりしてたから
近頃の3Dゲームは映画観てるって気がしてしまう
背景だけ3Dでいいんじゃないか
あとSTGだと最初に自機が発進するところとか
勉強としては面白いよね
学生のころ三次元座標を画面上の二次元座標に投影する方法を図書館で必死に調べて
98のベーシックでワイヤーフレームの飛行機を動かしたのとか良い思い出
でも、あれをゲームレベルで今やる気力はないw
情熱で突っ走れる若いもんが頑張ってくれ
俺たちにはまだまだやり残したことがあるんだ。
2Dにな。
STLのlistでクラスオブジェクトを管理する
ブロック崩しを作りました!!
でもSTGはもっぱら駄目です
次の段階へあがるために作るべきゲームを教えてください
よし、STLのlistでクラスオブジェクトを管理するSTGを作るんだ!
エロゲ
DxLib用の便利な拡張ライブラリを作りたいな
十分便利じゃん何が不満なのか言ってごらん
物理エンジン
AIエンジン
自然環境エンジン
マップエンジン
そういうのを自分で作るのが面白いんじゃないか
>>199 それを言ってしまうと、DXライブラリの存在価値が無くなる。
他人と共有することで新しい発見があるかもしれんだろ
わざわざ独立して存在し得るライブラリをDxLibに依存させる意味がない。
DXライブラリは、DirectXを使う際に必要な煩雑な手続き、お約束を代わりにやってくれるだけのものなんだろ?
俺はおかげでWindows環境でゲームが作れるようになったから、それだけでいい。
ただ、俺のプログラミング知識は独学で我流だから、効率悪くて、
他の人がどんな事やってるのかは非常に気になる。
もちろんぐぐればサンプルソースは見つかるけど、そういうサンプルって大抵が
最低限以上、の事まで書かれていて、どれが本当に必要な事なのかが判断つかなくて
結局参考にならなかったりする。
自分のゲームフレームワークに組み込んで使うのが一般的じゃないの
>>202 DxLibを使う以上どうしても依存してしまうものも多数ある
例えば描画を拡張した機能(グラデ文字やx,y別の伸縮回転描画等)や、
MessageBox等のDxLibが内包してるパラメータを用いる必要があるものなど
海外のゲームエンジンが強いのはそういう運用上の実例が非常に多いから
じゃあ作ればいいじゃん
期待はしないぜ。ここでぼやいてるぐらいだからな
なんで海外の話が出てきたか知らんが便利関数くらいならサクッと公開すればいいじゃん
ここにリンク貼れば誰かがダメだししてくれるだろう
無料で作成とか誰がするの?w
DXライブラリの作者は無料でやってるが。
無料で作成とかだれがするの?
(無料で彼は作成するつもりなの?)
(無料で俺が作ってやるとでも思ってるの?)
さあどっちだ
>>177 3D控えて2Dでやるにしろ、システムやアイディア面でもスーファミどころかファミコン時代のレベルいうのは嫌かも
少なくともニコ動の作品見る限りそんなのが多い
RPGは未だドラクエ風でターン製コマンド、ボンバーマン、スーパーマリオ式アクション
HSPですらテイルズオブ式システムやFPS・ARPGを作れているのにC++使えてどうして?って言いたくなる
>>163みたいにC言語の入門書読み終えても何が出来るの?っていう理屈もよくわからない
VBだと入門書読んで3ヶ月も勉強すれば画像処理のアプリは作れそうなんだけど
C/C++って最高に優れた機能を持ったプログラミング言語の筈ではなかったのかな
言語とライブラリは別だ
C++はそれだけでは何も作れない
言語の中で普通に標準ライブラリー仕様も規定されているんだけど
C言語は素人に対して難しい。
他人のコードを読むことが出来ないから
Cは難しくも簡単にも書ける
ある意味で 汎用アセンブラでもある。
>>213 VBの言語仕様にGUI関連なんか含まれてないぞ
HSPはちゃんとした言語仕様があるわけじゃなくて実装先行なので話が別
>211がC/C++経験者の発言には見えない
DXライブラリの話じゃないの?
えと、つまり
「C++はすぐれた言語のはずなのに、DXライブラリという足かせを使ってるばかりに
DXライブラリで作られたゲームはどれもHSPにすら及ばない物ばかりだ」
という意味だと思ったわけだが。
まぁ、俺の感想としては、ゲームの面白さを何か勘違いしてないか、って程度だが。
元の発言が無茶苦茶なのは分かったw
OSを書くための言語だからゲームだって何だって書けるよね ってのがC/C++
ぶっちゃけ、リアルタイムゲームにC/C++は向いてないです。
PS1時代から今までコンシューマゲームは全てC/C++で作られているんだが・・・
偏見かもしれないがゲーム作るならC/C++ってのは
マシンスペックが今みたいに高く無い時の風潮というイメージ。
偏見だな。
マシンスペックが高くない時代は、「ゲーム作るならアセンブラ」だ。
>>219>>221 こんな事言う人は珍しいかも
同人・インディーズでゲーム作りたいって夢見て勉強始める人が
言語と開発環境について質問すれば、90%以上がC++以外有り得ないって答えが来るよ
そして何時の時代もJava,C#,VBはゲームには向いていない、HSPはゲーム作れるけど初心者の勉強用で限られた機能しか使えない3Dは絶対無理だというのが大半の意見だ
そして否応無く多くの人がC++に挑んでいく
だからHSPコンテストやJava,C#製のゲーム作品見て疑問に感じるんだ
HSP単体では何も出来ない、Cで書いたDLLが必要になる。いずれ
Luaでいいよ。C++で足回りは実装するけどゲーム自体は別の言語に任せたほうが圧倒的に楽。
フルスクリーンにするとCPU使用率が跳ね上がるのは何故?
同じプログラムのChangeWindowModeでtrueとfalseを変えただけなのに。
マルチコアPCだからフルスクリーン中にタスクマネージャ開いてみて初めて気づいた。
一つのCPUがマックスになっとる。
多分VSync待ち
開発環境のキャパシティが作品のクオリティーに直結してるような言い方してるのが謎
>>221 別に同人・インディーズなんて縛りを入れたつもりはないんだが・・・
ブラウザゲーでもいいし、誰しもが3Dを触るわけじゃない。
レス内容だけ見ると3D使わないならHSPの方が良いように思えてしまう。
>>229も言ってるけど言語なんて作品内容と関係ないじゃん。
ましてDxLibはCインターフェースのDLLというあらゆる言語で扱いやすいモジュール配布してるしなあ
ん、C/C++で作られたすごいゲームなんてそこら辺にいっぱいあるだろ?
>>217に同意
DxLibで3Dを表示させて動かすとこまでは簡単
機能追加やツール作成して
それなりのゲームを作り終えようとするときつい
現時点ではね
3Dに対応して1年ちょいだろ、あせんなよ
DirectX自体がc形式のインターフェイスで公開されてて、
dll自体、c形式のインターフェイス安定ですしね。
それとは別に幅広いハードで動くように想定するならば、安定してるc択一でしょ。
SDLやluaなんかそうだ。
>>214が書いてるようなcの可読性の話は、プリプロセスと関数ポインタ駆使みたいな所なんだろうな。
てかHSPってようするにインタプリタ型のベーシックだろ?
必要なライブラリは揃ってるみたいだし、作り手の需要にマッチすればHSPで作ればいい話だね。
正直、ゲームのコア部分を作れる人はどんな言語でも作れるでしょw
HSPは構造体と関数ポインタが無いから無理だった
コンピュータ言語も時代とともに変わっていくんだからC/C++もいずれは衰退するだろうけど、
少なくとも現時点では圧倒的な主流。ゲーム分野以外でも。
どうせ1から覚えて勉強するのなら、ほとんど同人ゲームにしか使われないマイナー言語よりは
C/C++をやった方が汎用性があって潰しがきく。
まぁ俺は一向に使いこなせてないわけだが。
各々のニーズに合わせてHSPかC/C++を選べばいいだけのこと
其々一長一短があるってだけでどちらがベターなんてない
>>230 >言語なんて作品内容と関係ないじゃん。
それじゃあJava,C#でもいいんじゃないのって事になるんだけど
でもJavaはゲーム開発に向かない、機能制限で高度な表現が出来ないから駄目って言われるから
より高度な作品を作るために無理してでもC++に切り替えようって言う人は沢山居る
そこでJavaでバリバリ3Dが使えてプロ並みの表現やシステムを見せられたら、どうして?って思っちゃうよ
Java,C#は本当にゲーム開発に使えない言語なのかって
Flashですら立派なゲームと言えるようなものが大量にあるわけで
>C/C++って最高に優れた機能を持ったプログラミング言語の筈ではなかったのかな
これは誰に言ってんの?
C/C++以外の言語でゲーム作ろうor作ってたら馬鹿にされて
それがDXライブラリユーザーだったって話?
んでニコ動の観たらしょぼいの多かったと?
LL言語がゲーム開発に向かないとかいってる人間は情報が古いだけだからほっとけ
まあ、ID:DSKqyxfpがネット上の古い書き込み(2,3年以上前)を見て勝手に勘違いしてる可能性もあるが
言語の機能どうこう言ってるのにC/C++って一括りにしてる時点で釣り
釣りに反応しすぎ
Xboxのインディーズゲームなんか全てC#だけどそこら辺のヘタなフリーのC++製ゲームよりはよっぽど上だろ
できる人は何使っても同じ。
うろ覚えだけどC#しか使えないんじゃなかったか・・・インディーズは
結局、使う人の問題だな
「この言語のせいでかっこいいゲーム作れない><
僕がダメなんじゃなくて言語が悪いんだ!そうだ!」
と言ってるようにしか見えない
まだこの話題続いていたのかよ
そんな当たり前のことを言うためにクドクド回りくど〜い言い回しでネチネチレスしてたのかよ
これだから日本人は
結論言えよ 小学校で作文書かなかったか?
「たしかに」って言って欲しいだけのレスが多い
やしがに。
屠る
言うはやすし、行うはたかし
ひらがなで見ると言いだしっぺのやすし君と、作らされるたかし君に読めた
にしこり
やすしはいつも口だけで実作業は全部丸投げだよ。たかしは文句も言わず面倒な作業を黙々とこなしてて偉いと思うね。
プログラマ的には正しいのかどうか迷うところだな、たかし
そんなやすしに、私はなりたい。
怒るでしかし
質問です。
7dot×7dotの画像を
DrawRotaGraphで表示させるのと
DrawRotaGraph2でcx,cyに3を設定すれば
同じ画像が表示されると思ったのですが
違う画像が表示されました。
同じ画像を表示させるようにするにはどうすればいいのでしょうか?
同じグラフィックハンドルを指定する。
同じグラフィックハンドルを指定してます
倍率、角度も同じ数値を設定してます。
そういうのはスクリーンショット貼ると簡単に状況説明できるんじゃないかな
同じグラフィックハンドルを指定してるのに違う画像が表示されるなら、
間にloadGraphが挟まってるか不正なメモリの書き換えがあるのかのどっちか
269 :
264:2010/11/24(水) 16:02:57 ID:/ysmMQ4v
http://deaimail.xii.jp/up/src/up2537.bmp 画像アップローダーに画像をアップしました。
・左から1番目はDrawRotaGraphにて回転しないで表示
・左から2番目はDrawRotaGraphにて45度回転して表示
・一番右はDrawRotaGraph2にて中心位置を3、3に設定し45度回転して表示
DrawRotaGraph( 22 , 40 , 1.0f , RAD(0) , GHandle1 , TRUE ) ;
DrawRotaGraph( 32 , 40 , 1.0f , RAD(45) , GHandle1 , TRUE ) ;
DrawRotaGraph2( 70 , 40 , 3, 3, 1.0f , RAD(45) , GHandle1 , TRUE, FALSE ) ;
DrawRotaGraph2F( 70 , 40 , 3.5, 3.5, 1.0f , RAD(45) , GHandle1 , TRUE);
floatつかったらいいんじゃないか
271 :
264:2010/11/24(水) 17:56:16 ID:/ysmMQ4v
>>270 DrawRotaGraph2F( 70 , 40 , 3.5, 3.5, 1.0f , RAD(45) , GHandle1 , TRUE);
でできましたありがとうございました!
真ん中のドットを指定する場合は
012「3」456
だと思ってました
偶数サイズの時はどーしてたんだw
偶数サイズにはしないとか?
274 :
名前は開発中のものです。:2010/11/26(金) 12:40:15 ID:8X19Ayep
DXライブラリでウィンドウを1280x780で表示してるときに
ツクール製のゲームなどを全画面表示にすると
DXライブラリのプログラムが終了する。
その辺はさすがにしょうがない気がする
何かが競合してるって事なのかな?
すいません。LoadGraphToResourceで強制終了する場合があるんですが何が原因か分かりますでしょうか。
プログラムは全く変更せずに、強制終了する場合としない場合があります。
VC++で強制終了時にデバッガ起動すると、
DxLib::GraphColorMatchBltVer2()という関数で落ちてるようなのです。
また逆アセンブル画面では
mov ecx,edi
という行で強制終了しているようです。
何か分かりますでしょうか。
どういう状況で強制終了する?
プログラム起動直後。
なぜかReleaseフォルダの中のexeをダブルクリックで実行すると落ちない。
そしてなぜか一度Releaseフォルダから実行するとVC++から実行しても落ちない。
再ビルドしてVC++から実行すると落ちる。なんでこんなことになるのかさっぱり分からない
またウィンドウサイズを変えて再ビルドしてVC++から実行すると落ちなくなったりする
不定メモリーアクセスで落ちてるんじゃないか?
環境で変わるのはその原因が多い
リソースが格納されている領域をどこかで壊しちゃってるってことですかねぇ
壊しているんじゃない、どちらかというと、初期化してない変数を読む。
変数でないところを読む。でしょう
今気づいたんですが、DXライブラリを新しい版に差し替える前はこのバグは全く発生してませんでした。
で、前のと差し替えてみたら案の定、全く強制終了しなくなりました。
DXライブラリを差し替えたことで壊す領域のアドレスが変わったのか、
ライブラリ自体のバグなのか分かりませんが、とりあえず前の版で進めてみようと思います。
具体的に、今の版と前の版とは どのバージョンとどのバージョンですか?
3.04から2.24c
俺も変数の初期化し忘れに一票
DXライブラリのバグだろうから公式に書き込め
バグの発生する最小構成のソース作ってな
まず最新版使ってみたらどうだ
ちょっとDebug版のDxLibでやってみたら、
DxBaseImage.cppの7961行目の
MOV EAX,[ES1]
で落ちてることまでは分かりました。
自分も、DXライブラリのバージョンを上げたら、実行画面のキャプチャが上手くいかなくなったことがあったなあ。
そのあたりで描画に関するシステムが変わったんだろうか。
バージョン上げたらそれなりにチェックしとかないと
後でハマることが割とある
フルスクリーンへの切り替えとか
2.24cって、内部がまだDirectX7の頃のじゃねえの?
まず環境を書くべきだと思うんだ
駅が近くてその割には緑も多く,結構住みやすい環境です。
3Dモデルにモーションつけても
各ポリゴンやオブジェクトって絶対位置データの羅列だよね
モーション以外の首の回転だけしたい場合、自分で回転軸の情報を持って
かつ首から先のデータもオブジェクトとして管理しとかないとだめ?
最初っからボーンでのモーション制御すれば
その辺は楽?
でもボーンからの展開をデフォにすれば処理増えるよね
ところでC#で使う場合、DXライブラリ本体の設定説明がない
C#パッケージの2MちょいしかないDxLib.dll と DxLibDotNet.dllと、DirectX本体だけでいいの?
10M超のC++用DXライブラリはDL不要???
DxLib.csもね
作者、C#版にXMLコメント付けてくれないかなあ
>>297 >10M超のC++用DXライブラリはDL不要???
ズバリ不要だよ、あれはDLLじゃないしVC++でしか使えない物
.NET用のものはDxLibDotNet.dll(マネージラッパー)とDxLib.dll(DLL化したネイティブライブラリ)の2つがあれば動作できる
ちなみにD言語やほかの言語使う人はC#用同梱のDxLib.dllのみを利用する人も居る
DLLじゃ無いとAPI呼び出せないからね
普通にreadmeに使い方書いてあるしw
追加説明ですが
ライブラリと聞くとどうしてもDLLって考えがちなんだよね
ほとんどのライブラリはDLLで配布されているから
正直VC++用のライブラリは設定とかややこしいと思う
日本語でおk
HSPでいうgsel命令ってないかなあ。
SetDrawScreen( int DrawScreen ) ;でグラフィックハンドルを指定したらイケるかと思ったけど、
DX_SCREEN_BACKを選んだときと同じ動作になるっぽい。(何故か若干重くなるけど)
DX_SCREEN_BACK以外のバッファ画像にDrawGraphとかで描き込んで貯めておきたい。
305 :
名前は開発中のものです。:2010/11/28(日) 20:44:53 ID:GPARErOo
>>304 おお MakeScreen
そういうのもあるのか
兆dクス
スマンすageてしもた
>>297-298 DxLib.csを使うならDxLibDotNet.dllはいらない
DxLibDotNet.dllを使うならDxLib.csはいらない
HSP3.2ってC言語とあまり変わらないくらい難しくなってるじゃん
C#使い始めたけどジェネリックスとデリゲート、拡張メソッドがいい感じすね
インターフェイスに拡張メソッド付けると基底クラスに修正入れたみたいになって新感覚だわ
>>308 どんどん拡張されすぎて、初心者向けでなくなりつつあるな。
よくあるパターンだよな。最初機能を限定して入門向けにしたのに
機能不足を補おうと機能を増やしたら、敷居が高くなると。
DXライブラリの公式リファレンスに、全ての関数が存在しない理由の
何割かは、多分この辺の事情なんじゃないかなぁ
DXライブラリは、コマンドにランク付けをしなくてはならない。
HSPは、再構成して体系化しなければならない。 継ぎ剥ぎだらけは初心者向け以前の問題
HSPの簡単は超初心者でもインストールが簡単という意味だからな
ゲームを作れる程プログラミングに慣れた頃には言語仕様の貧弱さに泣くという狡猾な罠
お前らDXライブラリなんか使ってないでDirectX勉強しろよw
なんか難しそうだもん(´・ω・`)
win32から学ばなきゃいけないんでしょ?よく分からないけど
別にDirectX勉強しなくてもゲーム作れるもんね
俺がやりたいのはゲーム作りであってDirectXの扱い覚える事じゃない
ウィンドウから作るの面倒だもの。
ぶっちゃけ今からDirectX覚えるくらいなら携帯に移植出来るOpenGL4.1覚えた方が良い
まぁ仕事で使わん限りどうでも良いな。
>俺がやりたいのはゲーム作りであってDirectXの扱い覚える事じゃない
これは単なる言い訳臭いなぁ
完全趣味だけの日曜プログラマならそれでもいいけど
最初DXライブラリ使ってて、そのうちDirectXの勉強して自分なりのライブラリを作って、
ある程度ライブラリが完成したところで結局DXライブラリに戻ってきたんだけど、どうしよう。
よくある
DXライブラリの価値が全身に染み渡ったところでゲーム作りを再開するのだ
>>320 考え方の一つだと思うけど言い訳なのこれ?
逆に聞きたいんだけど「ゲームを作りたい」って目的の人間が
DirectXを勉強しなきゃいけない理由って何がある?
DirectXでしか(自分の考える)ゲームを作れないと思い込んでる場合
>>321 俺もそのパターン。
3Dモデルが扱えるようになって、なおさら
生のDirectXを勉強する意味がなくなった。
実務であればDirectXに限らずハードに近い部分の知識は必ず要求される
「ライブラリが用意されてなければゲーム作れません」なんて言い訳にもならないな
DXライブラリを一通り使ったあとにDXLibのソース見ながらDirectX勉強すると非常に早い
動くサンプルがあるし
実務だとCRIWAREみたいなライブラリに頼ってるから、
全部1から書き上げてると思ってるのは素人の妄想なんだよね
もしDXライブラリじゃ作れないようなゲームを作りたければ勉強すればいいだけの話。
DXライブラリで作れるゲームを作るからDXライブラリを使ってるだけで
実務をやるわけでもないのに実務を例に挙げている326は何の意味もない。
俺様は実務でゲーム作ってるんだぜ趣味グラマとは違うんだぜプギャーって言いたいんだろ
アマグラマではないけど、別に仕事でゲーム作ってるわけじゃない人も多いよね
DXライブラリで欲しい機能の殆どはなんとかなるからなぁ
ただ一つ欠点を挙げれば、オープンソースとはいえ実質管理人一人で作ってるから
管理人さんが開発をやめるか、できなくなれば実質終了ってことかな。
だからDirectXの勉強は少しずつしてるけど、DXライブラリのサポートが続く内は、実際には使わないかな。
別にDirectXをある程度理解した上でDXライブラリを使うのは別にいいと思うんだよね
何かやりたい事があったり誰かに提案された時に
そんな関数無いから出来無いって諦めちゃうのかって話
プログラムなんて基本、無ければ作ればいいじゃない、の世界なわけで
DXライブラリだってデバイスに直アクセスすればいくらでも拡張できる
出来る範囲で色々工夫してアイデアを実現するのも大事な事だけど限界はある
必要になってから買わないと部屋の中がパンパンだぜ
>>333 つまりDXライブラリの提供機能で出来ないという場合が発生した時に
DirectXを勉強してれば「すぐ」自身で作れるか、「調べて」自身で作れるかの違いだろ?
DirectXに限らず「無ければ作る」これは同感だけど
>>333の言ってることはWindowsでプログラム作るならWinAPIを全部覚えてからやれって言ってるようなもんだぞ
そんな非効率的な事をしないためにDXライブラリ使ってるんだよ
出来ないから諦める奴なんて引き合いに出しても意味ないだろ
DXライブラリかDirectX直の二択でしか考えられないのかw
大体覚えるなんて事自体、仕事みたいに作業速度を求める時以外はいらんからな。ぐぐればいい
>>333 >プログラムなんて基本、無ければ作ればいいじゃない
最近はこれが出来ない奴らが増えているのが現実
特にこれにDXLibユーザーはメモリやバイナリの扱いとか内部構造とか勉強しないで丸暗記に頼りがちだ
同人界ではメジャーで情報量が多いだけに、ソースのコピペする奴もやたらに多いから似通ったゲームばかり増えてる
同人・インディーズで起業したい人は沢山居るけど、正直このライブラリはお勧めできない
DXLib依存でろくな技術無いくせに、同人は儲からない・就職したほうがいいとか愚痴こぼしたり偏見植え付けたりしてる奴らが気に入らない
最近は就職希望の学生もこれを学ぼうとする奴が多いのも問題だな
・・・でDirectXを使う利点を教えてくれ
あー。
専門学校(?)の課題とかにDXライブラリを使おうとするとかはさすがに俺もダメだと思うな。
DirectX直に叩いたら同人は儲からないって愚痴こぼしていいのか?
ライブラリ関係ないだろそれ
HSPやツクールに頼るってならまだしも
趣味グラマだからどーでもいいわ
ゲームプログラマなら社内にライブラリ用意されてるだろうし
たしかに
344 :
名前は開発中のものです。:2010/11/30(火) 17:58:28 ID:AcAbGJWK
HSPなんて単語を出すから。また、荒れだしたw
前にC++が高機能云々言ってた奴と同じ香りがしてきた
今どきゲームプログラマになるってのは
ちゃんと設計できてるのかな
人生を
家電なんかの技術者みたいに将来中国韓国へ行くことになるだろな
DXライブラリでらどうやって勉強したら良い?
改造したり自分でDirectXを弄ったりするとすると、
DXライブラリ自体のアップデートが面倒くさくなるのが問題だw
>>349 ネットでよろし。
本が良ければ14歳から始める〜で解説してたはず。
「ゲームプログラマなら社内にライブラリ用意されてるだろうし」
ってどんだけ夢見てるんだよwそんな甘い世界じゃないぞ
んじゃ頑張って
人を使う側の人間にはわからない厳しさがあるのかもな
社内にライブラリ用意されてるとかどこの大手だよ
小さいところだとPGがいない
>>355 まともに整備されてるのはせいぜいセガ・カプコンくらいだろうな
スクエニは自社エンジン作ろうとして失敗してるし
そんなもの当てにして業界に就職とか仕事を舐めすぎてるよね
コンシューマならPCよりライブラリの整備悪いのは常識だしDirectXすら動作しない
DXLib使える程度で通用するんだったら、会社側は人材不足だ吼えたり、スクエニの無茶な中途採用求人なんか有り得ないから
エンジンとライブラリは違うよボク……
程度の差はあれライブラリ無いとかどんだけひどい環境なんだよw
開発のたびに毎回1から組むのかと
プログラムばっかり考えないでもっと資産管理を考えろよw
業界通を気取ったつもりが無知をさらけ出してしまいました。
これは恥ずかしい
特に中小だと会社としての資産管理なんてことにコスト掛けてないよ
会社に入ればその会社の資産としてのライブラリが丸まる使えると思ったら大間違い
ソースはプロジェクトからプロジェクトへ引き継がれるもので
たとえ社内で自分の興味のある開発をしていたとしてもそのチームに入れなければ触れる機械は無いに等しい
そういうことが無いように一定期間でチームを組みかえる努力をしてる会社もあるけど極一部
大手になるとこれがプロジェクト単位ではなくてチーム単位になる
1つのプロジェクトにかなりの人数が投入されるのでチーム単位で管理するわけだけど
プロジェクト単位でライブラリが共有されるなんてことは極稀
人数が増えれば増えるほど意志の統一が難しくなり
同じことをするプログラムを複数のチームで別々に開発してた、なんて良くある話
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なんでDXライブラリのユーザー(初学者とかアマチュアでやってる人)と
法人組織の仕事の話を結びつけたがるの?
つか、そもそもDXライブラリを使わなくていいような
プロの、業界の人間がこのスレにくるわけない。
くる意味がない。
未来のゲーム業界を支えるかもしれない人々にご教授()笑しにきてるんだろ言わせんな恥ずかしい
このスレ業界人多すぎだろw
自分で使い易いようにラッピングすることはよくあるけど、
根本的にDXLibで出来ないことがあって、弄ったり直に叩かないと出来ないってケースはないなぁ。
3D触ったらあるのかもしれんけど
もしDXLIBで出来ないことがあったとしてDIRECTX勉強するのかあるいは出来ないことは諦めるのかはその人の自由なんじゃないのか
640x480とか800x600の画面サイズで、動かない背景画像とかを用意する時ってどうやってる?
サイズそのまま? それよりも大きい、2の累乗サイズで作る?
俺は二の累乗サイズで作って、背景とかキャラとか文字とか、同時に使うやつは全部入れてる。
>>372 DerivationGraph()あたりを使うのかな。
LoadDivGraph()まとめてラップしちゃって、うまく使い分けると便利そう。
現在描画しているゲーム画像をモノクロ化して描画したいんだが
ソフトウェアイメージ使わない方法とかないかな
シェーダー使えば解決
やはりPSか・・・
thx
>>375 まあ、無駄な回答だろうな
ここの連中の事だからシェーダーわかりませんって言うだろうし
基本的なピクセルシェーダをいくつかDXライブラリ側で用意してくれればいいのにね
2Dゲームで使うエフェクトなんて基本的なシェーダの組み合わせで十分カバーできるはず
それでそのシェーダとやらのDXLIBでの使い方はどこに詳しく載っているんだい?
あれ、DXLibって簡易だけどシェーダー対応してなかったっけ?
BltSoftImageWithTransColorとBltSoftImageWithAlphaBlendの両方の効果がある関数とかないかな
透過処理とαブレンドを両方やってくれるような
んでシェーダーって何よ どうやって使うの?
例えば
>>374をやるサンプルコードとか誰か作れない?
3D難しすぎてワロエナイ
2Dから頑張るか
関数の使い方はシェーダと頂点データの扱い方がわかるなら
>>381読めば大体いいと思う。
グレースケール化
float luminance = texc.r * 0.299f + texc.g * 0.587f + texc.b * 0.114f;
psout.Output.r = luminance;
psout.Output.g = luminance;
psout.Output.b = luminance;
psout.Output.a = texc.a ;
(結果:
http://gmdev.xrea.jp/st/up/164.jpg)
モバイルで開発できないからシェーダはずっと無視してたんだけど
やってみようかな……?
387 :
名前は開発中のものです。:2010/12/07(火) 06:51:01 ID:CiqSTUcF
モバイルで開発できない?イミフ
開発にグラフィック性能の低いモバイルPCを使ってたって意味だと思うが
389 :
名前は開発中のものです。:2010/12/07(火) 08:44:58 ID:GFuuUHf+
古いxpの頃のノートパソコンの話しか。なるほど。
インテル82852/82855のことかー
省スペースPCとしてのノートなら十分高機能なんだけどねー。
U101のことかー
っていうかシェーダ必須のXNAスレも閑散してるから
PC変えてまでシェーダを追う必要もない
シェーダ必須でなければXNAは魅力があったのにな
でも流行ってないから大したことないんだろうな
XNAが流行ってないだけで時代はシェーダー必須となっとりますが
シェーダー使えないPCは対象外にさせていただきたいものだな
今時シェーダ使えないPCなんか売って無いでしょ
どんな安物オンボードでもSM2.0以上は使える、ソフトウェア頂点シェーダだけどね
何でシェーダの不可が気になるんだどう
別に剃刀負けとかしないから要らんかな
DXライブラリの利点は今時のPCが対象じゃないところだからなあ
DXライブラリの需要を考えれば、特に気にするものでも無いだろうし。
でもピクセルシェーダ楽しいよね
簡単だし早いし派手だし
ピクセルシェーダ一から勉強したいんだが参考になるwebとか本とかない?
SetVolumeMusic関数使うとMIDIが再生できなくなる・・・・
MCI使用してないのに・・・
自己解決しますた
DXライブラリは本家のサイトで勉強したの?
いやあ、0〜255が引数だったんで
SetVolumeMusic(80)ぐらいにしといたら小さすぎて聞こえなかったというオチだった
DirectMusicのMIDIは255がデフォルト音量だったな
ゲームプログラムの勉強とは別物と考えるなら。
すみません、
元の画像より白く表示させることって出来ますか?
>>409 シェーダならできる
そうじゃなきゃ画像を重ねて描画するしかない
できんじゃん
>>410 sanx
やはりシェーダ使うしかないですか
ピクセルシェーダでrgb成分を加算すればいいのかな?
加算じゃなくて乗算
>>413 勉強になります!
かけちゃうんですか、試しに両方やってみます
てかそういう関数なかったっけ
乗算したら暗くなるやん
GetConstIndexToShader()が-1を返すんだが・・・
シェーダわけわかんねー
ちょっとコード晒すから誰か教えてくらさい
以下のシェーダだと暗くなっちゃうのはなぜですか?
テクスチャカラーを 1.0f で乗算してるから
元画像が表示されるはずだと思うのですが
因みに 1.0fで乗算すると元の画像が表示されるようになります
sampler sampler0 : register( s0 ) ;
float4 gTest = {1.0f, 1.0f, 1.0f, 1.0f};
PS_OUTPUT main( PS_INPUT psin )
{
// テクスチャカラーの読み出し
texc = tex2D( sampler0, psin.TexCoords0 ) ;
// テクスチャの青と赤を入れ替えて出力
psout.Output.r = texc.r * gTest.x;
psout.Output.g = texc.g * gTest.y;
psout.Output.b = texc.b * gTest.z;
psout.Output.a = texc.a;
return psout ;
}
シェーダは知らんが
<テクスチャカラーを 1.0f で乗算してるから
<元画像が表示されるはずだと思うのですが
これと
<因みに 1.0fで乗算すると元の画像が表示されるようになります
これ矛盾してね?後、RとB入れ替えてなくね?
>>419 あ、コメントはサンプルから消し忘れです
乗算も除算も値が1だと値は変らないですよね?
ようは変数gTestを1で初期化してるのに
1が入ってないように見えるということです
static foat4 gTest = {1.0f, 1.0f, 1.0f, 1.0f}; にする
さすがにHLSLはスレ違いだろ
>>421 親切な方どうもです!
static つけると期待通りの結果になりました
すみません、流れでつい質問してしまいました
423 :
421:2010/12/12(日) 00:16:41 ID:Nzml/rTF
あと普通はgTestのような変数の初期値はシェーダに書かないでC++側で設定するようにする
その場合はstatic取ってね
>>423 外部入力の場合は static なしですか
やりたかったのはそれなので助かります
どうもありがとうございました^^
なんかMS陣が衰退する気がしてきた
グーグルOSの標準ライブラリがOpenGLだしな
DXライブラリの中身だけGLライブラリに作り直してくれないかな^^
GLくらい直接叩けよ
OpenGLにはファイルフォーマットもスキニングもアニメーションもありませぬ。
あんなの使い物にならない
DirectXみたいにファイル読み込み機能が無いからOpenGLは大変だよね
iPhoneで2Dアプリ作るの割と簡単だったから、流れでOpenGLESに触ったら
DirectX直叩き以上の難易度で吹いたw
そんなもんハナから自作だろ
DXライブラリのスレだったよね?ここ
すれ違いスマソ
DXライブラリはDirectXのファイル読み込み機能もモデル機能も使ってないから
OpenGLへの移行は割と楽だろうね
>>427 使い物にならないというのは偏見だよ
フォーマット・関数・クラスも自分で作ればいいことだし
ちょっと努力すれば出来る事なんだけどね
iPhoneもPS3ソフト開発者もみんなそうやって開発している
末尾に「^^」なんてつけてる時点で
ただの釣りにしか見えん。
シェーダの外部入力がうまくいかない
SetPSConstF()の中で呼ばれてる
D_IDirect3DDevice9::SetPixelShaderConstantF()はちゃんと呼ばれてて、
引数も正しい値を渡してるのにシェーダには渡ってこない・・・
シェーダでは extern つけて初期化もしていません
シェーダの外部入力系の関数って動いた実績あるのかな?
本家掲示板で聞いてみることにします
GL対応したらwindows以外でも使いやすくなりそう
GLライブラリという
またしても誤解を生み易い名前になりそう
Lがかぶってるなw
GLib
クロスプラットフォームとかやりだしたら保守も機能増やすのも今より困難になるよ
どちらがいいかといえば,多くの人はWin限定でいいから今の打てば響く対応を維持してほしいと言うでしょ
シェーダなんかどうやっても非互換になるよね
441 :
名前は開発中のものです。:2010/12/13(月) 18:16:54 ID:92XHz1hF
オープンソースなんだからやりたければやればいいよ
携帯電話における標準的なゲーム開発プラットフォームになる
DXライブラリに、複数の乱数を用意する手段って無いよね?
確かMT法だっけ。これくらいならすぐ自作できるかな。
MT自作とかマジ勇者
自作したいならXorShiftとかで十分でしょ
MTは緩いライセンスでソース公開されてるからそのまま組み込めばいい
普通にMTをいくつも用意するのはよくやる
ソース丸ごと載ってるし,一度作れば後はずっと使いまわせるし
まあ、std::mt19937でおkなんですけどね
xorshiftはGPL感染すると聞いたような…
>>425 OpenGLならGLUTあたりはどうだろうか?
あれもDXライブラリのような感覚で
扱えそうだと思ったが。
>>449 初期化とウィンドウ作成までは簡単に出来るけど、モデルやテクスチャの読込みはねぇ
結局自力でアルゴリズム組まないといけない
内部を理解しないで一発関数に頼り切ってるここの連中のスキルでは無理でしょう
いちいち人の事を見下さないと気がすまないようだが
何か嫌な思い出でもあるのか?
自己紹介でしょう
ワロス
高学年様の砂場荒らし
モデルよりも前にOpenGLで組むなら入力や音楽周りどうするかを考えないといけないんじゃないかな
実際OpenGLでやるなら入力とか音声ってどうするんだろうね?
そういうのOpenなになにとかで有るの?
全員が全員スキルが無いからライブラリを使ってるとかおめでたい頭だな
そういう意味じゃないけど、ここで聞くのはスレ違いだな
ちょっと調べてみるか
スキルとか言っちゃうから荒れるのに。
「GLUTにはDXライブラリ相当の便利な機能は残念ながらない」で終わりでしょう。
あ、おまえに言ったんちゃうで すまんな
どしたー
わざわざ内部を理解するコストを払いたくないからライブラリを使うのに
何言ってんだあいつ
いやさすがにその言い方だと逆に住人側(自分を含む)を貶してる事になると思う。
どこが?
「ライブラリを一から自作するコストを払いたくない」ならともかく
「内部を理解するコストを払いたくない」ってのは、
要するに「勉強するのが嫌」っていう子供っぽい主張なだけ。
確かにその通りなんだけどさ。少なくとも俺は。
必要になってから調べればいいだけだからな
全部理解しないと気が済まないというスタンスでは、いつまでたってもプログラムが完成しないよw
ハードウェアの中身を理解するまでゲーム作ったらダメ
勉強する意志を失うな、と。
電子レンジの仕組みは詳しくは良く分らんが
温められるのには変わりない
回路設計で半田ごてするまでPCに触れたらダメ
471 :
TJJ:2010/12/19(日) 19:36:05 ID:KShcs6b5
もしもし
黙ってゲーム作れよお前らw
採掘と冶金から始めよう
DXLIB叩くのは良いから具体的な問題点を挙げて欲しいな
批判内容がいつもそいつの経験則ばっかりで全く同意出来た事が無い
リファレンス読む気が起きないからしばらくはDXライブラリでアルゴリズム勉強するでござる
Hey、改行コードを含む文字列を画面に表示するための最短のコードを教えてくれYO
もしくはフォント情報を得るためのコードを教えてください
「内部を理解するコストを払いたくない」ってののどこが「勉強するのが嫌」っていう子供っぽい主張なんだ
何勉強しようがそいつの勝手だろ
何を勉強すべきかは個人個人が決めるべきことであっててめえが決めることじゃねえ
メタな方向へのシフトがナウなトレンドだって婆っちゃが言ってた
コンピューターお婆ちゃん
8bitの魔術師
>>466 自分で調べないですぐ他人に答え求める教えて君が多いと思うんだけど
特にOpenGLスレではグラフィックのロードに関して同じような質問が多い
同人ゲームも主流はWindowsだしMSがシェア無くすことはまずないと思うが、iPhoneやAndroidへの進出も必要になる時が来るかもしれない
関数が無ければ自分で作ればいい、それをやらないで
>>427のように「使い物にならない」というのは間違いなのでは
欧米ではiPhoneで溢れるだけのゲームが作られている訳だ、OpenGLが欠陥なんてことはない
別にGLライブラリなるものは無くてもゲームは作れるんだよ
寝言かよw
ここ勘違いしてる人多すぎだね
どういうものか分かってないで語り始めてるから、わけわからん比較になってる
※彼の頭の中では関数を作るのは特殊技能です
DXライブラリでアルファ付きPNGを読み込む方法ってありませんか?
なにか代替になるものでもあればいいんですが
>>485 int handle = LoadGraph("alphapng.png");
あれ?読み込めた……
すみませんなんか画像ファイルの方がなんかおかしかったっぽいです
透明になってたと思ったんだけどな
ワロタ
どうせMSペイントでPNGでも作ったんじゃねーのか
詐欺PNG吐くからなアレ
あれjpgかなんかでも詐欺ってる
大丈夫?マイクロソフトのペイントだよ?
>>487 画像作ったソフトの問題かも。
DXライブラリはちゃんと読んでくれるけど、アルファ付きPNGを
作るのは結構メンドい気はするし。
たとえばPhotoshopでも、PNGはαチャンネルを透明情報として
書き出してくれないし(TGAとかだといけるけど)。
キャンバスの透過部分が透明情報になる仕様だったと思う。
…というか書き出せるソフトないような気もする。
493 :
485:2010/12/21(火) 18:22:52 ID:6gKaW02Y
もともとは拾い物の素材のアルファ付きPNGだったのですが、GIMPで読み込み&書き出しなおししたら問題なく読み込めました
お騒がせしてすみません
ゲーム用の画像編集に超オススメなPictBear☆
TGAとかマイナーな形式が使えないのが玉に瑕だけど
EDGE+SAI+PictBearな俺
blenderでレンダリングvixで複数画像の結合padieで減色edgeで修正
時々gimpで何かを作成
あっそう
Paint。NETなんてーのもあるでよ
なにげに対応形式が多めで結構良い
bullet対応マダー?
ゲーム内で作ったポリゴンを指定の座標におこうと思ったら
各頂点の座標と、法線のデータを行列かなんか使って変更して
DrawPolygon3Dで描画するしかないってことでOKですか?
MV1SetMatrixみたいな使い方をする関数は、
用意されてないので自作するでOKですか?
召喚魔法か
502 :
名前は開発中のものです。:2010/12/25(土) 00:06:34 ID:PX+W0VeN
PlayMusicMem()でMIDI以外(具体的にはMP3)って再生する方法ある?
兄弟分のPlayMusic()はMP3も可能とあるから、出来そうな気もするんだけれど、
LoadSoundMem()でファイルを読んでも再生されないし、LoadMusicMem()だと読み込めない。
PlayMusicMemじゃ出来ないんじゃないかな……
多分、その周辺の関数はメディアプレーヤーの機能を呼び出してるだけだと思う。
そっちの方では、MIDIはファイルサイズが小さいからメモリに読み込んでから再生するのがデフォだけど
MP3だとメモリに展開すると数十メガバイトっていう膨大なメモリが必要になっちゃうから、そういう機能が用意されてない。
DXライブラリだとLoadSoundMemでデコードしてPlaySoundMemで再生する機能があるからそっち使うしか
ところで自分も質問なんだけど、DXライブラリの機能だけで同一の効果音を多重再生することってできないのかな……?
>>503 ありがとう。
どこかで覚えておいて、振り分けるか…
>>503 鳴らしたい数だけハンドル用意して複製していくしかないと思う
int hSnd[2];
hSnd[0] = LoadSoundMem("Sound.way");
hSnd[1] = DuplicateSoundMem(hSnd[0]);
//同時に同じ音が鳴る
PlaySoundMem(hSnd[0], DX_PLAYTYPE_BACK, TRUE);
PlaySoundMem(hSnd[1], DX_PLAYTYPE_BACK, TRUE);
>>505 ありがと
やっぱりそうなのか……
勝手にそれをやってくれるようにライブラリラップするかな
>>506 1つのサウンドに対してハンドルをたくさん用意して、複製で埋めておく
再生要求が来たら、たくさんある中から再生中でないハンドルを探して再生する
毎回ハンドル確保してると数が増えると重い…
メモリは食うけど処理は軽い、他にいい方法がありそうな気もするけどw
あらかじめ多重化したサウンドを作っておくとか
範囲攻撃とか迫力を出したいものはそうしようかなと思ってる
NumSitei系隠し関数ってもう無くなっちゃったんだっけ?
グレップも出来ない男の人って…
GetPixelで得られる色コードの仕様ってどうなってますか?
0x00rrggbb
になってるかと思ったんですが違うようですね。
もしくは色コードからr成分g成分b成分を取り出す関数はありますか
softimageとか言うのを使ったらできたわw
色コードはプレイする環境によって変わってくる仕様なので解析するのはちょっと面倒だと思いますが
GetColor2という、ドキュメント化されてない関数でRGB値は取れるみたいですよ
extern int GetColor2( int Color, int *Red, int *Green, int *Blue ) ; // 画面モードに対応した色データ値から個々の3原色データを抜き出す
SaveDrawScreenToBMPってサイズ制限ある?
250x8000くらいで試すと強制終了したんだが
サンプルコードも貼っとくか。SaveDrawScreenToBMP関数の先で強制終了している。
#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode(TRUE);
if( DxLib_Init() == -1 ) { return -1 ; }
int W = 256;
int H = 8000;
int screen = MakeScreen(W, H);
SetDrawScreen(screen);
DrawBox(0, 0, 0,2000, GetColor(0xff, 0x00, 0x00), TRUE);
DrawBox(0,2000, 0,4000, GetColor(0x00, 0xff, 0x00), TRUE);
DrawBox(0,4000, 0,6000, GetColor(0x00, 0x00, 0xff), TRUE);
DrawBox(0,6000, 0,8000, GetColor(0xff, 0xff, 0x00), TRUE);
SaveDrawScreenToBMP(0, 0, W, H, "output.bmp");
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
おまえのスクリーン環境がそのサイズに対応してないんじゃないのか?
あけましておめでとう
今年もDXライブラリにお世話になります
新年早々バージョンアップきてるな
ConnectNetWorkってスレッドで実行すると
GetLostNetWorkが取れなくなるだね...
接続を非同期でやる場合どーすりゃいいだ?
最近じゃ動画サイトを利用したアピールも多くなってきたけど、
実際、プレイ動画のキャプチャってどうやってる?
フリー版に挿入されるロゴが目立ちすぎる(ゲームの重要情報と被る)とか、
相性が悪いのか上手くキャプチャ出来ないとか、そんなのばっかりだ。
WMEのPC用の高品質VBRかアマレココ(外部コーデック使えばロゴ出ない)で撮ってaviutlでエンコこれ最強
「ふぬああ」と「SCFH」で録って「aviutl」でエンコ
あとはコーデックかな。
プレイ動画に適したシェアウェアってだけに、アマレココのコーデックはかなり使いやすいと感じた。
ロゴ入ったらすげぇ安っぽい
アマレココ使ってる。
アマレココ + AMV3ならロゴも出ないし。
ひょっとしてLoadGraphで読み込む画像のサイズが大きい程、
実際に描画するサイズに関わらず、その画像の描画速度が落ちる?
日本語でおk
DrawRectGraphとかLoadDivGraphの話っしょ
同じ画面で使う画像はできるだけ一つに纏めた方が一般に描画は速くなる
この場合は、そのまとめた画面が大きくなれば描画が遅くなるのか、って質問だけどね。
ちなみに俺は知らん。
320×320の画像ファイルを32x32で表示すんのと
64×64の画像ファイルを32x32で表示すんのとでは速度違うの?
ってことじゃね
二日も経つのに質問の正しい意図の説明がないとか。
534 :
名前は開発中のものです。:2011/01/15(土) 23:45:05 ID:9C1Hf1/U
サブ関数中でWaitKey中にウインドウが閉じられたりして終了されたときに
プロセスが残るんだけどどうすればいいのかな
535 :
名前は開発中のものです。:2011/01/15(土) 23:46:02 ID:9C1Hf1/U
ミスった
×WaitKey ○WaitTimer
536 :
名前は開発中のものです。:2011/01/16(日) 00:51:04 ID:c7K8Nuaq
サーセン自己解決しましたww
解決したなら、結果も書けよ
どうせDxLib_Endしてなかったって落ちでしょ
やっぱり画像サイズが小さい方が高速なようだぞ
http://msdn.microsoft.com/ja-jp/library/ee422132(v=VS.85).aspx
>テクスチャー サイズ
>テクスチャー マッピングのパフォーマンスは、メモリーの速度に大きく依存します。
>アプリケーションのテクスチャーをキャッシュする際のパフォーマンスを最大限に高める方法がいくつかあります。
>
>?テクスチャーを小さくする。テクスチャーが小さいほど、メイン CPU の 2 次キャッシュに格納される可能性が高くなります。
その解釈で大丈夫か?
俺はその下に書いてあることの方が気になる
サイズを統一しろとか、正方形のほうがいいとか?
>>540 キャッシュに格納されればその方が高速だろうからいいんじゃね?
>>539 サイズが小さいほどキャッシュヒットしやすくてGPU処理が高速になるのは確かだけど
それでテクスチャの切り替えが増えたらCPUネックになって結果遅くなるけどね。
32x32のテクスチャ数十枚用意してチップ並べるよりは1枚のでかいテクスチャに並べたほうが全体では遥かに速い。
UV座標の変化で画像の切り替えをシミュレートした方が速いってこと?
DXLibレベルの3Dや2DでGPUパワー使い切るなんて事はまずないし大半がCPUネックだからね。
2Dゲームは意外にグラフィック関係の負荷が大きいぞ
CPUのほうが遥かに余裕がある
>>546 確かにシェーダーバリバリ使ってればそうなる可能性もあるね。
シェーダー使うでもない弾幕STG程度ならGPUだけ安物とかじゃなきゃ逆転しないけど。
DXライブラリ使っててネックになりがちなのはソフトウェアイメージだと思う
シェーダ使いまくってもGPU使い切るのは難しいけど
それと同じことをCPUでやったらすぐ遅くなる
シェーダ使うような人ってDirectXを直に叩いてそうなイメージあるんだけど、なんでDXライブラリわざわざ使うん?
やっぱり楽だからなのかな
DXライブラリで作成 → DirectXも勉強しよう → 最低限の自作ライブラリ完成 → あれ、DXライブラリでよくね?
ディアドラエンプティは多分GPU使い切ってた・・・
2d画像大量描画で重くなるのはCPUのせいなん?
>>552 弾幕STG程度の数ならCPU。
あるいはGPUがウンコな場合じゃないかね。
CPUがCore-i7だったら最低でもGTX460くらいは乗ってないとアンバランスだよ。
弾幕STGでネックになるのは描画のほうだ
自機と敵弾だけのヒットチェックなら、PEN4でも千発くらい余裕
あんまりいい加減なことばっか言うなよ・・・
答えの出ないことで言い争うなよにゃー
PCのスペックのバランスも、ゲームの処理の組み方も人それぞれなのに決まった答えなんてあるわけないじゃないかー
とりあえず、今でもユーザが多いと思われるペンティアム4&格安のグラボのPCなら、
描画も処理もボトルネックになりうる
ついでにメモリコピーも
弾幕シューティングだって見やすいように弾を大きさ順にソートしたりすると通常なら2000発位でメモリコピーの限界がくるし、
ソートするのをポインタに置き換えてもせいぜい8000発
あたり判定も、自機だけじゃなく地形や弾消し効果のある装備やギミックとかあったらそれともしないといけない。
(弾消し効果のあるオブジェクトをばらまくボムとか)
そうなるとCPUがキツい
描画もいろいろ派手にやろうとしたら当然キツくなるし
それぞれのゲームでどこがネックになってるのかは知らないけど、
一概にまとめてしまうことほどいい加減なことはないと思うよ
MSXのゲームを再現したものを作っている俺には関係の無い話だ
>>554 一応言っておくとDrawの内部処理はCPU時間だからな。
>>556 もちろんSCREEN 1/2, 1/4の再現で作ってるんだろ?
まさかSCREEN5なんて甘えてないよな?
MSXは憧れの高機能マシンだったなあ
MSXがMicroSoftXの略だったって話を考えると
MSのXもDirectになったり箱になったりして随分遠くまで来たもんだ
>>559 MSXが憧れってじゃあお前は何を使ってたんだw
ファミリーベーシックだろう
せめてVIC-1001で。
X68をメインマシンにしている時に、MSX2が安くなったので買ってみたけど、あの仕様に頭抱えて結局プログラムはしなかったなw
描画を別スレッドに投げたいんだけど、上手くメインループと同期がとれないんだけども、どうしたらいいだろう
別スレッドに投げるってそういうことじゃないの?
567 :
名前は開発中のものです。:2011/02/01(火) 11:31:33 ID:A4LUO7Q2
描画みたいな終了までずっと継続してるもんを同期取ったら意味なくね?
初心者です。
色コードについて教えてください。
int Cr ;
Cr = GetPixel( X , Y ) ;
と書いて取得した色コードってどういう数値になってますか?
ちなみに、座標(X , Y)の色は白です。
それ俺がこの前質問したジャン
俺はsoftimageでやったよ
FF(255)が全部入るんじゃないの?
(255 , 255 , 255)
そのまんまだけど…
>>570 すみませんでした。
>>67で
>白ドットのコード取得すると . GetPixel(x, y) = 0x 00 .FF FF FF
って書いてましたね。
でも、 0x 00 .FF FF FF の00とFFの間に . を入れるとエラーになるんですが・・・。
質問を変えます。
>>569でカラーコードを取得したCrを文字列として表示させるにはどうしたらいいですか?
int Cr2;
Cr2 = GetColor( 105 , 255 , 255 ) ;
// 文字列の描画
DrawString( 0 , 0 , "Cr" , Cr2 );
こういう風に書いて、Crの中身のカラーコードを見たいんですけど、
これだと、Crっていう文字列が表示されるだけです。
いや俺は
>>67じゃねえよ別のレスだよ
どうもGetColorで取得した数値は1バイトずつRGBAとかの順で入ってるわけじゃないみたいなんだよ
内部で色をどう扱ってるのかわかんないんだけどバイト単位じゃなくて数ビット単位で色情報を格納してるっぽいんだよな
ほんとちょっと込み入ったことをやろうとすると途端に行き詰るライブラリだよな
>>573 重ね重ね失礼しました。
失礼ついでに、もう一度
>>572の後半の質問をさせていただきます。
getpixelでCrに取得したカラーコードが内部的にどうなっているか、
確かめるにはどうすればいいですか。
デバッガで止めたらわかるでしょ
わかりません
あ、なんか語弊のある言い方でした。
わかんないってのは、デバッガで止めても分からないっていう言う意味じゃなくて、
どこをどうやれば取得した数値を見れるのか分からないっていみです。
579 :
名前は開発中のものです。:2011/02/02(水) 01:23:53 ID:IDILEoBM
社内ニート乙
16進数で表示するだけだと思うが
完璧な初心者で、大学もIT関連とはまったく関係ないところをでているのですが、
DXライブラリを使ってゲームを作りたいと思います。
プログラムを深く理解したいとか、自由にプログラミングできるようになりたいという願望はありません。
ただ、イメージするゲームが出来上がりさえすればいいのですが、
参考になるホームページなどあったら教えてください。
DXライブラリの公式サイト
にしても自由にプログラミングできるようにならずに
イメージどおりのゲームが作れるとは思えんのだが。
>>581 上級者になれとは言わないけど、C言語の基本もできてなさそうなレベルで
「画材の使い方は知らないけど自分の思い通りの絵が書きたいです! どうしたらいいですか?!」
とな
>>581 プログラミングの習得を特に目標とせず、単にゲームを作りたいだけなら、
RPGツクールやNScripterに代表されるゲーム作成ツールも選択肢に入れたほうがいいかも。
特定ジャンルに特化したツール(RPGツクール等)から、汎用的なゲームが作れる物(MMF2など)、
無料のものから有料のものまで、幅広く揃ってる。
これ以上はスレ違いなんで、質問スレに行ったほうがいいかもしれんけどね。
>>581 ゲーム作りたいだけならHSPのほうが楽だと思う
習得が簡単なのは確かだけどHSPを"使う"のは難しいぞ
複雑になってくると低レベルすぎて追いつかなくなる
>>585 ネット対戦が前提なので、どの言語やスクリプトで作るのがいいか聞いたらVc++を紹介されたわけです。
というか、質問スレじゃなかったんですね。
HSPで作られた良ゲーも多いんだけどな
ガンデモニウムとかパチュリとか
スレチだけど
ところで、OGGとかのBGMを再生時の読み込み時間を待たずに再生する方法ってないのかな……
メモリに全部読み込む以外で
それも俺が質問したジャン
ストリーム再生でやれ
ストリーム再生は普通にリファレンスに書かれてたと思うんだが……。
ツクールとかに当てはまらないジャンルならC#+DxLibがオススメ
言語を選ぶ時はエディタの機能も考慮に入れたほうが後々幸せになるよ
うぉ、音再生関係のトコしか見てなかった
今見つけたありがとう
C#もVSファミリーだろ
ためしにVC#触ってみたらいかにVC++が時代遅れか分かるよ
どっちがいいとかではなくてあくまでIDEの出来の話ね
>>587 作りたいゲームの規模によるが個人制作うレベルならHSPで十分だと思う
それで物足りなくなったら他の言語やればいいし
>>594 VS2010でC++のサポートが厚くなったとか?
>>597 入力補完もストレスないレベルにまで上がったし、十分
2008のは産廃だったけど
へー、今度C++使う必要性ができたら使ってみるわ
C++は難しいね
心が折れそう
C#に転向する事も考えるべきか
>>572 全くスルーされてた俺のレスにレスが付いてたので驚いたw
. は間隔調整の為に入れただけだから無視してくれw
>>572 "Cr" じゃなくて "%X" なら表示されるんじゃね
違ったらC言語のprintf文のとこでも参照してくれ
C系なら初心者ならCでやっとけばいいんじゃね
HSPでもいいけど
Cだと標準ライブラリがちょっと悲しすぎるぞ
Windowsでやってるなら素直にC#がいいと思う
DXライブラリは面倒になるが・・・
C#のダメなところは.NETに完全に依存しちゃうところ(プログライミングはやりやすいけど)
ほかにはメモリの使用量を抑えるのが難しいのはあるけど、最近のマシンでそんなの気にして制作遅れたりバグ入れたりするぐらいだったらGCに頼ったほうがよい
C++をきちんと使えるのは才能のある人だけだよ
CやC++の資産がある場合は自分のわかる範囲で使うってのはあるけど・・・
まともな経験があるマなら各言語プラットフォーム毎の経験と資産は
きちんと蓄積&管理されてるはずなので、
ケースバイケースで言語プラットフォームは自然に切り替えるでしょ
なんでもかんでもこれ!なんてのは現実的じゃないし
C#はデコンパイルできちゃうから嫌い
ゲーム関連の本がだいたいC++で書かれてるから
プログラム素人だけどC++勉強しながらやってる俺みたいなのもいる
C++でポインタ使いまくりのプログラミングに慣れた自分にはC#でゲームを作るのが難しそうに思えてしまう……
弾幕STGみたいなオブジェクトを大量に生成するゲームならC++で、そうでない大人しいゲームならC#でもいけそうなイメージ
C++はなんでもできる&書いた通りに動作してくれるってのが大きいと思う
メモリとかも無駄に使用しないし、慣れれば高速なコードか書きやすい
web上のドキュメントや書籍が多いのも強み
C#では構造体が値型だから弾幕とか大量に生成するものに役立つかもね
クラスでもあらかじめ用意しておけばいいだけだけど
C++わからなくて投げ出した奴がC#なら使えるとは思えないな
オブジェクト指向とかきちんと理解した上で使う分には
C#の方がずっと使いやすいしライブラリも充実してて楽だけど
そこに行くまでの難易度はそんなに変わらん気がする
むしろC#はライブラリ使うのにもオブジェクト指向を強制されるから最初に覚えることはC++より多いような
>>611 どんな理由をつけてもC++が難しいC#が易しいという事実は変えられない
C++が困難なのはメモリ管理とメモリ周りのバグ問題とシステムの不安定化
配列範囲オーバーなどエラーチェックも貧弱すぎたり、すぐに発症しない潜在的なバグも多いから対策が難しい
そもそもオブジェクト指向はそんな難解なものじゃないと思うけど、何でそんなもので躓くのかわからん
.NETのクラスや構造体なら2〜3時間勉強すればすぐに習得できる、大学受験の勉強に比べれば簡単なものだ
>すぐに発症しない潜在的なバグも多いから対策が難しい
たとえば?
C++は簡単にやばいコードが書けちゃうのと、例外周りが洗練されてないと思う
あと、LINQとラムダ式はいいぜ!
ラムダ式はBoostにもあるみたいだけど、使いやすそうには見えない
オブジェクト指向なんてこだわる必要ないと思うな
クラスライブラリの扱いは慣れたほうが良いけど
C++はSTLとboost使ってなんぼ
テンプレートは良いな
DXライブラリは算術系がだるいから他のライブラリから引っ張ってきたら楽
テンプレートは深入りしないのが大切
C++は手段が目的化しがち
C++よりC#が簡単てネタかと思ってたが本気か
クラスを理解しないと使えないはずだけど
ベターCみたいな使い方なのだろう
なんとかしてC#は難しいと言うことにしたいんですね
ゲーム作り自体の方がよっぽど難しい
言語なんか道具、理解してはじめてスタートライン
最期まで作る忍耐力が問題。RPG作ってた筈なのにいつの間にか放置してるわw
どっちが難しいかなんて人によりけりだろ。
俺にとってはメモリ管理なんかよりオブジェクト指向のほうが厄介だった。
ただ、初期の段階では、C++のほうが単純だから、
取っ付き易い気はする。まあ、C#使ったことないんだけどさ。
ゲームが作れりゃいいんだよ、とC++でBASICみたいな組み方しかしてない俺が言ってみる。
オブジェクト指向? なにそれ。
623 :
名前は開発中のものです。:2011/02/03(木) 23:53:40 ID:oJ9LxkAh
何で作るかじゃなくて何を作るかだと思うわ
ナニで作るかは重要じゃない。
でもナンで作るかは重要だぜ。
C/C++以外カス
C++か・・・これまでの負の遺産を全部捨てたら使ってやってもいいよ
何が悪くて何がいいのか分からない俺はとりあえずC++を勉強している
複数やったほうがいいよ
思い込みだけで他の言語叩く子にならないように
Cやアセンブリを学んで、コンピュータの基礎を理解したり、
JavaやC#を勉強してオブジェクト指向やクラス化の重要性に気付いたり、
PerlやPythonに触れて目的ごとの向き/不向きを感じ取ったりすることはあるかもね。
マルチですいませんが、分かりましたら教えてください。
/|
/ |
/ |
/ | x
/ |
/ |
/θ |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
y
この角度、θを求めるためには
θ = atan2 ( y , x ) ;
って書けばいけるかと思ったんですが、だめでした。
------------------------------------------------------------------------
atan2
Error:オーバーロードされた関数"atan2"の複数のインスタンスが引数リストと一致します:
------------------------------------------------------------------------
って、エラーがでます。どう修正すればいいですか?( )の中身がおかしいんでしょうか?
ちゃんとコードを書きなさい
どうせx,yの型がintだからとかそういうのじゃないの
図のx,yの位置については触れたほうが良いのかしら?
言語の話になるといつも学習論や効率論になるけど
世の中EXCELやRPGツクールなんかでSTGとか作るような奴だっているんだから
どんなもの使っても作りたい物を完成させた奴が勝ちだと思う
マルチポストですかやれやれ
>>633 確かに同人ならどんな開発環境を使おうと自由だけど
>>611みたいな嘘撒くのは辞めたほうがいい、初心者や入門者が可哀想だ
どうあがいてもC#・Java・VBなどの方が難易度は低い、C++自信なくて諦めても前者で十分やっていける
初心者には嘘かどうかの判断基準もまだ無いんだからお前も同類だけどな
初心者はC#やJAVAから入れってのはどこでも言ってることだしな
だいたい、絶対的に”初心者向けだ”と言い切れる言語なんてない
目的によって変わってくるし、言語の難易度もひとつの指標に過ぎない。
ただ、簡単なゲーム作りや、多くの人が思うアプリ製作を目的にするなら、
GUIを非常に作り易いC#やJava、VBで始めるべきだろうな。
まあでも、C++でオブジェクト指向わかんねって投げ出した奴は、
たとえC#をやったとしても出来ないとは思う
実例を交えたわかりやすいドキュメントが沢山ある言語こそが「初心者向け」という持論
初心者に必要なものは言語の簡単さよりも、最初の壁をいくつか超えるためのやさしい解説だと思う
初心者ならC#やJAVAから、ってのはゲーム意外の一般的なプログラムでのことなんじゃないかな
C++以外はゲーム制作の為の解説サイトとかかなり少ないし
よくわからんなぁ。
初心者の話してるんだよな?
俺はC++とDXライブラリでゲーム作ってるし作ってきたが、実際のとこC++を使いこなしてるわけじゃない。
初心者に毛が生えた程度だ。けど、何の問題も出ていない。
例えば
>>612の言ってるメモリ管理だのメモリ周りのバグだの、なんて全然考慮してないし存在すら知らない。
むしろそういう事を気にするようになったら上級者だよな?
初心者にはそんな事全然関係ないよ。
初心者にとって易しいってのは、システムまわりの安全性なんかじゃない。
覚える事が少ない段階でも動く物が作れる事。そして、手軽に勉強できる(資料が簡単に手に入る)事だよ。
C#やJavaなどの方が難易度は低い、というのは(覚えることが少なくて済む)という
意味じゃない
むしろ C++の方が覚えることは少なくて済むような気もする
C#やJavaの場合、覚えたことをそのまま使うパターンでのプログラミングが多い
それだけ高レベルのライブラリやらオブジェクトやらが揃ってる
→それらの使い方を覚えなきゃならんから、覚えることが多い
C++の場合、覚えたことを組み合わせて応用するというプログラミングが要求される
→だから、サンプルコードがたくさんあると楽できる
もちろん(C#には応用なんて要らない)とは言わないけどな
>覚える事が少ない段階でも動く物が作れる事。そして、手軽に勉強できる(資料が簡単に手に入る)事だよ。
これはもっともな正論だね。
しかし、これさえも出来ない初心者が多くいるのは事実だ。
事実だ(キリッ
DXライブラリは遊びながらC/C++覚えるにはいいんでないかな
コンソール並におまじないが少ないから学習の邪魔にならない
C#でもC#+XNAとかになると完全に初心者お断りだよ
>>640 お前の作ったプログラムを公開するとき
このプログラムは予期せぬ動作を起こす可能性があるため
自分のパソコンが壊れてもいい人だけ実行してくださいって注意書きをちゃんと付けろよ。
boost使おうとするともれなくテンプレート、メタプログラミング、
ジェネリックの知識が必要になるんだけどね
まあ最初が楽かどうかで選ぶならツクールとかになっちゃうから言語の比較は意味ないな
最低動作環境― OS : WindowsXP SP2 以上
でいいだろ
HSPでいいと思うよ
テンプレートなんてマクロに毛が生えただけ
所詮言葉遊びのパズル
>>651 別にBoostはそんなに敷居高くないぞ・・・
ああ「もれなく」って言葉が気に入らなかったのか
CとC++がごっちゃになってんじゃね
Cは簡単、
>>640が良い例、でもメモリ管理は必須だぞ
C++全開で書かれたソースは難しいが
ほとんどの場合Cから初めても進むにつれC++寄りになるから続ければ勝手に読めるようになる
webで勉強するならC/C++が一番資料多い
DXライブラリ+Cは初心者におすすめできると思うぜ
んで、さらに時がたつとC#でツール作成してるはず
なってないだろ。
DXライブラリのサンプルコードもC++だし、
ほとんど大多数がC++で開発してると思うぞ。
まあ、ほとんどの、C++の入門サイトも入門書も、
Cから受け継いだ構文・機能の説明を省いてるから、
必然的にCを学ばなきゃいけないのが現実かもしれんが。
龍神録のトコなんかC++使ってるのに書き方がまんまCなんで、
クラスもオブジェクト指向もSTLもBoostも使わなくてもあれくらいのモノは作れるってののいい見本だと思う
別にゲーム作るのにオブジェクト指向もBoostも必須なわけではないし、
そんなのが必須になってくるくらいの規模の大きい作品を作ろうとするのは初心者には無茶
使えれば便利だけどね
C++はCに機能が追加されたものなんだから、無理に追加されたものを使おうとしなければ、
C++がCより難しいってことはないと思う
話が噛み合ってないな。寝言で会話してるみたいw
噛み合ってないなw
そりゃ使ってるのはC++だろw
>>654 >でもメモリ管理は必須だぞ
メモリ管理って言うけど、具体的に何をするのかピンとこない。
大事なのはわかるんだけどさ。
俺はオブジェクト指向わからんし、クラスの使い方すらも理解していない。
主に使う変数はほとんどグローバルで配列の数も全て固定。
ポインタもどうしても必要な部分以外使ってない。
エラーが起こるとしたら配列範囲オーバーか0除算くらいで、その程度ならなんとでもなる。
あとはDXライブラリで読み込んだ画像データ等を必要に応じてDeleteしていく、くらいしか気をつけてない。
メモリ管理というと
win98ぐらいの時には
メモリークリーナーが便利だったな
メニュー画面やステータス表示など、決まった場所に数字や
文字列を表示するXとYの位置を直にソースコードに書き込むと
頻繁に位置を変更する時ビルドに時間がかかったり
後でわかりにくくなるので、テキストにずらっと位置情報をまとめて
それを読み込んで使っています
しかし位置情報というのは細かいものまで含めてたくさんあるので
「こんなものまでいちいち読み込んでやるべきなのか?」
と疑問に思うことがあります
皆さんはどうしてますか? 私のやりかたはおかしいでしょうか
>>661 着眼点はよいです
ソースコードに埋め込まないほうがよいのは確かです(最低限マクロか定数として分離させるべき)
複雑になってくると自分でも混乱しますけど、それをうまくやる方法ってのは正解はないです
一定の開発スタイルを決めるとそれなりに整理はできるんですが・・・
663 :
名前は開発中のものです。:2011/02/05(土) 01:16:00 ID:a1DliHej
ゲームつくりの最中にそういうこと考える人はだいたい完成させられない
>>659 メモリ管理とは違うけど、とりあえずグローバル変数を極力使わないところから始めてはどうか。
これくらいなら、Cの入門書にも書いてあるレベルだし、慣れれば手間ですらなくなるし。
>>661 小規模開発なら、細かい数字は外部に置かなくても、そこまで問題にはならないと思うよ。
ただし、>662の言う通り、#defineなりconstなりで分離させておくべきだと思う。
>>663 休憩中とか散歩中とか仕事中に考えればいいのよ。
DXライブラリで文字を書いて、ワードとかメモ帳に出力する方法ってしらない?
>>665 ワードやメモ帳に、文字列を食わせる方法ってあるのかな。
一旦テキストファイルに出力するのが簡単なんじゃない?
ワードならCOM経由であらゆる操作が出来るけどC++からだとクソ難しいので.NETかスクリプト言語推奨
メモ帳ならキー送るしかない
直接ワードやメモ帳に出力できなくてもいいんです。
DrawString を使うと、画面に文字が描画されますが、
それをコピーペーストしてワードに貼り付けることが出来るならそれでもかまわないんです。
実際はできません。
私はまったくの初心者なので、質問がおかしいところもあるかもしれませんが、
>>666の テキストファイルに出力する っていうやり方を教えてもらえないでしょうか。
どういう関数を使えば出来ることなんでしょうか?
クリップボードに入れるにはWindows APIのSetClipboardData関数を使う
ファイルへの出力は、DXライブラリの関数を使ってもいいけど普通はC++の標準ライブラリの
入出力機能を使う
どちらにしてもスレ違い
>>668 ファイルへ書き出すなら fopen, fprintf, fclose
クリップボードへ入れたければ
GlobalAlloc,GlobalFree, GlobalLock,GlobalUnlock,
OpenClipboard,EmptyClipboard,SetClipboardData,CloseClipboard
を使うといいよ
ありがとうございます。
利用できる関数がそんなにあったんですね。
>>659 タスク用のワークエリアを確保したり開放したりしないんだろうね
最初にがばっと確保して、タスクごとに使いまわす
それは古に廃れたというタスクシステムのことですか?
またタスクシステムバカが来たか
そんなメモリの節約に必死になるなんて、
PSPのソフトでも開発してんのか
PSPは酷かったな
PSPでは金玉を回転させるアプリしか作らなかったな
ちなみにメモリ管理ってメモリを節約するためじゃないからな
訂正
>ちなみにメモリ管理ってメモリを節約するためじゃないからな
ちなみにメモリ管理ってメモリを節約するためだけじゃないからな
メモリ管理という言葉が漠然としすぎていて、
具体的にどういった事をメモリ管理というのか実例を説明してほしいですね
newしてdeleteするってのもメモリ管理、というか普通こっちの意味じゃね?
sharedptrさいきょう!!!
ポインタにNULLを入れて何回でもdeleteしてやる
newって何でOSが管理してくれないんだよ
初心者がC++を扱うのはメモリ管理をしないといけないから難しい、
って主張だったのに、初心者はnew・deleteは使わないと思うんだけどな……
だから話がループするのかな
C++初心者じゃなくて、new,delete初心者と呼ぼうw
いまだにnew, deleteの必要性がわからなくて使っていない。
俺は配列を最大でいくつ確保すればいいか不明な場合newを使ってる。
他に使い道あるの?
>>688 よく知らないけど、そういう場合ってvectorとか使うんじゃないの?
まぁ自分は決め打ちでドカッと多目に配列を確保。
よく考えたらnew/deleteを目にみえる場所で使わないためのvectorだったりするのか
いままで気付かなかったわー
結局このスレはC++初心者ばかりだったということですねw
>>690 いや、根本的に違うだろjk・・・
newはポリモーフィズム使うなら必須っていうかC++使っておいてポリモ使わないとかなにその苦行
Cで多態させるのにnewとかいらなくね?RAIIあるし
>>693 は? 多態とRAIIに何の関連性あるんだアホか
マジでガチ初心者だらけじゃねえか
例えば敵キャラのデータに配列を使うとして、
敵キャラが最大で100体でるのか、それとも10000体以上でるのかわからない、ってのだと
PCの動作環境はどうやって決めるんだろう。
最初に「最大1000体、これ以上は出さない」と決めておけば
1000体動くかどうか確認して、「ちゃんと動くな。ではこのPCの性能を最低環境としよう」ってできると思うけど。
>>694 ちょっと間違って理解してるような気がするので聞いてみるけど
newがポリモーフィズムに必須というのはどういうこと?
ツリーとかグラフ系のデータ構造扱うときはnew必要じゃね?
動的に何かを生成するときは普通使うよね。
ないとできないわけじゃないけど・・・
>>695 基本的には一番重いシーンで快適に動く環境を推奨スペックとして表記するのが普通
その敵が10000体出るっていうのが滅多にないことなら、それとは別に、普通に遊べるスペックを動作スペックということにしとけばいいと思う
newだけど、使い方で一番イメージしやすいのはシーンの管理だと思う
タイトル画面でプレイ開始を選択した時点で、外部からタイトル画面クラスをdeleteしてゲームクラスをnewする
外部では常にNULL以外のクラスをアップデート、的な
あとは、糞大きいクラスを実体化するとき、newやmallocを使わないと失敗して落ちる場合があるってくらいかな
ポリモーフィズムはシラネ
>>697と同意なんだけど
それ以外のやり方あるなら教えてもらいたい
あるクラスに、別クラスのインスタンスを持たせたい場合、
自分はポインタにしちゃうことが多いかなあ。
>>698 Stateパターンだっけ?
>>689 シーンクラスを継承したタイトル画面・ゲーム画面クラスをメインループで常にupdateするっていうのはポリモーフィズムだべさ・・・
Scene* p;
p = new Title(); or new Game();
while(...){
p->update();
}
的な。
クラスに別クラスのインスタンスを持たすこと多いけど、やっぱポインタにしないと駄目なんかな…
何か管理が面倒そうでポインタにしてない
>>704 別にオッケーだべ
というかほとんどの言語ではデフォルトが参照だべ
>>703 あ、やっぱ一般的にはそんな風にシーン管理するのね。
なんかかえって難しそうに感じて、ベタにswitchで回してしまう。
書き方としてはギリギリ読めるんだけど、実感としてポリモの便利さがピンと来ない。
まあポリモーフィズムなんてただの暗黙のswitchなんだからそれでも問題ない
>>702,703
アドリブプログラマだから設計パターンとか用語の定義とかは知らないんだよ……
こうやったら管理しやすくないかなー、ってテキトーに書いてるだけだし
これがポリモーフィズムなら、規模の大きなゲーム作ろうとすれば自然に身につくものなんだと思う
シーンみたいに柔軟性が求められるところを抽象化してもあまり得しないけどね
710 :
702:2011/02/06(日) 04:49:13 ID:3eWOv2dl
>>704 自分も最初はクラスの実体を持ってたけど、必要に迫られてポインタに移行した。
やり方は他にもあるんだろうけどねー。
実態を持つ方がコンパイル時間がかかる
傍から見てて思ったんだが別にポリモ使うのに new/delete 必須じゃなくね
必須じゃないね
void f(Obj* o)
{
途中でかきこんだわ・・・
void f(Obj* o) {
o->update();
}
ObjA a;
ObjB b;
f(&a);
f(&b);
こういうこともできるわけだし
ぶっちゃけゲームが出来上がることが最優先なので
とりあえずCで書き始めて、できる範囲でC++化することにしているよ
現段階では、クラスが変数と関数のセットであることくらいしか使えてねーけどなw
それでいいと思うよ
そりゃC++を完璧にマスターしてから作ったほうが圧倒的に効率いいだろうけど
C++は十年勉強して先輩のコーディング盗んでようやく半人前の世界だからねw
慣れが大事だし使い続けるのが良いと思うよ
使ってるうちに理解が深まる
new、deleteどころかオブジェクト指向プログラミングをしなくても、
ゲームは普通に作れるからな。初心者にとって無関係といえば無関係だろ。
オブジェクト指向勉強したかったらJavaやC#でやったほうがいいと思うよ
C++ではノイズが多すぎて本質がわかりにくい
いちいちクラス作るのも使うのもめんどくさすぎ
visualC++は自動でクラス作ってくれるじゃん
そんな機能が必要なこと自体がおかしいんだよ
別にC++のオブジェクト指向が使えないと言ってるんじゃなくて、
勉強の妨げになる余計なものが多すぎると言ってるだけ
それは同意できるな。
C++はCとのしがらみのせいで無駄に複雑になってる。
純粋にオブジェクト指向を学びたかったら、
しがらみを完全に断ち切ったC#、Javaのほうが分かりやすい
オブジェクト指向を学びたい!のなら教育用の別の言語をオススメするが、Windowsの実用言語として同時に学ぶならC#かなぁ
.NET FrameworkとVisual Studio Expressは非常に強力
Javaもいいんだけど、標準クラスライブラリだけだとWindowsアプリケーションをさくっと作るみたいな使い方が難しい
俺がJavaに詳しくないだけかもしれないけど、GUIの作成周りがどうも・・・
>>714 実質的に必須だろ・・・
引数の参照使って多態もできるけど、それはあくまでも関数レベルの話なんだし
そりゃ部分的には参照使うほうがスタック領域のオブジェクト使うから早いけど、
例えば敵が格納されてるリストの中に複数種類の敵入れたりするときどうすんだよ
古典タスクでも使うのか?
ゲームはオブジェクトの振る舞いを場合によって変化させないといけないから
オブジェクト指向を使うにしても結構訓練を必要とすると思うよ
enumのパラメータの名前がよく被る
どうしよう
クラスに持たせて、クラス名::enum
enumに型名を付けるとfor文で回せなくてめんどくさくね
enum STAGE
{
FIRST,
SECOND,
THIRD,
STAGE_NUM,
};
for(STAGE idx=FIRST; idx<STAGE_NUM; idx++){
}
こういうことができない。
enumは型名がない方がよくね
729 :
名前は開発中のものです。:2011/02/06(日) 23:56:26 ID:o0IXDaRU
C++ってメモリの操作がこまめに出来るからプログラミングの勉強にすごいなると思う
for(int idx=FIRST; idx<STAGE_NUM; idx++){
}
は出来ないの?
>>729 低レベルな作業が勉強になるというなら
クラスもnewもdeleteもテンプレートも使うべきじゃないよ
せっせとHSPみたいなコード書いてればいい
低レベル(!=簡単)な言語の例として挙げただけ
もちろんハード寄りの低レベルな知識は大事だけど
プログラミングには抽象化も重要だ
アセンブラには関数がないからC言語より勉強になるの?
intでできたは
HSPって低レベルだっけ
なにげにアレHSP用の関数実装とか無しに外部DLL呼び出せたりして面白いよね
HSPでdxlib使ってる人っている?
HSPは参照というものが存在してなかったはず。抽象度という意味ではかなり低レベルかと
低レベルって、低級言語って意味で言ってるんだよな?
HSPか
初心者の勉強に向いてるの?
HSPは小学校用と思った方がいい。入口がかんただが、複雑になると泥沼。
HSPは勉強用ではなく体験用と思えばとてもすばらしい環境だな
手軽に弄って手軽なものを作る分には最適だが本格的なものを作ろうとした時に
どうしても仕様上の不便さが目立ってしまう
元々のコンセプトがそういう方向性なんだから本来の目的は達成している筈なんだが
簡便さゆえに万能を求められてしまうなんたらかんたら〜はスレ違いの話だな
まあ勉強が目的なら応用性の高い言語を選択した方が回り道は少ないだろうな
逆に見ればそれ程大規模でもなく複雑な表現も処理速度も必要としないようなソフト製作であれば
HSPでも十分だとも言える
多少の知識があればDXlibの2D機能ぐらいなら一応使えるしな
ちょっとした動作デモが、1時間くらいで組みあがったりしたのを見てビビった
HSPで簡単と思える程度のゲームなら他の言語でも簡単なんじゃね
他の言語て
日本語でおk
他の言語でもおk
HSPって低級言語だっけ
一般には高級言語に分類されてる
せめてクラスか構造体があればな
クラスはHSPのコンセプトからはずれると思うが、構造体は欲しいな
そういえばそれ以前に妙ちくりんな型変換をなんとかして欲しいな
俺的にはHSP=BASICって感じ。高望みはしないし、人に勧める気もしない
755 :
名前は開発中のものです。:2011/02/08(火) 16:05:17 ID:6L0TPnqD
すれ違い
から生まれる
小さな愛
AIにいい参考資料ってやっぱ本買うしかないのかな?
全くイメージが出来ない
AIって言われても漠然としていて何を知りたいのか分からん
いわゆる和ゲーのAIと、洋ゲーのAIじゃあ全然違うだろうな
勇者が死ぬとメガザル
FF13だっけ?味方の戦闘AIの設定いじって戦うやつ
ドラクエであれやってみたら結構楽しそう
どうだろうな。
「HP50%以下でホイミ」と指定されていれば、その通り行動しないとマズいけど、
「いのちだいじに」なら、殺られる前に殺れというのも選択肢に入る懐の広さはあるだろうし。
一応、キャラごとの性格設定や、プレイヤーが勝手に想像する余地というメリットもあるからなあ。
今現在で実用的な意味でのAI というと特定の条件下での話になっちゃうからね
目的とゲーム条件と製作者の好みで決めちゃうところが大きいかと
ぐぐっても見つからなかったので質問です。
リフレッシュレートに依存せず、指定したfpsで処理を行う場合のサンプルがあれば、
その場所を教えてほしいです。
dxlib wiki かなにかがないか探したのですが、見つかりませんでした。
同梱のhelpだと、リフレッシュレートにあわせて処理を変えてしまえというものはあったのですが、
fps60固定でやりたいので、使えませんでした。
普通の2DアクションゲームならどのゲームでもやってるFAQ・TIPSだと思いますし、
wikiにも真っ先に掲載されるようなネタですので、
自分の拙いコーディングと調査で時間食うより、サンプルコピペで一瞬で済ませたいです。
実現方法としては、
・flip時に待たない
・自前で待つ:msec単位の現在時刻取得APIを利用し、sleepする(?)
あたりでいけるとは思ってます。
ご存じの方、よろしくお願いします。
>>766 >自分の拙いコーディングと調査で時間食うより、サンプルコピペで一瞬で済ませたいです。
それを自前でやればスキルアップでほかの部分もより良いコーディングができるようになるかと。
最近はPCも液晶ばっかりで大抵リフレッシュレートが60Hzだから垂直同期依存のソフトも多いんじゃないかな。
まぁ、無精せずにじっくりやれって事ですw
>>766 時前でレートを作ると、がたつき(ティアリング)がおきるぞ、わかってるのか?
リフレッシュレートに依存しないって言うから、
可変FPSの話かと思ったが、どうやら違ったようだ。
龍神録プログラミングの館の43章、「きっちりFPSを制御してみよう」に解説がある
SetWaitVSyncFlag()で垂直同期を切れば思い通りになるはず
771 :
766:2011/02/13(日) 09:42:41 ID:KpZXeEQj
>>770 教えていただいたとおりに実装したところ、思い通りになりました。ありがとうございます!
一番時間かかった問題(sleepでやると2回に1回くらい描画結果がwindowに反映されない)は、
PC再起動でなおりました。
>>767-768 アドバイスありがとうございます。ティアリングは覚悟済みです。
余談ですが、もちろん普通に垂直同期を待つモードもついています。
今回は1関数コピペで済むレベルなので不精しましたが、
そうでない場合はいただいたアドバイスどおりじっくりやりたいと思います。
listのイテレータをstaticで持っておきたいのですが
そのイテレータを使い終わった時に初期化したいです
しかし一体何を入れればいいのかわかりません
別に初期化しないでもバグにならないように設計すればよいのですが
何か気持ち悪くて・・・
初期化しないで使い、毎回使うときに初期化するのが基本だけど、
どうしてもってのならNULLを入れとけばいいです
NULL(=0)は絶対にポインタとしてあり得ない数値なんで、it==NULLなら参照しない、って使い方が出来ますにゃ
(当然、NULLが代入されてるイテレータで要素を参照してしまうとアプリは落ちる)
イテレータstaticでもつって何に使うの
当たり前すぎるのか検索しても引っかからないのですが、
3Dモデルのデータにはテクスチャファイルは埋め込めないんでしょうか?
ごちゃごちゃするのでまとめたいんですが…。
それとも最終的にDXアーカイブにすれば(mv1のみ?)でまとめろって話ですかね。
776 :
名前は開発中のものです。:2011/02/17(木) 18:48:14 ID:L+DlSeIR
DrawRotaGraphってめっちゃ重かったりする?
擬似3Dゲームを作ろうと思ってマップや敵を回転させてたらめっちゃ重い
777 :
名前は開発中のものです。:2011/02/17(木) 18:54:18 ID:s7Rh9Whn
原因はお前のクソコード
778 :
名前は開発中のものです。:2011/02/17(木) 19:06:21 ID:L+DlSeIR
ひょっとして、画像のロードをループのたびにやってるのがいけないのか?
でもさ、フィールド関数の領域???でロードしたら、次から画像ハンドルが空っぽになってんだよ
寿命が尽きたんだ。諦めろ。
780 :
名前は開発中のものです。:2011/02/17(木) 19:18:03 ID:L+DlSeIR
おかしいな、このスレ誰もいないのかな
誰もいませんよ
むしろ自分はDrawRotaGraphで統一してる。
関数によって、座標指定が左上だったり中央だったりするのが面倒だったので。
>>780 せめて24時間は待てよw
>>778 >画像のロードをループのたびにやってる
そんな事やってたら重いのは当たり前だ
>画像ハンドルが空っぽ
明らかなバグ臭、ちゃんととレースしてデバッグしろ
ローカル変数に代入してるんじゃね?staticもなしに
>>778 783も言ってるけどまんま原因はそれだよw
ロードは描画の度やるようなもんじゃない
変数の有効範囲をちゃんと管理できるコードか書けない初心者のうちは、
画像ハンドルはグローバルで置いとくべき
そしてゲーム起動時に全部読み込むくらいでいいにゃん
そしてグローバル変数の初期化にLoadGraph使ってまた発狂
787 :
名前は開発中のものです。:2011/02/17(木) 21:57:53 ID:L+DlSeIR
ありがとうございます
またできる環境になったら試して見ます
またお世話になるかと思いますがよろしくお願いします
またお世話になる前にC言語勉強して公式をよく読め
ログファイルの出力フォルダの設定ってどうやったらできますか?
時間をログファイル名につけて保存する設定にしたのはいいんですが実行するたびにファイルが増えるのでひとまとめにできたらいいなと思うんですが
そう言うのは公式で聞いたほうが早い
ありがとうございます。そうしてみます
DXライブラリ ゲームプログラム講座
のとおりにやってたら、そんなバグ仕込むことは少ないと思うんだけどなあ
よくわかんないうちは、
それを改造していく方法でいいじゃん
ほかにもソース公開してる人がいるから、それを改造していってもいいし
特に変数のスコープを解説されてない講座に従えば、
そりゃ間違いを犯すだろ。改造と並列して原理を学ばないと。
ポインタにNULLを入れて何回でもdeleteしてやる
君がッ! 泣くまでッ! deleteを止めないッ!
796 :
名前は開発中のものです。:2011/02/19(土) 00:11:11 ID:aRLzCjm9
DXライブラリってDirectGraphic使ってるの?
サーセン
>>790 公式でそういうクソみたいな質問させるのやめろよ
軽くソースをあたってみると、公式や2chで質問するより早く分かったりする。
分からないことも多いけど。
ミスのない、凝ったことをやってない、そういうレベルのソースに出会えるといいね。
ゲームのソースって人それぞれオリジナリティに溢れてて読みづらいんだよね
純粋にC++の勉強としては、ゲーム以外のプログラムとかゲームエンジンのソースとか読んだ方がいい気がする
>>763 リメイク版ドラクエ4で「めいれいさせろ」が追加された頃から察してくれ…
縦横座標から濃度と色を計算して1点ずつ描画モードを切り替えて点を打つっていう処理をやったら
案の定遅くなったんだけどやっぱ無謀だったんですか?
関数呼び出すだけで時間かかるから1点1点描いてくのはダメなのかな?
1ドットにつき数回三角関数や逆三角関数を使ったのもあるかもしれないけど
ドット打つところを2*2の四角形に変えたら少しはマシになったのでやっぱ描画関数の呼び出し回数の問題っぽい。
何が言いたいかと言うと、
char gamen[???][???][4]; //縦×横×三色と濃度
みたいな配列みたいなのを用意してこれを渡せば一括で描画してくれるなんて関数があればいいなぁってね。
画像のデータ構造の中身なんてわかんないけど似たような事やってるんじゃないのかな?
ソフトイメージとDrawSoftImageでいんじゃね?
言ってることはこれそのままっぽいし
>>804 片方ずつ実行して時間計れば、処理速度くらいわかるでしょ。
結論から言うと画像を作ってから、一回で描画すればおk。
あーん、あったねぇ……うん、ごめんね。
都合良く、アルファ濃度にも対応してるのあるのね。まさにピッタリ。
DrawSoftImageの説明に重いとは書いてあるけどDrawPixel毎回呼び出すよりはマシなのかな。
今度比べて試してみます。ありがとうございました。
なんか解決したみたいだけど一応書いとく
描画モードの変更関数は結構重いよ
どのくらい重いかというと毎フレーム3000回呼んでたら60fps維持できないくらい
あーそうなんだ。
ドット毎にあのパラメータを変更するためにSetDrawBlendMode呼んでたから、なるほど。
ますますソフトイメージの方が良いみたいだね。
重ね重ねありがとう。
ソフトイメージもクソ重いけどな・・・
804がどんなことをやりたいと思ってるのかが気になる
サブサーフェスみたいなのがやりたいのか、それともお絵かきツールみたいなのを実装しようとしてるのか……
ピクセルシェーダ向きだな
とんでもなく速くなるよ
813 :
804:2011/02/22(火) 05:37:38.23 ID:fi/o64E4
>>811 t:時間
x:キャラの中心線からの相対横座標
y:キャラの下端からの相対縦座標
xmax:模様の横幅/2
ymax:模様の縦幅
red[i][j]=255*sin(0.05*t*t+sin(acos(x/xmax)/16+0.1*t));
alpha[i][j]=255*y/ymax*x*x/xmax/xmax;
これは適当だけどこんな感じの計算をしてキャラの周りを波模様の筒状のオーラが囲むような
演出を作りたかったんだよね一瞬だけど。
だからそこまで必須じゃなかったり。いやドットでやるのは馬鹿げてるってわかってはいたんだけどね。
波長や振幅が固定で良いなら画像なんだろうけどなあ
それだと、やっぱりシェーダか2Dポリゴンかなぁ
C++にLuaを組み込むメリットは処理の速さですか?
現在RPGを製作中で、自分でスクリプトを組んでやってるんですが
若干レスポンスが遅いです
これが改善されるならLua導入も検討しようと思うのですが
スレチ
>>816 軽量設計した簡易スクリプトがluaより遅いって事はまずない
もしも毎回読み込んで構文解析して実行してるならそこで遅くなる
起動時にスクリプトを構文解析して、実行用の中間コードを保持しておくとか工夫してみたら?
luaの長所はスクリプト内でとてつもなく複雑なことをしても動作することがある程度補償されてる点
DXライブラリレベルならスクリプト要らないと思うけどな
記述が簡単なDXライブラリに記述が簡単なスクリプト言語を追加してどうすんの
動的リロードとかは魅力だけどデバッグが更に面倒になるし
Luaというか組み込みスクリプト言語のメリットは動的リロードとコルーチンだろ・・・
スクリプトには再コンパイルなしでイベント追加ができるなどの強みはあるよ
人形劇みたいなイベント有りのRPG作るならスクリプトみたいな仕組みはないと困るんでない?
結局のところ、複数で担当するかどうかというのも大きいよな。
823 :
名前は開発中のものです。:2011/02/23(水) 20:20:54.51 ID:slm3+WaE
2DRPG程度で重くなってる方がやばいな
DXライブラリにluaが合わさったら最強に見えるかも、
と思ったことはある
luaにポーティングとかもう誰かやってんじゃないの?
「lua DXライブラリ」でググるといくつか挑戦したのが見つかるね
Lua+DXライブラリって何かいい事あるの?
なんで良い事ないと思うの?
単純に疑問かもしれないのに
一体何と戦ってるの?
質問の意図次第かな
・DXライブラリを使ったゲーム開発において、
組み込みスクリプト言語を導入することでのメリットとは何か
・DXライブラリ+組み込みスクリプト言語 を用いたゲーム開発において、
ほかの組み込みスクリプト言語に比べてのluaの優位性とは
で回答は変わるわな
DXライブラリは基本的には描画がメインだからなぁ
組み込みスクリプト使うような規模の作品になれば、描画をフレームワーク化するのは当然になるし、
有用な組み合わせとしては「DXライブラリ+スクリプト」というよりは「自作フレームワーク+スクリプト」って感じになって、
DXライブラリを使うかどうかって所はあまり関係しない気がする
いや、DXライブラリとLuaを組み合わせたら最強とかあったから、
何か他のものとは違う特別なメリットが得られると思った次第。
言葉足らずでごめん。
別にそういうのは無い感じなのかな?
単に開発が楽ってだけだろ
Luaじゃなしに組み込みスクリプト言語ならそんなに変わらん
速度面・普及面じゃLua一択だが
DXライブラリで開発してる人は、大なり小なりフレームワーク的なものを組んでるような気がする。
この辺の情報ってあんまり出ないよね。
単に、Tonyu systemみたいな環境を自分で作れたら夢が広がりんぐ 程度の意味だと思うよ
Luaの場合は構文やクセの把握をしておけばまたどこかで役に立つ可能性があるくらいには普及してる
どっかの誰かが作ったほとんど使われてないスクリプ言語はそういったトライアンドエラーを他の環境で活かせる度合いが小さい
・・・程度の差はあるね
まあ損しないことばかり考えてると何も作れないんだがなw
DxLibはゲームライブラリって感じじゃないからなぁ
そろそろスレチ
DXライブラリとフレームワークについては興味あるなあ
まぁこれもDXライブラリに限らない話だからスレチかな
良くも悪くもラッパーライブラリだしな、フレームワーク必須に近い
それなりの規模なゲームを作ろうとしたら自前実装だらけになる
ゲームフレームワーク作るなら、DXライブラリで楽できる分なんて
作業全体の中では少ないから結局自分でやっても変わらん
>>841 いや、割と結構な部分省けるべさ
レンダリングフレームワークを作る手間がまるまる消えるんだし
DXライブラリの上に自前フレームワークを作るのなら
DirectXの余計なことに頭を使わなくてすむ。
クラス設計とかだけを考えれば良いからすごい楽になる。
ってか楽になった。
俺はもうDeviceLostと格闘するのは嫌だわ・・・
>フレームワーク
ベースの部分を、DXライブラリとそうでないものとで切り替えられると良いんだろうけどな。
BGMのループポイントの話だけど、ループポイントの設定の仕方がミリ秒とサンプルとバイトの3つあるけど、
それぞれメリットデメリットってあるの?
細かさは
バイト>サンプル>ミリ秒
なのはいいとして、やっぱバイト単位とかのほうがミリ秒と違って再生環境によるズレが無いのかな?
バイトってなんかこうファイルを直接見てる感じがするからそんな気がするのよ。
もしそうじゃなくて「ミリ秒でずれるときはバイトでもずれる」とかなら俺的には
バイトのメリットが無いからもうミリ秒でいいやって話になるわけよ。
どうせ10ミリ秒ぐらいの違いじゃあわかんないし俺。
というか
ttp://izuministrator.com/ref/ によると
SetLoopPosSoundMem
でバイトでの指定ができるはずなんだけど、なぜかミリ秒指定と同じ動きになっちゃってるから
バイト指定できなくて困ってるのよね。
長文スマソ
公式のリファレンスでは、現在SetLoopPosSoundMemはミリ秒指定用の関数になってるね
ミリ秒でもズレないからミリ秒でやったほうがいいと思うよ
コード見たわけじゃないけど、多分内部では計算して単位揃えて同じ動作で動いてると思うし
バイトやサンプル数だと、周波数とか変えたとき変更しなきゃなるし、メリットは殆ど無いって言っていい
なるほどありがとう。
しかしまぁ公式リファレンスは
int GetCurrentPositionSoundMem( int SoundHandle ) ;
の項目で
int SetCurrentPositionSoundMem( int SamplePosition, int SoundHandle ) ;
のと同じ説明書いてるし信用できないな。
とりあえず名前が違うのに同じ挙動の関数がある時点で、
どちらかはバイトのほうを実装しようとして間違えたんだと思うけど。
バイト指定なんてしても変なずれ方するだけだし最小単位はサンプルでいいと思うけどそれは置いといて
ソースみたところ、SetLoopTimePosSoundMemとSetLoopPosSoundMemの実装が同じコードになってる。多分バグじゃないかな。
メリットデメリットの話で言うなら、それぞれの関数は内部でSetLoopSamplePosSoundMemの実装を呼び出してるだけなので全く同じなはず。
同じような内容で、引数が違う関数の場合、
片方が他方のラッパーなんだろうな〜と思ってソースを眺めてみると、実は違う場合があったりするよな…。
そこら辺揺れるのが非公式関数だからなー
そういうのは公式に質問したほうがいんじゃないかな
なんらかのリアクションあるだろうし
DXライブラリでも、ちゃんと作れば状態遷移を行って帰ってきても1バイトたりとも増えないの?
メニュー画面からゲーム画面に行って帰ってくるとメモリ使用量が増えてるんだけど。
ちゃんと各画面において終わる時にInitGraphとInitSoundMem呼んでるしのに。
ファイル読み込み関連はLoadGraphとLoadDivGraphとLoadSoundMemしか使ってないからこれで大丈夫のはずなんだが。
fopenも使ったけどちゃんとfcloseしてるし。mallocの類は全く使ってない。
メモリ使用量って何を見て言ってるの?
タスクマネージャなんだったら、ウィンドウを一時的に最小化してみたらいいよ
タスクマネージャの数字を減らすのは、自称詳しいユーザーを安心させる程度の意味しかない
最小化すると正しい値が出るの?
やってみたけどやっぱ上がったものは上がったままだなぁ。
ループを進めて時間が経ったらメモリ増えなくなるかも知れない。
ある程度のメモリは即開放されずに内部に留められたりするものらしい
読み込んだファイルはOSが一時的にキャッシュ保存しているよ。
じゃ、じゃあやっぱ気にしなくていいってことかな……うん。
状態遷移のたびに際限なく増えてるならメモリリークの可能性大
あともしVista以降だったらタスクマネージャにデフォルトで表示されてるプライベートワーキングセットには
DLL側のメモリの使用量は含まれてないよ
えー……じゃあやっぱ原因探さないとな。ありがとう。
>>858 何処を見て判断しているか説明しないと、色々出るだけだろ。何処見てるんだよ!
いや、タスクマネージャ……
とりあえずゲームループに入って100秒くらい経ってもまだメモリ増えるならアウト
や、やっぱり法則がわからない。
何事も、初めのうちは増えるんだよね。
例えば効果音で、初めのうちは鳴る度にメモリ増えるんだけど、
何度も鳴ってると増えなくなる。
画像の読み込み+表示でもそうみたい。
また肝心な事言い忘れた。
そういうことだから、やっぱループし初めは初めて尽くしだからポンポン増えてくけど、
落ち着けば変わったことが起こらない限り増えない。
重ね重ねごめんね。誤字
ループし初めは初めて尽くし→ループし始めは初めて尽くし
ずっと動かし続けてみたら?
数時間プレイし続けただけで落ちたらメモリリークだろうし
プログラマ諸兄方に教えて頂きたい。
正直、俺のヘボいプログラムを人に見せるのは恥ずかしいけど、
訊くは一時の恥、とサンプルを晒します。
ttp://www.dotup.org/uploda/www.dotup.org1396225.zip.html あくまでサンプルで、適当にやってるところもあるけど、大体において俺はこんな形でゲーム作ってます。
ご覧の通り一応動きはするけど、プログラムの組み方は拙いです。
これをいわゆる普通なやり方に直すとするとどうなりますでしょうか。
特にキャラクターデータやグラフィックハンドルの管理をどうしてるのか、とかが知りたいです。
よろしくお願いします。
で、ダウンロードパスは?
あ、すみません。書くの忘れてました。
DXlib です。
やり方に直すって、全部コード書けってことかい?
流石に面倒だぞ
ぱっと見たところ、クラスちゃんと使えよと思ったな
C++の言語仕様くらいはちゃんと勉強しな
あとキャラクタ管理にはリスト構造とか使えばいいと思うよ
拙いという割にはちゃんと細かい処理も関数に分けてて分かりやすいと思う
コメント多めなのも良い
クラスなんて構造体扱いでも全く構わないよ
全体的にわかりやすいベターCコードって印象
構造体扱いなら
class Hoge{
public:
};
なんてせずに
struct{
};
でいいだろ。
そもそも、C++的に書きたいのか、C言語的に書きたいのかってのを言わんと目指すコードが分からんよな。
struct Hoge{}; だったすまん
>>866 コメントも多いし処理ごとにブロック化されているので
読みやすくて(保守しやすいので)良いと思う。
敢えて言えば、サンプルだからかもしれないけれど
敵のタイプや数はマジックナンバーを使わないほうがいいと思う。
ENEMY_DATA[100]も、#define ENEMY_NUMBERS 100 とかにして
まとめてヘッダに定義しておけば可読性もあがるし、敵の数を
変える必要があっても、他の部分(たとえば敵初期化時の
forループの所とか)も直さなくていいから、楽になると思う。
>キャラクターデータやグラフィックハンドルの管理
C++で書くつもりなら、ゲーム内のオブジェクトについては
まず基底クラス作って、そこから各キャラを派生させて
敵や弾ごとにリストや、マネージャーとなるクラスで
管理しておけば処理や修正も楽だよ。
そうしておけば、サンプルのように描画時に敵のタイプで
switchしなくても、たとえば敵リスト->Draw(); みたいに
書くだけでOKだし、もし新キャラを後で追加したくなっても
Draw_rtn関数内は何も修正しなくてすむ。
同様に移動処理も、基底クラスのメンバに仮想関数として
Move()とか持たして、派生先の各キャラごとに実際の処理を
書いておけば、Move_rtn関数内では
敵リスト->Move(); とかしておくだけですむ。
でも最初にカッチリと複雑なものを作ろうとして、
いつまでたってもゲーム完成できない…というのは最悪なので
当面はこういう感じで書いていくのもいいと思う。
不便や必要を感じたら、その都度勉強したらいいし。
こういった話はDxLibの話とは関係ないし、
C++で書かれているゲーム開発用の入門書のサンプルにたいてい
載ってると思うので何冊か買ってみるといいかも。
しかし管理人様はマジですげーぜ
同意
画像のハンドル=ポインタですか?
違います
879 :
はじめまして。:2011/03/06(日) 22:54:57.95 ID:QYrw4Tbt
880 :
はじめまして。:2011/03/06(日) 23:00:32.76 ID:QYrw4Tbt
すみません、ちょっと怪しい部分がありますので、
もう少し自分で調べてみます。
881 :
はじめまして。:2011/03/06(日) 23:12:39.74 ID:QYrw4Tbt
ミスでした。思い通りに描画できました。
(update()でも描画していたというオチでした。。w)
透過処理のポリゴンは大変なんですよ。
Zバッファーへの書込みをしなかったり、Zソートして描画しないといけなかったり。
>>879は、単にZバッファーに書込みしてるのでそれをOFFすれば、そのシーンだけは
正しく表示されるかな。
Zソートってみんなどうやってるの?
俺とりあえず表示する予定の全モデルの全メッシュを片っ端からキューに入れて
メッシュ座標の最大値と最小値の中点求めて
それのワールド座標求めてそれのスクリーン座標求めてそれのZでソートかけて描画してる
糞重たそうwwww
最近のPCスペック高いからぜんぜんわかんないけど
PlayMovieでGIFアニメの再生が可能、と聞いたのですが
なんかFPSが安定しないな〜って思って
vsync待ちする時間を1分測ってみたら
60fps目標でで20ミリ秒以上待つフレームが
0.3〜0.6%ほどあるんだけど
そういうもんなんかな?
BGMとゲーム内容を同期させたいから0.2秒くらいずれると
違和感感じるようになって困っちゃうんだよね
>>885 どういうコード書いてるか知らんけど
自分は龍神録のコードのfps制御のとこだけコピペしたらすごい安定したよ
>>886 簡単なテストコードなんだけどね〜
前回ScreenFlipした直後と
今回ScreenFlipした直後の間の時間を求めるだけの
自分の環境だけなのかどうか判断したいんで
ちょっと試してみてくれんかな?
ウィンドウモード時とフルスクリーンモード時の二つ
ソースも一応いれといた
http://www1.axfc.net/uploader/Sc/so/212454 パスはvsync
フルスクリーンの時のほうがタイムオーバーする回数がだいたい2倍多くなるんだよな〜
タイムオーバーカウントとやらは
ウィンドウ:0〜3回
フルスク:6〜12回
程度。
フルスクは立ち上がりの1秒くらいが不安定っぽいな
関係ないかもしらんが俺の環境ではフルスクリーンだとなぜかVsync待ちすらしてないようでvsync_time: 0.005くらいが出まくってた。カウントは16。
環境設定で垂直同期オフのタイマー待ちモードを選べるようにしたらいいんじゃないか
似たような話で申し訳ないが、俺もちょっと気になる事が。
俺は垂直同期信号待ちを切ったプログラムを組んでる。
それとは別に、ウィンドウモードかフルスクリーンモードかを記録して、
プルグラム起動時にはその記録を読み込んで、どちらのモードで始めるか決まるようにしてる。
で、ここからが気になる事なんだけど。
フルスクリーンで起動した時は、まったくティアリングが出ないんだけど、
ウィンドウモードからフルスクリーンに切り替えた時は酷いティアリングが発生してしまう。
(フルスクリーンで起動して、一度ウィンドウモードにしてからまたフルスクリーンに戻しても同じ)
普通に考えたら垂直(略)待ちしてなければティアリングは発生して当たり前なんだから
フルスクリーン起動時の方が特殊なんだろうか??
他の人でこういう現象を経験した人っていますかね。
>>892 フルスクリーン → ウィンドウモード → フルスクリーン の時の動作が良くわからんなあ。
>>892 その様な話を聞いた気がする。新しいので治っていたような…と曖昧な記憶があった。
グラフィックの白い部分は濃度100%で、灰色の部分は濃度50%で描画したいんだけど、いい方法ないかな?
そうしたいグラフィックをhoge_a.bmpにして真っ白いhoge.bmpも用意してhoge.bmpのほうを描画するようにすればいいんだろうけど
あんまスマートじゃないよね。
それ加算合成じゃね?
違うのよね。例えば描画しようとした場所が元々、色(255,128,0)だったら
白い所は色(255,255,255)になって灰色(128,128,128)の所は色(255,192,128)になって、黒いところは色(255,128,0)のままって感じ。
ようはアルファブレンドの濃度を画像から読み込みたいの。
DrawGraph系はそれがデフォで実現できるんだけど。
素直に
>>896に描いた通りに画像を用意するか、そういう透過度のPNG画像を用意するかだね
PictBearとかあればぐその通りのPNG生成できるし
ああーPNGかぁ……そういえばそんなのもあったねぇ。
16色BMPしか使った事無かったからその発想は無かった。
言い忘れた。
回答ありがとうございました。
16色BMPっていつの時代だよw
いやなんかこう、描いたまんまなのが保障されて信用できるっていうか。
(0,0,0)だけが透過されるってわかりやすいし。元々俺ドット絵しか描けないし。
でもPNGって色情報とその色が何ビット連続で続くかっていうデータ構造なんだっけか?
それなら見た目は変わらないだろうしそのほうがサイズ的にもいいんだよね。
いや前から気付いてたんだけどね、めんどくさいからずっとそのままでやっての、ごめん。
PNGは基本的にはピクセルのデータをzip圧縮してるだけ
可逆圧縮だから絶対に全てのピクセルが描いたままの色になる
俺も最初bmpでやってたけどpngにしたら
かなり表現したいものが楽で簡単に作れるようになった
おすすめ
楽で簡単ってなんだよ…orz
やったぁPNGでできたヨーありがと
PNGでドット絵というなら、pngoutっていうフリーのコンソールアプリケーションでPNGの最適化とかおすすめよ
別にしなくてもいいけど
ということはデフォルトでは最適じゃないってこと?
まぁ情報ありがとう。
圧縮の最適なパラメータ値を探し出すのは
わりと時間がかかるからね。
男は黙って32bitBMP
データーがでかすぎじゃん。
最近のゲームはDVD埋めるためにBMP使ってるとしか思えん
最近のゲームってBMPなのか?
違法コピー対策にデータ量水増ししてるという話は聞いたことあるけど
でも結局実行するときには展開するわけじゃん。圧縮したまま表示できるわけじゃないし。メモリ使用量は変わらんのでしょ?展開処理が省かれる方がいいじゃん
メモリやCPUの少ないPSとかの中期コンシューマ機はわからないけど、
そういった処理能力が十分にある最近のPCは「展開速度<読み込み速度」だと思うのよね
大きいファイルをHDDガリガリ言わせて読み込むよりは、小さい圧縮ファイルをちょいと読み込んで、
高速なメモリやCPUで展開した方が速度的には早いんじゃないかな
そもそもそんなbmpとかpんg違うだけで変わってくるもんなんか
SDカードからデータを読み込む時マップ移動でめっちゃ遅かったけど
圧縮してみたら物凄い早くなってびっくりした
そりゃHDDに比べて転送速度がかなり遅いのが多いからな
>>884 過去スレにそういう話が出てた。
14ヶ月ぐらい前のレスだったけど、多分
今も再生できると思う。
645:名前は開発中のものです。[sage]2010/01/18(月) 19:34:01 ID:YzUndEty
gifアニメ、
PlayMovie()で出来たはず。
つい2か月前じゃんw
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
>>890だけど
結局vsync待ちするのやめて
ティアリング発生覚悟で
高精度パフォーマンスカウンタでFPS制御することにしたわ
すげー安定した
ティアリングも思ったより気にならない
そういえばVistaか7かでOS側がティアリング防止してるなんて話も聞いたような気がする
垂直同期信号待ちとかもうする必要なさそうだね
>>923 らしいね、オレはXPだから関係ないけどな〜
どういう仕組みでティアリング防止してるんだろ
ちょっと調べた感じだと、単純に1フレーム遅らせてるだけみたい
Vistaでマウスの位置に画像を表示するだけのプログラム動かすとちょっと遅れて付いて来てるような感じを覚えてるなそういえば
DWMは画面全体をゲームの画面と同じように描画するんだよ
DXライブラリの言葉で説明すると、まず各ウィンドウをそれぞれ別々のグラフィック(テクスチャ)に描いて
それをDrawGraphで裏画面に描画した後、垂直同期待ちを行ってから表示する
管理人さん無事みたいだな
おお、よかった
よかたよかた
ふう
931 :
名前は開発中のものです。:2011/03/14(月) 22:40:22.44 ID:gNx4XTy2
流れぶったぎったうえに初心者で申し訳ないんですが、質問させてください。
アクションゲームを作ろうと思っているんですが、
CheckHitKey関数でキー情報を取得→ベクトルで座標計算
という風にすると左キーと右キーを同時押しした時に
右と左に同時に座標が計算されて、キャラが静止してしまいます。
これを回避するにはどうすればいいでしょうか?
まだポインタも理解していない程なので理解力が低いかもしれませんが、
よろしくお願いします。
静止しちゃまずいのか?
どう動いて欲しいのかを書かない限り「どのコードも正しい」
933 :
名前は開発中のものです。:2011/03/14(月) 22:55:43.30 ID:gNx4XTy2
>>932 すいません、言葉足らずでした。
反対方向のキーを押した場合、
後から押した方のみを計算したいんです。
(右を押しながら左を押すと左に行くみたいな)
GetNowCount関数を使って時間差で比べようと思いましたが、
どうにも上手く書けなくて…
出来れば教えて頂くのは考え方だけで、
ソースは自分で頑張りたいと思います。
前のフレームの状態を覚えておくんだよ
それを現在の状態と比較すれば、押されたキーや離されたキーがわかる
935 :
名前は開発中のものです。:2011/03/14(月) 23:13:39.89 ID:gNx4XTy2
>>934 アドバイスありがとうございます。
秒じゃなくてフレームじゃないと駄目だったんですね。
…そりゃそうか。
完成できるよう頑張ります!
while(1)
{
old_left_key_state = left_key_state;
old_right_key_state = right_key_state;
if(CheckHitKey(LEFT_KEY)){ left_key_state = PUSH; }
else{ left_key_state = RELEASE; }
if(CheckHitKey(RIGHT_KEY)){ right_key_state = PUSH; }
else{ right_key_state = RELEASE; }
if(left_key_state == PUSH && right_key_state == RELEASE){ press_key = LEFT_KEY; }
if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
if(left_key_state == PUSH && right_key_state == PUSH){
if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
}
}
937 :
名前は開発中のものです。:2011/03/14(月) 23:54:12.21 ID:gNx4XTy2
>>936 コードありがとうございます。
自分で作るとか言っときながら、あっさり見てしまいました。
でも参考になりました!やっと悔いなく先に進めそうです。
これ関係ないキーまで256回もチェックするのが気になるのだが
256回程度じゃ問題ないという考えなのか
あとその上の奴は4塊目
普通
else if(left_key_state == RELEASE && right_key_state == PUSH) { press_key = RIGHT_KEY; }
else if(left_key_state == RELEASE && right_key_state == RELEASE){ press_key = NONE; }
入れるもんじゃないのか
もしそうするとその次の
if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう
それとその後の
if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
だが
left_key_state == PUSH && 、right_key_state == PUSH && いるかね
こまけえこたあいいんだよ?
>>939 「これ」とか「その」とかってなんだよ、ちゃんとどこか安価でもしろよ
答える方に探せってか?
幸いレスが近いから
>>936のことだろうって分かるけどよ
あと4塊目ってなんだよ、そんな言葉初めて聞いたよ
簡単な例示のプログラムなんだから
こまけぇこたあいいんだよでおkだろ
おまえの言ってることはあってるけど、動作的には同じだろ?
条件を明示的にわざと条件を冗長に書いて
コードの可読性を上げるという意味はある
nに1〜4までしか入らないswitch文でも
switch(n){
case 1: break;
case 2: break;
case 3: break;
default: break;
}
とは書かんだろ?
>これ関係ないキーまで256回もチェックするのが気になるのだが
全部のキーを調べないと汎用性がないだろ
もし、使いたいキーが増えたらその都度増やすのか?
べつにそれでもいいけどさ
あと、普通はGetHitKeyStateAll使うだろ
普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
あと安価付けるの照れ臭いんだ
察してくれよw
4塊目ってのは言い方が思い付かなかったんだから分かるだろと思って俺が勝手に作ったんだよ
分かるだろ?w
まあ何か言い方はあるんだろうけどすぐに思いつかなかった
まあそれだけのことだw
明示的にわざと書いてとは言うがこの場合は書かなくても分かると思ったんだよ
まあ人それぞれだろうが
全部のキーを使わないと汎用性ないだろとは言うがだからといって256個も使うわけねえだろって思ってw
大体方向キーとボタン数個だけだろ、使うとは言っても
いくら汎用性がないとはいえ調べる必要ない奴の方が圧倒的に多いのに256個もチェックする必要があるかねって思っただけw
942 :
名前は開発中のものです。:2011/03/15(火) 09:12:40.30 ID:gnI9eXa6
芝
だから
> if(left_key_state == PUSH && right_key_state == PUSH) も else だけで済むでしょう
は置いといてもだ
> if(left_key_state == PUSH && old_left_key_state == RELEASE){ press_key = LEFT_KEY; }
> if(right_key_state == PUSH && old_right_key_state == RELEASE){ press_key = RIGHT_KEY; }
の
> left_key_state == PUSH && 、right_key_state == PUSH &&
はすぐ上に同じ条件があるんだからいるかね?って思っただけ
まあ別に大した問題ではないんだけどねw
それでも細かい俺は気になったの
細かいこと気にし過ぎ?w
まぁ情報が少なくて困るよりは、
教科書どおりの良い情報と、流し見でいい発展情報とがあるほうが、いいんでないかい
教科書と発展とが混ざってわからなくなると困るけど、そこはみんな
鋭くツッコミ入れてくれるところだしな
>>943 気にしすぎ
あとイチイチ語尾に芝はやすのうざい
真面目にレスする気なくす
>普通はGetHitKeyStateAll使うってのは言おうとしたけどやめたんだ
言えよ
>あと安価付けるの照れ臭いんだ
>察してくれよw
ムリ
あとはコーディング規約をどうするかって話だけだ
そこは人と場合それぞれで明確な解答はない
以上、もうお前にはレスしない
bool Input::KeyDown(BYTE key)
{
return (m_keyInput[key] & ~m_keyInputPrev[key]) == 1? true:false;
}
俺は上みたいにしてるよ
前フレームのをmemcpyで配列毎コピーすれば良いと思う
>>945 今回は敢えて言う必要ないかなと思っただけだよ
レスしねえなら最初っからすんじゃねえカス
相手からの反論がないならと安心して罵倒か
カスはお前だろw
>あと安価付けるの照れ臭いんだ
>察してくれよw
無茶言うなw
プリコンパイル済みヘッダって、DxLibくらいじゃ効果薄いよね?
とある人の受け売りだけど、VCにてビルドを超高速化する方法
自作のヘッダファイルにはインクルードガードを施す
↓
cppファイルを1つを除いて全部「ビルドから除外」する
↓
そして、その1つのcppファイルにそれら「ビルドから除外」したcppファイルを全部インクルードする
↓
ビルドする
↓
サラマンダーよりはやーい
プリコンパイル済みヘッダはシラネ
>>951 最後なんなんだよ。
俺とやる気か?あ?
>>950 めっちゃ早くなってるよ
アホだから設定苦戦したけど。
>>951 それって1ファイル書き換えただけで全部の.h/.cppをコンパイルし直すことにならないか?
>>954 よっぽどの量でない限り、一つのファイルのコンパイル速度はコード量に左右されないよ
ビルドで時間使ってるのはプリプロセスやobjのリンクで、それをすっ飛ばせるとかなり早くなる
cppが多いプロジェクトを書き換えると感動すると思うよホント
正直今まで人に教えるのを勿体無いと思ってたレベル
つうか、普通にそういうのオフに出来るオプションあるんじゃないの?
いや、詳しくは知らんけど。
>>951 includeの順番間違えて
ビルド出来るようにするまでちょっと戸惑ったけど
むっちゃくちゃ速くなった、ありがとう
#includeでcppか……違和感はあるな
LL系言語のloadfileみたいだなw
理に適ってるかどうかは置いといて、非合理的ではある
961 :
名前は開発中のものです。:2011/03/16(水) 16:22:15.68 ID:zS54Nj1q
なぜ非合理的なのでしょうか?
962 :
名前は開発中のものです。:2011/03/16(水) 16:25:58.79 ID:zS54Nj1q
つか、理にかなってないかわからないけど
非合理的って矛盾してね?
合理的かどうかは知らんが、スピードを優先するために何かを犠牲にするって話だよね
何かってのは例えば
>>957がたどったような手間とか
>>963 オレがその
>>957だが、ビルド出来るようにする手間より
ビルドにかかる時間の短縮のほうがでかかったよ
すげ〜得した
>>955の言うとおりcppファイルが沢山あるプロジェクトほど効果はデカイ
>>960のレスこそ非合理的って話だな
まぁぶっ飛んだ裏技的やり方だからね
C++の仕様を理解できてコードの依存関係を頭の中でちゃんとイメージ出来る人だけ
楽する手段としてつかって欲しい感じ
このやり方を支援するプラグインがあればいいのにな
てか、俺からしたらそんなにビルドに時間がかかるほどのゲームを作ってる人がいるのに驚きだ。
しかもDXライブラリを使って? いったいどんな規模のゲームなんだ。
968 :
名前は開発中のものです。:2011/03/16(水) 19:17:48.09 ID:BC+pXFRw
デフォでオフだけど並列でビルドするオプションがある
すごく早くなる
// main.cpp
#include <stdio.h>
#include "sub_1.cpp"
#include "sub_2.cpp"
extern int get_sub_1_val(void);
extern int get_sub_2_val(void);
int main(void)
{
printf("sub_1_val: %d\n", get_sub_1_val());
printf("sub_2_val: %d\n", get_sub_2_val());
return 0;
}
// sub_1.cpp
static int val = 10;
int get_sub_1_val(void){ return val; }
// sub_2.cpp
static int val = 20;
int get_sub_2_val(void){ return val; }
sub_2.cpp(1) : error C2370: 'val' : 再定義 ; 異なるストレージ クラスです。
sub_1.cpp(1) : 'val' の宣言を確認してください。
なるほどね
Cだと駄目だね
無名空間とかもそうなるのかな?
>>967 そんな大規模じゃなくてもcppファイルが多くて…… STGなんだけど、
自作計算関数、自作システム関数、保存データ管理関数、敵クラス、弾クラス、その他オブジェクトクラス、
ゲームシーンクラス、メニューシーンクラス、リソース定義……とか
全体の行数はたった6000行ちょい(空改行除く)
>>969 extern宣言してないグローバル変数の衝突は仕方ない……
てか考えると思ったよりも問題の出るケース多そうね……
>>968 教えてくれてサンクス
一瞬で終わって驚いた
全体の行数ってどうやったら数えられるんだっけ?
書き忘れた、もちろんVCの話で…
行数カウントツールが、フリーソフトページにあるよね
並列ビルドはぐぐったけど見つからなかった
複数プロジェクトを同時ビルドってのは初期値が2で最大値が32みたいだけど、これは違うよねきっと
976 :
名前は開発中のものです。:2011/03/17(木) 01:14:09.79 ID:jlNSzrqd
VCに「複数プロセッサによるコンパイル」という項目がある
プロジェクトのプロパティ>構成プロパティ>C/C++>全般>複数プロセッサによるコンパイル
だな
VC++2010にはあるけど、VC++2008には無いみたいだな
2008なら/MPオプションを直接与えればいい
画面上にクリックできるボタンを表示するのってどうしたらいい?
GetMousePoint で、マウスがボタンの位置にあるときにクリックしたらボタンを押したことになるようにする?
むしろマウス位置取得とかクリック検知以外の方法でいいのあるならおせーてほしい
クリックした瞬間マウスポインタがボタン範囲内で且つそのまま範囲から出ずにリリースしたら動作→ネットブラウザとかのリンク
クリックした瞬間マウスポインタがボタン範囲内で且つ範囲内でリリースしたら動作→Janeの書き込むボタンとかのGUIに多いボタン
クリックした瞬間マウスポインタがボタン範囲内なら動作→ネットブラウザとかのタブ切り替えみたいな部分
クリックした瞬間マウスポインタがボタン範囲内でかつリリースしない間動作→ドラッグ、リリースした瞬間→ドロップ
クリックした瞬間マウスポインタがボタン範囲内でかつリリースしない間、範囲内にマウスポインタがあるとき動作→ボタンの押されてる画像
クリックした瞬間、押してる時、リリースした瞬間、とそのときのマウス位置のボタン内外、の組み合わせで色々なボタンが出来るようにしてる。
一度作っちゃえばいいんだけどややこしかばってん。
そんな特殊な操作を細かく識別する必要がある時点で、コモンコントロールのボタンなんかどうせ役に立たない
ボタンからマウスカーソルが出たとかいろいろイベントはあるけど、余計に複雑になるので自前で調べた方が早い
だいたいそんなもんDXライブラリで作るのが間違ってる
MFCとかC#とかでやれ
なんでコモンコントロールの話が?
たったそれだけのことで言語乗り換える方がアホだろw
たいして複雑じゃないだろww
ややこしいとは思わんけど、ボタンクラスは一回作っておくと便利そうだな。