HSP - Hot Soup Processor [7]
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/06/10 04:28ID:cbXY3kVCHSP - Hot Soup Processor
http://game.2ch.net/gamedev/kako/1005/10053/1005332663.html
HSP - Hot Soup Processor [2]
http://game.2ch.net/test/read.cgi/gamedev/1035428757/
HSP - Hot Soup Processor [3]
http://pc2.2ch.net/gamedev/kako/1043/10436/1043609896.html
HSP - Hot Soup Processor [4]
http://pc2.2ch.net/test/read.cgi/gamedev/1047082415/
HSP - Hot Soup Processor [5]
http://pc2.2ch.net/test/read.cgi/gamedev/1058507713/
HSP - Hot Soup Processor [6]
http://pc5.2ch.net/test/read.cgi/gamedev/1078660876/
関連サイト
ONION software (本家)
http://www.onionsoft.net/
HSP CENTER
http://hspcenter.com/
HSP ML
http://garde.esprix.net/hsp-ml/
0211名前は開発中のものです。
04/06/30 16:43ID:yL8fpRHa0212名前は開発中のものです。
04/06/30 20:09ID:zttbnhI40213名前は開発中のものです。
04/06/30 21:02ID:aGwEscVG得たものをそのままにするか昇華させるかは使う人次第。
むやみに精鋭主義っぽいことをよく口にする人がいるが、低レベルでの底上げは
別に無駄とは思わんよ。特にこんな場所じゃね。
0214名前は開発中のものです。
04/06/30 21:28ID:ktTt7hKn自分で調べたり試行錯誤できないやつは問題外だろ。
0215名前は開発中のものです。
04/06/30 21:40ID:B6Q6nf2dことを期待して教えてるわけだが。
考えずに質問する馬鹿は消えて欲しい。
0216名前は開発中のものです。
04/06/30 22:05ID:aGwEscVG0217名前は開発中のものです。
04/06/30 22:21ID:2R7C6z6J時刻を2桁にしたいのですが、これでは無理みたいです…。どうすればいいでしょうか?
/*時間表示の発展*/
screen 0,320,0;ウィンドウのサイズを調整
;曜日の関数
sdim ODW,7,7
ODW.0="日曜"
ODW.1="月曜"
ODW.2="火曜"
ODW.3="水曜"
ODW.4="木曜"
ODW.5="金曜"
ODW.6="土曜"
*TIME
gettime year,0;年取得「year」に代入
gettime month,1;月取得「month」に代入
gettime odw2,2;曜日取得「odw2」に代入
gettime day,3;日取得「day」に代入
gettime hour,4;時取得「hour」に代入
gettime minute,5;分取得「minute」に代入
gettime second,6;秒取得「second」に代入
str hour,2:str minute,2:str second,2;時間を全て2桁に変更
title "今の時間は"+hour+":"+minute+":"+second+" 今日は"+year+"/"+month+"/"+day+"("+ODW.odw2+"日)";タイトルに表示
wait 100
goto *TIME
0218名前は開発中のものです。
04/06/30 22:36ID:B6Q6nf2d0219名前は開発中のものです。
04/06/30 22:41ID:OF+oSbUBint hour:int minute:int second
を *TIME の次の行に入れてみ?
gettimeを繰り返し同じ変数で使うためには、いったん文字列型に変換したものを
数値型に戻してやる必要があるだろ?
0220名前は開発中のものです。
04/07/01 13:27ID:m+/uT8hH0221名前は開発中のものです。
04/07/01 14:19ID:v0OsxpsA0222名前は開発中のものです。
04/07/01 14:50ID:S5zu2Amh0223名前は開発中のものです。
04/07/01 15:56ID:Uuze0tzSマ板逝け
0224名前は開発中のものです。
04/07/01 16:03ID:RYLnutr90225名前は開発中のものです。
04/07/01 16:09ID:bdPAbTo60226名前は開発中のものです。
04/07/01 16:52ID:AUY2dIBn0227名前は開発中のものです。
04/07/01 21:49ID:l5RM1DE0有難う御座いました
いま本見たら(変数は違いますが)、
hour=0:minute=0:second=0というのがありましたラベルのあとに。
0228名前は開発中のものです。
04/07/02 12:32ID:HmaAkL9+0229名前は開発中のものです。
04/07/02 14:16ID:bVarop9e0230名前は開発中のものです。
04/07/02 14:53ID:MU/fqUCV下げてもIDでるからな
0231名前は開発中のものです。
04/07/02 15:13ID:HmaAkL9+0232名前は開発中のものです。
04/07/02 15:21ID:KRyGDsPC0233名前は開発中のものです。
04/07/02 18:36ID:93YoT3Fwa="abcdefghi"
これのeとfを削除して
a="abcdghi"
に変えるという意味です。
命令リファレンスで探したところ、
それらしいのは
notesel
というのしか無かったのですが、
a="abcdefghi"
notesel a
notedel 5
mes a
stop
とやっても、変わっていません。
何か方法はないでしょうか
0234233
04/07/02 18:37ID:93YoT3Fw>命令リファレンスで探したところ、
>それらしいのは
>notesel
>というのしか無かったのですが、
noteselじゃなくてnotedelでした
0235名前は開発中のものです。
04/07/02 18:45ID:abSGm/300236名前は開発中のものです。
04/07/02 20:57ID:WDxKMIMo0237233
04/07/02 21:10ID:93YoT3Fwstrmidでやってみても、
文字列の一部をコピーするだけみたいなんですが・・・。
a="abcdefghi"
strmid b,a,5,2
stop
こうやっても
aの中身はabcdefghiのまま、
bの中身はefが入ってました。
>>236
削除する位置を何文字目かで決めたいので
getstrでは駄目みたいです。
色々言ってすみません
0238名前は開発中のものです。
04/07/02 21:15ID:JA+Q5yhZinstr(文字列の検索をする)
strmid(文字列の一部を取り出す)
0239名前は開発中のものです。
04/07/02 21:15ID:abSGm/30誰 が 1 回 の 命 令 で で き る と 言 っ た 。
あ、あとstrlenを忘れてた。
0240233
04/07/02 21:29ID:93YoT3Fwb="ef"
strmid b,a,0,4
strmid c,a,6,4
a=b+c
mes a
stop
こうですね、出来ました!
実際に使うときはinstrとstrlenも使うんですね。
>>235=239
>>236
>>238
ありがとうございました。
0241名前は開発中のものです。
04/07/02 22:07ID:HI+qdwAE0242名前は開発中のものです。
04/07/02 22:11ID:mGc4qyci0243名前は開発中のものです。
04/07/02 23:37ID:Xs2Xk3aN0244名前は開発中のものです。
04/07/03 04:41ID:2WodAWEa0245名前は開発中のものです。
04/07/03 16:44ID:UDxUOEED0246名前は開発中のものです。
04/07/03 18:10ID:XlhOXqKC0247名前は開発中のものです。
04/07/03 18:28ID:JQyZZc1j;(単語としてでなく、含まれる文字を全て消去)
#module "cut"
#deffunc cut val,val
mref v1,24
mref v2,25
strlen ln2,v2
cn=0:repeat ln2
n="":p=0:strlen ln1,v1
repeat
peek c,v2,cn
getstr a,v1,p,c:p+=strsize:n+=a
if ln1<p:break
loop
v1=n
cn++:loop
return
#global
a="abcdefghij"
b="ef"
cut a,b:print a
stop
少し力押ししすぎかも...@
0248名前は開発中のものです。
04/07/03 18:42ID:/qhhvoLJ下ネタかよ!
0249名前は開発中のものです。
04/07/03 19:38ID:pdzdu8d1ジワジワワラタ
0250名前は開発中のものです。
04/07/03 21:58ID:7oBXh8xla="abcdefghij"
b="ef"
strlen len1,a
strlen len2,b
instr p,a,b
strmid c,a,0,p
strmid d,a,(p+len2),len1
e=c+d
mes e
stop
0251名前は開発中のものです。
04/07/03 22:26ID:ROS80UqGに含まれないのをbにいれると変になるとおもうが...
0252名前は開発中のものです。
04/07/03 22:32ID:ROS80UqGb="ef"
repeat
strlen len1,a
strlen len2,b
instr p,a,b:if p=-1:break
strmid c,a,0,p
strmid d,a,(p+len2),len1
a=c+d
loop
mes a
stop
aに含まれるbを全部除去する
0253名前は開発中のものです。
04/07/04 01:20ID:T231Rcsta=""
mes a
stop
aを全部除去する
0254名前は開発中のものです。
04/07/04 18:56ID:cPwRxDVpどうしても越えられない壁がある。処理速度。
当たり判定が突き抜けないように、1ドット移動ごとに当たり判定
ルーチンを巡らせる。
100個くらいのところでバテる。
2ドットごとに妥協して、さらに作り進めていくと、
自弾の処理でまたバテる。
・・・・・・・・・・どうしても弾幕ゲームが作りたいんだ・・・
HSPの限界はよく分かった・・・。
誰か、頼むからプログラムを速く走らせるコツを
教えてくれ・・・
0255名前は開発中のものです。
04/07/04 19:00ID:T231Rcstそれ組み方の限界ジャーン?
0256名前は開発中のものです。
04/07/04 19:10ID:P4QR7izT0257名前は開発中のものです。
04/07/04 19:18ID:Lnm60bAX0258名前は開発中のものです。
04/07/04 19:49ID:WDudAYFD0259名前は開発中のものです。
04/07/04 20:46ID:cPwRxDVpそう言われるとそうだな、そう訂正するw
プラグインは
hspext:hspdxa:dsoundex
ジョイパッドの入力にhmmを使う予定
サイン・コサインは予め256コのテーブルに
保存して使ってるけど、狙撃するときに
アークタンジェント(ematan)を求めてる。
これって相当遅くなるのかな?
マシン語か、マシン語とアセンブラの違いも分からない
俺じゃかなり無理ぽいな
0260名前は開発中のものです。
04/07/04 20:52ID:WDudAYFDマシン語がバイナリで、アセンブラがmov *, *とか。
0261名前は開発中のものです。
04/07/04 21:03ID:T231Rcst考慮して言ってるのかな
0262名前は開発中のものです。
04/07/04 21:05ID:WDudAYFD0263名前は開発中のものです。
04/07/04 21:05ID:Lnm60bAX0264名前は開発中のものです。
04/07/04 21:09ID:WDudAYFD失敗したら普通に。
普通にDLLに分離してもいいと思うけど。
0265名前は開発中のものです。
04/07/04 21:13ID:cPwRxDVpA ++
loop
で3400msくらいかかった。
セレロン1.7Gですた。
みんなのも気になるよ。
晒してくれぃ。
0266名前は開発中のものです。
04/07/04 21:51ID:lrgpw4Tf0267名前は開発中のものです。
04/07/04 23:04ID:AwxSjHBx当たり判定の具体的なルーチンを知りたい
0268名前は開発中のものです。
04/07/04 23:15ID:Tz1UlT+e当方、Pen4 2.4CG :XPで
2100msぐらいだったかな。
timeGetTime と GetTickCount の両方で測っても変わらなかったけど。
0269名前は開発中のものです。
04/07/04 23:34ID:QCSFfhv9当たり判定を細かくやってるみたいだけど処理落ちするってことは弾の量はかなり多めなんだよな
たぶん弾速はそれほど早くないと思うが速度の速い弾以外は1フレーム1回当たり判定で十分なんじゃないか?
0270名前は開発中のものです。
04/07/05 00:12ID:vHkGkVbrgettime x,5:gettime y,6:gettime z,7
print "" + x + "/" + y + "/" + z
repeat 10000000
A ++
loop
gettime x,5:gettime y,6:gettime z,7
print "" + x + "/" + y + "/" + z
stop
--
こんな感じで計測してみた。
Pen3 800MHz で 約4250ms でした。
…しかし、抜けると分かっててもwaitのないループをHSPで実行するのはちょっと気持ち悪い。
0271名前は開発中のものです。
04/07/05 00:14ID:pTJ3lo220272名前は開発中のものです。
04/07/05 00:22ID:SDlmg/4R0273名前は開発中のものです。
04/07/05 00:32ID:pTJ3lo22・・・ごめん、ネタがつまらんね('A`)
それはおいといて、パフォーマンスカウンタ使おうと思うと思ったら
LARGE_INTEGER・・・面倒くさいな。
0274名前は開発中のものです。
04/07/05 00:39ID:K58VA1M50275名前は開発中のものです。
04/07/05 00:45ID:C/CG0pTe0276名前は開発中のものです。
04/07/05 04:54ID:qXVXjwAx2047ms
・・・オーバークロックでもするかな。。。
0277名前は開発中のものです。
04/07/05 09:28ID:3DSRAvMhIDT Winchip 200MHz 17695ms
Winchipマシンの方が桁違いに金がかかってるんだけどな・・・。
0278名前は開発中のものです。
04/07/05 09:45ID:9ti8XsbL0279名前は開発中のものです。
04/07/05 13:02ID:+nEAs13D#include "dsoundex.as"
timer
TIM1 = stat
repeat 10000000
A++
loop
timer
TIM2 = stat
RE = TIM2 - TIM1
mes RE
stop
gettimeより精度が良いらしい。
0280名前は開発中のものです。
04/07/05 13:14ID:+nEAs13D>>267
A1 = 自弾Xと敵Xの差
B1 = 自弾Yと敵Yの差
A2 = (-自弾サイズX<A1)&(A1<敵サイズX)
B2 = (-自弾サイズY<B1)&(B1<敵サイズY)
if (A2&B2)=1 : 当たり
みたいな感じでやってる。確かどっかの
ページで解説したやつをパクった。
>>269
自機のサイズが2*2で、移動量が1フレーム2〜4ドットにしてるから、
敵弾のスピードが1フレーム1ドット移動ならOKだけど、
もぅ少し速い弾(をメインにする予定)だとたまに抜ける時があるんですわ。
でも、ある程度場に残って邪魔する弾なんか作ったときは
参考にさせてもらうんで助言感謝
0281名前は開発中のものです。
04/07/05 14:46ID:axZG/CqA当たり判定はするが描画しないフレームが存在するようにする。
0282名前は開発中のものです。
04/07/05 15:10ID:KIC705X9LARGE_INTEGERは基本的に64bit整数型
0283名前は開発中のものです。
04/07/05 17:59ID:xyIT+t5Zすり抜けが嫌なら、弾のスプライトを進行方向逆に少し伸ばして長方形にすれば?
その場合回転使うと描画が重くなる可能性あるので16方向くらいで用意したほうが良いけど。
0284名前は開発中のものです。
04/07/05 18:45ID:+nEAs13D斜め長方形は無理でそ? 長方形で縦や横に大きく当たり判定が
取れたとしても、斜めだと正方形の当たり判定にせざるを得ないから、
こだわるとレイヤー作って色取得、みたいなことしなきゃならないっぽい。
0285名前は開発中のものです。
04/07/05 19:01ID:c3p/S4A+0286名前は開発中のものです。
04/07/05 19:18ID:C/CG0pTe誰も聞いてないし
0287名前は開発中のものです。
04/07/05 19:27ID:roeLUvRhスペック低いだけじゃないの?
0288名前は開発中のものです。
04/07/05 19:35ID:zUjbqKssよほど古いPCじゃない限り2Dシューティングで重くなるなんてことないと思うが
0289名前は開発中のものです。
04/07/05 19:47ID:FU0s4jcc前に作ったのはPenIII-500でも平気だった。
最近はDirectX自体がそこそこのスペック(CPU&VGA)を要求するから
DirectX使うならある程度切り捨てないとダメかもよ。
0290名前は開発中のものです。
04/07/05 21:05ID:+nEAs13D弾移動が1フレームに5ドットの時の当たり判定の場合
repeat 50 ;自弾50個
repeat 5 ;1ドットずつ5回動かす
自弾の移動処理
10命令くらい?
当り判定サブルーチンへ
loop
loop
*ATARI
repeat 20 ;敵数20
当り判定命令20くらい
loop
return
とすると、
50*((5*20*20)+10) = 100500命令
うちのPCでは、上のほうでやったベンチマークテストの方法だと、
100500命令実行するのに25〜30msくらいかかる。
今は大雑把にやって全然正確な値じゃないけど、
少なくとも60FPSを保つのに必須の1フレーム16msは大幅に越えて
しまうのよ。
(上のルーチンを見て、255が言ったように
組み方が悪い! と言う人が居たら是非、
もっと速く動く組み方を教えて欲しい!
お願いします!)
0291名前は開発中のものです。
04/07/05 21:21ID:T1MN9eXN0292名前は開発中のものです。
04/07/05 21:26ID:KiQiLVexマシンスペックは?
0293名前は開発中のものです。
04/07/05 21:34ID:+nEAs13Dセレロン1.7G
メモリは関係ないと思うけど、256ある
VRAMは16Mあるから、
わけわからんエフェクトつけない限り、
描画関連で遅くなることはまずないと思う。
0294名前は開発中のものです。
04/07/05 21:52ID:MIzlaErt最初に、5ドット進む距離を内包する正方形でも求めて、敵を絞り込んでから1ドットずつ絞り込んだ敵で判定しては?
その処理方法だとこれぐらいかな?
0295名前は開発中のものです。
04/07/05 22:12ID:+nEAs13Dお?それというのは、
敵が回りにいないのに当り判定をするのは無駄だから、
近い敵だけ探して判定すると言うこと?
まじゴメン、バカで理解できんかった・・・(='ω`)トホー
0296名前は開発中のものです。
04/07/05 22:16ID:9NpQ14pTつか少しくらいのすり抜け気にするな。
0297名前は開発中のものです。
04/07/05 22:19ID:9NpQ14pT0298名前は開発中のものです。
04/07/05 22:20ID:MIzlaErtそう。
5回、全敵に対してやるのはかなりの無駄だからなぁ・・・
できるだけ、絞り込まないと。
0299名前は開発中のものです。
04/07/05 22:22ID:Kz1aLSouいや、295さんと違い、わたしは弾のすり抜け問題なぞここを見て初めて認識したのですが。
es_checkで済ませ、すり抜けることがありうるなんて考えてもいなかった…。
294さんのおっしゃるのは、たとえば透明な、実際の弾よりも大きめのスプライトを一緒に飛ばして
それで簡易に当たり判定。
もしも判定がイエスならば、細かくさらに判定ということでしょうか?
0300名前は開発中のものです。
04/07/05 22:23ID:Kz1aLSou0301名前は開発中のものです。
04/07/05 22:42ID:+nEAs13D場に弾が200個あって5回判定すると1000、
近いのだけ抽出すれば、200回強で済むわけか。
今まで考えもつかなかったなぁ。これでかなり
処理速度が向上しそうだ、助言マジ感謝!
>>296
ゲームとして成り立つなら
気にしなくてもOKだとは思うけどねw
299氏も同じSTG製作ガンバロナー
0302名前は開発中のものです。
04/07/05 23:20ID:MIzlaErtある一定距離以上の弾は数フレーム間は判定をはしょってもいいな、と。
けど、FPSが揺れるから微妙か・・・
0303名前は開発中のものです。
04/07/05 23:24ID:Gm3z7601速度。
へんなテストばっかりだが。
0304名前は開発中のものです。
04/07/05 23:26ID:kc0/J2bA0305名前は開発中のものです。
04/07/05 23:27ID:ob4Ta5mK0306名前は開発中のものです。
04/07/05 23:29ID:+nEAs13D一定範囲内に入ったら細かくするってこと?
なんかこのスレの方々は、優しくレスくれて涙が出るよ、ありがとう!
@弾を中心に範囲を決めたレイヤーを打ち出し、
レイヤー内に対象が入ったら細かく判定する。
A弾と対象の差を求めて、対象と近づいた値のものだけを
判定する。
どちらの方法も 大雑把→詳細 と、2重の判定を
するってことになるね。ふむふむ。
Aで差を求めたほうが簡潔でいいかなぁ?
0307名前は開発中のものです。
04/07/05 23:42ID:MIzlaErtあー、302のことは、一定距離以上の弾は、初めから判定を数フレームやらないという意味ね。
説明しにくいけど
1フレームにnドット進むならmフレーム進むのはその弾中心の円内(半径mnドット)にいるはず。
逆に、自機も同じようにその自機中心の円内にいるはず。
とすると、円同士が重ならなかったら、mフレームはその弾との判定はしなくてもいい。
・・・って感じなんだけど、実装するとなるとちょっとめんどくさそうだ・・・
それに計算で逆に遅くなっても意味ないし、バグの原因を作りそうだな・・・
あんまり効力はなさそうでメンゴ(汗
0308名前は開発中のものです。
04/07/06 00:43ID:IGUAa5VBのやり方でいいんでない?
描画1フレーム中に「座標更新〜当り判定」を2回以上にする。
0309名前は開発中のものです。
04/07/06 00:45ID:IGUAa5VB遅い弾は小さくて大量
速い球はデカイor長くて小量
だし。
0310名前は開発中のものです。
04/07/06 01:22ID:7+H5IcQBそうすると当たり判定が一気に省ける。
弾幕系は当たり判定に関係ない弾が多いから。
0311名前は開発中のものです。
04/07/06 03:10ID:e7tYRum6もう一つのPC Duron 800MHz : Meで測ったら、2400msぐらい・・・
>>268とあんまり変わらない・・・
そういえば、前作ったシューティングゲー(DirectX無し)も>>268のPCより、Meの奴のほうがFPS出てるんだよね・・・
なんか、泣けてきた・・・
■ このスレッドは過去ログ倉庫に格納されています