2 :
名前は開発中のものです。:2007/12/12(水) 23:21:35 ID:xalqmGO7
これってWin9x系じゃあ動かないの??
必須環境及びソフト
WINDOWS98以降のOS
VisualC++ 6.0以降( VisualC++6.0 及び VisualC++.netで動作確認 )
又は BorlandC++ Compiler 5.5
これがないと何も作れません
5 :
名前は開発中のものです。:2007/12/13(木) 20:19:50 ID:AVydRpFA
あの・・・質問です・・・
DXライブラリを用いて作ったゲームを実行すると、
"Log.txt"というファイルが作成されてしまいますが、
起動しても、このファイルが作成されないようにする簡単な方法は無いのでしょうか?
お願いします。
7 :
名前は開発中のものです。:2007/12/13(木) 22:05:52 ID:AVydRpFA
あの・・・質問です・・・
DXライブラリを用いて作ったゲームを実行中に
[Alt]+[F4]キーで強制終了すると、確かに画面は消えますが、
タスクマネージャを起動し、プロセスを確認すると、
終了したはずのソフトがバックグラウンドで動き続けています。
また、ウィンドウを閉じる[×]ボタンをクリックしても同様の症状が発生します。
これら症状を発生させることなく、ソフトを完全に終了させる方法がありましたら、是非教えてください。
謙虚なようでいて割とずうずうしいAVydRpFAに笑う。
つか俺もそれなったことあるな。
ちゃんとDxLib_end通って終わらせるようにしてる?
いつの間にかC#版出てたんだな
10 :
名前は開発中のものです。:2007/12/13(木) 22:25:59 ID:AVydRpFA
>>8 一応プログラム上は最後にDxLib_endを通るはずですが、
強制終了した場合にどのような処理が行われるのか分からないので、
その場合にDxLib_endを通っているかは不明です。
DxLibには[×]ボタンがクリックされた場合の条件分岐なども可能なのでしょうか?
>>5 SetOutApplicationLogValidFlag( false ) ;
強制終了するとProcessMessage()が-1を返すのでそれで分岐。
上手く終了できました。
ありがとうございました。
しかし伸びないなこのスレ。あんまり使ってる人いないんかな?
オフィシャルの掲示板がしっかり機能してるからでは。
3D機能がもうちょっと使えるようになったらなぁ。
PSの初期レベルでいいんで。
一応、書籍もあるしな。14歳からシリーズも横スクロールアクションゲームを
作るとかの続編を出しても売れそうな気がするのだが・・・。
裏でニコニコ見てると糞重くならね? そういうもんなの?
>>17 オンボード(グラフィックボードを持ってない)と、動画系の処理は凄くCPUを使うから
他のアプリケーションにかなり影響が出てくるよ。
まぁ、オンボードじゃなくても、コーダーとか色々な関係で処理が取られる事もあるのかもしれんが。
うん。たしかにうちのはオンボードのしょぼいやつだ。
CPUもPen4の2Ghzといまとなっては古い。そろそろ替え時かな。
フルスクリーンとウィンドウモードのフリップでロストしなければいいんだがなぁ…
この機能、DirectX8から搭載されているはずなんだが…
これつかってると、いざ3Dに移るとき移りづらくね?
書き方がかなり変わるからな
DXライブラリに限った質問じゃないのですが、
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
char key[256];
int x=100,y=100,flag=0;
ChangeWindowMode(TRUE);
if(DxLib_Init()==-1) return-1;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(key) && key[KEY_INPUT_ESCAPE]==0){
if(flag==0){x++;}
else{x--;}
if(x==0){flag=0;}
if(x==540){flag=1;}
DrawBox(x,y,x+100,y+100,GetColor(255,255,255),TRUE);
WaitTimer(1);
}
DxLib_End();
return 0;
}
白い四角形を左右に移動させるプログラムです。
このようなプログラムだと四角形がちらついてしまうので、
ちらつきをなくすために裏画面に描画した後にその内容を反映させるプログラムに書き換えると、
ちらつきは無くなりますが、描画速度がとても遅くなってしまいます。
それで、描画速度は早いままでちらつきをなくすにはどうすればいいですか?
>>22 ダブルバッファするだけで速度遅いって、どんなマシン使ってるの?
24 :
名前は開発中のものです。:2007/12/31(月) 17:50:51 ID:HemtJlOn
>>22 >>23 俺も処理落ちが激しいので、考えちゃう
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
char key[256];
int x=100,y=100,flag=0;
ChangeWindowMode(TRUE);
//SetDrawScreen( DX_SCREEN_FRONT ) ;
if(DxLib_Init()==-1) return-1;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(key) && key[KEY_INPUT_ESCAPE]==0){
if(flag==0){x++;}
else{x--;}
if(x==0){flag=0;}
if(x==540){flag=1;}
//SetDrawScreen( DX_SCREEN_BACK ) ;
DrawBox(x,y,x+100,y+100,GetColor(255,255,255),TRUE);
//ScreenFlip() ;
WaitTimer(1);
}
DxLib_End();
return 0;
}
>>24 fpsはどれくらいでるの?
#include "DxLib.h"
void show_fps()
{
static int frame = 0;
static DWORD dwLastTime = timeGetTime();
DWORD dwTime = timeGetTime();
if(dwTime - dwLastTime >= 1000) {
char str[128];
sprintf(str, "%.1lf", frame*1000.0/(dwTime - dwLastTime));
SetWindowText(str);
frame = 0, dwLastTime = dwTime;
}
frame++;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
char key[256];
int x=100,y=100,dx=1;
ChangeWindowMode(TRUE);
SetDrawScreen( DX_SCREEN_BACK ) ;
if(DxLib_Init()==-1) return-1;
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll(key) && key[KEY_INPUT_ESCAPE]==0){
x += dx;
if(x<=0 || x>=540) dx = -dx;
DrawBox(x,y,x+100,y+100,GetColor(255,255,255),TRUE);
ScreenFlip() ;
show_fps();
}
DxLib_End();
return 0;
}
26 :
名前は開発中のものです。:2007/12/31(月) 18:18:39 ID:HemtJlOn
>>26 それはきついね。
ちなみに、うちはRADEON9550で60出る。
ゲーム作るときの参考にしたいので、グラボとかのスペック教えてくれませんか?
28 :
名前は開発中のものです。:2007/12/31(月) 19:31:16 ID:HemtJlOn
イリュージョンのゲームがまぁまぁなら3D性能は結構なものなんじゃねぇの?
30 :
22:2007/12/31(月) 20:23:27 ID:kAlN/OQf
>>23 Windows XP SP2
SHARP Corporation
PC-AE30J
Mobile AMD Semporon(tm)
Processor 2600+
1.60 GHz、224 MB RAM
スペックとかよくわからないのでシステムのプロパティに書いてあるもの全部書きました。
自分はノートPCでFPSは58.0〜60.0がでました。
あとアクション系のオンラインゲーム(2D)とかは普通に動きます。
>>28 3DよりDXライブラリの2Dの方が軽そうなのにね。何が原因なんだろうね。
>>30 fpsが十分に出てるなら、描画は遅くないと思うのだけど、
どうしてそう感じたの?
32 :
22:2008/01/01(火) 20:44:08 ID:ieHvsArR
>>31 22のプログラムで四角形が端から端まで移動する時間を時計を見ながら数えたのですが、
ダブルバッファ無し:約1.5秒
ダブルバッファ有り:約9秒
とあきらかに遅くなってしまうんです。
3Dデバイス利用するモードにしたら高速化するんでない?
INTELのオンボードチップでもラスタライザーはハード対応してるし。
DXライブラリで、普通に画像とかなしでいいから立方体の3D表示させたいんだがよくわからん・・・
本当の3D描画には未対応じゃないっけ?
>>32 そりゃ当たり前だ。
ダブルバッファだと垂直同期を取るから、fpsはリフレッシュレートに等しくなる。
60fps以上で描画したところで、ほとんどの人の目に大きな違いは感じられないほど。
速くしたいなら、四角形の1フレームあたりの移動速度を上げるべき。
>>34 非公開関数のDrawPolygon3D系を使うといいよ。
引数はDxLib.hを眺めれば大体わかるはず。
37 :
24:2008/01/01(火) 22:50:50 ID:nl6ZedID
>>32 >>36 処理落ちと言う表現は、まずかったです。
訂正しますね。
他の文献でも60fpsに合せて全表示を書き換えて
表示させる旨が載っています。
しかし、サンプルのような1つを表示させる処理でも
へぼい感じなので「大丈夫なのか?」と思うのです
38 :
名前は開発中のものです。:2008/01/02(水) 00:27:34 ID:HFT0bGND
だめだこりゃ
ユーザープログラムから任意のメッセージをLog.txtへ出力することは可能でしょうか?
>>39 DxLib.hにそれらしい関数があると思う。
>>40 >extern BOOL AppLogAdd( const char *String , ... ) ;// 書式付きログ文字列を書き出す
DxLib.hの1003行目にありました。(Ver 2.23)
DxLib_Init()以後であれば使えるようです。
WIN32APIのOutputDebugStringだと全画面時に無限ループに陥るとVSを終了せねばならず
出力を見ることができない問題がありましたが改善されました。
ありがとうございます。
42 :
22:2008/01/02(水) 21:19:07 ID:oCGodrdm
>>36 2px以上動かせということですね。
ありがとうございます。
43 :
名前は開発中のものです。:2008/01/03(木) 00:31:58 ID:Mosr0DBY
ウィンドウモード時の画面のサイズを指定して起動したいのですが、
どうしたらよいのでしょうか?
知っている方、是非御願いします。
44 :
名前は開発中のものです。:2008/01/03(木) 00:49:42 ID:qhA3pvUo
SetGraphMode
45 :
名前は開発中のものです。:2008/01/03(木) 15:07:21 ID:Mosr0DBY
>>42 比較対象が間違ってるってのは頭で理解してんの?
ダブルバッファの仕組みと絡む垂直同期の仕組みが理解できなてないんだよ多分
誤爆 orz
変なの誘導してくんな
ttp://fatalita.sakura.ne.jp/SoftReview/DxLib3D/ 今3Dに対応したDXライブラリ互換ライブラリを作っています。
一通り基本的な機能は揃いつつありますが、DXライブラリのマイナーな部分は
あまり詳しくないのでちょっと質問させて下さい・・。
DXライブラリって画像を描画する際に重ね順などを指定する機能ってあるのでしょうか。
例えば重ね値がAの方が高ければAの画像を描画した後にBの画像を同じ位置に描画しても
Aの画像を表示するようにするといった感じです。
一応その機能は実装できたのですが、本家の方で実装されているならそっちを
参考にしたいと思いまして。。
面白そうなもの作ってますね
完成を楽しみにしてます。
入れてみたが動かない、パスも通ってるはずなのに
>>52 パスが通ってないか、使い方を間違えてるか、DownLoadが失敗してるかだろ・・・・
普通に大勢が使えてるんだ、ちゃんとやればつかえるよ。
54 :
名前は開発中のものです。:2008/01/19(土) 14:03:26 ID:zaKll0uK
質問ですが、
フォルダを作る命令とかあるのでしょうか?
>>54 ないと思う。
Win32APIでがんばれ。
CreateDirectory
DXライブラリ使うと変な癖付くとかある?
クラス使わなくなるとかかな?
>>56 特に無いよ。むしろ良いクセが付いたかな。俺は
>>57 それは使う人次第では?普通に使えるよ
癖が付く付かないは使う人次第では?
>>59 はげどー。DXライブラリはかなり優れたライブラリだと思う。
あとは3D対応がされれば完璧になるな
>>61 3D対応は不可能なんじゃないか?作者も確か掲示板で言ってるし
>62
>50
読んでやれよ
何をもって3D対応とする?とか、不可能って表現はどうよ?とか、
微妙な点があるけど、現状のDXライブラリをまとめると、
・3Dには一応対応している
・作者は3Dの機能拡充はするつもりがない?
・3D対応の互換ライブラリを作ってる人がいる
こんな感じ?
DXLibそのもの自体はそんなにいいライブラリじゃないと思う
使っているDirectXも結構古いみたいだしね
VerUPも実質とまってる
手を入れるとフルスクラッチになるから、見通しも暗い
反面、そうやって枯れているからこそある程度安心して使える
サンプルや解説も公式で揃っているし、
使用者も多いから、困ったことがあっても解決するのは楽
でも、いつかは卒業しないといけないって気づくんだが、
Seloneやyanesdkなんかは地獄へようこそ、って感じで辛い
Seleneを使いこなせるレベルなら、もうDirectXを直に扱えるんじゃないかと
>>65 今のDXライブラリの3D機能ってモデルの描画以外にどんなのがあるんだっけ?
公式に書いて無いからソース読まないと分からないっぽいが。
>>66 Seloneでググッたらビューティサロンwww
地獄へようこそってセンスある言い回しだな
各ライブラリスレの分化前のごった煮状態の前ライブラリスレでは、
DXを卒業したらIrrlichtかOgreでいいんじゃね?って空気だったよな
Seleneにしてもyanesdkにしても上記海外勢ほど枯れてないからなあ
71 :
名前は開発中のものです。:2008/01/24(木) 05:19:09 ID:2iXjLCax
IrrlichtにしろOgreにしろ2D機能が逆に貧弱らしいんだけどどうなの?
というか日本語の資料がまるで無いんだよな。海外勢のライブラリは。たまにあっても情報古かったりするし。
72 :
名前は開発中のものです。:2008/01/24(木) 05:20:04 ID:2iXjLCax
やべ、あげちまった せっかくいい雰囲気だったのにスマン
うわぁぁぁ、まただ。。 本当に悪かった。もう二度としません!
>>25読んで思い出したんだが
SetDrawScreen関数の置き場所ミスるのって結構皆あるんじゃないか。
初期化前のミスはもうやらないぜ!と思ってたらこの間
画面モード変更と初期化の間に挟むドジをやらかしてしまった。
75 :
名前は開発中のものです。:2008/01/30(水) 16:35:52 ID:oKWbNPaD
ウィンドウモードの時、ウィンドウを表示する位置を指定する関数はありますか?
例えば画面の左上に合わせるとか
>>75 DxLib.hにSetWindowInitPositionというのををみつけた
>>76 ありがとうございました
試したところできました!
78 :
名前は開発中のものです。:2008/01/31(木) 10:21:52 ID:uIghRer+
>>65 >・3D対応の互換ライブラリを作ってる人がいる
どこにある?
C#版を使っていらっしゃる方はいますか?
C#だとWinMain関数からプログラムを始めることができないと思うのですが、
どのようにして始まりの部分を記述すればよいのでしょうか?
>>81 Program.csにあるMainメソッド
>>83 ・新規→Windowsアプリケーションを選択
・ソリューションエクスプローラ中の
Properties の中の AssemblyInfo.cs 以外を全て削除
参照設定 の中の System 以外を全て削除
Form1.cs と Form1.Designer.cs も削除
・プロジェクト→既存項目の追加 から DxDLL.cs を選択
「プロジェクトのフォルダ\bin\Debug」・「プロジェクトのフォルダ\bin\Release」に DxLib.dll をコピー
・Program.cs を書き換える
あとはこの Main を WinMain だと思えばいい
using System;
using DxLibDLL;
namespace WindowsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
}
}
}
>>84 >>83 お答えくださってありがとうございます!
なるほど、そうやればよかったのですね。
>>83 詳しく説明してくださってありがとうございました。
>>70 Irrlichtは一時期触っていましたがかなりいいライブラリですよね。
あれをDXライブラリでやりたいと思って作られたのがDXライブラリ3Dだったりします。
>>79 そうなんですか?実際私も描画順に気を使っていたので前から気になってました。
88 :
名前は開発中のものです。:2008/02/08(金) 15:35:48 ID:n9rxSkck
質問させてください。DrawGraph関数は三個以上使えないのでしょうか?引数が三つ以上〜、とエラーが出ます。ちなみにVC++2005EEを使っています。
どこで質問すればよいか分からず、別の板でも質問したのですが「専門スレで質問しろよ」って言われたのでこちらに書き込ませていただきました。もしここもスレ違いならすいません…
DrawGraph(…………);を5つくらい書いて実行したのですがエラーになりました。しかしいくつか消して2つにして実行するとエラーは出ません。つまりこの関数を三回使用するとエラーとなってしまいます…。
ソースプリーズ
消した所が間違ってたんじゃね。「,」が「.」になってたとか。
93 :
名前は開発中のものです。:2008/02/08(金) 19:52:16 ID:Z8Mt9Y+t
>>90 本当に実行時エラーなの?コンパイルエラーじゃない?
コンパイルエラーなら、三回目の記述でエラーなんて現象は起きるはずがないので、
単なる記述ミスだろう。
なんにせよソース
ちょっと待ってくださいね…。
すみません・・・ほとんど
>>92さんの言うとおりでした・・・。見事に逆になっておりました。
また分からないことがあれば質問するかもしれませんが・・その時はよろしくお願いします。
>>96 質問は前回とは違う他人のフリをしてするのが業界標準なんだぜ?
98 :
50:2008/02/10(日) 17:12:54 ID:E2aYugwH
>>98 落としたけどまだ使ってない、サセーン
がむばれひそかにおうえんしてうr
>>98 >本家DXライブラリ
>終了宣言(DxLib_End)が必須
>DXライブラリ3D
>終了宣言は無くてもOK
>そうした理由
>プログラムの途中で終了させたい場合を除き、終了する時は勝手に呼び出されるから
これはmain内でreturnすると呼び出されるってことかな?
>プログラムの途中で終了させたい場合
これがどういう場合なのかよくわからない
101 :
50:2008/02/11(月) 03:03:48 ID:yFxk12ne
>>100さん
そういうことです。
ユーザーが×ボタンを押したりした場合などの終了は自動検出して必要な処理を
呼び出しますが、たとえばプログラムの途中でプログラム自体を終わらせたい時とか
ありますよね。ゲーム中に「終わり」メニューなどを入れたい場合はプログラムを
終わらせる処理が必要がありますのでそういうときにのみ使えばいいということです。
わかりにくいようで申し訳ないです。。
>>101 中身見てないからなんともいえないんだが
いわゆるデストラクタの処理が通ったり通らなかったりするって事?
>>98 DXライブラリ3Dを使ってみようとしたんだが、atlstr.hがなくてコンパイルできなかった。
PlatformSDKもインストールしてみたけど一緒だった。
ATLとかMFCってExpress Editionで使う方法あるの?
あと、atlstr.hのインクルードをコメントアウトして続けようとしたが
dmusici.hがないといわれてしまった。
ちなみに環境は
WindowsXP
VisualC++2008 Express Edition
DirectX SDK November2007
PlatformSDKインストール済みVC++2005EEでも同じくコンパイル不可
>fatal error C1083: include ファイルを開けません。'atlstr.h': No such file or directory
ATL関係は確かEEでは無理だと思う
作者さんにはLIB形式かDLLでの配布を希望
106 :
名前は開発中のものです。:2008/02/11(月) 17:00:44 ID:iu78+7FI
107 :
50:2008/02/11(月) 21:31:11 ID:yFxk12ne
>>107 リンク先見たけど
// Copyright (C) Microsoft Corporation
ってあるからVSについてるやつのコピーかなんかだと思う。
もし使えたとしてもDXライブラリ3Dが有名になるにつれて
問題になると思う。
もしATLで使ってるのがCStringだけなんなら
std::stringかなんかで置き換えて無料のExpressでもビルドできるようにしたほうがいいと思う。
金出さん奴が偉そうなこと言うなと思うかもしれんけど
せっかくこれだけのものを作ったんだから
自分で門戸を狭めるようなまねをするのはもったいないと思うよ。
109 :
50:2008/02/11(月) 23:01:51 ID:yFxk12ne
>>108さん
確かにそうですね。良く見たらCopyrightがある以上問題になりますね・・。
std::stringは使っていますが、CStringの目的は文字列を保存するためではなく
マルチバイト文字列とユニコード文字列を相互変換してstd::stringや
std::wstringに保存したりする為の一時的な目的に使っているので他のものに
置き換えるのは難しかったりします。
(変換には専用の関数がありますがCStringの方がはるかに優秀で開発がしやすいので)
まぁユニコードかマルチバイトかどちらかを切り捨てれば簡単なんですけど
現在SeleneやLuna、DXライブラリなど国産で主流のマルチバイト開発と
今後主流になるユニコード開発は両方に対応したかったので現状では無料版での開発は
>>105さんの言うように.lib化とか.dll化しないと(まだ経験無いので詳しくは知りませんが・・)難しい
のかもしれません。
DXライブラリ3D(50氏)にはがんばって欲しい。
15歳から始めるDirectX9ryを読んでいるが、2007年2月のDirectXと
2007年11月のDirectXとでは本通り進めたら100ページもあればコケル。
ゲーム開発者の要求で、数ヶ月ごとにSDKの入れ替わりになっているが、
本で勉強する話なら、ちょい凄い展開・・・。
111 :
50:2008/02/13(水) 01:59:59 ID:/tk1ihKI
>>108さん
CStringライクなクラスを作ったのでCStringを取り除いてみました。
私のPCのHDDが残り容量が数メガ程度しか無く、VSEEがとても入れられそうにないので
もしベータ3でコンパイルできたら教えていただけると幸いです。
>>110 おお、その本、私も去年の10〜12月あたりに読んでました。
それが私の入門書なので著者には本当に感謝してます。
でもDirectXはOpenGLと違って抽象化されていないので数年ごとに
技術自体が陳腐化してしまうのが残念だったりします・・。
MSかソニーあたりが抽象化した3D技術をC++向けに提供してくれたら
結構日本の3Dゲームも面白くなるんじゃないかなと思っています。
>>50 VC++2005/DXライブラリ3Dβ3
導入の手引きにてビルド時にエラー発生
エラー内容
\mylib\ml_text.cpp(2) : fatal error C1083: include ファイルを開けません。'atlstr.h': No such file or directory
この行をコメントアウトすることでビルド・実行できウインドウ表示ができた
公式サイトの
>私が開発に使用しているPC(ノート型。このPCで軽快に動くことを目安に作られている)
スペックkwsk!特にグラフィックチップを!!
DXライブラリ導入したばかりの初心者ですが
プログラム組むたびに以下の操作しなくちゃいけないんですかね?
@ VisualC++ 2008 Express Edition のメニューの
『プロジェクト』→『(プロジェクト名) プロパティ』を選びます。
((プロジェクト名)の部分は、今回は『test』になっている筈です)
A プロパティダイアログが開いたら、ダイアログの左のリストから
『構成プロパティ』→『全般』を選びます。
B ダイアログ右側に表示されている『文字セット』の項目を
『マルチ バイト文字セットを使用する』に変更します。
C 左側のリストから今度は『構成プロパティ』→『C/C++』→『コード生成』を
選びます。
D ダイアログ右側に表示されている『ランタイム ライブラリ』の項目を
『マルチスレッド デバッグ(/MTd)』に変更します。
E 次にダイアログ左上に表示されている『構成』の項目を『Release』に変更します。
F ダイアログ右側に表示されている『ランタイム ライブラリ』の項目を今度は
『マルチスレッド(/MT)』に変更します。
G 最後にダイアログの下の方にある『OK』を押してダイアログを閉じます。
>>115 あーなるほど。
ありがとうっす。感謝っす。
117 :
50:2008/02/13(水) 17:10:24 ID:/tk1ihKI
しかし、地味に盛り上がるな。
>>50氏は、続ける気があるのならトリップを付けた方が良いな。
>>117 >Intel 910GML Express
ノートにしては性能いいっぽいな
コンパイルできねぇorz
>>50に純粋に質問なんだが
マルチバイトとUnicodeの相互互換とかいるのか?
API系の関数は自動で入れ替わるし
stringは下のよう感じにしといたら
相互変換する手間はいらん気がするんだが。
#ifndef _UNICODE
#define _tstring std::string
#else
#define _tstring std::wstring
#endif
122 :
名前は開発中のものです。:2008/02/14(木) 08:47:39 ID:xKFMg5Ms
>>117 1>..\myLib\mL_Text.cpp(21) : error C3861: 'vsprintf_s': 識別子が見つかりませんでした
>>119 ノートにして性能悪いと思うが・・・。
最近はRadeonX1600とかGeForce8600積んでるノートがデフォかと思ってた。
>>123 それ・・・・単に今、売ってる最新機種のミドルレンジクラスだろ。
125 :
50:2008/02/14(木) 19:11:10 ID:nzQZAZue
>>118さん
麻薬は(ry
>>120さん
状況を詳しくお願いしますm(_ _)m
>>121さん
それだと90%はOKでも10%でダメなんですよ。DirectXAPIの中にはLPCSTRやLPCWSTRなど
どちらか片方のみのコード系での引数しか用意されていないことが稀にあるので
その書き方だとそういうときに面倒が起こります。(相互変換できないとDXライブラリ3Dに引数の不揃いが出てしまいます)
そういうときに非常に面倒が少ないので自動的に相互変換ができるCStringを愛用していたという経緯があります。
(今はCStringが使えない環境があると知り自作のTStringを使っていますが)
>>122さん
環境はVisualStudio2003以前ですよね?申し訳ないです。
セーフ系の関数はVisualStudio2005より前では使えないというのを忘れていました。
ちょうど今ベータ5を作っているところなのでそれで修正しときます。
情報ありがとうございました。
>>123さん
そうなんですか?少し前に使っていたノートPCなどはこれの半分以下の性能だったので・・
バカなことを聞いているとは思いますが、僕はマジなのでお願いします。
DXライブラリではC++は使えないのでしょうか??
全く問題ない
逆にCで動かない事が問題になった事さえある
129 :
名前は開発中のものです。:2008/02/15(金) 17:38:14 ID:GkeoXIUs
コンパイルできねぇorz
1>リンクしています...
1>mL_Text.obj : error LNK2019: 未解決の外部シンボル "
__declspec(dllimport) class std::basic_ostream<char,struct std::char_traits<char> >
& __cdecl std::operator<<<char,struct std::char_traits<char> >(class std::basic_ostream<char,struct std::char_traits<char> >
&,char const *)" (__imp_??$?6DU?$char_traits@D@std@@@std@@YAAAV?
$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@PBD@Z) が関数 "
public: void __thiscall myLib_c::LogOut(char const *)" (?LogOut@myLib_c@@QAEXPBD@Z) で参照されました。
1>mL_Text.obj : error LNK2019: 未解決の外部シンボル "
__declspec(dllimport) public: void __thiscall std::basic_fstream<char,struct std::char_traits<char> >::
open(char const *,int)" (__imp_?open@?$basic_fstream@DU?$char_traits@D@std@@@std@@QAEXPBDH@Z)
が関数 "public: void __thiscall myLib_c::LogOut(char const *)" (?LogOut@myLib_c@@QAEXPBD@Z) で参照されました。
stl使ってる?
boost使っててリンクしてないという懐かしいオチは?
ESPを使って透視してみると、
iostreamとfstreaがincludeされていないんだが、
ageる奴が困っても俺にはどうでもいいことなので、どうでもいい。
ああ、iostreamはライブラリもリンクしないといけないんだよな
そのエラーを消すにはALT+F7で開くオプション画面の
アレをアレにかえればいいんだろうけど、
どーせマルチ先で答え出てそうだし、間違えてると恥ずかしいのでパス
135 :
名前は開発中のものです。:2008/02/15(金) 23:32:35 ID:XAXzf6Jj
DXライブラリ3Dβを
VisualC 6.0で やりたいのだが どうやればいいのか 教えてください。
137 :
50:2008/02/16(土) 21:12:15 ID:HZPD09Yw
体調を崩し2日寝込んでいました。
まだ頭が上手く回りませんが・・。
>>129さん
そんなエラーが出るんですか?
良ければ開発環境を詳しく教えてください。
>>136さん
6.0は使用経験が無いのでちょっと良く分からないです・・
>>136 プロジェクトファイルをテキストエディタで開いて何がリンクされててどのソースが必要か
確認してそれをそのまま6.0のでやればいいよ
>>137 129です。BETA8では、普通にコンパイル出来、うごいた。
エラーがでたやつをもう一度やってみたらコンパイル出来なかった
なんでかな
VC++ Express Edition2005 (はじめて使ってみた)
140 :
126:2008/02/18(月) 22:05:33 ID:2TWjsJUr
どうも、
>>126です。作るものにもよるとは思うのですが、実際にゲーム会社などでもDXライブラリを使っていたりするのでしょうか??
自分は将来そういう仕事につきたいと思い勉強をしているのですが、気になったので・・・
ゲーム会社では使わん
DX自体そういったプロ用途は一切考慮して作られてないし。
143 :
126:2008/02/18(月) 23:02:14 ID:2TWjsJUr
ではプロの方たちはどういったもので作っているのでしょうか??
とりあえずDXライブラリを勉強してゲームを何本か完成させるといい。
ライブラリはたいした問題じゃないから。
ゲームの作り方がわかればどうにでもなるもんだ
逆に聞きたいが、どの会社に入ってどんなゲームを作りたいんだ?
まぁ、DXライブラリで作れるレベルのゲームなら
ライブラリそのものから自作するのが普通だよな
3Dバリバリになってくると、ミドルウェアの購入を検討するかもしれんが…
そもそも、PCゲーを作ってるのはファルコムかエロゲぐらいしかしらねぇ…
あとはねとげか?
実はカプコンがすごい
プロの方々は基本自社の開発部門が作成したライブラリを利用します。
プロの方々はその場のノリと勢いで直接DirectXを利用します。
150 :
50:2008/02/19(火) 00:44:48 ID:Aqd0JPlI
>>139さん
多分ベータ5以前の古いバージョンだったのでは無いでしょうか?
それか
>>134さんの言うALT+F7で開くC/C++→コード生成→ランタイムライブラリが
マルチスレッド(/MT)状態になっていたとか。。
(本家DXライブラリではこの設定にする必要がありましたが、
DXライブラリ3Dではこの設定にするとコンパイルできません。
でもデフォルトの設定のままでOKなので導入の手引きには掲載していないですが)
まぁ動いているなら今更なので気にしなくて大丈夫だと思います。
>>140さん
アマチュアの意見なので参考程度にしておいて欲しいのですが、
私も1年半前にDXライブラリでゲームプログラミングに入門してそれを足がかりに
色々技術を吸収していったクチなので、ライブラリや使う技術は何でもいいので
とにかく色々作品を作ってみるといいと思います。完成したら作品をオープンソースに
するとソースコードがいつまでも頭に残りやすいのでさらにいいかもしれません。
もしまだ中学生とかなら少し遠回りしてHSPもいいのではと個人的に思ったりしていますが・・。
>>147さん
MTフレームワークとかいうやつでしたっけ?バイオ5とかの。
どんなのか一度くらい拝んでみたいです。
>>150 139です。
動かなかった方をマルチスレッド(/MD)に替えてみたら
コンパイル通りました
お騒がせしました。
152 :
126:2008/02/19(火) 12:43:37 ID:TX94i0/5
>>144〜
>>149さん
いろいろありがとうございます。とりあえず何か一つくらい作れるくらいになってみようと思います。また分からないことがあれば質問させてくださいね
前使ってたとき妙にCPU使用率が高くなると思ったんだけど
どういう仕組みになってる?
154 :
126:2008/02/20(水) 23:48:36 ID:T3SELVJu
どうも。
こんな僕に、なにかオススメの本はないでしょうか?とりあえず学びながらゲームを作っていくことが出来る、というものがうれしいです。
ちなみに今は「アクションゲームプログラミング 藤田 和久」という本がいいのでは?と思っているのですが、必要なもの(アマゾンレビュー参照)にDirectX9 SDK・Platform SDKと、聞いたことの無いものがあるので悩んでおります・・・
どうかアドバイスをお願いします。
>>150 MTフレームワークとは行かないけど、UnrealTournament3やらHalf-Life2・Crysis・Doom3・Call of duty4
等々の海外PCゲーならゲームさえ買えば拝めるぞ。実際にそれを元手にゲームを作って製品化された
ケースもあるし。向こうの連中は、時間と根性と愛が凄い。
>>126 まぁ、DXライブラリは書籍まで出ているのでゲームライブラリとしては使いやすいと思う。
DXライブラリの制作者のHPにも載っていたが
・「14歳からはじめるC言語わくわくゲームプログラミング教室」
・「14歳からはじめるC++ わくわくゲームプログラミング教室」
・「14歳からはじめるリアルに動く!ゲーム物理プログラミング教室 C言語編」
初心者向けゲームライブラリ解説書としては出血大サービスしている様なレベル。
>・「14歳からはじめるC++ わくわくゲームプログラミング教室」
これはCを使える前提で書かれてるから初心者はやめたほうがいい
書いた奴が言うのも何だが、C言語でも結構前提意識は強い方ですな。基本書は有る上勉強した方が良い罠。
158 :
126:2008/02/21(木) 01:57:17 ID:vC78HCyB
とりあえず自分は やさしいC++第2版という本で基本的な勉強をしています。
こういうのって似たような本がいっぱいあるんですね…当たり外れが多そうですね。
159 :
50:2008/02/21(木) 03:11:35 ID:d9wnlOLj
>>155さん
そうなんですか?いい情報をありがとうございます。
調べてみたら海外のゲームにはMODが存在するものが多いようですね。
今の私のPCじゃ推奨スペックに達していないのでいずれ触ってみようと思います。
>>158さん
それ1年ほど前に私も使ってました。C++の入門書は4冊ほど
(やさしいC++、C++の絵本、明解C++、独習C++)
買って5:10:6:9位の割合で読んで、個人的には導入部はC++の絵本が
分かりやすかったかなと思ったりしています。でもやさしいC++もいい本だと思いますよ。
160 :
126:2008/02/21(木) 12:08:11 ID:vC78HCyB
>>159さん
たくさん持ってるんですね。絵本かぁ〜…なんか面白そうですね
DXライブラリ3Dってどうなったの?
「DXライブラリ3D」でこのスレ検索したらいいんじゃね?
163 :
50:2008/02/23(土) 05:43:13 ID:v30yPbpo
>>160さん
規模の大きな古本屋とか図書館に行ってもいろいろ本が手に入ったりするので
よさそうなのがあったら何でもトライしてみるといいと思います。応援しています。
>>161さん
続いていますよ。詳しくはサイトの更新履歴にも今までの履歴を載せています。
164 :
126:2008/02/23(土) 17:37:54 ID:P0melG7o
165 :
名前は開発中のものです。:2008/02/23(土) 19:49:16 ID:dwAlKyqQ
いつの間にこのスレこんなにのびてんだよ・・・
ありがとう神さま
168 :
50:2008/02/23(土) 23:47:51 ID:n/EC8VLW
これは一体
(´・ω・) 頭がカワイソス
171 :
50:2008/02/24(日) 05:29:34 ID:bAaCNQDb
初の偽物ですね・・。
まぁトリップを付ける気はあまり起きないのですが。。
どれが偽物なのかは想像にお任せしますw
172 :
名前は開発中のものです。:2008/02/24(日) 09:42:19 ID:gPT1EW+g
餌から釣り針が見えてますよ
何か上を見るとカオスなことになってるので今更ながらトリップをつけることにしました。
>>167さん
どうもありがとうございます。
174 :
126:2008/02/25(月) 22:44:04 ID:J8Foetq/
どうも。質問させてください。一つ目のソースがエラーで出て、二つ目は問題ないです。しかしなぜかが分かりません。定義する場所でこんなに変わってくるものなのでしょうか?
#include "DxLib.h"
struct buta{
int x,y;
};
buta pipu;
pipu.x=320;
pipu.y=240;
char Key[256];
int PIPURU[16];
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
SetDrawScreen(DX_SCREEN_BACK); //裏画面に設定
LoadDivGraph("pipuru.png",16,4,4,32,32,PIPURU);//画像ピプル読み込み
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了
if( Key[ KEY_INPUT_RIGHT ] == 1 ) //右ボタンが押されたら
pipu.x++;
DrawGraph(pipu.x,pipu.y,PIPURU[0],FALSE);
ScreenFlip(); //裏画面を表に反映
}
DxLib_End();
return 0;
}
175 :
126:2008/02/25(月) 22:46:32 ID:J8Foetq/
#include "DxLib.h"
struct buta{
int x,y;
};
char Key[256];
int PIPURU[16];
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
buta pipu;
pipu.x=320;
pipu.y=240;
SetDrawScreen(DX_SCREEN_BACK); //裏画面に設定
LoadDivGraph("pipuru.png",16,4,4,32,32,PIPURU);//画像ピプル読み込み
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されると終了
if( Key[ KEY_INPUT_RIGHT ] == 1 ) //右ボタンが押されたら
pipu.x++;
DrawGraph(pipu.x,pipu.y,PIPURU[0],FALSE);
ScreenFlip(); //裏画面を表に反映
}
DxLib_End();
return 0;
}
長々と見にくいソースをすみません。何故ダメかを詳しく教えてくれればうれしいです。
どこでエラーが出たかくらい書けるだろ
日本語が不明だからエスパーすると
struct buta{
int x,y;
};
buta pipu; ←これは宣言
pipu.x=320;←これは処理
pipu.y=240;←これも処理
わかるよな?
buta pipu = { 320,240 };
初期化したいならこうとでも書いておけ
>>174-175 butaをtypedefしてないとか?
typedef struct buta{
int x,y;
}buta;
みたいな感じで。
よくソース読んでないから分からんけど。
因みに俺は構造体使うときは必ずtypedefしている。
179 :
126:2008/02/26(火) 01:11:41 ID:LnSY+BT3
ビルド?したときにエラーみたいになります。多分エラーはpipu.x=〜、pipu.y=〜のところだと思います。
>>176さん
…すいません。よく分からないです…。
>>177さん
初期化したいというかよく分からないのですが、とりあえず基本となる値を決めたかったのですが…よく分からなくなってしまい…。
>>178さん
typedefですか〜。…typedefがどういうものなのか調べてみます…。
二つ目のソースなら問題なく動くのですが理由がわからないのは嫌だったので
>>178 C言語時代の化石乙
C++から、お前がやってるそれを自動的にしてくれるようになった
>>179 pipu.x=320;
pipu.y=240;
この2行消せって事だ
久しぶりに見に来たら、何やら面白そうな物作ってるみたいですね。
埃被ってるVS起動して、弄って遊んでみようかなぁー
DXライブラリ3DはCPU使いすぎジャマイカ?
SeleneとかIrrlichtは5%の内容を90%も使ってる
3Dにするなら簡単も重要だけど速いも重要だと思うんだ がんばれ
>>182さん
サンプルは私の環境での実行速度を常に一番早い状態でテストするために実行FPSを
かなり高めに設定しているので多くの場合私の環境でもPCが貧弱なのでどうしても処理が追いつかず
CPU使用率はフル回転になってしまって100%近いのですが、mL.AdjustFPSのところの値を下げると
30%程度にはできます。
(そうした場合はモーションなどの増やす時間値もそれに合わせないとスローモーに見えてしまいますが)
とは言え、おっしゃられる通り、簡単さを優先した仕様上、他のライブラリと同等の高速性を実現するのは
難しい面があるので、遅くなりすぎないようにはしようと思います。
184 :
126:2008/02/26(火) 14:18:49 ID:LnSY+BT3
185 :
178:2008/02/26(火) 14:36:26 ID:FRQ5rRB+
>>180 >C言語時代の化石乙
>C++から、お前がやってるそれを自動的にしてくれるようになった
恥ずかしながら知らなかった。
が、言い訳させてもらうとそれは改悪だ。
JAVAなどでは変数を定義しただけで勝手に0クリアされる為、0クリアを忘れた場合でも正常に動作する場合がある。
しかし、そうした機能にプログラマが甘えることにより、ソフトウェアの品質が向上するかもしれないが、
その結果にプログラマの品質が低下してしまい、言語が変わっただけで使い物にならなくなる、
低品質なプログラマを量産する事になる。 (うちの大学教授の理論を引用。)
ですから私はtypedef宣言が本来必要な場合には明記します。
それが「動くだけで良いプログラム」と「可読性の良いプログラム」の分岐点の一つとなる事でしょう。
だから
>>179はtypedefするニダ!
以上火病でした。
C++だと、コンストラクタあるから、POD型ならしゃーないにしても
非POD型は自動初期化に身を任せるしかないんだけどな…
そこで、memsetなんか使った日にはvfptr潰してえらい目にあうぞ
187 :
126:2008/02/27(水) 00:09:17 ID:m5mBCwej
何度もすみません・・・キャラが動いて、壁(hantei[]の1)より先には進めない、というものを作っているのですがどうしても左に移動したときがうまくいきません。
右の壁にいったときは問題ないのですが、左の壁の場合は歩く途中の動作中にキャラが止まってしまいます。ちなみにこの間でもFPS関数は動作しております。長すぎるので2回に分けて書き込ませていただきます。
#include "DxLib.h"
struct buta{
int x,y,img,muki,flag;
};
int RefreshTime;
int count=0,FpsTime[2]={0,},FpsTime_i=0;
int color_white;
double Fps=0.0;
char Key[256];
int kabe_e;
int PIPURU[16];
int hantei[20] = { 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1 } ;
void SetColor(){
color_white=GetColor(255,255,255);
return;
}
void FpsTimeFanction(){
if(FpsTime_i==0)
FpsTime[0]=GetNowCount(); //起動〜1周目の時間
if(FpsTime_i==49){
FpsTime[1]=GetNowCount(); //1周目〜50周目の時間
Fps=1000.0f/((FpsTime[1]-FpsTime[0])/50.0f);//50周分の平均を出す
FpsTime_i=0; //平均を出した後カウントをリセット
}else
FpsTime_i++;
if(Fps!=0)
DrawFormatString(565,460,color_white,"FPS %.1f",Fps);//FPSを表示
return;
}
188 :
126:2008/02/27(水) 00:12:07 ID:m5mBCwej
int can_or_cannot(int x,int y,int muki){//進む方向が通れるか通れないかを判定
if(muki==2)//左向きなら
if(hantei[x/32-1]==1)//通れないなら
return 1;//エラー
if(muki==1)//右向きなら
if(hantei[x/32+1]==1)//通れないなら
return 1;//エラー
return 0;//正常
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
buta pipu;
pipu.x=320;
pipu.y=256;
pipu.flag=0;
pipu.muki=0;
kabe_e=LoadGraph("kabe.png");
SetDrawScreen(DX_SCREEN_BACK); //裏画面に設定
LoadDivGraph("pipuru.png",16,4,4,32,32,PIPURU);//画像ピプル読み込み
189 :
126:2008/02/27(水) 00:14:13 ID:m5mBCwej
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
RefreshTime=GetNowCount(); //今の時間を取得
FpsTimeFanction();
if(pipu.x%32==0&&pipu.y%32==0){
pipu.flag=1;
if( Key[ KEY_INPUT_UP ] == 1 ) //上ボタンが押されたら
pipu.muki=3;
else if(Key[KEY_INPUT_LEFT]==1)
pipu.muki=2;
else if(Key[KEY_INPUT_DOWN]==1)
pipu.muki=0;
else if(Key[KEY_INPUT_RIGHT]==1)
pipu.muki=1;
else
pipu.flag=0;
}
if(pipu.flag==1) //もし歩くなら
if(can_or_cannot(pipu.x,pipu.y,pipu.muki)==1)//行き先が歩けないなら
pipu.flag=0; //歩かないフラグを立てる。
if(pipu.flag==1){
if (pipu.muki==3)
pipu.y--;
else if(pipu.muki==2)
pipu.x-=2;
else if(pipu.muki==0)
pipu.y++;
else if(pipu.muki==1)
pipu.x+=2;
}
すみません、4回になりそうです。ながながとすみません・・・
190 :
126:2008/02/27(水) 00:14:37 ID:m5mBCwej
pipu.img=PIPURU[(pipu.x%32+pipu.y%32)/8+pipu.muki*4];
DrawGraph(pipu.x,pipu.y,pipu.img,TRUE);
ScreenFlip(); //裏画面を表に反映
count++;
while(GetNowCount()-RefreshTime<17);//1周の処理が17ミリ秒になるまで待つ
}
DxLib_End();
return 0;
}
x/32-1 が0になる条件は x=32〜63
つまり、x=63になった瞬間、もう0番目の壁にぶつかってるんだよ
192 :
126:2008/02/27(水) 13:48:20 ID:9wtxnZrA
>>191 [x/32ー1]の結果は、hantei[]の中身なので、例えば[x/32ー1]==1の計算の結果が8だとしたら、hantei[8]となるので、hanteiの八番目に1が入っているか?ってことです。…よね?間違ってたらすみません
hentai[i]
わからないならそーゆーコード組むなよ
>>192 63/32-1 がいくつになるのか表示してみろ
196 :
126:2008/02/27(水) 22:03:24 ID:9wtxnZrA
>>194さん
あるサイトを参考にしながらその通りにやっているはずなのですが、こうなっちゃいました…。
>>195さん
多分0だと思います。
ソース丸々貼り付ける馬鹿は放置した方がいいんだろうが、まぁ暇なんで
x/32-1 って部分ををx/32 に書き換えろ
1ドットめり込むが、今よりましだろ
198 :
126:2008/02/27(水) 23:17:08 ID:Lmz6Mp6I
>>197さん
・・・無理でした・・・画像がサイズがおかしいのでしょうか・・分からない・・。右は問題ないのに左がってのがよく分からないです。
別の方法でやってみることにします・・・。手間をかけさせてすみませんでした。
199 :
126:2008/02/28(木) 23:34:59 ID:lrVcbRPz
どうも。結局 } の位置がおかしいだけでした・・・orz・・・
書き込み3回目の16行目の}を19行目の後につけると上手くいきました。本当にご迷惑をおかけしましたm(_ _)m
なんだそのオチwwwwww
#゜盆゜) チッ
だまれクソガキ!
ママのミソニをガツガツたべるのよ
ママの
現在メニュー画面を作ってるんですが
カーソルキーを押すとものすごい勢いで下の選択肢までいってしまいとても選択しにくいです;
カーソルキーを押すと選択肢を1個ずつ選択したいのですが、どういう風に制御したらいいのでしょうか?
前回のキーの入力状態を覚えておいて、
前回は押されてない、かつ、今回は押されている ならカーソルを移動
みたいにすれば?
キーを押したときにフラグを1にする
キーを離したときにフラグを0にする
フラグが0の時のみキー入力を受け付ける
もしくは
キーを押したときにカウンタをセットする
カウンタが0の時のみキー入力を受け付ける
カウンタが0以外の時は、常にカウンタが減少する
>>205,206
ありがとうございました
フラグ使えばよかったんですね^^;
すみません;
もう一つ質問です。
ソースファイルを2つ以上に分けたいのですが
元々のソースファイルで定義した変数などは二つ目以降のほうでは再定義しないと使えないのでしょうか?
それはここで聞くことじゃないだろう。
externでググってみろ。
ちなみに、「定義」は一回しかできない。だっけ?
DXライブラリスレで聞くことじゃありませんでしたね><
ありがとうございます。
最近プログラミングの勉強を始めたんですが、質問があります
かなり黒に近い画像についてなんですが
ウィンドウモードで起動したときは表示されるのに
フルスクリーンモードで起動したときには表示されない(透明になってしまう)という現象が起きてしまいます
SetGraphModeでカラービット数を16から32にしたところとりあえず解消されたんですが
理屈が気になって夜も寝られないので誰か教えてください
あと直接関係の無いことなんですが
他のソフトに比べて自分の作ったソフトはやたら残像が気になります
どういう条件だと残像がでやすい等、解る方がいたらご教授願えませんか?
16ビットだと一番近い色になるから透明色の黒と同じになるんだよ
ウィンドウモードはいくら16ビット指定してても
画面モードが32ビットならそっちにひきづられる
あと、教授する気はない
213 :
名前は開発中のものです。:2008/03/04(火) 15:11:44 ID:sCnHkz0D
おちんちんびろ〜ん
投稿先まちがえた すいませんでした
>>211 60FPSじゃないから?
30とか20だと、3Dだと気にならないけど2Dだとかくかくする。
あるいは描画タイミングを考えてないのでは
垂直回帰線割り込み中に画像を更新しないと。
>>216 レスありがとうございます
垂直回帰線割り込み中・・・ってのは正直よくわからないのですが、
FPSはScreenFlip()をループの最後に付けてリフレッシュレートと同じにしてあります
DXライブラリ置き場のゲーム開発講座を参考にしてるので問題ないとおもいます
1週間前からDXライブラリを始めた者です。
作っていて思ったのですが、画像を貼り付けるときにどのぐらいの数値を入れたら
どこらへんに表示されるか、というツールがあればいいかなと思ったのですが
そういうツールってありますか?
てか、仮にそんなツールがあったとしてもそれで調べて数値入力って手間が面倒
真ん中に表示したけりゃ
x = (640 - width) / 2; y = (480 - height) / 2;
って感じで計算式で書くほうが多いしな
おれのちんちん3cm
もし解像度変わるフルスクリーンだとしたら、そもそもリフレッシュレートが低下してたりしないか
ウインドウ出すだけのプログラムなのに
デバッグするとPCフリーズする時がある
前はこんな事なかったのになあ
スレチかも知れないけどマップエディタのPlatinumの使い方が分からんorz
16ビットでパーツを指定したら2段目が数字がおかしくなる。
2段目の一番左が259番目・・・
パーツの番号が256*256で固定だからそれでいいんじゃなかったっけ
2段目の一番左は256の筈。
ウチでは問題なく動くよ。
DirectX SDKというものを使いたくてダウンロードしようとしたのですが、種類がたくさんあるようでどれをダウンロードすればいいか分かりません。どなたか優しく教えてください。そもそもただのDirectXとどう違うのかも分からないです
SDKは開発者向けのライブラリやファイル群。(DirectXSDK)
Runtimeがエンドユーザー向けのファイル群。(DirectXRuntime)
とりあえず、最新版・・・といいたいけどファイル削除されてたりするから。
指定されてる日付のSDKが無難。指定なければ最新版でいいと思う。
親切にありがとう
ビルドでエラーが出ても、そのままプログラムが起動して
Run-Time Check Failure #3 - The variable 't' is being used without being initialized.
というエラーが出る事があります(ウインドウモードの場合)。
フルスクリーンでこうなってしまうとキー入力を一切受け付けなくなって電源が切れなくなってしまいます。
どういう理由でこういう事が起こるのでしょうか?Microsoft Visual C++ 2008を使っています。
適当な訳
変数tは初期化されずに使われているぜ
変数tを初期化してから使おうってこった。
なんでフリーズするかはソース見てないからしらね
このライブラリ使ってるとstringクラス使えないことない?
stl使うときは何たらとヘッダに書いてる
int i ;
for( i = 0 ; i < 300 ; i ++ )
{
ClearDrawScreen(); // 裏画面のデータを全て削除
LoadGraphScreen( i, 0, "×××.png" , TRUE ) ; //裏画面へ画像を描写
ScreenFlip() ; // 裏画面データを表画面へ反映
}
このようにして画像を動かす場合、動かすスピードを遅くする時はSleep関数を使用するのですが、
逆に速く動かしたい場合はどうすれば良いのでしょうか?
236 :
234:2008/03/28(金) 12:23:17 ID:jiphjYhJ
いいえ素人です。
スレ違いでしたらすいません。
同じく素人の俺が適当にレス
ぱっと見、画像を移動するように俺には思えるのだが、
遅く移動するためにSleepを使うのはどうかと思う。
fps制御をしたりするようになると、酷いことになる。
早く動かすには、i * 2でも i * i * i * i * iでもすればおk
というかもっかい数学でもやっとけ
>>236 DXライブラリとは関係ないんで確かにスレ違い
237の言うとおり i++ を i+=10とかに増やしてやれば早く動く
でもそのやり方でSleepなしだと i を弄らなくても十分過ぎるほどに速いと思う
もう数学どころか算数レベルだと
ベーマガのコードは
>>234みたいなやつたくさんあったね。
fpsを気にせずforループでウェイトかけたり。
iをdouble型にして、
i += 0.5;
とでもして、int型にキャストしたものを座標に入れればいいんじゃね?
forでループかけるとCPUの処理速度に依存とかしないか?
速い遅いの議論とは離れるけど、ループ中でLoadGraphScreenを使って
毎回ファイルから読み込むのはどうかと。
最初にLoadGraphでメモリに読み込んでおいて、
座標を変えながらDrawGraphで描画するのが一般的なやり方だと思う。
LoadGraphScreenって中で一回だけ読み込んで
しばらくキャッシュしとくような実装にはできないのかな
実用にならないことがはじめから明らかな関数なんて何考えて付けたんだろう
れらりんがそばにいるよとささやいてくれると聞いて
DXライブラリはサンプル的なものは簡単に作れるけど、実用性低いからな
実用性の高いライブラリを教えてくれ
249 :
名前は開発中のものです。:2008/04/05(土) 10:46:23 ID:IUUENaiS
>>245 そりゃ確かに3Dという弱点はあるけど普通にいいライブラリだと思うよ。
他の高機能だが使いにくいライブラリやDirectXへの入門的な位置づけには十分だと思う。
250 :
名前は開発中のものです。:2008/04/05(土) 10:55:48 ID:IUUENaiS
DXライブラリだと何ができないん?
春になると変なの湧くな
作れない部分だけ掘り下げりゃいいじゃん
>>253 その方が難しいとおもうが・・・・。
(中途半端に人のライブラリを改造するのは初心者にこそ大変。
だけど、DXライブラリは非常に優秀だと思うよ。
もちろん自分の主義から観て、ケチつけたくなるような部分がまったくないわけじゃないけど、
どっちにしろ
絵やテキストの必要な段階までたどり着いてorz
プログラムが完成してればメンバー募集スレ辺りで適当に
257 :
名前は開発中のものです。:2008/04/11(金) 19:45:54 ID:RER4fV/1
C++&DXライブラリ
で、ポーズ機能を実装したいのですが、どういった風にすればよいでしょうか。
簡単な質問でしたらごめんなさいです。
while( CheckHitKeyAll() == 0 )
{
//ポーズ機能の完成である。
}
ポーズ中はキャラ移動のプログラムを動かさず
画面描画だけしてやればいいよ
while(1){
キー入力();
if ( pause == 0 ){
自機();
敵();
背景();
}
画面描画();
}
260 :
名前は開発中のものです。:2008/04/11(金) 21:01:32 ID:RER4fV/1
回答ありがとうございました!
参考にさせていただきます。
これって、簡単な3Dならできるってあるけど、関数どこにあるんでしょうか?
あ
DrawPolygon3D?
過疎ってるなぁ
立ち絵みたいなCGで背景との境界を綺麗に見せる、
いい方法ってあるかどうかはここで聞いてもいいですか?
アルファチャンネルを使う
DXライブラリ使ったプログラムをUnicode環境にしたいときってどうしてる?
ウィンドウハンドルを取得したりしてTextOutとか使ってみたんだが、うまくいかないし。
画面関係の処理はDXライブラリを使わないでがんばるしかないのかな
やったこと無いがtchar.hをインクルードして
全部_T()マクロで囲んでしまうとか
TCHAR型とか使っても、DrawString等の関数はchar型なんで、そこでつまづいちゃうんですよね。
IME関係の関数も同じでエラーがでちゃって。
もうそこはライブラリその物を書き換える気概が無いと駄目かも知れん
あーそれか自分でUnicodeをShift-JISに変換するコード書くかだな
OSがやってくれるけどね。
レスサンクスです。
ライブラリ書き換えは考えて試したりしたのですが、あきらめました。
知識と根性が足りないみたいです。
どうせ糞コードでコードを再利用することもないと思うので、このままマルチバイト文字セットで突っ走ろうかと思います。
>>274 DXライブラリ3Dの中にTStringってのが入ってるから使ってみたら?
その中にマルチバイトとUnicodeの相互変換する関数が入ってる。
俺はTSTring型を改良して使ってる。
音楽読み込むの時間かかりすぎじゃね?
数秒かかるんだが
>>275 DXライブラリ3Dはまだベータで仕様変更する可能性があると思って敬遠してたんだが、
見てみたら結構よさそうだな。
ちょっくら使ってくる。
>>276 つSetCreateSoundDataType( DX_SOUNDDATATYPE_FILE );
過疎
visual studio 2005でプログラムを作成しているのですが、
waveファイルをリソースにして実行ファイルに埋め込んだ上で再生するにはどうしたらいいですか。
resource.rcファイルに、
WAV01 WAVE "../sound/01.wav"
プログラムファイルで、
se01 = LoadSoundMem(TEXT("WAV01"));
のように記述しコンパイルが通ることを確認したうえで
PlaySoundMem()で再生しようとしたところ何も音がでません。。
se01の返り血を調べたところ、-1になっていたので
LoadSoundMem()関数が失敗しているようです。。
> 返り血を調べたところ
ビチャビチャ ..`_;:;;::::.::.....
(´:;;..,,゚Д゚) .,.-';;`,;::;;:;:;:;;:'':
今日のルミノール反応スレか。
リソースから読み込めねえのかつかえねえなDXライブラリは
つ int LoadSoundMemByResource( const char *ResourceName, const char *ResourceType, int BufferNum = 1 ) ; // サウンドをリソースから読み込む
ありがとうございましたできました。
ID:HfsKgZoVの態度の変わりように吹いたw
ただの煽りかと思ったら本人だったのかw
ID:HfsKgZoVに全力で吹いたwwww
ずっとROMってたけどこれだけは書き込まずにはいられなかったwwwww
ってか、リファレンスに乗ってない関数ってDxLib.hからみつけてきてるの?
読み込んだ画像をグレースケール化して表示させるとかできないのかな?
あらかじめ
Windowモードにしたときにサイズを変更しようとすると、プログラムが終了してしまうのを防ぐにはどうすればいいんですか?
VS2008EE
DXライブラリ3D (Ver 08.5.11 BETA48 )
XP sp2
という環境でやってます
>>297 DirectX9の最新版をインストールしなおしてみたら?
それかPlatformSDKのインストールに失敗してるとか?
>>298 platformSDKを再インストールしたらうまくいきました。
ありがとうございました。
横レスだがEEでうごくようになたの?
EEで動くようになってる筈
C#のDXライブラリを使っているのですが、
タイトルバーのアイコンはどうやって設定すればよいのでしょうか?
アイコンのIDと言うのの調べ方がいまいちわからないのですが……。
304 :
名前は開発中のものです。:2008/05/25(日) 21:14:02 ID:lS7V6yTW
>>303 そういえばDXライブラリ作品でタイトルバーのアイコンが変更されたプログラムって見ない気がする。
できんのかな。とりあえず32x32だけじゃなく16x16の方もちゃんとアイコン描いてる?(VSから直接描けるはず)
VSでもExpressは描けないんだよな
ソフトが分かれている性でExpressはVSじゃない、って誤解をうけていそうだが
306 :
名前は開発中のものです。:2008/05/26(月) 03:00:55 ID:9qMTVlR3
>>305 ほんとだ。試してみたらExpressではペイントが起動したよ。
製品版ではVS内部で便利なペイントツールみたいなのが開いていたのに。
.icoに2つの画像もたせるには何かのフリーソフト使うしかないみたいだね。
>>304 ゲームのアイコンを変えたら、なぜかタイトルバーのアイコンも変わりました。
理屈はよく分かりませんが、とりあえずできました。
>>307 C#でやっているのですが、その方法の仕方がいまいちわかりませんでした。
309 :
名前は開発中のものです。:2008/05/26(月) 23:36:40 ID:9qMTVlR3
>>307>>308 俺も昔VS2003でそのやり方やってたけどそれで代わる時と代わらない時があったんだよな・・。
2005とか2008では分からんけど。俺の勘違いかもしれないから流してくれ。
最悪SendMessage(hWnd, WM_SETICON, ICON_SMALL, (LPARAM)hIcon)で
C#ならDllImportを忘れずに
hWndはどこから取ってくるの?
312 :
名前は開発中のものです。:2008/05/27(火) 01:35:54 ID:145798w0
>>310 ああ、明示的にしてやればよかったのか。ありがとう。
>>311 GetMainWindowHandle()でいける。
質問
みなさんDXライブラリを知ったきっかけor使ってみようて思ったきっかけって何?
プログラミングを始めてゲームでも作ってみたいな
ライブラリ関係のwikiを見て知る
SDLなんて環境依存も少ないし、よさそうだ
ちんぷんかんぷん
次の候補のDXライブラリを使ってみる
これはいいライブラリ
DXライブラリwktk中
>>314 プログラミング暦は長いんだけど、せいぜい旧世代パソコンでBASICとアセンブラ、
COBOLとか、WindowsパソコンだとVBくらいしか触った事なくて
Windowsでゲーム作りたくてもDirectXもWindowsAPIもさっぱり解らなくてできなかったが
(何で知ったのかは忘れた)DXライブラリを試しに使ってみたら
簡単にそれっぽい事ができたのでそのまま使いつづけてる。
(C言語も初めて使うわけだが、まぁBASIC的な使い方でなんとかやってる)
>>314 私はネットで偶然見つけて最初は挫折しました。
BBSの人たちとはキット住む世界が違うハイレベルな人たちなんだ・・とか思って。
まぁ今は卒業して次の3Dライブラリに逝ったりしています。
退屈なC言語の勉強が凄い刺激的な遊びに変わったのも全てこのライブラリのおかげです。
アンケート禁止
>>318 それでこの過疎レスが盛り上がるならいいジャマイk
リファレンスにサンプルプログラムが多く載ってたので、これなら使えそうだと思った。
あのサンプルのおかげで、初心者も初期段階で挫折することが少なそう。
まぁ、扱いやすいライブラリではあるね。2Dのみでもメリットは大きい。
というか、毎度毎度お馴染みの某書籍シリーズがDXライブラリだけでも4冊目に・・・。
それだけでも、教える側・学ぶ側にも初心者向けなのだろうか・・・?
東方弾幕風でぐぐるといいよ
誤爆
>>321 フレームワーク組まれてないから、自由度が無茶苦茶に高いと思う1年チョイ使った感想。
Seleneに移行して実感したよ。
ガチガチにフレームごと組まれたライブラリってホントに使いにくい。
>>324 Seleneって自由度低いというか使いにくいの?
試したこと歩けど使い方よう分かんなかった。
>>325 自由度は使う人の知識・技術によるんじゃないかな。
使いにくいかどうかについては、DirectXの基礎知識がないと使うことすら不可能だと思う。
フレームワークで何をしているのかすらわからんと思う。
連投スマソ。
昨日、
>>324を書いてからDXライブラリ3Dを試してみたんだけど、死ぬほど楽でワロタwwww
凝ったレンダリングしたいならSelene使えばいいし、
とりあえず手軽に3DやりたいならDX使えばいいってだけの話じゃね。
>>325 自由度が少ないほど基本的に使いやすい。
自由度が多いと何をしていいのか分からない。
DX3Dの作者もSeleneは使い方わかんなかったって言ってた
しょーもない、意見かもしれんないけど、
Seleneは、サンプルとかリファレンスが理解しにくいからなぁ・・・・・・。
下手すると、Seleneで取り持つよりも、直にDirectXをサンプルとかチュートリアル
見ながら叩いて遊んだほうが分かると、経験から思う。
まぁ、DirectXは資料も多いし、なんだかんだで基礎からちゃんと解説やってるんだよね。
でもDirectXとかは細かい事やりたい時以外には、自分でラッパーするのも面倒だから困る。
そういう点で、DXlibは素晴らしい。適当な実験とか、ちょっとしたプレゼンなんか向けに張りぼてなんかも作りやすい。
SeleneはDirectXを直接触ったことがないと理解できないお約束が多いからなあ
DXライブラリの3D版、良い感じで進行してるようですね。
>近い将来実現したい機能:
>・.mqoファイルの読み込みと描画
個人的にはこれが楽しみ。
DXライブラリ3Dで質問です。
メタセコイアで作成した立方体や球体(Xファイル)を表示させようとすると、崩れてしまいます。
(たとえば立方体の場合、6つの面がばらばらになって、それぞれ座標がずれて表示されてます。)
原因はどこにあるのでしょうか?
自作したモデルは、DirectX Viewer上ではちゃんと表示されてます。
(メタセコからXファイルに出力する時、ちゃんとUVのところにチェックを入れてあります。
テクスチャの設定もしてあります。)
プログラムはリファレンス&サンプルのものを、ファイル名だけ入れ替えたものです。
http://fatalita.sakura.ne.jp/3DLib/Ref/Part/Graphic/index.html#DrawModel サンプルについてたxファイルのモデルでためしたところ、viewer上・プログラム上のどちらでも表示されます。
環境
VC++2008 EE
DXライブラリ3D 通常版ダウンロード (Ver 08.5.30 BETA52 )
メタセコ Ver2.4.8
>>333 こんなとこに書くより配布してるサイトの掲示板に書いたほうがいい
>>333 メタセコでの保存時にUVマッピングとかスムージングとかちゃんと有効にしてる?
メタセコの設定見直したほうがいいかも。
>>335 保存時のUVマッピングは常に有効にしてます。
スムージングはチェック入れてなかったんですが、チェック入れても変わりがありませんでした。
なぜここで聞くんだ?
ひょっとしたらメタセコの超初歩的なミスかなと思って。
他の3Dソフトでも作ってみたけど同じだった。
ちょっと時間を置いてからいろいろ試してみます。
それでだめなら公式へ
質問なんですが
DX3Dは古いVSでも使えるのでしょうか?
未だにWindows2000を使ってるのでVS2008利用できないんですよ
Direct3Dって12年くらい前からあるよね。
いやDXライブラリ3Dのサンプルのビルドについてなんですが
公式サイトではVS2005以上とかいてあるのを発見したので
おとなしく2005EEを使うことにします
>>339 初期のバージョンではVS2002も使えてたけど今は古いVSだとライブラリファイルでエラーが出るから使えない。
DXライブラリ3Dの作者も見ていることを祈ってここに。
かなり凄いライブラリになりつつありますね。乙です。
このままLoadDivGraph()も互換性もたせてくれたら過去のソースがほぼ流用できるので、
身勝手なお願いですが、頑張ってください。
まだDXライブラリ3Dの宣伝か
なぜ開発元の掲示板に書かないのか・・・
>>343 多分ここ作者も見てない。公式も更新とまってるし
そりゃ、本家に気軽に書けたら書きますよ。
でも、開発元の掲示板が使いにくい(検索すらできない旧世代極まるシステム)
だから、単なる応援を書いて掲示板汚しをする雰囲気ではない。
さらに、メルアド非公開だからメールで応援することもできない。
ここに書くことも許されないのならスレでも立てましょうか?
でも、そしたらそしたで、DXライブラリと共用しろとか煽られたりするんですよね?
やっとれんわ。
気が向いたら専用スレを建てることにしました。
普段ろくに動きもないスレのくせに、姉妹品の話題だしただけで嫌味かよと、
ちょっとイラッとしてしまいました。
すいませんでした。消えます。
>>346 メアドは一応公開されてる。以前よくやり取りしてたけど、最近は返事が直ぐに返ってこないからイライラする
349 :
名前は開発中のものです。:2008/06/21(土) 10:36:00 ID:JnkYVaUa
C#版だとDrawFormatString系統が使えないなんて・・・
何とか代用できるものは無いものかしら
触った事無いから分からんが普通にSystem.Stringで文字作ればいんじゃないの?
String.Formatの方が便利
GetJoypadInputState()がボタン押しっぱの状態でたまに0返しちゃうんだけど、俺だけ?
そこまで押しっぱなしを多用した事ないからわからないけど
どんなプログラムでチェックしたの?
ジョイパッドの不具合に10ゼニー
どうやら認識が処理に間に合ってなかっただけらしい
多少のウエイト入れたら問題なかった
DXライブ来3D開発停止なのか・・・
> しばらくライブラリ開発は休止します。
> 大変申し訳ありませんが私生活でそれどころではなくなってしまいました・・・。
> 一応コンテンツは残しておきますので自由に使ってくれて構いません。
だそうで、どうしたものか。
何もしてないのにー!何でこんなに重いんだと思ったら
ScreenFlipのせいだったのか…
なんで?
ScreenFlipが垂直同期信号待ちしてるせい?
DXライブラリ3D開発停止キタコレ
そらそうだ
真偽はともかく、パソコン壊れたに次ぐ、辞める時の言い訳ベスト3だな
あと一つは脳内嫁に離婚されたか?
タダでやってる以上、こうなるのは別におかしい事じゃない。
そういう意味で、本家の方はかなり頑張ってらっしゃる。
開発が一段落してサポートが面倒臭くなるまでは続くと思ってたんだが・・・早かったな
本家って更新自体はもうしてないんじゃないっけ?
367 :
359:2008/06/28(土) 19:29:20 ID:xOOHiRHZ
ScreenFlipを使うのをやめて
SetDrawScreen と GetDrawScreenGraph と DrawGraph
を組み合わせたらCPUへの付加が30%から5%に激減した!!
今までこれで苦労してたから嬉しさで涙が出そう
>>360 理由はわからないな…
そうなる前にやめるのは投資家としては正しい判断
WaitVSyncもつけたら負荷が戻ったorz
でも垂直同期を取る・取らないの選択ができるようになったということで我慢しよう…
Wait()挟んだら負荷下がるよ
>>369 ScreenFlipでも撮る撮らないの選択が出来るよ
これだね。
宣言 int SetWaitVSyncFlag( int Flag ) ;
概略 ScreenFlip関数 実行時にCRTの垂直同期信号待ちをするかのフラグセット
>>369 念のために訊くけど、ウィンドウモードでやってないよね?
>>366 2008/3/23までの更新履歴はあるな。
まぁ、DXライブラリも2001年から始まっているから3Dの人も、いつでも再起おk。
中の人が大学留年したり 生活もままならないような人だから全然驚かん
やっぱ大学関係だったようね
>>371-372 フルスクリーンだとモニタの関係でアスペクト比が狂うからウィンドウモードでやってた
そんな関数があったんだ、ありがとう
マイナー関数のとこにのってたんだ
そんな関数あるわけないと決め付けてたから気がつかなかった
せめてリファレンスくらい目を通しておくべきだった。すまん
リファレンスにも乗ってない関数があったりするから
DxLib.hの中身を検索してみたりするといいかもわからんね
ウィンドウモードだと垂直同期信号は関係ないらしいから、そこらへん自分で色々やらんといかんかもね。
ただ俺は、その後もそれ関係で色々問題が発覚して、
そのたびに対処療法的にさまざまな対応を取ってきてるから
今実際自分がどういう処理にしているか自分でも把握できてないw
すご、DxLib.hに関数の使い方書いてあるんだ
いいこと知ったお
>>379 そうなの?
でも垂直同期オフにしたら特有の波みたいな境目みたいなのが
現れて負荷が数分の一になったお!
俺も対処療法しまくってスパゲッティ化してきた
>でも垂直同期オフにしたら特有の波みたいな境目みたいなのが
ティアリングだね。
それをなくすための垂直同期信号待ちなんだけど、色々別の問題が出るんだよね。
例えば、FPSがモニタのリフレッシュレートに依存するから
60Hzのモニタに合わせてゲーム作ってると70Hzのモニタ使ってる時にスピードアップする事にw
あるいはPC環境によっては垂直同期信号待ち自体が完全に無視されてしまって
スピードが最高速になったりw
普通はVSYNC待ちした上でさらにタイマーで調整するだろ
うん、だから今はそうしてる。
俺の場合は、ドローとコントロールを完全に分けてる
コントロールは50fpsで作るなら、20ms経過するごとに呼び出す
前回と比べて100ms経ってたら5回連続して呼ぶ、と
ドローはこれだけを何度呼んでも同じ画面が描画される
要するに処理落ちを目立たなくする方法だけど、
よっぽどボロで無い限りあんまり違和感ないから重宝してる
みんなどんなゲームつくってるのか見てみたいな
俺も、別に嫌味じゃなくて純粋に
>>386がどんなゲームつくってるのか見てみたい
俺も興味あるなぁ。スクショとかあげてみて欲しい。
389 :
386:2008/07/03(木) 19:14:30 ID:mE8d2cG3
ついでに動画もうpする
BGMワロタ なんか敵キャラかわいいなw
おお、すごい
普通に面白そうだな
グラフィックはいかにも間に合わせという感じだが、
ゲーム性はなかなかのものとみた。
結構おもしろそうだな
それに動画綺麗すぎ
どうやってキャプチャしてるの?
396 :
386:2008/07/06(日) 09:46:08 ID:XkJcW/kb
>>392 グラフィックをほめてもらえるとはw
>>393 まじ?うれしいな
>>394 いや、これでもかなりグラフィックは力いれてるぞw
でも絵が描けないのはどうしようもない
>>395 エンコーダでビットレート高めで画面を取り込んだ
横スクロールアクションの面白いところを知ってるって感じる作りだな。
それが面白くもあり、手堅く無難でもある。
あとはストーリー性を前面に押し出してキャラを立ててやれば、そこそこ売れるんじゃね。
売る気なのかは知らんが。
フリーなら、ぱっと見悪いが隠れた名作と言われそう。
こんなんでましたー。
398 :
387:2008/07/07(月) 12:42:59 ID:vFVo4BdD
見せて欲しいと言っておきながら、仕事ラッシュあけて戻ってきたら既にタイムアウトでスクショみれない俺涙目
言い出した手間、自分もじきにスクショうpしま。
ってそういうスレじゃなかったっけ。すまん。
400 :
388:2008/07/08(火) 17:10:01 ID:RLAQs28z
これもなかなか興味深い
世界観がいいね
へー、これDXライブラリ使用してたのか。
DXライブラリ作品では東方のやつが一番すごいと個人的に思う
龍神録?
あの人のプログラミングに対する執念はすごすぎる
東方、ぷよぷよ、魔界村、ボンバーマンと何でもつくれるんだよな
でも何でDxLib使ってるんだろう
DxLibでここまでできるってことを示したいのかな
なんつーか・・・
このスレのやつらのレベルが知れるな
>>407 DirectXとかWinAPIは底は深いけどそれやりだすとなかなか作品作れなくなるんだよな。
それにDirectX自体プロになるにしてもゲーム関係で無い限りそこまで必要なものでもないし。
将来DXよりいいのが出たときに乗り換えればいいだけだし作品製作に集中するのはあるべき姿のひとつだと思う。
DXライブラリは、余計なフレームワークがついてこないただのラッパだからね。
煩わしい部分以外全部自分でやってしまいたい時には都合がいい。
>>408 もともと初心者向けのライブラリだからな
でもあれだけつくれれば十分すごいと思うぞ
>>409 たしかにゲーム本体に労力を注ぐのが一番いい
HSPとかならまだしもDXライブラリなら初心者向けとはいえ
市販の2Dゲームに劣らないものがつくれそうだし
でもああいう人たちならわりと早くDirectXを使いこなせるようになりそうな気もする
龍神録知らなかったので見てきた
ここまで再現できるのはプログラマー的に尊敬せざるを得ない・・・
まあ批難だらけになるのは致し方なしw
東方クローンなんてdxライブラリで一番作りやすいジャンルじゃないか?
神威みたいなのを作ったっていうなら凄いと思うが
>>413 確かにDXライブラリが2Dのシューティングにかなり向いてるとは思うけど
あそこまでやるならもはやライブラリの力はあんま関係ないと思ったw 純粋に作者がすごすぎるw
多分あの人はRPGツクールとかでも他に圧倒的な差をつけたすごいのを創れるタイプだと思う。
同じ土俵であんなものができるなんて驚きを通り越して憧れたよ。
龍神録をすごいと思わない
>>413は相当凄腕のゲームプログラマ
むしろゲームオタク……いや俺もか。
龍神録すげぇな
でもあれはプログラムっつーよりゲームデザインの領域では・・・・
2D弾幕もう供給過剰だしそろそろ3D弾幕欲しいぜ
>>417 3Dで本格的な弾幕やろうとすると重いし動く環境限られるし何より面倒だと思う。
まぁシューティングとかは3Dの中では比較的作りやすいものではあると思うけど
3Dにするメリットってあんまないきがする。画面酔いしやすくなったとか言い出す人いるだろうし。
龍神録は滅茶苦茶重い点を除けばかなり良い出来
俺は当たり判定とかかなりいいかげんに作ってるから
弾幕シューを作ろうとしたらめちゃ重になるだろうな……。
そういえばDXライブラリ作品だと公言しているものの各部門の非有料モノでの最高傑作ってなんだろう。
シューティングはあんま詳しくないけど龍神録しかないかなと思ってる。
アクションはしょぼんが個人的に最高に楽しかった。
アクション:しょぼんのアクション
シューティング:龍神録
RPG:シラネ
アクションRPG:これもシラネ
レーシング:あるのか?
格闘:確かあったけど有料だった気がする
パズル:シラネ
シミュレーション:あるのか?
>>422 それ面白そうだな。確かにしょぼんはゲームとしての面白さというよりパロディとかセンスが秀逸という感じかもな。
どうでもいいけどあの作者が公開してるソースはマジで天才的すぎて絶叫したぜ・・。
そういえばRPGって多いかと思ったけどちゃんと作品として完成させてる人って意外と少ないんだな。
シミュレーションとかは存在すらなさそうだし。
あのソースはまじやばい。カオス
なぜかタブをつかわない
1つのファイルにだらだらだらだら書いてて…それで動く
自己流の最終形態
一部引用
//ブロック描画
for (t=0;t<tmax;t++){
xx[0]=ta[t]-fx;xx[1]=tb[t]-fy;
xx[2]=32;xx[3]=xx[2];
if (xx[0]+xx[2]*100>=-10 && xx[1]<=fxmax){
xx[9]=0;
if (stagecolor==2){xx[9]=30;}
if (stagecolor==4){xx[9]=60;}
if (ttype[t]<100){
xx[6]=ttype[t]+xx[9];drawimage(grap[xx[6]][1],xx[0]/100,xx[1]/100);
}
if (ttype[t]==100 || ttype[t]==101 || ttype[t]==102 || ttype[t]==103 || ttype[t]==104 && txtype[t]==1 || ttype[t]==114 && txtype[t]==1 || ttype[t]==116){
xx[6]=2+xx[9];drawimage(grap[xx[6]][1],xx[0]/100,xx[1]/100);
}
if (ttype[t]==112 || ttype[t]==104 && txtype[t]==0 || ttype[t]==115 && txtype[t]==1){
xx[6]=1+xx[9];drawimage(grap[xx[6]][1],xx[0]/100,xx[1]/100);
}
略
見難いにも程があるw
>>425 それでバグがあるかというと全くないんだよなw
ソースも数千行で関数はほぼmainだけなのにw
そういうソースなんて他にはみたことないぜ。マジで狂気の沙汰
そういえば友達が授業でいやいやソース書いてたときもしょぼんの人みたいなタブ使わない強引に1行で済ませる書き方だった。
それで分かるからいいらしい。ある意味間違ってはいないがw
やたら文法とか構造化とか声高に叫ぶばかりで何も完成させられない人には
しょぼんのソースを突き出してやりたいぜ。あれはほんと革命的なオープンソースだと思う。
俺も初心者のころはインデントしなくても読めてたけどいつの間にかそれができなくなった。
ああいうのは子供が自然とジャイロボール投げるのと似てる。
>>425 すげえとしか言いようがねえぞ!w
確かにバグが出ず、本人が分かるならそれ以上のものはないんだろうけど・・・w
430 :
sage:2008/07/15(火) 01:58:59 ID:OyoJDlsv
N88-日本語BASIC(86)のプログラムに比べれば可愛いもんだ
ところで
>>421 RPGならSTARGAZERがあるぞ
というか無料ソフトに拘るのはなんでだ?
すまん上げちまった・・・
龍神録は凄いと思うが、作者はDXライブラリのBBSで自演してたりしたから好きではない
DXライブラリ使用ソフトだと、夜行蛾4とかGalshell2の合体・変形・多関節は凄いと思う
アクション: しょぼんのアクション
シューティング: 龍神録、Galshell2、夜行蛾4
RPG: 星を見る人
アクションRPG:
レーシング:
格闘:
パズル:プリンセスラナ
シミュレーション:
今んとこ候補はこんな感じか。まぁ有料は入れなくていいと思う。買った人にしかわかんないし。
誰かジョイスティック対応した斜め移動のコードを教えてください。
シューティング作ろうとプログラムを始めたばっかりの初心者なんでなかなか上手くいかないです。
keyでのキー入力の場合だとちゃんと斜め移動するんですが、GetJoypadInputStateを使うと上下左右移動しか出来ず、斜め移動を入力するととまってしまいます。
int plx = 200;
int ply = 400; //プレイヤー初期x.y座標の取得。
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_RIGHT ) { //右ボタンが押されたら
plx++;
plx++;
plx++;
plx++;
if(plx >= 385){ //画面右端から左端へワープ。
plx=0;
}
}
こんな感じのコードを上下左右分作っています、これだと斜め移動は実装できないんですか?
こんな初歩的な事でつまずいてるとか完成まで物凄い時間かかりそう。
プログラム的には問題ないように見える。
キーボード入力でうまくいくのに、ジョイスティック入力でうまくいかないのなら、
ジョイスティックが斜め入力に対応してないんじゃないかと思えるが……どうだろう。
普通のゲームをそのジョイスティックで操作してちゃんと斜めに動く?
もしそうならDXライブラリが対応してないジョイスティックがあるって事になるのかな。
あ、GetJoypadInputStateはキーボード入力も同時に対応してくれるけど
キーボードならちゃんと動くって事だよね?
んーじゃ、コードをどっか間違ってるんでしょうね。見てみないとわかんないけど。
例えば計算を間違ってて座標がプラスマイナス0になってるとか、
斜め入力した時に処理が別のとこに飛んでるとか。
あ〜でもGetHitKeyStateAllだと上手くいってるのか……なんだろうね。
初心者とは言えコードが幼稚すぎて晒すの恥ずかしいけど、一通り晒してみます。
void player_move(){ //プレイヤーの移動
GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; //ジョイスティックの状態を監視
char Key[256]; //キー状態の取得。
GetHitKeyStateAll( Key ); //ループ、キーの状態を取得
if(GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_R ){ //低速移動
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_RIGHT ) { //シフトと右が同時に押された場合。
plx--;
plx--;
}
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_LEFT ) { //シフトと左が同時に押された場合。
plx++;
plx++;
}
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_UP) { //シフトと上が同時に押された場合。
ply++;
ply++;
}
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_DOWN ) { //シフトと下が同時に押された場合。
ply--;
ply--;
}
}
ply++;
ply++;
ply++;
if(ply >= 430){ //画面下部へ戻す(ハミ出ないようにする。)
ply=430;
}
}
//ここから高速移動。
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_RIGHT ) { //右ボタンが押されたら
plx++;
plx++;
plx++;
plx++;
if(plx >= 385){ //画面右端から左端へワープ。
plx=0;
}
}
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_LEFT ) { //左ボタンが押されたら。
plx--;
plx--;
plx--;
plx--;
if(plx <= 0){ //画面左端から右端へワープ。
plx=385;
}
}
if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_UP) { //上ボタンが押されたら。
ply--;
ply--;
ply--;
ply--;
if(ply <= 0){ //画面上部へ戻す(ハミ出ないようにする。)
ply=0;
}
}
文字制限があり、下ボタンが書けないですが、上記のコードと同じ感じです。
>> if( GetJoypadInputState( DX_INPUT_KEY_PAD1 ) == PAD_INPUT_UP)
これなんだけど、
==で判定するんじゃなくて、
&で判定したら良いと思うんだけど、どうだろ。(他も同様に)
DX使ったこと無いんで知らないんだけど。
== で判定している時点でおかしい。
GetJoypadInputState() が斜めという状態を返すのに、
「斜め==右」と「斜め==上」の両方を満たしたりすることがあると思う?
>>443-444 ありがとおおおお!
そうか、「==」で両方の条件を満たすモノかと思ってたけど検討違いだったみたいだ。
これで一つシューティングに近づけた!
敵移動ルーチンもがんばって作ります。
つーかDxlib.hくらいは読め
plx++;
plx++;
plx++;
plx++;
ここ何で plx += 4; て書かないの?
>>446 リファレンス読んだんですけど、関数の使い方がまだ慣れていなくて。
>>447 そういう書き方もあったんですね、本当勉強になります。
14歳シリーズ読む前に上の奴は目を通しておいたほうがいいね
DXライブラリ3Dのひと大学やめたって・・・
信用できなさすぎてワロタ
自キャラが動いている画面部分に、ステータス表示などのウィンドウを開くには
どうしたらいいのでしょうか?ウィンドウを描画する部分は作ってみたのですが、
うまく消すことができません・・・どう考えてプログラムを組んだらいいのか教えてください
意味がわからん。
ウィンドウ描きたきゃ描けばいいし
消したきゃ描かなければいいだけでは。
毎回全部描き直してればこれですむが……?
>>452 毎回、画面をクリアして(あるいは、色、画像で塗りつぶして)から、
キャラクタとかを描くようにしたらいいよ。
つまり、消す=表示しない
ウィンドウに関しても、表示する/しないのフラグを作るなり何なりして、
表示する/しないを切替えられるようにする、というのが一つの考え。
画面のちらつきが気になるならダブルバッファリングでもググッて頂戴。
>452
すぐ上の>449くらいは見てから聞きなさい。
俺も
>>452と同じ所が微妙に分からないんだけど。
メインループが書いてあるコードで
while(ProcessMessage() == 0 && GetHitKeyStateAll(Key) == 0){ //メイン処理
RefreshTime = GetNowCount(); //今の時間の取得
ClearDrawScreen(); //裏画面のデータの削除
img_01(); //背景の表示
img_s1(); //スコアボードの表示
player_move(); //キャラクター移動
enemy_move_01(); //下がって来きて、一定時間止まり上に上がる敵の移動
enemy_move_02(); //右から来て左に消える敵の移動
ScreenFlip() ; //裏画面のデータを反映
while(GetNowCount() - RefreshTime < 17); //1周の処理が17ミリ秒になるまで待つ
if (Key[KEY_INPUT_ESCAPE]==1) break;
このコードだとどうしてもenemy_move_main_01と02が画面外に消えたとしてもClearDrawScreenでは消えないし、もしenemy_move_main_01内でClearDrawScreen使ったとしても違うものが消えちゃう。
そうなると画像を選択してその画像だけを消すコードを追加した方がいいの?
>画面外に消えたとしてもClearDrawScreenでは消えないし
なんで?
画面外ならそもそも消す必要すらないのでは。
というか画面外なら最初から表示しなけりゃいいんじゃないのか……?
俺なにか勘違いしてる?
>>457 書き方が悪かったのかな。
敵が画面上部の外から出てくる(表示されてない)
↓
画面中央ぐらいまで下がってきて止まる(表示されている)
↓
一定時間止まったら画面上部の外に出る(表示されていない)
ここで3番目の処理の時に画像を画面外で消さないと重くなって仕方ないんだけど、効率が良い消し方も分からん。
もしかしたら画像が残っている以前に移動のコードがアレなのかも分かんないけど。
敵の座標が0未満なら描画しなければいい
実際は敵の大きさを考慮しなければいけないが
うーん?
俺は「画面外のキャラ」はそもそも表示しないようにしてるんだが、そういう問題じゃない?
あるいは「画面外にでたら不要になるキャラ」なら、キャラ自体を消してしまえばいいんだし。
例えばこんな感じで ↓
//画面内だったら表示する
if( x + GH.width >= 0 &&
x < SCREEN_WIDTH &&
y + GH.height >= 0 &&
y < SCREEN_HEIGHT )
DrawGraph( x , y , GH , TRUE ) ;
# x と y はキャラの座標。
# GH.width GH.height はキャラの幅と高さ
# SCREEN_WIDTH SCREEN_HEIGHT は画面のサイズ
こうすれば画面外のキャラは描画処理を省く事ができるからその分処理は軽くなる。
描画処理は時間掛かるからね。
452です。。。描画の仕組みがちゃんとわかってなかったようです
通常はループ処理の中で秒間何コマも書き換えを行ってるですよね、
それを忘れてフォトショップのレイヤー表示・非表示みたいな発想をしてました
ぐはw間違えたwww
466 :
名前は開発中のものです。:2008/07/16(水) 16:08:27 ID:uDKC+hAb
DXライブラリ3D
復活
これは予想外といわざるを得ない
大学を辞めるにいたった理由は他の事にのめり込んだせいか?w
大学やめる人間がライブラリ制作つづけられねぇだろ
トラブルがあって金が払えなくなると言う涙なしに語れない話かもしれないぞ
なんでおまえらそんなに攻撃的なのw
良くも悪くも一度でもコースから外れたやつには厳しいのが日本だからな
まあ今何言われても機能とサポートが充実した状態を数年保てれば自然と利用者は増えるさ
というわけで作者頑張れ
まあ犯罪者ですってんでもなければ、
成果物を利用させてもらうことには何の躊躇いも無いな
大学出るだけが人生じゃないしな
でも折角はいったんだから頑張って卒業した方がいいと思うなぁ。
477 :
名前は開発中のものです。:2008/07/17(木) 08:14:59 ID:tmKiyq5R
作者頑張れ
処理速度が画面上に敵を4〜5体表示するだけで致命的にガクガクになるんだけどなんでだろ?
>>478 1. 毎回ファイル読み込みしてる
2. 裏でソフトのアップデートが始まっている
3. 敵の画像サイズが3200x2400フルカラーのビットマップ
4. 一つの座標に同じ敵を何十回も描画してる
5. 以前に開始したゲームが終了できていない。(タスクマネージャを確認)
6. 同時起動してるソフトが重い
1. この記述が悪いのかな?やっぱりメモリから読み込んだ方がいいの?
LoadGraphScreen( move02.enx , move02.eny , "date/img/enemy.bmp" , TRUE ) ;
2.3は無い、画像は仮の画像だけど50*50のpngでやってる
4.ClearDrawScreen();で消す→画像の描写→ScreenFlip() ;って感じでやってるから多分大丈夫?だと思う
5.6も無いです。
やっぱり1番の問題なのかな?
>裏でソフトのアップデートが始まっている
あるあるww
>1. この記述が悪いのかな?やっぱりメモリから読み込んだ方がいいの?
当たり前だw
表示するたびに、いちいちディスクから読んでたらガクガクになるに決まってるだろ。
マップの表示をいちいちファイルからやってたら死ねる
ごく初歩のサンプルプログラムでもなければ、LoadGraphScreenの利用価値はまったくない。
LoadGraphScreenなんて関数はないと思っていた方がいい。
作者さん乙
LoadGraphScreenって、例外的な使い方しかしないよな。
俺のPCはハイスペックだからLoadGraphScreenでも問題ないよ
どれだけアクセスの早いHDDなんだ。
だからって使うメリットもあまり無いと思うが
move01.eny++;
counter++;
if(counter > 100) move01.eny--;
if(counter > 300) move01.eny-=2;
if(move01.eny > 0)
DrawGraph( move01.enx , move01.eny , enemy_img , TRUE ) ;
アドバイス通りに書いたら安定した。
このスレはプログラム上級者が揃ってて初心者の俺にとってはありがたい
いつの間にかプログラミングの館で新しく解説サイトできてるな
しかも結構おもしろそう
読んでくるわ
DrawRotaGraphFってなんだよ\(^o^)/
この手のプログラミング解説サイトって絵や図が足りないよな
最後に実行結果を動画にしてるのは評価できるけど
絵や図を用意しようとすると労力が数倍に跳ね上がるからねぇ……。
本買えよ
サイト作るなら本買って構成とか真似してわかりやすくしろってことだな
ってか、そんなに画像が必要か?
只で見ておいてすごいことを言ってのけるなw
>とにかく「わかりやすい」をモットーに紹介しています。
ソースとスクリーンショットだけじゃこれ実現できねーよ
文章も校正してないしな
只で見て何も言わずに帰るのが本当に良い客なのだろうか
うん みてろ
そんなに見づらい、わかりづらいなら
もっと図説が一杯載ってるサイトに行けばいいんじゃね?
書籍買って勉強してるんだが、ベクトルの話がちんぷんかんぷんだぜ・・・ライブラリが使えても
物理計算が理解できないと話しにならんな、、、ナイセキとガイセキって何が違うんじゃ!!!!
画像消してるのにもかかわらずにページファイルが増え続けるんだけど
なんでだろ
DeleteGraphしてる?
してなかった・・・。
してみたら超安定した
2D横スクロールアクションでキャラと地形のあたり判定を考えてます
背景(地形)に32*16もしくは32*32のマップチップ的なものを配置、
地形のチップの上にキャラが立ち、32ドット単位で移動するようにしたいのですが、
その時の判定で能率の良い方法はないでしょうか?
今はマッピングするときに使う地図情報配列と自キャラの位置を配列座標に変換したものを
比較して、自キャラ[X][Y]に対して、地図情報[X][Y+1]がマップチップなら移動できない・・・・・って手法を考えてますが、
これだと空中に浮かぶチップがあった場合の判定が煩雑になってしまい、
ジャンプしたときなど判別を都度追加しなければならず、効率が悪くて難儀してます
>>506 なんか、微妙にDXライブラリと関係ないけど・・・・・
使っているデータ構造とかがどのようなものか?がわからないから
かなり憶測に基づいての回答だと言う事を念頭に置いてね。
自分が想定してるアクションってのが、聖剣伝説みたいな見下ろし型でのものだけど、
マリオなんか見たいのでも、似たような感じで応用すれば使えると思うよ。
まず、地図情報があると言うことだから、それを若干拡張してください。
例:char DataMap[MAP_MAX_SIZE_X][MAP_MAX_SIZE_Y][MAP_MAX_SIZE_STRUCTURE];
で、一層目に普通のマップ情報、二層目に地上キャラクタの情報、三層目に空中キャラクタの情報
とでもして、check時に、
普通は一層目が進行可なら二層目を調べる。
ジャンプなどの場合は、一層目を調べてさらに三層目を調べる。
みたいなのでどう?
あと、効率が悪いと言っても基本的に変な総当たり式みたいな判定出ない限りは
大した効率さは考えなくていいと思うよ。
>>506 空中に浮かぶチップがあった場合の判定が煩雑になる理由は?
四角形と直線の当たり判定がどうもうまくいかない・・・
この前当たり判定のまとめサイトみたいなの見つけた気がしたんだが
どこにいったんだか
直線を(ax+by+c=0)として表現するっていうのができたらできそうなんだが、
2点の座標からa,b,c全部求めるのって無理じゃね
>>509 直線の方程式を y = Ax + B から展開していけば解けるよ。
>>509 もう出来てるかも知れないが中学数学のお話だぞそれは
直感的に考えても点が二つあれば一本直線が引けるだろ
つまりは方程式も点が二つあれば求まるんだよ
龍神録プログラミングの館ってできたのな。
こりゃ確かにコピーが作れる
どこかおかしいと思ったら"r"でfreadしてた
今までうまく動いてたけどいきなり不具合が出たから迷ったぜ
ちょっとしたことなんだけどさ
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ){ 以下略
でマウス左クリックを検出してんだけど、
これペンタブを検出してくれないんだな。
515 :
名前は開発中のものです。:2008/07/25(金) 15:19:27 ID:1Kbo7I82
DXライブラリ3D
大学やめたのか
大学どころか人生やめました
どうせゲ専にでも行くんだろ
業界が大卒以外取らないってのは、決して脅しの言葉じゃないぞ
>>517 JEXさんのこと全然知らないんだな
しかもどこのが会社が大卒以外取らないとか言ってんだよ
任天堂
520 :
名前は開発中のものです。:2008/07/26(土) 15:43:58 ID:gmVyP22M
誰か、14歳からはじめるC言語ゲームプログラミングでゲーム作っている人いますか?
ノシ
とりあえず熊キャラのところまでたどり着いた・・・・
三回読み直してようやく何をやってるのか、少しわかるようになった
良書と思うが、ライブラリの使用を作者の作ったヘルパー関数の利用で賄ってる部分が多いので、
初めての俺にはそこが難しい(かった)な
522 :
名前は開発中のものです。:2008/07/26(土) 15:56:30 ID:gmVyP22M
P82のDXLib_VC2_24b.exeがどこにあるか分からないのですが
どこにあるのですか?
教えてください!
ちょっと今手元に本が無いから、なんのことやら・・・スマンネ
524 :
名前は開発中のものです。:2008/07/26(土) 16:09:33 ID:gmVyP22M
そうですか
今、DXライブラリがどこにあるか分からなくてとても困っています。
とりあえず、教えてほしいのですが付属のCDでダウンロードできるんですよね?
うろ覚えだが、付属のCDはVisualStudioの奴だけで、
あとはサイトからダウンロードするんじゃなかったかい?
サンプルとライブラリはネットで落とした記憶が・・・
他にもゲーム系入門書を数冊買ったので、ごっちゃになってるかもしれないが・・・
>>524 調べる事も勉強になるから、それぐらいは自分一人の力で解決しないと先に進めないよ
DLと使用環境を整えるぐらいは一人でもいけるはず。
出来ないのならプログラムよりも先にパソコンの使い方とかを勉強したほうがいいかもしれない。
「CDでダウンロードできる」と言ってるあたり、まだ何も解ってないみたいだね。
2chくるより先に公式サイト見に行くべきだ。
528 :
名前は開発中のものです。:2008/07/26(土) 18:16:55 ID:gmVyP22M
わかりました、公式サイトに行ってみます
>>518 悪いけど、まともな企業になってきてる大手は原則大卒しか新卒ではとらないよ。
実績とかなにか、自分の力を証明できるようなもんがあれば別だけど・・・・・
まぁ、どうでもいいか。
それに、仮に大卒以外として採用されたとしても、待遇は天地の差がある。
給料はもちろん、回される仕事も大きく違う。
せっかく大学受かったなら、辞めないほうがいい。
任天堂受けたけど、90人の枠に何万人もエントリーするあの倍率じゃ
大卒ウンヌンとかって話じゃないよw
とりあえず勉強してない奴は筆記試験からして最初っからすぐ落ちる。
任天堂の技術系は東大か京大か東工大じゃないと話にもならんよ
高専は?
>>534 無理ぽ
つか大手だーじゃなくて、好きなもの作ってる所受けてみりゃいいと思う
特にマの人。
任天堂は、面白くないゲームでも面白そうに思わせる宣伝力とか。
企画を工夫して売るとか、
海外相手に日本じゃありえないような言いがかりのような法的トラブルを防ぐ能力とか
凄腕プログラマを育てるのではなく外からスカウトしてきて上手く使いこなす能力とか・・・
そういう感じの人たちが終結してるんじゃないかと想像。
学歴厨っていうか入り口での足きりをするときに
似たようなレベルの作品&印象だったら学歴高い方を選ぶだろJKってだけの話だよ。
高卒でも大卒のやつらを上回る技術を示せる作品を作って、
剛体力学、流体力学、行列・ベクトル演算、幾何代数を独学でマスターすれば全く問題無い。
流れを変える意味でも、ちょっと初歩的な質問をさせてくれ
DrawFormatStringなんだけど、これって実際には
バックにグラフィックの枠のようなものを表示させて、座標はある程度めぼしをつけて、
================== <-グラフィック
ここに点数とか <-DrawFormatStringで書く
ここに名前とか
================== <-グラフィック
みたいにして使うものってことでおk?
ゲームのステータス表示とかで使いたいと思ってるんだが・・・
まぁ、それで出来ないことはないだろうが。
DxLib.h見てないからなんともいえないが、もしかしたら描画した文字列の高さを返す関数があるかもしれんが。
不安だったら、文字を画像にしちゃうとか。
文字の中でも固定的なもの(ポイントとかHPとか言う呼称)までは画像にしようかと、、、
以前、画像の読み込みで練習用?の呼び出しがあるとか無いとかって話しになってたので、
もしかしたら見落としてる命令があるかと思って聞いた次第です
すまないが、何を疑問に思ってるのか解らない。
俺はゲーム中のメッセージ表示や、あるいはデバッグ用の変数値表示に使うくらいだな。
点数とかは、自分で文字画像作ってそれを表示させてる。
フォントのサイズは自分で設定できるんだからそれに準ずればいい。
ただフォントいじる命令、やたら遅いので頻繁に変えるようだったら
最初から複数のフォントを用意しないといけないんだったかな。
文字を画像にしたらフォントのライセンスとかでまずい事になるんじゃないかな。
そうとは言い切れないけど、大抵指定したフォントサイズが
文字のドット幅になるよ。
幅はDxLib.hのGetDrawStringWidth系関数が使えそうですが、
高さの取得用関数は用意されてないみたいですね。
フォント用の内部構造体FONTMANAGEには高さが含まれているので、
DxLib.hでコメントアウトされているGetFontManageDataToHandle( int FontHandle ) あたりを使えば
文字の高さを取得できそうです。
あるいは文字高さ取得用関数をライブラリに追加するか。
いずれにせよ、要改造になってしまいますが。
テキスト表示の件、ありがとうございました、、、何故疑問に?と思う人もいたみたいだけど、
プログラミング始めたばかりなので、「自分がいいと思ってやってることが正解なのかわからん」状態なので
思わず利いてしまいました
で、次のは微妙にスレ違いっぽい質問なのだけど、LaadDivGraphで読み込んだ複数のキャラ画像を
メインキャラの動きに合わせて追従させるにはどうしたらいいと思いますか?
動きとしてはグラディウスのオプションとか、ソーサリアンのパーティキャラみたいな感じのものです
自分が組んだロジックは、
・メインキャラの移動状態を保存用配列に古い記録を破棄しながら随時記録
・配列の情報に基づいてサブキャラの座標を決定して表示
としてるのですが、サブキャラを増やすと記録すべき配列要素の数も増えて
どうも動作が緩慢になってる感じがします・・・自分のマシンではそれほどストレスがないですが、
スペックの落ちるマシンだとストレス溜まりそう・・・なのですが、妙手が思いつきません
横スクロールアクションのサンプルは、結構少ないのな
作ってたら、ごちゃごちゃと長くなったから、先人のを参考にしたかったのに
546 :
545:2008/07/28(月) 00:58:54 ID:3fAUJGid
すまんかった
ただ、俺の検索能力が低かっただけみたい
>>544 俺もそれ、考えた事はあるけどやった事ないから正解はわからんが、
俺なら同じように配列に「座標」を記録していくかなぁ。
にしても100や200追従させたところで
そうそう動作が重くなるとは思えないんだけど
どれくらいの数動かす事が前提なのかな?
オプションの最大個数*n(オプションの間隔)
のサイズのリングバッファを作り
自機の座標を記録していくんだ。
で、現在のポインタから、n個ずつ古い座標を取り出してオプションの座標にしる
typedef struct{
int enx; //敵 x座標
int eny; //敵 y座標
int flag; //フラグ
} ENEMY;
ENEMY move01 = {100,1,0};
ENEMY move02 = {300,1,0};
void enemy_move_02(){
double test = atan2(move02.eny . move02.enx)→ここでエラー。
もしかして構造体とatan2関数って一緒に使えない?
move02.eny . move02.enxを「move02」 「eny」 「move02」 「enx」
って認識してるっぽいんだけど
","じゃなくて"."になってるのと";"忘れ
しまったw
こんな単純なミスをずっと気がつかなかったのか。
>>550 下らん質問に答えてくれてありがとう。
>>550 のミスを修正していざデバッグしたら
'atan2' : オーバーロード関数の呼び出しを解決することができません。
ってエラー出るんだけど、何が悪いの?ENEMY move02 = {300,1,0};で整数がatan2のy.xに代入されてるから?
math.hはincludeしてる?
float と double で、、てのもC#ならともかくC++じゃなあ。
とりあえずキャストしてみては?
static_cast(double)でやってみても普通のキャストでもダメだw
atan2関数って結構クセもんだな
まだどこか、カンマとピリオドをうち間違えてるのかも。
フォントが小さいと分かりにくいから要注意。
atan2といえば、ゲーム実行中にドメインエラーがよく出たなー。
atan2( (double)move02.eny , (double)move02.enx);
でどうですか?
>
>>557 エラーがこれだけだから、多分何かが違うんだと思う
enemy_move.cpp(63) : error C2668: 'atan2' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
1> d:\c++\vc\include\math.h(547): 'long double atan2(long double,long double)' の可能性があります。
1> d:\c++\vc\include\math.h(499): または 'float atan2(float,float)'
1> d:\c++\vc\include\math.h(110): または 'double atan2(double,double)'
1> 引数リスト '(int, int)' を一致させようとしているとき
多重定義もクソも一回しか使ってないんだけどw
>>559 あ、今度はうまくいった。
一つ一つにキャストしないといけないのかー。
不便だな結構。
ちょ、、、どうやろうとしてたんだ?w
double test = (double)atan2(move02.eny , move02.enx);
これで一気に出来ると信じてた
敵の座標や速度は小数にして必要なときに整数にキャストするのがよくね
位置が整数だと2フレームで1px動かすときとか苦労する
>>563 関数のオーバーロードは引数で区別される
ちなみにそれだと関数が返した値をdouble型にキャスト変換するだけで関数の評価には関係ない
atan2を使ってて思ったんだけど。
敵にsin波の動きをさせるだけだったらatan2使わないでsin使ったほうが楽だよね?
>>556 え!?
static_castとか知ってて普通のキャストの基礎知らなかったりするのはかなり意外なんだけど
>>566 そもそもどうしてatan2を使おうと思ったんだい?
static_cast(double)じゃなくてstatic_cast<double>だけどな
返り値をキャストしてもショウガナイですね・・。
math.hの関数はよくint型引数にしようとして失敗したことが昔ありましたねぇ
で、atan2は敵と自機の角度求めたりするのによく使いますけど、
波の表現には使いませんねぇ
math.hの関数はどれも遅いので、なるべく使わないようにしてはどうでしょう
>>569 math.hの関数を使わないでのsin波の場合だとどうなるんだろう・・・。
sinもmathだと思うし、何を使うべきなんですかね
fastmath.h
neetmath.h
>>570 まずはmath.hの三角関数を使うべきだと思う。
今どきのPCで三角関数のコストが無視できない状況なんてあまり無い。
もしVCを使っているなら、
#pragma intrinsic
の使用を検討してみるといいよ。
コンパイラのビルトイン関数を使うことで速度向上が期待できる。
gccならデフォルトでビルトイン関数が適用されてる。
環境はc++とDXライブラリ
#pragma intrinsicってprintfとかのだよね?
c++だとあんまり使ってないや
画像の拡大縮小、反転などを併用したい場合は、素材側で対応するのが無難でしょうか?
一度描画したものをGetDrawScreenGraph()で取り込んで、別の方法で描画…というのはできましたが、
良い方法とは思えません。
背景含めて全部まとめて動かすってこと?
>576
int gHnd=LoadGraph("0002.jpeg"); //0002.jpegは50*50pixelの画像ファイル
int gHnd2 = MakeGraph(100,100);
DrawGraph(300,300,gHnd,true);
DrawExtendGraph(0,0,100,100,gHnd,true);//縦横2倍に拡大して描画
GetDrawScreenGraph(0,0,100,100,gHnd2);//描画されたgHndを読み取る
DrawTurnGraph(100,0,gHnd2,true);//左右反転して表示
めちゃくちゃなことをしているのは分かっています…
int gHnd = LoadGraph("0002.jpeg");
DrawRotaGraph(50, 50, 2, 0, gHnd, true, true); // 2倍拡大+透過+反転
こういうことかな
>578
ありがとうございます!
リファレンスの読み込み不足だったようですね…お恥ずかしい限りです。
DrawModiGraph
最悪DrawPolygon3Dでどうとでもできるわな
>>581 あぁ、こんな使い方も出来たんですね…。知識不足ですみません。
これで何とか考えた通りに出来ました。本当にありがとうございます。
DXライブラリ、サンプルプログラムのスクロール基本なんですが
ttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.html#N4 手計算だとどうしても描画用マップチップの配列(座標)が0,0からスタートしてくれません
プログラムは当然ちゃんと想定どおり動いてるのですが、
プレイヤーの初期位置Xが2、Yが2状態で計算すると
DrawMapChipNumX は 11
DrawMapChipNumY は 8
MapDrawPointX は -3
MapDrawPointY は -2
となり、マップの描画を決めるループを手繰っていくと、i が3以上、j が4以上にならないと条件を満たさず、
その条件で計算すると、MapData[ i + MapDrawPointY ][ j + MapDrawPointX ] は[1][1]が代入されると思うのですが・・・
こちらの計算違いではあるのですが、どこがおかしいのか分からないので間違ってるところを教えてください
if( j + MapDrawPointX < 0 || i + MapDrawPointY < 0 ) continue; // 描画しない
if( MapData[ i + MapDrawPointY ][ j + MapDrawPointX ] == 0 ) DrawBox();
↓
if( a < 0 || b < 0 ) continue; // 描画しない
if( MapData[ b ][ a ] == 0 ) DrawBox();
どうみても最初の描画は MapData[ 0 ][ 0 ] ですね
回答ありがとうございます、しかし、頭がこんがらがってきました
if( a < 0 || b < 0 ) continue; // 描画しない
これって人間の言葉にすると「aがゼロより小さい、または、bがゼロより小さいときは描画しない」ですよね?
ということは、ループの中で a=0 b=0 が与えられたとする条件を満たしてないと思うのですが・・・
自分が間違ってそうな箇所はわかりました、、どうやら論理演算子と関係演算子をもう一度勉強しないとだめみたいですね
>ループの中で a=0 b=0 が与えられたとする条件
意味が良くわからないんだが、
どこで与えられた
何のための条件?
>>587 × (a=0 b=0)が与えられたとする条件
○ (a=0 b=0)が与えられたとしても、条件(を満たしていない)
ですね、編集してるうちに変な文章になってしまってました、すみません
どこで与えられた、というのは多重ループの中で
i + MapDrawPointY //*1
j + MapDrawPointX //*2
を計算した結果だと思っていただければ・・・最終的に欲しい答えが
MapData[ 0 ][ 0 ]
ですから、一行前のエリア外を描画しないための制御文、
if( j + MapDrawPointX < 0 || i + MapDrawPointY < 0 ) continue; // 描画しない
のところで、*1も*2もいずれも0の状態で条件分岐を通過してくれないといけないわけですが、
そこのところが自分の理解では「通過しないはず」なので困っていました
if (a < 0 || b < 0) continue;
↓
if (0 < 0 || 0 < 0) continue;
↓
if (false || false) continue;
↓
if (false) continue; // continueは実行されますか?されませんか?
>>590 解りやすい解説ありがとうございます、
自分の誤解が招いた疑問が氷解しました・・・
敵を少しでも多く表示しようとするとカクカクになるw
>>592 解像度(スクリーンの大きさ)を1/4(縦、横ともに半分)にするのです。
それだけで、貴方のアプリケーションの速度は劇的に改善するでしょう。
と言ってみるテスト。
毎回ファイル読み込みとかしてないか注意。
>>594 悪い、同人物だ。
今度こそはメモリから読み込んでいるのにカクカクだぜ
メモリから読み込む、ってのがループ内だと意味ないんだぜ?
つーかソースどころか状況もわからんのに答えられるわけなかろう。
あてずっぽうのアドバイスが欲しいのか?
あてずっぽう考えるのだって大変なんだぜ?
処理ごとの速度を計測すれば、どこに時間食ってるかわかるし、
解決策も自ずと見えてくる
>>596 あーもしかしたらそうなってるかも。
大まかなソース↓
(enemy_move)
typedef struct{
int enx; //敵 x座標
int eny; //敵 y座標
int flag; //フラグ
int counter; //カウンター
} ENEMY;
ENEMY move01 = {100,1,0};
(略)
void enemy_move_02(){ //x100から左寄りのsin波移動
move02.enx+=sin(PI*move02.eny/80)*5;
move02.eny+=1.5f;
enemy_img = LoadGraph("date/img/enemy.bmp");
DrawGraph( move02.enx , move02.eny , enemy_img , TRUE ) ;
DeleteGraph( enemy_img ) ;
}
↑こんな感じのコードをexternでmain.cppの方で動かしてる、main.cppではwhileでこれらをループしてて、エスケープを押すとブレイクするようになってる。
竜神録のサイトを参考にして丸写しじゃツマランから自分で考えて作ってるんだけど、難しいな。
それだと動かすたびに読み込んで削除してを一々やってる
ゲームループの前に1回だけ読み込んで不要になったら削除
>>599 となると、while文が入る前にexternなりなんなりで読み込みだけを済ませるほうが良いって事?
というか全部の使う素材は全部ゲームループする前にメモリに読み込ませた方が良いって事だよね?
それだと俺大幅な修正が必要になりそうw
>>600 やりたくないんならやらなければ良いよ。学校の授業じゃないんだから。
多分分かってるんだろうけど
>>599の言ってる事(内容)は適宜だよ。
修正が必要なら修正するだけだろ
戦わなきゃ現実と
>>600 外部ファイルの関数を使うときは、普通はexternを使わないで、プロトタイプ宣言を使うらしいよ。
あと、enemy_imgをNULLで初期化されてるなら、
if ( enemy_img == NULL ) { enemy_img = LoadGraph("date/img/enemy.bmp"; }
という怪しげな応急処置で済ますことも可能。
320x240ドットのゲームの画面出力を640x480のサイズのウィンドウに表示したいのですが、
それをDXライブラリでやる一般的な方法ってありますか?
って質問を書いてたらちょうどマニュアルで
int SetWindowSizeExtendRate( double ExRate ) ;
を見つけられました。
本当にありがとうございました。
縦横比をどうにかできる方法があれば凄いんだけどね・・・。
4:3モニタの時代は終わったのかな。
最近ワイドモニタ多すぎ。特にノート。
テストしてもらった知り合いのPCが殆どワイドだったのに驚愕した。
歩留まりがいいらしいからね
横シューを作れという事じゃなかったのか。
>>604の方法で拡大すると320*240非対応のディスプレイでフルスクリーン化出来ないし
うちの環境だとアンチエイリアスがかかって見難くなるんで
@320*240のサイズで描画
A空のグラフィックハンドルに@を取得
B640*480に拡大して貼り付け
ってやってるんだがCPU使用率が跳ね上がる
おとなしくSetWindowSizeExtendRateで拡大したほうが良いんだろうか
横シューよりドラゴンバスターみたいなアクションがやりたい
マップチップ画像を分割で読み込んだ後、それを複数枚横に並べた画像を“描画せず”に1枚の画像としてメモリに格納するにはどうすればいいのでしょうか?
具体的には、たとえばこんな5×3のマップがあるとします(0=山、1=川とする)
0,1,1,1,0
1,1,1,1,1
0,0,0,0,0
この1列目の0,1,1,1,0を描画した結果の絵、つまり「山川川川山」という画像をGHandle[1]に格納(描画せずに)させたいんです。
もしマップチップ1枚の画像サイズが縦横32*32だとすれば、160*32の画像を1枚作ることになります。
裏画面に描画して、ってやり方じゃダメかな。
何の意味があるのか知らないけど。
615 :
名前は開発中のものです。:2008/08/07(木) 21:52:01 ID:O800tzRD
普通にLoadGraphでいいじゃん
やりたいことは・・・ロードランナーでいうと、完全なサイドビューではなく、レンガの上面(キャラクターが乗って触れてる面)も見えるようなビューにして奥行きを出したいんです。
上面を描くのに、まず完全サイドビュー視点のマップ画像を一列分つくって、それを台形のように変形させて(高さも潰して)対応させようかと思いました。
3D
あ、上面だけでなくサイドの面も描く必要があるか。
自分の方法だと面倒だな・・・
>>618 たしかに3Dのほうが楽かもしれないですね。
こっちにしようかな
無駄な質問をしてしまったようでみなさん申し訳ないです。
>>612 MakeGraphで作ったグラフィックをSetDrawScreenで指定して書き込めば良いのではないかと思ったけれど、
「3D機能をOFFにしなければいけない」とか「ロックしないといけない」っていうのがあって、めんどくさいな。
普通にドット絵を描けばいい気がする。
画面に描画した内容をまっさらに直したいというだけなら、
ClearDrawScreen()の代わりにDrawBox()などを使用しても問題ありませんか?
また、問題ないのでしたら、このふたつは処理速度上、どちらが有利でしょうか?
自分で試せば済む事でしょう。
>623
動作は確認したのですが、ClearDrawScreen()には、何か目に見える動作意外にも、
役割があるのではと思いまして…
SetDrawBlendModeの
DX_BLENDMODE_INVSRC が使えないんだけど
俺だけかな・・・
バージョンふるいのかなあ
>>625 使えないって定義がされて無いといわれるんでしょうか?
もしそれならヘッダファイルのDX_BLENDMODE_....に
あたる部分を探してみては?
C#でDXライブラリを使っているのですが、画像や音楽の保存場所がわからなく困っています。
初歩的な質問と存じますが、アドバイスをお願いします。
開発環境
Visual C# 2008 Express Edition
カレントディレクトリに置いたらいいよ。
C#でも使えるのか
すごいなぁ
業務アプリや科学計算ばっかりでゲームとか作ったことないけど
俺もパズルゲーム作ってみようかな
630 :
627:2008/08/13(水) 11:08:10 ID:7NjPpTlV
教えていただき、ありがとうございます。
カレントディレクトリって、作業中のフォルダですよね?
C#の場合ですと、[WindowsFormsApplication1]フォルダでいいのでしょうか?
何度も申し訳ありませんが、よろしくお願いします。
C#がどんなのか知らないけどな。
カレントディレクトリってのが作業中のフォルダって認識は合ってる。
ただ「なんの作業中か」を誤解している可能性がある。
例えば、貴方がゲームを作って、そのプログラムが「game.exe」というファイル名で作成されたとしよう。
当然、そのゲームをするにはその「game.exe」を実行するわけだが、
その時、まさにその「game.exe」のあるフォルダが「作業中のフォルダ」になるわけだ。
要するに「カレントディレクトリに置いたらいいよ」ってのは
「実行ファイルと同じとこに置いとけ」という意味だ。
いやー、その説明はどうかと。
ショートカット経由で起動した場合はショートカットの場所がカレントになるだろ
まあとにかく、リソースの類はファイル埋め込むかEXEの場所に。
カレントをあてにせず、EXEの場所を調べてアクセスするのがいいかな。
書き込む場合はEXEの場所じゃないほうがいい。
カレントディレクトリは、OpenFileDialogを使ったりすると
読み込み先のフォルダに変わったりするから注意した方がいいと思うぞ
それが原因で詰まったこともあるから
適当にカレントディレクトリに置けばいいとか言った。反省はしている。
相対パスでアクセスしたいってことだよね?
それとも絶対パスでも画像とかが動かないの?
後者だとお手上げ。
前者なら、多分bin/Debugフォルダが作られてるから、そこに置けばいいよ。
DXライブラリゲームプログラム開発講座を全部読んでみたけど、
すごーーーーーーーく初心者向けの解説だなw
まぁこれで十分なのかも知れないけど、
もう少し詳しい中級者レベルのはないのかな
中級者なら自分で考えるか、他の方法知ってる前提なんだろ
>>639 おおありがとう
こっちはもう少し実践的だね
641 :
627:2008/08/13(水) 20:13:52 ID:7NjPpTlV
皆さん、教えていただいてありがとうございます。
画像をbin/フォルダの下にあるDebugフォルダに入れたのですが、表示されませんでした。
某サイトのソースをコピーしたのですが、記述が間違ってるのでしょうか・・・
-- ソース --
DX.LoadGraphScreen(0, 0, "char.png", DX.TRUE);
申し訳ありませんが、アドバイスをお願いします。
LoadGraphScreen(0, 0, "char.png", TRUE);
>>641 それで、問題が解決できる奴がいたとしたら、そいつはエスパーだよ・・・・・
まさか、それでソースが全部なわけないよな。
>>641 確認したいんだけど、画面は真っ黒になってる?
なってなかったらそもそもDXライブラリがちゃんと動いてない。
でも一応動いてるみたいだからそれはないかな……。
あとchar.pngを一回絶対パスで指定してみて。
>>641 表示されないというのが「エラーが出た」なのか、「何も起きない」なのかすら
わからないので、無限の可能性が広がります。
1. ファイル名が間違っている
2. 画像に使ってる色が透過色になってる
3. ファイルが存在しない
4. 画像がセーブできてない(セーブに失敗している)
5. パスの指定がうまくいってない
6. そもそもDXライブラリを初期化できていない
7. ウィンドウが出てない
8. 裏画面に書いたままFLIPしてない
9. メモリが足りない
10. コンパイルしてない、あるいはエラーが出ている
11. 実は環境がMac
12. ライブラリをインストールしてない
13. 使用しているディスプレイ、グラボの仕様/設定上表示できない色を使っている
14. 某サイトのソースにバグ
15. (CPUの)速さが足りない
Releaseフォルダも試してみたら
プロジェクトファイルだっけ?←拡張子がdspのやつ
とりあえずあれを含んだサンプルを拾ってきて、動くかどうか試してみる。
動くのを確認してからソースをオリジナルに書き換え、フォルダに画像を置いて動作確認。
というのはどうだろう?
「横スクロールアクション」を作ってる最中なんだが、
同じカーソルキー二度押しでダッシュさせるサンプルコードを探してるが見つからない。
二度押し判定の仕方を教えてほしいの
それくらい自分で考えてみようぜ
フラグやカウンタを使えばできる
>>641 とりあえず動かしたいんだよな?
まず、プロジェクトの全部のフォルダにその画像全部コピーして実行してみろよ。
で、表示されたら1つずつ消して実行してみて、どれ消したら出なくなるか試してみるんだよ。
本当はカレントがどこか調べたり、フルパス指定したりするんだけど最初のためしなんだろうから、
それでやってみ。たぶんDebugの一つ上がカレントじゃないかと思う。
ってbinができてるなら2008じゃなくて2005なのかな。
だったら別の場所かもしれん。
って、、、、よく見たらC#なのか。
これC#から使うにはちょっとあれだが・・・
bin\Debug に入れたら動いたぞ。
(うちはVista64なんで正確にはbin\x86\Debug)
ついでに、全ソース。
using System;
using DxLibDLL;
namespace WindowsFormsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
DX.ChangeWindowMode(DX.TRUE);
DX.DxLib_Init();
DX.LoadGraphScreen(0, 0, "char.png", DX.TRUE);
DX.WaitKey();
}
}
}
しかしDXライブラリを初めて使ってみたが、Vistaと相性悪い?
そもそもVistaだったらDirect3D使うべき
>>654 そんなことないと思うけど。なんか問題あったか???
あー、入門向けの説明してる画像ずらして表示するやつ、キー入力待ちまで何もでないんだよね
まあ通りがかりに質問見つけてためしに動かしてみただけなので、もうちょっと見てみないと何とも言えないけど。
でもこの龍神録の解説はいいね。xnaに移植してみたくなった
>>648 14歳〜、のアクションゲームサンプルに
「ジャンプ時にジャンプキーを受け付けないようにする」って解説がある、参考にしてみては?
659 :
627:2008/08/16(土) 02:31:00 ID:IJByLJ4E
ソースを組み直したら表示されました。
単純なミスをしてたみたいでした。お騒がせしました。
画像ファイルはbin/debugに置くことで表示されました。
皆さん、アドバイスありがとうございました。
>648
入力をキューなりリングバッファなりに貯めて
コマンド成立判定の結果で状態遷移なりフラグなり変更
「カーソルキー二度押し」とはどういう状況の事なのか、を
考えてみれば自ずと答えは出るだろう。
DXライブラリで、STLって使えない?
クラスの配列を実装するのにコンテナのvectorを使いたいんだけど、
エラーを吐かれる。
>>232-233で、ヘッダに何か書いてある、と書いてあったから
DxLib.hをSTLでテキスト検索掛けたけど
(STLを半角にしても全角にしても)引っかからない。
本家掲示板過去ログ↓でそれらしき記述を見つけたけど、
ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=560 #define DX_USE_VISUALC_MEM_DEBUG
ってどこにもないんだよね。
DxLib.hの147行目当たりに DX_USE_VISUALC_MEM_DEBUG があったから
それを含む数行のコメントアウトを外してみたけど反応は変わらないし。
>>662 (出来る範囲で)エラーメッセージを晒せば、詳しい人がトラブルシュートしてくれるかもよ。
>>663-664 ありがとう。
>>663 何の問題も無く、とは、DxLib.hをいじったりしないで、ってこと?
とりあえず、最低限で組んだソースを晒してみる。
------
#include "DxLib.h"
#include <vector>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
if(DxLib_Init() == -1){
return -1;
}
SetDrawScreen(DX_SCREEN_BACK);
vector<int> x;
x.push_back(1);
while(CheckHitKey(KEY_INPUT_ESCAPE)==0 && ProcessMessage()==0){
DrawFormatString(0,0,GetColor(255,255,255),"x[0] = %d",x[0]);
ScreenFlip();
}
DxLib_End();
return (0);
}
------
長くなったので連投失礼。
>>665のソースで吐かれるエラーは、
------
\main.cpp(10) : error C2065: 'vector' : 定義されていない識別子です。
\main.cpp(10) : error C2062: 型 'int' は不要です。
\main.cpp(11) : error C2065: 'x' : 定義されていない識別子です。
\main.cpp(11) : error C2228: '.push_back' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
\main.cpp(14) : error C2065: 'x' : 定義されていない識別子です。
------
以上。
あ、環境書いてなかった。
VC++2008Ver9.0の、DXライブラリVer 2.24cです。
>666
俺そんなに詳しいわけでもないんだけど、
std::vector<int> x;
これでどうだろう
>>668 cinとcout使わないからstdネームスペースを宣言していなかった。
ありがとう。
(っていうか「C++ vector」でググったら最初のページに『vectorはstdという名前空間内にあります。』って書いてあるじゃないか…)
>>669 精進します><
using namespace std;
はいつもしとけば
>>671 ヲイヲィ・・・・
使わないところで、そうやってnamespace使っちゃだめだろ。
なんのために名前空間なんて概念取り入れてると思ってるんだよwww
逆にいつも使わなければ、この手のエラーは最初に食らってて変なとこ探したりしなかっただろうに。
std名前空間なんて別にusingしといても問題ねーよ
今回の質問者には問題あったみたいだがw
ループ毎に、ClearDrawScreenで画面をきれいにしてから描画していると、
画面の1/3に及ぶ大きなちらつきが出てしまうのですが…解消するには
どういった方法がありますか?
それは本当にClearDrawScreenのせい?
>677
すみませんでした。グラフィックボードの性能不足のようでした。
スレ汚し失礼しました
>>678 本当のグラフィックボードの性能のせい?
裏画面に描画してflipすれば治る類のものかもよ。
>679
すみません、SetDrawScreenの位置がおかしいのが原因でした。
ありがとうございました。
本当のSetDrawScreenの位置のせい?
(ry
お茶吹いたじゃねぇか!
同じプログラムを、
解像度1024*768 32bitcolor,フルスクリーン
解像度1024*768 32bitcolor,ウインドウ
の両条件で実行したところ、ウインドウモードではfpsが平均して68以上だったのに対し、
フルスクリーンではせいぜい59.8程度で、60を超えることはありませんでした。
さらにSleep(20)のハンデを課して両条件で実行したところ、処理自体はフルスクリーンモード
の方が速いということがわかりました。
フルスクリーン時のfpsが頭打ちになっていたのは、垂直同期というのに関係があるんでしょうか?
うん
「画面のプロパティ」の「設定」→「詳細」のあたりにリフレッシュレートの設定があると思う。
おそらく60になってるだろうけど、それを70とかに変えて試してみると勉強になるかも。
(ディスプレイやグラフィックボードによっては対応してない場合もあり)
あと、↓の命令を使って垂直同期信号待ちを切ってみるのも勉強になるかも。
どうして垂直同期信号待ちが必要とされる場合があるのか解るかもよ。
SetWaitVSyncFlag ScreenFlip関数実行時にCRTの垂直同期信号待ちをするかのフラグセット
CRTのときは、60と70の差が大きすぎてすぐにリフレッシュレート上げてたけど、
液晶は見た目変わらんから60のまま、なことも多いなあ。
>686
ありがとうございます。
色々勉強になります。しばらく色々設定いじってみます
ニュートラル調べればいいだけだと思うよ
690 :
名前は開発中のものです。:2008/08/28(木) 13:33:11 ID:m65IXGpQ
DXライブラリ3Dを使っています
メタセコイアでXファイルをつくりUVマッピングなどチェックをして保存しました
LoadModelでそのXファイルを読み込み
DrawModelで表示させるようにしましたが
起動すると LoadModel 0番目のテクスチャ C:\...................... TEST.bmp
が見つかりませんと
でます
対処方法を教えてください
C:\...................... TEST.bmp はあるの?
692 :
名前は開発中のものです。:2008/08/28(木) 13:49:15 ID:m65IXGpQ
>>691 同じフォルダ内にあるんだけど
他の、サンプルにある Sky1.X は、テクスチャも貼られ表示できました
ちなみに
Xファイルを開いて、TextureFilename のところを
C:\.........TEST.bmp
から
TEST.bmp
に変えると表示されました
>>692 マルチバイト文字を使用する設定を確認してみてはどうか。
携帯からエスパー。
694 :
名前は開発中のものです。:2008/08/28(木) 18:50:54 ID:JopJTyIq
というかドライブから指定するもんか?
695 :
名前は開発中のものです。:2008/08/28(木) 21:28:08 ID:dfxzS5Cd
実行されたディレクトリを取得して
そこからの相対パスで書いとくのがいいんじゃないかな
696 :
名前は開発中のものです。:2008/08/29(金) 18:08:45 ID:f6mFLVdV
結局自力解決したのかどうなのか
697 :
名前は開発中のものです。:2008/08/29(金) 18:38:30 ID:HzuC4F0t
>>696 手直しでファイル名を指定することにしました
めんどいね
そもそもxにフルパスで書かれるのはどうなんだ?
うちの環境じゃそうならないが・・・
グラボの関係か、320*240*16BITでつくってるゲームをフルスクリーンで表示しようとしても、拡大されず、左上4分の1だけゲーム画面で、あとの4分の3は真っ暗!
みたいな状況になってしまう。
なにかいい解決方法ありませんか?;
ってメタセコイアの環境設定で指定したフォルダ以外を指定するとフルパスになるな。
こういうもんなのか。
>>701 そんなもんだ。
メタセコなら毎回フルパスを消して相対パスにせないかんですよ
703 :
名前は開発中のものです。:2008/09/02(火) 09:43:44 ID:hFsfLIz7
環境設定でピクチャのフォルダ指定して常にそこ使ってるとパスが入らない、
三角関数などを利用して求めた移動量は基本的に少数の形をとるため、実際に
描画する際には整数にしなければなりません。しかし、そうすると移動量の値に
差が生じてしまい、ずれた方向に進んだりしてしまいます。
今は、定期的に移動量計算をやり直して進路を修正しているのですが、何か他に
良い方法はありませんか?
>>705 俺は座標や移動量などは全部小数で扱って、描画するときだけ整数にしてる。
>706
型変換のタイミングを延ばして、誤差を最小限にするんですね
ありがとうございます。
普通に関数名の最後にFがついた奴で表示すればいい
>708
ヘッダを覗いたらありました!
ありがとうございます!
久々に来たら自分のカオスソースを見てしまったw
>705
亀ですまんが、固定小数点とか楽じゃない?
>711
ありがとうございます。調べてみましたが、なかなか計算速度が向上しそうです。
C,C++では標準でのサポートはされていないようですが…
それも視野に入れて作っていきたいと思います。
>>712 難しく考えないでもよほど大きな座標系じゃない限り
浮動小数点でずれが発生するなんてめったにないぞ・・・。
何か間違ってないか?
あと固定小数点は標準のサポートとかそういうんじゃなく、
はるか古来からある基本的な手法の一つだぞっと。
>712
要はさ。
座標とか、例えば全部100倍した値で保持しておいて、
実際に表示する時だけ1/100にすればいいんでね?って発想。
実際に使うなら、もうちょっと応用しなきゃならないだろうけど、
これだけでもfloatよりは速い場合があったりする。
>713 >714
そういうことですか。すみません、少し勘違いしていました。
ただ、入力→変換(割り算など)を考えると実感が湧かないので、
とりあえず、クラス化して実際に速度を比較してみます。
>例えば全部100倍した値で保持しておいて
128倍とか、二の倍数の方が早いかも、と考えるのは古いかな。
たとえ話でわかりやすい10進にしてるであろうのにこの突っ込みはかわいそう
いや別にそれが悪いと言ってるわけじゃないって。
僕は5年前HSPというスクリプトでシューティングを作ってたのですが、
整数しかサポートされてなかったので、10000倍にバイアスかけて
描画の時だけ10000で割ってました。
画面が6400000 * 4800000あると仮定していました。
はいはい、よかったでちゅねー僕。
720 :
714:2008/09/13(土) 18:15:00 ID:Craygg7f
>716
ちなみに自分の場合は、ビットフィールドを使ってるので割り算すらしてません
>>720 まぁビットフィールド使うよりシフト演算使ったほうが速度的には速いんですけどね。
>721
計測したところあんまり変わらなかったので
シフトさせるよりビットフィールドの方が見やすいかなと。(ぱっと見たら構造体っぽいし)
みなさんはDXlibで光や水、炎、煙などはどう表現してますか?
元画像とαパターンを用意してアニメーションさせる、
半透明のパーティクルを多数描写して表現するなどの方法が考えられますが
他に効率の良い方法やより良い表現方法などはありますか?
724 :
名前は開発中のものです。:2008/09/17(水) 18:02:15 ID:jRvaVjUa
>>724 実はまだαブレンドを使ったことが無いんです
依然作った爆発のエフェクトは透明度0のアニメーションパターンを
大量に描写するという力技をやったのですが非常に見づらくて・・・
いずれαブレンドと使うときの参考に聞いてみたくて
>723
ドット絵で爆発パターンを用意して、普通にアニメーションさせるのは?
どういうゲームを作るのかにもよるだろうけど、十分綺麗だよ。
αブレンドは非常に便利ですよ〜。
とりあえずスーっと消えていく表現をするのはアルファブレンド無しには無理では。
光は単純に加算ブレンドすれば表現出来ますよ。
水はモワモワした明るさのむらがある画像を同様に加算ブレンドで
適当に動かしながらブレンドすれば所どころ輝度が明るくなるので
水がキラキラしてるみたいに見えます。
・・まぁこればかりはサンプル見ながらじゃないと理解は難しいでしょうけど。
煙もフォトショとかで適当にモワモワした画像を用意して重ねて表現してますね〜。
爆発だけは私の技量じゃ無理なんで、予め用意した画像をまわして
アニメーション作っています。
・・・ところでDXライブラリ使って皆さん
どんなゲーム作っていらっしゃるんでしょう〜?
>>726 メタルスラッグの爆発アニメーションはすごいですよね
あそこまで出来れば小手先でごまかす必要な無いんでしょうけど・・・
>>727 なるほど、加算も工夫次第でいろいろ使えそうですね
729 :
名前は開発中のものです。:2008/09/19(金) 11:13:43 ID:1wZmK+F1
ソース見ても役に立たないのでは・・・
こういうのは素材が大事だ
素材は俺が提供するから
>>729にソースを見せてやってくれ
スレチかもしれないけど、D言語って統合開発環境あるの?
Eclipseでいいじゃん
>>729 >>731 わかりました。・・で作ってみたんですが、
サンプルコードは素材が無いと書けないのでココに置いときます〜。
http://l.huu.cc/zip/sample.zip VisualStudio2005Proのプロジェクトも一緒においておきました。
サンプル見るだけなら実行ファイル開いてもらったらOKです。
人に見せれるようなコードじゃないんですがね;
しかも特にエフェクトの勉強とかしたわけじゃなく、
勝手に考えたんで、責任持てませんよ・・。
私も爆発エフェクトはうまく作れないので、
よい情報あったら下さいまし。
別人だが、参考になったわ。
結構綺麗に出来るのね。……重さとかは大丈夫?
737 :
名前は開発中のものです。:2008/09/20(土) 08:43:52 ID:ipBgWeEu
>>735 特定しました
あなた様のコードはいつも参考にさせて頂いておりますo(*_ _)o
>>735 龍神録の人でしたか
いつも勉強させてもらってますー
>>736 重さは多分大丈夫じゃないです;
300回も上書きブレンドしているので、結構な重さにはなっていると思います。
ただいつも通常使ってるデスクトップとわざとちょっと昔のノートと2台で
作ってるんですが、そっちで処理落ちしなければ大丈夫だと勝手に決めてて(ぇ
これは処理落ちしなかったのでまぁ許容範囲かなとは思います。
>>737 おぉ、99年からこんな物が作ってるなんて、一体レンダリングに
何日かかったんだろう・・。
普通にジブリの新作か何かかとすら思いました。
>>738 >>739 どうもありがとうございます。恐縮ですm(_ _)m
>>740 ちょっとスレ違いかもしれないけど質問です。水面や地形のテクスチャはどのように作っているのでしょうか?
740です。
私はですが、普通にフォトショップというソフトでマウス使ってひたすらカキカキしてます。
GIMPとか別にソフトは何でもいいと思います。
ペンタブレットがあるといいんでしょうけどね・・。
龍神録の背景製作しているときは、京都の近くに住んでるんで、
あらゆる観光名所まわって素材になりそうな写真沢山とってきて、それ見ながら描いたりしました。
光の素材は適当にフォトショで線を何本かかいた後、
適当にぼかしてはグニャっとまげ、回転したり、またぼかしたり色々やってあんな
形にしてみました。
フォトショの色んなテクはmixiのフォトショコミュとかはいると結構参考になる
テク入手できますよ。
743 :
741:2008/09/22(月) 11:09:21 ID:QYShp17z
>>742 何か専用のツールとか使っているのかと思っていたのですが、
手描きであそこまで仕上げられるとは・・・凄いです。
自分も勉強してみます。
744 :
名前は開発中のものです。:2008/09/22(月) 14:41:02 ID:gqBSy5fA
>>742 rスパロボの戦闘画面みたいなの、つくれる?
745 :
名前は開発中のものです。:2008/09/22(月) 14:43:17 ID:gqBSy5fA
それは何を使うかというより使う人の技術の問題だろ
つーか、そんな事訊いてどうするつもりかと。
素材があってもビルボードとかの技術がないと無理だな
私は絵がうまくないので、参考にならないと思います‥。
龍神録に出てくるアイシャとリリアの絵はスタッフロールにあるファンタG君に
書いてもらったのですが、絵のうまい彼はペインターとフォトショで書いてるようです。
まぁwindows標準のペイントでも神画像作ってる動画もある位ですし、
どんな絵がかけるかは、ソフトの問題じゃなく、
その人の絵のセンスかと思いますよ。
750 :
名前は開発中のものです。:2008/09/23(火) 07:22:43 ID:Kj+y16lm
>>750 C#用のラッパーは公式サイトで配布されてるからそっち使え
752 :
名前は開発中のものです。:2008/09/23(火) 09:33:01 ID:Kj+y16lm
>>751 おおぉ、よーく探したらこっそり置いてありましたねw
有難うございます。
それにしても、C#で開発できるとかかなり便利ですよね
オブジェクト指向で言語仕様も簡単だし、.netライブラリも充実してるし。
疑問に思うのですが、このライブラリを知るまでは
C#でDirectX使うには、XNAかマネージドDirectXしか無いと思ってたけど
DXライブラリで普通に使えるんですね、、なんで普及しないんだろ。
2D専門だから
初心者が始めるのにはC#はいいが
CやC++使いもしくは他言語から移るメリットが少ない
>>752 SlimDXオススメ
わざわざC#でゲーム作ろうとする人って、C#しか使えないんじゃなくて
C#(言語)や.NETのクラスライブラリが使いたいのが理由の人が多いんだと思う
だから初心者向けのDXは需要がないんじゃないのかな
755 :
名前は開発中のものです。:2008/09/23(火) 10:35:17 ID:Kj+y16lm
>>753 なる
>>754 そそ、.NETのライブラリが便利すぎなんだよ
あと、普段業務PGやっててJavaとかC#の純オブジェクト指向言語のが慣れてるってのも理由のひとつ。
SlimDXね、調べてみるわ。
というか、ここのスレの雰囲気いいよね、技術系スレなのに人当たりがいい人が多い。
とか言われると荒らしたくなる俺
>技術系スレなのに
どういう意味だそりゃw
758 :
名前は開発中のものです。:2008/09/23(火) 14:23:55 ID:YaNZJWA2
>>757 ム板とか行ってみるとわかるんだが
大体の技術系スレは殺伐としてる
年齢層が結構高いという理由もある。スレにもよるが。
C#orVB.netのManaged DirectXはかなり遅いのが難点。
ただし作るのが楽チン。スキンメッシュとかうごかしたらかなり
遅いからすぐにわかるとおもう。
逆にいうと、動かさない、3Dシュミレーションゲームとかなら
ぜんぜんこっちのほうが速く作れるからお勧め。
HLSLもつかえるし。
>>759 昔は若かったがなw
そのまま住人が居つくから平均年齢が高くなってきたんだな。
スレによって年齢層違うっしょ。
バイク、車、他各専門系のスレに小中学生とかが大半を占めてるはずないし。
ここは比較的技術・専門系ということになるのでは
Cのインターフェイスそのままじゃなくて、C#向けにちょっとだけ整理したラッパーを作ってみようかな
需要ないだろうけど
いくつかやってるとこあるみたいだけど途中で止まってるみたいだね。
本家のは使えないしな。
まあDXライブラリくらいだったら、ラッパー書くんじゃなくて
自分で1から作っても手間はそんなに変わらなかったりするしなあ
静止画で出されても困るような・・・
そういう小さい爆発なら生成ツールがいくつかあったぞ
俺は発色弾というのを使ったことがある
いい出来だと思うけどUPするならGIFのほうがいいよ
おー見ましたよー素晴らしい。いいですねぇ。
手の込んだ事をするならDirectXでってことになっちゃいますよね。
なんとかDXライブラリで出来ないものか・・。
この動画をキレイに一つの素材として黒い背景に動画をαブレンドすればいいんでしょうけど、
背景が真っ黒じゃなかったら光ったエフェクトになりそうですね。
動画にPNGみたいな「透過色」ってのがあったらいいのに・・。
PNGの背景透過色にして、PNGでこの爆発エフェクトを連続写真のようなもので
出力することって出来ないんでしょうか?
必死でPrtScr!
いや、これならDXライブラリでもできるでしょう
火炎部分の加算と黒煙部分のアルファブレンドの組み合わせだよ
>>771 動画を静止画に分割したとしても、背景が白ではそのままでは加算するしか・・。
>>772 そう言われてみたら何となく出来そうですね。やってみます。
確かに一つ一つをモワッと広げながら表現すればそれっぽくなりそうですが・・
火炎部分の絵をフォトショで頑張って描いてみましたが大した絵がかけず失敗orz
う〜ん、素材がうまく作れないので絵心が無い人は損ですね・・。
>>772 もし簡単に出来る方法があれば、教えてもらえないでしょうかm(_ _)m
シューティングとか作ってて気がついた。敵にショットが当たって炸裂する爆発が快感なんだと。
爆発エフェクトって大事だよね。
でも爆発エフェクトのせいで見難くなったら逆にストレスたまる。
DXライブラリでゲームを作ろうと先週『14歳で〜』シリーズの一番新しい奴買ってきたんだが、
確かにわかりやすいけどえらい誤字脱字多いのな。
そういうのも含めて勉強になるから別に良いんだけど、初版の参考書って皆こんなもんなんだろうか。
778 :
名前は開発中のものです。:2008/09/28(日) 00:13:39 ID:2mgnfi1g
>>777 そんなに多いの?俺の持ってるその作者の別の本は初版でもほとんど間違いなかったけど。
その作者の本は神認定されるのとクズ認定されるのとがあるらしいからなぁ。
ちょっと読んでみたけど、書くべきではないコードの書き方があちこちあった。
全体的にもそうだけど、部分的にも。
あのコードのままコンパイルしたら通っても、
ちょっと改造しようとすると応用が効かないというか。
780 :
名前は開発中のものです。:2008/09/28(日) 04:50:05 ID:2mgnfi1g
>>779 分かりやすければいいんじゃない?
サンプルは応用じゃなくとりあえず理屈が分かるのが大事だから。
まぁ個人HPならともかく書籍なのにコードが間違ってるのは致命的だけどw
>>781 >▼P90
そうそう、779で言ったのはこれの事。
立ち読みしただけだから所々しか読んでないけどそれでも
色々おかしな記述があったの覚えてる。
0xffffffとか何色示したいか知ってる人にはわかるけどね、
何ビット表示かでかわるし、まさか18273みたいな指定の仕方する人は少ないかと。
それから1リフレッシュより短時間の待機はWaitTimerよりもSleepでするべきだと
思うけど(WaitTimerはメッセージ処理するから、Sleepより重くなる)Sleep使ってない。
ゲーム画面をDxtoryやDxrecでキャプチャさせること考えると
ゲーム中なるべくSleepした方がいい。
著者は知ってて端折ってるならいいけど、あちこち後々必要になりそうな
気のきいた記載がないんだよね。
しかしこれだけの間違いを理解できる人が、
『14歳で〜』シリーズなんて買う必要があるのだろうかw
SleepはDXライブラリの関数じゃないからその指摘は酷じゃないか?
>>783 自分はDXライブラリ初めて触るので、ほんとに1ページから順に読んでいってるのよ。
C言語も自分の中では少し怪しいので、第二章のC言語講座の部分も含めて。
Sleep関数はDXライブラリの関数じゃないにしても、
DXライブラリの中でインクルードしてあるから、デフォルトで使えるし、
いいんでないかと思ったけど。
まぁ本の題名からしたら14歳が理解出来る程度のことがかいてあればいいのか・・。
14歳からゲーム作ってたらさぞかし技術高いだろうな・・
雑誌見ながらぽちぽちBASIC打ち込んでた頃だな……。
未だにあの頃からレベル変わってねー。
>>788 実際には14で神童・・20過ぎればみたいに3,4年で飽きてしまうやつがほとんどだと思う。
それは昔のBASIC(DXライブラリの作者もこの時代の風潮を参考に開発してる)も証明してるし。
>>788 80年代の雑誌見てると小学生が投稿しているからなぁ
ゲーム開発で必ず付き纏う問題の一つにゲームスピード調整があるけど、
色んなやり方や宗派があるからあまり触れられないよね。最重要なのに。
BASIC時代は無意味なforループでウェイト掛けたりしてたけど、
DXライブラリ使って初めてゲーム作る人は、第一作目はそんな感じの環境依存コードになるよね。
ScreenFlipが勝手にウェイトかけてくれるもんでそれをあてにしてたら
結構あてにならん事を後に知って色々いじる事になった……。
>>793 モニタ毎のリフレッシュレート依存だし、リフレッシュレートに追いつかない重い処理だった時に処理落ちするからね。
でも結構そういう人多いんじゃない?
仮にリフレッシュレート固定だとしたらかなり精度の高いタイマーだけどね。
理論的にはそのはずだけど
俺、かなり無茶で非効率なプログラミングしてるのに
リフレッシュレート60でほとんど処理落ちしてない。
メインPCはそこそこ高性能だから当然だとしてもちと古い型のノートPCでもそうだから
よっぽど無茶な事をするか非効率なプログラミングでもない限り処理落ちの心配はないんじゃないかなぁ。
ScreenFlipの問題点はそういう処理落ちの部分じゃなくて、
リフレッシュレートを60以外にしている人の場合とか、
ウィンドウモード時にどうなるかよく解らない点とか、
環境によってはScreenFlipで垂直動機信号待ちをされない場合があるとか、だね。
>>795 えと、要するにそういう事が言いたかったんだが。。
この場合、「ゲームスピード」って表現はおかしくないか?
どの環境でも同じスピードで動く、って意味だからいいんじゃない?
たとえばキャラクターがゲーム画面の端から端(仮に800dot)まで動くのに1秒掛かる仕様だとしたら
どの環境でも同じ1秒掛からなくちゃいけない。
この場合、800dot/秒を基準にすればScreenFlipでも問題ない。
リフレッシュレートが上がれば上がるほど滑らかに動いてるように見える。
ただ、この場合、時間を基準にしてるのでゲームがアクティブじゃなくてもその分動く。
>>795のようにリフレッシュレートによって移動量が変わっちゃうのはメインループの1ループ単位で移動量を計算してるからだと思う。
プログラミング的には全体を一つのインクリメントカウンタで統一するとわかりやすいけど、
ScreenFlipでウェイトする時間がリフレッシュレート依存だからマルチスレッドでカウンタを取るのがいいのかな?
あと、ScreenFlipしてるのに(垂直同期を待ってるのに)fps制限してる人を見かけるけど、
デメリット以外ないと思う。
でもまあ、単に「ゲームスピードの調整」って言われると
「処理能力や画面の更新に伴う、開発者が意図しないゲームスピードの上下」をなくすこと
……だとは連想しないんじゃないかな?
少なくとも自分なら、
名作「パックマン」は、製品化するときに移動速度を開発版の半分に下げた……という逸話とか
そっちを思い出す。
最初の>792に関しては、その後に「FOR文」や「環境依存」の一文があるから、ちゃんと伝わったっていうだけで。
>798
メリットはあるんじゃない?
最初からリフレッシュレートが一定という前提なら、開発は楽だと思う。
>800dot/秒を基準
移動量を時間で算出するってやり方自体は知ってるけど、
シューティング等のリアルタイムゲームにはまだ使った事ない。
1ループにかかった時間で移動量を計算して当たり判定とかしてると
リプレイで微妙に違う結果が出たりしそうな気がするけど
そういうのはどうしてるんだろ。
結果ごとリプレイデータとして記録すんのかな。
(俺はプレイヤーのキー入力のみを記録してリプレイさせてる)
ここまでくるとDXライブラリとは関係ない話になるな……。
>>732 遅レスだけど、ありがたく使わせていただきます。
ところでDXライブラリのWikiができたね。
公式の掲示板で紹介されてる。
書籍へのリンクにアフィリエイト咬ませてるけど、
こういうの嫌いな人はこなくなっちゃうよ
つまり、他人が作ったもの(DXライブラリ)をネタにして
他人に知識を収集(Wiki)させておいて、
自分だけが稼ごうとして
宣伝してまわってるわけですか。
805 :
802:2008/10/03(金) 18:01:41 ID:Ot6EbYXZ
うは、誰か本家の掲示板にも書いたのね
アフィリはしてもいいと思ってるんだよね。ジャンルは違うけど俺もwikiにアフィリつけてたりするし
DXライブラリ使ってる人はパソコンとかネットに詳しいから、アフィリ嫌いの人多そうだな、と
806 :
名前は開発中のものです。:2008/10/03(金) 18:10:10 ID:Ot6EbYXZ
モザイクを使ったトランジションを試したいがさっぱりやり方がわからん
画面上の各ピクセルの色を取得
↓
画面を4*4とか16*16とかのブロックに分ける
↓
取得した各ピクセルの色からブロックごとに塗る色を決める
↓
ブロックごとに色を塗る
みたいな感じなのか?
リファレンスにも載ってるけどGetPixelで620*480ピクセルの色を取得すると
処理に時間がかかるよー
アフィくらい別にいいだろ、と思ってwiki開いてみたら、
一番目立つ場所に何カ所もベタベタ貼ってあって噴いた
儲ける気満々ですな
無料wiki借りた方がマシじゃねえか・・・
これで「皆様に役に立てば」はねーだろw
808 :
名前は開発中のものです。:2008/10/03(金) 18:27:00 ID:VQ82xcw5
ブロックの処理を1ピクセルずつじゃなくて、2とか4ピクセルずつにすればどうだろ
2だと( for( x=0 ; x < BLOCK_SIZE ; x +=2 ) for( y=0 ; y < BLOCK_SIZE ; y += 2) )
処理量は1/4、4だと1/16だよ
>>806 リファレンスのGraphLockのサンプルを見るべし。
画面が入っているメモリを直接触れます。
Wikiやるなら形だけでもいいからあの管理人様に是非開いてもらいたい。
後は有志が編集すればいいんだから。
wiki増えた。2つもどう使えとw
おそらく旧wikiは自サイトの1コンテンツという位置づけなんだろうけど。
なんか私の発言のせいでややこしくなったみたいで申し訳ないなぁ。
儲けようという魂胆が見えてヤだ、というよりは、
よほどの大手でも無い限りたいした収入があるわけでもなし、見やすさを選ぶべきでは?
……と思ったり。
単に目立っているだけの広告はクリックされない、という説も。
アフィで儲けようとするなら、まずは中身を充実させ、読みやすさを確保しないと誰もクリックしないのよ。
そもそもWikiなんているんかいな。
確かに
公式のリファレンスさえあれば、あとはロジックの問題だし
どうせやるならDXライブラリの非公開関数の解説やってほしいですねぇ。
すごくいい機能の関数なのにリファレンスで紹介されていないもの山ほどありますし。
いちいちヘッダファイルみて一行しかない注釈で使い方想像しながら
試行錯誤してみるのはめんどうですよねぇ・・。
>>814 確かに公式があれだけ充実して以上必要性薄いよね
非公開関数の解説はいいねー
あとはリファレンスに乗ってない引数の使い方解説とか
非公開関数はあくまで非公開(動作保証対象外)なんだから
可能な限り使うべきじゃないと俺は思うんだけどなー。
そうなんだ
バンバン使ってるおwwww
でも使いたい人は使ってくれってことでヘッダファイルにわざわざキレイに
注釈付きでかいてあるんだろう?
DXライブラリの幅は非公開関数でグンと広がるし、
ドンドン使っていけばいいと思うけどなぁ。
製作者さんは忙しい人みたいだけど、ライブラリ製作自体が趣味みたいだし、
関数のバグの報告や提案なんかはしてもらって嬉しいはずだとオモフ
非公開関数を使わずに開発だなんて、もう考えられない。
例えるなら、Cでポインタを覚えた時の感覚?
非公開関数のwikiはいいね。
あくまで非公式非推奨だって認識で住み分ければ製作者さんや公式に迷惑掛からないし。
現状の問題は、「同じWikiが2つ存在すること」だよな
>>825 旧wikiはあの人が自分のサイトを移行したいみたいだから、
新wikiをみんなで自由に編集するものと考えれればいいんじゃなかろうか。
wikiのタイトルもちょっと違うし。
もっとも、そのうち思い直してwikiを1つに統合しちゃうんじゃないかと
心配だけど。
というかWikiに関しては管理人様が週明け以降に声明だしそうだし今は保留でいいんじゃない。
こんな混乱を作り出すなら無料wikiの方がマシだなー。
今のところあのアホ管理人は全く余計なことしかしてないね。
>827と>828の指す「管理人」は、それぞれ別人なのな
確かに無料Wikiの方が個人情報の扱いとか永続性とか考えるといいかもしれない。
個人的にはやはりDXライブラリの管理人さんに開設だけはやってほしいな。
それならアフィ入っててもいいのに
>>829 公式掲示板のやり取りからして、
827の「管理人」はDXライブラリの作者さんのことかと。
別の人がコンテンツを管理/運営するというのもそれなりにメリットはあるんだけどね。
もともとの目的は負荷分散らしいしさ。
他にも、DxLibの悪いところみたいな、公式じゃないからこそ書けるものもあるだろう。
DxLibに限らず、たまに初心者スレで
ゲームを作りたいのですが、
DxLibを使うのとDirectXを勉強するのとではどっちがいいでしょうか?
といった類の質問を見かけるけど、公式だと基本的にDxLibを薦めるような形になっちゃうっしょ?
質問者に対して適切な回答があったとしても、それが他の言語や他のライブラリだとしたら答えにくい。
833 :
829:2008/10/05(日) 18:30:13 ID:6np9SFhP
>831
だからそう言ってるんじゃないか
834 :
名前は開発中のものです。:2008/10/05(日) 18:49:47 ID:vRdfR60s
>830
>832
同意。この中で誰か無料Wikiに開設すればこの問題は無くなるんじゃないか?
>>833 ほんとだ。ごめんなさい。
「別人なのかな」に見えたorz
>834
Wikiが3つになるのは致命傷過ぎる
そしたら俺が予備としてwiki作っとくわ
838 :
名前は開発中のものです。:2008/10/05(日) 19:31:48 ID:vRdfR60s
>836
830の
>無料Wikiの方が個人情報の扱いとか永続性とか考えるといいかもしれない。
を読んでくれ。
今のWikiだと問題があるじゃないか。無料Wikiの方がよいんじゃないか?
無料WikiをDxLibの管理者さんに公認してもらうか、問題のWikiを無くしてもらうように頼むかすればよいんじゃないか?
839 :
名前は開発中のものです。:2008/10/05(日) 19:33:47 ID:vRdfR60s
>837
ありがとう。作ったら公式掲示板やこのスレに書いておけば問題は無くなるね。
新しくwiki作っておいたお(^ω^)おれいい子?
なんかまた進展があったようだ……。
wktk
ハイパーオチンチンタイムはじまるよ〜!
ハイパーωωオチンチンタイムー!!はーじーまーるーよー!!!!
いえいえ、だからリカちゃん人形をつかうといいですよ
誤爆
>>839 いや、さらにwikiが増えて4つになるっていうネタだったんだが…。ごめん…。
848 :
名前は開発中のものです。:2008/10/05(日) 23:10:31 ID:vRdfR60s
>>847 なんだ。ネタだったか。俺も本気にしてしまった。ごめん。
作らないなら俺が作っておくが…。
忙しいから完璧に管理できるとは言いがたいぞ。
ま、そもそも、今まで有志でWikiが出来なかったんだから必要かと言われれば疑問が残るんだけどね。
男 「お父さん!娘さんを僕にください!」
父 「チミィ…チミのような高卒に娘はやらん!」
男 「んなっ!!?」
女 「ちょっと!お父さん!!」
猫 「んなー」
男 「大切にします!!僕には確かに…学歴も…彼女に指輪一つ買ってやれないふがいない男です!」
女 「要らない!そんなものいらない!!私には…貴方さえ居てくれたら…」
父 「無理だ!君は娘を幸せにすることなど出来ん!!!!帰ってくれたまえ!!」
_ , ― 、
,−' `  ̄ヽ_
,' ヽ
( )
( ノ'ー'ー'ー'ー'ー'ー'ヽ )
( ノ (●) (●) ( )
`ー' @ (__人__) @ ( ) 母「オチンチンタイム始まるよーーーーーー!!!!!」
ヽ ` ⌒´ /`ー'
/ \
男 「いやっほおおおおおおおおおおおおお!!!!」
娘 「オチンチンタイムきたーーーーー!!!!!!」
父 「ぶるわあああ!!!!チンチン来たーーーー!!!!」
猫 「ひょおおおお!!!!オチンチンタイムだあああああ!!!!」
みんなwikiが好きだなぁw
実行したらウィンドウは表示されずにプロセスだけ動いてやがる
なんぞこれ
Windowsアプリにしてないとか?
事故解決
DxLib_Initの前にLoadGraphを呼んでたのが原因ぽい
DXライブラリで効果音を鳴らすと
効果音がなってる間、BGMの音量が小さくなってしまうのですが気のせいでしょか
直す方法あったら教えて下さい
ちなみにPlayMusicでBGM、PlaySoundMemで効果音を鳴らしてます
きのせいでしょう
うん
>>854 昔の話だが
同じ効果音を40個位いっぺんに(同フレーム内で)
鳴らした時にそんな感じになったことがあるようなきがするな。
そこら辺を確認してみてくれ。
40個も同時に鳴らさないように制御するべきでは・・。
FFの内部のデータ見てみたことあるけど
同時にならさないといけない場合がある効果音は全部あらかじめ同時にならした素材として入ってた。
効果音1と効果音2の同時
効果音1と効果音3の同時
効果音1と効果音4の同時
効果音1と効果音5の同時
みたいに全ての組み合わせの素材があってビックリした。
最初異様にファイル数多いなと思ってたけど確認して納得したw
音源の貧弱さをメモリでカバーしたわけか。
>>859 興味深い。他にあればもっと聞かせてくれ
859です。
>>861 他にもと言われても何を言えばいいんだw
同じ話だけど
「やぁ!」って声の効果音と「えぃ!」って声の効果音、ほぼ同時に鳴らすときの為に
前者が若干早い時はくっついて
「やえぃ!」
後者が若干早い時はくっついて
「えやぁ!」
って感じで同じ組み合わせでも順番まで考えてデータ作ってあったよ。
多分完全に同時だと聞こえなくなるからあえて全部ちょっとずらしてあるんだと思う。
タイミング命系のアクションゲームとかじゃなかったら
FFみたいなゲームなら掛け声とか0.1秒位ずらしてもなんちゅーことないしね。
いやはや有名なゲームはよく考えてありますね。
それってFFのどれ。
そういやドラクエ4のデスピサロ戦では
最終形態移行時の「ゴゴゴゴゴ」のためにBGMの和音数が一時的に減らされてたっけな
ごめん スレチだね