スキップしてメイン コンテンツに移動

ハロウィンに間に合いたいHSPゲ製の経過報告

先月始めたころは、1ヶ月あるから何とかなるでしょうと思ってたけど
ハロウィンまであと10日を切ってしまいました。
ここ10日間くらいは、ブログを書く余裕もない感じでした。

そもそも、まだキャラの素材がぜんぜん足りてなかったり、マップも調整必須な状況です。
でも、21:30を過ぎるとプログラミングの速度がものすごく低下することが最近わかってきたので、
その時間を有効利用してブログを書こうと思います。₍₍ (ง ˘ω˘ )ว ⁾⁾
#明日のこの時間はFFの新作アプリが出るからそっちをやりたい。。。

進捗報告


製作途中ですが、動画をとったので宜しければご覧ください。
テキストで説明するよりも、どんな感じに作っているかがわかりやすいと思います。
音楽と効果音は「フリー音楽素材/魔王魂」様の素材を利用させていただいています。
いつも思いますが、音楽をいれるとゲームの雰囲気が格段にあがります。


動画のとおりですが、次のような実装をしました。

・PC(プレイアブルキャラクター)のほかのNPCを配置して勝手に移動するようにした。
・HSP3Dish 対応をした。
・マップを4つ作った。
・マップに配置したポータルで他のマップへ移動できるようにした。
・花火のエフェクトを追加した。

NPCを移動させるのは、スプライトを表示する機能を前回の段階で実装していたので簡単にできました。
移動とはいっても、ランダムな方向に毎回1歩進むだけです。
PCと同じように移動できるかどうかの衝突判定をしています。

HSP3Dish 対応


HSP3Dish 対応は、なんで最初からやらなかったのヽ(`Д´#)ノ ムキー!!という感じになりました。
HSP3Dish でリリースしたいという人は、最初から #include "hsp3dish.as" をいれて開発するといいかもしれません。

主に困ったのは画像の扱いです。
HSP3Dish でない場合は、アルファチャンネル付きの画像を描画するときに、アルファチャンネル用の画像をRGBの画像の隣に配置して gmode 7 で転送します。
これが、HSP3Dish では便利になって、 png のアルファチャンネル付きの画像をそのままバッファ読みこんで使えるようになりました。
便利なのですが、最初に HSP3Dish ではないやり方を使っていたため、画像転送のロジックやら、画像自体もアルファチャンネル付きに加工する手間がかかりました。

画像関係でもうひとつ、原因がはっきりわかりませんが、 picload ではうまくアルファチャンネル付きの画像が扱えず celload を使うことになりました。
picload と違い、ウィンドウバッファのサイズを変更せずに読み込むことができません。
picload を使っていたときは、細かな画像をぺたぺたとウィンドウバッファにはっていたのですが、それができないので、あらかじめバッファに対応する1枚の画像として用意することにしました。
スクリーン(#0)以外のウィンドウバッファの編集が制限されていることと関係しているのかもしれません。

もうひとつは、 mref 66 により VRAM のピクセルデータを見ることができなくなったことです。
前回書いたように、当たり判定は白黒の画像の画素値で判定しています。
pget で配列にコピーしようと思いましたが、毎回マップ読み込みで行うのも時間がかかるし、実際に試してみたら HSP3Dish には対応していないようでした。
そのため、画像をバイナリファイルに一度変換して、それを bload で配列に読み込んで使うようにしました。

HSP3Dish は制限はあるもののスマホやウェブブラウザでもソフトを実行できるようになることが魅力的だと思います。
あと、音量調整の mmvol という便利な関数もあります。

マップの実装


マップの絵を描くのはすごく時間がかかりました。
うまいとは決して言えないのですが、そこは百も承知です。
ただ、下手なりに丁寧に書こうと頑張りました。
1日1マップが限度でした。プログラミングとはまた違う疲れがでてきます。

ポータル移動は、ポータルをスプライトで実装して、zキーを押したときに、ポータルが近くにあればそのポータルに対応したワープ処理をするようにしました。
動画ではわかりにくいのですが、最初は使えないポータルが、緑の服を着たNPCにzキーで触れるとポータルが有効になるようにしています。

花火の実装


これは、エンディングで使おうと思っている花火です。
小さな星がつくことでかなり花火らしくなりました。

全体的に薄暗くして夜っぽい感じにするには、 gmode と grect を使います。
この命令で半透明の矩形を描画して簡単に薄暗くすることができました。
 参考:画面を暗くしたい - HSPTV!掲示板

gmode 3, , , 100
color 0, 0, 64
grect x, y, 0, width, height

これだけで、少し青っぽいうすぐらい感じになります。

今後の予定


キャラがまだお団子キャノンの主人公しかいない状態なので、キャラを増やそうと思います。
それと、マップも壁にめりこんだり、重なり方が不自然なところがあるので当たり判定などを調整します。
それと、できたらミニゲームをさらに追加したいと思っています(これ自体ミニゲームですが…)
ハロウィンの日まで間に合うか微妙ですが頑張ります(`・ω・´)ゞ

コメント

このブログの人気の投稿

QTableView で表を表示してみる

タイトルは駄洒落を狙っているわけではありません。 こんばんわ SakuraCrowd です。 今回は今作っているソフトの経過報告です。 最近のブログのパターンは、 「XXX作ったよ。これがスクリーンショットね。あとこんなこと思ったよ。」 という流れですが、 今日はできていないソフトの部分的な話なので、 いつもよりもプログラムちっくな話になると思います。(´Ծ_Ծ´)メガネノトキハマジメブッテル QTableView は GUIライブラリ Qt のクラスです。 それを Python で使うための PySide というライブラリを使っています。 某表計算ソフト っぽい表の GUI です。 このデータの日付が 09/01 なのでおそらくその日に   QTableView 使うぞ!(`・ω・´) とサンプルデータを作ったのでしょう。 Qt Designer という GUI エディタを使うとポトペタでウィンドウを設計できます。 選択できる GUI の中に QTableView と QTableWidget があります。 どちらも上のような表の GUI です。 QTableWidget は 簡単 に値をいれたりできます。 Qt Designer 上で直接編集 することができるので、 サンプルの表を簡単に作ることができます。 それに対して、 QTableView は Qt Designer 上では値を編集できません。たぶん。 QTableView の強みは MVC の構造 を使えることです。 名前のとおり QTableView は View です。 これにデータを管理している Model オブジェクトを設定して使います。 Model クラスを作る手間がかかりますが、 GUI の細かな操作をしなくても Model に応じた表を表示してくれます。 Model は QAbstractTableModel を 継承 して作ります。 コンストラクタで基底クラスの処理を呼び出し、いくつかの純粋仮想関数をオーバーライドします。 def __init__ ( self , parent= None , *args):

LibreOffice Writer 文書の差分 (WinMerge x TortoiseGit) + 社畜PCの原因と対策

お久しぶりです。皆様におかれましてはお風邪などをひかれてはいませんでしょうか。 春と秋だけあればいいのにヽ(`Д´)ノとつい思ってしまう SakuraCrowd です。 今日はいつものような製作日記ではなく、ちょっとした役立つメモを書きました。 タイトルにもあるとおり、 TortoiseGit への WinMerge の導入の仕方です。 今まではソースコードくらいしか差分で確認しなかったので、 TortoiseGit 標準の Diff ツールで問題なかったのですが、 LibreOffice の Writer が最近自分の中で便利だと話題になっていて、それを差分表示するためにちょっと調べてみました。 #Writer は、文章書いて、ちょっと絵をいれたり表を作るのに便利だと思います。 #リッチテキストのエディタを探していて、これが一番よさそうな気がしたので使ってます。 それとブログを書くときはあまり長く書かないつもりだった、 Win7 PC が社畜PCになってしまった際の原因と対策も後半に書きました。割と有用な情報かもしれませんので、時間がありましたらご覧下さい。 まずは TortoiseGit で Writer の odt ファイルを管理して、差分も普通に表示させる方法です。 WinMerge(+plugin) 導入手順 すでに TortoiseGit はインストールしてある前提ではなします。 1.信頼と実績の窓の杜様から WinMerge 日本語版をダウンロードします。 WinMerge - 窓の杜ライブラリ 私の PC は 64 ビット版なのでそちらを選びました。 2.WinMerge をインストールします。 フォルダを指定し普通にインストールできます。 インストール直前の設定で TortoiseGit をチェックしておくと自動的に TortoiseGit の利用する Diff ツールの設定を置き換えてくれるようです。 これの設定は TortoiseGit の設定の Diff ツールの項目で確認できます。 3.LibreOffice Writer のファイルを読むためのプラグインをダウンロードします。 ぐぐって出てくる英語版のDLサイトは応答がなかったりしましたが、日本語版は大

QWidget の選択時のデザインを CSS で変える方法

ひさびさに書きやすいネタができたので、1ヶ月ぶりくらいに書きます。 ここ1ヶ月の作業内容 タイトルのとおりなのですが、 テーマがいきなりマニアックでとまどったり、 デスチェリー農場の続編はどうしたんだよおおおお! とか新作を楽しみにしている生命が宇宙のどこかにいるかもしれないので あらかじめ書いておくと、 ここ1ヶ月は日記ソフトを作ろうと python + pyside + sqlite の勉強をしていました。 勉強というか、ウィンドウ起動から初めて、 GUI をせっせと作ったり、ファイル保存と復元を作ったりしてます。 Copy & Paste や Redo/Undo など未実装の処理も多くあります。 今回は、タブ遷移とかクリックで選択されたウィジェットの、 背景色が変わるとか、 枠線が出るとか そんな設定を CSS で実現します。 PySide と CSS について PySide は前も Raspberry Pi 2 で使う mount コマンドの GUI ツールで使いました。 Python の GUI フレームワークです。 さすがに HSP ほど簡単にウィンドウを出すことはできませんが、 かなり楽だし、 GUI の種類や機能もかなり充実しています。 ある程度 GUI を作っていて、 こんな露骨なウィンドウだと受けが悪いんじゃないかな と思いました。 なんか今っぽいおしゃれなデザインにしたい。 そんな誘惑にかられて調べていると、 CSS でお手軽にデザインを変更 できることがわかりました。 QWidget 派生のオブジェクトを作る際に、 setStyleSheet(str_css)で css を読み込ませることで簡単に実現できます。 次の例では file.css というファイルに書いた css を QWidget 派生クラスのオブジェクトに読み込ませます。 # css の読み込み with open("file.css","r") as f:     self.setStyleSheet("".join(f.readlines())) いろいろな G