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

HSP - Hot Soup Processor [13]

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。2006/08/08(火) 04:26:45ID:lDqcHzca
       (  ,,,)
        .(  ,,)      スクリプト言語 HotSoupProcessor について
        ( ,,).        ゲーム製作の視点から、また〜りと語り合うスレ。
     , -──- 、
    (,;::-──-; )-、
     .|` ̄ ̄ ̄´;;|ヽ l   * 質問する前に検索してみる事
     l;    :::;;;l-' /   * ヲチ、ネタなどはスレ違い
    ,-ヽ───.'-、´..   * 歴代スレ、関連サイトは >>2-4 あたり
    ヽ ──── '

  ONION software (本家)
   http://www.onionsoft.net/
0817名前は開発中のものです。2006/11/27(月) 02:20:14ID:C2CtJy9D
一日前?
0818名前は開発中のものです。2006/11/27(月) 02:25:58ID:zncTiRKv
書くのに1週間掛かったんだヨ
0819名前は開発中のものです。2006/11/27(月) 03:13:08ID:GK3bKuht
オバへ厨が自分宛に書いたから1日感覚になったんだヨ
08208162006/11/27(月) 10:17:28ID:QFSkS0ye
あースマン。俺がオバヘ厨のレス読んだのが一日前なんだ。日付も見てない。
正直その後は読まずに書き込んだ。悪かった日付部分は無視してくれ。

要するに俺が言いたいのはHSPは簡単なことでも何でもプラグインなのはどうなのか?
って事だ。これだから本家で聞く側も教える側もプラグイン任せになるだろ。

他のスクリプト言語でも実装されてる様な簡単な事くらい自力で出来た方が良いだろ?

○○をするプラグインありますか?/○○を使えば簡単に出来ます
なんてやりとり他の言語で聞いた事ないぞ?

ていうかプラグイン使えば何でも出来るのは当たり前だろ。
機能が組み込まれてなくても自分で実装して動的リンクすれば良いだけなんだから。


0821名前は開発中のものです。2006/11/27(月) 10:34:29ID:+wu8k/E3
それがHSPの仕様だ。
0822名前は開発中のものです。2006/11/27(月) 10:41:27ID:wJqiEzrg
C++を始めてからHSPなんて触ってもいません
0823名前は開発中のものです。2006/11/27(月) 15:22:18ID:Pzz2cNNq
>>820の言いたいことはだいたい分かった。

でも、C言語だってライブラリを使うためにヘッダー読まなきゃいけないし、
DirectX使うのにSDKも必要じゃない。
そう考えるとプラグインから機能を呼び出すのは別に不自然ではない・・・と思わん?
(標準サポートのプラグインが少ないって言いたいのかもしれないけど)

まぁ、言語そのものに命令セットがあるのがインタプリタの特徴で、
HSPが"手軽さ"を謳っているのならプラグイン無しでも動作するのが望ましいけどさ。

とりあえずポインタを正式な文法にしてほしい
なんかすぐ剥がれそうな塗装みたいで怖い。
0824名前は開発中のものです。2006/11/27(月) 16:12:14ID:dwx+JNY1
あるbufferに画像を読み込んだとして、その画像の縦横のサイズを取得するにはどうしたらよいのでしょう?
いろんな画像を読み込むので事前にはわかりません。おねがい。
0825名前は開発中のものです。2006/11/27(月) 16:39:16ID:i6PU+3vS
ginfo
0826名前は開発中のものです。2006/11/27(月) 16:48:50ID:dwx+JNY1
ginfo_sizexだとウインドウ枠も含めた値が帰ってきませんか?
ウインドウ枠の大きさなどはOSの設定にもよると思うので
純粋に画像の大きさを取り出したいのです。。。
0827名前は開発中のものです。2006/11/27(月) 16:49:41ID:RUZy2SoF
winxでおk
0828名前は開発中のものです。2006/11/27(月) 18:40:59ID:Mtxdo3eL
>>823
C/C++でヘッダをインクルードするのは静的リンクで実行ファイルのバイナリに埋め込まれるからインタープリタが標準で命令セットもってるのと同義だろ?(もちろん動的リンク用のヘッダ以外)

DirectXのラッパーは確かに良い。正直ソースを上から下に順次実行+gotoな言語でああいう高レベルなライブラリを手軽に使える所は評価できる。

ただ、HSPは標準でGUI組めるだろ?けどGUIで一般的ないわゆるメニューバーやコンテキストメニュー、ステータスバー等でプラグイン使うのはそれ位組み込んで欲しいと思う。

逆にもっと高度なコンポーネント群がプラグインなら納得いくが、リストとかタブとかスプレッドシートとか テキストエディット用フレームワークとかは見かけないだろ?

例えばHSP製ゲームってSLGも良く見るからこういう高レベルGUIコンポーネントとMDIが使えたりすると需要あると思う。けど流石にそれを組み込むのは視野には入れないだろう。そういう時のプラグインじゃないか?

コールバック関数使ったり実数使ったりするのにプラグインは使い所違う気がするよ。

それでもプラグイン刺してWIN32 API呼んだりマシン語埋め込んだりしてHSP使う奴居るだろ?スクリプト言語使ってまでクリティカルな部分に対処しようと思うか?

そもそもそれは本当にクリティカルなのか?言語がちょっとした事でハードル上げてるんじゃないか?って思った事があった訳よ。HSPの標準命令だけでXMLパーサ書いた時にさ。

この時はちょっとしたテキスト操作でそこそこのコード量になった。せめてストリームとリーダ/ライタの概念位あったら良かったんだが
良くてnote系命令だろ?んでプラグイン・・・この悪循環は厨が訳分からん質問したり既出質問の無限ループにも繋がる。

プログラミング&ネット素人にはキツイ環境とは思わんか?
自分で組めない、情報が探せない→モチベーション下がるってならない?
0829名前は開発中のものです。2006/11/27(月) 18:46:37ID:Mtxdo3eL
すまん、改行大杉で怒られたんでとことん削った
0830名前は開発中のものです。2006/11/27(月) 20:03:00ID:+n0PXIKJ
そんなあなたに ActiveBasic
・BASIC、構造化プログラミング、OOP、
 ユーザーのレベルにあったスタイルでプログラミング可能。
・Win32API、COM、DirectXもサポート。
・HSPと違い、アルゴリズムも素直に記述できる。
・ネイティブコードを出力できる。
・さらに、GUIをRADツールでつくれます。
0831名前は開発中のものです。2006/11/27(月) 20:10:24ID:TV23MZgL
こんな威勢の良いやつが今までどこにいたんだろう
0832名前は開発中のものです。2006/11/27(月) 21:10:57ID:Pzz2cNNq
>>828
そんな話しても俺には分からないよ。
そんな長文書くくらい知識があるなら、
そんな長文書くくらいHSPが嫌いなら、
自分で言語作るなり他の言語で書くなりしたらどうだ。アホらしい。
0833名前は開発中のものです。2006/11/27(月) 21:15:16ID:+n0PXIKJ
なんだかんだで、HSPで作られたフリーゲームは多い。
0834名前は開発中のものです。2006/11/27(月) 21:19:28ID:iq8+XlZi
>>828先生の次回作にご期待ください。
0835名前は開発中のものです。2006/11/27(月) 22:24:52ID:7IwKMt0e
>>828
激しく同意はする
同意は得られないと思うが
0836名前は開発中のものです。2006/11/28(火) 00:18:38ID:GqfKPaui
Javaやり始めてから、HSPってなんのためにあるんだろうって思うようになった。
0837名前は開発中のものです。2006/11/28(火) 01:28:41ID:6hvEnoGI
Javaのゲームなんてやらねーよ
0838名前は開発中のものです。2006/11/28(火) 01:34:19ID:eDGg4QvK
java重くてヤダ
0839名前は開発中のものです。2006/11/28(火) 05:05:42ID:BBB7xQBo
hspdxfixでDirectX使ってるんだけど、es_mesが死ぬほど遅いんです。
ナンデ?
ちなみに16bitカラー、D3Dはオフ。フルスクリーン(ウィンドウモードだと若干速くなる)
GeForce4MX440。

es_mesしてる暇あったら裏バッファにmesったやつを
es_putしたほうが速いンですが・・・。ナンデ?
0840名前は開発中のものです。2006/11/28(火) 09:49:17ID:QS0/TpKk
仕様
0841名前は開発中のものです。2006/11/28(火) 13:21:23ID:KCCRSyrJ
>>839 標準mesとes_fmesの差を、下記2スクリプトで比較してみたが、
俺の環境では、「死ぬほど遅い」という程の差はなかった
(フレーム更新時間の平均値の差:0.5ミリ秒程……小さくはないが、死ぬほどでは。)
とりあえず、問題が発生するスクリプトを出してみてはいかがか。

;---標準mes
#uselib "winmm.dll"
#cfunc timeGetTime "timeGetTime"
#define ume color 1,1,111:boxf 0,0,sx,sy:color 255,255,255
sx=640:sy=480:wmode=0:screen 0,sx,sy,wmode:color 1,1,111:ume:x=0:y=0:title "標準mes"
wait 100:t0=0.0f+timeGetTime()
repeat
pos x,y:mes "hspdxfixでDirectX使ってるんだけど、es_mesが死ぬほど遅いんです。"+strf("%3.8f",(-t0+timeGetTime())/(cnt+1))
y+=16:if (y> 480) {y=0:x+=1:ume:if (x> 31) {x=0}}
wait 0:stick s:if s:break
loop
end

;---HSPDXFIX-es_fmes
#include "hspdxfix.as"
#define ume es_boxf 0,0,sx,sy
sx=640:sy=480:bpp=16:pal=0:wmode=1:vsw=2
es_ini:es_screen sx,sy,bpp,pal,wmode:color 1,1,111:ume:x=0:y=0:title "DXFIX-es_fmes"
wait 100:t=0.0f:es_sync
repeat
pos x,y:es_mes "hspdxfixでDirectX使ってるんだけど、es_mesが死ぬほど遅いんです。"+strf("%3.8f",t/(cnt+1))
y+=16:if (y> 480) {y=0:x+=1:ume:if (x> 31) {x=0}}
es_draw:es_sync 0,vsw:t+=stat:wait 0:stick s:if s:break
loop
es_bye:end
0842名前は開発中のものです。2006/11/28(火) 15:32:24ID:BBB7xQBo
すまそ、とりあえずこんなの書いたんだけど、俺の環境だと左上のFPSが
40くらいしか出ないで動きがガタガタでしよ。ウインドウモードにしても60を切っちゃう。
この程度の文字数で落ちてしまうんでは、ゲームなんかで他の処理を書いたら。。
最後の手段としては、裏画面mes→putすればいいんだろうけど、
俺の環境だけ何故って思うとどうしても突っ掛かるorz

#include "hspdxfix.as"
es_ini:es_screen 640,480,16,0,0,0
sdim death,128:death="hspdxfixでDirectX使ってるんだけど、es_mesが死ぬほど遅いんです"
*main
time++
getkey esc,27:if esc:es_bye :end
es_cls
repeat 30
if (cnt\2)==0:pos 20+(time\50),cnt*15
if (cnt\2)==1:pos 70-(time\50),cnt*15
es_mes death
loop
es_getfps fps
pos 0,0:es_mes str(fps)
await:es_sync
goto *main
0843名前は開発中のものです。2006/11/28(火) 17:18:45ID:cr69+3rI
>>842
よく分からないけど、そのソースで実行してみた。

Athron 2500+ , 767MB , Radeon 9800
フルスクリーンは 60fps
ウィンドウモードなら、780fps
0844名前は開発中のものです。2006/11/28(火) 17:25:22ID:cr69+3rI
>>841
試した。
標準mes は 1.5
es_fmes は 0.5
後者のほうが早かった。
0845名前は開発中のものです。2006/11/28(火) 17:31:16ID:wdubaFPR
>>842
手段も何もそれが一般的だと思うがどうよ…

アンチエイリアスする余裕すらある。
mesするのは最初の一回で良いんだから。
0846名前は開発中のものです。2006/11/28(火) 18:49:17ID:KCCRSyrJ
>842 を動かしてみたけど、フルスクリーンで60fps出てる。
…が、es_sync のパラメータに-1,2とか与えると、fpsが落ちたりするから
遅くなる原因は、ディスプレイドライバの設定にあるんじゃないかと思った。
("垂直同期"の設定が"オン"固定で"アプリ制御"じゃない、とか。…適当。)

ただ、俺も >845 の言うとおり、
画面いっぱい分の文字列を、毎フレーム・全部 mesする力技な処理よりは、
文字列の内容が変わったフレームのみ・必要な部分のみ mesする処理を採るべきだと思う。

動作速度が遅いHSPで、60fpsで動くゲームを作ろうとするのなら、
描画や計算の無駄を省く等の小細工を弄して、速度低下を回避しないと…。
0847名前は開発中のものです。2006/11/28(火) 21:08:59ID:1PQwrqFn
全部書き換えるにしても、es_clsよりも書き換える部分だけ塗りつぶした方が良くないか?
0848名前は開発中のものです。2006/11/28(火) 21:36:56ID:QS0/TpKk
HSPDXの速度表。参考までに。
ttp://www.hspdx.net/hspyarou/dxbench/draw.html
0849名前は開発中のものです。2006/11/28(火) 23:23:31ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>848 ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0850名前は開発中のものです。2006/11/28(火) 23:24:03ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>848 ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれん。
逆に、うちので動けば他はOKかなと思ってしまうけど。
0851名前は開発中のものです。2006/11/28(火) 23:29:17ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0852名前は開発中のものです。2006/11/28(火) 23:30:40ID:BBB7xQBo
ちょ、人多杉だったんで更新押しまくった・・・素で恥
(´・ω・`) 完全厨になちまた
(´・ω・`:
(´・ω・:;
(´・ω;:.
(´・;:',.
(´;.:',
(:;',.
:';.,
;.',
',
.
.
0853名前は開発中のものです。2006/11/29(水) 00:12:32ID:i+v7IWdt
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0854名前は開発中のものです。2006/11/29(水) 00:13:03ID:i+v7IWdt
851 名前:名前は開発中のものです。[sage] 投稿日:2006/11/28(火) 23:29:17 ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0855名前は開発中のものです。2006/11/29(水) 00:14:06ID:i+v7IWdt
851 名前:名前は開発中のものです。[sage] 投稿日:2006/11/28(火) 23:29:17 ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847 
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0856名前は開発中のものです。2006/11/29(水) 00:18:50ID:i+v7IWdt
851 名前:名前は開発中のものです。[sage] 投稿日:2006/11/28(火) 23:29:17 ID:BBB7xQBo
みんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847 
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。

>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0857名前は開発中のものです。2006/11/29(水) 01:01:18ID:pljl/4fq
うちもやってみたけど遅いよ
ウィンドウで、だいたい50fpsくらい。
何も表示無しだと495。
0858名前は開発中のものです。2006/11/29(水) 01:05:16ID:pljl/4fq
あ、うそですた。
表示しても500超えた。
0859名前は開発中のものです。2006/11/29(水) 10:41:04ID:Q0XWhUUM
ノートでvramが足りてないんじゃないの?
メインメモリをつかっちゃって遅くなってるのでは・・
とりあえずvzの設定を裏vramを使わない設定にして
常駐もしないようにしてみたら
0860名前は開発中のものです。2006/11/29(水) 23:19:49ID:6V6zK9p+
http://www.noritake-itron.jp/cs/hsp/
会社がHSPの紹介してるの初めて見た。
0861名前は開発中のものです。2006/11/29(水) 23:31:45ID:ziMu7viB
何かを大幅に間違えてHPSが組み込み系用にも配布されたら大爆笑物だな。
0862名前は開発中のものです。2006/11/29(水) 23:34:02ID:pljl/4fq
HPSでググったらハーリーポッター検索エンジンってのが出てきた
0863名前は開発中のものです。2006/11/29(水) 23:45:11ID:Q0XWhUUM
HPSでこんなんが出てきた
ttp://vam.anest.ufl.edu/sem/hps-manikin.png
ttp://www.med-smart.org/images/meti-hps.jpg
0864名前は開発中のものです。2006/11/30(木) 07:31:01ID:S43SaZcc
>>860
このページ一番下まで表示されてないんじゃないかと不安になる
デザインだな。

コンテンツは面白いけど。
0865名前は開発中のものです。2006/11/30(木) 16:20:58ID:ADuPoubu
あのさあてめえら、そんなにHSPの速度が信用できないなら、アセンブリ言語やりゃ
いーじゃん。
0866名前は開発中のものです。2006/11/30(木) 16:52:18ID:hHDh5/GB
信用できないからと言うだけで、調査も実験もせずに別の道に逃げるのは違うと思うが。
0867名前は開発中のものです。2006/11/30(木) 18:13:18ID:kkSPTvf1
アセンブリが必ずしも速いとは言えなそうだが、HSPよりは速いのは確実
0868名前は開発中のものです。2006/11/30(木) 19:53:54ID:zh01//gp
>>865にマジレス&ネタレスしてるやつはキモメン
縦読みしてみろ。
0869名前は開発中のものです。2006/11/30(木) 20:14:38ID:oIkJI0/A
      _      
     ´/´─`ヽ  
.    iπノノ从))〉 
.   ,从i ゚ ヮ゚ノリ゙ 
     /》Y《ヽ  
    (ソ元.レ')  
    く_/_|_ヽ    

      ヽ   
     ヽ ノ   
    '´ヘソヽ  
   i |〃^)))〉 
   ソリ゚ ー゚ノリ | <巫女さん
   く‖y ||フ| 
     /i〒i|  | 
    〈/人|〉 川 
    _
   '´   ヽ
   ! 〈.ノハ))ノ
.   、ソ゚ ー゚人   
  ソく‖y ||つ
   (/i〒i|丿
   〈/._|_リ
     __
  「,'´r==ミ、
  くi イノノハ)))
   | l|| ゚ヮ゚ノl|  
   j /ヽ y_7っ=
  (7i__ノ卯!
    く/_|_リ
0870名前は開発中のものです。2006/11/30(木) 20:17:02ID:oIkJI0/A
誤爆した…。申し訳ない。
0871名前は開発中のものです。2006/11/30(木) 20:42:18ID:GlFEcdGe
あいのーさじあゃてん?
0872名前は開発中のものです。2006/11/30(木) 21:23:16ID:QD5FLI/L
>>865
愛の一さじ?
わけわかめ
0873名前は開発中のものです。2006/11/30(木) 21:54:05ID:GlFEcdGe
ちょくとのページが消えてる?
0874名前は開発中のものです。2006/11/30(木) 22:05:04ID:GlFEcdGe
あれ?アクセスできた
鯖落ちだったんかな?
0875名前は開発中のものです。2006/12/01(金) 00:50:29ID:5AZIrDQJ
いや☆ぼーんおめ
0876名前は開発中のものです。2006/12/01(金) 01:40:58ID:pup+aqZp
ありがとうございます (゚ω゚)ゞ
0877名前は開発中のものです。2006/12/01(金) 02:13:52ID:6OrOzyMv
つーか123作品って。
これって入賞しても嬉しくないんじゃないか?w
0878名前は開発中のものです。2006/12/01(金) 02:38:39ID:8O5ugdav
いや☆ぼーんのいいところは後ろ向くところだな
0879名前は開発中のものです。2006/12/01(金) 10:01:11ID:zHdvSz/e
>>877
他人を蹴落とすためのコンテストじゃないってことさ。

それにただ選ばれたってだけならありがたみもない
かもしれないが、主催者側がわざわざ身銭切って
あれだけの数選ぶってのが気合入っててよくない?
0880名前は開発中のものです。2006/12/01(金) 10:47:23ID:74p8eAlU
otu
0881名前は開発中のものです。2006/12/01(金) 11:12:58ID:Ul/tWyMn
禿和賞の人は宝箱もらえませんのでよろしく。
0882名前は開発中のものです。2006/12/01(金) 15:29:43ID:o4gCMgsb
>>879
ああ、なるほどなぁ。
確かに競争率が高くなって入賞枠が削れると、
毎回同じ作者が上位を占めちまうもんなぁ。
HSPの敷居を更に低くしていく、知名度を上げるという点では、多く選ぶのも
悪くはないのか。

それにしても、宝箱はハズレだと思うのは俺だけか?
0883名前は開発中のものです。2006/12/01(金) 19:00:05ID:x1Z6ntkf
俺は宝箱欲しかったよ
orz
0884名前は開発中のものです。2006/12/01(金) 21:02:43ID:B7Q+wJfg
しかし今回はこれが本命だろうって物がないな。
小粒ぞろいというか。知らんだけかもしれないけど。
音ゲーのあれくらいか。
0885名前は開発中のものです。2006/12/01(金) 21:09:35ID:x1Z6ntkf
音げーはインパクト賞あげてもいいけど、俺にはついていけないよ
0886名前は開発中のものです。2006/12/01(金) 21:28:31ID:wesjDyBM
いやぼーん今やった。面白かった。
というか、どうしてこんなに快適に動くのか理解できんかった。
俺は未だにDXの使い方が分かってないようだ・・・。
HSPDXFIXのスプライト機能って速いの?
0887名前は開発中のものです。2006/12/01(金) 21:47:37ID:6+Kb0DUQ
>>886
描画の早さより
自動移動とか自動アニメとかで余裕が出ると思う
あと、当たり判定とか
0888名前は開発中のものです。2006/12/02(土) 00:00:13ID:pup+aqZp
ありがとうございます (゚ω゚)ゞ
スムーズな動作は、HSPDXFIXの力によるところが大きいと思います。

基本的に、>846の最後2行で述べられていることを心がけています。

考え方の一例ですが、HPゲージの処理。
普通にゲームが進行しているなら、ゲーム中の全フレーム数のうち
HP量に変化が起こるフレームは、ほんのわずかである(確率でいえば1%未満?)ことと、
(HPバーを描画させる命令の処理時間) > (if文でHPが変化したことを判断する時間)
であることを考慮して、
HPゲージ量に変化があったときのみ描画処理を行うようにしたりしています。

そのHPゲージの描画処理も、最初はes_boxfやex_copyなどを使って行っていましたが、
D3Dスプライトの機能をうまく利用すれば、矩形(■)パターンを横に
拡大して表示させておくだけで済むうえ、処理速度も速いことに気づいたため、
そちらの処理に差し替えました。


スクリプト中の計算などの無駄については、
http://www.interq.or.jp/www1/helohelo/elf/M_HSPmem.html
の人の書かれているメモ書きなどが参考になります。

自分でも独自に、書き方が複数考えられるスクリプトについて
こまめにベンチスクリプトを起こし、調査して、高速化につとめました。
(例)
・if A or B : Do  の記述は、
・if A :Do
 if B :Do 2文に分けたほうが速い。 …とか。

その他、実数演算を一切排除。配列変数の読み書きがけっこう遅いので極力排除
あたりでしょうか。…こんなこと言ってると、またC言語使いの人に煽られそうですが。
0889名前は開発中のものです。2006/12/02(土) 01:38:54ID:AoQRSBka
計算式の小細工は当たり判定とか最も近い敵をサーチするとか(誘導弾等)
何千、何万回ループする可能性のある場面にはかなり有効だけど
実際何フレーム稼げるんだろ…

あと、例えばこの敵のサーチでは律儀に平方根取る必要はないし、
毎フレームのサーチを1フレームおきにしてしまう、60フレームで追跡を諦める、
弾の数そのものを減らす等々
そういうアルゴリズムそのものを見直すのも効果的。

"変化したことを判断する" この考えもすごくいいヨ
0890名前は開発中のものです。2006/12/02(土) 01:57:17ID:/SCokOQc
HSP3でのセーブやロードの質問です。

配列変数を使わなければちゃんと保存されるのですが、
dimやsdimを使うとa.0だけ保存されてそれ以降のa.1 a.2などが保存されません。
どうすればいいのでしょうか?


↓のサンプルをそのまま試してもHSP2.6だとちゃんと動くのですがHSP3だとちゃんと保存されません。
ttp://sapporo.cool.ne.jp/daturyoku/HSP/jitugi/rpg_01.html

ttp://72.14.253.104/search?q=cache:pHb1U77pzF4J:noise.b7m.net/Lang/HSP/hsp_m7.html+sdim+HSP+%E3%82%BB%E3%83%BC%E3%83%96%E3%80%80bsave&hl=ja&ct=clnk&cd=10
0891名前は開発中のものです。2006/12/02(土) 02:23:57ID:Q74I213y
dupなんか使うより#enumで名前を付けたものを配列の添字にした方がいい
0892名前は開発中のものです。2006/12/02(土) 04:56:47ID:gdxv7++3
>>890
2.6用のサンプルをそのまんま3.0で動かして正常動作しませーん分かりまちぇーん
って何言ってんだよ。
んなもん自分であーでもないこーでもないってごちゃごちゃごちゃごちゃやって調べ
るんだよ。
ごちゃごちゃごちゃごちゃやった上で聞けよ。
で、お前の代わりに俺がそのごちゃごちゃごちゃごちゃをやって教えてやろうかとも
思ったがやめた。なぜならdupにカーソル合わせてF1押したら「ハア?おにたまてめえ
何が言いたいんだよ!?これでマニュアルのつもりか!?」って思ったからだ。
訳分かんね。「日本語でおk」とか思っちゃったよ。

#define NUM_DATA 5
dim a,NUM_DATA
dup hp_max,a(0)
dup mp_max,a(1)
dup hp,a(2)
dup mp,a(3)
dup money,a(4)
hp_max=20 : hp=18
mp_max=10 : mp=10
money=100
bsave "save.txt",a
bload "save.txt",a,4*NUM_DATA
repeat NUM_DATA
mes a(cnt)
loop

ちゃんと動くぞ。
0893名前は開発中のものです。2006/12/02(土) 08:21:13ID:/SCokOQc
すみません。説明不足でした。dimとsdim使わなければ問題なくセーブはできるんですが、
dim hp_max,2
hp_max.0 = 20
hp_max.1 = 30

とか

sdim aitem,20,3
aitem.0="剣"
aitem.1="鎧"
aitem.2="盾"

とかを保存するとhp_max.0の20とaitem.0の剣だけ保存されてhp_max.1の30と鎧 盾が保存されないんです。


ttp://sapporo.cool.ne.jp/daturyoku/HSP/jitugi/rpg_01.html
ここのも
aitem.1="鎧"
aitem.2="盾"
aitem.3="謎の巻物"
この三行を消せば問題なくセーブはできるんですが、配列使った変数をセーブする方法がわからないんです。
0894名前は開発中のものです。2006/12/02(土) 15:50:02ID:gUJ6PzqY
>>893
arraysave
0895名前は開発中のものです。2006/12/02(土) 16:58:26ID:Q74I213y
#define BUFMAX 10
#define BUFSIZE 32
#define FILENAME "test.txt"
 sdim array,BUFSIZE,BUFMAX
 bsave FILENAME,array(0),0
 cls 1
*main
 pos 0,0
 repeat BUFMAX
   input array(cnt),64,25,BUFSIZE
 loop
 button gosub "SAVE",*save
   ID_save = stat
 button "LOAD",*load
   ID_load = stat
 repeat
   if ginfo_act != -1 {
     objsel -1
     getkey KEY_enter,13
     getkey KEY_ctrl,17
     getkey KEY_S,83
     getkey KEY_L,76
     if KEY_enter & stat = ID_save : cmd=1 : break
     if KEY_enter & stat = ID_load : cmd=2 : break
     if KEY_ctrl & KEY_S : cmd=1 : break
     if KEY_ctrl & KEY_L : cmd=2 : break
   }
   wait 10
 loop
0896名前は開発中のものです。2006/12/02(土) 16:59:07ID:Q74I213y
 switch cmd
   case 1 : gosub *save : swbreak
   case 2 : goto *load : swbreak
   default: swbreak
 swend
 stop
*save
 color 192,192,192 : boxf 70,0,300,30 : color 0,0,0 : pos 70,0
 repeat BUFMAX
   bsave FILENAME,array(cnt),BUFSIZE,BUFSIZE*cnt
 loop
 mes FILENAME+"にセーブしました。"
 return
*load
 cls 1 : pos 70,0
 exist FILENAME
 if strsize = -1 {
   mes FILENAME+"がありません。"
 }
 else {
   repeat BUFMAX
     bload FILENAME,array(cnt),BUFSIZE,BUFSIZE*cnt
   loop
   mes FILENAME+"をロードしました。"
 }
 goto *main

こんな感じでどうだ?
0897名前は開発中のものです。2006/12/02(土) 18:07:25ID:6IU8L7/C
>>893
複数の要素を含む文字列バッファを一度に保存できないので下記みたのをやるか
894の言ってるのを使うか
#module
#define global tbsave(%1,%2,%3=-1,%4=0) _tbsave %1,%2,%3,%4
#deffunc _tbsave str f,array txt,int size,int offset
txtemp="" :foreach txt :txtemp+txt(cnt)+"\n" :loop
exist f :if strsize<0{bsave f,txtemp,size}else{bsave f,txtemp,size,offset}
return

#define global tbload(%1,%2,%3=-1,%4=0) _tbsave %1,%2,%3,%4
#deffunc _tbload str f,array txt,int size,int offset
exist f :sdim txtemp,limit(strsize-offset,0,strsize) :bload f,txtemp,size,offset
strindx=0 :foreach txt :getstr txt(cnt),txtemp,strindx,0 :strindx+strsize :loop
return
#global

これを最初の方に挿入か別ファイルにして #include
やってる事は、要素ありの文字列を改行付きの一つの文字列にしてセーブ
改行付きの文字列をロードして改行毎に要素付き文字列バッファに代入


>;文字のデータを続きに保存
>bsave "save.txt",b,,4*NUM_DATA

>;文字のデータだけを読み出す
>bload "save.txt",b,,4*NUM_DATA
のロードセーブ命令を tbsave と tbload に置き換え(使い方は同じ)
0898名前は開発中のものです。2006/12/02(土) 18:50:16ID:6IU8L7/C
間違った
#define global tbload(%1,%2,%3=-1,%4=0) _tbsave %1,%2,%3,%4

#define global tbload(%1,%2,%3=-1,%4=0) _tbload %1,%2,%3,%4
だった・・・

てか、実は質問の内容と問題になってるものは違うんじゃないかって気がしてきた・・・


0899名前は開発中のものです。2006/12/02(土) 19:40:33ID:/SCokOQc
いろいろありがとうございます。arraysave使ってやってみます。
自分でも説明の仕方がよくわからないのですが、

dim save,2
dim a,2

dup a.0,save.0
;dup a.1,save.1

a.0= 10
a.1= 20

bsave "save.txt",save
stop

これだと5行目のdup a.1,save.1で「配列の要素書式が間違ってます」というエラーがでます。
arraysaveにしても5行目でエラーがでて同じだと思うんですが…。
a.1 = b.1 みたいに配列変数の1以降を配列変数の1以降に入れることはできないんですかね。
0900名前は開発中のものです。2006/12/02(土) 19:41:09ID:6IU8L7/C
>>893
>とかを保存するとhp_max.0の20とaitem.0の剣だけ保存されてhp_max.1の30と鎧 盾が保存されないんです。
hp_maxはサイズをちゃんと指定するか-1又は省略すれば保存できるはず。
バイナリデータとしてファイルを確認してる?
(保存したファイルにオフセット間違ってaitemでデータを上書きしてるとか・・・)

aitemの方は897を参照

>この三行を消せば問題なくセーブはできるんですが、配列使った変数をセーブする方法がわからないんです。
これは、セーブの問題じゃなくて、文字列配列のクローンが作れない問題だろう
(dup aitem.0,b.1の時点でaitem.0以外の要素が消える)
リンク先には
「先頭だけやると残りは自動的に当てはめられます」
って、あるけど、3.0で文字列配列の場合指定された要素しかクローンが作れない
(メモリが連続していないからだろう)

てか、クローンなんて特別な事情が無けりゃ使わない方がいいと思うが・・・
0901名前は開発中のものです。2006/12/02(土) 19:49:53ID:/SCokOQc
あ、>>899の最後の行は忘れて下さい…。勘違い。もう少し調べてやってみます。
0902名前は開発中のものです。2006/12/02(土) 20:15:48ID:6IU8L7/C
>899
>これだと5行目のdup a.1,save.1で「配列の要素書式が間違ってます」というエラーがでます。
そんな使い方は許されてないから無理
dup a.0,save.0の時点で a.1=save.1になってるし
変数名1に要素数を付ける事は出来ない

0903名前は開発中のものです。2006/12/02(土) 20:22:35ID:/SCokOQc
>>893を使ってとりあえずセーブだけはできました。次ロードやってみます。
#include"module_save.hsp"

#define NUM_DATA 2

dim save_a,NUM_DATA
sdim save_b,20,2
dim a,2
sdim b,20,2

a.0= 10
a.1= 20
b.0 ="テスト01"
b.1 ="テスト02"

*save
save_a.0 = a.0
save_a.1 = a.1
save_b.0 = b.0
save_b.1 = b.1

tbsave "save.txt",save_a
tbsave "save.txt",save_b,,4*NUM_DATA

stop

一応これでセーブはできたんですが、こんなやり方でいいんですかね。
0904名前は開発中のものです。2006/12/02(土) 20:44:17ID:6IU8L7/C
>>903
まった
>tbsave "save.txt",save_a
こっちは標準の bsaveを使わないと数値データが数字文字列に置き換わって保存される

ロードもdimの配列に読み込むのは標準の bload を使う
sdimで作った配列に読み込む時に tbloadを使う
897の tbload は898を見て修正してくれ
0905名前は開発中のものです。2006/12/02(土) 20:47:29ID:/SCokOQc
ありがとうございました。セーブとロード両方できました。
0906名前は開発中のものです。2006/12/02(土) 20:49:59ID:/SCokOQc
#include"module_save.hsp"

#define NUM_DATA 2
#define STR_DATA 2
#define STR_SIZE 20

dim save_a,NUM_DATA
sdim save_b,STR_SIZE,STR_DATA
dim a,2
sdim b,20,2

a.0= 10
a.1= 20
b.0 ="テスト01"
b.1 ="テスト02"

button "SET",*set
button "SAVE",*save
button "LOAD",*load
button "VIEW",*view
stop

*set
a.0= 30
a.1= 40
b.0 ="テスト03"
b.1 ="テスト04"
stop
0907名前は開発中のものです。2006/12/02(土) 20:51:04ID:/SCokOQc
*save
save_a.0 = a.0
save_a.1 = a.1
save_b.0 = b.0
save_b.1 = b.1

bsave "save.txt",save_a
tbsave "save.txt",save_b,,4*NUM_DATA
stop

*load
;ファイルの有無をチェック
exist "save.txt"
if strsize==-1 : dialog "saveデータがありません。" : stop

bload "save.txt",save_a,4*NUM_DATA
tbload "save.txt",save_b,,4*NUM_DATA
stop


*view
mes ""+save_a.0
mes ""+save_a.1
mes ""+save_b.0
mes ""+save_b.1
stop

とりあえずこれで大丈夫ですかね。
0908名前は開発中のものです。2006/12/03(日) 01:01:56ID:aTMNovR/
とりあえずセーブロードは、OKだろう
関係ないけど a.1 とかはhsp3.0なら a(1) って書くようにした方がいいよ
0909名前は開発中のものです。2006/12/03(日) 01:04:30ID:1ofnSlCI
ノートバッファに指定した変数をそのままbsaveでtxt保存すると、ゴミみたいな文字が紛れ込むんですけど、仕様でしょうか?
0910名前は開発中のものです。2006/12/03(日) 01:11:53ID:aTMNovR/
配列の要素位置を気にしなくて良い方法(tbsave、tbloadを使用)
#enum HP_MAX=0 ;データ開始位置
#enum MP_MAX
#enum HP
#enum MP
#enum MONEY
#enum NUM_DATA ;データ終り

#enum NAME=0 ;データ開始位置
#enum SWORD
#enum ARMOR
#enum SHIELD
#enum SCROLL
#enum SAVE_NAME
#enum STR_DATA ;データ終り

#define STR_SIZE 20
dim a,NUM_DATA+10 :sdim b,STR_SIZE,STR_DATA

button "SET",*set :button "SAVE",*save :button "LOAD",*load :button "VIEW",*view :stop
*save
bsave "save.txt",a :tbsave "save.txt",b,,4*NUM_DATA :stop
*load
exist "save.txt" :if strsize==-1 { dialog "saveデータがありません。" : stop}
bload "save.txt",a,4*NUM_DATA :tbload "save.txt",b,,4*NUM_DATA :stop
*view
repeat NUM_DATA :mes a.cnt :loop :repeat STR_DATA :mes b.cnt :loop :stop
*set
a(HP_MAX)=20 : a(HP)=18 :a(MP_MAX)=10 : a(MP)=10 :a(MONEY)=100
b(NAME)="冒険者" :b(SWORD)="剣" :b(ARMOR)="鎧" :b(SHIELD)="盾" :b(SCROLL)="謎の巻物" :b(SAVE_NAME)="旅の始まり"
stop
0911名前は開発中のものです。2006/12/03(日) 02:58:59ID:USWlC1AK
>>888
ちょっち質問が・・・

wasdまたはカーソルで移動、
マウスでaim&fireにしなかったのはなぜ?
0912名前は開発中のものです。2006/12/03(日) 06:11:30ID:i4svqXdd
>>911 いや☆ぼーんの前身である、レーザー表示実験スクリプトを書くきっかけになった、
ここの前スレの270でアップされていたシューティングが、そのような操作系でした。
http://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0028.zip
後に別スレで"Fatal Strike"と名づけられ、開発が続けられていたので、
楽しみにしていたのですが、5月から音沙汰なくなってしまっています。(;ω;) カムバック!

この"Fatal Strike"を参考にさせてもらって、いや☆ぼーんの操作系を決めたのですが、
単純に言うと、「そのほうが面白いと思った」からです。


詳しいことは、うまく伝えにくいのですが─、
プレイヤーの選択した行動に対して、メリットとデメリットが同時発生するときに、
ゲーム性が産まれると思っています。

例えば、ストリートファイターIIのような格闘ゲームでの一場面。
強攻撃は当たれば威力が大きいが、はずせばスキが生じる。
弱攻撃はスキは小さいものの、威力は小さい。
プレイヤーは、どちらの方法で攻撃をするかの選択を迫られます。

今回のいや☆ぼーんの操作系の場合だと、
キャラの移動(回避行動)をとるか、ターゲットの移動(攻撃行動)をとるかの選択を、
常にプレイヤーに迫ることになって、それにより
自機移動にもゲーム性が産まれて、面白くなるだろうと考えました。

ただ、あの操作系にすることにより、
弾幕型シューティングのように敵弾が絶え間なくバラまかれるような
(=キャラ移動でいっぱいいっぱいで、ターゲット移動するヒマがない)
場面を、設けるワケには行かなくなってしまったので、
適度に敵の攻撃に、空白時間というか、スキを設定してみています。(゚ω゚)ゞ

ついでに「珍妙なインベーダーっぽいもの」。この時点では、マウスでaim&fireでした。
http://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0030.zip
0913名前は開発中のものです。2006/12/03(日) 09:34:51ID:USWlC1AK
なるほど、答えてくれてサンクス
0914名前は開発中のものです。2006/12/03(日) 15:07:10ID:eOdbog8B
作品をlzhで圧縮するのはよそうぜ
zipだと解凍ツールいらないからね
0915名前は開発中のものです。2006/12/03(日) 15:28:00ID:Nj+hqIm4
圧縮フォルダ?
あれかえって不便なんで切ってる
0916名前は開発中のものです。2006/12/03(日) 15:31:19ID:ZYadba5Y
それってwindowsに標準でくっ付いてるやつ?使ったこと無い
レス数が900を超えています。1000を超えると表示できなくなるよ。