07/05/03 23:21:41 7TvtNXkU
そういうのは数学の知識が要る。
三角関数でググれ。
825:名前は開発中のものです。
07/05/03 23:26:36 tLhZ5Q0K
あと、内部で保持する座標は画面表示と1:1の座標じゃなく、
小数を保持するために10倍・100倍の整数か浮動小数点を使え。
826:名前は開発中のものです。
07/05/03 23:40:01 s69yTu18
>>823
最も単純な方法は…
;acnt 現在までのトータルフレーム数
if acnt&1 :x+=1 :y+=1 :else :x+2 : y+=2
つまり、1フレームごとに加算する量を変えるというワケ
これだと10フレームで15ドット移動する。
if acnt&1|(acnt\5=0) :x+=1 :y+=1 :else :x+2 : y+=2
これだと10フレームで14ドット移動する。
( 1,1,2,1,2,1,1,2,1,2 )
座標を256倍で扱うという方法もある。こっちをオススメする。
実際の位置指定時には>>8する。
x+=362 :y+=362 ;256で1ドット相当
pos x>>8,y>>8
827:名前は開発中のものです。
07/05/03 23:48:21 kPqmtDgq
>>824-826
どうも有難うございます。
とりあえず浮動小数点ってのが今の自分にはすぐに理解するのが難しいかなぁと思いますんで
>>826さんの方法でやってみたいと思います。
828:名前は開発中のものです。
07/05/04 05:01:12 N4dI25+p
いやそんなもん三角関数使って計算しろよ…
縦横に移動した時の移動量が1なら
斜めに移動した時の移動量は0.707106781186547
829:名前は開発中のものです。
07/05/04 05:03:26 N4dI25+p
ごめん2.6ってのを見落としてた
830:名前は開発中のものです。
07/05/07 01:09:39 Uyq9GLST
HSPでゲームを作ってるんだけど
作ったヤツをウェブサイトで公開したい訳ですが
フォントをMSゴシックにしてゲームに表示させても
フォントの著作権とか問題ないんですか?
831:名前は開発中のものです。
07/05/07 02:18:48 B/mb8Q1D
>>830
ない。
と言うか、フォント内蔵の場合なら(厳密には)問題あるが、単にOSのフォントを呼び出す分には全く問題ない。
ユーザーの環境に指定のフォントが入ってなければ、表示が想定通りに行かなくなるだけだし。
どこぞの拾い物フォントを勝手に内蔵して使う分には、それぞれのフォントの許認可条件に従うこと。
まあ、基本的に、フォントをフォントそのものとして内蔵し、フォントとして使用できる形で公開しない限り、
無問題と考えて大丈夫。メチャ本格的に、大規模な商利用する場合はまた別だが、まあ気にすんな。
832:名前は開発中のものです。
07/05/07 20:03:12 KYFqszNb
>>831
ということは、フォントテーブルを持ったゲームやフォントを埋め込んだPDF,
フォントを使った画像ファイルにフォントのアウトラインが誰からも見られる紙の
印刷物は問題なの?
フォントって特殊な立場だな。
833:名前は開発中のものです。
07/05/07 20:20:16 jNjPNdHX
フォントの利用規約による
834:名前は開発中のものです。
07/05/07 21:49:47 pmbXnqyF
「12歳からはじめるHSPゲームプログラミング」という本を見ながらじゃんけんゲームを作成しているのですが、
以下のソースを実行すると"#Error 18 in 6 (janken.hsp) -->代入できない変数名を指定しています"と出て、正常に実行されません。
randomize
buffer 1,,,1
picload "janken.bmp"
screen 0,320,260,1
gmode 2
*hazime
rnd R,3
pos 30,0 : gcopy 1,0,0,200,180
pos 30,70 : gcopy 1,200+(80*R),0,80,90
wait 50
goto *hazime
何かおかしな部分がありますか?
本はHSP2を対象に書かれていて、現在使用しているのはHSP3なので、そこらへんが問題だと思うのですが、いかがでしょうか?
835:名前は開発中のものです。
07/05/07 21:52:15 Foh+9yi0
rnd R,3
↓
R = rnd(3)
836:名前は開発中のものです。
07/05/07 22:02:25 B/mb8Q1D
>>832
まあ結局>>833の言うとおりなんだけどな。
生ttfをゲームに同梱して配布するのはかなりやばい。
内部にBMP化してフォントを内蔵するのも、それなりにやばい。
一枚絵の中に文字が入っている、程度ならあまりやばくない。
また、大抵の場合、フォントを内蔵したワープロソフトみたいな
「フォントを"フォント"として取り扱う形態で配布」すると問題が大きくなる。
(注:ゲームには無関係のように見えるが、よくある「名前を入力する」部分が
ワープロ的だと見なされる場合がある)
やばいなと思うなら、フォントを内蔵せず、OSのフォントを呼び出すだけにしておいたら安全確実。
一枚絵の中に文字が含まれている、程度ならまあ大丈夫。
何万と売りさばく事が前提なら、何れにしろきちんとライセンスを取っておくこと。
837:名前は開発中のものです。
07/05/07 22:03:17 PZ9SZ2Mt
>rnd R,3
↓
R=rnd(3)
HSP2の頃のサンプルを使うなら
HSPエディタの有るフォルダに index.htmってのがあるから
その中の
・以前のバージョンからの変更点(アップデートガイド) (update.htm)
これを一度見といた方がいい
838:名前は開発中のものです。
07/05/08 05:43:06 vruKdlwD
クォータービューのACTやSTGの、当たり判定は矩形のまま行っているの?
それとも、クォータービュー用(?)定番アルゴリズムとか、あるんでしょうか
839:名前は開発中のものです。
07/05/08 10:53:15 8GDuzc4l
別に矩形で良いんじゃないの
何か問題?
840:名前は開発中のものです。
07/05/08 16:45:06 GV3ApysF
>>835
>>837
これでやっと先に進めます!
アップデートガイドの存在には気がつきませんでした。
今後は活用したいと思います。
ありがとうございました。
841:名前は開発中のものです。
07/05/08 23:45:41 tONREbU4
関数タイプになって
pos rnd(639) , rnd(479)
みたいな記述ができて楽になった
gcopy 1,200+(80*rnd(3)),0,80,90
842:名前は開発中のものです。
07/05/09 20:52:30 VSNS2raa
HGIMG3のモデル領域は開放できない?
オブジェクト領域はできるらしいんだけど エロイ人ご教授ください
843:名前は開発中のものです。
07/05/09 23:53:51 07ufZ3sL
>>838
クォータービュー用定番アルゴリズムなんてものはない!ゲ製作はいまだに職人
の世界だっ!師匠の指裁きや筆遣いや寿司ネタの握り方を見て技術を盗むんだよ。
定番のアルゴリズムは講座や本読めば買いてあるだろう。しかしクォータービュー
だとか、ちょっと凝ったやつになるとどうだ。ブツを見てどんなアルゴリズムなんだろう
な~と想像するしかない。ブラックボックスってやつだね。でもゲ製作ってそういう
もんじゃね?ゲーム見て「これってどうやったらできるんだろう」って思う。そしてその
方法を考える。「ああこうやればできるや」って思えば技術の向上だ。
俺くらいの中級者になるとざっと考えるだけでこんだけ出てくるぜ。
・>>839に同じ。矩形。
・円ならもうちょっとマシなんじゃないか。
・ひし型の当たり判定その1。三角形2つと四角形1つに分ける。三角形は斜めに
なった四角形の判定でできる。
・ひし型ってのは長方形が上に行けば行くほど右にずれてるってことだ。そこから
導かれる計算式は?
・計算的にはまっすぐなスクロール。表示する時だけ斜めにする。
844:名前は開発中のものです。
07/05/10 00:20:36 2z4zuSSr
つーか、クオータービューとか関係なく、辺り判定したいキャラの形が問題なんじゃね?
845:名前は開発中のものです。
07/05/10 00:34:29 J9txepzh
よっぽど巨大で複雑怪奇な形でもない限り矩形で問題ないが
846:名前は開発中のものです。
07/05/10 04:35:42 U2vxhvV7
えー?
ていうか、クォータービューって単に表示上斜めってなってるだけだから
内部処理では普通のSTG等と同じ事やってて、
表示だけ斜めにするんじゃねーの?
847:名前は開発中のものです。
07/05/10 06:59:01 +xzQXwZO
いや、その理屈は正しい
848:名前は開発中のものです。
07/05/10 14:06:21 IknmfbEQ
あ?
3Dでやるの?
849:名前は開発中のものです。
07/05/10 21:03:24 tEu0m8/u
質問なんですがゲームで2人対戦を作るとき、
キーボードを二つパソコンにつないで同じボタンを押しても
1Pが押したのか2Pが押したのか分かるやりかたを教えてください。
お願いしますm(__)m
850:名前は開発中のものです。
07/05/10 21:54:52 J9txepzh
それは無理だろ
851:名前は開発中のものです。
07/05/10 22:00:18 Pb7a8JUW
環境がSFCなら出来るんじゃね?
852:名前は開発中のものです。
07/05/10 23:03:11 lvPcrjF3
>849
やり方があるのかどうかは、知らないが。
キーボードを二つ接続したPC環境を構築している人間は、少数派だろうから、
そのゲームを一般に公開するつもりなら、別の操作系を考えるのが賢明だと思う。
自分や仲間内だけで遊ぶゲームなら、その限りではないけど。
853:名前は開発中のものです。
07/05/12 03:18:16 iitxNH6p
>>849
2人以上ならゲームパッド(ジョイバッド?)を使うのが普通だろうね。
パッドvsパッドかパッドvsキーボード。
というかそもそもキーボードはゲームにむいてない。一般のキーボードはほとんど2~3キーロールオーバーだから。
あ、マウスvsキーボードって対戦もありか。w
854:849
07/05/12 09:38:38 CHidITY3
そうですか…無理ですか…ありがとうございました。
855:名前は開発中のものです。
07/05/12 11:00:15 IIhlPIBe
つーか、その環境持ってるor調べようと思う奴が少ないからな。
今の時代パソコン2台でネット対戦にした方が早い気もするし。
856:名前は開発中のものです。
07/05/12 11:31:45 BKWL2B2V
国内で最も使われてるフリーな環境はHSPですか?
857:名前は開発中のものです。
07/05/12 11:42:17 9cDQPoon
昔、PC-88mkIISRというパソコンがあって、それにキーボード端子が2つ付いてた。
友人の家にキーボード持っていって実際に試したけど
両方のキーを受け付けて、判別はできなかったな。
マウスVSキーボードも、対戦マインスイーパー作って試してもらったんだけど
圧倒的にマウスのほうが操作早くて、公平なプレイにならなかった。
まぁ、パッド2つが無難だろう。
858:名前は開発中のものです。
07/05/12 15:11:32 tMkY9b8/
88SRって端子二つあったっけ
おぼえてねー
859:名前は開発中のものです。
07/05/12 20:47:05 LoRPkVYn
>>856
何に使われてる環境だ?
860:名前は開発中のものです。
07/05/12 23:28:26 tMkY9b8/
ミサイル弾道計算じゃね
861:名前は開発中のものです。
07/05/12 23:29:58 qzFNDBxk
>>855
確かに、俺も対戦ゲーム作る時は、普通にLAN対戦にするだろうな。
そっちの方が楽だろう。
862:名前は開発中のものです。
07/05/13 01:01:01 8A9djd1g
>>854
XP以降限定だけど、WM_INPUTでHIDの生データ取れば実現できるんじゃね?
試してないけどさ
863:名前は開発中のものです。
07/05/14 00:05:11 bOzJ10Yl
マウスホイールの操作で画面スクロールさせようと思ってるのですが
mousewの使いかたがよくわかりません。。。
どうすればいいですしょうか?
864:名前は開発中のものです。
07/05/14 00:26:20 uwtqYVSD
mousewはスクロールされると-120とか120という値が取得できます
// 画面の高さ
y = 0
*main
// 一時保存
// -1は情報が±が反転してるから
mw = mousew*-1
// もし動いたなら
if ( mw != 0 ) {
// その数値を加算
y = y+mw
// 調整
if ( y < 0 ) {
y = 0
}
if ( y > ginfo( 13 ) ) {
y = ginfo( 13 )-20
}
}
// 描画
redraw 0
color 255, 255, 255 : boxf
color 0, 0, 0 : boxf 0, y, ginfo( 12 ), y+20
redraw 1
// 待機
await 10
goto *main
865:名前は開発中のものです。
07/05/14 01:07:27 ecV+XOk6
mousewって、積算型じゃなくて一度値を参照すると中身がリセットされるんだよな。
しかも、スクロールホイールを2回動かす間にmousewを一度しか参照しなかったら、
前の1回分は破棄されるというふてえ仕様だ。
あたまわるいmousewのために高頻度でポーリングするのも余計な負荷なので、
WM_MOUSEWHELLを捕まえて内部カウンタを積算したほうが便利よ。
866:名前は開発中のものです。
07/05/14 01:10:27 bOzJ10Yl
>>864
おおぉーできました!ありがとうございます。
ifの判断でmousewをそのまま使ってたのがダメだったみたいです・・・。
867:名前は開発中のものです。
07/05/14 19:39:39 bUJYvT5N
5年使ってたノートが壊れたので新しいノートを買ってきた。前のは20万。今度のはノート
としては最底辺の10万だ。んで自作ゲームを動かしてみた。ひど!微妙に遅い。いや
それよりももっとひどいのがMIDI。うわ!安物のPCだとこんなふうに聞こえるんだあ。
いくつかの楽器がまともに鳴ってない。あるいは完全に鳴ってない。
5年もたってるんだぜ!?いくら安くても進化しててよくね?みんな!これからはmp3だよ!
サイズが大きいのは嫌だって奴のためにMIDI版も自分のサイトに用意しといて、俺の
サイトまで来いと。
てか速度が遅いのはいかんともしがたいなあ。これじゃあだめだ。みんな!俺はゲ製作
から撤退するよ。今まで有難う!そしてさよーおならー!ブッ!シネ!
それかawait 16からawait 32に変えるか。
868:名前は開発中のものです。
07/05/14 19:42:30 zgcv7AfZ
MIDIが酷いのはPCのせいじゃねえw
869:名前は開発中のものです。
07/05/14 20:04:55 8OHbs/4R
つーか、ぶっちゃけ音質悪くても昔のファミコンのBGMの方が記憶に残ってる件w
870:名前は開発中のものです。
07/05/14 20:19:48 gxCU6qzs
釣りだよね?
釣りじゃなったとしたら子供だよね?
871:名前は開発中のものです。
07/05/14 20:41:16 2MGniMoO
うむ。
いくら10万円でも5年前の20万円よりはスペック上だと思うのだが、
一体何があったのだ。。
10万も出してスペックダウンするくらいなら
ショップブランドのデスクトップ型にした方が良かったんじゃないか。
872:名前は開発中のものです。
07/05/14 21:13:38 jKbLwa2+
スルー力を君らに
873:名前は開発中のものです。
07/05/14 21:26:36 qusRFGjc
>>867
何が原因で遅くなってるか調べたか?
ゲームが遅くなってるだけで、タスクマネージャのCPU使用率は50%ぐらいとかねーか?
つーか、OS,CPU、グラボ、メモリの違いも検討しないで買ったのかよ・・・
874:名前は開発中のものです。
07/05/14 23:39:40 qQM3DdCm
>>867
マジレスすると、
5年前+20万=Win2000が快適に動く
今+10万=VISTAがぎりぎりで動く
とかじゃね?
875:名前は開発中のものです。
07/05/15 00:26:10 xiOfuS6M
hsp2.6とhspdxfixでゲーム作ってるんだけど。
midiを演奏すると一瞬画面が止まります。
hsp以外の言語でもmidiファイルを演奏すると画面が止まりますか?
876:名前は開発中のものです。
07/05/15 00:48:18 QwlCZrR2
いまどきmidiデータなんぞ止めてオーディオデータを使いましょう
877:名前は開発中のものです。
07/05/15 01:12:07 FWjCeTAz
>>875
たぶんhmmとか使えばおk
878:名前は開発中のものです。
07/05/15 01:29:42 OAuZRVq8
>>875
再生に使ってるデバイスの問題
初期化に時間が掛かる(WinXPだと特に遅いと聞いた)
言語自体の問題じゃないよ
HSP3ならmciのMPEGVideoで再生開始速度が
早く出来るけど2はどうだろ?
879:名前は開発中のものです。
07/05/16 11:58:40 zA3GpFnY
まーしかし876に同意。
BGMがMIDIのゲームは嫌われたりするし、俺の環境ではミュートしちゃってる。
内蔵のソフトシンセなんて、どっちにしてもデータ作成者の意図どおりには鳴らんし。
880:名前は開発中のものです。
07/05/16 20:41:40 SejtJ/t7
>>876
すみません、オーディオデータってのが何なのかよく解りません。
AVI形式のことですか?無知ですいません。
881:名前は開発中のものです。
07/05/16 21:20:22 SzL9MSMh
wavとかじゃね?
882:名前は開発中のものです。
07/05/16 21:22:09 6BjJtGUs
jpgだよ。
883:名前は開発中のものです。
07/05/16 21:26:40 jv4GiZ2g
MOD最強
884:名前は開発中のものです。
07/05/16 22:09:20 6XNIRCTA
マジレスするとrarのこと
885:名前は開発中のものです。
07/05/16 23:49:37 FVllaHtw
>>880
四の五の言わずググれ。理解が深まるしそっちが早くて正確。
加えて話の流れも読むとより理解が深まるとおもうぞ。MIDIと対になってるだろ?
>>876,879
理解はできる。理解はできるが、ファイルサイズを気にしてしまう悪習慣がぬけないんだ。
つい、ね。
886:名前は開発中のものです。
07/05/17 01:11:36 k6rYSu8+
つーか、曲自体の出来がアレなのに、音源・音質ばっかり凝ってるのもイランけどな。
887:名前は開発中のものです。
07/05/17 03:06:38 qhlIETZh
まあそれはあるな
でもMIDIのBGMだったら鳴らさんほうがマシだ
888:名前は開発中のものです。
07/05/17 14:16:09 UjIQhbyQ
それは聞き捨てならんな。
フリー素材はほとんどがMIDI
そんな時代もあったのだよ。
故にMIDI資産は膨大
しょぼい音源のゲーム臭さも何とも言えんし、
Sound BLASTERとか、そうでなくても
サウンドフォントが扱えるサウンドカードならだいぶ世界が変わる。
あとTiMidiとかいうソフト音源もオススメ。
URLリンク(twsynth.sourceforge.jp)
ぶっちゃけ音源によって音が変わるのが良いんだヨ('A`)
889:名前は開発中のものです。
07/05/17 17:33:48 ECrUiSe6
hspext.dllを使わずにレジストリに新規キーを作成しようと思って下の
スクリプト作ってみたんですが、どうも上手く動作してくれません。
どこが間違ってるのか教えてくらさーい。XPでの使用を前提にしてます。
;****************************************************
;******************
//新規命令を作成//
;******************
#module
;関数
#uselib "advapi32.dll"
#cfunc RegCreateKeyEx "RegCreateKeyExA" int,sptr,sptr,sptr,sptr,sptr,sptr,sptr,sptr
;定数
#const HKEY_CLASSES_ROOT 0x80000000
#const REG_OPTION_NON_VOLATILE $00000000
#const KEY_WRITE 0x20006
;新規命令
;p1=作成するディレクトリ
#deffunc Nh@_RegCreateKeyEx str Nh@_RegCreateKeyEx_P1
Nh@_RegCreateKeyEx_P0=HKEY_CLASSES_ROOT
nhret=RegCreateKeyEx(Nh@_RegCreateKeyEx_P0,Nh@_RegCreateKeyEx_P1,0,0,REG_OPTION_NON_VOLATILE,KEY_WRITE,0,hkey,0)
return
#global
;*******************
//メイン//
;*******************
makedir="testkey\\subkey"
Nh@_RegCreateKeyEx makedir
mes "CMPL"
stop
;*****************************************************
890:名前は開発中のものです。
07/05/17 21:46:05 lJm49cl1
#module
#uselib "ADVAPI32.DLL"
#cfunc RegOpenKey "RegOpenKeyExA" int,int,int,int,int
#cfunc RegQueryValue "RegQueryValueExA" int,int,int,int,int,int
#cfunc RegCreateKey "RegCreateKeyExA" int,int,int,int,int,int,int,int,int
#cfunc RegSetValue "RegSetValueExA" int,int,int,int,int,int
#cfunc RegDeleteKey "RegDeleteKeyA" int,int
#func RegCloseKey "RegCloseKey" int
#define KEY_READ 0x00020019
#defcfunc ReadReg int _key, var _subkey, var _data
hkey = 0 //↓規定値を読み込む
if RegOpenKey( _key, varptr(_subkey), 0, KEY_READ, varptr(hkey) ) == 0 {
size = 0
if RegQueryValue( hkey, 0, 0, 0, 0, varptr(size) ) == 0 {
sdim buf, size
a = RegQueryValue( hkey, 0, 0, 0, varptr(buf), varptr(size) )
RegCloseKey hkey
_data = buf
return 0 //キーの取得に成功。
}
else {
RegCloseKey hkey
return -2 //取得に失敗。(ほぼ在り得ないと思うが)
}
}
else {
RegCloseKey hkey
return -1 //キーが無いとき
}
891:名前は開発中のものです。
07/05/17 21:46:59 lJm49cl1
#define REG_OPTION_NON_VOLATILE 0x00000000 //情報はディスクファイルに保存され、システムを再起動時しても情報は失われません。
#define KEY_WRITE 0x00020006
#define REG_SZ 0x00000001
#defcfunc WriteReg int _key, var _subkey, var _data
hkey = 0 //↓規定値に書き込む
if RegCreateKey( _key, varptr(_subkey), 0, 0, REG_OPTION_NON_VOLATILE, KEY_WRITE, 0, varptr(hkey), 0) == 0 {
if RegSetValue( hkey, 0, 0, REG_SZ, varptr(_data), strlen(_data)+1 ) == 0 {
RegCloseKey hkey
return 0 //書き込みに成功
}
else {
RegCloseKey hkey
return -2 //書き込みに失敗
}
}
else {
RegCloseKey hkey
return -1 //キーのオープンまたは作成に失敗
}
#defcfunc DeleteReg int _hkey, var _subkey
return RegDeleteKey( _hkey, varptr(_subkey) )
#global
#define HKEY_CLASSES_ROOT 0x80000000
前に作ったやつをそのまま。参考に
892:名前は開発中のものです。
07/05/17 23:11:30 ECrUiSe6
>>890 >>891
ウォォッ!ありがとう!
激しく参考にさせて頂きます。
('A`)ガンバルゼ
893:名前は開発中のものです。
07/05/18 03:44:38 fYCuLcq6
うを、まじかっ