前スレの
>>956 ポリシークラスとか共通のメソッドを関数化とか
テンプレート使えば解決するけどまだ先の話じゃね
今は研究より動くの作ってほしい
難しそうだな
彼はオセロを選択したようですよ^^
ゴルバチョフもいまや世界一受けたい授業に出るような時代だからな
スマスマになんでゴルは出てたの?
C++で書いた将棋ゲームで、オンライン対戦可能にしたいが、 それらの知識が皆無で、どの順に習得していけばいいか教えて下さい
ググれ
「こんなのの将棋版」みたいな例くらい提示しろよ。
完全なロールプレイで NPCは案内役とイベント役だけ 武具を作るジョブとか消費アイテム作るジョブ 各プレーヤーはそれらを作るための素材を集める モンスター倒すなり拾い集めるなりして ただ、通常のプレーヤーは素材が材料として使えるか判断できなくて 鑑定専門のジョブとか用意して 各ジョブはジョブレベルが設定されていてレベルが上がらないといい物作れない また、自由に何度もジョブを途中変更できる 戦闘のプロとして戦士とか魔法使いのジョブがあって
ジョブ変更後も能力とか引継ぎされると ただ各ジョブを極めるためにはかなりの修練が必要で ちょくちょくジョブ変えてると結果的にどれも中途半端なものになってしまうくらいの修練 商人のジョブも用意して 武具ややアイテムを買い取ったり売ったりできたり 盗賊ジョブでダンジョンのトラップ解除や鍵開けとかできたり 戦闘で功績をあげると、国の騎士とかになれたり 国の騎士のイベントとして、国対国の騎士同士の乱戦イベントとかあったり
回復とかは、アイテムでの回復のほかに、魔法使いに依頼して(金払って)回復という手段とかもあったりとか
で?
というゲームを作ってください
そんなハイレベルなゲームは 最高のゲーミングマシンを組んでも実現不可能だから諦めろ おまえはまるでセガの様に時代を先取り過ぎるんだよ
妄想系はスルーで
>>16 完全なロールプレイなら、ジョブとか必要なくて各人のプレイに任せればいいのでは?
だいたい「職業は?」 「戦士です」 ありえねーwww
みなさん 何日くらいでプログラム習得しました?
融通の利くテーブルトークが最強だな つまりゲームプログラムなんて要らんかったんや!
>>25 2週間で言語の基本的な構文を覚えて、更に1週間で2Dの簡単なゲームを作った。
どのレベルまで習得するのかにもよるけど最初はこんな感じだった。
そうですか ありがとうございます もう2週間たつけど難しいっすね・・
向き不向きがあるんですかね やっぱ理系っぽいほうがいいのかな
プログラムはガキの頃から英才教育しないとダメ
言語って覚えるものじゃない。 コンパイラインストールしてhello world実行したときから始まるんだ。
初めての定番がhello worldだとすると、 1日目の締めの定番はじゃんけんゲームだよな
35 :
デフォルトの名無しさん :2010/02/28(日) 21:07:36
>>30 多少の適正はあるかもしれないけど初級レベルならほとんど関係ないよ。
2Dのミニゲーム程度なら誰にでも作れる。
HSPプログラムコンテストで最優秀小学生賞というのが用意されているくらいなので・・・
今や小学生でもプログラミングをする時代になったということだよ。
というか、それは昔からというか。 小学生がBASIC +Z80マシン語でゲームプログラミングというのはわりと逸般的だった。
ベーマガに投稿する小学生とかいたしな
>>40 小学生でタイニーゼビウスっていうのはたしかに逸般的かもw
逸般的って何だよと思ってググったら通信用語かよ・・・
44 :
デフォルトの名無しさん :2010/03/01(月) 03:28:48
ギョーカイ人多いねココ
ギョーカイ人?いいえ、逸般社怪人です。
ROM-BASIC の頃は、BASIC のリファレンス見て一通り使ってみたら ひとまずなんかプログラムしたって感じがした。 今頃の人で C から始めると、構造体やってポインタやって、って、 なんの役に立つのかも分からず達成感が得にくそうに思う。 俺が小学生の頃にアセンブラやったときが、そんな感じだった。 「一通りニモニック使ってみたけど、そんでどうやって画面に何か描くの?」 って。 VDP なるものを知るのは高校に入ってからだった。
>>46 PC-9801 なら BASIC 側で初期化して VRAM に何か書いてやれば絵が見えたな。
あの敷居の低さは良かったと思う。
HSPあたりで手軽に達成感が得られるでしょ むしろ今の時代のほうが情報が簡単に手に入るから昔よりずっと楽
多すぎる情報は初心者には毒でしかなかったりする
目的もなしに漠然といじるだけじゃ、モノがなんだろうと達成感なんてないと思うがね。
>>49 なんで、俺は今でも結構本買うよ。よくも悪くも取っ掛かりになるからね。
後で悪例だったと知るのもまた勉強。
プログラムってこんな感じなんだってのは一日でわかった それなりの規模の2Dシューティング作るには半年くらいかかった
オブジェクト間の通信のやり方ってどうやってんだ 各オブジェクトがすべてのオブジェクトのリストへの参照を持ってるの? それとも管理者か何か用意して、今ゲームルール的に通信可能なオブジェクトを毎回検索してイテレータで返すとかしてるの?(シューティングだったら接触しているのを検索、とk)
ゲーム製作始めるならこれ、という王道が今の時代は適当なのが見当たらないな Cと画面周りを同時に始めるのは敷居高いわ
復帰あげ。
サイバーテロシミュレーションゲームとかどうか
電線っぽいのがはりめぐらされていて そこ辿ってくる光の玉(サイバーテロ)がやってくるから 目標位置のとこのパソコンに撃退プログラムをセットするとか
>>52 どっちでもいいよ。
ただ、リストに登録されている順番によって結果が変わるような処理に
なってると後々面倒だったりする。
だから、システム側がオブジェクト間のインタラクションを一括で調べて、
その結果をオブジェクトに通知するような感じのほうが良い。
>>52 オブジェクトが他のオブジェクトを直接参照するのは止めた方が良い。
依存関係が増えると複雑になってバグの原因になり易いので。
こういう話題でなぜコード書かないのか
非オブジェクト指向からオブジェクト指向へ移行経験ある人いる? オブジェクト指向ってやっぱ便利?昔より作りやすい? あ、でもそんなに昔からプログラミングしてる人って稀少か オブジェクト指向ってもう20年以上ありそうだし
Cでオブジェクト指向でかけるような人はほとんどいなかった。 コンシューマー機でC++が浸透したのは10年前くらいからだと思う。 CからC++に移行して便利になったか?おれはかなり否定的。
クラスとかのC++で良く使う機能をCで実装・使用してみると、C++でよかったでござるってなる まあ出来ること増えてんだから間違った使い方しなきゃ普通に便利になるよ
64 :
デフォルトの名無しさん :2010/03/03(水) 03:43:27
C++はクラス設計がムズイよね
ですね
自由度が高いのはバグを生むもとでもあるんだよね
>>61 今でもC言語で始めてC++に移行する人は多いよ。
オブジェクト指向は理解するのに時間かかるけど、一度覚えてしまえばもうC言語に戻ろうとは思えないよ。
きちんとしたお作法を学べばむしろバグは減る
さらに極めるとオブジェクト指向などまったく無意味なことに気づく
特に意味は無いのだが非visualStudio(要はgcc)でC++開発する際の鉄板フレームワークについて教えてくれ。 SDLとOpenGL?を使うのが一般的なのか? もうちょっと楽なライブラリとかあれば。
自作最強伝説
>>70 一般的って意味が判らない
需要ってことなら普通はVisualStudioで開発すんじゃないの?
gccなんてドマイナーな非MS-OSの組み込み用途ぐらいしか出番ないっしょ
動画とか扱い出したらSDLなんか使ってられんよ
74 :
デフォルトの名無しさん :2010/03/03(水) 11:04:11
>>73 gccがドマイナーって、よほどのド素人だな
>>74 べつにgcc自体がドマイナーとは言ってないけど
gccで使えそうな環境見つけられないんだろ?
gccじゃ誰もやってないんだよ
>>70 OSは何なの?
非VisualStudioってことはウィンドウズじゃないってこと?
77 :
デフォルトの名無しさん :2010/03/03(水) 11:11:29
>>75 お前の世間は狭いな、無知とは恐ろしい
お前はどうせC#しかできないカスなんだろうけど
じゃあ70に教えてやれよw 知らんよ俺は
自作最強伝説
>>76 OSは窓だけどIDEがnetbeansとかeclipse。
こーいう環境で開発するにゃどーいうのをそろえればいいのやら。
>>80 窓なら素直にVS使っとけよ
gccで何週間掛かっても無理なことが一瞬で終わるから
vsで開発してgcc併用でいいじゃない
gcc(mingw)の問題点は最新のSDKを使うのに作業が必要な場合が多い事(普通の人なら何週間も掛かったりはしない) VisualC++の問題点はx64でインラインアセンブラを使えない事 どちらもゲーム開発分野であまり問題になるとも思えない 最適化は得手不得手があるのでintelC++等も含めて使い分けるといい
そういえば俺にも、3DならOpenGLだろ(キリッ みたいな頃があったな アンチMSな俺カッケー
DirectXは?
カーマックはまだOpenGL使ってんのかね
WinG
別にmingwでもDierctXは使えるが
90 :
デフォルトの名無しさん :2010/03/03(水) 15:21:22
ここって本職・副職でやってる人と完全に趣味でやってる人とどっちが多いんだろうね
学生の部活れす
下手にgcc使うアホ学生は、ライセンス関係で地雷を踏む。
完全に趣味です 良い出来のものはフリーで公開したいくらいです しませんが
ライセンスは良く分からんよね いろいろあって何が何だか
ライセンス規約読むの面倒だから適当に同意しちまった
MinGWのランタイムはただのMSVCRTラッパ+αでPublic Domainだぞ どんな妄想ライセンスに同意したんだ?
キミが想定してるのはそれだけなのかい?
98 :
デフォルトの名無しさん :2010/03/03(水) 15:56:14
仕事でやってようが趣味でやってようが ライセンス無視するような奴は許せない
VisualStudioと比較するなら他にはあるまい
>>70 グラフィックAPIはWindowsではDirectX、それ以外ではOpenGLが主流。
ゲームライブラリは海外ではIrrlichtとOrgeが人気らしい。
国内では自作してる人が多いので主流と呼べるものは無いけどDXライブラリとSeleneが頑張ってるかな。
何か勘違いしていそうだけどどのIDEでも使えるよ。
ちなみにIDEはVisualStudioが主流です。
winならDirectXが鉄板
俺はあえてWinGを使うWindows3.1ユーザー
2dなら黙ってgdi
2Dゲーでも動きがあるゲームならD3Dを使った方が綺麗になるんじゃないの
Seleneっていうのは初めて聞いた dxlibは信者が必死に布教してるからどこでも名前見るけど
むしろD2D使えば? GDIの代わりなんでしょこれ?
Seleneはなあ・・・
やっぱりOSを止めてVRAMつかうのが一番だよね
だったら別にSDLでもええやん
男は黙ってCUI ゲーム性で勝負ですよ
>>110 star trekを復刻するのかYo!
ゲームライブラリはAllegroでいい。 あれをVisualStudioからVisualC++で使う。 Windowsはそれで万全。
>>112 他の言語やOSに移行することを考えるとその選択肢はないし、
逆に移行しないならDirectXの機能をバリバリ使ってるようなものを選んだほうがよいような
要するに半端モノ
普通はDirectX覚えてからゲーム作り始めるもんなの?
トップダウンとボトムアップ。両方からのアプローチが必要
>>113 > 他の言語やOSに移行することを考えるとその選択肢はないし、
他の言語という事を考えた時には、VB.NETやC#という選択肢もでてくる。
他のOSに移行する事を考えても、ソースコードレベルで互換性を維持できる。
十分ありうる選択肢だよ。
directxで微妙なのは、結果を引数で返したり 意味わからんnull指定が多いこと 自分で全てまかないたいならGLがいい 面倒だからdirectxで始めたけど、結局ほとんど自分で用意してしまったわ
C言語脳
>>117 あるあるw結局理解できる形にWrrapしたり、独自関数を作ってしまう
でもOpenGLってすっとろいんだろ?ゲームに使えるの?
OpenGLもDirectXもGPUをどう操作するかのインターフェースに過ぎん。 すっとろいかどうかは結局GPUに依存しちまうのであんまり議論する意味は無い。
ふーん じゃあ移植性の低いDirectXを皆が使う理由は何なの?
windowsでゲームやるならgl使う理由は何も無い 情報やサンプルの量、ドライバの対応度、他諸々でd3dが全て勝ってる 今時ゲームにglを使うのは老害と極度のc++アレルギー持ちと俺みたいな変態だけ
>>122 オーサリングソフトとかで作ったモデルを直読みできるAPIが無いからだな…
directXはそこらへん優秀というか便利なAPIが沢山あるから、普通の開発者はDX選ぶ。
glも拡張ライブラリ使えば早い だが環境依存する 生のポインタ渡したくない人はDXは向いてない ストレスが溜まる
そんなのでストレス溜まるとか繊細すぎる もはやC言語扱うのに支障が出るレベル
>>126 こうなったらバグ、ああなったらバグで心労が半端ないんです
>>123 極度のc++アレルギーだからといってOpenGLを使う理由は何も無い
->lpVtbl->
>>128 エラー privateを参照できません
>>114 C/C++には標準の描画機能は無いので何かしらの描画APIが必要になる。
必然的にDirectXもしくはOpenGLを覚えながらゲームを作ることになるよ。
一昔前まではC++/DirectXの組み合わせが定番だったけど、最近はiPhoneやブラウザゲームも普及してきて状況は少し変わってきた。
WindowsでもC++では生産性が悪いということで他の言語が使われたり、ゲームエンジンが使われることも増えてきたし。
DirectXは名前の入力が大変だからXNAでやってる
CGソフトのアニメフレームにアニメパターン付きのキャラを配置するように ポトペタで最初のプログラムが出来上がればいいのに・・・・ どれもこれも関数ばっか増やしてわけわからん
DirectXのよくないところは、
次々にAPIをフルモデルチェンジしちゃうところかなー
>>132 のいうところも同じだろうし
確かに、GLのような変えないことによる弊害もよくわかるんだが・・
ああでも、XP+D3D9は寿命長くて良かったかな
こんぐらいのペースならいいかなぁ
>>132 その要求を叶えてくれるのがゲームエンジン。
UDK、Unity、TorqueGameEngine、Gamebryo、CryENGINE、etc...
あとFlashで作るという手もあるな。
2Dも3Dもupdateとrender繰り返すのが基本なの?
javaでゲーム作ってる人っている?javaって使いやすい?
お前にはムリ
ひどいお(´;ω;`)ブワッ
>>137 C#>Java>>>>>>>>>>C++
使い易さの比較はこんな感じかな。
Javaが使い易かったと言うよりはC++の生産性の悪さを再確認した。
選択肢としては十分ありだとは思うけど少し注意しないといけないこともある。
・パフォーマンスはVMの性能に大きく左右されるので注意。(最近はどの環境でもかなり高速化しているが)
・PureJava環境では当然ながらC++のライブラリは使えないので注意。
・ガーベージコレクションの扱いには慣れが必要。
・演算子のオーバーロードがサポートされていない。
・Windows環境ならJavaよりもC#の方が良い。
まあ、実行速度最速はC++だけどね
メモリモデルに柔軟性があるのがC++だけってのが一番大きい。 それ以外はあまりいいともいえない。速度は気にならない状況も多い。
実用的で速度が速いのはアセンブラである Cでもオーバーヘッド、速度あげるところはインラインアセンブラ使用するだろ C++はCよりオーバーヘッドでかいし、C++とか言ってるやつは素人
アセンブラってCPU違うと動かないんじゃないの?
iphoneをみろよ 今時C++なんか使ってるのはマヌケだけw
147 :
デフォルトの名無しさん :2010/03/05(金) 10:42:19
Objective-Cだっけ?
148 :
140 :2010/03/05(金) 10:46:30
149 :
デフォルトの名無しさん :2010/03/05(金) 10:50:10
C#は糞だが、今やハード面考慮してJavaが遅いなんてこともないし、 マルチプラットフォームで考えればJavaもいいだろう
HSP→Java→C#
>>144 Cでオーバーヘッド?何が?
C++がCより遅い?なんで?
使い方間違ってるか、うまいコードの書き方を知らなくて
遅くなってるのを言語のせいにしてるだけだろ。
今時インラインアセンブラとか言ってるのはエロゲ屋だけ
後段には同意だが、前段は無知のオンパレードだな
一般的にはCよりC++の方が早い。 テンプレートによるインライン化が効果的だから。 でもコードがどうアセンブラに落ちるのかを想像できない奴が結構いる。 自分のコードが遅いのを、C++のせいにするのがいつもの奴らのパターン。 あいつらコピーコンストラクタがいつ呼び出されるのかも把握せずに書いてるからな。
アフォばっかだな ゲーム開発したことない奴ばっかだな T10000においてPS2の開発ならCのが断然効率いい まさか素人共はDirectXなんかをあてにしてんじゃないだろうw
Javaとか、さくっと起動できないのは辛いよ
即起動できるPCゲームなんか稀だけどな
ps2開発で玄人っすかw
>>155 ネタじゃないなら「Cのが断然効率いい」理由を教えてください。
PS2のライブラリを作った人間は それはそれで苦労人(くろうと)ではあるだろうな
今時のゲームエンジンはどれもC++で書いてあるだろ。 詳しくは書けないけど某大手の社内用エンジンもC++だったし。 CEDECでもC++で書かれたスライドがばんばん出てくる。
C++のが早いって言ってるカスはエセプログラマ
持論を展開するのは自由だけどソースも貼らない説明もしないのではただの煽りですよ。
C++(が必要になる規模のプロジェクト)よりもC(で済むぐらいのプロジェクト)のほうが (完成が)早い。(実行速度が「速い」わけではない。) こうですかね!?わかりますん。
同一人物なんだろうけどCを押してる人の文章が煽り丸出しで幼稚過ぎる
まぁ爆遅のqsortでも使ってりゃいいんじゃね?
ミリ秒で遅いから糞っていつの時代ですか
>>167 昔から 60 fps 出そうと思ったら 16 ms しかなかったと思うんですが、最近は違うんですかね?
169 :
未来人 :2010/03/05(金) 14:56:52
時間圧縮使えば 20 ms だろうが 100 ms だろうが 60 fps に収まるだろjk
>時間圧縮 スタンドの技みたいですね
171 :
デフォルトの名無しさん :2010/03/05(金) 15:09:46
ここ職業プログラマー多いのでつね
>>165 いちいち相手にしてるお前も、低能稚拙でどうしようもないカスだな
173 :
デフォルトの名無しさん :2010/03/05(金) 15:17:01
Win+VC++(DirectX)しか知らないアホプログラマ多すぎワロスwww
174 :
デフォルトの名無しさん :2010/03/05(金) 15:22:09
趣味プログラマーなので他環境に興味ないっす
>>174 他環境に興味ないって時点で終わってるね
低能は底が浅い
俺が初めてC++で書いたのはPlayStation初代から。 俺もC++は遅いんじゃないかという偏見が最初はあったけど、 1年くらい使ってみて、C++の特性をちゃんと理解していなかっただけだったということが分ってきた。 ちゃんと特性を理解すればCに劣るところは何もない。 STLが使えるようになったのはここ数年だけど、STLはマジですごい。 機能が強力な上に高速でビビる。 しかし高速化が必要なのは全体ではごく一部。 そういうところだけアセンブラで書くけど、 大半はスピードより開発効率とか、流用性とかの方が重要。 だいたいスクリプト使ってる時点でパフォーマンスがたおちだし。 そういうわけでC言語を使う利点が1つも見いだせない。 速度が遅くて開発効率が悪いんだからいいところがない。
>>157 大型客船に無断乗船してその後麻薬でも逮捕された某元プログラマーがいてな・・・・
彼が健在なら今頃凶速OSとかコンパイラくらい世に出してただろうなぁ
178 :
デフォルトの名無しさん :2010/03/05(金) 15:38:33
なんか些細なことで興奮する奴がいるみたいね 仕事で鬱憤でも溜まってるの?
大人になればわかる
そっちは主に素人さんの板だから。
職業プログラマー以外の質問禁止
仕様を満たせるプログラムであればCだろうがC++だろうが関係無い
もちろんフルアセンブラでも関係無い コード保守なんか知ったことじゃ無い
じゃあプログラムしなくてよろしい
続編とかシリーズ化とかマルチプラットフォームとか展開しないと儲からないから 保守しないってこたぁねぇな。
>>144 ,151が発端でC言語とC++ではどちらの方が処理速度が速いのか?という話だったと思うが?
いいからお前らXNAやれよ。もしかしたら今後のデファクトスタンダードになるかもだし。
XNAってc++でつかえんの?
素人のレス禁止
XNA(笑)
XNA DirectX VC#
?
Xbox持ってないからイラネ Wiiなら持ってる
Delphiでゲーム開発
?
WiiWareか
有限状態機械ってあるじゃないですか state_base *state = new state_a; 〜 state_a->update(this); 〜 ってやつ これを使ってて思ったんですけど状態が重複する場合ってどうやってるんですかね? 例えば混乱状態と毒状態があったとして、混乱かつ毒を表現するにはどうするのか 愚直に「混乱かつ毒」という状態を新規につくるのか、それとも何らかの方法を使って混乱と毒を合成するのか・・・
普通にビットフィールド管理でいいんじゃないの フラグが立ってたら追加処理入れる感じで 混乱毒以外にも加速とか凶暴化とか石化とか状態後付けもありえそうだし
それでもいいけどオブジェクト指向的にはenumをキーとしたbooleanのハッシュテーブルを持たせてやりたい。
混乱度や毒レベルとかの概念が入ることもある ステートマシンで管理したら状態が膨れ上がる
どの言語使ってもいいけどメモリ管理が理解できない奴とは仕事しない
そんなやついねーよw
おまえが問題を理解してないことはわかった。
なあ、この下らないつまらない役に立たないスレで偉そうに講釈たれているやつって わかったふりして他人をアホ呼ばわりしてるけどさ、あんたじゃあ今まで何作ったの? そんなに人に偉そうに言えるぐらいすごいゲーム作ったの? ど゜うせ理屈ばかりで全くゲーム作ったことがない、技術はあるけどやる気ない、アイデアない でゲーム作れないとか、そんなやつばかりなんだろ? ほんと、つまらない人間ばかり集まってるよな。 と、ゲーム開発の素人は思いましたよっと。
>>206 会社に入れば自分の手がけたゲーム名は出せないってことがわかるぜ
契約ですね
>>208 いや、契約なんてあってないようなもんだぜ
こればっかりは入らなきゃわからないだろうなぁ
とにかく自分の一存でこういう情報をどうにかできないってことだけはガチ
最新のドラクエスタッフか
ないようなものでも、あるんだよ DQNはこれだから
>>199 そういうのはオートマトンの状態にしない。
『特定の状態の時はこの操作でコレが出るが、そうでないときは出ない』というようなのの時に使う。
呪文詠唱中とかダメージモーション中とか、この状態には移行できるけど、他には駄目、みたいなのをやる。
毒や混乱は、一般的にフラグで実装するべきだろう。
必要な時にフラグを見に行く。
行動決定の時に麻痺や混乱のフラグを判定し、一定時間毎(とかターンの切れ目とか)に毒のフラグを判定して、フラグに応じた処理を行う。
>>176 call時のthisポインタ分のレジスタがもったいないと思う事はたまにある
知ってる単語だけのレスでここまで意味不明にできるお前らはすごすぎ
つうかゲームもどうせろくに作ったことない玄人もどきが喋っているだけで 邪魔。 言語なんてそいつが使いたい言語使えばいい、それだけの話。
さすがにいいすぎ。 C++にしかできないことやJavaの言語仕様から来るメリットはある。
最適化されたCより速く動作するコードをアセンブラだけで書ける超人なんてまずいない。 アセンブラが優位だったのは、Pentium以前の話。 インライン以外でアセンブラを使うやつは素人。
外人にいくらでもいるけど
外人っていっちゃだめなんだよ
外人は神!!!
例えばゲームを作るとか言ったら言語とかは会社の人が決めて それで一生懸命作るってかんじではないの? 知らないけど
まあ会社がC++で作れと言ってるのにJavaで作ることは普通できないよね 会社を説得できれば話は別だけど
ゲームじゃなくて業務アプリだけど、 お前なんでまだそんなことやってんの?進捗遅れてるじゃんって言われた奴、 こっちの方が3クロック速いんですよwwとか答えて ふざけんな、そんなことに何日も潰してないでとっとと作業進めろ!って怒られてた 最終的に辞めていったけど
switchが減るとなぜ高速化されるのですか? あとmapの機能がすべて必要な状況というのはどの程度現れるものですか?
C++が遅いって言ってる奴はCしか使えない奴だからいくら相手しても無駄 こんな基地外スルーしたほうがいい
switchしまくっているコードは設計に問題があってアルゴリズム的に遅い可能性が高い。
>>225 >普通はC++の方がインライン展開が効くから早い。
Cでもインライン展開は可能ですが?
>アプリのパフォーマンスを比べるべきなのにミクロな部分だけを切り取ってそこだけ比べるのはフェアとは言えない。
CよりもC++の方が全体のパフォーマンスが良いことを示す客観的なデータはありますか?
みんなせめて環境とコンパイラくらい書けよな
ゲームの処理も描写も同じクラス内で処理する ゲームの処理だけのクラスつくって そのクラスから情報引き出して描写する 描写用のインターフェースつくって ゲーム処理用のクラスに描写クラス渡して 描写する ゲーム作りわからん オブジェクト指向ってむつかしい
Cのインライン展開とC++のテンプレートのインライン展開は次元が違うよ。
例えばCでは関数ポインタはインライン化されないけど、C++では関数オブジェクトを使えばインライン化される。
これで数倍差が付く。客観的なデータは
>>225 参照。
オブジェクト指向が難しいと感じたらデザインパターンやUMLを勉強してみると良い。 オブジェクト間の関連を整理することこそがオブジェクト指向設計の要だから。 しかしC++でそれなりにオブジェクト指向で書かれてあるだけでも違うよ。 同僚がいまいちな設計と実装のクラスを作ったけど、 それでも意外とすんなり仕様変更に対応できたり、派生できたりする。 C言語だったらよほど上手く作られてないとこういう流用は難しい。
>>226 switch は整数値を元に分岐先アドレスを求めることになる。
これを置き換える仮想関数呼び出しでは、だいたいポインタを2段ほど
間接参照した先に分岐先アドレスが置いてある。
この違いのために、速度についてそれぞれに有利な状況というのが
あるだろうが、極端な状況じゃなければ大きな差が生まれることはない。
switch 対仮想関数の一番大きな違いは速度じゃなくて、コードの
可読性・保守性のほうだろうね。
>>235 具体的に何がよくなって、C言語で作ってたときより工数どのくらい減らせる?
C++はコードをヘッダに書くか、ソースに書くかで迷うな。
>>238 ソース10個ぐらいで済む小さいプロジェクトでもなければソースに書いとけ。
再コンパイルの可能性は最小限に抑えといたほうがいい。
インライン展開はボトルネックを見極めてから考えればいい。
STLを使えば双方向リストとかソートとか組む必要がゼロになる。 毎回リストを組んでデバッグする手間がゼロ。 STLを使うためだけにC++を導入しても十分な利点があるでしょ。 まずはソースコードの拡張子をcppに変えるところから始めて、 わかりやすいところだけ、利点のあるところだけつまみ食いすればいいよ。 極端な話、最初はクラスも使わずにvectorとlistだけ使ってりゃいいよ。 そのうちだんだん欲が出てきていろいろ覚えて、少しずつ効率上がるから。 …という話を10数年前にも業界内の知人に言って回ったものだよ。 そして今では少なくとも俺の知っている範囲では全員C++使ってる。
毎回リスト組むというのが意味不明。 0からコード書き起こす奴なんて居ないだろう?
ノシ
当方学生の部活でプログラムはじめたばっかので
>>241 Cで再利用可能なリストって言ったら、マクロや void* で型安全性を壊したうえで
なお利用者側に奇怪な記述を要求するようなものしか作れないと思うんだけど、
なんかキレイにまとまってたりするの?
STLはlist以外にもいろいろなアルゴリズムがあってそれらが全部(ry
原理も知らないような無能プログラマが量産されるのですね。
C言語でも原理を知らず、strcpyで済むところをsprintf使う奴とかがいる。 この前なんか構造体のメンバを1つ1つmemcpyでコピーして、 しかも変数のサイズ指定を間違えてメモリを壊してる奴がいた。 こういうのは言語じゃなくて本人の問題だな…。
>>240 たったそれだけ?
C言語で似た様な機能のライブラリあるときは導入する意味無し?
ということにしたいのですね?
>>248 いちばん大きいのはやはりオブジェクト指向。
コードがわかりやすくなって不具合が減るし、
流用や拡張もしやすくなり、仕様変更にも柔軟になる。
しかしC++を導入したからすぐにそれが実現できるわけではない。
オブジェクト指向ってのは結局本人のスキル。自分で時間をかけて磨くしかない。
ただ、C++を使っていくうちに、矯正ギプスのように身についてくる。
>>248 ミドルウェアはそのまま使うか、ラッパークラスを作って隠蔽する。
多態の利点が分ったら社内開発のゲームエンジンなんかは作り直したくなる。
くだらない、必要のない話ばっかり。 もう、このスレ次スレいらんから立てんなよ。
>>250 仮に自分の場合を考えたときにC言語で見積もった工数のどのくらいの工数を減らせる?
>>253 250 じゃないけど
Cでも今なら設計はオブジェクト指向にして組むだろうから、減るのは言語のサポートが
無いぶんの余計な記述量と、型チェックが緩かったりコンストラクタ・デストラクタが無い
ための実行時エラー発生とその修正のぶんかな。
前者は全体の 5 % にもならないだろうけど、後者は 10 % ぐらい超えそうに思う。
コーディングなら2倍以上は速いと思うな。 ずっとコーディングばっかりしているわけじゃねーから納期はそんなに縮まらないけど…。
Cで多態を実現しようとしたら思ったより面倒だったぞ。 vtblを再現すれば簡単なんじゃないかと思ったけど甘かった。 コンストラクタとかコードが複雑になってとても同僚に見せられない。 実務レベルで考えたらせいぜいカプセル化程度が限界だな。
C++厨はいつも以下のことを忘れてしまう ・設計さえしっかりできればコーディングに時間はそんなにかからない ・C言語とC++で設計は変わる?(変わるはずもない、言語によって変わる設計ってなんだよ) ・C言語でかかる工数、C++でかかる工数 ・C言語で作れるプログラム、C++で作れるプログラムの質(それは定義した仕様以外の要素で変わるか?) 何をとってもC++であることの利点は見つからない まともな技術者ならこれがわかる
なんかよくわかんないけどプログラムって大変なんだな
>>233 トータルで高品質なものを最短でつくれるものをチョイスする。
>>257 NGな脳みそ
多態を実現するのが目的ではなくて
あくまで仕様を実現することを目的にするべき
>>257 普段どうコンパイルされているか意識が足りないのでは?
面倒だが普通に見せられるレベルでかけるぞ。
>>256 ベテランに任せるなら大丈夫。
C++初心者でもCより工数が伸びることはない。
>>262 まて、
>>257 はすでに道を間違えている
そっから話を広げるんじゃねーよ
お前のいうことがあってるとかまちがってるとかそういう話はいいから
>>267 そうでなくて具体的な仕様もないのに多態を実現する話にもっていきたくない
俺の検証では多態を実現することで削れる工数など1hすらない
>>258 > ・C言語で作れるプログラム、C++で作れるプログラムの質(それは定義した仕様以外の要素で変わるか?)
C++ のほうがコンパイラで自動的にチェックできる問題が多いんだから、
客観的な信頼性という質においては C++ で組んだほうが上になるんじゃないの?
C言語で何も不満がないならC言語を使えばいいよ。 仕様変更とか、流用とか、そういうところで悩むことがないなら、 新しいことに手を出す必要はない。
>>271 じゃないの?って以上の要素でないっしょ?
>>272 >仕様変更とか、流用とか、そういうところで悩むことがないなら、
本当にC++は仕様変更や流用に強いの?
そしてそれは設計の話ではなくてコーディングレベルの仕様変更や流用の話でいいの?
コーディングはそんなに工数を食うの?
>>269 多態ができればベースクラスを流用できるし、
1つのアルゴリズムや関数をいろいろな派生オブジェクトに適用できるだろ…。
つまり多態があれば単純にコード量は減る。
もちろんどんな場面でもというわけにはいかないけど。
>>273 いや、おれは「信頼性という質においては C++ で組んだほうが上になる」という結論を
根拠も添えて示している。そのうえであんたはそう考えられないのか?という問いかけ。
C++トランスレーターの存在やチューリング完全の存在からも お前らの議論は浅すぎると思うんだが。
C++ vs C とか、何年前からタイムスリップしてきたスレだよ
>>276 じゃあ、その信頼性はC++のなんのチェックが入るから上がるもんなの?
C言語とC++との違いになにがあるの?
俺はなんの違いもないって結論な
C++は仕様変更や流用に強いよ。それは主に設計面の話。 他部署で別のゲームのために作られたライブラリを、全く手を加えずに派生させるだけで、 元の開発者の想定外の実装を無理なく実現できてしまうくらい。
どんだけ天国な会社に居るんだよw
>>281 C++とC言語で設計は変わるっていってる?
ちょっとお話できないレベルになるんだけど
>>280 >254 にもあるが、厳格な型チェックやコンストラクタ・デストラクタの強制があるだろ。
これだけでも十分だ。
Cにもboostが有るならCでいいと思う
厳格な型チェック? C使いでもコンパイラはC++と共通のもの使ってるでしょう。 コンストラクタデストラクタはあってもびっくりな使い方する奴後がたたないけどなw
>>284 型チェックに関していうけど
それは仕様としてなんの機能を組むときに必要になるわけ?
そもそも型チェックなんてベタで組んでればおきるはずもないこと
わざわざ型変換して妙なことしてるからだろ
んでもってそれはC言語でもC++でも余計なことしなければ発生さえしないもの
君の言っていることはまったく関係ない
コンストラクタデストラクタは発生することで逆にバグる可能性も増えるよね?
単純にいいとはいえないなチェック増えるだけだし
そしてそれだったら言語の機能なんかじゃなくてあらためて初期化や終了関数を作ったほうがいいんじゃないか?
あ、RTTIのこといってたの?
Cでスマポってどうやって実装するんですか?
スマートポインタw
やねうらおさんのところいってください
オブジェクト指向と構造化設計では設計が変わってくる。 C++で構造化設計することもできるしCでオブジェクト指向することもできる。 論理的に可能かどうかではなくて、実際の運用として現実的かどうかを考えないといけない。 Cでデザパタを実現しようと思ったら相当にめんどいぞ。
>>287 struct S* 受け取る関数に int* 渡すとかいうくだらないミスが
コンパイルできてしまうかコンパイルエラーになるかという違いがある。
仕様だとか意図的な変換とか、そういうのは関係ない。当たり前だが。
コンストラクタ・デストラクタの存在で逆に発生するバグってどんなの?
で、仮にそういうのがあるとして、それは誰でも経験しているだろう初期化や
終了関数の呼び忘れより頻度や重大性の大きいものなの?
あ、やねうらお隔離スレ(=タスクシステム議論スレ)が消えてるじゃねーか!
ところで
>>283 はC++で組んだ経験はどれだけあるの?
オブジェクト指向での実務経験は? まさか経験がないのに想像で語っている訳じゃないよね?
つーか話を聞いてると全然経験がないように見えるけど。
循環参照に問題があるシステムを使う理由は何? 完全手動でのnew/deleteとすらあまり違いが内容に思うんだけど。
コンストラクタでバグらせる奴は、関数呼び出しでも同じようにバグらせそうだな。
なんかもう話して実があるレベルじゃないな 仮にそうだったとしてそれが大局に本当に影響あると思ってるの? ってレベルだし 結局C++の利点って聞くといつもこんな感じだよね
>>298 俺は17年だ…
フルアセンブラ時代からの生き残りだよ。
>>302 あぁ、ゲームでC++ならもう12〜13年くらいじゃないかな。
PlayStationの時代からやってる。メモリがなかったのでテンプレート無しだったけど。
なんかもう話して実があるレベルじゃないな 仮にそうだったとしてそれが大局に本当に影響あると思ってるの? ってレベルだし 結局Cの利点って聞くといつもこんな感じだよね
ここってプロいたのかよw
>>303 そりゃ正直どうかと思うわ。
C++で分断化のフレームワークがしっかりしてない限り
チーム開発でライブラリ含めて2MBを安全に使うのは困難。
どんなメモリ管理にしてたの?
mallocは独自実装で遅くても断片化しにくいアルゴリズムにしてた。 PSとかDCとかmalloc差し替えられるでしょ。 それ以外にも断片化についてはいろいろノウハウがあった。 mallocはねぇ、俺も懐疑的だったんだよ。 そもそもCで固定アドレス派だった。 若い人がmallocを使って美しいコードを書いているのを見て 衝撃を受けてからmallocを使うようになった。 しかしやはり断片化が問題になったので、 丸ごと自作して差し替えた上に、メモリ配置分析ツールも自作してた。 それがすでにあったからC++への移行でそこが問題になったことはなかった。
ってか、今はLuaとかを組み込んじゃってコアな部分以外はそっちにまかせちゃったり 逆にコアな部分はGLのシェーダしかなかったりとかで言語はそれほど重要じゃないと思うのだが。
中途半端な感じはするな。分断化をノウハウで乗り切るって運で助けられてるか、 ひとつの強力なノウハウでほとんど乗り切ってるかくらいしかイメージできない。
LuaよりはCやC++のほうが開発しやすいだろ。トライ&エラーが必要な箇所以外。
Luaにしとけば企画者とかスクリプタっていう小人さんたちが 寝てる間に勝手にイベントとか組み込んでくれるんだよ。
スクリプタも自作できないプログラマって…
その発言はプログラマ失格だろ。 デバッガや完成度やバグの可能性考慮してるか? つーか煽りか・・・
>>312 スクリプタを作るための苗床と時間(20年くらい)が必要だからな……
自作するのは割に合わんよ。
今やluaとかいろいろスクリプトエンジンもあるのにわざわざ作る? 自分で工数増やしてんじゃしょうがねーよな。 ライセンスの問題で、どうしても自力実装が必要ならわかるが。 データはもう外出しで一切ハードコーディングしないのが普通じゃないの? イベントもスクリプトで組んで、どうしても処理コストがかかるところはハードコーディング して。 本体は3Dエンジンとか、サウンド再生とかコア機能だけ。 これを突き詰めていくと...あれ?ツクールじゃんwwwwwwww なんだ、ツクールがあれば全てのゲーム作れるじゃん(笑)
俺が格ゲーのスクリプタ仕事で行ったところはオリジナルのツールでスクリプト組んでたけど、 そういうのが当たり前なんじゃないの?
そんなレベルまで行けばケースバイケースとしか
>今やluaとかいろいろスクリプトエンジンもあるのにわざわざ作る? プログラマ以外にスクリプトを書いてもらう為にDSLはよく組むよ luaとかは汎用的過ぎるので結局プログラマがスクリプト書くでしょ?
それはあるね
>>234 レスありがとうございます。
>>225 のサイトにあるコードを自分のPCで検証してみました。
Sorting in C++ vs. C
C, library qsort 1.09〜1.13 0.27〜0.31
C, hand-coded quicksort 0.31〜0.33 0.11〜0.14
C++, STL sort, C arrays 1.25〜1.328 0.14〜0.157
C++, STL sort, C++ vectors 50.11〜52.047 0.14〜0.188
※VisualC++2008EE, WindowsXP(32ビット版), N=1000000, TYPE=int, ビルド=Debug/Release
Cの方が速いという結果になりましたが・・・
>>318 汎用的すぎるからだめとかよく分からないな
素人でも間違えないような関数だけ公開すればいい話じゃん
責任感ない奴は自由でいいな
みんな自分の担当個所だけでいっぱいいっぱいなのさ
>>321 そう思うだろう?
凄く甘い考えだぞ〜 orz
このくらいのレベルが素人呼ばわりだもんな。 まわりもレベル低いんだろうな。
スクリプタはGUIで誰にでも簡単操作なものを自作するのがマとして最低限のレベル。
STL使ってる人って、どれくらいallocatorを使い分けてる?
>>320 その結果からどうして「Cのほうが速い」なんて話になるんだ?
もしかしてデバッグ版の速度を比較して意味があるとでも思ってるのか?
またこのレベルか・・・
>>318 なるほど、もっと的を絞ったいわば簡易版を作るわけか、納得。
このスレだっけ、忘れたけどXinputで入力試みて、デバイスがない場合はDInputで 入力させるとかあったかな。 XinputはX360コンだけなので、デバイスがない場合はDInputで他のデバイスから 入力を取るとか。
332 :
[―{}@{}@{}-] デフォルトの名無しさん :2010/03/07(日) 01:52:08
コードの実行速度の比較なんて、コードによっていくらでも優劣が変わる。 JavaやC#など実行時コンパイルする言語が、Cなどのネイティブ言語より 早いようなコードを書くことだってできる。 コードや言語の特性も考慮に入れずに論じても誤解を生むだけ。
なんかもう話して実があるレベルじゃないな 仮にそうだったとしてそれが大局に本当に影響あると思ってるの? ってレベルだし 結局C++の利点って聞くといつもこんな感じだよね
なんかもう話して実があるレベルじゃないな 仮にそうだったとしてそれが大局に本当に影響あると思ってるの? ってレベルだし 結局Cの利点って聞くといつもこんな感じだよね
>>334 オウム返しが成立してないのに見苦しいなw
答えに窮して勝利宣言のほうが見苦しいわ。
>>338 ホントだよ
設計云々いってたのに
蓋を開けたら
>struct S* 受け取る関数に int* 渡すとかいうくだらないミスが
こんなくだらないことの回避のために
オブジェクト指向導入したんですってw
馬鹿じゃないのw
自分が何を説明しようとしてるのかそれすら行方不明で
こんなこと口走っちゃうあたりもう末期だよね
技術者としても終わってると思う
メリットが説明できないものを役立つなんていっちゃう人は技術者じゃなくて詐欺師っていうんだよ
>>340 関係なくていいの?
C言語からC++にして使ってるのは言語の珍妙な機能だけ?
こりゃいいわw
アンカーたどって流れ読み直せ
>>342 いや、単純にC言語からC++にしてなんの利点のがあるの?
って話が本題だよw
ここでオブジェクト指向が関係ないなんてでちゃうのはおかしいな
なんか議論してる方向間違ってるからオブジェクト指向関係ないなんてセリフがでちゃうんじゃなーい?w
まあ、君は技術者やめちゃったほうがいい人だから
そういう目的を見失っちゃうこともあるだろうねw
>>342 会話するつもりがあるならアンカーたどって流れ読み直せ。
>>280 で同じ話が出てる。
そのからの流れで
>>294 への答えが聞いてみたいところだ。
345 :
344 :2010/03/07(日) 03:29:58
ごめんアンカーミスった。 >344 は
>>343 宛てね。
オブジェクト指向な設計がCで実装できないとでも思ってるのかな?
ここ数日で急激に馬鹿が増えたな
N88BASICでオブジェクト指向しながらゲーム作れますか?
>>320 俺のPCではこんな結果だったぞ。
何度もやったけどC++の方が早かった。
C, hand-coded quicksort 0.16〜0.19
C++, STL sort, C arrays 0.15〜0.18
C++, STL sort, C++ vectors 0.15〜0.17
※VisualC++2008EE, WindowsXP(32ビット版), N=1000000, TYPE=int, ビルド=Release
※IDEからではなくコマンドラインから実行。
C, hand-coded quicksort 1.76〜1.81
C++, STL sort, C arrays 1.54〜1.57
C++, STL sort, C++ vectors 1.57〜1.60
※VisualC++2008EE, WindowsXP(32ビット版), N=10000000, TYPE=int, ビルド=Release
※IDEからではなくコマンドラインから実行。
コンパイルオプション、最適化は全部デフォルト。
俺のPCがショボイ、というのは認めざるを得ない。
>>348 私ほどの実力なら作れますが、あなたには到底無理です。諦めてください。
353 :
348 :2010/03/07(日) 04:38:34
うちの大学の実験装置に繋がってるパソコンがPC98で実験装置動かすのにN88BASICが使われてた 実験装置用のプログラム新しいの作れる人がいないらしい 悲しいな
N88BASICは簡単だろ。 C覚える暇があれば十分覚えられる。 ただ、スパゲッティプログラムになり易いから綺麗な書き方の練習は必要だけど。
>>349 ありがとうございます。
参考になります。
>>320 もコンパイルオプション、最適化は全てデフォルトです。
STLのDebug版がRelease版と比較して大きく落ち込んでいますが、これは改善できるものなのでしょうか?
リリース版の結果が重要とは言ってもやはり開発時はデバッグ版を使用したいのですが。
C, library qsort 1.09〜1.13 0.27〜0.31 ⇒ 24.7〜27.4%
C, hand-coded quicksort 0.31〜0.33 0.11〜0.14 ⇒ 35.4〜34.0%
C++, STL sort, C arrays 1.25〜1.328 0.14〜0.157 ⇒ 11.2〜11.8%
C++, STL sort, C++ vectors 50.11〜52.047 0.14〜0.188 ⇒ 2.7〜3.6%
Debugが遅いから云々言う奴は JITなしのJavaは遅くて使い物にならないと主張してるのと変わらんよなw
>>344 全然関係ないじゃん
だってそれって細かい実装技術だろ
工数なんてちっとも削れやしないw
そもそも型変換なんてしなけりゃいいじゃん
全然関係ないことを持ち出して C言語とC++との違いって主張する奴はなんなの? オブジェクト指向が入って違いが出たんじゃないの?
> struct S* 受け取る関数に int* 渡すとかいうくだらないミスが これコンパイラでひっかかるよね
C++はマルチパラダイムなだけあって色々なスタイルで書けるから一概に言えないのでは。 それこそクラスなんぞ使わず、betterCとして利用する事もできる。
個別文法禁止オプションとか仕様レベルで追加されればいいんだけどなぁ
可変長配列や連想配列のあるCとして使ってもいいよ。
>>364 本筋より付属物なんか人に薦めてるあたり使えないのバレバレだなお前w
ベターC的な使い方しかしてないところは結構あるらしいね。
Cより出来ること増えてんだから使いこなせればC++のほうがいいに決まってる
「使いこなせれば」
使いこなせば使いこなすほど 胸を張って「使いこなせる」 と言えなくなっていく それがC++
370 :
361 :2010/03/07(日) 12:05:09
>>363 ごめん、CとC++の速度比較に関して言った。
ふむ ここはCとC++の優劣を決めるスレですか
372 :
デフォルトの名無しさん :2010/03/07(日) 13:21:05
>>358 C++ではコンパイルエラーにできるところがCでは実行時エラーとなるまで
気づかない可能性がある。C++で強制されるコンストラクタもデストラクタの
呼び出しもCでは明示的な初期化と終了関数を呼び忘れる可能性がある。
これによってコンパイルできたコードの信頼性が向上すると言えるし、それに
伴ってテストフェーズにかかる工数が減るとも言える。
意図的な型変換は関係ないと
>>294 にも書いたはずなんだが。
無限ループってこわくね?
ゲームって基本ループじゃね ウォッチドッグタイマ使えばいいんじゃね
GC付きの言語と比べるならともかく CとC++なんて本質的にそれほど差があるわけじゃないだろ なんでこの兄弟言語で喧嘩する必要があるんだか
goto有害論みたいなものだろ
378 :
デフォルトの名無しさん :2010/03/07(日) 17:33:27
C#でDirect3Dは無謀?
てめぇXNA先輩にケンカ売ってるのか
380 :
デフォルトの名無しさん :2010/03/07(日) 19:44:29
>>373 まだ関係ないところこだわってるんだ?w
Managed DirectX(MDX)は終わってるから、やるならSlimDXな
春厨効果なのかもしれんがこのスレ勢い1位だなw
>>369 同意
使えることは増えていくけど終わりが見えない
何年使ってもメリットが説明できない
C++のメリットは実行速度とOOかな。 それ以外もあるけど強くプッシュできない。
効果を数字で出せないからお金に結びつかないよね
OOはあまりプッシュしない方が・・・ むしろジェネリックプログラミングじゃね
設計をコードに落とすときにOO使うと便利
構造体じゃダメなんかよ
いいよ private宣言するだけだから
クラスになってから インスタンスのコピーするのがやたらと面倒だけど これはなんで面倒にしてるの?
その曖昧な質問をどうにかしてくれ 何がどうして面倒なのか
デザパタを適応してるのでは。知らんけど
どうせ 今までmemcpyで済んでたのにどうしてメンバいっこいっこ代入するんだよ〜 とかそんな程度だろ
>>399 状況を具体的にして初心者スレに行くのがいいと思いますよ。
コピーコンストラクタや代入演算子を自前で書かずにコンパイラのデフォルトに任せればいい。 全部のメンバのコピーコンストラクタが勝手に呼ばれる。 ポインタはコピーされるとまずいのでそこだけラップしておけばいい。 例えばchar *を使わずにstringを使うとか。
ベーマガ掲載のゲームを移植しようと思ったが、言語違うと難しいな
BASIC系の処理をどう移植すりゃええのか アセンブラ使ってるBASIC投稿もあるがマシン語とかさっぱりだぜ(笑)
マシン語部分は描画ルーチンや衝突判定ルーチンだったりするわけで。 昔を思い出しつつマシン語を直読みしてって、同じ処理を普通に記述していけばいいだけでは?
ベーマガってやつはゲームのサンプルとか載ってんの? ゲームコードがのってる雑誌って他に有る?
BASICなんてエディタ含めて数十kbの言語だしZ80なんて命令数さほど無いんだよ
>>406 読者の投稿プログラムが掲載されていた
もっぱらゲームだが
電波新聞社のベーシックマガジン、通称ベーマガ。ベーシックってのはBASIC言語のことだ
休刊して7年くらい経つ
409 :
デフォルトの名無しさん :2010/03/08(月) 03:30:33
投稿できる雑誌が無くなってから プログラミングへの意欲は大きく減ってしまった
ベーマガね。超高齢のジジイとかも投稿しててマジすげえ(笑)と思ってたわw
雑誌がなくてもネットで公開すればいい。
おま、プログラム原稿料1万円もらえるんだぜ?
(笑)
一万円って日給1日分じゃねーか
1日1個当選しても月収たったの30万か
それ土日入ってんのかよ!
コピコンが面倒くさいのは誰もが認める所だな
それが面倒なんじゃC言語で深いコピーとかやるのも面倒だろ C++はスマポやコンテナを使えばデフォルトでも問題ない 浅いコピーはスマポ 深いコピーはコンテナで てかここはC++初心者スレじゃないぞ
今のゲームプログラマがいかにレベル低いかがよくわかる。
でも今のゲー専じゃMaxとかMayaとか使わせてるってんだから、 ある意味昔のゲームプログラマとは別の領域のレベルは伸ばしてるんじゃねえかと思う。 そいつらがマップの衝突判定とかが出来るかどうかは別として。
>>410 wonderflは割りと近い気がするな
あれのC版とかC++版とか・・・は考えたくも無いが
>ゲー専 昔はゲームの作り方を教えてくれたけど 今はゲームの見た目を良くする方法を教えてくれる所だと思ってる。
日本のCGも海外と比べればびっくりするほど低レベルなんだが プログラムの中身の質なんてそう分かるものじゃないが CGだと素人が一瞥しただけで糞だとバレてしまう悲しい現実
>>421 はぁ?
クラス使わないで構造体で組めばなんの問題も起きないんだけど
余計なことして余計な時間かけて馬鹿じゃないの?
仕事しないで遊んでるの?
428 :
421 :2010/03/08(月) 19:33:10
ちょw
おまんこ
C++の構造体はプライベートが設定できません。 すべてパブリックなpythonがお勧めですね
言語はどうでもいいんだよ。 今2010年においてもっとも重要なのはゲームデザインとシェーダプログラミングじゃ。 つうかゲームデザインの話しようぜ。 オンライン前提のゲームバランスについて語ろうよ。俺TUEEEEE野郎をどうやって隔離するか、とか。
ゲ製行けよゲス!
最強のゲームは囲碁じゃね! ソフトが弱いし どんだけ廃人になっても才能ないと勝てないし
>>427 ようするにお前みたいなバカはプログラムなんか作るなってことだ
ユトリは大人しくオナニーでもしてろ
>>434 アレアレ?
説明できなくなってキレちゃった?(笑)
冗談かと思ったらマジて言ってたのかよ 本当のアホだな
>>436 そういうのはしっかりと説明できてからいってねw
いまだにC++のメリット説明できた人間ってみたことないんだ俺w
え?
組み込みいけばC++のメリットを実感するよ。いてら
おまえらタスクシステムスレいただろ
目をつぶってたか耳をふさいでいたかのどっちかだな
ポリモー出来た方が便利じゃん 読みやすいじゃん
Cの上位互換でコーディング方法の選択肢が多いってだけで十分じゃん
C++でプログラミングしていたらインクルード地獄にはまって抜け出せなくなりプロジェクト破棄した
C言語 > C++ な人によってはC++の全てが 悪 なんだろう 価値観の相違だな
>>444 インクルードガードはもちろんやってんだよな?
設計を紙に落として階層分けてみたら意外なこと発見するかもよ
C++覚えたてのときは相互参照とか書き方分からなかったな
そんなもん必要な時点でレベル低いだろw
>>444 状況を具体的にして初心者スレに行くのがいいと思いますよ。
ダーウィンの進化論は未だに証明されていないって まじめに主張している奴も世の中にはいるからな。 思い込みの激しい奴に何を言っても無駄だろう。
進化論て証明できる類のものなのか?
科学と呼ぶためには「再現性」が無いと 進化論が科学だとすると、進化論の進化を再現してみせないと
アメリカの湖で、環境破壊の影響で、40年ほどで交配できないレベルの新種が誕生した、って実例がある。 交配できないほどじゃないけど、似たような話は琵琶湖にもある。 進化ってのは、条件さえ整えば、そんなに時間がかかるもんじゃない。
交配できないって、陸イグアナの海イグアナの雑種みたいなもんか?
456 :
デフォルトの名無しさん :2010/03/09(火) 02:37:35
何?進化論や遺伝とか取り込んだゲームでも作ろうって話? シュミレーションゲームか?
Javaでゲーム作るとき GUIアプリとか、ネットのアプレットとか、携帯端末のMIDletとか、で 相互に移植しやすく作るには 入出力系統を分離して設計すればOK?
458 :
デフォルトの名無しさん :2010/03/09(火) 03:45:34
Javaはゲームに向いてないと思いますよ。
Javaは可能を不可能にする素晴らしいプログラミング言語
>>459 ,461 お前ら何を根拠にそんなこと言ってんの?
>>463 「本格的な」という単語が抜けているだけですよ。
本格的なゲームを作りたいなら、Javaはやめておけ
>>465 「本格的な」が今あるリソースの限界まで使うような物を指しているなら同意する
467 :
デフォルトの名無しさん :2010/03/09(火) 06:34:29
じゃう゛ぁでテトリス作った俺は髪
C/C++でもリソースを限界まで使ったゲームって稀だと思うけどな
>>468 javaだとグラフィックやサウンドをnativeと同じようにさわるのは敷居が高いって事じゃろ
でもjavaでゲーム作るの向いてないとか言う子はjake2位は見ておくべきだとおもうな
>>457 Javaに限った話じゃないけどインターフェースを共通化したクラスを用意しておけばいいよ。
最近、Javaアプレットは使われなくなった気するけど・・・
>>470 インターフェースを共通化ってwww
とりあえず、インターフェイスの概念でも勉強したらどうかね?
危険が危ないみたいなもんだよwシロウトクン
472 :
デフォルトの名無しさん :2010/03/09(火) 10:34:13
煽るだけが能の奴がいるな
このスレって何の役にもたたないね
この板はプログラムを作る人のための板です。 あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。 その他、お勉強ページへのリンクスレ、 推薦図書・必読書スレ もあります。 プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 Javascript は Web 制作板、CGI は Web プログラミング板へ。 業界談義、愚痴はプログラマ板へどうぞ。 ゲーム関係の話題はゲーム製作板へどうぞ。 ←★ ネタ、板とは関係の無い話題はご遠慮ください。 ローカルルール無視したスレ立てんなよ
478 :
デフォルトの名無しさん :2010/03/09(火) 10:52:35
>>1 ローカルルール無視したスレ立てんなよ
この板はプログラムを作る人のための板です。
あらゆる質問はまずすれ立てるまでもない質問はここでスレにしてください。
その他、お勉強ページへのリンクスレ、
推薦図書・必読書スレ
もあります。
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。 ←★
ネタ、板とは関係の無い話題はご遠慮ください。
チラ裏だが、最近になってやっとこさ「オブジェクトにグラフィックコンテキストとか引数に持つインターフェース付けんな」 って意味がわかった。 オブジェクトはデータの構造であり、普通はデバイスにより描画方法が異なるんだから 描画メソッド持たせてたら端末ごとにクラス作り直しじゃんかバーカ、ってことに気付いた。 で、代わりにインターフェースだけ持たせておいてそのインターフェースを実装するクラスの中身だけ端末によりけり… って方法がいいらしい。多分。
わーい
483 :
デフォルトの名無しさん :2010/03/11(木) 00:37:58
特許か、実際裁判沙汰になったことってあるのか?
>>480 おい俺にも納得の行くチラシの裏にしてくれ。
>普通はデバイスにより描画方法が異なるんだから
これは分かるし、同じデバイスでも状況によって描画方法を変える場合もある。
が、
>「オブジェクトにグラフィックコンテキストとか引数に持つインターフェース付けんな」
これって、Javaでいうvoid paint(Graphics g)なインタフェースを
否定しているように聞こえるんだけど、そうなのか?
もしそうならその理解は間違っていると思う。
JavaのGraphicsクラスは基本的な描画機能を抽象メソッドとして定義していて、
その実装は派生クラスで行うことになっている。その派生クラスで、
先の例でいうデバイス毎の描画方法の違いを吸収してしまえるわけだから。
以上反論終わり。
>代わりにインターフェースだけ持たせておいてそのインターフェースを実装するクラスの中身だけ端末によりけり…
まあこれがもしかしたらGraphicsクラスのことを表しているのかなとも思ったが、知ーらね。
485 :
デフォルトの名無しさん :2010/03/11(木) 01:41:54
「端末ごと」って記述で、言語がJavaで無いことくらい分かるやろ・・・
メッシュ等のデータに描画メソッドを持たせるなと それだけの話 class Mesh { void draw(); // ←NG !! };
CLDC+MIDPのJavaと普通のJavaではGraphicsでさえ仕様が
488 :
484 :2010/03/11(木) 03:27:11
>>485 だから何?JavaのGraphicsクラスは実装例として出しただけ。
他の言語でも同様に組めるだろ。Javaの話を持ち出すのは
頓珍漢みたいなそのツッコミの意図が理解できん。
>>486 そういった風に単純化してもらえるととても理解しやすい。
が、「オブジェクト」と意味ありげに書かれていたものが
そういったデータクラスを指すとは思わなかったんだ。
じゃあこの場合、
>代わりにインターフェースだけ持たせておいてそのインターフェースを実装するクラスの中身だけ端末によりけり…
の実装例はIDirect3DDeviceなどということで合っているかな。
>>487 大昔はあれでしょうがなかったのかも知れんが、
今にしてみれば悪い仕様でしかないな。
俺は端末性能がほどほどになった頃に
キャリア間移植性向上のために
抽象Graphicsクラスをわざわざ作ったが、
大元の基本クラスが非抽象だったせい等で
歪で冗長なクラスに仕上がった。
牛乳飲んで寝るわ。
489 :
デフォルトの名無しさん :2010/03/11(木) 05:58:10
>>489 組んでみればわかるけどMeshに必要なデータ以外のものが超多くなって
このクラス何?ってなるよ
描画クラス(超大型クラス)丸ごと一個内包しなきゃいけなくなって
Meshが十得ナイフ的ウンコクラスになってしまう
うちのMeshクラスは頂点バッファとインデックスバッファ群で構成されてて 描画コール前後にbind()/release()メソッドでデバイスに一括登録/解除してるんだけど これはあり?
メッシュクラスにgetterメソッド用意して描画処理は別のクラスなり関数で処理したほうが 依存性低くなっていいかなーと 別にmesh.draw(xxx) でも問題ないんだけど これだけじゃ事足りないかなーってときに描画処理の為にメッシュクラスを いじるのはあんまりよくないなってね
493 :
233 :2010/03/11(木) 14:07:00
なるほど、そういうことか。 だからアレンはサラを殺したってわけね。
ごばくした
オブジェクト指向的にいってもメッシュは型がそこにあるだけだしね 描画はシーンを描画するべき 他のオブジェクトはデータを渡すのみ
ロマサガの話をこのスレでしないでください
条件付でC++の勝ち には笑ったわ
かなりのC++嫌いだな
最適化なしで比較するならJavaもJIT外せよ 10倍遅くなるからw
C++嫌いというより、事あるごとにJavaは遅いって言われるのに嫌気がさしているんじゃないかね
原因が組んでる奴が馬鹿だからなのになw あのアフォな文字列クラスといい人的要因でいくらでも遅くなる罠が多いのがjava
>>501 もう5年かそれ以上前から
「いやJavaは速い」って言われるようになってないか
VM噛ませるんだから起動が遅いのは仕方ないにせよ
どこが速いんだろうか? 一番イラっとくる起動時間と 一番ムカっとくるゴミ収集機能が健在なのに javaはこのどうにもならないシステムがウンコ
>>497 これ、どうみてもJavaに対する皮肉としてわざと書いてるわけだが。
>>504 はOSもCPUの保護モードも使わないでコンピュータを使えばいいと思うんだ
両者最適化して勝負すりゃ白黒つくのに 「最適化する必要があるのか?」と逃げ出すところがいいなw
コンパイラの性能に依存するだろ
世界中で一番遅いコンパイラの最適化でもJavaに速度で負けることはない。
511 :
デフォルトの名無しさん :2010/03/12(金) 18:05:54
別スレッドで更新、描画を分けるときって FPSに合わせて実行するのはどっち? 俺は更新だと思うんだけど・・・逆?
描写だと俺は信じてる
実際のとこスレッド分けても苦労の割に大して早くならないよね
どっちなんだろうか
ローグライクの話なんだけど シレンみたいに攻撃するときは一体ごと順番に 移動するときはみんな同時に移動 ってのはどうやんのがスマートですかね?
シレンって攻撃フェーズと移動フェーズみたいに分かれてんの? rogueしかやったことないから知らんが
え、何も悩む必要ないじゃん。同時移動じゃねえよ。 順番に移動/アクションしてるだけだよ。ゲームやってればわかるじゃん。
いや同時に動いてるだろ
見た目だけね。 516の言うとおり、移動フェーズと攻撃フェーズに分けりゃいいんじゃねえの。
じゃんね。
@プレイヤーがシレンの行動決定(仮に移動とする) Aシレンの移動先座標を求める(まだ移動先計算だけでキャラの移動はしない) Bシレンの移動先を目標に敵の行動を決定(ここも移動先決定のみでキャラ移動はしない) Cシレンと敵を移動先に移動させる(ここが目に見えるので一緒に移動してるように見える) こんな感じだろ
なるほど
それって同時というんじゃね?
内部的にはターン制。見た目は同時 ただこれ見た目のテンポを良くするためのシステムなのに 一部のテクに使えてしまうんだよな 見た目とゲーム性は切り離したいが、これはなかなか上手くいかない
なにをやっても上手くいかないんだね
一部のテクに使えてしまうのが嫌ならそうならないように組めばいいじゃない
上手くいかなくてごめんなさい 出直してきます・・・
一フレーム毎に計算処理と描画処理ってのがゲームの基本なんだから、 その点を意識できれば実装方法は自ずと見えてくる。
rogueなんて、全部シーケンシャルに処理して、最後に画面全体を 再描画するだけだろう。シレンも同じさ
まぁシレンをそのまま作るのは初心者には難しいかもしれん rogueを作ってみたらどうだろーぐ?
迷路が
2Dゲームってレイヤーのツリーを作って描画させてるのが普通なのかな?
一応ゲームプログラマー歴15年なんだが言ってる意味が全然わからん
オーダリングテーブルで描画順を制御してプライオリティをコントロールするってことでしょ。 そうしているところもあるし、Zバッファでコントロールしているところもあると思うけど。
PS系限定?
一応ゲームプログラマー歴2日なんだが言っている意味が全然わからん
PS1とかそういう描画してなかったっけ
誰かストリーム配信でゲーム制作実況してくれ
パソコン画面をどうやって配信するの?
ニコニコの生放送でやってたな、そういうの タラコも出てたような
wmeで君も今日から配信主だ でも映画を流すと逮捕されるから注意しろ!
オセロやテトリスならニコ動に作ってる動画あったよね?
ああ、あれね
>>532 java.awt.ContainerとかSystem.Windows.Forms.Control
みたいに表示オブジェクトを入れ子(階層)にして管理するってことでしょ?
私はその組み方で作ってきたけど、レイヤ内の特定オブジェクトだけ
表示順位がレイヤを跨いで動的に変化するようなゲームの場合は
ちょっと綺麗な解決が出来なかった。
逆に言えば表示順位はレイヤ内だけで変化するようなゲームや
UIコントロールの管理にはうってつけだしスタンダードだと思う。
ちょっと調べてみたんだけど、FlashのMovieClipって
階層構造だけで作れるし、Z値の直指定もできるみたいだね。
こういうハイブリッドなインタフェースにしておけば、
どんな風にも組めて良いだろうね。
ところで階層構造の表示オブジェクト管理方法って何か名前はついてるのだろうか。
MovieClipとか何でもできすぎて使いづらいんだが
ところで、近年スクエニの人材募集が話題になってるけど、 実際プロからしてみてあんな人材は存在するもんなの? 思うに、日本中を探しても片手で数えられるくらいしかいないと思うんだけど。
スクエニってDQFF意外になんか仕事してんの?
>>548 俺の大好きなフロントミッションdisってんのかゴルァ
>>547 PGは厳しいな
でも数年やってりゃなるんじゃね?
逆に近年スクエニより見た目劣ってるようなクオリティで出す会社ねーじゃん
ってことは誰でもできるようになっちゃうってことさ
俺は途中で業界やめちゃったけど学生終わる頃にはスキニングやバンプ辺りのシェーダは
組めたし、会社辞めるころは結構できないことはなにもないぐらいの感じはあったけどな
(でもどこも給料低すぎて続けてられなかったけど)
PGってそのスキルを活かしてほかの仕事探し他方が楽じゃねぇの?パソコン教室とか
パソコンを習うって発想がないわ 習うモンなのか
ほら、こんなやつらがじいさんばあさんにパソコンの使い方なんて教えられないだろ
>>551 むしろ、それっぽい資料や教材作って「これからはパソコン教室運営が儲かりますよ」と
教材とパソコンセットにして販売する商売の方が楽に儲かる。
と脳内起業家ニートが申しております
TVで詐欺被害が何千万円〜とか何度も見てると、ひょっとしてリスクに見合った商売なんじゃないかって思える
お前に捌ける訳もなく。
俺はプログラムできるけど、 WORDの使い方に関してはおそらくその辺のOLレベル Excelとパワポはそれなりに詳しい程度 よって PG→パソコン教室はそのままでは無理
おばちゃん相手のパソコン教室でゲーム制作を教えればいいんじゃね ビジュアルプログラミング言語を使えば、おばちゃんでも盛り上がるだろ、きっと ビジュアルでもプログラミングの概念は同じなんだから、 おまえでも教えられるし
おばちゃんが覚えたいのがゲーム制作ならそうだろうけどよ
覚えたい、というか作ってみたい、わたしでもできそう、孫に遊んでもらおう、 って思わせるんだよ。
まえにExcelでネトゲ作って自分で遊んでる人いたな
ばあちゃんじいちゃんがプログラムできるってなんかいいな カッコイイ
オブジェクト指向の概念が全くわかりません 座標やアニメパターンとポリゴンデータを持つクラスつくって クラスの中で自機や味方や敵や弾を仕分けすればいいのか(従来どおり?) 自機クラス、味方クラス・・・別個に作ってやればいいのか でもポリゴンデータだけ違うだけでクラス分けるのって逆に煩雑で融通利かなくなる気が・・・
>>566 まず、機体ってsuper class作ればそこから自機なり敵機なり拡張できるでしょ
オブジェクト指向を勉強したいなら、この程度でいいでしょう
ポリモーフィズムがわからんと、クラス派生のメリットもわからんがな
569 :
デフォルトの名無しさん :2010/03/15(月) 12:15:24
Cでおk
シューティング作りたいなら、とりあえず全部abstractなクラスで ・bullet(弾) ・cannon(砲台) ・enemy(敵) ・shot(自機の弾) ・player(自機) ってのを用意するって覚えるといいよ。
571 :
デフォルトの名無しさん :2010/03/15(月) 12:26:12
鹵獲要素を入れないなら区別した方が楽
砲台って動かないだけの敵じゃないか?
>>570 はまだ勉強したてなのは分かった
少なくともインターフェイスを知らないんだろう
全て抽象クラスで実現しようとした結果、冗長となっている
575 :
566 :2010/03/15(月) 12:50:00
・bullet(弾) じゃぁ画面内外の弾の配列を、このクラスに持たせて描画とか移動処理を任すの? それともこのクラスごと配列にしてループさせるの?
>>574 なんでそこでインターフェースが絡んでくるかイミフだろ。
全部データ構造持つのに。
>>573 少なくとも俺はenemyがcannonをN個持ってる、って構造にしてる。
(enemyには移動パターンとか耐久力情報、cannonには弾幕パターンを保持)
こうするとcannonを入れ替えるだけで弾幕パターン変えられるし。
>>575 bullet=スプライト1個分の情報と捉えれ。
普通はbullet[]で処理する。
>>576 弾、機体でインタフェースきっといた方が楽だろ
データ構造なんてその先だぞ?
そもそも抽象クラスでなんでそんなん出てくんの?低能を露呈するだけだからやめときなさい
579 :
デフォルトの名無しさん :2010/03/15(月) 12:59:22
まぁ素人玄人とじゃソースに如実に表れるしな どっちが正しいとかより、効率を考えればどっちかはすぐ分かるはずだが 素人さんが多いようじゃな
entity user : entity enemy : entity bullet : entity
こういう時にサラッと昔に書いたサンプルコードとか出せる人はいないの? プロの書いたコードとかすごい興味あるんだけど
582 :
566 :2010/03/15(月) 13:15:53
>>577 スプライト1個分かぁ
結局管理リストから移動処理描画処理させる構造化と大差がない気も・・・
まぁ低能じゃその程度なんだろう
000100 凸凸凸 魚魚魚魚魚魚魚魚魚魚魚魚魚魚 夫夫夫夫夫夫夫夫夫夫夫夫夫夫 然然然然然然然然然然然然然然 / ̄ ̄\ / ̄ ̄\ / ̄ ̄\ | | | | | | |_.| ̄|_| |_.| ̄|_| |_.| ̄|_| 凸 どんなゲームでも記述できる構造を探すんじゃなくて、 どんなゲームを記述しようとしてるのかを決めるのが先じゃね 動く敵しか出てこないゲームなら、動かない敵を想定する必要は無いし、 地上と空中の敵を区別するのかしないのかとか、 そういう条件によっても適切な設計は変わってくるよ
585 :
デフォルトの名無しさん :2010/03/15(月) 13:25:13
低能ってか、頭の回転遅い人はプログラムやる資格ないね 他人に迷惑かけるだけだし、同じプロジェクトにいた日にゃ尻ぬぐい まずは己を高めることが、最優先かと
とりあえずjavaで。
public interface updatable{
public void update();
}
public abstract class position{
public position(int x,int y){
this.x=x<<10;this.y=y<<10;
}
int x,y;
public int getX(){
return this.x
>>10 ;
}
public int getY(){
return this.y
>>10 ;
}
}
public class bullet extends position implements updatable{
int vx,vy;//1フレームで移動する量
public bullet(int x,int y,int vx,int vy){
super(x,y);
thix.vx=vx;this.vy=vy;
}
public void update(){
this.x+=vx;this.y+=vy;
}}
こんな感じ。
bullet[]よりstd::list<bullet>のがよくないか
あと、bulletはabstractにした方がいいって言ったけどありゃウソです。 ゲームループの中でnewさせるとかありえないから、bulletはbulletで既にfinalです。 面倒くさいから省略してるけど、本当はパラメータの中にax,ay(加速度)とか含みます。
>>587 最初に発射された弾から順に画面外や、衝突によって消えていくとすれば、
bullet[]をリングバッファの様に使うのもアリだと思う
>>587 よく分からんが、使用させるメモリサイズを固定&処理時間をある程度固定させるために
あえてリストにはしないらしいぞ。
まあ俺のようなヘボグラマは無理せずlistを使うか
あと、描画処理に関しては仮想コードになるけど public abstract class drawer{ public drawer(Graphics g,Image[] useimages) this.g=g; this.images=useimages; } private Graphics g: public void blt(position p,int id){ g.drawimage(); } private Image[] images=new Image[]; } bullet[] bullets; void render(){ for(int i=0;i<bullets.length;i++) drawer.blt(bullets[i],DRAW_BULLET); } みたいにするのがいいと達した。異論は認める。
アロケータ作ればいいじゃんって思った
ポリモーフィズム??
アロケータ??
リングバッファ??
質問です キャラクターなんかをモデラーで作ったとして それをDirectXやOpenGLから扱うためにどうするのが一般的ですか? 色んなソフトで使われる一般的なフォーマットがあって それに変換してからプログラムで読み込むんでしょーか? それとも、たとえばメタセコイアで作ったとしたらmqoファイルが出来ると思いますが みなさんこういう個別のソフトの形式のコンバータを自分で書いてるんでしょうか
598 :
デフォルトの名無しさん :2010/03/15(月) 16:45:53
>>597 directXならxファイルとテクスチャ
なるほど、調べてみます。ありがとう
OpenGLではどうすれば?
どうしようもなりませぬ。
自力で読み込む
キャラクターがリアルな動きのゲームとかありますが、あれはプログラマーが書いてるんじゃなくてモデラーが設定した動きを呼び出しているだけなんですか?
たとえばどのゲームだ?
たとえばストリートファイターIVとか
>>603 もちそんな感じ。
ただ、賢いゲームだと足首のあたりとか膝とかスカートとかが
地面/肌に吸いつくように動くものもある。
なるほど、そうだったんですか じゃあプログラマーの査定下げておきますね
おまえの査定なんてどうという事も無いがな
そして後日、事実上の戦力外通告を受けて顔を真っ青にする
>>608 であつた。
スト4のどのへんあたりがリアルに思えるんだろう
相撲取りが弱いところとか
まだ厨房の私なのですが プログラムを使って簡単なゲームを作りたいと思っています。 まず、プログラム言語はどれから覚え始めれば効率が良いでしょうか?
中学生ならHSPでいいんじゃない?簡単だし
中学のうちからC++でもやっときゃ後から楽なんじゃね?
VB.netかHSPかね HSPが一番簡単。本当に簡単なゲームならすぐに作れるようになる VBやC++は汎用的で少し敷居が高い。あと導入直後の画面がごちゃごちゃしすぎ C++は覚えれは最強だけどかなりしんどい。俺も覚えたけど結局VB使ってる 最終的にはC#ぐらいがちょうどいいんじゃね 最終的にやることは同じだし、言語ごとに記述方法や決まりが違うぐらいなので 最初は使い易い奴が一番いいと思う
619 :
デフォルトの名無しさん :2010/03/16(火) 23:56:32
HSPですか・・・ ありがとうございます。 早速じゃんけんゲームとやらを作れるまでやってみようと思います。 もう一つ、質問なのですが なでしこはゲーム等には向いてないのでしょうか? 全て日本語なので分かりやすいんですが・・・
気に入った言語で作るのがいいよ イライラするより、ゲームを作ることに集中できた方がいい 他の言語に手を出すのは限界を感じてからでも遅くない
若いうちならね
ふーん
日本語で出来るから簡単or分かりやすい、なんてのは幻想だから 本当に中学生なら「なでしこ以外」でおやり。 小学生でBASIC&マシン語を始めた俺の経験だと、英単語への抵抗も薄れるし。
日本語に見えるが別物の何かで書くのは「なんでそうなるの?」ばっかりで辛いと思うぞ 全部アルファベットの方がプログラムに独特の書き方も「そんなもんか」で済む。 つーか、表示が日本語のソフト作る気なら、周りがアルファベットの方が読みやすい。 漠然とゲーム作るというだけならC#あたりがいいんじゃないかね。 とりあえずググって情報収集しやすい言語を選ぶべきだと思う。
逆に英語圏の人はプルグラミングしにくそうだね
日本語識別子だとソースの横幅がビッチリ揃えられて気持ちよさそう
えげつない略し方で英語圏の人はハゲそう stdみたいなやつってチョベリバ的な略し方なんじゃないの?
そもそも子音ヌキ頭3文字は向こうのやり方だろ?
子音って日本語じゃね?と思ったけど スタンダードをstd メッセージをmsg ってのはどういう法則なんだろうか?
母音をとる 連続してるのは1つに 先頭3文字
Standardこれがなんでstd? stnじゃないの? 向こうはnは母音なの?
nに強勢はない
マクドナルドがマックやマクドに略される感じなんだろ
>>619 個人的にはC言語(DXライブラリ)かHSPがお勧め。
>なでしこはゲーム等には向いてないのでしょうか?
向いていないことはないかもしれないがマイナーな言語なので情報量が少ない。
なでしこで作られたゲームって見たことないし。
初心者がC#から始めてできるもんかね C++よりはましかもしれんが
最初から「そういうもん」で覚えられるからアリじゃない?
まず環境揃えるまでがめんどくさくて挫折する人多いと思う
XNAならダウンロード→インストールまで画面を眺めているだけでおわるけどな。
XNAの話をすんな( ゚Д゚)ヴォケ!!
>>615 初心者の最大の敵は三日坊主だと思う。
モチベーションを保つ特別な条件(友達とか)があるのでなければ、
その点を考慮すべきだと思う。
C++ や C# は独学が難しい部類に入ると思う。
最初の言語がそれらで挫折しなかった人は、特別優れた人だと思う。
ROM-BASIC でさえ、俺の周りでは、投げ出さないのは五人に一人くらいだった。
俺は消極的に javascript を推しておく。
最後に、効率云々というのは、努力を嫌がっているように見える。
経験こそが君に力を与えるから、目の前のことを頑張れ。
ActionScriptマジオススメ フリーで環境作れるし、スプライト出して動かすくらいなら5秒で出来る。 成果がすぐにみえるってのは初学の段階では重要な点だと思う。 それなりに歴史があるからネットに転がってる情報量も多いしね。
もうXNAの宣伝はしない。 すまなかったな。
644 :
615 :2010/03/17(水) 18:03:00
皆さんアドバイスありがとうございます まずはHSPから始めてみます またお世話になるかもしれませんが 宜しくお願いします・・・
645 :
615 :2010/03/17(水) 18:08:57
下げてしまいました・・・ すいません
×下げ ○上げ 何度も連投すいません あぁ恥ずかしい
>>641 wonderfl使えばブラウザだけで始められるな。
さらに人のソースの改造からスタートできるし学習にもいいと思う。
>>644 HSP を始めるなら、次はこのスレではなく HSP スレに行きなさい。
それと、2ch 以外の HSP コミュニティに打ち解けなさい。
最後に、ム板では質問の時に age て良いし、むしろその方が良い。別に怒られないし、回答が早くなる可能性が少しだけある。お礼の時は sage ると夏とか冬とか言われなくていいかも。
ゲームはWinで動いてナンボでしょ HSPはその点だけみても他を圧倒してるな
シューティングで自機が、ある敵機と衝突した場合に受ける効果をオブジェクト指向で表現しようとするとどうなる? 上の場合に限らず、キャラクタ同士が衝突した場合に互いが及ぼし合う影響の表現なんだけど。 ベタな書き方だとif文の嵐になるよね。
攻撃力とHPでいいじゃん。
アイテムだと色々な効果を与えるよね。 攻撃力とHPだけでは駄目じゃない? アイテム系と敵キャラで明確に分けて処理してればいいかもしれんけど。 それに敵に接触した場合に特別な効果を与えたいときない?
すげえじゃん。
>>652 環境クラスをひとつ作る。
敵や自機、弾、アイテムなどが時刻 t においてある場所に存在するということは、
それらが環境のその位置に何らかの影響を及ぼしているはず。
なので、敵クラスは環境クラスに対して、自分がいまいる位置と及ぼしている影響を教える。
(たとえば、自機だけに対してダメージを与える、という影響)
自機クラスも環境クラスに対して、自分がいまいる位置と及ぼしている影響を教える。
(たとえば、接触したアイテムを自分のものにする、という影響)
環境クラスは敵クラスや自機クラスなどから及ぼされた影響を合成し、
敵クラスや自機クラスなどに対して、結果として変化した環境の状態を教える。
敵クラス、自機クラスは環境から伝えられた情報に応じて自分のステータスを変更する。
>>656 それだと各キャラクタクラスが他のクラス(影響を与える対象)を知っていることになるよね。
キャラクタを追加するとき大変だよ。
全キャラクタクラスに手を入れなきゃ。
>>658 そんなワケない。
class Element {};
class Ship : public Element {};
class MyShip ; public Ship {};
class Enemy : public Ship {};
class World {
std::list<Element*> elements; // myship, enemies, bullets, etc...
MyShip myShip;
std::list<Enemy*> enemies;
public:
void update( float t );
};
みたいにして、World::update() の中で、個々のキャラクタを見て、一括で解決するの。
自機とか個別の敵が細かいルールを把握してたら変だろ?
例えば RPG で武器に色々な属性がある。
ある武器に毒の属性が付いているとして、その毒の処理は武器毎に実装されたルーチンを呼ぶわけではなく、武器のフラグを見て戦闘解決ルーチンが処理する。
それと一緒。
>>656 の文面からでは敵機クラスが自機クラスを知っている(あるいは自機の識別子)と受け取ってしまうのだが俺だけだろうか。
ところでWorld::updateではif文中心になるの?
>>657 のダブルディスパッチの応用で上手くまとまりそうな気もするけど。
実際の現場のやり方は知らないけど、コマンドパターンでいいと思う struct command { virtual ~command(void) {}; virtual void operator () (Jiki &) {}; virtual void operator () (Tekki &) {}; } っていうファンクタベースを用意して struct add_speed : public command // 自機ならスピードアップ、敵機なら何もしない { void operator () (Jiki &e) {e.add_speed(m_val);}; private: int m_val; }; みたいなサブクラスを沢山作る 敵機やアイテムはサブクラスを生成して当たり判定と関連付けてフレームごとにどこかに登録して(ついでに空間分割とか) そんで弾や機体と衝突判定する代わりにこのコマンドと衝突判定して当たってたらダブルディスパッチで実行 例外的な挙動は自機・敵機クラスのサブクラスでポリもって解決する これでカプセル化されてて汎用的で拡張しやすい構造になる・・・と思う
>652じゃなけど @は短剣を投げた、 A. オークは3のダメージ B. スライムは3のダメージ @はポーションを投げた、 A. オークは3のダメージ B. スライムに当たって跳ね返った この「跳ね返った」の処理はポーションクラスが敵の種類を見て if文で特別な処理を実装すればいいのですか? それとももっとスマートな実装がありますか?
>>661 敵と弾のあたり判定とか、相互関係にある部分は?
そして誰がそのクラスを生成するの?
それ用のサブクラスを作りまくって具体的な実装をするなら、あまりにも密接な関係になるし
何より関数群作るのと効果がかわらん気がするのだが
ちょっと論点を絞ってみた。 キャラクタにはA,B,Cの三種類がある。 これらが他者と衝突した場合には、それぞれ異なる処理を行う。 例えば、AとBが衝突した場合、AにはBに設定された値分の点数を与え、Bには削除フラグを立てるなど。
>>663 当たり判定はそれ用の管理者クラスで
生成は任意のゲーム内要素が
ファンクタはインターフェースしか知らないから密接な関係にはならない
パラメータと処理をカプセル化して時間をおいた後でも使えるのが関数より便利(function、bind使うと良さがわかるとおもう)
>>664 そこがずれてるんではなくて、誰がどうやって管理しあうのかで意見が分かれてるだけ
統括的に管理する方法
・巨大なクラスになる
・拡張性が低い(何度も書き直すことになる)
ボリモー、ダブルディスパッチの方法
・上の方法よりは拡張性が高い
・全てのパターンをクラス化しなくてはならない
・このクラスを管理するクラスも作ることになるが、管理はまあ楽
普通に考えればどっちも合わせて使うかね
>>664 キャラクタを種類ごとにA,B,Cの3つに分ける。実装上はそれぞれの抽象クラスを作る。
各種類ごとに具体的な敵のクラスa,b,cを作る。それぞれA,B,Cから派生させておく。
A,B,Cについては衝突時の処理を全パターン書いておく。
新しいキャラクタdを追加しようとした際に、dの扱いがaと同じであればAを継承すれば済む。
今あるA,B,Cのどれにも当てはまらない挙動が必要ならば、新しくDを作って、
衝突の処理を書き足す。
STGなら自機、敵機、自弾、敵弾くらいの種類を作ればいいんじゃないかね。
ステージ上の障害物も必要かもしれんが、これは別の扱いをするのも手。
>>665 なるほどね
ただ、俺だったらスピード操作とかpublicな関数にしたくないから継承使うけど
More Effective C++ではmapとtype_info::name()で仮想関数をエミュレートして 多重ディスパッチする方法を紹介してるね
template使えば簡潔になるよ
>>669 テンプレートテクニックにも仮想関数テーブルの作成方法がのってたな
型消去つかったポリモーはオーバーヘッドのコストが仮想関数の3倍くらい多かった コンパイル時に頑張ってるのに実行時で遅くなるとかアホかと
アホがアホといった
>>667 その衝突時の処理は何処に書くかだよね。
各クラス内だとキャラクタの種類を増やしたときに全キャラクタクラスに追加するキャラクタに
対する処理を追加しないといけない。
出来るだけ既存のクラスには手を入れたくないよね。
衝突判定だけを別にしたクラスを作りそれをいろいろ派生させ、 敵クラスはその衝突判定クラスを持つというやり方もある
あるね。
ベタに書きゃいいのに。 なぜバグを仕込みたがるかね。
ベタに書くとあとでバグの元になるからじゃないの?
そのベタな書き方ってのを知らないだけじゃ?
1種類の判定方法ならベタでも全然行けるが 種類によって判定方法がいくつかあるのをどうするかって話じゃないの?
ベターって書くんでしょ
class Base { virtual void OnCollide(自分, 相手) = 0; }; class A : public Base { void OnCollide(自分, 相手){実装する.} }; class B : public Base { void OnCollide(自分, 相手)実装する{} }; if(AとBが衝突){
ポリモーフィズムがなぜ有効なのか語れる人間は実はあまりいない
if(AとBが衝突){ A->OnCollide(A, B); B->OnCollide(B,A); } みたいんじゃだめ?
そのifがどこのクラスにあってA/Bがどこにあるか聞いてるんじゃないの?
コリジョン管理クラスみたいのがあってそいつがやる Collision.Add(A); Collision.Add(B); Collison.Update() この中でif文→コールバックされる
それは
>>669 で挙げた本でもやってるよ。
暇なときにでも立ち読みするといい。
>>687 なるほど、Moreじゃない方しか持ってないんだよなあw
>>684 なんで引数に自分のアドレスわたしてるの?
ああ、いらないなあ。深く考えずに書いてしまった。
>>684 引数に相手が必要ってことは
関連しあうオブジェクトのクラスが動作に必要ってことだろ?
コンパイルするだけでもそいつ必要になんじゃん
切り出して単体テストできねーよ
あんまりうまくない設計だな
基本的にAとBの関連しあうものが存在するときは
それを包括するCが必ず必要になる
それはゲームによってシーンだったりステージだったり・・・
AにBを持たせるのもBにAを持たせるのもよくない
2つの関連するものがあるときは必ず別のクラスを用意すると綺麗にいく
覚えておくと便利だぞ
じゃあif(check_coll(A, B)) on_coll(A, B);のほうがいいのか
class Base { virtual void SetDamage(int) = 0; virtual int GetAttack() = 0; }; class A : public Base { void OnCollide(相手){ SetDamage(相手->GetAttack());.} }; みたいにすれば相手のこと知らなくてもいいんじゃない? (Baseを継承した何かとだけ知っている)
今してるのは何と何が衝突したかは分かるようにする前提の話だと思うけど 何かに当たってダメージがいくつ入るかだけ分かればいいなら、それでいいと思う シューティングとかね
一方ゲームプログラマーはCでさっさと実装した
iいろいろできると思うけどなあ class Base { virtual bool IsEnemy() = 0; }; class EnemyBase : public Base { bool IsEnemy() { return true; } } class EnemyA : public EnemyBase{} class EnemyB : public EnemyBase{} class A : public Base { void OnCollide(相手){ if(相手->IsEnemy()){ EnemyBase *e = static_cast<EnemyBase *>(相手); e->... } }; とかすればEnemyBaseは必要になってしまうけど、EnemyAなのかEnemyBなのかまでは知らなくて済む。
それぞれのクラスに、衝突用の型ID持たせて、 衝突判定用関数ポインタ入れた2次元マップから、 2つのオブジェクトの型IDで関数ポインタ取得してそれに突っ込むってのはだめ? 衝突用以外の用途にもそれ用の型ID持たせておけばいいような。 オブジェクト指向的には、用途ごとの基底抽象クラスを用意して、 複数継承するのかな? excelとかで管理しといて、コード生成とかさせておけば 継承構造とかなくても見通しはいいと思うなぁ。
ストラテジでええんちゃうのん
何難しく考えてんのお前ら こまけぇこたぁいいんだよ
>>696 EnemyCだけ特殊な処理したいときはIsEnemyCを用意するの?
>>693 そうやって無駄に回避することになんの意味があるの?
結局、その関数内でそいつの情報が必要なら
強制的にインターフェースを固定したところでそれはvoid*と変わらないじゃない
ようはそういう言語レベルの小手先の回避を言いたいんじゃなくて
動作に相手が必要になっちゃうその設計の糞さについて考えてほしいわけよ
ぶっちゃけカプセル化できてないじゃない
ちゃんと閉じた世界を構築しなきゃダメよ
>>701 同意
実はこの問題ってなんだかんだで上手い実装方法ないんだよな
だから面白いんだけど
ベースクラスはいるとしても、特殊な動作やインターフェースクラスを用意してやるのもいいかもしれない
struct EmemyInterface : public Enemy
{
// 毒操作
// collision用データを返すとか
};
c++ならテンプレート使ったらもっと汎用的にできる
ああ、継承はpublicじゃなくてprotected
全部グローバル変数の配列で、ifで比較しまくりでいいじゃん くらだんところで悩むとゲーム完成しないぞ
ある本じゃオブジェクト指向のカプセル化とは、可能な限り閉じたクラス化 privateなメンバ変数やfriendを使用しないクラス化を行うこととある 極力修正しなくていいように設計する そうすることで単体でテストも可能だし その作成したクラスをミドルなライブラリとして使い回しできる もし修正が必要になったら、直接修正するのではなく 継承先で処理を追加するようにしていく これだけでもかなり効率があがるし 凡ミスもかなり減る だからコピペ実装はしない
706 :
デフォルトの名無しさん :2010/03/19(金) 10:49:29
>>696 それじゃあ新しいキャラクタを追加するときに全キャラクタクラスを修正しなきゃいけないから駄目では?
インターフェースくらい使えよwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>707 だから小手先の技術についての話はしてないってば
あっちいってろばーか
インターフェイスは小手先の技術じゃなくて 重要な設計要素だろ。UMLにもあるぞ。
710 :
デフォルトの名無しさん :2010/03/20(土) 01:23:10
まさかインターフェースを挟まずに裸のまま使ってるのか? 面倒なことするなあ(笑)
711 :
デフォルトの名無しさん :2010/03/20(土) 01:23:52
簡単なゲームなら設計とかしない面倒
>>711 十二分に開発した経験があるならな
ないならスパゲティの出来上がり
根拠が「本に書いてあった」 お前が誤解してるだけじゃ
>>709 なんないよ
結局はそのクラスで抱え込むかどうか
インターフェースなんぞあろうがなかろうが設計の本質には微塵も影響しない
全部一人で作るなら結局同じことな気もする
つか、別にどんなに小規模でもUMLで懸命に設計する必要があるとかじゃないけどな。 JAVAで言うインターフェースが重要なんじゃなくて、仕様変更で入出力の設計を大幅に 変えなきゃいけないようなのはダメだし、頭の中だけでも拡張性を考えておくのは当然だな。
>>716 拡張性や汎用性なんか考えて組むのは素人
必要なものを必要なだけ組むのが真のプロ
>>717 それは工場のラインを支えてるような熟練工だな。
分野が違うんだろうけど、ゲームにおいてはそんなPGは長くやれない。
>>718 馬鹿じゃねぇの
もう10年近くPGやってんすけど?
納期残り1ヶ月、あ、このマップ2D→3Dにします
の変更を人生で3回ぐらい経験します他w
はっきりいうけど自分が想定してる範囲の仕様変更なんざ仕様変更に入らない
最小限で作る→仕様変更→関係部分の組んだコードは思い切ってすべて捨てる→新しく組む
のが絶対速い
ゲームってころころ仕様が変わるから拡張・変更に強い設計を心がけろ、みたいなことどっかで読んだ記憶があるんだが
俺15年選手だけどw同意。 XPって流行ったよね。あれなかったことにされてる気がする。
>>719 そりゃその方が速いさ。自分一人ならな。
どのような仕様変更がある可能性があって、それが他の人でも対応できるかどうかを
考えたら、そんな「俺様最強」なことは言えないよ。君は優秀なんだろうけど、あと10年
くらいやればわかると思うよ…
>>720 ・変化を抱擁せよ
・You Aren't Going to Need It(今必要なことだけ行う)。
という開発手法が存在する。
なんかインタフェースという単語が2つのレベルで使われてる気がするんだが。
一つは複数のオブジェクトの共通の性質という設計上の概念。
もう一つはC++やJavaなどで使う基底クラスとかの意味での(実装レベルの)インタフェース。
>>714 の言うように、実装レベルでどのようなインタフェースクラスを使うかは設計とは関係ない。
一方で、設計上オブジェクトがどのような共通の性質を持っているべきかを定義しておくことで
オブジェクトの責任範囲を明確化することができる。これは
>>709 の言うように重要な設計要素。
>>722 黙れ
上の例でもそうだけど
こんな1つのキャラを動作させるのに別のキャラのソースが必要みたいな
汚く粘ついたクラスなんて言語道断なんだよ
こういうのはいざ捨てるときに綺麗に捨てられない
カプセル化をやるなら極限までやれ
自機のクラスのメソッドの引数に敵のクラスなんてついてるようなのは設計うまくない変更に弱い
いざその敵捨てたときに全然関係ない自機までいじってるとか存在自体が邪魔なPG
>>719 俺もそう思う。
かっこいい仕様のインターフェース作るのは、
それを売りにしたライブラリ作ってる人ぐらいでいいと思う。
で、思い切って捨てるっていっても、本当にゴミ箱行きじゃなくて、
どっかに保存はしておいて、いずれ必要になったら参考にするっていう
再利用の仕方でもいいと思う。
設計も基礎研究も給料泥棒なのか効率化に貢献してるのかわからない
>>725 いや、その個別のケースについてどうこう言ってるわけではないんで気にしないでくれw
敵であるか自機であるか、ってのは本来ゲームプログラミングにおいて別のクラスにする
必要も無いわけだからw
まあ別にしてもいいけど、共通化されたオブジェクトを継承する形とかにしないと自機をCPUに
切り替えて眺めるなんてオプションも簡単に出来ないわけで…
729 :
デフォルトの名無しさん :2010/03/20(土) 02:18:06
熱いスレだな
結局「適切なレベルで抽象化された問題に固有のコードを書くのが一番」なんて 危なげない結論に落ち着きそうだな。 「適切なレベル」って言葉に全ての問題を押し込めただけなんだがw
自機や敵べったりにしないためにインターフェースかますんじゃないの?
どうきれいに作ろうが、面白くなければ糞ゲー 存在する価値なし
それを言っちゃあおしまいよ
ごもっともだがここはム板だ
>>731 君はJAVAプログラマーかも知れないが、じゃあそれをCでどう書くのってのも考えて置いた方が幅が出るよ。
>>730 その危なげない結論に至る過程で、みんな考えるんじゃないの?
同じ環境・スタッフでやってるわけじゃないから。
>>732 その通り。結果がすべて。だが、それを続けるためには、それだけではない。
俺の屍を越えて行け、ってやつ?w
>>735 > 君はJAVAプログラマーかも知れないが、じゃあそれをCでどう書くのってのも考えて置いた方が幅が出るよ。
今はC++使えばいいわけで、あんまり意味無い気がする。
>>736 Cと言ってる。古臭くてどうにかしろよ!とか言っても、パチスロ系やらキッズ向けとかの端末では、
C++じゃダメってのも、かなりあるみたいだよ。俺はその分野はやったこと無いけど。
まあ少なくとも、単一プラットフォーム(日本ではゲームコンソールが極端に発達したからね)で商売になるから
いいや、って時代は終わった。想定しうるすべてのプラットフォームを考えると、基礎的なライブラリをCで書いて
置くのが、一番融通が利くってのは皮肉な話だね…
どの言語の話か限定されていないからみんなの意見が平行線なんだな
世の中は進んでいるようでいていまだに携帯端末や組み込みなんかのC++の言語仕様にびっくりする テンプレートなんてそもそも動かないしなw 標準〜とか書いてあるもん大抵ダメだしw
>>737 > C++じゃダメってのも、かなりあるみたいだよ。俺はその分野はやったこと無いけど。
ねーよ。だって最悪 gcc で済むんだぜ?
糞コンパイラベンダを生き長らえさせるためにC縛りを強要されるってんなら
ご愁傷様としか言えないが、それが世間一般だと思われては困る。
>>740 俺は関係無いが、gccで何でも済むと思ってるのが間違いだし、それでIO周りが書けるなら、
世話ないだろw 悪いがキャリアのあるゲームPGとは間違っても思えないな。
糞コンパイラベンダでも何でもいいが、そんなのは君のオナニーであって、君の理想が何の
言語だか知らんが、その理想の言語でGPUプログラミングしたらいいんじゃねえの?w
test ♥
>>741 gccで何でも済むと思ってるのも間違いだし、Cしか使えないのが当然だと思ってるのも間違い。
グローバル使わんといろいろと面倒臭いんだよな 名前空間じゃ駄目?
台形とか星型とか閉じた図形の中にランダムでN個の点を発生させたいんですがどうやったらいいですか?
図形を含んだ正方形の点をランダムに発生させて その点が閉じた図形の中になかったら再発生させる。 これをN回繰り返す。
四角の中に点をN個ランダムに打って 図形にあわせて角を変形させる。 位置がいまいち?シラネ。
図形がシンプルなら逆関数法の方がいい
"三角形内のランダム点"ができれば、他のもできそうね。
>>747 >>748 >>749 >>750 みなさん素早いレスありがとうございます。
もう少し具体的に言うと、閉じた図形は辺で構成されていて、各頂点の座標は既知です。
最初は747さんのような方法をやろうと思ったのですが、一発でやる効率的な方法はないかと思いまして。
点をおきたい範囲の座標に対応した乱数テーブル作って、乱数で割り当てるじゃ駄目なの?
裏で同じ図形のビットマップを描画、たとえば白背景に黒い図形など 調べたい座標の色を取得 黒なら図形内 デメリット:裏の図形のメモリおよび描画のコストが掛かる
画像化なんかしないで、boolかビットフラグをwidth*heightが収まる分だけ用意すりゃいいじゃん
その用意した奴の中に図形の情報埋めるには 自前でPolyline+Fill、またはPolygonする処理を書く必要があるんじゃねーの?
このスレ 胸が暑くなるな
取りあえず考えてみた まず図形を三角形の集まりに分解する ランダムに図形内の点を選ぶ場合はまずそれらの三角形のどれかをランダムに選ぶ 選び方としてはそれぞれ等しい確率で選ぶか、あるいはその三角形の大きさに比例した割合で選ぶのもいいかもしれない 次にその三角形内のランダムな点を選ぶわけだが 仮にその三角形をOAB、ベクトルOA=a、OB=b、 三角形内の点をPとすると OP=s(1-t)a + stb ただし 0 ≦ s ≦ 1、0 ≦ t ≦ 1、 ゆえにランダムな点Pを求めるというのは s, t を 0 ≦ s ≦ 1、0 ≦ t ≦ 1 の範囲でランダムに決めるということに帰着できる
じゃあ次は曲線図形の場合を考えてください
>>719 インターフェースしっかりしとけば全部書き直す必要もない
君は実に馬鹿だなあ
曲線を小さな直線の集まりと近似すれば直線図形のやり方に帰着できる それが嫌なら大分複雑になる
まあ円とかなら曲線でも複雑にはならないけど 一部が円とかね
>>719 単純に背景描画を3Dにするだけなら楽じゃね?
インタラクションがあるなら手間かかると思うけどね。
矩形に適度な密度で点描→マスクつけてBlt ぴったりN個じゃなくてもいいならこれでいいんじゃね? コードが簡単にかけて、写像計算も棄却チェックも要らないからその分速いだろうし
>>757 素晴らしいですね!!ありがとうございます!!
>>763 ぴったりN個必要だったのでそれができなかったんです
凸包という縛りがないと三角形に分ける部分がやっかいにならない?
そもそも点だけ与えられて、凹の場合、形は一意に決まらないよ
順番があれば決まる
閉じた図形としか書いてないな、点と結ぶ順番が与えられているなら凹もありえるんじゃ?
凹も考慮するのは当然でしょ
2Dゲームって基本的にビルボードにスプライトなの?
>>772 そんなことない
なんでもできるじゃん
背景無駄に3Dで操作性だけ2Dとかあるじゃない
ソース書いてると 全体の構造がつかめなくなってきて 2重構造、3重構造なんてあたりまえで 4重構造とかになっていくんだけど どうやって、仕様把握してる?
どういうこと? 仕様を把握してるからソースを書いてるんじゃないの?
問題を分割するのは設計の基本
>>774 ゲームの仕様って、プログラム的な構造まで決める物じゃないでしょ?
プログラムの仕様ってなら、そんなの知らんw
お前さんの腕が無いんじゃね?
フリゲで月夜に響くノクターンみたいなRPGを作りたい。 でも知識ゼロ。 どこから覚えて言ったらいいだろう……? パソコン知識も豊富とは言えないんだ。
まずそのゲームが何で作られてるか調べたら?
RPGツクールで作られてるみたいだね。
別に凸でも凹にも関係なくできるのだが 直線の図形であればどんな形であれ三角形に分割できるだろ あと三角形内の密度に偏りが出るというけど Oを3つのなかからランダムで選ぶことである程度は解決できないだろうか
確かに数学的には三角形に分割できるけど、どんな形状でもきっちり重ならない三角形に分割するアルゴリズムが難しいんじゃねーの?
ああ、多分三角形の分割も計算で出そうということなのか それなら確かに凸の方が計算しやすいだろう でも俺が言いたいのは何でもかんでもプログラムで出す必要はないというわけ 別に三角形の分割位なんて自分で与えるのもそう難しいことじゃないから自分で与えればいいというわけ 大体どうとでも分割できるでしょ そこは自分で適当に与えましょうよ
そのスタンスはPGとしてどうなんだ
多角形の形が実行前にわかってるとは限らないだろ
逆に何でもプログラミングすればいいと思ってないか 自分で簡単にできることでもわざわざ手間暇かけてプログラミングするPGの方がどうかと思うよw >多角形の形が実行前にわかってるとは限らないだろ >各頂点の座標は既知
問題が1000問出されたらどうする? 楽するために苦労しようぜ
大体多角形も自分で与えるんだろ それをいくつか分割した三角形与えるのと似たようなもんだろw
描画する可能性の有る座標をデータにしておけば 実行時には乱数生成とデータ読み込みのコストしかかからない 俺は天才かもしれない
三角形への分割なんて凸も凹も関係ないと思うが。
>>791 どうやんの?
データは点の座標と順番だけでできるもんなのかな
>>789 例えば、
1000. // 問題数
10, // 問題0の頂点数
0, 0 // 頂点0
....
みたいなフォーマットで与えられたらアウトじゃね?
それはそれだけ自分で多角形を与えることが大変なのであって、プログラムとは無関係なのではw
いやここから手で三角形分割を1000問分やるんでしょ? 人間がやるんじゃ一旦絵にしてみないといけないだろうし
多角形作るにしても一旦絵にしてみないと分からないでしょ そっから適当に頂点繋げるだけでしょ あるいは適当な内点と頂点繋いだり 多角形1000個作るのと大差ないよ
DCCツールなどで作ったデータかもしれない。 自分の作ったものでも単なる数値の羅列になる可能性はある。
多角形を自動で生成するかもしれない
相変わらずレベル低い
すげーいいこと思いついた。 手で三角形分割するんなら、N個の点も手で打てばいいんだよw
ではレベルの高い解答お願いします
ここから先は有料になります
図形は手で与えるものだから N個の点はランダムで与えるものだから全く話が違うでしょw
ばかだなぁ パターンを網羅してランダムに一つ選ぶんだよ
多角形の中でも外でも気にせずにドット打ちゃいいんだよ n個とか気にしちゃいけないんだよ 文句言ってきたら殴れ
PGらしい回答ありがとうございます
馬鹿はあんただろw てめえが質問者じゃねえだろ 俺は質問者の意図を汲み取ってそれに対する答え出しただけで てめえの意図する質問に答えてんじゃねえんだよwww
馬 て 俺 て
鹿 め は め
結論 手で分割して、最後は殴る。
効率的なら素直に最初の方法でやったほうがいいなあ ピクセルでラスタライズ(だっけ)したときに、ピクセルシェーダでランダム点作成すればできないこともない
厳密な頂点データを作成できないから駄目だけどね
ピクセルシェーダで今自分が何個目の点かって分かる?
>>774 いってる意味がわからない
相互的に作用してるから何重構造とかいってんの?
>>815 ピクセルシェーダ自体で数えさせて取得すればいいじゃん
で、も一つのシェーダで描画
>>817 並列に動作しているから排他制御とかしてやらないとカウントできなくないかな?
ああ、N回描画してやればいいのか。
>>818 そんなに詳しくないからわからんが
一つのメッシュで一つのカウント格納先にすればいいんじゃないの?
同じようなカウントアップ処理作ったことあるけど
普通に個別にカウントしてたが、もしや処理系依存?
数えるピクセルシェーダやって
次にピクセル1000個なら最初の点は確率1/1000
つぎは1/999...とやってけばまあ理屈上は完全ランダムだ
さっきもいったが、厳密な座標データは作成できんがね
みなさんはゲームの仕様で上限が決まってるものはnewじゃなくて普通の配列使ってますか?
全てを囲むバウンディングボックスを作成して 中でランダム点、内包すれば次へってのは偏りがでるからな
>>820 ピクセルシェーダは並列に動いているから、全員で1つの格納先を排他制御しながらカウントアップするのができないんじゃないか
と思って。
>>821 静的確保と動的確保の違いがわかっていってんの?
>>823 ??
ポリゴンがいくつあろうと、格納先は一つでよくね?
シェーダではカウントアップするだけだし
格納先はプログラム側のデータなわけだし
もし2つメッシュを同時に描画するなら、カウントアップの格納先は2つにすればよくね?
何を疑問にしてるのか具体的にいってもらえないか?
ゲームの仕様で上限決めなくていいものってどんなものがあるの?
>>825 ピクセルシェーダの格納先ってテクスチャしか無理じゃないかと思ったが、
GPGPUならできるか。
PCやネットゲーなら上限可変の仕様はあるな。 想定上限は決める必要があるが。
>>828 いや、シェーダ自体にもたせるんじゃなくて
ハンドル通してC++側なりで保持しろっていってんだが
探って旅を続けよう 月が昇れば口笛吹いて 次の冒険夢見よう
全部のシェーダが同じカウンタに読み書きするときに同期しないといけないから
シェーダで並列処理する旨みがなくなるな。
シェーダごとにカウンタを用意して最後にカウンタを合計するのがいい。
だが、そもそも三角分割が求められてないと重複しないように塗りつぶすことができない。
三角分割はできるが実装が面倒。
二次元の多角形の内外判定は簡単にできるから
>>747 の方法が一番簡単だろうな
836 :
835 :2010/03/21(日) 12:06:39
なんか1行目が滅茶苦茶になってしまった。 「全部のシェーダが同じカウンタに読み書きすると、読み書きする度に同期しないといけないから」 ということで。
一々内外判定する位なら
>>757 の方が手っ取り早くね
図形を三角形の集まりに分解するというのが面倒でな。
Triangulationは計算機幾何学とかいう分野で研究されてて
アルゴリズムも確立されてるんだが実装がとても面倒くさい。
最初から三角分割済みのデータがあるならいいんだが。
(
>>757 の方法だと三角の中での確率密度が偏ってるが)
>>757 後半は OA,OB に比率を掛けるから偏るんであって、
直交する 底辺,垂線 に比率を掛ければ偏らないのよ。
よしできた! 図形の総ドット数を数え一次元と考えて配列を作り その個数を上限とした重ならない値のランダムな位置を作りフラグを立て それに従い点を貼る これなら問題無いかな?
内外判定って簡単に言うけど ・図形を三角形に分割して各三角形に対し内外判定 ・図形のビットマップマスクを使って判定 くらいしか思いつかないからそれに準じた処理しかないと思う。
そもそも内外判定どうやってやるの?
俺も757のほうが簡単だと思うな 内外判定 typedef complex<double> C; double cross(const C&a,const C&b){return a.real()*b.imag()-a.imag()*b.real();} vector<C> v;//入力 bool inside(vector<C>&v,C p){ int dir=cross(v[1]-p,v[0]-p)>=0?1:-1; for(int i=1;i<v.size();++i){if((cross(v[i]-p,v[i-1]-p))>=0?-1:1)!=dir)return false;} if((cross(v[0]-p,v[v.size()-1]-p)>=0?1:-1)!=dir)return false;return true; }
調べたい点を通る直線を引いて、直線と図形との交点を求めて、交点をソートして、何番目と何番目の間に点があるか調べて、その何番目ってのが偶数か奇数かで判断する
え?それって内外積使った判定より速いの?
速くないけどいろんな図形に使える
いや、三角形分割でもいろいろな図形に使えるし形不変なら分割は事前処理ですむ。 でも直線は任意に取れるから軸平行に取れば意外と計算・判定少ないか?
全頂点がわかってるなら、それらのベクトルの係数合計が1になるような線形和じゃだめだろうか
見積もれないプログラマー
なかなかメシウマなんだがこのサイトのやってることって違法じゃねーのか
見積もれないってことはその仕事はやれないってことだよね
また株式会社ロマンシングか?
素敵なサムシングにゅ
三角形分割とか基本的なことで躓くのってどうよ? せっかく計算機科学の第二版がでたから線分とか面とかに関わっちゃうゲームプログラマは読みこなしておくのがいいんじゃないの?
でもまあ計算機科学に精通してる奴ができるゲームプログラマーってわけじゃないんだよね
計算幾何学?
>>857 つーか、三角形分割の章はネットで公開されてるだろ。
基本情報技術者資格とかって持ってたほうがいいの?
ゲーム開発には別にいりませんが 余裕で取れる程度のスキルは持ってください
やっぱ業界では当たり前のレベルなのか・・・ じゃあとりあえず資格をとってからアルバイト探すか
いやだから別に持ってなくてもいいよ
資格手当払いたくないんですね 分かります
資格手当てが出るような資格じゃないだろ
869 :
デフォルトの名無しさん :2010/03/23(火) 21:31:50
ゲームプログラミングセンス 1級 ゲームプログラミングテクニックライセンス 準1級 ゲームクリエイターズスキル 1級
870 :
デフォルトの名無しさん :2010/03/23(火) 22:55:13
A16B16G16R16Fなど不動小数点数のカラーバッファから 輝度を抽出するのにはどうしたらいいでしょうか? [+0.2125f, +0.7154f, +0.0721f]との内積では崩れるんです。
色はABGRの4チャンネルなのに輝度の方向ベクトルは3次元なの?
Aは透明度なので計算からは除きます。
崩れるの意味もよく分からんが、 とりあえずバッファから読もうとしてる値が読めてるか確認してみればいいんじゃね?
教えないくっくっくっ
>>873 [+0.2125f, +0.7154f, +0.0721f]との内積で輝度を求める方法は
やってみたらそれっぽくなった的な、結構適当なもので
多分RGBがそれぞれ1.0以内で有効なのだと思います。
浮動小数点カラーは1.0以上になりうるので、うまくいかないんだと
考えています。(10.0とかにすると黄色っぽくなるような?)
代わる良い方法はないかと探しています。
浮動小数カラーって0から1で表現するんじゃなかったっけ? たいてい輝度の変換には Y = 0.299 * R + 0.587 * G + 0.114 * B の式を使う。 RGBチャンネルと輝度のとりうる値の範囲が同じなら 8bitカラーだろうと16bitカラーだろうと浮動小数だろうと同じ式でいい。
トーンマップとHDRでググれ
フレームレートに合わせて行うのは描画と更新、どっち?
更新
描画じゃね? これは俺もわからん
flipっしょ
ふりっぷ?
ふぃりっぷ?
ふぃりっぷす?
ふぃりっぷもりす?
>>880 フレームレートとは画面書き換え頻度のこと。
レースゲームのフォルツァのように、フレームレート以上の頻度で更新しても構わない。
逆に更新時間が予定フレームレートに間に合わない時は、描画しても前回と同じ絵を描くことになるのでフレーム落ち確定。
更新時間は大丈夫だけど描画時間が予定フレームレートに間に合わない時は、処理落ちさせるかどうかということになる。
させない場合、ティアリングをさせるかどうかという話になる。
更新時間と描画時間は、それぞれ平行に実行できる場合の話。
コンシューマ機では普通だけど、DirectX では描画スレッドを別に立てた時の話になる。
ゲーム上必要な自機クラスや敵クラスの生成なんかを統括的に管理するクラスは必ず必要ですよね そう言った生成や管理を担当するクラスはシングルトンとかにしちゃうと どこからでもアクセス出来るグローバル変数を作りまくってることになりますよね これってあまりよくないかと思うのですが 他に解決する方法はありますか?
>>889 >ゲーム上必要な自機クラスや敵クラスの生成なんかを統括的に管理するクラスは必ず必要ですよね
別に
>>890 分けたとしても、どこかで生成クラスを実行するクラスが必要になりませんか?
シングルトンでどこからでもget関数呼べるのは便利なんですが 衝突判定とかで他のクラスの情報がほしい場合 その統括して管理しているクラスから 敵クラスなりの情報を取得しないといけないし だからと言ってこのままで良い物なのかも疑問なんですよね 解決策も思いつきませんし
>>891 シーンクラスに全部おいとけばいいじゃん
>>893 統括的に管理するクラスのことですよね
巨大クラスになるじゃないですか
だからと言ってシングルトンで分けるのもどうかと思ってるんです
ちょっとまてや 生成を統括するクラスを作る必要はないだろ シーンクラスに直接おけばいいんじゃないの?
>>894 なるよ
実際なるんだからしょうがない
ここは認めないとダメだ
でもシングルトンなんて使う必要ないじゃん
直接シーンクラスにおけばいいじゃん
自機:1、敵:30種xN体、弾:30種xN個・・・
全部普通に書けばいいじゃん
統括なんてしないよ
JIKI jiki;
TEKI_A tekia[MAXTEKI_A];
TEKI_B tekib[MAXTEKI_B];
TEKI_C
・
・
・
TAMA_A tamaa[MAXTAMA_A];
以下略
って普通にかけばいいじゃん
>>895 すみません
もう少し詳しく教えていただけませんか?
シーンクラスで敵や背景の生成なんかをnewしながらシーンを繋げるということですか?
そうなると、そのシーンクラスを取得し、敵クラスと情報を取得できないと
衝突判定を独立させられませんよね
>>896 そこに疑問を感じてるんです
そこで生成するクラスを上手くまとめても
直に管理してるのって何か嫌だと思ってるんです
仕方ないんですかね
以下の3パターンってメモリとかパフォーマンスとかどう違う? どれのほうがゲーム向き? ●1 String[] namelist={"ゴブリン","ドラキュラ",....,"サタン"}; ●2 String namelist(int index) { switch (index) { case 0: return "ゴブリン"; case 1: return "ドラキュラ"; .... case 30: return "サタン"; default: return null; }} ●3 String namelist(int index) { String[] list={"ゴブリン","ドラキュラ",....,"サタン"}; return list[index]; }
>>899 どれも微妙くないか
追加するとき手加えないといかんよ
>>898 まとめる必要が無い。
まとめたクラスを使う側がいるだろ?
そいつは何を生成するか分かってて呼ぶんだろ?
なら直接呼べばよい。
その生成ルーチンを必要としているのはひと握りなので、そいつらにだけ便利に作ればよい。可能なら他から見えないともっと良い。
>>899 3が良い。
例えばユーザー定義モンスターの追加とかの時に、呼び出し側を変える必要が無い。
>>901 なるほど
ここらへんは仕方ないみたいですね
詳しい説明ありがとうございました
class Stage { public: void update(void) { user->update(); for_each(mobs, Update()); } private: User *user; list<Mob *> mobs; }; //--- manager { public: void update(void) { user->update(); for_each(mobs, Update()); } private: User *user; list<Mob *> mobs; } Stage { public: void update(void) { manager.update(); } private: Manager manager; }; どっちでもいいんじゃない 後でいろいろ付け足していくんなら下がいいと思う
~Managerというクラスを設計した場合、設計を疑えという話しがあるけど 作っちゃうよね
>>903 形は少し違いますが、現在下みたいな管理方法を取ってます
他にディスパッチできる所を作って見ます
ありがとうございました
>>904 マネージャクラスたくさんあるんですが…
いけないんですか??
クラスの役割分担を考えるのを放棄した証拠
908 :
899 :2010/03/24(水) 21:14:58
>>906 あくまで同一クラスのインスタンスを管理するサブルーチン的なもんならいいけど
そこに数種類のクラスをぶち込んで〜っていうのはいやなにおいがするね
極端な話、GameManagerっていうクラスを作って その中にゲームの全てのコードを詰め込んだって「ゲーム管理」には違いないわな
EntityManagerとか使っちゃうがダメなのか 読み込んだステージデータをもとに mana.registerEnemy(Enemy *p); とかでゲームに登録して、さらにpにmanaへのポインタか参照を持たせる pがゲームの状況(たとえばプレイヤーの情報)を知りたければ pmana->getPlayerInfo(void); として返されたプロクシを使って作業する(直接playerの参照を返すことは避ける) 弾丸を打ちたければ Enemy::shot(param pa){ pmana->registerEnemyBullet(bullet::create(pa)); } みたいな感じで 循環参照にさえ気をつければ、今のところ別に変な問題も起こってないけど・・・なにがだめなのかなぁ
>>911 それって使う側はたまったもんじゃないからやめてほしいんだよね
仮に敵A〜Zまでいる状態で敵Gだけほしいときって考えたときに アクセス方法が悪夢にしか見えない
ゲームが面白ければどうでもいい
まぁたぶん使う側も本人だろうからいいんじゃね
なんだと
>>913 G型のオブジェクトを検索してイテレータを返すメソッドをマネージャーに持たせればいいだけでは?
G型だけじゃなくてもテンプレート使えば簡単に実装できるよね
マネージャーがなくてもG型を検索するサブルーチンなりなんなりは
どうせ書くはめになるんだからマネージャーに一任させてしまった方が安全でわかりやすくていいと思うけど
右手座標系、左手座標系の利点ってなに?
上手や下手は基準にならないから
相変わらずレベルが低くて安心した
>>918 >マネージャーがなくてもG型を検索するサブルーチンなりなんなりは
なんねーよ
俺は
>>896 方式だもん
だいたいその検索すりゃいいやってそこしか見えてないからそういうんだろ
更新順番が違うとかここだけは引数から渡さないと問題多すぎて対処しきれないんだよ
生成したばかりのオブジェクトは引っかからないとか更新状態が一つ遅いとか
そういう目に見えにくい不具合を全部こっちに押し付けるから
マネージャ作る奴って嫌いなんだよ俺は
同じフレームで生成した敵オブジェクトは帰ってこないとか頻繁にあるだろ?
一番大事なのは協調性。 お前らにチーム開発は無理。
まともなソースを出してから、えらそうなことを言え。
やーだー
このスレにまともなソース出せる奴なんか一人もいないだろうに
>>910 まあそれは極端だが、その方がバグ取りが早かったりするのは皮肉だw
食卓用ソースのリンク貼るネタって、10年前くらいからあったよな…
933 :
デフォルトの名無しさん :2010/03/25(木) 03:18:39
理系学生
>>919 ひとつは慣れ。一つはアーティストが使うツールとの整合性。
PS1 やサターンの頃は、スクリーン座標を[-1..1]ではなくフレームバッファサイズになるようにしていた。
その時、中学で習ったのとは反対に、スクリーン座標の下が + になるのが都合が良かった。
その名残りだったりもする。
アーティストじゃなくてデザイナってゆうなぁ
>>919 単に習慣として決まっているだけなので、特に深い理由はない。
右手系を使うのと、左手系で使うのがどっちがいいかというと、正直どっちでもいいと思う。
変換も単にz座標に-1を掛けるとか、その程度の話なので使いやすい方を使えばいい。
ただ、混在させるのは良くないので、通常はどっちを使うかははっきり決めないとダメ。
938 :
デフォルトの名無しさん :2010/03/25(木) 14:08:49
ブロック崩しムズイんだけど・・・どこが初心者向きなんだよw ボールの速度が速いとブロックやバーを飛び越えちゃうし 衝突後の跳ね返りも違和感ありまくりで不気味な動きに見えちゃうし ナニコレwwww テトリスのほうがまだ簡単じゃねえかよwww orz
だから飛び越える処理は、 pos.y -= idouryou; じゃなくて、 for(int i=0; i<idouryou; i++) { pos.y--; if(atari()) break; } しろといってるだろ
なん・・・だと・・・!?
何その力押し
if(speed.y < 0){ idouryou = - speed.y; step = -1; }else{ idouryou = speed.y; step = 1; } for(int i = 0; i < idouryou; y++){ pos.y += step; if(atari()){ atatta = true; break; } } if(atatta){ speed.y *= -1; atatta_toki_no_shori(); } とかいう感じでも。
流石・・・プロのテクニックだぜ・・・俺には想像もつかなかったようなハイレベル・・・
え?
それでいいと思うし
ここでわざわざする質問でもないな
ググればブロック崩しのソースコードくらい出てくるだろ
>>938 ggrks
他人のソースのコピーだけじゃ、見つからなかった場合にどうしようもなくなる。
プログラミング初心者向けのゲームなんだから ググれば作り方くらい紹介してるサイトとかたくさんあんだろ
オブジェクト指向的に言えば Class Ball Class Block Class Bar こうなる
クラスよりインターフェースにしたほうが良いのでは? ボールが貫通弾になったり ブロックだって壊れないのとか2〜3発目で壊れたりするのがあったり バーも伸びたり縮んだり分裂したりとか
(;´Д`) ・・・・・・・
ようはボールもバーもボロックもわざわざクラス作ってやるほどのもんでもねえってことよ
なんて親切な2chなんだ。。俺が2chに入門したころは向いてないから諦めろと言われて終わりだったぞ。。
春休みだからな
インターフェースにしないとポリモれないの?
ずっとここは素人に嘘を教え込むスレだと思っていた
ゲームって一般的なセオリーが通じないことが結構多くいよね で、ゲームプログラマって今までやってきた方法が正当だと勘違いしてるから他のジャンルで仕事するとすごいウザがられる
うん、そうだね。多くいよね。
959 :
デフォルトの名無しさん :2010/03/25(木) 15:38:07
初心者ならあまりボールの速度を速くしないってのも手だな 速度速くするのは初心者脱してからでもいいかも 俺なら軌道の交差判定行うけどな
バーが無いと仮定した場合に移動する際の軌道上にバーがあれば 跳ね返せばいいだけっしょ?
じゃあ具体的にソースコードを書いてみようか
バーはともかくブロックとも同じような判定が必要だと考えると面倒くさいな
初心者だから簡単なものから始めるという名目で始めるんだから わざわざボール速くして難しくするのは意味ないと思うのだが
>>965 まあ、色々試しながら成長するもんだし
そこら辺はわかってるしょ
何も俺らだって達人なわけでもなし、気長に勉強していけばいいさ
ブロック崩しは難易度高いよ プロでも数学嫌いな人は作れない 特にブロックの角に当たって綺麗に跳ね返るようにするには 移動前、移動後の2点を始点終点にした線分と壁との2直線の交点の計算が必要になる まあ、それだけなんだけどねw
>>968 どうせなら、バーに玉が当たった時のバーの速度も考慮しようよ。
アルカノイドですら、それなりにやってることだ。
球体(円)と角の衝突ってけっこうめんどくさくねーか 接触した位置を計算してその位置の法線ベクトルだけ反転させるのかな
本家は数キロバイトで実装したであろうのに
3Dだと何でも面倒くさいよ 内積、外積、クォータニオン、何でも自由自在に使えるようになるまで頑張らないと
>>968 >>970 頭固い連中ばっかだな
単にX方向移動量そのまま
Y方向移動量そのままで反転 だけじゃねーか
移動量・角度変化は+αしてるだけ
974 :
デフォルトの名無しさん :2010/03/26(金) 12:11:10
完全弾性衝突・・・だと・・・?
跳ね返り係数 e = 1.0 です 運動量も運動エネルギーも位置エネルギーも保存されます。
保存されないと、そのうちに弾が止まっちゃう いや、それはそれで面白いゲームになるのかも分からんが
なんか重力が影響してるブロックゲームあったな、フリゲで あれ面白かった
>>973 高校出てる?
完全弾性衝突で変形はしないとしても円と角との衝突は突入角度や位置によって力積の大きさも方向も変わるだろ
どう考えたらx,yを反転させるだけなんて答えが出るんだよ
別に
>>973 のような単純なやり方してる奴もいるだろ、市販ならともかく
てか突っ込みどころはそこじゃないw
たまに回転(角速度)つけたら面白そうだな
ブロックが壊れるとき、ちょうど1になる力が働くんだよ ブロックによっては加速したり減速したりするんだよ
まあ円も思い切って正方形と見做してやるというやり方もありかも 初心者ならそれもありじゃね てかシューティングのが簡単じゃね
オブジェクト指向ならな
たかがブロック崩しにおまえら熱いな。パッション
何でもかんでもオブジェクト指向じゃないと作れないと思ってるだろ
ユニットとか細かいところはオブジェクト、大まかな流れは非オブジェクトのほうがやりやすい
そらオブジェクト指向の練習台には有効だろう だがそれすら知らない全くの初心者がオブジェクト指向使わないから作れないというわけでもなかろうて
989 :
デフォルトの名無しさん :2010/03/26(金) 12:55:10
学生増えすぎだろおおおおおおおおおおおおおお
そういやサーカスっていう、シーソーで風船を割るブロック崩しの派生があったな
春休みに学生が2chやって悪いかよ糞ニート
高速で突き抜けるのは
>>973 のやり方でも発生する問題だしな。
社会人って平日の午前から昼間でのんきに2chできるもんなの?
不景気で仕事がない。このオフィス内でヒマしてる社員がほとんど
>>995 暇なら外回れYO
営業いけ営業
俺は死ぬほど忙しいわ!
給料少ないくせしてふざくるな!!!!
営業担当の部署じゃないもんで
1000なら毎日が日曜日
1000 :
パイ ◆3.14/ZiLFY :2010/03/26(金) 14:53:51
1000なら一生ニート
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。