ゲームプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
0001プチ9627m
01/11/06 18:47ID:G6Fk/ND/駄スレ立てる前にココで聞きましょう。
■旧スレ(プログラミング技術板より)
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://pc.2ch.net/test/read.cgi/tech/985540361
○パート3
http://pc.2ch.net/test/read.cgi/tech/1002894129/
0644名前は開発中のものです。
02/09/29 00:19ID:???MIDIデータを作ることから始めてみてはどうか
まったく知らなければDTM板でも覗いてみるとか
0645名前は開発中のものです。
02/09/29 15:07ID:RRwSPMiU8ビットCPUのフルアセンブラでしか経験ないけど、16bit整数+8bit小数の24bit
で、管理してました。
0.5ドットの移動とかやりますし。
0646名前は開発中のものです。
02/09/29 19:19ID:???0647名前は開発中のものです。
02/09/30 01:38ID:???0648名前は開発中のものです。
02/10/01 20:56ID:???0649名前は開発中のものです。
02/10/02 12:32ID:???あのゲームの場合、装備品にカードが刺せて、装備品やカードによっていろいろとパラメーターが変わります。あるカードを刺せば攻撃力 += 10; とか、あるカードをさすと敵の属性によって追加ダメージ15%等‥‥
で、私の頭ではいちいち、いちいち武器やカードの効果を攻撃力計算関数内に全部書き込む方法しかおもいつきません。
こんなの↓
func 攻撃力()
{
全装備品のカードスロットを走査、カード枚数[カードID] の配列を作成
基本能力値読み込み
if (カード枚数[100] > 0) { .. }. // 修正能力値の計算
if (カード枚数[200] > 0) { ... }
修正能力値による基本攻撃力の計算
if (カード枚数[150] > 0) { .. }.
if (カード枚数[250] > 0) { ... }
ほげほげほげほげ
if (カード枚数[50] > 0) { ... }
以下繰り返し
return 最終攻撃力
}
でも、この方法は私としてはすごい汚いとおもうんですね。ミスを誘いやすいし、メンテもしにくい‥‥
というわけで、こういうのを効率よく処理する方法について教えてください。
0650名前は開発中のものです。
02/10/02 13:27ID:???オブジェクト「思考」せよ
なんのためにJava使ってるんだ(藁
0651名前は開発中のものです。
02/10/02 13:33ID:???他の者は解法を書くのをしばし待て。
0652649
02/10/02 13:56ID:???一応、考えてみたんですが、
function Card(〜〜〜, effect) {
...
this.effect = (effect == null || effect == undefined) ? null : function () {};
return this;
}
function Equipe(〜〜〜, numcards, effect) {
...
this.Cards = (numcards == 0 || numcards == null || numcards == undefined) ? null : new Array (numcards);
this.effect = (effect == null || effect == undefined) ? null : function () {};
return this
}
function ComputeAttack() {
基本能力値読み込み
for (e = 0; e < EquipSlot.length; e++) {
E = EquipeSlot[e];
E.effect();
if (E.Cards == null) continue;
for (c = 0; c < E.Cards.length; c++) {
E.Cards[c].effect();
}
}
繰り返し
}
というのを考えては見たのですが、(続く)
0653649
02/10/02 14:02ID:???あ、上のコードで effect っていうのは、カード効果とか装備品の効果です。
で、上のように考えては見たんですが、
ものによって
a += 5; --- @
とか、
a = 0; --- A
とかあるんですね。
詳しく実装が解明されているわけではないのですが、Aの効果があったら@の効果はキャンセルされるし
@A@@とか、配列にきてたらどうしよう?とか非常に困ってしまったのです。
0654名前は開発中のものです。
02/10/02 14:05ID:???class 武器 {
public:
int 攻撃力();
ステータス構造体 ステータス修正();
private:
int 基本攻撃力;
ステータス構造体 ステータス修正値;
カード; //複数枚装着できるなら配列化
};
int 武器::攻撃力() {
return 基本攻撃力 + カード->攻撃力修正();
}
ステータス構造体 武器::ステータス修正() {
return (*this)->ステータス修正値 + カード->ステータス修正値;
}
入りきらないので次↓
0655名前は開発中のものです。
02/10/02 14:05ID:???public:
int 攻撃力修正();
ステータス構造体 ステータス修正();
private:
int 攻撃力修正値;
ステータス構造体 ステータス修正値;
};
あとは必要な武器とカードをデータベースからインスタンス化するだけだと思われ
カードを複数枚装着できるなら、各計算関数内で繰り返してやるだけ
ステータス構造体は、ゲームに出てくるステータスを静的メンバに持つクラスで実装して
+演算子や+=演算子を定義してやる
てか、攻撃力もステータス構造体に含めて問題なさそうだな
「全ての効果打ち消し」とかは配列をソートすれば良いだけでは?
0656名前は開発中のものです。
02/10/05 04:23ID:???エラー処理は例外に頼ってるのに、例外安全なんか知らんわボケっていうのも、イッテヨシ でつか?
もまいら、どうしてますか?
0657名前は開発中のものです。
02/10/05 10:19ID:???> もまいら、どうしてますか?
case by case
っつかクリティカルな部分以外は速度なんか気にしないし、クリティカルな部分も
メモリアロケータに手を入れれば幸せになったりする。
0658名前は開発中のものです。
02/10/07 17:51ID:???スレ立ててもかまわないですかね?
ちなみにプログラミング経験は無しです・・・
言語はHSPかDelphiのどっちかで勉強しながらやろうと思います。
0659658
02/10/07 18:00ID:???0660名前は開発中のものです。
02/10/07 19:06ID:???作ってから立てた方が叩かれないかと。
0661名前は開発中のものです。
02/10/07 19:37ID:???まずはHSPかDelphiのスレで質問しながら作り、
最低限のモノを作ってからスレ立てれば、
叩かれる可能性はかなり減るかと。
0662名前は開発中のものです。
02/10/07 22:53ID:???この板は「カタチの無い企画スレ」は徹底して終了厨に荒らされる傾向があるので
まず一通りカタチにしてからスレ建てた方が良いでしょう
0663名前は開発中のものです。
02/10/07 23:02ID:???0664名前は開発中のものです。
02/10/07 23:03ID:WME4JpPc0665名前は開発中のものです。
02/10/07 23:03ID:???0666名前は開発中のものです。
02/10/07 23:09ID:???出来る香具師ですら完成しねーんだからよ。
0668名前は開発中のものです。
02/10/07 23:16ID:???「形のない企画スレ」には3Dレースゲースレも含まれるのかい?
0669名前は開発中のものです。
02/10/07 23:19ID:???この板の歴史に名を刻んでしまったね。
0670名前は開発中のものです。
02/10/07 23:23ID:???(成功の十分条件ではない)ということを、あのスレは教えてくれた。
0671名前は開発中のものです。
02/10/07 23:31ID:???作者が名前伏せて反論してたから削除人も相手にしてくれなかった
0672名前は開発中のものです。
02/10/07 23:32ID:???0673669
02/10/07 23:38ID:???0674名前は開発中のものです。
02/10/08 00:11ID:tUlUNf/Sどっかで「スクリプト」を使え見たいな話きいたけど。
例えば、
じいさんに話す。(シナリオ始まり)
洞窟でなにする。
じいさんに話す。(シナリオ終了)
こんな感じの場合。
0675名前は開発中のものです。
02/10/08 00:25ID:???RPGツクールを一度触ってみ。
あんな感じで分離させればOK.
0676名前は開発中のものです。
02/10/08 00:31ID:???禿同。
RPGツクールは作られるモノはクソだがツール自体は優れている。
0677ひきプロ ◆8fhky/PGis
02/10/08 00:47ID:???(タクティクスオーガみたいな)
あらかじめフィールドだけを最初に1回作っておいて、
キャラクタのみをメイン画面に転送すると、フィールドと
キャラクタとの前後関係がおかしくなってしまいます。
かと言って全部を毎フレーム描画していると遅くて困っています
(GDIのBitbltで処理しています)
DirectX使ったら改善できるでしょうか。
またDirectX使わない場合はどうしたらよいでしょうか
0678名前は開発中のものです。
02/10/08 00:51ID:???どんな感じ?
鍛冶屋のおやじとか、通常のNPCを絡ませるのとか難しそうなんだけど。
そのまま台詞も本体に突っ込んでしまうのはやっぱり無理かな。
0679ひきプロ ◆8fhky/PGis
02/10/08 00:55ID:???店の場合は汎用的な店の親父のメッセージ表示、
人だったらメッセージ文字列へのポインタ持っておいて
そのポインタ参照したらメッセージ出てくる感じにしたらどうでしょ
0680名前は開発中のものです。
02/10/08 00:56ID:???その種のヘヴィな処理にGDIを使うのは狂気の沙汰です。
描画順序については「フィールド」「キャラ」といった
モジュール化的な分割を諦めて画面生成のみをモジュール化する形をとります。
えぇえぇ、ゲームのコードなんてスパゲティ作ってナンボですから。
0681名前は開発中のものです。
02/10/08 00:58ID:???ZバッファやZソートを使った陰面処理を行うとか
始めからDirect3Dで描画しそのへんの処理をハードウェアに任せる方法とか。
遅くなるけどね。
0682ひきプロ ◆8fhky/PGis
02/10/08 01:00ID:???ご返事ありがとうございます。
やっぱGDIでは無理でしょうか…。
一応モジュール化的な事をしているんですが果たして
使いやすくなってるのかどうか藁
今んとこスパゲッティになりまくりです
0684ひきプロ ◆8fhky/PGis
02/10/08 01:05ID:???諦めて ですね藁
0685名前は開発中のものです。
02/10/08 01:06ID:???死ね
0686名前は開発中のものです。
02/10/08 01:15ID:???RPGツクールは体験版があるので、どんなものか見てみるだけなら
それで充分だと思うよ。
体験版のあるURLは、適当に検索してちょ。
0687名前は開発中のものです。
02/10/08 01:15ID:???とりあえずその考えでやってみる。
0688名前は開発中のものです。
02/10/08 01:16ID:???0689名前は開発中のものです。
02/10/08 03:06ID:???もしみつからないようならMXかなんかで拾って
参考にしたら破棄しちまいな。
0690名前は開発中のものです。
02/10/08 21:06ID:???素直に DirectX 使って 3D で描画しろ。CPU <-> バス <-> グラフィックカード
間を流れるデータの量、桁が違ってくる。
0691名前は開発中のものです。
02/10/08 22:12ID:???流れるデータ量の桁って変な知ったかするのヤメレ
この場合問題はバスに流れるデータ量ではなく
Zバッファがハード的に使えるか
CPU側で自前計算しなければならないかの差
0692名前は開発中のものです。
02/10/09 21:07ID:???前後関係無視して単純に全画面 BitBlt するだけでも、GDI だと
すぐにサチるぞ。
0693名前は開発中のものです。
02/10/09 21:14ID:???0694名前は開発中のものです。
02/10/09 21:16ID:???0695名前は開発中のものです。
02/10/09 21:51ID:???それぞれの言語の長所・短所・難易度
BGMのそれぞれの記録形式の長所・短所・難易度
作りたいゲームを再現するにはどの言語がいいか
こんなテンプレがあったらいいね。
0696名前は開発中のものです。
02/10/09 22:21ID:???無いのじゃなくて必要だと思った奴が自分で作れば良いだろ
あったらいいねじゃなくて言いだしっぺのお前が作れ
何でも人任せにするな
0697↑
02/10/09 23:27ID:s4kqpcbZ0698名前は開発中のものです。
02/10/09 23:33ID:4GQZ2WlTとりあえずJava。
実行速度が遅いんで、アクション・シューティング系は避けた方が良いかも。
ダンジョンマスターJavaは素晴らしかった。
0699名前は開発中のものです。
02/10/09 23:37ID:???初心者とそれを理由にする怠け者は違う
自分で初心者を名乗る奴は後者
0700名前は開発中のものです。
02/10/09 23:48ID:???ハードウェア屋さんとか物理屋さんなんかが良く使う用語だな>サチる
saturation (飽和) の略式表現
0702↑
02/10/09 23:55ID:???(ダンジョンマスターJavaは素晴らしかった)
公式サイトhttp://www.cs.pitt.edu/~alandale/dmjava/
ダンジョンマスターをやろう!http://home8.highway.ne.jp/galzo/game/danmasu.htm
0703名前は開発中のものです。
02/10/10 00:08ID:???確かに DirectDraw なら(ビデオメモリがある限りは)ビデオメモリ上に
サーフェイス作るから、BitBlt は速いやね。フレーム毎に全部書き直し
にしても、そこそこの fps が出せる。
0704名前は開発中のものです。
02/10/10 00:10ID:???0706名前は開発中のものです。
02/10/10 07:50ID:???今現在Javaでゲーム作ってる漏れが言うのも何だが、
起動とGUIは非常に遅いっす。色々工夫しないと話にならんです。
0707要ブックマーク
02/10/10 11:15ID:buBBvKiZhttp://www.realdigital.co.jp/densi2/progindex.html
>C言語・C++言語・WINDOWSプログラム・DirectX Draw・DirectX 3D・ソフトウェアライブラリー
>各言語の説明と、サンプルソース。
YaneuraoGameScript & SDK本体
http://www.sun-inet.or.jp/~yaneurao/links/ygs/
yaneuraoGameScript2000
http://isweb19.infoseek.co.jp/computer/yaneurao/ygs/
>初心者向けC言語によるゲーム制作指南
C言語初心者向けリンク集
http://www3.mahoroba.ne.jp/~seibi/gad_cgi/html/16_02.html
ヒューマンアカデミー
http://www.athuman.com/a/it/course.html
>3ヶ月コースなど
初心者向けゲーム制作講座"Delphi de GAME"TopPage
http://www.din.or.jp/~koudai/Delphi/Delphi.html
0708名前は開発中のものです。
02/10/10 12:07ID:???はぁ?DirectX8にスプライト関数(ラッパークラス)あるだろ?
非常に簡単に半透明使えるし、回転拡大縮小できるし、ポリゴンみたいなこと
できるし、いいんじゃないの?エフェクトはかけられないけど・・・。
DirectDrawより簡単ではるかに便利。2Dならこれを使えや
0709名前は開発中のものです。
02/10/10 12:11ID:???0710名前は開発中のものです。
02/10/10 12:28ID:???0711名前は開発中のものです。
02/10/10 13:02ID:???0712名前は開発中のものです。
02/10/10 13:45ID:???0713名前は開発中のものです。
02/10/10 16:22ID:???0714名前は開発中のものです。
02/10/10 16:37ID:???0715708
02/10/10 16:41ID:???なんか理由あるの?
drawPrimitiveUPと比較しても速度変わんないんだけど?
抜き色指定とかでDDS使わない分、楽でいいだろうに・・・。
0716708
02/10/10 16:42ID:???0717ひきプロ ◆8fhky/PGis
02/10/10 16:49ID:???ためしに作ってみたら毎フレーム全部描画しても
GDIの時より軽くなりますた。
>>708
そういえばアルファブレンドができなくて悩みました
8のヘルプも読んでみようと思います
0718名前は開発中のものです。
02/10/10 17:02ID:???ID3DXSpriteを使うと叩かれるのか。謎だな。
それはどこでの話だ。
0720名前は開発中のものです。
02/10/10 17:51ID:tjuH/a8v他の環境で動かしたらscaleが有効になってなくてしょぼんだった。
0721718
02/10/10 17:54ID:???スレのリンクを貼るほどの価値もない話題ということか。
それなら気にしねーほうがいいんじゃねーの。
どうせ具体的な指摘は何も無かったんだろ?
0722名前は開発中のものです。
02/10/10 18:08ID:???0723名前は開発中のものです。
02/10/10 19:04ID:???0725名前は開発中のものです。
02/10/10 20:45ID:pMa8asNt0726名前は開発中のものです。
02/10/10 20:50ID:???0727名前は開発中のものです。
02/10/10 22:57ID:???あるぞ。
0728名前は開発中のものです。
02/10/10 23:53ID:???> DirectDrawより簡単ではるかに便利。
DirectDraw は初期化と、ロスト時の再初期化処理だけで意外と面倒。
0729名前は開発中のものです。
02/10/11 00:28ID:???無い
サイズの制限はハード依存であってID3DXSpriteそのものの制限とは関係ない
0730名前は開発中のものです。
02/10/11 00:33ID:???0731730
02/10/11 00:46ID:???0732名前は開発中のものです。
02/10/11 02:21ID:???> ID3DXSpriteだと256*256以上の大きさのテクスチャを扱えないからじゃねーの?
>726 :名前は開発中のものです。 :02/10/10 20:50 ID:???
> そんな制限は無い
>727 :名前は開発中のものです。 :02/10/10 22:57 ID:???
> >>726
> あるぞ。
>729 :名前は開発中のものです。 :02/10/11 00:28 ID:???
> >>727
> 無い
> サイズの制限はハード依存であってID3DXSpriteそのものの制限とは関係ない
このやりとりは不毛だな。まず具体例書いてくれ。
Windows98SE + DirectX8.1(debug runtime)
GeForce256 (Detonatorドライバ 40.72)
D3DCAPS8.MaxTextureWidth = 2048
D3DCAPS8.MaxTextureHeight = 2048
Windows98SE + DirectX8.1(debug runtime)
ATI RADEON ALL-IN-WONDER (ドライバ 4.13.01.9039 7.72-020524M-004273C)
D3DCAPS8.MaxTextureWidth = 2048
D3DCAPS8.MaxTextureHeight = 2048
上記2つ例ではID3DXSprite固有のテクスチャサイズ制限(256x256)は確認できない。
0733名前は開発中のものです。
02/10/11 02:45ID:???Drawだと左上から256×256の部分が表示されるだけだな。
GeForce2MXだからVoodooのような256×256の制限はない。
確かDirectX7の時にはこの制限がなかったと思うが。
0734名前は開発中のものです。
02/10/11 03:43ID:???ドライバは40.72 Beta
0735734(補足)
02/10/11 03:44ID:???0737名前は開発中のものです。
02/10/12 08:41ID:???VooDoo系チップの場合じゃ、ホゲェェェ!!
そういうハード特有の事情を知らんやつが、
Direct3D触るとろくなことがない。
0738名前は開発中のものです。
02/10/13 01:22ID:???だからハードウェアの制限とID3DXSpriteの制限を分けろよ(藁
0739名前は開発中のものです。
02/10/13 03:02ID:???おまいのまなこたんは、ふしあなさんでつか?
0740名前は開発中のものです。
02/10/13 03:30ID:???ID3DXSprite・Drawだと256×256以上のテクスチャは使えないだな。
0741名前は開発中のものです。
02/10/18 08:11ID:Zt+yBkdjDirectX8.1bのランタイムと
nVidiaの最新ドライバを使ってみたか。
0742名前は開発中のものです。
02/10/22 20:32ID:cC1V2h4qデータを生で置きたくないのです。
他のゲームを見てみたら、結構暗号化(?)されてたりして読めないのがあるのですが、
あれはどうやっているのでしょうか。
セーブデータや環境設定。
jpeg画像。
midやwavファイル。
についてそれぞれ教えてください。
0743名前は開発中のものです。
02/10/22 20:33ID:???VS.NET
C++
DirectX8
です。
■ このスレッドは過去ログ倉庫に格納されています