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:C2CtJy9D0818名前は開発中のものです。
2006/11/27(月) 02:25:58ID:zncTiRKv0819名前は開発中のものです。
2006/11/27(月) 03:13:08ID:GK3bKuht0820816
2006/11/27(月) 10:17:28ID:QFSkS0ye正直その後は読まずに書き込んだ。悪かった日付部分は無視してくれ。
要するに俺が言いたいのはHSPは簡単なことでも何でもプラグインなのはどうなのか?
って事だ。これだから本家で聞く側も教える側もプラグイン任せになるだろ。
他のスクリプト言語でも実装されてる様な簡単な事くらい自力で出来た方が良いだろ?
○○をするプラグインありますか?/○○を使えば簡単に出来ます
なんてやりとり他の言語で聞いた事ないぞ?
ていうかプラグイン使えば何でも出来るのは当たり前だろ。
機能が組み込まれてなくても自分で実装して動的リンクすれば良いだけなんだから。
0821名前は開発中のものです。
2006/11/27(月) 10:34:29ID:+wu8k/E30822名前は開発中のものです。
2006/11/27(月) 10:41:27ID:wJqiEzrg0823名前は開発中のものです。
2006/11/27(月) 15:22:18ID:Pzz2cNNqでも、C言語だってライブラリを使うためにヘッダー読まなきゃいけないし、
DirectX使うのにSDKも必要じゃない。
そう考えるとプラグインから機能を呼び出すのは別に不自然ではない・・・と思わん?
(標準サポートのプラグインが少ないって言いたいのかもしれないけど)
まぁ、言語そのものに命令セットがあるのがインタプリタの特徴で、
HSPが"手軽さ"を謳っているのならプラグイン無しでも動作するのが望ましいけどさ。
とりあえずポインタを正式な文法にしてほしい
なんかすぐ剥がれそうな塗装みたいで怖い。
0824名前は開発中のものです。
2006/11/27(月) 16:12:14ID:dwx+JNY1いろんな画像を読み込むので事前にはわかりません。おねがい。
0825名前は開発中のものです。
2006/11/27(月) 16:39:16ID:i6PU+3vS0826名前は開発中のものです。
2006/11/27(月) 16:48:50ID:dwx+JNY1ウインドウ枠の大きさなどはOSの設定にもよると思うので
純粋に画像の大きさを取り出したいのです。。。
0827名前は開発中のものです。
2006/11/27(月) 16:49:41ID:RUZy2SoF0828名前は開発中のものです。
2006/11/27(月) 18:40:59ID:Mtxdo3eLC/C++でヘッダをインクルードするのは静的リンクで実行ファイルのバイナリに埋め込まれるからインタープリタが標準で命令セットもってるのと同義だろ?(もちろん動的リンク用のヘッダ以外)
DirectXのラッパーは確かに良い。正直ソースを上から下に順次実行+gotoな言語でああいう高レベルなライブラリを手軽に使える所は評価できる。
ただ、HSPは標準でGUI組めるだろ?けどGUIで一般的ないわゆるメニューバーやコンテキストメニュー、ステータスバー等でプラグイン使うのはそれ位組み込んで欲しいと思う。
逆にもっと高度なコンポーネント群がプラグインなら納得いくが、リストとかタブとかスプレッドシートとか テキストエディット用フレームワークとかは見かけないだろ?
例えばHSP製ゲームってSLGも良く見るからこういう高レベルGUIコンポーネントとMDIが使えたりすると需要あると思う。けど流石にそれを組み込むのは視野には入れないだろう。そういう時のプラグインじゃないか?
コールバック関数使ったり実数使ったりするのにプラグインは使い所違う気がするよ。
それでもプラグイン刺してWIN32 API呼んだりマシン語埋め込んだりしてHSP使う奴居るだろ?スクリプト言語使ってまでクリティカルな部分に対処しようと思うか?
そもそもそれは本当にクリティカルなのか?言語がちょっとした事でハードル上げてるんじゃないか?って思った事があった訳よ。HSPの標準命令だけでXMLパーサ書いた時にさ。
この時はちょっとしたテキスト操作でそこそこのコード量になった。せめてストリームとリーダ/ライタの概念位あったら良かったんだが
良くてnote系命令だろ?んでプラグイン・・・この悪循環は厨が訳分からん質問したり既出質問の無限ループにも繋がる。
プログラミング&ネット素人にはキツイ環境とは思わんか?
自分で組めない、情報が探せない→モチベーション下がるってならない?
0829名前は開発中のものです。
2006/11/27(月) 18:46:37ID:Mtxdo3eL0830名前は開発中のものです。
2006/11/27(月) 20:03:00ID:+n0PXIKJ・BASIC、構造化プログラミング、OOP、
ユーザーのレベルにあったスタイルでプログラミング可能。
・Win32API、COM、DirectXもサポート。
・HSPと違い、アルゴリズムも素直に記述できる。
・ネイティブコードを出力できる。
・さらに、GUIをRADツールでつくれます。
0831名前は開発中のものです。
2006/11/27(月) 20:10:24ID:TV23MZgL0832名前は開発中のものです。
2006/11/27(月) 21:10:57ID:Pzz2cNNqそんな話しても俺には分からないよ。
そんな長文書くくらい知識があるなら、
そんな長文書くくらいHSPが嫌いなら、
自分で言語作るなり他の言語で書くなりしたらどうだ。アホらしい。
0833名前は開発中のものです。
2006/11/27(月) 21:15:16ID:+n0PXIKJ0834名前は開発中のものです。
2006/11/27(月) 21:19:28ID:iq8+XlZi0835名前は開発中のものです。
2006/11/27(月) 22:24:52ID:7IwKMt0e激しく同意はする
同意は得られないと思うが
0836名前は開発中のものです。
2006/11/28(火) 00:18:38ID:GqfKPaui0837名前は開発中のものです。
2006/11/28(火) 01:28:41ID:6hvEnoGI0838名前は開発中のものです。
2006/11/28(火) 01:34:19ID:eDGg4QvK0839名前は開発中のものです。
2006/11/28(火) 05:05:42ID:BBB7xQBoナンデ?
ちなみに16bitカラー、D3Dはオフ。フルスクリーン(ウィンドウモードだと若干速くなる)
GeForce4MX440。
es_mesしてる暇あったら裏バッファにmesったやつを
es_putしたほうが速いンですが・・・。ナンデ?
0840名前は開発中のものです。
2006/11/28(火) 09:49:17ID:QS0/TpKk0841名前は開発中のものです。
2006/11/28(火) 13:21:23ID:KCCRSyrJ俺の環境では、「死ぬほど遅い」という程の差はなかった
(フレーム更新時間の平均値の差: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:BBB7xQBo40くらいしか出ないで動きがガタガタでしよ。ウインドウモードにしても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よく分からないけど、そのソースで実行してみた。
Athron 2500+ , 767MB , Radeon 9800
フルスクリーンは 60fps
ウィンドウモードなら、780fps
0844名前は開発中のものです。
2006/11/28(火) 17:25:22ID:cr69+3rI試した。
標準mes は 1.5
es_fmes は 0.5
後者のほうが早かった。
0845名前は開発中のものです。
2006/11/28(火) 17:31:16ID:wdubaFPR手段も何もそれが一般的だと思うがどうよ…
アンチエイリアスする余裕すらある。
mesするのは最初の一回で良いんだから。
0846名前は開発中のものです。
2006/11/28(火) 18:49:17ID:KCCRSyrJ…が、es_sync のパラメータに-1,2とか与えると、fpsが落ちたりするから
遅くなる原因は、ディスプレイドライバの設定にあるんじゃないかと思った。
("垂直同期"の設定が"オン"固定で"アプリ制御"じゃない、とか。…適当。)
ただ、俺も >845 の言うとおり、
画面いっぱい分の文字列を、毎フレーム・全部 mesする力技な処理よりは、
文字列の内容が変わったフレームのみ・必要な部分のみ mesする処理を採るべきだと思う。
動作速度が遅いHSPで、60fpsで動くゲームを作ろうとするのなら、
描画や計算の無駄を省く等の小細工を弄して、速度低下を回避しないと…。
0847名前は開発中のものです。
2006/11/28(火) 21:08:59ID:1PQwrqFn0848名前は開発中のものです。
2006/11/28(火) 21:36:56ID:QS0/TpKkttp://www.hspdx.net/hspyarou/dxbench/draw.html
0849名前は開発中のものです。
2006/11/28(火) 23:23:31ID:BBB7xQBoputよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>848 ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。
>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0850名前は開発中のものです。
2006/11/28(火) 23:24:03ID:BBB7xQBoputよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>848 ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。
>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれん。
逆に、うちので動けば他はOKかなと思ってしまうけど。
0851名前は開発中のものです。
2006/11/28(火) 23:29:17ID:BBB7xQBoputよりも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+v7IWdtputよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。
>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0854名前は開発中のものです。
2006/11/29(水) 00:13:03ID:i+v7IWdtみんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。
>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0855名前は開発中のものです。
2006/11/29(水) 00:14:06ID:i+v7IWdtみんなすまん、俺みたいなヘタレだと
putよりもmesのほうが速いだろうなって錯覚しちゃってた。
これからはガンガンputしようと思います
>>847
すまそ、面倒くさがりなもんで・・・。>>846の最後2行心得ておきます。
>>848
ありがとうございます、一応ググってトップに出てくるんで
目は通したんだけども、esmes関連はやっぱり「死ぬほど」遅くはなってない
みたいだったんで・・・。
>>843 780fpsてコーヒー吹いた。何も表示なしで190fpsだったんですが。
esmes遅い云々以前に、いい加減うちのがロースペックすぎたかもしれません。
0856名前は開発中のものです。
2006/11/29(水) 00:18:50ID:i+v7IWdtみんなすまん、俺みたいなヘタレだと
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メインメモリをつかっちゃって遅くなってるのでは・・
とりあえずvzの設定を裏vramを使わない設定にして
常駐もしないようにしてみたら
0860名前は開発中のものです。
2006/11/29(水) 23:19:49ID:6V6zK9p+会社がHSPの紹介してるの初めて見た。
0861名前は開発中のものです。
2006/11/29(水) 23:31:45ID:ziMu7viB0862名前は開発中のものです。
2006/11/29(水) 23:34:02ID:pljl/4fq0863名前は開発中のものです。
2006/11/29(水) 23:45:11ID:Q0XWhUUMttp://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このページ一番下まで表示されてないんじゃないかと不安になる
デザインだな。
コンテンツは面白いけど。
0865名前は開発中のものです。
2006/11/30(木) 16:20:58ID:ADuPoubuいーじゃん。
0866名前は開発中のものです。
2006/11/30(木) 16:52:18ID:hHDh5/GB0867名前は開発中のものです。
2006/11/30(木) 18:13:18ID:kkSPTvf10868名前は開発中のものです。
2006/11/30(木) 19:53:54ID:zh01//gp縦読みしてみろ。
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/A0871名前は開発中のものです。
2006/11/30(木) 20:42:18ID:GlFEcdGe0872名前は開発中のものです。
2006/11/30(木) 21:23:16ID:QD5FLI/L愛の一さじ?
わけわかめ
0873名前は開発中のものです。
2006/11/30(木) 21:54:05ID:GlFEcdGe0874名前は開発中のものです。
2006/11/30(木) 22:05:04ID:GlFEcdGe鯖落ちだったんかな?
0875名前は開発中のものです。
2006/12/01(金) 00:50:29ID:5AZIrDQJ0876名前は開発中のものです。
2006/12/01(金) 01:40:58ID:pup+aqZp0877名前は開発中のものです。
2006/12/01(金) 02:13:52ID:6OrOzyMvこれって入賞しても嬉しくないんじゃないか?w
0878名前は開発中のものです。
2006/12/01(金) 02:38:39ID:8O5ugdav0879名前は開発中のものです。
2006/12/01(金) 10:01:11ID:zHdvSz/e他人を蹴落とすためのコンテストじゃないってことさ。
それにただ選ばれたってだけならありがたみもない
かもしれないが、主催者側がわざわざ身銭切って
あれだけの数選ぶってのが気合入っててよくない?
0880名前は開発中のものです。
2006/12/01(金) 10:47:23ID:74p8eAlU0881名前は開発中のものです。
2006/12/01(金) 11:12:58ID:Ul/tWyMn0882名前は開発中のものです。
2006/12/01(金) 15:29:43ID:o4gCMgsbああ、なるほどなぁ。
確かに競争率が高くなって入賞枠が削れると、
毎回同じ作者が上位を占めちまうもんなぁ。
HSPの敷居を更に低くしていく、知名度を上げるという点では、多く選ぶのも
悪くはないのか。
それにしても、宝箱はハズレだと思うのは俺だけか?
0883名前は開発中のものです。
2006/12/01(金) 19:00:05ID:x1Z6ntkforz
0884名前は開発中のものです。
2006/12/01(金) 21:02:43ID:B7Q+wJfg小粒ぞろいというか。知らんだけかもしれないけど。
音ゲーのあれくらいか。
0885名前は開発中のものです。
2006/12/01(金) 21:09:35ID:x1Z6ntkf0886名前は開発中のものです。
2006/12/01(金) 21:28:31ID:wesjDyBMというか、どうしてこんなに快適に動くのか理解できんかった。
俺は未だにDXの使い方が分かってないようだ・・・。
HSPDXFIXのスプライト機能って速いの?
0887名前は開発中のものです。
2006/12/01(金) 21:47:37ID:6+Kb0DUQ描画の早さより
自動移動とか自動アニメとかで余裕が出ると思う
あと、当たり判定とか
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配列変数を使わなければちゃんと保存されるのですが、
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:Q74I213y0892名前は開発中のものです。
2006/12/02(土) 04:56:47ID:gdxv7++32.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:/SCokOQcdim 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:gUJ6PzqYarraysave
0895名前は開発中のものです。
2006/12/02(土) 16:58:26ID:Q74I213y#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:Q74I213ycase 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複数の要素を含む文字列バッファを一度に保存できないので下記みたのをやるか
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自分でも説明の仕方がよくわからないのですが、
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>とかを保存すると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:/SCokOQc0902名前は開発中のものです。
2006/12/02(土) 20:15:48ID:6IU8L7/C>これだと5行目のdup a.1,save.1で「配列の要素書式が間違ってます」というエラーがでます。
そんな使い方は許されてないから無理
dup a.0,save.0の時点で a.1=save.1になってるし
変数名1に要素数を付ける事は出来ない
0903名前は開発中のものです。
2006/12/02(土) 20:22:35ID:/SCokOQc#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まった
>tbsave "save.txt",save_a
こっちは標準の bsaveを使わないと数値データが数字文字列に置き換わって保存される
ロードもdimの配列に読み込むのは標準の bload を使う
sdimで作った配列に読み込む時に tbloadを使う
897の tbload は898を見て修正してくれ
0905名前は開発中のものです。
2006/12/02(土) 20:47:29ID:/SCokOQc0906名前は開発中のものです。
2006/12/02(土) 20:49:59ID:/SCokOQc#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:/SCokOQcsave_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/関係ないけど a.1 とかはhsp3.0なら a(1) って書くようにした方がいいよ
0909名前は開発中のものです。
2006/12/03(日) 01:04:30ID:1ofnSlCI0910名前は開発中のものです。
2006/12/03(日) 01:11:53ID:aTMNovR/#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ちょっち質問が・・・
wasdまたはカーソルで移動、
マウスでaim&fireにしなかったのはなぜ?
0912名前は開発中のものです。
2006/12/03(日) 06:11:30ID:i4svqXddここの前スレの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:USWlC1AK0914名前は開発中のものです。
2006/12/03(日) 15:07:10ID:eOdbog8Bzipだと解凍ツールいらないからね
0915名前は開発中のものです。
2006/12/03(日) 15:28:00ID:Nj+hqIm4あれかえって不便なんで切ってる
0916名前は開発中のものです。
2006/12/03(日) 15:31:19ID:ZYadba5Yレス数が900を超えています。1000を超えると表示できなくなるよ。