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

HSP - Hot Soup Processor [7]

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/06/10 04:28ID:cbXY3kVC
前スレ
  HSP - 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/
0193名前は開発中のものです。04/06/28 21:08ID:82jGxrBZ
192は質問厨でFA?
0194名前は開発中のものです。04/06/28 21:47ID:xpaDtZCA
>>192ダ、ダマサレナイゾー
0195名前は開発中のものです。04/06/29 01:24ID:P9seitJL
じゃぁ俺が聞いてやろう。
これどうやってやるんですか?
0196名前は開発中のものです。04/06/29 01:30ID:UzIaGIft
正直、一見したところ自分の作りかけゲームと似ててアセッタ。
やってみたらシステムが違ってたんでチョト安心。
0197名前は開発中のものです。04/06/29 01:36ID:6PzRfFHx
183のことか?
どんな内容かよくわからん…
0198名前は開発中のものです。04/06/29 15:23ID:o7inAW02
マウスで二点をクリックしてその間の距離x,yをドット単位で表示するって
ソフト作りたいんですがどうすればいいでしょう?
0199名前は開発中のものです。04/06/29 15:31ID:Sak2YyiD
line , pset , mousex , mousey
onclick か stick か getkey
を使えば作れると思う。
0200名前は開発中のものです。04/06/29 17:32ID:o7inAW02
それらの命令を使ってもイマイチ作り方が分かりません。。。
0201名前は開発中のものです。04/06/29 18:30ID:y2Bsbg5D
つまり線引きたいのか距離を求めたいのかどっちなんだろ
0202名前は開発中のものです。04/06/29 18:45ID:o7inAW02
距離を求めたいのです。
点1から点2までは x方向に100ドット y方向に200ドットって感じで
0203名前は開発中のものです。04/06/29 18:46ID:JDDj5JLu
マウスクリックされた時にカーソルの座標を変数に退避して、
比較した結果を表示するだけなのでは?
なにがわからんの?
0204名前は開発中のものです。04/06/29 19:36ID:2CPEVs3D
距離の絶対値を求めたいのかと思ったら、YX座標差分かよ。
逝ってよし
0205名前は開発中のものです。04/06/29 19:40ID:p6Gd/hi0
HSPって10個くらい命令が分かればゲームが作れるって本当ですか?

作れない僕はアイデアがないのでそうか。
0206名前は開発中のものです。04/06/29 19:47ID:waoppLR7
命令の数をいくつ使おうが構わないと思わない?
自分の作りたいものを作るために命令の数を気にしますか?
0207名前は開発中のものです。04/06/29 20:21ID:6PzRfFHx
数当てゲームなら10個くらいでできるかもな
0208名前は開発中のものです。04/06/29 20:26ID:JDDj5JLu
>>205
キミは“作れない”のではなく“作らない”のだと気が付きたまえ
0209名前は開発中のものです。04/06/29 21:48ID:cTqVPSx5
;>>198
;適当に改造して使え

onclick *getMouse
stop

*getMouse
  ttlMsg = "x1:" + x + " y1:" + y ;前にクリックした点
  ttlMsg += " / x2:" + mousex + " y2:" + mousey ;今クリックした点
  dx = x-mousex ;距離 X
  dy = y-mousey ;距離 Y
  if dx<0 : dx = -dx
  if dy<0 : dy = -dy
  ttlMsg += " / dx:" + dx + " dy:" + dy
  title ttlMsg
  x = mousex
  y = mousey
stop
0210名前は開発中のものです。04/06/30 03:48ID:FRE0vG1B
みんななんだかんだいって親切だな(藁
0211名前は開発中のものです。04/06/30 16:43ID:yL8fpRHa
ここって本当にいい人ばかりですよ
0212名前は開発中のものです。04/06/30 20:09ID:zttbnhI4
悪い意味でね。
0213名前は開発中のものです。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:aGwEscVG
そういえば「どんな調べ方をすれば良いか」を質問する奴はいないな…
0217名前は開発中のものです。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:B6Q6nf2d
100で剰余取れ
0219名前は開発中のものです。04/06/30 22:41ID:OF+oSbUB
>>217
int hour:int minute:int second
を *TIME の次の行に入れてみ?

gettimeを繰り返し同じ変数で使うためには、いったん文字列型に変換したものを
数値型に戻してやる必要があるだろ?
0220名前は開発中のものです。04/07/01 13:27ID:m+/uT8hH
フルスクリーンのゲーム中に使えるツールを作るにはどうすればいいんですか?
0221名前は開発中のものです。04/07/01 14:19ID:v0OsxpsA
ゴミレベルどもがあげんな
0222名前は開発中のものです。04/07/01 14:50ID:S5zu2Amh
>>220 どうゆうツールなのか解らんが、 listbox じゃダメか?
0223名前は開発中のものです。04/07/01 15:56ID:Uuze0tzS
ageるやつには教えないのがルール
マ板逝け
0224名前は開発中のものです。04/07/01 16:03ID:RYLnutr9
(´_` )。。○(またsage厨か・・・)
0225名前は開発中のものです。04/07/01 16:09ID:bdPAbTo6
ここは質問するやつもsageじゃないとイカンのかよ・・白んかったぜ
0226名前は開発中のものです。04/07/01 16:52ID:AUY2dIBn
じゃage
0227名前は開発中のものです。04/07/01 21:49ID:l5RM1DE0
>>219
有難う御座いました

いま本見たら(変数は違いますが)、
hour=0:minute=0:second=0というのがありましたラベルのあとに。
0228名前は開発中のものです。04/07/02 12:32ID:HmaAkL9+
そゆことで〜^^
0229名前は開発中のものです。04/07/02 14:16ID:bVarop9e
クズども沈んでろ
0230名前は開発中のものです。04/07/02 14:53ID:MU/fqUCV
>>225
下げてもIDでるからな
0231名前は開発中のものです。04/07/02 15:13ID:HmaAkL9+
0232名前は開発中のものです。04/07/02 15:21ID:KRyGDsPC
うるせー馬鹿
0233名前は開発中のものです。04/07/02 18:36ID:93YoT3Fw
文字列変数の内容の一部を削除する命令ってありますか?

a="abcdefghi"

これのeとfを削除して

a="abcdghi"

に変えるという意味です。

命令リファレンスで探したところ、
それらしいのは
notesel
というのしか無かったのですが、

a="abcdefghi"
notesel a
notedel 5
mes a
stop

とやっても、変わっていません。
何か方法はないでしょうか
023423304/07/02 18:37ID:93YoT3Fw
すみません

>命令リファレンスで探したところ、
>それらしいのは
>notesel
>というのしか無かったのですが、

noteselじゃなくてnotedelでした
0235名前は開発中のものです。04/07/02 18:45ID:abSGm/30
( ´Д`)strmid
0236名前は開発中のものです。04/07/02 20:57ID:WDxKMIMo
( ´Д`)getstr
023723304/07/02 21:10ID:93YoT3Fw
>>235
strmidでやってみても、
文字列の一部をコピーするだけみたいなんですが・・・。

a="abcdefghi"
strmid b,a,5,2
stop

こうやっても
aの中身はabcdefghiのまま、
bの中身はefが入ってました。

>>236
削除する位置を何文字目かで決めたいので
getstrでは駄目みたいです。

色々言ってすみません
0238名前は開発中のものです。04/07/02 21:15ID:JA+Q5yhZ
strlen(文字列の長さを調べる)
instr(文字列の検索をする)
strmid(文字列の一部を取り出す)
0239名前は開発中のものです。04/07/02 21:15ID:abSGm/30
>>237
誰 が 1 回 の 命 令 で で き る と 言 っ た 。
あ、あとstrlenを忘れてた。
024023304/07/02 21:29ID:93YoT3Fw
a="abcdefghi"
b="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+qdwAE
…質問がアレな割には飲み込み早いな…
0242名前は開発中のものです。04/07/02 22:11ID:mGc4qyci
こういう人を「素質がある」と言います。
0243名前は開発中のものです。04/07/02 23:37ID:Xs2Xk3aN
意外な展開
0244名前は開発中のものです。04/07/03 04:41ID:2WodAWEa
じゃあ俺は「天才肌」やな
0245名前は開発中のものです。04/07/03 16:44ID:UDxUOEED
・・・あいつ餅食べてるのに飲み込みが速いな・・・
0246名前は開発中のものです。04/07/03 18:10ID:XlhOXqKC
・・・はじめてとか言ってた割に飲み込むのためらわないのな・・・
0247名前は開発中のものです。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
>>246
下ネタかよ!
0249名前は開発中のものです。04/07/03 19:38ID:pdzdu8d1
>>246
ジワジワワラタ
0250名前は開発中のものです。04/07/03 21:58ID:7oBXh8xl
簡単に書くと。

a="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
けど、それだと先頭のやつしか除去できないし、a
に含まれないのをbにいれると変になるとおもうが...
0252名前は開発中のものです。04/07/03 22:32ID:ROS80UqG
a="abcdefghijef"
b="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:T231Rcst
a="abcdefghijef"

a=""
mes a
stop

aを全部除去する
0254名前は開発中のものです。04/07/04 18:56ID:cPwRxDVp
HSPで弾幕シューゲーを作るにあたって、
どうしても越えられない壁がある。処理速度。
当たり判定が突き抜けないように、1ドット移動ごとに当たり判定
ルーチンを巡らせる。
100個くらいのところでバテる。
2ドットごとに妥協して、さらに作り進めていくと、
自弾の処理でまたバテる。

・・・・・・・・・・どうしても弾幕ゲームが作りたいんだ・・・
HSPの限界はよく分かった・・・。
誰か、頼むからプログラムを速く走らせるコツを
教えてくれ・・・
0255名前は開発中のものです。04/07/04 19:00ID:T231Rcst
> HSPの限界はよく分かった・・・。
それ組み方の限界ジャーン?
0256名前は開発中のものです。04/07/04 19:10ID:P4QR7izT
プラグイン何使ってんだ?
0257名前は開発中のものです。04/07/04 19:18ID:Lnm60bAX
ルーチンを軽くする
0258名前は開発中のものです。04/07/04 19:49ID:WDudAYFD
計算の部分をマシン語で書く。
0259名前は開発中のものです。04/07/04 20:46ID:cPwRxDVp
>>255
そう言われるとそうだな、そう訂正するw

プラグインは
hspext:hspdxa:dsoundex
ジョイパッドの入力にhmmを使う予定

サイン・コサインは予め256コのテーブルに
保存して使ってるけど、狙撃するときに
アークタンジェント(ematan)を求めてる。
これって相当遅くなるのかな?

マシン語か、マシン語とアセンブラの違いも分からない
俺じゃかなり無理ぽいな
0260名前は開発中のものです。04/07/04 20:52ID:WDudAYFD
マシン語はCとかで書いてオブジェクトファイルから取ればいい。
マシン語がバイナリで、アセンブラがmov *, *とか。
0261名前は開発中のものです。04/07/04 21:03ID:T231Rcst
それ、ヒープ領域のコード実行が将来のWindowsで不可能になることまで
考慮して言ってるのかな
0262名前は開発中のものです。04/07/04 21:05ID:WDudAYFD
実行時に切り替えるようにすれば?
0263名前は開発中のものです。04/07/04 21:05ID:Lnm60bAX
パソコン買い換える。
0264名前は開発中のものです。04/07/04 21:09ID:WDudAYFD
VirtualProtectで実行権付けるのに成功したらマシン語
失敗したら普通に。


普通にDLLに分離してもいいと思うけど。
0265名前は開発中のものです。04/07/04 21:13ID:cPwRxDVp
repeat 10000000
A ++
loop
で3400msくらいかかった。
セレロン1.7Gですた。
みんなのも気になるよ。
晒してくれぃ。
0266名前は開発中のものです。04/07/04 21:51ID:lrgpw4Tf
プログラム晒してくれればこっちの環境で実行した結果出すよ
0267名前は開発中のものです。04/07/04 23:04ID:AwxSjHBx
>>254
当たり判定の具体的なルーチンを知りたい
0268名前は開発中のものです。04/07/04 23:15ID:Tz1UlT+e
>>265
当方、Pen4 2.4CG :XPで
2100msぐらいだったかな。

timeGetTime と GetTickCount の両方で測っても変わらなかったけど。
0269名前は開発中のものです。04/07/04 23:34ID:QCSFfhv9
>254
当たり判定を細かくやってるみたいだけど処理落ちするってことは弾の量はかなり多めなんだよな
たぶん弾速はそれほど早くないと思うが速度の速い弾以外は1フレーム1回当たり判定で十分なんじゃないか?
0270名前は開発中のものです。04/07/05 00:12ID:vHkGkVbr
>>265
gettime 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:pTJ3lo22
Cel300MHz 7681ms
0272名前は開発中のものです。04/07/05 00:22ID:SDlmg/4R
Pen4 2.80GHz 1422ms
0273名前は開発中のものです。04/07/05 00:32ID:pTJ3lo22
地球シミュレータ 0ms

・・・ごめん、ネタがつまらんね('A`)


それはおいといて、パフォーマンスカウンタ使おうと思うと思ったら
LARGE_INTEGER・・・面倒くさいな。
0274名前は開発中のものです。04/07/05 00:39ID:K58VA1M5
AthlonXP1600+ 1.4GHz 1312ms
0275名前は開発中のものです。04/07/05 00:45ID:C/CG0pTe
AthlonXP 2.0GHz 953ms
0276名前は開発中のものです。04/07/05 04:54ID:qXVXjwAx
Pen4 2.4GHz
2047ms
・・・オーバークロックでもするかな。。。
0277名前は開発中のものです。04/07/05 09:28ID:3DSRAvMh
AthlonXP2600+(Barton) 1.92GHz 953ms
IDT Winchip 200MHz 17695ms

Winchipマシンの方が桁違いに金がかかってるんだけどな・・・。
0278名前は開発中のものです。04/07/05 09:45ID:9ti8XsbL
いつからここはベンチマークスレになったんだ?
0279名前は開発中のものです。04/07/05 13:02ID:+nEAs13D
265だが、これで計った。
#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:KIC705X9
>>273
LARGE_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
>>282
誰も聞いてないし
0287名前は開発中のものです。04/07/05 19:27ID:roeLUvRh
しかし100位の描画と判定で重くなるって
スペック低いだけじゃないの?
0288名前は開発中のものです。04/07/05 19:35ID:zUjbqKss
そういえば最低動作環境ってどれくらいを想定して作ってる?
よほど古いPCじゃない限り2Dシューティングで重くなるなんてことないと思うが
0289名前は開発中のものです。04/07/05 19:47ID:FU0s4jcc
PenIII-800&GeForce2くらいで動きゃ良いかなとは思ってるけど、
前に作ったのはPenIII-500でも平気だった。

最近はDirectX自体がそこそこのスペック(CPU&VGA)を要求するから
DirectX使うならある程度切り捨てないとダメかもよ。
0290名前は開発中のものです。04/07/05 21:05ID:+nEAs13D
自弾(50個)vs敵(20匹)が画面上いっぱいで
弾移動が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:T1MN9eXN
HSPを卒業して他の言語で組む
0292名前は開発中のものです。04/07/05 21:26ID:KiQiLVex
>>290
マシンスペックは?
0293名前は開発中のものです。04/07/05 21:34ID:+nEAs13D
>>292
セレロン1.7G
メモリは関係ないと思うけど、256ある
VRAMは16Mあるから、
わけわからんエフェクトつけない限り、
描画関連で遅くなることはまずないと思う。
■ このスレッドは過去ログ倉庫に格納されています