みんなでゲーム作ろうかPart2 〜 METALとかで
■ このスレッドは過去ログ倉庫に格納されています
0001名称未設定
03/06/15 10:12ID:mpwUgOu/共同制作、メンボスレだったのが次第にみんなの発表、相談スレに。
ちょっくら主旨は変わったものの活気があるのはいいことだ。
参加は自由、関連リンクは>>2-5辺りに。
じゃ、みんなでゲーム作ろうか。
0080名称未設定
03/08/23 02:33ID:I/0J35oJ0081名称未設定
03/08/23 08:15ID:Qgb3UbN4classicが好きなもんで・・・。
>>79
一応一週間で一通り目を通しました。
ポインター以降は厳しかったですが・・・。
0082名称未設定
03/08/23 14:53ID:2HmX6VJQうぅーん、一週間ですかぁ。
実際にコード書いて、自分なりに
色々実験してみた?
ポインタやら構造体は自分の言葉で
理解してなきゃダメだよ。
Carbonやるんだったらポインタとか
構造体が山ほど出くるしね。
データ構造や、アルゴリズムも基本的な所は
しっかり理解してからでも遅く無いと思うよ。
ここで急いじゃうと後で苦しい思いをするから。
急がば回れ、もう少し勉強してみようよ。
参考 (探せばもっと分かりやすいページがあるかもしれない):
ttp://www1.cts.ne.jp/~clab/index.html
ttp://www1.cts.ne.jp/~clab/algorithm/algorithm.html
0083名称未設定
03/08/23 19:14ID:Qgb3UbN4この手のページやら本やらは、Macネイティブなものって中々ないですね・・・。
0084名称未設定
03/08/23 20:27ID:UI5x5McC008581
03/08/24 00:07ID:07pALD0t言いたくないけど、マカーってなんでこうその世界に
長く居るだけで増長しちゃうかな。。。
おまいにも右も左もわからん時期はあっただろ、おー?
初心忘れるな馬鹿!!>>84
008781
03/08/24 12:42ID:fOCcnl95雰囲気悪くしてるドザーなのかな。
スレ違いなので以後レス不要
0088名称未設定
03/08/24 13:46ID:Y74jDtAP0090名称未設定
03/08/24 21:34ID:En7axW5W0092名称未設定
03/08/24 22:00ID:LdmAws0j0093前スレ454
03/08/26 00:51ID:FDlFJSSIスマソ、ちょっと待って。
やっぱり出来そうだから。
0095$BA0%9%l(B454
03/08/31 20:32ID:00Wrl9s3homepage.mac.com/holythunderforce
$BLLE]$J$N$G%=!<%9$G@bL@!#(B
$B$^$:%^%C%W%V%m%C%/$N%=!<%H$N$?$a$NHf3S4X?t(B
qsort$B$N0z?t$K$J$k$d$D$M!#(B
int comp(const void *lh, const void *rh){
$B!!(BcellSt *lhs = (cellSt *)lh;
$B!!(BcellSt *rhs = (cellSt *)rh;
$B!!(Bif(lhs->work == 0x7fffffff) return 1;
$B!!(Bif(rhs->work == 0x7fffffff) return -1;
$B!!(Bif(lhs->work - rhs->work != 0) return lhs->work - rhs->work;
$B!!(Bif(lhs->z - rhs->z != 0) return lhs->z - rhs->z;
$B!!(Breturn lhs->x - rhs->x;
}
0x7fffffff$B$C$F$N$OI=<($7$J$$%V%m%C%/$r=|30$9$k$?$a$N=hM}!#(B
work$B$O(Bx+y+z
0096前スレ 454
03/08/31 20:43ID:00Wrl9s3safari
マップブロックのソート:qsortの引数
static int comp(const void *lh, const void *rh){
cellSt *lhs = (cellSt *)lh;
cellSt *rhs = (cellSt *)rh;
if(lhs->work == 0x7fffffff) return 1;
if(rhs->work == 0x7fffffff) return -1;
if(lhs->work - rhs->work != 0) return lhs->work - rhs->work;
if(lhs->z - rhs->z != 0) return lhs->z - rhs->z;
return lhs->x - rhs->x;
}
0x7fffffffは表示しないブロック除外処理
workはx+y+z
0097前スレ454
03/08/31 20:47ID:00Wrl9s3obj->work = x + E_LENGTH/2 - x % E_LENGTH +
y + E_LENGTH/2 - y % E_LENGTH +
z + E_LENGTH/2 - z % E_LENGTH;
obj->px = 640/2-2*E_LENGTH + 2*(obj->x - obj->y);
obj->py = 480/2 + E_LENGTH + obj->x + obj->y - 2*obj->z;
drawObjNode *temp, *last=NULL;
for(temp = map->first; temp != NULL; temp = temp->next){
if(temp->work >= obj->work && temp->py > obj->py){
obj->next = temp;
if(last) last->next = obj;
else map->first = obj;
break;
}
last = temp;
}
if(temp == NULL){
last->next = obj;
obj->next = NULL;
}
アプリ↓
homepage.mac.com/holythunderforce
0098名称未設定
03/09/01 22:58ID:sZQjig/7Z軸まで考えるとOpenGLの方が楽だと思ってしまうのだが、、、
キャラはbillboard使って2Dで表示すればいいのでは。
0099前スレ454
03/09/02 00:38ID:aa7Qf/ok漏れのマッスィーンはOS Xのローエンド、G3 DT 233なのだ。
なので、変態的手作業最適化もしてるしね。
OpenGLだと逆に遅くなる。ソフトでやってんのか?ってくらい。
あ、ちなみに上のアプリだけど、矢印キーで前後左右、z、xキーで上下、
command-qで終了。
0100名称未設定
03/09/02 01:28ID:ix1pvnDzもっ、もっ、もっ、萌ぇ。
0101前スレ454
03/09/14 03:23ID:4Oinif0Mもう、疲れた。誰か具体的にどうすればいいかわかる人いない?
0102名称未設定
03/09/14 17:20ID:C6Geeuhk0103前スレ454
03/09/17 02:20ID:LI4qCpU5ttp://homepage.mac.com/holythunderforce/index.html
誰かわかる人いない?
010477
03/09/17 22:09ID:AzDdhpr6前スレでもできないはずはないと主張した者です。
イメージ1で描画順がC→B→Aであればいいわけですよね。
前スレ454さんは下のようにブロックが並んでいる場合
□□□ (右上が視点。モニタの右上に目を持ってきていると考えてほしい)
□□□
□□□
次のように描画することしか考えていないのでは?
789 (1→9の順に描画)
456
123
僕はこうすれば大丈夫だと考えています。
689 (視点に近いほど手前にある=後から描画する)
357
124
前スレ454さんは鉛直方向だけでなく、水平方向にも斜めなので
難しいとは思いますが、絶対にできるはずです。
010577
03/09/17 22:45ID:AzDdhpr6わかりやすいですかね。
010677
03/09/17 23:50ID:AzDdhpr6ttp://www012.upp.so-net.ne.jp/ToT/stack/block.lzh
ついでにHyperCard2.2Lite
ttp://www.apple.co.jp/ftp-info/reference/hypercard2.2litej.html
0108前スレ454
03/09/18 02:58ID:4R6VDXdC報告してなかったらスマソ。実はその描画順すでに試してます。
結果は駄目でした。何をもって視点に近いかの判断ができなかった。
一辺の半分の長さで割って余るときは、その半分の長さの飽和加算する
とか、もういーろいろ試してみたんだけどね。
ちなみに77たんのスタックではx+y+zをソートの対象としてるよね。
初期状態(真ん中のブロックが動く状態)から移動量を2にして、
左上矢印を一回、左下矢印を一回クリックしてもらうとわかるんだけど、
灰色ブロックがオレンジ色ブロックの下にあるにも関わらず、
灰色ブロックが後に描画されるために、オレンジ色のブロックが一部欠けるよ。
010977
03/09/18 08:04ID:CLJeyAOOちょっと状態が分からないのですが、
物には厚みがあるのを無視しているための限界なら、
どうしようもないと思われ。
ブロックが一部重なった状態はうまく表現できないです。
011277
03/09/18 22:26ID:CLJeyAOOブロックの距離がX方向に2ブロック移動しても前後関係が
変わってはいけない場合がある。しかし、そのときにYとZ方向に
少しだけ動かすと前後関係が変わらなければならない。
このような条件のため、単純なソートで解決するのは不可能である。
ブロックはX,Y,Z方向とも1の直方体として、ブロック同士は重ならない
と仮定すれば、あるブロックがX,Y,Zの各方向のいずれかで他のブロック
と1以上離れている場合、他の方向に関係なく前後関係を確定できる。
重なった場合はそもそも不可能なので、これでどうでしょうか?
0114前スレ454
03/09/19 01:01ID:sTodlfHeふふふ。半端な位置にあるブロックによって、もともとの順番が
入れ替わるってのをやっと理解する人が現れた気がするな。
ね、難しいでしょう。
ちなみに113のスタックだと
1.重なってなくても、接しているとおかしい
2.接してなくてもおかしいことがある
右下6回 上3回 右上6回 左上1回
0116名称未設定
03/09/19 12:47ID:l0U5gHHh1つのブロックを構成している3つの面を
バラバラに扱えばどうだろう。
0117名称未設定
03/09/19 15:15ID:l0U5gHHh0118名称未設定
03/09/19 16:03ID:l0U5gHHh各ブロックの左奥面、右奥面、下面に接しているブロックのリストを作り、
それらが全部描画されていればそのブロックを描画して良い、
というルールにするとどうなるだろう。
イメージ1の場合
ブロック 左奥 右奥 下面
A B − −
B D − −
C − − D
D − − −
イメージ2の場合
ブロック 左奥 右奥 下面
A B − −
B D,C − −
C − − D
D − − −
イメージ1の場合、
ブロックのリストをスキャンして、
何もマークされていないDがまず描画される。
Dに完了マークをつけると、次のスキャンでCが描画可能になる。
こんな風にして接触しているブロックなら順次描画できるのでは?
ただブロックがいくつかのグループに分裂していた場合はちょっと困るな。
いじわるに回り込んで連結してる場合もあるだろうし。
0119名称未設定
03/09/19 16:33ID:l0U5gHHh匚 という形になってて先に L を描いてから後ろの  ̄ を描くケースが出てくる)
012077
03/09/20 00:31ID:wytCGIuOあるブロック2つに着目して、2つのブロックの中心を
結ぶベクトルと、視線方向の単位ベクトルとの内積を
とって…。分からん…。
012177
03/09/20 01:46ID:wytCGIuO僕の言っていたことは間違いでしたごめんなさい。
>>116の方法が解決策かもしれない。
0122名称未設定
03/09/20 14:59ID:HmmMtVkT奥行き(てゆーか手前度)は
x√6/4+y√6/4+z/2
でソートすれば良いと思われ。
012377
03/09/20 15:55ID:+iRdMqeEむしろ、Z方向の重みを増したほうが良くなるように思います。
0124名称未設定
03/09/20 16:15ID:0Sbb2/bEソートの式は見下ろし45度と考えて(x+y+z)/sqr(3)が奥行きだから106のハイパーカードの式であってると思う。
(定数sqr(3)を省略してるだけ)
0125名称未設定
03/09/20 19:18ID:HmmMtVkT0.5ずつずらしてソートとか。
0126名称未設定
03/09/21 01:35ID:wqnHwCXEこれってそうとう根の深い問題なのではw
0127名称未設定
03/09/21 02:27ID:iXW+sXyyBSP Treeの説明はGoogleで「Binary Space Partition」を検索して
最初にヒットしたページ(Introduction to BinarySpacePartition Trees)を見ればいいかな。
BSP Treeは2分木で、各ノード(節)に面が登録される。
左側の枝はそのノードの面よりも手前、右側の枝はその面よりも奥にある、という風になっている。
面の登録はツリーの一番上から比較を開始して、
その面よりも手前にあれば左の枝、奥なら右の枝を降りて行く。
各ノードごとに比較をくり返し、枝の先が空席になっていればそこに面を登録する。
描画する時は(1)右側のブランチ(2)自分自身(3)左側のブランチという順で描画する。
もし各ボックスの位置が固定されているならばツリーは最初に一回作成するだけで良い。
ボックスを移動するならツリーから対応する面を一旦削除し、移動後の面を再登録する。
ボックスが中途半端な位置にある場合、それより下の枝に来る面は2つの面に分割する必要が出てくるかも知れない。
半端な位置にある面はなるべく最後に登録するとよいと思う。
面の情報には4点の座標の他に、ボックスの上面/左側面/右側面の別を付加しておく。
面の手前/奥の判断で、ノードの面が上面ならz座標を
左側面ならx座標を、右側面ならy座標を、比較すればよい。
0128127
03/09/21 02:47ID:iXW+sXyy実際に使ったことがないので推測で書いたんだが、
中途のノードを削除した場合どうなるかちょっとよくわからない。
0129127
03/09/21 10:13ID:iXW+sXyyQuickSortは中央値を決めて左側にはそれより小さいもの、右側にはそれより大きいものを集める訳だけれども
これと同様に配列の中央にある面を基準にとって視点より向こう側にあるかこちら側にあるかで
面を左右によせ集めれば同じ動作になる。
BSP Treeでは基準面の向こう側からこちら側にまたがって存在する面があれば、これを2枚の分割するんだが
中途半端な座標にあるボックスがなければ面の分割は起こらない。
例えば x=0,y=1,z=0.2のようなボックスがあったら他の面を分割してしまう邪悪な面というのは
ボックスの上面1枚のみになる。左側面と右側面は他の面を分割しない。
だから予め、この様な邪悪な面を配列の後ろに集めておいて
それ以外の部分についてQuickSort的なBSPソートを行い、
その後、邪悪な面を挿入ソートで順次挿入していけば良いのではないだろうか。
比較はソートされた面の方を基準にして、その面よりも邪悪な面が手前にあるか向こうにあるかで判断していく。
こうすれば面を移動させた場合の再ソートがかなり楽になる。
単純に移動した面を一旦削除して、再度挿入ソートを試みればよいと。
こんな感じでいけるのではないだろうか。
(面同士がクロスすることはないという前提)
0130127
03/09/21 10:28ID:iXW+sXyy通常のBSP treeは視点の移動にも対処できるようになっていて、
視点が移動する場合は各ノードを辿る時に
左側を降りるか右側を降りるかを、視点がノードの面に対してどちらの枝側にあるかを逐一チェックして決定している。
視点が固定されていて面がクロスしていなければ上のソートでうまくいくのではないだろうか。
0131127
03/09/21 10:51ID:iXW+sXyy他の面によって分割されるか。
まだまだ考え落としてるところがいっぱいありそうだが
実際組んでみないとちょっと分からないな。
0132名称未設定
03/10/02 00:20ID:fzuPosN+しかし面を分割しては遅くなりそう。
それでは本末転倒なのでは?
0133名称未設定
03/10/10 23:57ID:pU6tJIxb0134名称未設定
03/10/15 03:59ID:F1bwB3y5日本語の情報少なくて寂すぃ・・・。
0135名称未設定
03/10/17 00:35ID:qrdZHvqT昔使ってたな。今でもメーリングリスト受信してる。
そうえば、
「REALbasicとFutureBASICで使おう Toolbox最新活用テクニック」
ってどうなの?C言語でも役に立つ?
0136名称未設定
03/10/17 22:37ID:vnaiWDYFアイデアはどーなってんの?
まぁ個人で作るのが一番だろ
0137名称未設定
03/10/18 18:27ID:2YN/A39Jここに集まるレベルの人では個人で作ったほうが良いかな。
0138名称未設定
03/10/24 17:44ID:8ZM9S7oe0139名称未設定
03/10/24 22:57ID:/Bnh97oyC なんか得意げに使ったって、32ビットだのピクセル触ったりだの
無駄に時間がかかるし、QuickTime は使い物にならんし
そんなたいそうな 3D 駆使したゲーム作るってわけでもないんだし...
それにターゲットが Mac って同じコードで Win もできる Director とかの
ほうが需要が全然違うだろ。まぁ OpenGL 使うとか言うかもしれんが。
REALbasic もまぁどんなんか知らんが。
とにかく、もっと他のことをしようよ。
0140名称未設定
03/10/25 00:55ID:9rW4u8Mh固定視点ヘクサなら、ソートなんて不要。2次元、3次元配列で出来るでしょ。
誤魔化す、というのも手だし、
無理なら他のやり方・表現手法を考えた方がいいよ。
初心の頃は、技術に拘り過ぎちゃって、気が付いたらアルゴリズムだけ
完成したところで飽きる・・・というパターンも良くある話。
0141前スレ454
03/10/26 23:29ID:G/YCs9BZ話すと長くなるから希望者がいれば。
ちなみに、
>>139、140
漏れのスタンスとしては、楽しいからやってる、それだけ。
このスレの他の人はどうかわかんないけどね。
完成させるとか、やってもらうってのは優先度的には低い。
せっかく仕事じゃないプログラミングやってるんだから、
無理に完成させることもないかなと思ってるし。
>気が付いたらアルゴリズムだけ完成したところで飽きる・・・
>というパターンも良くある話。
これも全然漏れ的には無問題。飽きたらやめる。
実際のとこ、それどころじゃなくてこのスレで活動してる人本当にいるのか?
という低い次元でもあるんだけどね。
0142名称未設定
03/10/29 18:23ID:VVfjXpOPそんだけじゃ分からん。
>>139
重いから嫌。
でも、Windowsのゲームの体験版がDirectorでWebからプレイできたのは驚いた。
それも結構な完成度。
32ビットだのピクセル触ったりだのってのは意味がわからないけど
たいして複雑なことやっているわけじゃない。
0143名称未設定
03/10/29 21:40ID:xK5UwA9/需要とか供給とか関係無いや
0144くるかし
03/11/09 00:05ID:Gh0JoKjS0145名称未設定
03/11/17 14:16ID:vLwDrKsH0146名称未設定
03/11/18 20:00ID:TXplgJIj下から3バイトが2バイト目と同じになっちゃうんだが。
例えば
01 02 03 04
と書き込まれたファイルがあって、これを読むと「01 03 03 04」ってなるぞ!
0147名称未設定
03/11/18 23:38ID:TKIRy4Ed他のスレや掲示板(http://bbs11.otd.co.jp/1103552/bbs_plain)で
画面が表示されないというトラブルがあると書いてあって
実際に私のところでもうまくいっていません。
でも、自分で書いたゲームの表示は正常です。
0149名称未設定
03/11/19 15:58ID:619Lya2m0150名称未設定
03/11/20 08:27ID:8ZTj3UXo他のスレってエロゲスレでっか。
つーか、なんで表示されないか逆に興味がある。
アクセッサ関数使ってないところがあったとか。
0151名称未設定
03/11/23 19:05ID:zHVm8mqVそっちに問題があると思うけど、10.1と10.2で大丈夫だっただけに気持ち悪いね。
アクセッサ関数使わないとCarbonにならないと思うよ。
0152名称未設定
03/11/24 02:04ID:udm5jPDFよほどの事しない限り問題は無いような気がするけど。
0153名称未設定
03/11/24 19:28ID:d3Uwb8bmGWorldじゃなくてウィンドウの生成に問題があるらしい。
×:GetNewCWindow()
○:NewCWindow()
?:CreateNewWindow()
GetNewWindow()はリソースに登録してあるウィンドウを作るから
引数が少なくていいんだけど、最近ではResEdit起動するほうが面倒だから
NewCWindow()をつかった方がむしろ楽な気もする。
けど、それ以上の違いってあるの?
CarbonではCreateNewWindow()をつかったほうがいいと
http://www.ottimo.co.jp/koike/ToolBox/ToolBox_text/00_10_04.html
に書いてある。
0154名称未設定
03/11/25 00:28ID:09k4nPy70155名称未設定
03/11/25 23:49ID:SNkftdWuボタンとかコントロール類をたくさん貼るならNibは便利かも知れないけど
だったらCocoaの方がよさそうだし、
ゲームだったらウィンドウとかメニューとか限られたものしかないのだから
あんまりモチベーションはわかないんです。
せっかく教えていただいたのに失礼ですが・・・
0156名称未設定
03/11/26 17:17ID:W8b1k/AWメニュー等イベント処理が驚く程楽になる。
とりあえずは、Xcodeのひな形をビルドしてみると。
0157名称未設定
03/12/22 20:58ID:Q8xDAtiX0158名称未設定
03/12/23 01:48ID:fsRXpzcR作るにはどのソフト使うのが最適?
0159名称未設定
03/12/23 01:54ID:8tDmycYOHyperCard
0160名称未設定
03/12/23 02:01ID:fsRXpzcRなんですか、それ。
osに関係なく作品を公開できますか?
0162HC関連リンク
03/12/23 10:50ID:Wta549Lyhttp://www011.upp.so-net.ne.jp/PARK/
他の候補もあるけど、とりあえずHyperCardで基本をつかめばいいと思う。
FLASHなんて買うと金かかるし、結局使い方すら分からなかった
なんてことになりそう。
0163名称未設定
03/12/24 23:34ID:I4PQnOyY0164名称未設定
03/12/24 23:41ID:+Z6Oft3F例えばRPGのフィールドマップ上を歩く様な場面で
レイヤーみたいな合成表示が必要な時って
単に透明ウインドウ上にキャラや背景を描画して重ねてるだけなんですかね?
0165名称未設定
03/12/25 01:09ID:THNOeCEF0166名称未設定
03/12/25 16:22ID:THNOeCEF0167名称未設定
03/12/25 20:41ID:y0ullW9c0170名称未設定
03/12/26 00:04ID:0LUHcumsだからそれが質問なんでしょう。
キャラ重ねに透明ウインドウをわざと使ったサンプルはあるかもしれないけど、
実際cocoaのナイスなゲームってあるのかなぁ。
基本的にcocoaは速いゲームやOpenGLをいじるのに向いてないと思う。
0171名称未設定
03/12/26 15:29ID:XE4wY9ZoCocoaはやっぱり
ttp://www.big.or.jp/~crane/cocoa/
の「その他のサンプル」から「スクロールゲームのサンプル」を貰ってきて
そいつを眺めてみるといいと思う。
>>170
偏見かも知れないけど、Cocoaはゲームを作るにあたってうま味がないと思う。
GUI周りは絶大な威力を発揮するけど。
ゲームって画像の合成とかローテクというと語弊があるかも知れないけど
比較的地味な作業の繰り返しを高速にやる部分が多いから
NSImageの合成とかハイレベルなものは使い勝手が悪いと思っている。
あと、ゲームのインターフェースにGUIパーツを使うのも
俺は操作性がよくないと思うから全部自前で用意するのが普通だと思うし。
0172名称未設定
03/12/28 12:05ID:cwF9KzP10173名称未設定
03/12/28 19:15ID:JsUym2s90174名称未設定
03/12/28 19:18ID:fMw3ZzAf0175名称未設定
03/12/28 19:24ID:g0HncE72うまいカクテル勝負
0176172
03/12/28 20:43ID:cwF9KzP1まぁ、ゲーム向けの機能はないけどさぁ
0177名称未設定
03/12/28 22:31ID:S92NbRdV0178名称未設定
03/12/28 22:45ID:N23GU402▽問題のゲーム
ttp://up.atnifty.com/upload/file/20031228224144_.bin
(DLした後拡張子は.zipに変えてくれ。削除されそうなんで早めに)
どうよ。このゲームに未来はあると思うか?
もし未来がないんならCとかMETALとかで作り直そうと思うんだが。
■ このスレッドは過去ログ倉庫に格納されています