
かれこれ、HSPを使い始めて4年目ですが、未だにちゃんと理解していない部分がありました。なんか悔しいので、紹介します。
sdim v1,256
とすると、v1という変数の領域を、256byte確保するものと思っていたのですが、
正確には、v1という変数の領域を、255byte + 終了コード(0)確保するようです。
つまり、nバイトの文字列変数を使うには、n+1バイトをsdimで確保し、変数の最後は、必ず0で終わるようにプログラムを書く必要があるようです。
↓のサンプルを見てください。
; 文字数、200未満なら問題無い
#const max 200
; メモリ確保
sdim v1,max
; データを'A'で埋める
repeat max
poke v1,cnt,'A'
loop
; 200になるハズだが、206になる
mes strlen(v1)
変数v1を、終了コードを無視して、データを書き込んだ場合、正常に文字列の長さを取得できなくなります。しかし、200byte未満の確保の場合、なぜか正常に動作しているようです。
ともかく、sdimの動作を誤解していると、大変なバグを生じる可能性がありますので、ご注意ください。
ブロックを置く動作ですが、マウスクリックを離したときではなく、マウスをクリックした瞬間に戻そうと思います。というのも、編集中のステージをクリアできなかった時に「ドンマイ」のダイアログが出るのですが、そのままま[OK]をクリックすると、ブロックを不本意に置くことになります。それを防ぐために、元のように、マウスをクリックした瞬間にブロックを置く仕様に戻したいと思います。
というか、動画とかに気をとられて、ver1.3はデバック不足でした。
他にも、配置ブロック数が最大の85個のステージを開始したとき、一定の条件(検証中)だと、内部エラー3で落ちるなど、今まで確認できなかったバグがあるようです。
色々と酷いので、ver1.2に差し戻したくなってきました。
色々な方にステージを投稿していただいたので、それを遊んでるところをキャプチャして、付属のWindowsムービーメーカーでテロップとか付けました。しかしこのソフト、フリーズが多いですね。
ニコニコで再エンコードを回避しようとしてたら、かなり面倒な作業になってしまいました。結局、ニコエンコというソフトなら一発でしたが…
そもそも、キャプチャするとき、枠は撮らないで、ウィンドウの中だけで十分でしたね。ニコニコの解像度に縮小したら、微妙な感じになりました。
あと、再生時間が5:00ピッタリになったのですが、長すぎでしょうか?
動画をアップロードしてみると分かるのですが、適当にアップロードしただけで、かなりの高画質になるyoutubeは優秀ですね。アップロードも高速だし、動画のタグなど設定するのと並行してアップロードしてくれるのは親切です。それに比べ、ニコニコは、混雑していると動画上げるだけでも数時間待ちだし、画質の縛りも厳しいです。再エンコードの回避に成功しても、エコノミーだとあの画質ですし…
まあ、サーバーの負荷とかあるでしょうから、youtubeとそうやって比較するのは悪いですね。