ゲームプログラミング相談室
■ このスレッドは過去ログ倉庫に格納されています
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/
0593名前は開発中のものです。
02/09/25 22:14ID:???同じようにしる!!
その手の作業に関しては、
DelphiでできてCでできないのはわかる(VCL使っているとか)が、
CでできてDelphiでできないというのはよくわからない。
0594名前は開発中のものです。
02/09/25 22:16ID:???こたえられるかもしれんよ。
0595名前は開発中のものです。
02/09/25 23:00ID:???テキストバイナリ混成データ送ろうとして
四苦八苦した思い出があるなぁ
けど、もうどうやったのか忘れた(藁
0596名前は開発中のものです。
02/09/25 23:38ID:???0597名前は開発中のものです。
02/09/25 23:41ID:???Personalでやったから苦労したんだよ!
ちなみにパケット越しじゃなくて
パケットに詰めて、だな
0598名前は開発中のものです。
02/09/25 23:57ID:???シリアライズとデシリアライズのコードを対になるように書けばそれで
終わりっしょ?DelphiもCも関係ないと思うんだが・・・
0599名前は開発中のものです。
02/09/26 01:34ID:???アホですか?
そのシリアライズがうまくいかないって話なんだけど?
てか思い出したけど
サーバC++/クライアントDelphiでやってて
コネクションまで確認できたのに結局データのやりとりはうまくいかなくて
クライアントもC++で組み直したんだった
もちろんDirectPlay使ってたとかいうオチじゃなくてWinSockでやってた
0600名前は開発中のものです。
02/09/26 01:36ID:???非PersonalだとコンパイラやIDEが勝手にプログラマの無知を補間してくれるんですか?
0601名前は開発中のものです。
02/09/26 06:31ID:???ゲームアプリ開発に及ぼすってことなのかね。
あまり考えられないよな。
・・・・DB関連のことなのか。
0602名前は開発中のものです。
02/09/26 06:32ID:???○ 影響を及ぼす
0603名前は開発中のものです。
02/09/26 06:57ID:???0604名前は開発中のものです。
02/09/26 12:44ID:???0605名前は開発中のものです。
02/09/26 15:00ID:???0606名前は開発中のものです。
02/09/26 15:20ID:???0607名前は開発中のものです。
02/09/26 22:13ID:???> そのシリアライズがうまくいかないって話なんだけど?
自分がアホであることを晒してどうするよ?
0608名前は開発中のものです。
02/09/26 22:33ID:???ソケットもファイルも書き込んだ/送出したデータをありのままの姿で返すだけだし、
をれが言語によって変わることも*ありえない*と言うことが理解できてないようだから。
化けたとしたらそれは書き込んだデータと書き込んだつもりのデータが違うだけ
0609名前は開発中のものです。
02/09/26 22:40ID:???素人は何でも一度にやりたがるからダメだ
0610名前は開発中のものです。
02/09/27 08:45ID:???0611名前は開発中のものです。
02/09/27 11:30ID:u5LECmtB敵キャラの抽象クラスを作って、キャラごとに派生クラスをつくりました。
そこで、出てくる敵キャラすべてを格納しておくキューを作りたいのですが、
Javaみたいな、すべてのクラスを格納できるキューが作れなくて困っています。
何か案はありませんか?
0612名前は開発中のものです。
02/09/27 12:38ID:???その抽象クラスのポインタを、コンテナに入れれば?
0613
02/09/27 15:01ID:uiQG1iKW0614名前は開発中のものです。
02/09/27 15:39ID:???… C++ の基本から勉強し直した方が良いような。
struct Base {
virtual ~Base() {}
...
};
class Deriv : public Base {...};
using boost::shared_ptr;
using std::queue;
queue<shared_ptr<Base> > q;
q.push(shared_ptr<Base>(new Deriv);
0615名前は開発中のものです。
02/09/27 18:07ID:???Internet Direct。
主要なインターネットプロトコルに対応したオープンソース形式のライブラリ。
BSDライセンスとMPLのデュアルライセンスで都合のよい方を選ぶことができる。
Delphi, C++Builder, Kylix用。
http://www.nevrona.com/Indy/
# なぜか今つながらない。
0616名前は開発中のものです。
02/09/27 21:17ID:???C++をあまり知らないヤシに説明するのに
当然のごとくboostを使ってるお前がウザイと思うのは俺だけか
0617名前は開発中のものです。
02/09/27 22:33ID:???きみだけ。
0618名前は開発中のものです。
02/09/28 03:01ID:???boost なんて、もう標準も同然じゃん。
0619名前は開発中のものです。
02/09/28 03:02ID:???ていうか、boost 無しでは生きていけません。
0620名前は開発中のものです。
02/09/28 03:07ID:???入門書ではまずboostを扱わないし、
ウチの会社も導入を許可してくれない。
初心者に説明するときは、極力非標準は排除して話すべきだと思うんだが。
0621名前は開発中のものです。
02/09/28 03:13ID:???0622名前は開発中のものです。
02/09/28 04:27ID:???かと言って、生ポインタでもかわいそうな気が……
0623622
02/09/28 04:29ID:???0624名前は開発中のものです。
02/09/28 04:31ID:???頭に何か沸いてる人間も出ているわけで、
boostくらい見逃すのがいいのかもしれないな
0625名前は開発中のものです。
02/09/28 09:03ID:???0626名前は開発中のものです。
02/09/28 16:00ID:???問題ない。
0627名前は開発中のものです。
02/09/28 18:02ID:???> ウチの会社も導入を許可してくれない。
lambda あたりはともかくとして、shared_ptr さえ使えないような会社なら
転職を考えた方が…。
0628名前は開発中のものです。
02/09/28 18:13ID:???0629名前は開発中のものです。
02/09/28 19:40ID:???0630名前は開発中のものです。
02/09/28 20:19ID:???導入したければ、自分のプライベートを裂いてコード検証をして、
各クラス毎の関連と、使用可不可のチェックリストを作らないと許可が下りない。
大体、まともなところならshared_ptrに変わる物はすでに作られてる筈だから
対して問題にならないと思うが。
0631名前は開発中のものです。
02/09/28 20:30ID:ThgTmq4W俺は不安なのでfloatとか使ってるんだけど、実はintでもいい?
0632名前は開発中のものです。
02/09/28 20:33ID:???0633名前は開発中のものです。
02/09/28 20:52ID:???なんかIDがカコイイから特別に教えてやる。
表現したい座標の性質により変える。
0634名前は開発中のものです。
02/09/28 21:01ID:???仕事に使う道具を検証するのに「プライベート」な時間を要求するのか。
終わっとるな。
0635名前は開発中のものです。
02/09/28 21:02ID:???意味不明。
「不安」、「いい?」とは具体的に何。
>>632
必要なければそれでいい。
気にすることはない。
0636名前は開発中のものです。
02/09/28 21:04ID:???検証する時間を与えられるかどうか微妙だなあ。
検証する時間をクレとリーダーに交渉する時間は
仕事中であってもいいと思うが、そこでダメといわれたら
プライベートでやるしかないな
0637631
02/09/28 21:08ID:???スクリーンの左上を(0, 0)、右下を(800, 600)などとして
オブジェクトを配置していくわけです。
移動してくオブジェクトの座標には、今までfloat型を使って表現
していたのですが、これって意味のないことですか?
0638名前は開発中のものです。
02/09/28 21:16ID:???0639名前は開発中のものです。
02/09/28 21:19ID:???スクリーンに表示だけならint型だけでもいいんでないの。
ただし、その値を計算する時に、float型程度の精度が無いと
計算出来ないんじゃない?
計算様の別型の値を持って、それで計算、intにキャストして表示って馬鹿らしい。
だから、漏れは初めからfloat型でいっていますが。
0640名前は開発中のものです。
02/09/28 21:25ID:???オブジェクトが小数点以下の数値をとる可能性があるなら無駄じゃないよ。
0641名前は開発中のものです。
02/09/28 21:35ID:???アプリの内部変数の型の話をしてるなら
意味がないかどうかはアプリによるだろう。ちゃんと設計しる。
一方、一般的な3DAPIに渡される座標値の型指定がfloat値であることの
意味を問うているなら、それはちゃんと意味があるという答えになる。
試しに320x240程度の画面モードにすれば肉眼で確認できるだろう。
0642641
02/09/28 21:40ID:???「ゲームの中のシーン座標」と「スクリーン座標」はそれぞれ別物として
定義するのが普通だぞ。2Dの場合は、依存関係を持たせないと苦しいケースも
ある。
0643初心者
02/09/29 00:07ID:???どうやったらいいんでしょうか?
実際にギターなどでは作ったことがあるんですが、、、
シンセサイザーに挑戦します。
友達とチームを組んで活動します。
シンセサイザーのことはまるで分からないので、アドバイスください。
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 だと
すぐにサチるぞ。
■ このスレッドは過去ログ倉庫に格納されています