トップページgamedev
1001コメント311KB

HSP - Hot Soup Processor [11]

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2005/12/02(金) 11:02:48ID:/jDdeuWB
       (  ,,,)
        .(  ,,)      スクリプト言語 HotSoupProcessor について
        ( ,,).        ゲーム製作の視点から、また〜りと語り合うスレ。
     , -──- 、
    (,;::-──-; )-、
     .|` ̄ ̄ ̄´;;|ヽ l   * 質問する前に検索してみる事
     l;    :::;;;l-' /   * ヲチ、ネタなどはスレ違い
    ,-ヽ───.'-、´..   * 歴代スレ、関連サイトは >>2-8 あたり
    ヽ ──── '

  ONION software (本家)
   http://www.onionsoft.net/

0349ホスプロ ◆HOTsoUpxjY 2006/01/08(日) 01:19:09ID:ZBCcOKHP
>>336
一人で作るならソースに書いても構わない。
他人に頼むならスクリプト化した方がいい。
0350名前は開発中のものです。2006/01/08(日) 01:24:00ID:DfGaFwC5
>>348
敢えてscri
0351名前は開発中のものです。2006/01/08(日) 09:09:11ID:DWXmP05e
>>346
けっこう前からいるよ。違和感あるよね。

俺はIME辞書に「す」で登録している。
0352名前は開発中のものです。2006/01/08(日) 10:31:03ID:tA0kij2z
スクリと言うとスクリーンと間違えやすい気がs
0353名前は開発中のものです。2006/01/08(日) 12:41:56ID:OvJkiTrS
上のほうでやってる話題に便乗して……
HSPでゲームを作るとき、グラフィックとか音楽のファイルがたくさんあると思うけど
普通のやりかたでユーザーに見られたくない場合に
例えば拡張子ごとに一つのファイルにくっつけて暗号化し、
実行時にそれを復号化・分解して読みこむ、みたいなことやってる?
それともただ暗号化パックだけ?

俺としてはパックは出来ないファイルがあるから嫌なんだけど……
何か良い方法はないだろうか?
0354awaitの精度2006/01/08(日) 14:59:39ID:3CJHpBe+
awaitの精度というよりパソコンのタイマーの精度じゃないかな。
JAVAで時間を計ろうとしたら、うちのパソコンでは50ms以下の
刻みでは時間を計れなかった。しかたないから5フレームに一回、5フレーム分
蓄積した処理時間を5で割ってFPS求めてる。
それとawait 0で200越えるってことはウインドウモードで動かしてる?
フルスクリーンにすると画面更新待つだけで60fpsになるから、
await 0でいいけど、ウインドウモードで60fpsにするにはawait 16
でうちでは正常に動いてる。
0355名前は開発中のものです。2006/01/08(日) 18:45:17ID:WV7huNeF
円を4分の1したような弧を描きたいのですがどの命令を使えばいいんでしょうか?
035670jh702006/01/08(日) 20:18:18ID:UDFJ96YY
gihoybp0yiukhlo;pljuionhuik.jibyi8hiybuutf r6dr677uder54ty f676ug68b968tb
0357名前は開発中のものです。2006/01/08(日) 21:20:10ID:3WeacDLj
>>354
下のプログラムでテストしました。
http://gamdev.org/up/img/4312.zip

CPU : AMD Athlon XP 2500+
OS : Windows 2000
HSP : HSP 3.0

┌───────┬──────────────────┐
│指定したfps│実際のfps                        │
├───────┼────────┬─────────┤
│              │await使用時│mywait使用時│
├───────┼────────┼─────────┤
│100fps  │65fps      │100fps      │
│  90fps  │65fps      │  91fps      │
│  80fps  │65fps      │  84fps      │
│  70fps  │65fps      │  72fps      │
│  60fps  │40fps      │  63fps      │
│  50fps  │32fps      │  50fps      │
│  40fps  │32fps      │  40fps      │
│  30fps  │22fps      │  31fps      │
│  20fps  │17fps      │  20fps      │
│  10fps  │10fps      │  10fps      │
└───────┴────────┴─────────┘
ウェイトなしの場合は 533fps
0358名前は開発中のものです。2006/01/08(日) 21:23:23ID:3WeacDLj
# すいません。ズレまくった。

awaitの精度が悪いのは、私の環境だけなのかな?
0359名前は開発中のものです。2006/01/08(日) 21:45:18ID:3WeacDLj
今度は大丈夫かな。

100 90 80 70 60 50 40 30 20 10 ← 指定した fps
. 65 65 65 65 40 32 32 22 17 10 ← await使用時の実際のfps
100 91 84 72 63 50 40 31 20 10 ← mywait使用時の 実際のfps
0360名前は開発中のものです。2006/01/08(日) 22:30:12ID:WV7huNeF
背景ありの円を動かすゲームを作っています
円はcircle命令で描いてあって、
クリックで押し続けながらマウスを動かすと移動するようにしたいんですが、
円をクリックしたかの当たり判定はどうすればいいんでしょうか?
解答よろしくお願いします
0361名前は開発中のものです。2006/01/08(日) 22:55:44ID:2H9jLPxT
精度はawaitより高いけどCPU負荷が高いな
0362名前は開発中のものです。2006/01/08(日) 23:07:54ID:aGvw9WLa
>>360
カーソルの座標から円の中心座標までの距離を計算して、
半径より大きいかどうかで判定してみたら?

あとは、円の色を背景では使わないようにして、
マウス座標の表示色を拾ってきて円の色と同じかどうか判定する方法とか。
0363名前は開発中のものです。2006/01/08(日) 23:45:18ID:N/0zi2Fq
>>360
平方根の近似値を求める記述が必須
簡単に実現するならペインターで円を描いておいて1ピクセルずつスキャンして画面座標と照らし
合わすとか
0364名前は開発中のものです。2006/01/08(日) 23:52:37ID:NyJ8QYDC
>平方根の近似値を求める記述が必須
・円の半径の二乗
・円の中心との距離の二乗
を比較すれば平方根はいらない。
0365名前は開発中のものです。2006/01/08(日) 23:53:22ID:vdPuK2fg
え?HSPってsqrt関数無いの?
流石にそんな訳ないでしょ?
0366名前は開発中のものです。2006/01/09(月) 00:04:07ID:FHg68k/i
>>360
こんなんでいい?
http://gamdev.org/up/img/4317.zip
奥行きとか考慮したい場合は自分でなんとかして。

>>361
await 0をぶんぶん回してるから(汗)
0367名前は開発中のものです。2006/01/09(月) 00:27:12ID:2g1RYtTx
sqrt[F1]

HSP3でよーやく追加された数学関数くらい把握しとけ
0368名前は開発中のものです。2006/01/09(月) 00:47:22ID:k0VLkVs5
3までsqrt関数も無かったのかw

まぁ浮動小数点数も無かったんだからそらないわなw
0369名前は開発中のものです。2006/01/09(月) 01:01:49ID:AJPH4Rvp
>>357
その方法ならawait 0の代わりにsleep(1)でも行けるんじゃまいか
CPU負荷減らせるし。
await 0はループ外に1回だけ。
0370名前は開発中のものです。2006/01/09(月) 01:26:07ID:FHg68k/i
>>369
やってみたら、あまり精度が落ちず、CPU使用率がぐんと減った。
あんがと。
0371名前は開発中のものです。2006/01/09(月) 13:58:56ID:5VesZgPB
整数型の二次元配列に値をセットしようと思うんだけどループすると遅くて使い物にならないんだけど
repeat 256 : x = cnt
repeat 256 : y = cnt
map(x,y) = 0
loop
loop
これなら
dim map,256,256
てやれば早いけど、
別の値をセットしようとした場合何か早い方法ないですか?
0372名前は開発中のものです。2006/01/09(月) 14:12:35ID:i0suR+wd
>>371
逆転の発想
map(x,y) = m という場合
map(x,y)+m として使う
mでリセットしたいのなら、0をmのように使っていけばいい

っていうか
配列の初期化って最初だけだから
遅くてもよくね?
0373名前は開発中のものです。2006/01/09(月) 14:33:17ID:FHg68k/i
>>371
遅いの基準が分からないけど、
下のソースは私のPCでは、35msec かかる。
実際どのくらい時間かかった?
どうしてもなんとかしたいなら、、マシン語をつかうとか・・・。

#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
dim map,256,256
begin_t = timeGetTime()
repeat 256 : x = cnt
repeat 256 : y = cnt
map(x,y) = 0
loop
loop
end_t = timeGetTime()
mes "処理時間 " + (end_t - begin_t) + "msec"
0374名前は開発中のものです。2006/01/09(月) 15:22:37ID:KeX9qoym
35msecは遅いでしょ。
60フレームだと、2フレーム飛ぶぞ。
0375名前は開発中のものです。2006/01/09(月) 15:56:24ID:LQCt5OrT
いつも同じ値を使うんだったら、テーブル作っといてmemcpyか

#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
dim map,256,256
dim wrk,256,256
repeat 256 : x = cnt
repeat 256 : y = cnt
wrk(x,y) = 0
loop
loop
begin_t = timeGetTime()
memcpy map,wrk,256*256,0,0
end_t = timeGetTime()
mes "処理時間 " + (end_t - begin_t) + "msec"
0376名前は開発中のものです。2006/01/09(月) 16:10:26ID:2g1RYtTx
カエレ

#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
dim map,256,256
begin_t = timeGetTime()

repeat 256
map(cnt,0) = 333 ; 任意
loop
repeat 256
memcpy map(0,cnt),map(0,0),256*4
loop

end_t = timeGetTime()
mes "処理時間 " + (end_t - begin_t) + "msec"
0377名前は開発中のものです。2006/01/09(月) 16:52:00ID:LQCt5OrT
256*256*4か・・・。吊ってくる

>>376
ナイス
03783602006/01/09(月) 20:36:34ID:1esNj1jC
皆さんありがとうございました
サンプル分かりやすかったです
03793712006/01/09(月) 20:51:01ID:5VesZgPB
>>372-376
dです
参考になりました
0380名前は開発中のものです。2006/01/10(火) 03:13:49ID:RENHUobv
HSP 3.0 のバージョンが、なかなかあがらないのはなぜ?
0381名前は開発中のものです。2006/01/10(火) 04:52:54ID:tIeLKw/p
みんな2の方使ってるから盛り上がらない、とか
0382名前は開発中のものです。2006/01/10(火) 13:34:32ID:9w3F5x5a
年内はコンテストで手一杯だったんだろ。

とりあえず早くinput直してほすぃ。
0383await2006/01/10(火) 14:48:47ID:x3OfSn1E
http://gamdev.org/up/img/4329.lzh
これでawait問題は解決か・・?

100 90 80 70 60 50 40 30 20 10 ←  指定したfps
065 65 65 65 40 32 32 22 17 10 ←  await使用時の実際のfps
100 90 80 70 60 50 40 30 20 10 ← fpswait使用時の 実際のfps
0384名前は開発中のものです。2006/01/10(火) 16:45:23ID:V4Ybt7ZH
FPSの計測は1000msごとにやるのと
画面更新、例えば60回毎にやるのとどっちが良いんだろうね
0385名前は開発中のものです。2006/01/10(火) 18:28:31ID:2fKdIZGo
FPS:Fame per second
0386名前は開発中のものです。2006/01/10(火) 18:47:18ID:5855+LUk
一秒あたりの名声?
0.5 μgoogle/sec とか(意味判らんけど)
0387名前は開発中のものです。2006/01/10(火) 18:48:50ID:2fKdIZGo
うほwwwwwwwwwww
0388名前は開発中のものです。2006/01/10(火) 19:02:11ID:V4Ybt7ZH
fps=60000.0/(now_time-last_time)

いや、ほら精度としてはどっちがいいのだろうかと。
0389名前は開発中のものです。2006/01/10(火) 21:24:36ID:ce4oRkSP
結論から言えば、どっちでもいい
0390名前は開発中のものです。2006/01/10(火) 21:44:55ID:QcTSevKT
すいません、一応ヘルプ見たんですけど質問です。
dimで配列作る時に、少数使いたいのですが、どうすればいいでしょう??
0391名前は開発中のものです。2006/01/10(火) 23:52:23ID:RENHUobv
>>383
timeGetTime より、GetTickCountのほうが
精度低いって聞いたんだけど、やけに正確な fpsになるね。

>>390
HSP 3.0以上なら ddim というのがある。
0392名前は開発中のものです。2006/01/11(水) 00:31:06ID:BHfanWVp
>>383
あーなるほど。
まだ、はっきりソースの動作を理解してないけど、
たとえば、60fps として、1000/60 だと端数がでるから、
その端数も考慮して、waitをかけているってことですね。
だから、正確なfpsになるのか。

# 1000/60 = 16.666...
# 実際には、きりすてられて、16msecしか待たないので、
# >>359 のように fps が少し早くなってしまう。
03933832006/01/11(水) 04:22:46ID:b+VsXhIk
もう日付変わってるし・・・・。

>>390
ddimもしくはdimtype

>>391
大体>392。
GetTickCountを使いたい訳じゃなくて、
GetTickCountでも動くかな?と書き換えて、そのままorz

>>932
getfpsをループの中に二つ入れるとfpsが二倍にwwwwwwww
0394名前は開発中のものです。2006/01/11(水) 17:45:20ID:b+VsXhIk
ttp://gamdev.org/up/img/4339.lzh
0395名前は開発中のものです。2006/01/12(木) 07:32:40ID:1/T4dwRk
>>371
よっぽど速度を要求されるソフトを作ろうとしてるんだな。だったらHSPあきら
めてC使えば?
03962.61で2006/01/12(木) 08:13:20ID:to8R9Wd/
1度作った配列とかがいらなくなったとき、メモリを解放するってできる?
Cでいうfreeやdeleteに相当する命令が無いような気がするんだけど…

試しにメモリ使用量を見ながら
最初に
sdim s1 10000,1000
sdim s2 10000,1000
とかいう風に宣言したらメモリ使用量が大量に増えて、後から
sdim s1 100,10
sdim s2 100,10
ってやってみたらメモリ使用量減ったけど
これでメモリの解放はできてるの?
0397名前は開発中のものです。2006/01/12(木) 08:36:38ID:rjUWYSlh
>>395
よっぽどじゃねーし、既に解決策も出てるだろうがドアホ。
0398名前は開発中のものです。2006/01/12(木) 13:21:18ID:BXBscbIj
>>396
減るんなら良いんでないの。
モレもdim a,16とかやってるし。
0399age2006/01/13(金) 16:58:26ID:lXCmxLyd
HSPLet3.0に期待age
0400名前は開発中のものです。2006/01/14(土) 18:51:32ID:PKlupJkR
名前が分からないんですが、
メモ帳で上のほうにある「新規作成」「開く」のようなものを作りたいんですが、
どうすればいいんでしょうか?
0401名前は開発中のものです。2006/01/14(土) 19:20:01ID:n7GTBAc7
>>400
それはメニューバーと言います。
ttp://www.silkroad.ne.jp/sakura/
このアドレスのwebページの、HSP module & macro Library (stdlib)を使用すれば、
いくつかのWin32APIの関数を使えるようになります。
貴方の望むメニューバーも実装が出来ます。
04024002006/01/14(土) 19:22:59ID:PKlupJkR
>>401
ありがとうございます
それを使わないとメニューバーは作れないんでしょうか?
0403名前は開発中のものです。2006/01/14(土) 19:30:25ID:+6g6PW59
メニューバーならcommonフォルダのmod_menu.asを使えばいいんじゃね?
0404名前は開発中のものです。2006/01/15(日) 20:29:19ID:XBA64bbL
>>403
詳しく説明していただけないでしょうか?
0405名前は開発中のものです。2006/01/15(日) 20:47:54ID:u3tFjH0z
>>404
ちょっとは調べろ馬鹿
0406名前は開発中のものです。2006/01/15(日) 21:21:33ID:pcpA9vZe
詳しくってことは中見たけどわかんなかったってことか・・・?

書いてあったURLは見ようとしないのかな?w
0407名前は開発中のものです。2006/01/16(月) 19:24:58ID:11lSuiMx
人の頭を使わず自分で考えろと
質問はそれからだ
0408名前は開発中のものです。2006/01/17(火) 12:27:08ID:DSgl9JGL
はいはいゆとり教育ゆとり教育
0409名前は開発中のものです。2006/01/17(火) 14:30:24ID:hlr4bDYw
モジュールでグローバル変数とか参照したいです。
そういう機能ありませんか。
本当に完全に分離されてるみたいで・・・
プログラム全体で共有したい変数を参照したいのです。
つまり定数のような変数です。
0410名前は開発中のものです。2006/01/17(火) 16:59:50ID:62CKdlEk
>>409
hsp30/docs/hspprog.htm#prog3_1
付属マニュアル読んでみそ

>もし、モジュールの外から、モジュール内の変数を参照したい場合には「変数名@モジュール名」という書式を使うことができます。
>逆に、モジュール内部から外(#global部分)の変数を参照する場合には、「変数名@」という書式により参照することができます。
>ただし、この書式はモジュール内部と外部に依存関係ができてしまうためソースの完全な分離ではなくなってしまいますので、推奨はされません。
0411名前は開発中のものです。2006/01/18(水) 18:28:25ID:ZgmUdfj1
;>410
;どうもありがとうです。確認してみます。
;以下メモ書きです。

;上の方で変数の解放の話が出てたけど、似たような話題。
hensu1 = 0.001
hensu1 = 10.000
hensu2 = 0.001
hensu2 = 10
hensu3 = 0
hensu3 = 0.12345
mes "hensu1="+hensu1
mes "hensu2="+hensu2
mes "hensu3="+hensu3
stop

;hensu1=10.000000
;hensu2=10.000000
;hensu3=0
;という結果が得られれば良いのだけど、
;hensu1=10.000000
;hensu2=10
;hensu2=0.123450
;つまり実行中に最初に宣言した型が変化しています。
;「代入するとその型になってしまう」ので注意。
;代入で、内部的に確保し直してるんですね。

;hsp3で実数が扱えるようになって、
;キャラクターを小数点単位の移動をさせようとしてうまくいかず
;どうしてかと思った・・・同じ悩みで苦しんでる人いない?
0412名前は開発中のものです。2006/01/18(水) 18:45:18ID:lA7IpJAl
いない
HSPでは実行開始時は全部intだから、変更できないと困るぞ
0413名前は開発中のものです。2006/01/18(水) 19:21:56ID:16v8mdbK
>>411
読めって言われてんのにまだマニュアル読んでないのか盲

>整数値、実数値、文字列、関数を混在した式を書くことも可能です。その場合は、計算する最初の項に合わせて、後の項が型変換されます。たとえば、「8 + 4.5」のような計算は、最初の8(整数)に合わせて4.5は、4(整数)として扱われます。
0414名前は開発中のものです。2006/01/18(水) 19:51:22ID:ZPRTiZfJ
すんません。
マニュアル読んだらwikiとかメーリングリストとかのリンクが。
そっちでじっくり勉強しますです。
0415名前は開発中のものです。2006/01/19(木) 04:13:28ID:+I8HRWMm
めくらとか忌み言葉使うなよな。
験が悪い。
オマエの餓鬼とかメクラで生まれてきちゃうよw
0416名前は開発中のものです。2006/01/19(木) 04:53:34ID:rA1BIQfe
HSP2で2DアクションRPG製作してるんだけど、質問。
hspdx.asをインクルードして作ってて、
es_checkでキャラが通過できない場所に接触した時の衝突判定で反応を分岐させようとしてるんだが、うまくいかない。
貫通したりなぜか浮き上がったりで手に負えない。
マップの角に当たったときとか、地面と壁の両方に接触してるとき(これは何とかなりそうだけど)の判定はどうしたらいいんだろう?
素直にtype指定を複数に分けようとも思ったけど、地面・左崖部分・右崖部分・左壁・右壁・天井・左天井角部分・右天井角部分と種類を分けてあるから、
地面だけでtype指定を細かく分けるのはなんか変だし……。
0417名前は開発中のものです。2006/01/19(木) 10:14:24ID:Iz31MsFm
HSPコンテストって次いつやるのかな。
やっぱり年末?
0418名前は開発中のものです。2006/01/19(木) 17:35:13ID:O2THXwgb
次は無いお。
0419名前は開発中のものです。2006/01/19(木) 17:41:38ID:62YT+LcG
ところで急に気になったんだけど藻前ら
ゲームのメインループはどう書いてる?

*mainlp
(処理)
goto *mainlp



repeat -1
(処理)
loop

に分かれると思うんだが。漏れは前者。
0420名前は開発中のものです。2006/01/19(木) 17:49:32ID:4uI/m6sw
前者は後者の数倍重くなると聞いたんだが…

比較的、処理のいらないゲームなら問題ないかも
0421名前は開発中のものです。2006/01/19(木) 18:13:39ID:bDoACRfH
重くないし
0422名前は開発中のものです。2006/01/19(木) 18:14:51ID:1J3pAOkH
こっちの情報ではgotoのほうが早いってさ
ttp://www.hspdx.net/hspyarou/2001.html
0423名前は開発中のものです。2006/01/19(木) 18:40:29ID:R/4fX8+T
気になったのでHSP3で検証。
http://gamdev.org/up/img/4420.zip

ループ1000000回で計測。

goto カウンタ自前
2609ms
repeat-loop カウンタ自前
2527ms
repeat-loop cnt使用
316ms

repeatの方が高速らしい。

0424名前は開発中のものです。2006/01/19(木) 18:43:34ID:62YT+LcG
後者をメインループに使うと、
repeat〜loop文のネストがもれなく1段階深くなるのが気になるんだよね
0425名前は開発中のものです。2006/01/19(木) 18:44:38ID:62YT+LcG
>>423

そうか、repeatの方が圧倒的に高速だなぁ。
0426名前は開発中のものです。2006/01/19(木) 18:58:02ID:Iz31MsFm
>>423
乙。
豆知識として覚えておこうっと。
0427名前は開発中のものです。2006/01/19(木) 19:00:23ID:bDoACRfH
うちの環境では
2224ms
2305ms
255ms
だった。
中身が同じならgotoのほうが速かった
0428名前は開発中のものです。2006/01/19(木) 19:30:27ID:ugaVWl2h
報告。うちの参考になりそうにもない糞機(P3-1Ghz、WinME機2001年購入)
5651ms
5671ms
602ms
でつた。
0429名前は開発中のものです。2006/01/19(木) 19:55:14ID:qTYhDb+Z
>>423
エディタからF5で実行するとgotoの方が速かったけど
実行ファイルにしたらrepeatの方が断然速かったな
04304232006/01/19(木) 20:05:54ID:R/4fX8+T
>>429
今何度か試してみたけど、実行ファイルにするとgotoが速い場合が多い。
デバッグ時はrepeat-loopが常に速い。
0431名前は開発中のものです。2006/01/19(木) 20:57:02ID:H9Tvn35r
なんかよくわからない
http://popra.zone.ne.jp/

0432名前は開発中のものです。2006/01/19(木) 21:00:38ID:Iz31MsFm
↑アダルトサイト
0433名前は開発中のものです。2006/01/19(木) 21:45:55ID:2ID0vy0d
結局どっちが早いんや
0434名前は開発中のものです。2006/01/19(木) 22:26:58ID:QjCjJ8e4
モレは、速さよりも作りやすさでgoto使ってる。
0435名前は開発中のものです。2006/01/19(木) 22:51:02ID:/RyPj+ra
敢えてメインループさえ#deffunc hogeでサブルーチン化する俺。

repeat
hoge
if stat{break}
loop
0436名前は開発中のものです。2006/01/19(木) 22:59:45ID:goH5x+Xd
>>423
カウンタ&分岐処理で+2000ms使ってるだけじゃねーの?
*b1Loop
count++
if count != LOOP_COUNT : goto *b1Loop
と比べるなら
カウンタが必要ならrepeatでcot使えば6割早い
規定回数loopして抜けるならrepeat p1で9割早くなる
p1を使わずにcot比較分岐なら3割早い
って感じ

gotoとrepeat自体は1000000回でも誤差程度の差
a++より軽い処理なのにメインループ中1回の事で気にしてもしょうがないと思う・・・
0437名前は開発中のものです。2006/01/19(木) 23:00:14ID:bnV18/EK
もしかしたら、ループの処理<>ループの中の処理でどちらの負荷が高いかで変わってくるのかも知らん。
とりあえず、実行ファイルまで作って遅かったら逆やってみる。
0438名前は開発中のものです。2006/01/19(木) 23:09:32ID:goH5x+Xd
ちょい間違い
>カウンタが必要ならrepeatでcot使えば6割早い
これは
*b1Loop
count++
goto *b1Loop
との比較した場合だな・・・
0439名前は開発中のものです。2006/01/19(木) 23:57:27ID:bDoACRfH
ショートプログラマへ一言
無限ループを組むだけなら、repeat:loopより*aaa:goto *aaaのほうが4バイト小さい
0440名前は開発中のものです。2006/01/20(金) 00:38:22ID:EnRMXJuE
なんか話題の変え方というか、流し方が強引だな。
こんな回りくどいやり方をするぐらいなら、
>>416自分で調べろカス」
って素直にレスしたほうがまだマシな希ガス
0441名前は開発中のものです。2006/01/20(金) 02:55:51ID:rybgeTyi
>>416自分で調べろカス
0442名前は開発中のものです。2006/01/20(金) 08:18:37ID:dQzHZbAR
>>416自分で調べろカス
0443ホスプロ ◆HOTsoUpxjY 2006/01/20(金) 08:43:26ID:ZjQAEuYR
>>419
goto 先頭のラベルに飛びたい場合があるから。
0444名前は開発中のものです。2006/01/20(金) 15:51:22ID:JBo4Bm5J
>435
だよね。IDEのメニューからいちいち再読込しなくて済むし、
あ、ていうか自分、外部のテキストエディタ使ってるから、秀丸。

>416
キャラクターの中心だけで行ける/行けない判定してるんちゃう?
キャラクターの大きさの中で少しずれた位置もいくつか判定して、
どれか一つでも当たり判定に引っかかったら行けないということにしたら。
自分は昔遊びで作ったとき、キャラの中心ではなく、左上、左下、右上、右下の
四カ所で判定してたような記憶が。
左に移動しようとして左上か左下の判定のどちらかにひっかかったら
行けないと判断できる。
左上に移動しようとしたら、左上、左下、右上のどれかの判定にひっかかったら
行けないとする。壁にそって移動したいときはさらに細かく判定すると。

0445名前は開発中のものです。2006/01/20(金) 16:38:54ID:V6V9y4Vy
>>416
一つのやり方として
前回の座標を保存しといて、ブロックと衝突したら前回と、今回の座標から
どの方向から衝突して、どの面に接触したかを判別する。

簡単な方法として前回のキャラの判定領域がブロック判定領域のx、yどちらかに
重なっているか、両方重なっていないで分けて、

前回xが重なってるならy軸の移動は出来ない>下に移動中なら上に上に移動中ならブロックの下に合わせる
前回yが重なってるならx軸の移動は出来ない>右に移動中なら左に左に移動中ならブロックの右に合わせる

両方重なっていない場合
前回の位置が左上ならブロックの左か上にしか触れない>当たった場所がブロックの中心から左、上側の離れている(*1)方に合わせる
斜め45度の場合距離は同じなので優先度を決めておく

このまま実装すると、キャラのスピードや、一度に二つ以上接触した時の処理順序などで、色々不都合が出ると思う
でも、これ以上は作るゲームによって変わってくるので、色々やってみてくれ

(*1、中心からの距離の比較だけで見るとゲームとして厳しい場合は半分より上なら上に載せるとかやってもいいと思う)
0446名前は開発中のものです。2006/01/20(金) 18:03:31ID:k/rN10RG
アクションゲームなどの敵の動作処理を一度に行うにはどうすればいいんだ…
原理すら分からん…

マップデータを読み込む→画面内にある敵をリストアップ→ルーチン作動…
って直列処理なら一時変数とか使えないし、ウェイトは全体の処理が…
もうワケワカランorz
0447名前は開発中のものです。2006/01/20(金) 18:48:49ID:utBFZEbc
>>446
画面外のも動かしとけばええやん。
0448名前は開発中のものです。2006/01/20(金) 20:20:46ID:k/rN10RG
問題はそこじゃなくて、直列処理だと複数の敵を動きをずらして動かせないし
HSPの場合、例えば一時的にウェイトかける場合はプログラム全体が止まるんでは…
あーもう…

…脳内整理しなおしてくる…スマソ
■ このスレッドは過去ログ倉庫に格納されています