2018年8月19日日曜日

raspberry pi でTwitter botを作りたい話

帰ってきました。セルディアです。

あまりに投稿間隔が開きましたが、生存報告を兼ねて。

Twitter botを唐突に作りたくなったので、備忘録を兼ねてまとめてみました。

どんな方法でTwitter botを作ろう


botを作るにあたって、思いつく、あるいは発見した方法で以下のようなものがあります。


  • 無料のTwitter bot作成サービスを利用
  • Herokuなどのクラウドサービスを利用
  • Windows端末を上げっぱなしにしてタスクスケジューラなどで自動投稿
  • raspberry piで簡易サーバを立てて自動投稿


最初は、無料のサービスで完全ランダムに呟かせようかな、と思っていたのですが、個性がないとつまらないかな、と思ったのでやめました。
Herokuはおもしろそうですが、クラウドの環境更新やWebサービス向けの仕組みに慣れる気がしなかったので見送りました。完全に実力不足です、はい……。
Windows端末も、ずっと上げっぱなしにするのは消費電力的に嫌なのと、趣味で平行して使っていて障害が発生してbotに影響が出るのは嫌なので取りやめです。一番簡単そうですけどね。

ということで、前々から気になっていたraspberry piを買って使ってみることにしました。

ちなみに、PaizaCloud という、とてもbot向けなサービスも見つけたのですが、あまりに公開が最近過ぎて怖くてやめました。っていうか月2000円って、botで収益でも得る予定でないと無理じゃ。

raspberry pi のバージョン選出


本当はraspberry pi 2 Moderu B+ がコスパのバランスがとれていたのですが、店頭で売られていたのが raspberry pi 3 Model B だけだったので、こちらを選択しました。

CPU 処理能力が高ければ、構築時の設定やビルド・インストールの処理時間が短縮されるので、これはこれでいいのではないでしょうか……道具をそろえるだけで諭吉一枚飛びましたが。

raspberry の初期設定


以下のページで、必須設定・セキュリティ対策共に網羅されています。
神ページです。ほぼこの通りにやって大丈夫でした。

Raspbianのインストールと最強の初期設定
https://jyn.jp/raspbian-setup/

例外的なところを追記します。

私はGUIを有効にしていたので、ユーザ名の変更は以下のページを参考にしました。

Raspbianでユーザー名piを名前変更する。http://matsudamper.hatenablog.com/entry/2017/01/05/020502

日本語入力(IME)の導入


日本語入力をするためには、まず日本語のフォントが必要なのでそれをインストールします。
フォントを入れた後はIMEとしてmozcを入れます。
以下2行がそのコマンドです。

sudo apt-get install fonts-vlgothic
sudo apt-get install ibus-mozc

IMEを入れるときの注意点として、再起動(ログアウト・ログインだけでもいいのかな)しないと有効にならないです。
あとは、入力切り替えをしても日本語入力にならなかったので、一度入力メソッドを削除 → 追加とやってやる必要がありました。

左上のスタートボタン
 ↓
設定
 ↓
IBusの設定
 ↓
入力メソッド
(「日本語 - 日本語」 を削除・追加)


ちなみに、日本語化しても、CLI起動で直接 raspberry pi 本体にコンソール接続すると、日本語表示できませんでした。
こうなると Raspbian Lite の場合は日本語化できなさそうな気がしますが、要調査です。
(CLI起動使わないと思うし……たぶん)

日本語化は、以下のページを参考にしております。

Raspberry Pi3で日本語表示/入力https://qiita.com/izuki_y/items/4587eb2f1634644fec05

Raspberry Pi で日本語入力https://qiita.com/negiboudu/items/9623a7f0fc565b341fab

rubyの初期設定


以下のサイトの通り、rbenvを通してインストールしてみました。

Raspberry PiにRuby (2.4.1)インストールhttps://qiita.com/orihomotakanat/items/b4a983617f64d4768b7c

せっかくlinuxディストリビューションのOSに入れるので、バージョン管理しておきたいですね。
ただ、わざわざ最新バージョンに乗り換えることはないと思いますが……。

今はRuby 2.4シリーズのバージョンが2.4.3まで公開されているので、今回は2.4.1ではなく2.4.3を指定してインストールしました。マイナーバージョンなら最新バージョンを使ったほうが無難なはずです。

しかし、いざインストールしてみると、BUILD FAILEDのエラーが……。


Results logged to の先を見てみると、以下のエラーログ(抜粋)が記録されていました。

The Ruby openssl extension was not compiled.The Ruby readline extension was not compiled.ERROR: Ruby install aborted due to missing extensionsTry running `apt-get install -y libssl-dev libreadline-dev` to fetch missing dependencies.
Configure options used:  --prefix=/home/yukari/.rbenv/versions/2.4.3  LDFLAGS=-L/home/yukari/.rbenv/versions/2.4.3/lib  CPPFLAGS=-I/home/yukari/.rbenv/versions/2.4.3/include

メッセージの通り、「sudo apt-get install -y libssl-dev libreadline-dev」を実行してみると以下の通りビルドが通ったようです。よかった。


あと、rubyを導入して、バージョン切り替えをしたときになぜか即時反映されず、一度sshをつなぎ直すと反映されました。
そういうものなんでしょうか。

Twitter bot の下ごしらえ

少し以下のサイトを参考にしました。raspberry pi ではなく Heroku 上でやっていますが、アプリ連携の部分は一緒です。

RubyでTwitter Botを作ってHerokuで動かすhttp://b0npu.hatenablog.com/entry/2016/06/15/230101#f-860a519a

恐らく、時期によってアプリ連携の作成・連携方法は変わるかもしれないので、最新の情報を探すのが良いでしょう。

半年越しの追記

実はここまでの文章は今から半年前に書いていたのですが、途中で力尽きて放置していました。もう今さら、という感じもしますが、もう書き加えることもないので上げちゃいます。

あ、Twitter botは運転中ですよ。こちらです。
https://twitter.com/stgyukari

シューティングのことをつぶやくだけの、ゆるいbotです。
今は呟きといいねだけだけど、そのうち機能を追加したい。

あとはraspberry piをもう一台買いました。
増えるわかめ、ならぬ増えるラズベリーパイ。
こちらはTwitter botではなく、データベースとWEBサービスの練習台になってもらいます。
それも、果たしてこのブログにネタを上げられるかどうか……。

以上、超久しぶり更新でした。

2017年8月17日木曜日

結月ゆかり実況プレイ動画作成について

久しく姿を現さなかったセルディアです。

二ヶ月くらい間を開けたかな~と思ったら四ヶ月くらい更新していませんでした。

なんてこったい。

結月ゆかり実況プレイ動画を投稿しました


ニコニコ動画によくある結月ゆかりの実況動画をよく見ていて、自分でも作ってみたくなったので作ってみました。

Legend Cave 難易度U.Hardクリア動画【結月ゆかり実況プレイ】Part1

正直、今さらも今さらな超レトロなフリーゲームのプレイ動画ですが、まずはこのゲームで紹介がてら実況動画を作ってみました。

どうやって作るの?


備忘録的に作り方を載せておきます。

まず必要なソフトは以下のような感じです。

  • VOICEROID2 結月ゆかり
  • VoiceroidUtil
  • ゆっくりムービーメーカー3
  • AviUtl

ソフトを使った動画制作の流れは以下のような感じです。


ゆっくりムービーメーカー3上で、ほとんどの動画制作作業をこなせます。
わかりやすい操作方法で、プレビューを見ながら作業できるので非常に直感的に作業できます。

各ソフトの細かい役割や、気をつけたい設定については以下のような感じです。

  • VOICEROID2 結月ゆかり
サイト 株式会社AHS:http://www.ah-soft.com/

利用したソフトの中で唯一有料です。結構高い。
全部フリーで賄うならSofTalkというソフト(いわゆるゆっくりボイス)で、ゆっくり実況動画でもあり。
特に設定せずともテキストを読ませるには申し分ないですが、やはりアクセントや息継ぎに違和感を感じる部分もあるので、アクセントを適当にいじってやる必要があります。
  • VoiceroidUtil
ダウンロード ルーチェ's Homepage:https://www.ruche-home.net/

ゆっくりムービーメーカー3と連携できます。
これを通せば、テキストを入力するだけで、動画への音声ファイル登録、キャラに対応した字幕登録を自動的にやってくれます。
  • ゆっくりムービーメーカー3
ダウンロード 饅頭遣いのおもちゃ箱:http://manjubox.net/YukkuriMovieMaker.php

実況動画の製作を支援するために作られたツールです。その効果は抜群。
実況で使用するキャラの立ち絵を登録し、画像を分けておけばツール内で自由に表情を変更できます。
音声に合わせて字幕を表示することも簡単です。
他にも画像や簡単なテキスト・画像・音声の登録ができ、プレビュー画面を表示しながら位置を変更したりタイミングを調整したりできます。

基本的な操作を覚えれば、かなり直感的に作業できます。

以下の設定項目にだけ、気をつけましょう。
    • 動画をプレビューできるようにする①

      MP4など動画のフォーマットによっては初期設定でプレビューできない場合があります。
      ヘルプの通り、CCCPというものをインストールする必要があります。
      ゆっくりムービーメーカーは32bitアプリなので、CCCPも32bitを入れましょう。
      http://manjubox.net/YMM3_Help.php?p=2013419142230933
       
    • 動画をプレビューできるようにする②

      Win7DSFilterTweakerというソフトで設定しておかないと、再生ラインを動かしたときの動画プレビューが精密になりません。

      以下のサイトでダウンロードできます。
      (恥を忍んで言いますが、この方法・ファイルは安全が保障されているかというと全くわかりません。ご利用は自己責任でお願いします)
      http://www.codecguide.com/windows7_preferred_filter_tweaker.htm

      起動すると、以下の画面が出るので「Preferred decoders」をクリックします。



      例えば、H.264でエンコードされたMP4動画は、32bit decodersのH.264にある「LAV Video」を選択します。
      設定変更したら、忘れず「Apply」をクリックします。


       
    • キャラ素材に最大サイズ制限がある

      私が一度引っかかってしまったのですが、ゆっくりムービーメーカーで表示できるキャラには800×800までという制限があります。
      しかたないので、それ以上の立ち絵を使う場合は縮小しましょう。
      http://manjubox.net/YMM3_Help.php?p=201341914238936
       
    • キャラ素材の画像で、00番は使わない

      ゆっくりムービーメーカー3の仕様上、00番は特殊な仕様になっているようです。特に口パーツは、勝手に他の番号のパーツと組み合わせてアニメーションになってしまいます。
      仕様をバッチリ把握しているわけではないので、この動作はよくわからないですが、なるべく00番は使わないほうがいいかもしれません。
       
  • AviUtl
ダウンロード AviUtlのお部屋:http://spring-fragrance.mints.ne.jp/aviutl/

フリーソフトで動画を製作するなら、これが王道です。
これだけで編集するにはかなり専門的な知識が必要になると思いますが、ゆっくりムービーメーカーを通して操作する分にはそんなに複雑ではないです。
ただ、初期設定はややこしいので、以下を忘れないようにしましょう。
    • 拡張編集を有効にする

      これがないと始まりません。
       
    • 動画を読み込み・プレビューできるようにする

      AviUtlはそのままだと扱える拡張子が限られるため、いろいろな拡張子を扱えるようにする必要があります。
      私はL-SMASHプラグインを利用しました。
       
    • 動画を書き出せるようにする

      読み込みとは別に、動画を書き出すためのプラグインが必要です。
      こちらはx264guiExを利用しました。
      ニコニコ動画用(新仕様対応)の書き出し設定もありますよ。

       
    • AviUtlのシステム設定を変更する

      私が特に嵌ってしまった項目について、変更方法を載せておきます。

      AviUtlを起動して、上部ツールバーから「ファイル」→「環境設定」→「システムの設定」を開きます。


      「最大画像サイズ」を、読み込む画像に合わせて適宜変更しておきます。
      「LargeAddressAwareを有効にする」はチェックしたほうが良いです。


      動画を制作している中で、ゆっくりムービーメーカーで作成したファイルをAviUtlに読み込ませたときに、メモリが足りないことがあったためチェックしました。

以上、簡単ながら実況動画の制作についてでした。

そうそう、動画制作にはかなり処理時間がかかるところがあります。
特にネックになるのは……
  • ゆっくりムービーメーカーから出力したexoファイルをAviUtlに読み込ませる
    (30分の動画で、読み込みに10分~20分くらい)
  • AviUtlから動画への書き出し
    (30分の動画で、書き出しに5時間~6時間くらい)

といったところです。ちょっとした誤字やエフェクトミスの修正にいちいち何時間もかかってしまうので、動画出力前には厳重にチェックしましょう!

※ 追記
exoファイルをAviUtlに読み込ませるのが非常に遅かったのは、プレイ動画が非常に重かったためのようです。別の動画作成で軽いプレイ動画を利用したら、1,2分で読み込めました。
重い:容量3GB、長さ1時間半くらい&容量2GB、長さ1時間くらい
軽い:容量450MB、長さ12分くらい&容量80MB、長さ2分くらい
長くて重い動画を元に作成する場合、都合のいいところでトリミングしたり分解したほうがいいかもしれません。ご参考まで。

いじょ。

2017年4月16日日曜日

ぷちぎるどver0.90の予告

春ですね。セルディアです。

ぷちぎるどver0.90について


長らくお待たせしていましたが、ぷちぎるどver0.90へのバージョンアップが近日中にできそうなので、更新内容について簡単にご紹介します。


  • 防具の種類に盾を追加



防具の種類に盾が追加されました。
更なる防御力の強化が可能です。
ただし、盾を装備していると、片手武器しか使えません。一応両手武器も装備はできますが、命中点が半減します。


  • キャラのレベルアップによるフィーチャー強化



レベルアップすると標準で最大HP,MP,SPが上がるのに併せて、フィーチャー経験値が溜まります。これで好きなステータスを強化することができます。(フィーチャー強化はやり直せないので充分に注意してください!)

※ このゲームの割とレアなやり直せない要素です。気分次第で取り消し可能にするかも……


  • 敵のHP表示の変更
  • 味方のステータス表示の変更


敵のHPが正確なゲージ表示ではなく目盛り式のアバウトな表示になりました。敵の残りHPが読みづらくなったため、若干緊迫感が生まれました。
味方はMPが3桁になる可能性もあるためレイアウトを変更しました。


  • ステータス異常の追加



毒などのステータス異常を実装しました。キャラの行動終了時の解除判定で成功すれば解除されます。ステータス異常の強度が高いほど解除しづらく、キャラの体力または精神が高いほど解除しやすくなります。
(画面では左下のミックが強度22の毒にかかっていますね)


  • ステータス強化の仕様変更


ステータス強化は、発動者の能力に合わせて持続ターン数が伸びるようになりました。また、同じステータス強化を重ねがけすると、持続ターン数が上書きされるようになりました。
ステータス強化の種類も増えています。


  • 装備エンチャントの強化



装備にはまれにエンチャントと呼ばれる強化がランダムで付与されていましたが、そのエンチャントがもっと大胆に付与されるようになりました。
今までは最大3つまでの付与でしたが、5つ以上付与されることもありえるようになっています。4つ以上付与されると、エンチャントの合計レベルがアイテムアイコンの右上に表示されます。

以上、大きなところを取り上げました。
細かい表示やUIの改善、ゲームバランス調整などもちょこちょこしています。

あとは、クエストをもう少し追加できたら、晴れて公開になると思います。
カミングスーン。

2017年3月4日土曜日

HSPコンテスト2016で受賞しました!

またまたお久しぶりになってしまいました、セルディアです。

HSPコンテスト2016で受賞しました!


HSPコンテスト2016に応募していた「ぷちぎるど」ですが、この度、(有)テクノキット賞を受賞いたしました。ありがとうございます!

本日、無事に商品が届きました。いぇい。


キーホルダーがシンプルでシャレオツな感じで良いです。

発電機付きラジオが来ると聞いて、なにもの…? と身構えてましたが、すごく技術心をくすぐるものが来ましたw

コンテスト最終選考結果はこちらから。

http://hsp.tv/contest2016/cntst_final.html

今後の予定


ブログがほとんど更新されてませんが、忘れてはいないんです、はい…。

ぷちぎるどは次期バージョンアップに向けてぼちぼち開発中です。

今のところ、以下の部分に手を加えています。


  • 盾の追加
  • ステータス異常の追加


あとはゲームとしてなり立てせるために重要なクエストの大量追加ができれば、と考えています。なにはともあれまず物量を増やしたい。

2016年11月15日火曜日

シューティングゲーム「CrimzonClover」

おはこんばんにちわ、セルディアです。

シューティングゲーム「CrimzonClover」について


CrimzonCloverは、同人からアーケードへ移植され、Steamでも発売された、超硬派シューティングゲームです。

アーケード版(for NESiCAxLive) 冒険企画局公式サイト
http://www.bouken.jp/pd/cc4n/

Steam版
http://store.steampowered.com/app/285440/?l=japanese 

どんなゲーム?


このゲームには4つのモードがあり、様々な種類のシューティングが遊べます。

上のゲーム紹介のリンク先に詳細な説明が載っていますが、ほんのさわりだけ簡単にお話します。


  • ORIGINALモード
スタンダードな弾幕シューティングです。
1面から歯ごたえのある難易度ながら、ゲージを溜めて「ブレイクモード」を発動することで爽快感を味わうことができます。


  • BOOSTモード
弾の数は少ないものの、1発1発に殺意がこもっている純粋なシューティングです。
ランクシステムを利用すれば、苦手な場面をボムで簡単にしたりできます。


  • UNLIMITEDモード
ちょっと初心者にはお勧めできないモードですが…
絶望的な弾幕ながら、通常装備のロックシュートによる弾消しで生き延びていくモードです。


  • TIME ATTACKモード
3分間の限られた時間で、スコアを競うゲームです。
スピーディな展開と残機無制限のおかげで、お手軽にスコア稼ぎを楽しめます。


アーケード版とSteam版って?



アーケード版は、2013年4月に稼働開始した、ゲームセンター用(NECiCAシステム)のゲームです。

Steam版は、2014年6月に発売開始した、アーケード版をPC用に移植したゲームです。ゲーム内容は、同一内容となるARCADEモードと、それをマイルドにアレンジしたNOVICEモードがあります。
(ぶっちゃけSteam版は上位互換です。しかも安い!)

シューティングに慣れてない方でも、NOVICEモードで気軽にシューティングを遊べますよ!

スコアの軌跡


これまで私が更新してきた、CrimzonClover UNLIMITEDの各機体のスコア経緯を載せます。
上にあるものほど稼働してすぐのスコア、下にあるものほど最近のスコアになります。
各列は、機体ごとのスコアを示しています。


備考欄の意味は、次の通りです。
  • 初…初クリア時のスコアです。
  • ☆…Steam版のスコアです。☆がない場合はアーケード版のスコアです。
どういう順番で機体別のスコアを詰めていったかを見てみるとおもしろいかもしれません。

スコアは、基本的にクリアしたもののみを掲載しているので、序盤の辺りや最近の辺りでは、数段飛ばしでスコアが伸びているものもあります。

僭越ながら、Steam版のSuperplay Strategy Guideに、TYPE-IIのリプレイで参加させて頂いております。
どんな稼ぎをしているのかは、Steam版で見られますので、気になる方はぜひご覧ください。1面だけ、お試しで無料で見られます(2面以降はDLCだよ!)。

おまけ


昔の情報になりますが、最強機体TYPE-ZによるUNLIMITEDモードのクリア重視プレイ動画をニコニコ動画に(こっそり)上げています。
UNLIMITEDモードに興味を持った方、また挑戦したいけど進み方がわからないという方は、こちらの動画を参考にして攻略してみてください。

http://www.nicovideo.jp/watch/sm21640309

これであなたもUNLIMITEDプレイヤーだ!

以上。

2016年11月6日日曜日

HSPの落とし穴(しましま模様)

セルディア見参!

まだあった! HSPの落とし穴!


なんだか恒例行事みたいになってきましたが、またまたHSP3dishの罠にはまってしまったので備忘録として載せておきます。

今回ご紹介するのはこちら!(TVショッピング風に)

文字列操作関数です。

以下の関数で、1番目の引数(検索される文字列変数)に文字列型の配列を指定し、かつ要素番号に変数を使うと、androidで動かした場合のみ落ちます。

instr
strmid
strtrim

以下のプログラムでコメントアウトしているところを外して動かしてみてください。落ちます。

#include "hsp3dish.as"

redraw 0
color 255, 255, 255
boxf

; 落ちない
pos 0, 0
color 0, 0, 0
_str = "ハロー ワールド"
mes _str

; 当然落ちない
_ret = instr(_str, 0, "ワ")
mes str(_ret)

; 落ちない
sdim _arrstr, 32, 4
_arrstr(2) = _str
mes _arrstr(2)
_ret = instr(_arrstr(2), 0, "ワ")
mes str(_ret)

; androidで落ちる
;_index = 2
;_ret = instr(_arrstr(_index), 0, "w")
;mes str(_ret)

; 落ちない
_mid = strmid(_str, instr(_str, 0, "ー"), instr(_str, 0, "ル") - instr(_str, 0, "ー"))
mes _mid

; androidで落ちる
;_index = 2
;_mid = strmid(_arrstr(_index), 1, 3)
;mes _mid

; 落ちない
_trim = strtrim(_str, 3, ' ')
mes _trim

; androidで落ちる
;_index = 2
;_trim = strtrim(_arrstr(_index), 3, ' ')
;mes _trim

; 落ちない
_rep = _str
strrep _rep, "ル", "ru"
mes _rep

; 意外と落ちない
_index = 3
_arrstr(_index) = _arrstr(2)
strrep _arrstr(_index), "ル", "ru"
mes _rep

; androidで落ちる
;_splitstr = "12,34,56"
;split _splitstr, ",", _split1, _split2, _split3
;mes _split1
;mes _split2
;mes _split3

redraw 1

不思議なのが、配列の要素数を変数ではなく数字で直書きすると動くところですね。
他に、文字列操作以外の関数でも同じように試してみましたが、特に落ちませんでした。文字列操作だけのようです。
noteselなどの複数行文字列操作も、特に問題ありませんでした。

なお、splitはそもそも配列でなくても落ちました。

そもそもHSP3dishで対応しているの?


一時期は、そもそもandroid上で対応していなさそうというお話も上がっていたようです。

http://hsp.tv/play/pforum.php?mode=pastwch&num=59791

ただ、今は上記のプログラムを動かしてわかる通り、全角文字列に対応しているようです。ルールを守って使えば、とりあえずは利用できるのかな? androidで利用できるようにしたという更新履歴が見つからないですが…いつ修正したんだろう。

splitだけは公式で現在正しく動作していないことが周知されています。

http://www.onionsoft.net/hsp/v34/doclib/hsp3dish_prog.htm#KNOWNBUG

まだまだ発展途上ですね…。

以上、お気をつけてHSP3dishライフをお楽しみください。
(あと修正を切実に願います)

2016年10月30日日曜日

ぷちぎるどのマイナーアップデート版ver0.82について

Happy halloween!
セルディアです。

ぷちぎるど更新


ぷちぎるどをver0.82にアップデートしました。
以下の場所で公開しています。

Windows (Vectorサイトへリンクします)
http://www.vector.co.jp/soft/winnt/game/se511621.html

Android (Google Playサイトへリンクします)
https://play.google.com/store/apps/details?id=net.seldia.puchiguild&hl=ja

HSPコンテスト2016(コンテストサイトへリンクします)
http://hsp.tv/contest2016/

Vectorはまだ申請が受理されていません。反映されるまでもうちょっと待ってネ。

驚きの更新内容


以下の改善をしました。


  • キャラクターのステータス表示を改善しました。
    戦闘に重要な数値が一目でわかるようになっています。
    (各能力値が見たいときは長クリックして詳細表示で)
  • 職業の移動範囲、移動能力を明記しました。
  • リストのスクロールバーをスライド可能にしました。
    アイテムが大量にあっても操作しやすくなりました。
    特にエンチャント付きアイテムがかさばったときに有効です。
  • 戦闘表示の速度調節を可能にしました。
    余裕のある戦闘は高速化で飛ばせます。
左クリック押しっぱなし、またはホールドで2倍
右クリック押しっぱなし、または2本指ホールドで4倍
  • (キャラの解雇で総人数を3人未満にできないようにしました。詰み防止です)

驚くほど核心的な内容が含まれていません。
操作性向上のみです。

これにてHSPコンテスト2016向け開発閉幕


1年ほど前からぷちぎるどをHSPコンテスト2016に向けて開発してきましたが、今回の更新で一区切りつくことになります。

思えば1年間とは長いものでしたが、ぷちぎるど開発は思ったより難航してしまいました。なにせ初めての不特定多数への一般公開なので、あらゆる操作を想定したテストやバグ修正、そしてセーブデータへの細心の注意といった、今まで気にしていなかった(目を背けてた)部分に立ち向かっていく必要がありました。正直申し上げると、1年にしては追加内容が見合っていないです。

でも、操作性やゲーム性の基盤は固められたと思いますので、もう1年、またレベルを上げて開発していこうと思います。はたしてHSPコンテスト2017に応募するかはわかりませんが…神のみぞ知る。

以下の要素を実装していく方針です。


  • ステータス異常の追加
    まだ戦闘が単調なところがあるので、いろいろ追加していきたいです。
    敵はもっと意地悪に、味方はもっと豪快に。
  • 説明、解説の追加
    ところどころにチュートリアルはありますが、とても必要事項をまかない切れてないです。
    アイテム一つ一つの説明や詳細表示の内容なども充実させていきたいです。
  • HP0による戦闘不能ペナルティの重大化
    かなり繊細なバランスのとり方が必要になりますが、ちょっとペナルティが軽すぎるので、なにかしら制限を掛けたいです。
    死亡→即ロストは考えていません。
  • ストーリーに沿ったクエスト
    実装したい!!!!!
    これ実装しないでRPGとかないわ!!


お楽しみに。

あとがき


いやあ、1月に1回はブログを書きたいなと思っていたんですが、9月は何も書いていませんでした。反省。

2016年8月27日土曜日

ぷちぎるどのマイナーアップデート版ver0.81について

お疲れ様です。セルディアです。

ぷちぎるどをver0.81にアップデートしました。


Windows (Vectorサイトへリンクします)
http://www.vector.co.jp/soft/winnt/game/se511621.html

Android (Google Playサイトへリンクします)
https://play.google.com/store/apps/details?id=net.seldia.puchiguild&hl=ja

HSPコンテスト2016(コンテストサイトへリンクします)
http://hsp.tv/contest2016/

Android版は、もう更新が反映されています!
他は反映されるまでもうちょっと待ってネ。

(9月1日追記:Windows版も更新が反映されました)

夏のバグ修正祭り


残念ながら私の稚拙なプログラムにより以下のバグがあったため、修正しています。なむさん。

  • 回復魔法が魔法になっていなかった(失敗しなかった)ため、修正してしまいました。
  • まれに敵の名前が「泉」になってしまうバグを修正しました。
  • 宝箱のトラップが発動した直後に敵とエンカウントすると、トラップが敵として現れるバグを修正しました。
  • スキルがLV5の状態で経験値が上限に達すると、戦闘終了時に操作を受け付けなくなってしまう致命的なバグを修正しました。
  • パーティが0人、またはHP0のキャラのみでクエストに出発できないようにしました。
  • クエスト報酬のアイテムが意図せず固定になってしまっていたため、修正しました。
  • Android版で、半角カナ文字の表示ができていなかったため修正しました。

また、以下の変更を施しています。

  • 一部魔法の消費MP、難易度を上昇させました。少し扱いづらくなってしまいます。
  • アイテムの表示項目を改善しています。かなりアイテム効果がわかりやすくなっている…はずです。
  • スキルレベルが上がると、アイテムとは別に使えるスキルが増えます。アイテム枠を節約しながら技・魔法を持つことができます。
セーブデータの移し方は、同梱のReadMeにも書いていますが、ここにも転記しておきます。

・以前にプレイしていたバージョンのdataフォルダにある、以下の7つ全てのdatファイルを、最新版のdataフォルダに入れてゲームを起動すると、データを引き継ぐことができます。

cenc.dat
chara.dat
ienc.dat
item.dat
party.dat
player.dat
quest.dat

アイテムの表示改善


アイテムの効果説明をわかりやすくしました。


武器・防具は、重要な情報を表形式で表示するように整理しています。


技・魔法は、効果範囲の説明を文字からアイコンに変更しています。
威力表示も、ダイス表記から平均威力をメインに変更しています。(ダイス表記も併記)

あとがき


ほんとうは表示改善をもっと作り込んでから公開したかったのですが、ゲームが進行不能になる致命的なバグがあったため、かなりリリースを早めました。
このバージョンで一旦落ちを着けて、これからまた作り込んでいきます。
新バージョンをよろしくお願いいたします。

2016年8月19日金曜日

HSPコンテスト2016にぷちぎるどを応募しています

納涼の候、皆様におかれましては益々ご健勝のこととお慶び申し上げます。セルディアです。

HSPコンテスト2016にぷちぎるどを応募しています


件名の通りでおもしろみがないのですが、応募しています。
以下のサイトで開催されています。私の作品は、応募作品(Dish1)のリンク先にあります。なんと1個目に表示! ラッキー!

http://hsp.tv/contest2016/

HSPは実は歴史のあるプログラミング言語で、コンテストも2003年から実施しているようです。HSP3dishができてからはdish部門もできて、私も去年に一度応募していますが参加賞レベルでした。

今回はなんとか形にはまとまってるので、ええところまで行ければええな。

2016年7月23日土曜日

HSPの落とし穴(市松模様)

おはようございます、セルディアです。

まだあった! HSP3Dishの落とし穴!


前回にいろいろとHSP3Dishのこいつぁヤバイ仕様を挙げていましたが、今回新たな仕様を発見したのでご連絡いたします。

・関数にldimで定義したラベル配列変数の要素を渡せない

どういうことかと申しますと、たとえば以下のサンプルプログラムを例に挙げます。

goto *start
#include "hsp3dish.as"

*label0
mes "label0"
return

*label1
mes "label1"
return

*label2
mes "label2"
return

#deffunc testfunction1 var m_label, int m_int
; 数字
mes "" + m_int
gosub m_label
return

*start

redraw 0
color 255, 255, 255
boxf

color 0, 0, 0
ldim labelarray, 3
labelarray(0) = *label0
labelarray(1) = *label1
labelarray(2) = *label2

; 本来の使いかた
gosub labelarray(0)
gosub labelarray(1)
gosub labelarray(2)

; 関数へ引き渡す
testfunction1 labelarray(0), 0
testfunction1 labelarray(1), 1
testfunction1 labelarray(2), 2

redraw 1
ldim配列変数labelarrayを定義して、一度gosubで普通に呼び出し、次にtestfunction1で一度ラベル変数を渡して呼び出しています。

関数testfunctionは、var型の引数を定義していて、こうすると引数にラベル変数を渡すことができます。

本来、このプログラムはgosubで"label0","label1","label2"が出力され、もう一度testfunctionで同じく出力されるのですが、Androidアプリに変換して実行すると、testfinctionでは"label0","label0","label0"と同じ出力しかされません。

testfunctionには、配列の0番目の要素しか渡っていないんですね。

困った。

以下のようにすれば一時的にしのげます。


_label = labelarray(2)
testfunction1 _label, 2

丁寧に解説しましたが、要するにラベル型配列の要素を関数に渡すなってことですね!

いじょ。

2016年7月16日土曜日

ぷちぎるどver0.80公開です

やはろー、セルディアです。

新しいぷちぎるどが遊べるようになりました!


先日ちょこっとだけ公開したぷちぎるどの新バージョンが、ついに遊べるようになりました。
HSP3Dishの力により、WindowsとAndroidで遊べるようになっています。

Windows (Vectorサイトへリンクします)
http://www.vector.co.jp/soft/winnt/game/se511621.html

Android (Google Playサイトへリンクします)
https://play.google.com/store/apps/details?id=net.seldia.puchiguild&hl=ja

今回のバージョンアップで、かなり操作性を重視して改善しています。

アイテムもまとめられるようになって、一層遊びやすくなったはずなので、いよいよアイテムやクエストを増やしてボリュームアップする方向で進みます。

(ちなみに、恐ろしくバランス崩壊のやけくそなクエストを追加しましたが、果たしてクリアできるかはわかりません)

2016年6月21日火曜日

ぷちぎるどver0.80の先行紹介

またまた久しぶりです、セルディアです。

待たせたな!


しばらくめぼしい連絡を出せませんでしたが、そろそろ自作ゲーム「ぷちぎるど」のバージョンアップができそうなので、新たな要素をちょっとだけご紹介します。

上位職の実装



今までは4種類の職業の中から1つを選び、レベルアップさせていくだけの簡素な職業要素でした。
バージョンアップすると、職業を極めればさらに上位の職業に転職することができます。もちろん、最初に選べるどの職業よりも強力です。
(その分、既存の職業は少し弱くなります。ゴメンネ!)

アイテムのスタック・複数所持の実装



今までは倉庫に入れたアイテムがかさばり、しかもクエストに持っていけるアイテムは1アイテム1個までに決まっていました。
バージョンアップすると、倉庫内では同じアイテムを複数まとめておけます。


アイテムによっては、クエストに複数個まとめて1枠として持っていけるものもあります。

エンチャントの実装



バージョンアップすると、ランダムに付与される「エンチャント」という追加効果によって、より強力な装備を得ることができます。


詳細表示画面で、各エンチャントを確認できます。クリアすると武器防具がもらえるクエストがありますが、この武器防具にまれにエンチャントがついています。ガンガンクエストをクリアして、より強い装備を整えましょう。

戦闘中移動の実装



今までは、戦闘を開始すると、逃げるか勝利・敗北するまでキャラの位置を変更できませんでした。
バージョンアップすると、ついに戦闘中に移動することができます。
職業によって移動範囲が変わります。ただし、移動するとそのターン行動できない職業もあるので気を付けましょう!

新クエストの実装



いったいどんな試練が待ち受けているのか…お楽しみに。

あとがき


一回こういう紹介やってみたかったんですよね。
というか、追加すべき要素をまだまだ追加しきれてないのが本音。

2016年5月29日日曜日

Markdownの力

お疲れ様です、セルディアです。

徒然なるままに書き連ねたひ


皆さんは、考えていることやアイデアを書いてまとめたいときに、どんな方法を使いますか? メモ帳で充分? それともWordで丁寧に書き上げる、アナログに紙とペンで済ませる…などなど。
でも、ただテキストエディタで書き留めておいても、文章量が増えてくると、まとめ方も迷ってきます。うまくまとめないと、同じようなことがいろんなところに散見されたり、どこに何が書いてあるのかわからなくなったり…これでは本末転倒です。
そういって今度は、WordやHTMLなどの構成を整えられるような高機能なエディタでまとめようとすると、書くために覚えることが多くなっていきます。見出し機能はどこかな、箇条書き機能はどこかな、編集方法はどうかな…。そのために書くことがストレスになると、それはそれで大変。

今回は、編集時のわかりやすさと閲覧時の見やすさを兼ね揃えたMarkdownをご紹介します。

Markdownでできること

Markdownは、テキストで書いた内容を、自動的にHTML形式などに変換してくれます。非常に簡単なルールで記述できるため、とても書きやすく見やすいです。

いくつかルールを上げてみます。


  • 見出し
    見出しは行先頭に#(シャープ)を付けます。#の数によって、見出しのレベルが変わります。
# タイトル
## サブタイトル1
### 項目1
### 項目2
## サブタイトル2
...
  • 強調
    強調したい文章を*(アスタリスク)で囲みます。
例:ここが*強調*されます。
  • 引用
    引用する場合は、行先頭に>(大なり)を付けます。
> 引用される文章です。
> 複数行引用するときは、連続して>を付けます。
  • 箇条書き
    行先頭に*, +, -などを入れることによって、箇条書きにすることができます。
    箇条書きの中に箇条書きのリストを入れることもできます。
* 項目1
    + 項目1-1
    + 項目1-2
* 項目2
...
  • リンク
    文章内にリンクを埋め込むことができます。
    文章内の見出しや、Webページにリンクさせることが出きます。
[ここ](#見出し1)が見出し1に飛びます。
  • コード引用
    構文ルールで使ってしまっている記号文字やスペースなども、直接テキスト通りに表示したい場合は、コード引用で記述します。
    コード引用は、```(バッククォート)3つで文を挟みます。

```
int main(void) {
    printf("hello world");
    return 0;
}
``` 
また、文章の一部分をコード引用形式にしたい場合は、`(バッククォート)で挟みます。 
例:ここが`code`です。

HTMLへの変換


HTMLへ変換するには、Pandocというソフトを使います。
Pandocは以下からダウンロードできます。

http://pandoc.org/

英語のページですが、Installingから辿れば簡単にダウンロードできます。
インストーラに従ってインストールすれば、すぐに使える状態になります。

Pandocで変換するためには、コマンドプロンプトを使います。
あらかじめMarkdownのルールで書いたファイルを、拡張子mdで適当な場所に保存しておきます。コマンドプロンプトのcdコマンドで保存したディレクトリに移動して、以下のコマンドを打ってみましょう。
pandoc -t html -s hoge.md -o hoge.html
hoge.mdは適宜保存したファイル名に合わせてください。
コマンドを打つと、同じフォルダにhtmlファイルが作成されます。

さらに便利なオプション


Pandocには、ただMarkdownテキストからHTMLに変換するだけでなく、いろいろ便利なオプションがついています。
一部をご紹介します。


  • Markdownのルールを変更する
    実はMarkdownは、いろいろな派生ルールがあります。といっても、それぞれが「簡単に記述できる」という目的に沿って実に単純明快なルールで派生しているので、それほど難しくはありません。
    とりあえずGithubが流行ってそうなので適当にGithub形式を指定しましょう。
    こんな感じで指定します。
pandoc -f markdown_github -t html -s hoge.md -o hoge.html
  • 見出し一覧を付ける
    せっかく見出しを付けたはいいものの、見出し一覧がなければ役立つものも役立ちません(言いすぎ?)
    Pandocには見出し一覧を自動的に作成する方法があるので、以下のようにオプションを指定しましょう。
    なんと、HTMLリンクも貼ってくれます。
pandoc --toc -f markdown_github+pandoc_title_block-ascii_identifiers -t html -s index.md -o index.html  
 (+pandoc_title_block-ascii_identifiers という謎のオプションを指定しないと、全角文字の見出しにリンクを貼ってくれません)
  • CSSを指定する
    HTMLは、ちゃんと装飾指定してやらないと、非常にそっけない表示になります。せっかくCSSという簡単で便利な装飾方法があるので、指定してみましょう。
    今回はGithub風のCSSを借りてみます。以下で公開されている方がいるので、感謝しつつダウンロードします。

    https://gist.github.com/andyferra/2554919

    そして、mdファイルと同じフォルダに置いて、以下のコマンドで変換します。
pandoc --toc -f markdown_github+pandoc_title_block-ascii_identifiers -t html -c github.css -s index.md -o index.html

終わりに



以上で私からの紹介は終了です。
Markdownは使いこなせばもっと便利なルールや表現方法がたくさんあるので、気になった方はじゃんじゃん調べてみてください。

そうそう、本来Markdownは、改行にはスペース2つを入れるのがルールみたいなのですが、Pandocで変換するとテキストの改行から自動的にHTMLで改行してくれます。
まあスペース2つなんで視覚的に全く見分けがつかないし、忘れやすいし、ぶっちゃけクソ仕様…とにかく、都合がいいのでそのまま使ってます。

それでは、よいテキストメモライフを。

2016年4月17日日曜日

ぷちぎるどの開発進捗(4月①)

おひさひさー、セルディアです。

ぷちぎるど進捗どうですか


こそこそと開発を続けております。

まだまだやりたいことはぎゅんぎゅん詰まっていますからね!


今回は、キャラを戦闘中に移動できるようにしました。

キャラをタップして、薄い緑色になったマスにドラッグアンドドロップで移動できます。

これで、かなり戦略の幅が広がるかと思います。

移動方法は、職業によって決まっています。

職業によって、以下のいくつかの能力を得られます。
  • 上下左右移動可能
  • 周囲8方向移動可能
  • 他のキャラと入れ替われる
  • 移動した直後にアイテム、技が使える
新しいシステムを利用して、更なる強敵に立ち向かいましょう。

しかし、敵の移動はどうしようかな…。ターン終了ごとに、敵がスッと動き出すとかやってみようか(ノープラン)。

さらに言えば、この実装により、副作用で「敵の位置を強制的に動かす」アイテムや技も作れます。ふふふ、さてどうしてやろうか…(ノープラン)。

2016年3月15日火曜日

HSPの落とし穴(水玉模様)

hello, セルディアです。

HSP3dishにだって…… わからないことぐらい…ある…


HSP3dishには、残念ながらまだまだ未対応な機能や隠されたバグがあります。

発展途上とも言えれば、まだまだ成長する余地はある、とも言えますが、開発中に突然原因不明のバグが発生して、Androidで画面が真っ暗になり気づいたらホーム画面に戻る…という悪夢は見たくないでしょう。

ここで、HSP3dishの仕様と未対応機能をまとめておきます。

チキチキ不具合ルーレット


まずは、Windows版では動くがAndroid版で落ちるコードの書き方をまとめます。


  • 新規関数登録(#defcfunc)による関数で、他の新規関数や新規命令(#deffunc)を呼び出すと落ちる
#deffunc testfunc
    ...
    return

#defcfunc testcfunc
    ...
    testfunc
    ...
    return
  • 配列への連続代入で落ちる
dim array_var, 5
array_var = 1, 2, 3

  • 新規関数、新規命令内で、別のラベルにgosubしてから引数を使うと落ちる
#deffunc testfunc str testarg
    gosub *testlabel
    return

*testlabel
    mes testarg
    return
  • foreach、forを使うと、Cコードへ変換時にエラーが発生する(コード自体は生成されるが、Androidで動かすと落ちる)


実は、HSP自体にも問題が発生するコードの書き方があるので、まとめます。


  • (1) repeat~loopループ内でgosubラベルによりジャンプする
    (2) ラベル内でrepeat~loopループ内でreturnすると、次のrepeat~loopで予期しない挙動を取る

repeat 4
    gosub *testlabel
    mes "testA"
loop
stop

*testlabel
    repeat 4
        mes "testB"
        return
    loop
    return

(やっかいなのは、gosubがrepeat~loop内でなければ、何の問題も起こさないことです。たまたまループの外でgosubしてうまくいっている経験があると、この仕様に気づきにくいかもしれません)
  • 新規関数、新規命令をreturnで閉じないまま別の新規関数、新規命令の定義文に差し掛かってもエラーが出ない(個人的にこれでよく悩まされます)


#deffunc testfuncA
    a = 0

#deffunc testfuncB
    a = 1
    return

以上です。

ざっと並べましたが、中にはWindows版で全く意識せずやらかしている場合もあるかもしれません。
私もコードを書いているうちに、うっかり上記の条件を満たしてしまってドはまりすることがよくあります。

HSP3dishを使って「Windowsでは動くのにAndroidでは動かない! なぜだ!」となっている人の助けになれば幸いです。

気を付けてもやらかしちゃう 人間だもの


気を付けて書けばバグが減るならこの世にバグはないです。

ということで、自動的にAndroidで落ちてしまうコードを発見するプログラムを作りました。

簡単に言えば「Windowsで動くけどAndroidで落ちるったー」です。

こちらがコードになります。
https://sites.google.com/site/seldiacotton/file/codecheck.rb

驚くなかれ、Rubyで書かれています。Rubyが一番書きやすいんだもん…!(わがまま)
動かすためにはRuby実行環境をインストールする必要があります。
入っていない場合は、以下のサイトからインストールしてください。
https://www.ruby-lang.org/ja/
(Windows版Rubyバイナリのインストーラをダウンロードして実行すればOK. Rubyバージョンは1.9.0以降ならなんでも大丈夫…なはず)

ダウンロードしたRubyコードを、hspファイルと同じディレクトリに置いて、コマンドプロンプトで以下のコマンドで実行してください。

ruby -Ks codecheck.rb

すると、同じディレクトリのhspファイルを検査してくれます。

いきなりRubyとか出てきて、とてもHSPのコードを書く人向けに作ったとは思えない投げ出しっぷりですが、お役に立てれば幸いです(そしてすべてを投げ出す)。

使い方と注意事項


上で述べている、不具合を起こしてしまうコードの書き方はある程度検出できるようになっています。コマンドプロンプト上に出力された文を見て、良しなに判断してください。

Rubyコードの2行目と4行目に、対象に含むファイルと、逆に除外するファイルを記述することができます。指定方法は記入済みの例に倣ってください。

あくまで個人的に検査用に作っただけで、万人の書き方にも耐えうるよう精密な仕様に対応してるわけではありませんのであしからず。一応、せっかくつくるならと、結構作り込んではいますが…。

もし、こういうコードの書き方をすると誤検知するよ! とか、こういう書き方は検知してくれないの? とか、他にもこういう不具合があるんだけど! とかあったら、コメントでくれると対応したり喜んだりするかもしれません。

よろしくお願いいたします。

いじょ。

2016年2月23日火曜日

サクラエディタをHSPエディタに改造する(その3 実行ボタン)

たてつづけにセルディアです。

前々回、前回と続いて、サクラエディタのHSP用設定改造です。

ボタン1つでコンパイルする


たいていの開発環境なら、ソースコードをつらつらと書いた後、F5かF9辺りを押せば一発でデバッグを開始できます。HSPの場合は適当なテキストエディタで書くと、コンパイルする際は若干の手間がかかるのですが、ここをサクラエディタの機能で一発でデバッグできるようにしましょう。

今回は、F5キーで編集中のHSPファイルのデバッグを実行するようにします。
(編集中のファイルは全て上書き保存されます)

(1) コンパイラ実行ファイルをダウンロードする

今回はHongKongさんのコンパイラ実行ファイルを利用します。
https://dev.onionsoft.net/seed/info.ax?id=134

ダウンロードしたら、中にある「hcl_comp.exe」を、HSPのインストールフォルダ(hsed3.exeが置いてあるフォルダ、標準では「C:\hsp34\」)に入れましょう。

(2) コンパイル用マクロを作成する

前回と同様、PPAマクロファイルを作成します。

---------------------------hsp.ppa ---------------------------
S_FileSaveAll();
Exec('C:\hsp34\hcl_comp.exe', S_GetFilename(), 0);
---------------------------ここまで---------------------------
(HSPインストールフォルダが違う場合は、ディレクトリを書き換えてください)

前回設定したマクロ一覧フォルダに保存します(下記)。

「共通設定」マクロタブ


(3) 作成したマクロを登録する

おなじみの手順です。

「共通設定」マクロタブ
① 適当にマクロ番号を選択する(今回は1番を選択)
② 名前に「HSP実行」、Fileに先ほど作成したファイル名(hsp.ppa)を入力する
③ 設定ボタンを押して反映する


(5) キーに割り当てる

これもおなじみの手順です。
今回は「F5」に割り当てます。

① 「キー割り当て」タブに移動する
② 「F5」を選択する


③ 種別から「外部マクロ」を選択する
④ 「タグファイル作成」を選択する
⑤ 「割付」ボタンを押す


以上で手順は完了です。

ちなみに、コンパイル時にエラーが発生したときは、画面に赤文字でエラー内容が表示されます。スペースキーでページ送りもできるので、エラー内容を把握しましょう。


想定より長くかかってしまいましたが、これで予定していた機能は終了です。

目標達成



無事、以下の機能を実装できました。
  • HSPのキーワードに色を付ける
  • 単語をダブルクリックすると同じ単語にハイライトをつける
    (F12で次を検索、Shift + F12で前に戻る)
  • 新規命令・関数、ラベルのリストを表示する
    (記述順に一覧表示、クリックするとジャンプ。コメント機能付き)
  • 新規命令・関数、ラベルの定義場所にジャンプする
    (Ctrl + F12でタグファイル作成、F12でジャンプ。Shift + F12で前に戻る)
    ※ 補完機能のおまけつき Ctrl + Space
  • ボタン1つでコンパイル&実行する
    (F5で実行、オートセーブ)
少しはHSPに特化して便利になったでしょうか。それでは、よいHSPライフを。

2016年2月22日月曜日

サクラエディタをHSPエディタに改造する(その2 ラベルなど一覧+タグジャンプ)

お待たせしました、セルディアです。

前回のサクラエディタHSP改造の続きです。

ラベル・命令・関数一覧を表示する


ソースコード内にあるラベル、命令や関数の一覧を表示できます。
また、そのラベルなどの名前をクリックすると、その行にスクロールしてカーソルを合わせてくれます。

(1) 以下の内容のルールファイルを適当なディレクトリに作成する

--------------------------HSP_temp.DL------------------------
;CommentChar=
#deffunc /// function
#defcfunc /// function
#modfunc /// function
#modcfunc /// function
*/ /// Except
* /// function
;comment /// function
---------------------------ここまで---------------------------

(今回はファイル名を「HSP_temp.DL」、ディレクトリを「C:\Program Files (x86)\sakura\keyword\」に作っています)

(2) 上のツールバーから「設定」→「タイプ別設定一覧」を選ぶ


(3) 前回の手順で作った「HSP」を選択し、「設定変更」を押す


(4) アウトライン解析方法から「ルールファイル」を選択し、(1)で作成したルールファイルを指定する。
  OKを押す


以上で手順は完了です。

ラベルなど一覧は、下の図のところをクリックするか、F11で出せます。


私の場合、こんなふうに右側にラベルなど一覧を出しています。
一覧中のラベルなどをクリックすると、その部分にジャンプできます。


さらに、ラベルなど一覧はファイルに記述されている順に表示されるのですが、一覧をさらにわかりやすくするために、コメント行を表示できるようにしました。
頭に「;comment」と付けた行が、ラベルなど一覧にも表示されます。
(完全に自分用機能なので、いらなければ無視してください…)



複数ファイルでもラベル・命令・関数の行に飛ぶ


プログラムの規模が大きくなってくると、処理に合わせて複数のファイルにプログラムを分けて記述する必要が出てくるかと思います。
その場合、上記のラベルなど一覧表示では、編集中のファイルの一覧しか出せないため、もっと便利にするために、簡単にラベルなどが定義されている場所に飛べるようにしましょう。

今回の手順で、ラベルなどにカーソルを合わせてF12キーを押すと、そのラベルなどが定義されている場所へジャンプできるようになります。同じディレクトリに置かれている他のHSPファイルにもジャンプすることができます。
Shift + F12キーでは、ジャンプする前の位置へ戻ることができます。

ただ、ラベルなどの定義場所にジャンプするためには、タグファイルが必要です。今回はタグファイルの作成キーをCtrl + F12キーに割り当てます。ソースコードを保存後、適宜タグファイルを作成する必要があります。

おまけで、サクラエディタの補完入力も使えるようにします。ラベル名などを入力中に、途中まで入力したところで補完入力キー(Ctrl + スペースキー)を押すと、残りの文字を自動で入力してくれます。複数候補がある場合は、一覧が出て十字キーなどで選択できます。

(1) PPAマクロを動かすためのDLLをダウンロードする

PPAのDLL配布サイト
http://ht-deko.com/junkbox.html#PPA

(サクラエディタのインストール場所に入れます。標準(64bit OS)の場合「C:\Program Files (x86)\sakura」フォルダ内です)

(2) ctagsをダウンロードする

CTAGS日本語対応版
http://hp.vector.co.jp/authors/VA025040/ctags/ctags_j.html

(サクラエディタのインストール場所「C:\Program Files (x86)\sakura」フォルダ内に置いた前提で進めます)

(3) 補完入力用の実行ファイルをダウンロードする

https://sites.google.com/site/seldiacotton/file/hokan.zip

(ctagsと同様、サクラエディタのインストール場所「C:\Program Files (x86)\sakura」フォルダ内に置いた前提で進めます)

(4) 以下の内容のファイルを作成して、サクラエディタのマクロフォルダ内に保存する

--------------------------maketag.ppa------------------------
var
  fileName : String; // 編集中のファイル名
  charPos : Integer; // 探索位置
  lengthOfName : Integer; // ファイル名の長さ
  charInName : String; // 比較用の1文字
  result : Integer; // 比較結果
  appPath : String; // 起動パス
  lengthOfPath : Integer; // 起動パスの長さ
  backSlashPos : Integer; // バックスラッシュの位置
begin
  fileName := S_GetFileName();
  lengthOfName := Length(fileName);
  backSlashPos := 0;
  // 後方から'\\'を探す
  for charPos := lengthOfName downto 0 do
    begin
      charInName := Copy(fileName, charPos, 1);
      result := CompareStr(charInName,'\');
      if result = 0 then
        begin
          // 見つかったら位置を覚えて抜ける
          backSlashPos := charPos;
          Break;
        end;
    end;
  // 起動パスを生成して起動
  lengthOfPath := backSlashPos;
  appPath := Copy(fileName, 0, lengthOfPath);
  Exec('C:\Program Files (x86)\sakura\ctags.exe', '-f "' + appPath + 'tags" --langdef=hspd --langmap=hspd:.hsp --regex-hspd="/^[ \t]*(\#deffunc[ \t]+|\#module[ \t]+|\#define[ \t]+|\#const[ \t]+|\#enum[ \t]+|\#defcfunc[ \t]+|\#modfunc[ \t]+|\#modcfunc[ \t]+|\*[ \t]*|\;[ \t]*tag[ \t]*)(global[ \t]+)?([a-zA-Z0-9_]+)/\3/" --excmd=number ' + appPath + '*.hsp' , True);
  Exec('C:\Program Files (x86)\sakura\hokan.exe', appPath + 'tags' , True);
end;
---------------------------ここまで---------------------------

※注意 サクラエディタのインストール場所が標準と違う場合は、「C:\Program Files (x86)\sakura」と書かれている部分をインストール場所に合わせてください。
 特に32bit OSの場合は「C:\Program Files\sakura」になっているはずなので必須です!

(前回の手順中で、マクロフォルダの設定をしています)


(5) 作成したマクロを登録する

「共通設定」マクロタブ
① 適当にマクロ番号を選択する(今回は3番を選択)
② 名前に「タグファイル作成」、Fileに先ほど作成したファイル名(maketag.ppa)を入力する
③ 設定ボタンを押して反映する


(5) キーに割り当てる

今回は「Ctrl + F12」に割り当てます。

① 「キー割り当て」タブに移動する
② 「Ctrl」チェックを付ける
③ 「Ctrl+12」を選択する


④ 種別から「外部マクロ」を選択する
⑤ 「タグファイル作成」を選択する
⑥ 「割付」ボタンを押す


(6) 補完入力の設定を行う

これが少し厄介で、補完入力用のファイルは編集中のファイルと同じ場所に作成されるのですが、設定では相対ディレクトリで指定することができません。
そのため、プロジェクトごとに補完入力用ファイルを切り替えねばなりません。

「タイプ別設定」支援タブ

単語ファイルに次のように入力する
<編集中のHSPファイルのディレクトリ>\hokan.txt

HSPの場合は「英大文字小文字を同一視」にチェックを付けていいかと思います


以上で設定は完了です。

残りの目標はまた次回へ。