2016年12月20日火曜日

声あり4コマ漫画ありHTML5製「間違い探し プロ生ちゃんのトレジャーハント」公開

今回の記事はプロ生ちゃん Advent Calendar 2016の20日目の投稿になります。

初めて間違い探しを作りました。プレイ時間1分程度でクリックだけのブラウザゲームです。
プロ生ちゃんの3Dモデルを使うことで、自分の画力以上のかわいいプロ生ちゃんが描けました。

今回は初めて JavaScript コードを自前で全て書きました。HTMLファイル1つだけで動作しています。


マスコットアプリ文化祭2016にエントリーしています。


紹介動画





マスコットアプリ文化祭2016にエントリーしています。


間違いは全部で8つです。ぜひリンク先から遊んでいただきたいです。
プロ生ちゃんのかわいい声が聞けたり、4コマ漫画もいくつかあります。


間違い探し作成キットも近日公開予定


これと同じシステムの間違い探しを誰でも簡単に作ることができるツールを開発中です。
使い方としては、絵をツールにいれると HTML ファイルができて、その HTML を開くだけで間違い探しゲームができる感じです。
絵のほかに音声の差し替えもでき、制限時間やGUIの位置も調整できるようにする予定です。

PySide で作っていたのですが exe 化のところで少し難航していて、別のフレームワークを検討中なので、どの程度のものができるかは作者もまだわかりません。
もしできなかったときは、この開発で使った base64 変換ツールと html の改造方法の説明などを公開しようかとも考えています。

技術的にこだわった点


より簡単にインターネットに公開できる形にしたかったので、HTML ファイル1つだけという点にこだわりました。

間違いの領域をクリックした場合に、その領域の色を変化させているのですが、負荷が高いらしく、その瞬間BGMが途切れてしまいました。
それを解消するため、Worker(スレッド的なもの)を使い、画像処理の部分を非同期で行うようにしました。

感想


間違い探しゲームの制作は、もともと絵の練習がきっかけでした。
そのころマスコットアプリ文化祭のことを知り、ちょうどよいと思い参加しました。
さらに、初めてアドベントカレンダーへ参加することもできて、うれしい誤算に喜んでいます。

今回は、初めてボイスつきのゲームをリリースできました。
BGMや効果音とは違う臨場感がでてきたなーと感じました。
「はじめるよ!」といわれると、やる気がでてくる感じがしますね(`・ω・´)
他にも数種類使わせていただきました。

また、数ヶ月前から筆者がにわかファンになっている、
大川ぶくぶ先生の4コマ漫画のイラストを
素材として使わせていただけたこともうれしいです。
素材のコマを組み合わせてストーリーを補正しながら作るというやり方も面白かったです。

ボイスも4コマ漫画の画像も、今回のこの企画でないとなかなか自作では使えなかったと思うのでよい機会でした。

当初の予定では、プロ生ちゃんの冒険シーンをあと2つ描く予定でしたが、
絵を描くのは本当に大変で、時間的に1シーンで精一杯でした。

間違い探しの絵はクリップスタジオペイントで描きました。
クリップスタジオペイントでは、冒頭のプロ生ちゃんの3Dモデル(無料)を使うことができます。
そのおかげで、だいぶきれいに早くかけたと思います。

これからも絵の練習をかねて、間違い探しの作品を作りたいと思います。

前述のとおり、間違い探し作成キットは最初 PySide で作っていたのですが、実行形式に変換する際に少し問題があったので、別のフレームワークを検討している段階です。

PySideはPythonの豊富なライブラリも使えるし、QtDesignerによってGUI設計も楽で気に入っています。
以前に「RaspberryPi2で使うツールをPython(pyside)で作ってみた(´;ω;`)」などでも使っていました。
しかし、exeに変換するあたりはまだまだ資料が少なく、モジュールをうまく探せなかったり、windows 7 のタスクバーのアイコン(QWinTaskBarButton)にPySideが対応をしていなかったりするところの対応がわかりませんでした。
py として実行できる環境でアイコンを気にしないという条件ならばPySideでもよいと思います。


そんな感じでキットは作り直し中ですが、順調にいけばお正月までにはリリースしたいと思っています。

それでは、よいクリスマスとよいお年を。(´・ω・`)ノシ


2017年02月11日追記
本作がマスコットアプリ文化祭2016の珠音ちゃん賞の1つに選ばれました。
ありがとうございます。


2016年10月13日木曜日

コメントがうれしくてすぐにDOT VIRUS SHOOTERバージョンアップ

先日 GBJAM 5 に参加して作った DOT VIRUS SHOOTER にコメントがきてました。ヽ( ´¬`)ノ ワ~イ !!
(GBJAM 5 は10日間の期間の間にゲームボーイ風(160x144 4色)のゲームを作るジャムです。)

ブラウザで遊べます。→DOT VIRUS SHOOTER by SakuraCrowd





海外のサイトなので、コメントも英語でした。
原文をのせるのは外国人的にいいのかわからないのでのせませんが、

「興味深い。グッジョブ。パワーアップ系があったらもっといいね」

という内容でした。
コメントを書いてくださった方もゲーム開発をされているようでした。




ver1.0 は締め切りぎりぎりだったので、本当にシンプルなスナイパーゲームです。
せっかくコメントも来たし、パワーアップ系を実装してみました。

世界観がVRな感じのゴーグルをかぶって、ウイルスを退治するやつなので、
SFっぽく、回路チップをレーザーで撃ったら、一時的に効果が発動するようにしました。






回路チップは2つ実装しました。

スリープチップは、ウイルスを眠らせて一時的に移動しないようにします。

このチップの恩恵を感じやすくするために、ほんの少しだけ、 ver1.0 よりも ver1.1 では
ウイルスの動きを活発にしました。
ただし、スリープチップなしだとぜんぜん当たらないようでは、イライラしてきてつまらないので、
普通でもだいたい当たるけどたまにミスっちゃう程度にしました。

ワイドチップは、レーザーの大きさを3倍にします。

これが実装してみたら意外に気持ちいいです。
パワーアップしてる感じがすごいします。
2倍だと意外としょぼかったので3倍にしました。

チップに関連する変更として、チップの説明をいれるためにレベル選択画面のレイアウトを少し変えたり、チップの効果時間の表示をくわえたりしました。

それと、雑多な感じですが、×(かける)をX(エックス)で代用していたのをわけたり、敵がやられたときは飛び散るアニメーションを加えました。

飛び散るアニメーションはそんなにインパクトはありませんが、あったほうがやっつけた感じがしてよかったです。
アニメーションスピードは、レーザーは短くピカッと光ったほうがよくて、ウイルスのとびちるのは少しスローにしたほうがわかりやすいしそれっぽく感じました。

それとゲームパッドにも対応しました。
ver1.0でもしていたつもりだったのですが、タイトルのzキーやポーズに対応していなかったので、全てゲームパッドだけでもプレイできるようにしました。

GameMaker:Studio の機能で簡単にゲームパッドに対応できるので技術的なコストはかかっていませんが、ゲームパッドで動くとなんかちょっとテンションがあがる自分がいます。

最近思うこと

先月末あたりから今週まで、ワンマップフェス2、あほげー、GBJAMといろんな企画があって、忙しかったせいか、じょじょに体力が減ってきているように感じます。
急に冷えている季節のせいもあるかもしれません。

だけど、少しあがってきているステータスもあるように思えます。
MP切れました、みたいな表現を聞いたことがありますが、例えるならそのMPが上がった感じです。
MPはミリタリーポリスじゃなくて、マジックポイントです。
パワーポイントみたいなソフトじゃなくて、メラ○ーマとか出せそうになるアレです。

開発意欲というか、以前はあほげーで1つ作ると1~2日はぼけーっとして、脳内でストライキが発生していました。
それが、今回は連発して作品を作ることが多少なりともできるようになりました。

脳内のだらけよーぜ!というストライキがやっと今頃置き始めていますが、あほげーやって、GBJAMやってと連戦ができるようになったのはちょっとした進歩だと思います。
おまけに、バージョンアップも1日でできたのも、自分の中では驚きです。

(でも、偶然かも(´・ω・`)むしろ、そのほうが自然。)

体力はあがっていないので、あんまり夜更かしばかりしているせいで、いろいろとしんどくなってきました。
デスクに向かって右往左往する時間を減らして、仕様を脳内で固めて短期間でばしっと実装するスタイルになれればいいなーと最近は思います。
でも、バグとかはそんなばしっと直せるものばかりではないのでそちらは仕方ありません。
バグ修正より前の作業は短期間にできたらいいなと思っています。

やること/やりたいことを順番にきちんと頭の中で形にして、それをただアウトプットするだけにできれば短時間で無駄なくできるんじゃないかと思いますが、そんな簡単にできてたら誰も苦労してないのかもしれません。

ノスタルジー

そういえば、GameMaker:Studio でビルドが失敗したようで、できたものがファミコンの接触不良のような状態だったので、逆にレアっぽいと思い動画をとってみました。
ちなみに GameMaker:Studio を再起動してビルドすると直りました。


↑ふーふーしたくなったら負け。

ブラウザで遊べます。(接触良好版)→DOT VIRUS SHOOTER by SakuraCrowd

2016年10月10日月曜日

GBJAM5, あほげー第21回、夏から初秋にかけて大長編ブログ

気づいたら夏が終わってました。
嘘です。ただブログさぼってただけです。

だけど、いろいろと手を出しては実ったり実らなかったり実らせ中だったりです。

今日は今までさぼっていた3か月分のブログをだいたい時系列順に書いています。
タイトルに書いた あほげーと GBJAM5 は最後のほうに書いてあります。
今回は長すぎるので、そちらだけを飛ばし読みしたほうが精神的によいかもしれません。

実らなかった(飽きて放棄)

初夏から真夏に多かったです。
夏って冒険したくなるんですかね。
そんなの一年かけても無理というものを1週間で作れるって錯覚しちゃうんですよね。(´・ω・`)-3

脱出ゲームのエディタ作り

WebGL 万能説まっただなか。ポトペタで脱出ゲームの流れを打ち込んだら WebGL の index.html を出力してくれるものを作ってた。
前にツイートした、逆さ時計がその過程。

これを作ったあたりで、なんか満足してしまった。
スクリプトを作るとか、まだまだ困難で、10日くらい何も進展せずそのまま放棄。

花火エディタ作り

実はまだあきらめてないけど、もう夏も終わるしまた来年でいいかと9月初旬に放棄。
ちょうどその頃 GameMaker:Studio が HumbleBundle で15$の爆安価格でやっていたので買い、いじっていて、普通にフェードアウトした。
Qiita に Unity5.4でモーダルダイアログもどきを作る を投稿したのがハイライト。

実らせ中(まだ継続中のはず)

ゾンビのうろつく森(仮)

GameMaker:Studio を15$で購入して、何か作ってみようというのでやり始めた。

8月末に発売された初音ミクv4xを使ってはじめての作曲にも挑戦した。
初音ミクとかも初めてで作曲なんて(ヾノ・∀・`)ムリムリな感じだったけど、「さくらさくら」を習作した勢いでやってみた。ぎりぎりBGMに聞こえないでもない感じのものを作ることができた。
半分はソング頼太先生の鼻歌演奏のおかげ。
声もボイスチェンジャアプリを使って作成した。

絵は InkScape でちまちまと作成したものを GameMaker のスプライトに読み込ませた。
アニメーションとかは向こうで自動的にやってくれて、 image_speed プロパティで制御もできて楽。
衝突イベントも Object 単位で簡単に作れる。


このあと、悪い癖である、「あれもしたいこれもしたい」が出てきて
その実装を考えて進まなくなりいったん保留。だけど月末までには作りたい。

欲をだしたうえに、完璧を求めるとろくなことはありません。
冷静になってできる範囲でやれるように仕様をダイエットして、その中で楽しくプレイできるようにしたいです。

実った(リリース済み)

パンプキンヘッドとお菓子の迷宮

ゾンビのうろつく森が停滞しはじめた9月末、残り数日でふりーむ!様のワンマップフェス2が行われていることに気づく。
ゾンビが進展せず鬱屈としていたので、すぐ飛びつく(軽い現実逃避なのだろうか)。

ツクールMVも今年の6月?頃に Steam で半額セールのときに買っていて、少しいじってました。
ウディタで以前に作品をリリースしているんですが、そのときの経験もあって、わりと簡単にマップやイベントを作ることができました。

簡単にできたというのは、あまり難しいことはやらないで、時間に間に合う範囲で面白い実装をしようと決めていたことが大きいです。
なんだかんだで、期限があることで取捨選択ができるようになり、エターナルことが少なくなる気がします。

プレイ動画



紹介動画30秒

プレイ動画のほかに、少しこった紹介動画を作りました。
最後のほうの Get Back Halloween のテキストが揺れるのはトリックのオマージュ()です。
かっこよくて使ってみたかったのでやってみました。

この紹介動画はツイッターでいいねやリツイートが多くされて、メッセージも送られてきてすごくうれしかったです。

リリース後、ジグル様からじきじきのバグ報告がスクリーンショットのわかりやすい説明つきでツイッターのメッセージできました。
活躍を陰ながらみているだけだったので、やってもらえたことやわざわざメッセージしてきてくれたことに感動しました。
近々リリースするマイナーバージョンアップでその修正も含んだ更新をする予定です。

さらに今回は翌日に異例の速さでレビューをしましたという報告がありました。
レビューを見させていただいたら、とても納得の評価で、自分でももう少しギミックをたせばよかったと思っていたので、少しだけ足したものを作成中です。

エレベータースロットガール

去年春からお世話になっているあほげーさんの第21回に参加した作品です。
これの前に後述する DOT VIRUS SHOOTER を作っていました。
こちらも期限がもうすぐだったんですが、いったん保留して作りました。

今回は土曜日午前中に用事があったため、実装時間がいつもの半分くらいしかありませんでした。
それでも何とか提出できたのは、実装にとりかかる前に作るもののイメージを固めていたからだと思います。
いつもは、ふわっと思いつきでやって、明確な着地点を決めないでやったり、あとから矛盾が起きたり、そもそもゲームなのか疑問がでてやり直したりしていました。
今回はそのやり直しがなかったおかげで短時間でできたのだと思います。

フリー音楽素材/魔王魂 様には今回もお世話になりました。作曲に挑戦するとあらためてありがたさが身にしみます。

面白さについて考えると、入力に対するリアクションが大事な気がしてきました。
そこで、失敗したときに面白い動作をするようにとお客の絵を複数用意しました。
いっきに描くのではなくプログラミングがだらけてきたときなどに、息抜き感覚で思い浮かんだキャラを描いてみました。

GameMaker:Studio はゲームの基本機能が簡単に利用できますが、日本語を表示するなどは少し面倒でした。フォントを作って追加するのですが、ビットマップとして持っているのか拡大するとぼやけてしまいます。文字関係は少し苦手な印象を持ちました。

結局、今回は2時間ほど遅刻してのエントリーになりましたが、今回も参加させてもらえてよかったです。

ブラウザで遊ぶ→ エレベータースロットガール ElevatorSlotGirl | モゲラ




「エレベータースロットガール」は01:29:22あたりからプレイしてもらいました。ありがとうございます。

DOT VIRUS SHOOTER

今日のお昼前にリリースしたての作品です。
たまたま twitter で GBJAM に参加している人がいて、そのスクリーンショットを見て興味をもって作り始めました。
「パンプキンヘッドとお菓子の迷宮」をリリースして、少しだらけているときでした。

最初は以前から興味のある遺伝的プログラミングの簡易なものを作って、それを観察するライフゲームのようなものを考えていました。
スナイパーのファインダーの移動とズームの機能などは、その人工生命を観察するために作りました。
一日経過して進展しなくなり、ゲーム性を出す以前に、遺伝的プログラミングを実装することは残り3日では無理だと判断しました。
そこで、今のシステムで何かできないかと考えたのが、スナイパーゲームです。


GBJAM では名前のとおり GameBoy のサイズ(160x144)で、色は4種類という制限をもたせたゲームが要求されます。
すでにリリースされている作品をいくつか見ると原寸大のものもあれば、拡大してドットがはっきりわかるようにしたものまでありました。
個人的に拡大してドットがはっきりしているほうが好きだったので、それを実装することにしました。
GameMaker:Studio には View と Port の機能がすでにあるため、 View (描画のときに読み込む範囲)の4倍のサイズを Port(画面に表示する範囲)にすることで簡単に4倍の大きさの絵をだすことができました。

しかし、image_angle などを使って90度単位以外で拡大させてしまうと、ドットがなめらかにくずれてしまい、使えませんでした。
そこは、割り切って、45度単位でドット絵を描いて、45度単位で手動で切り替えて表示するようにしました。
画面サイズは大きいけど、画素としては 160x144 を維持するというのが、わりと気を配りました。

それと「エレベータスロットガール」でも思ったことなんですが、 iframe 経由だとセーブデータが毎回初期化されるのでしょうか?
レンタルしているサーバから直接やったときは保存されていたのに、他のサイトから iframe でプレイするとセーブとロードがうまく動いていない気がします。

「DOT VIRUS SHOOTER」も最初は、レベルごとにタイムアタックの記録を残す予定だったのですが、時間もなかったので今回はその機能を削除しました。
また、少しバージョンアップしたくなってきたら、そのときは実装できたらと思います。

今朝は、エントリー残り時間がもう8時間ほどのときから、エントリーの準備をし始めました。
なんだかんだで、きちんとエントリーしたの2時間前でした。
itch.io のことも今日になって調べて、インディーゲームを配信してくれるサイトということがわかりました。
そこにアカウント登録をして、この作品のプロジェクトを作成して、説明やスクリーンショットをいれて、 zip でゲームデータをアップロードして完了です。
英語の説明は機械翻訳を参考に少し修正したりしなかったりです。

世界に少し踏み出せた気がしてうれしかったです。だけど朝3時からバグ修正をしていたので眠くなってきました。
GBJAM5 はこれから1週間で人気投票を受け付けるみたいです。
ブラウザでプレイできるので、もしよろしければプレイして、投票してもいいと思えたら投票してくれるとうれしいです。

ブラウザで遊ぶ→DOT VIRUS SHOOTER by SakuraCrowd

投票ページ→Rate DOT VIRUS SHOOTER by SakuraCrowd for GBJAM 5 - itch.io



あほげー観覧


午後は昨晩見られなかったあほげーの放送を見ました。ハラハラエレベータがツボでした。
↑大爆笑したハラハラエレベーターについて書いたツイート

他の作品をみると、まだまだおとなしくて小さくまとまってしまっているなーと思います。
今回はネタが固まった段階では、今までよりも面白くなりそうと思っていたのですが、インパクトが足りなかったなーと思います。

まとめ


やっぱりブログはこまめに書くのがいいと書いていて思いました。
この長文を読んだ猛者はすごいと思います。

少し最近忙しいのですが、さっき書いたように「ゾンビのうろつく森(仮)」も作りたいし、まずは「パンプキンヘッドとお菓子の迷宮」の 1.1 もリリースできるよう頑張ります。
でも、あんまり無理するとあとで体調をくずしそうなので無理せず頑張ります。

#頑張るって言葉はあんまり好きじゃないんだけど、もっといい表現はないのかなー。

2016年7月20日水曜日

あほげー参加作品「タッチ!イカタコ」公開

先週末行われた第20回あほげーに参加させていただきました。
イカさんに変装したタコさんを見つける動く間違い探しゲーム「タッチ!イカタコ」です。



【ニコニコ動画】【自作ミニゲーム】タッチ!イカタコ Touch! Ika Tako ver 1.1【HSP3.4Dish】


ブラウザ版のプレイはモゲラ様からできます。
 タッチ!イカタコ ver1.1 Touch! Ika Tako | モゲラ
Windows 版はふりーむ!様からDLできます。
 タッチ!イカタコ Touch! Ika Tako:無料ゲーム配信中! [ふりーむ!]

(こちらの動画は、改良版です。あほげー参加当時の作品はモゲラ様のゲーム画面の下のリンクからプレイできます)


あほげーの開催前までは前回も少し書いたかもしれませんが日記ソフトを作ってました。
これがなかなかできそうでできない。もうちょっとな感じですが、夏の間にリリースできればいいかなというルーズな目処しかたってません。

あほげーのありがたさ


不思議とあほげーのときはなんとか作品を作ってリリースできるんですよね。

やっぱり1日(+α)という短さが集中力や体力的にちょうどいいのだと思います。
これが1週間とかだとこだわりだして、結局だらだらと仕様をこねくりまわして実装途中で空中分解しそうです。

あとは、少し遅れても下手でもおおらかに対応してくれる懐の広さにも安心します。

発表会の雰囲気を想像しながらやれるので、どのような感じでプレイしてもらいたいかを具体的に想像しやすいのも良いのだと思います。
どこかで聞いた話ですが、売り込む対象(ペルソナ)を具体的にすることで作るものがはっきりしてくるといいます。

短時間で、寛容で、具体的なプレイヤーを想像して作ることができるというよい条件のおかげで毎回なんとかリリースできているのかもしれません。
それに、わずか数分でもYoutubeライブストリーミングできちんとプレイしてもらえるという、はっきりとした開発者としての楽しみがあることもやる気につながっていると思います。


今回も無事にプレイしてもらえてうれしかったです。いつもありがとうございます。
そういえば、今回初めて?あほね!のランキングの20位以内の19位になることができました!
あほさがいつも足りないと思っているのですがうれしかったです!

実はツクールMVで作ろうと思ってた


今回のお題は「いか」でした。

実は、今回は最近半額で購入した steam 版のツクールMVでやってやろうと数日前から使い方を勉強していました。
お題を聞いた直後も、簡単なRPGを作ろうかなと構想をねっていました。

しかし、草案を出すところで、タコがイカに変装したらどうなるかと考え、ちょこちょこ落書きをしていたら、わりとイカに似せることができました。これの間違い探しもいいなーと思いました。

タコとイカの間違い探しなら、以前から使っている HSP なら3時間くらいでできるだろうとタカをくくって、いわば前座というか安パイのような感じで作り始めました。
これをちゃちゃちゃっと作って、それからメインのミニRPGを作ろうという感じです。

今回は余裕がありそうだったのに結局遅刻


もう、あれです。前回のことから学んでません。。。
前回も、今回は2本作れちゃうかもねーたはーwとか余裕ぶって、結局遅刻しながら1作リリースするのがやっとでした。

それでも今回は、夕方前にはバランス調整とサウンドをいれるだけの状態でした。
その頃にはミニRPGは間に合わないことは確定していたのですが、まだ、明日のお昼くらいまでに作れればいいんじゃね?と自分のMPの少なさを忘れていました。

バランス調整はいつもの感じで、テストプレイで慣れている自分が少し余裕をもってクリアできる設定でパラメータを調節して、その後、前半はチュートリアルということでより甘くして、後半は自分でもたまにミスをするくらい少し難しくしました。
それでも、プレイしてくれたありがたい方たちの話では簡単という声もありました。

どちらかといえば、最終ステージまで放送中にやってもらって少しだけ焦ってもらった後でクリアしてもらいたいという気持ちだったので、難しくてクリアできないというよりは自分の意図通りだったと思います。

そのあといつものフリー音楽素材/魔王魂様のサウンドを使わせていただき、さらにゲームの雰囲気を出してリリースです。
この時点で20時30分をすぎていました。
しかし、いつものようにアップロードして、モゲラさんに登録するならぎりぎり21時に間に合う。
いつまでも遅刻魔じゃないんだ(`・ω・´)
とか、思ってたんですが、ローカルでは起きなかったバグが2件も出た(´;ω;`)

今回の心に残るバグ2つ


一件目は、容量が足りなくてプログラム中の配列が作れなかったようです。
これは、ログのガイドに従い、確保するメモリの最大値を HSP 3.4 Dish 既定の16MBから適当に24MBにあげることで対処できました。この時点で残り15分。

次のは、ある特定のステージ(3、6面)だけ始める前にフリーズしてしまいます。
フリーズ系って、エラーメッセージもでないから原因を探すのが、ちょっと面倒です。
ローカルと違ってブラウザ上でのデバッグプリントの方法もわからないし、3、6面の共通点について考えました。

その共通点はどちらも、イカの配置数が6x4であること。
共通点はわかっても、それが何を意味しているかしばらくわからず他の原因を探しました。

その時点で21時を経過。また遅刻しちゃった(´・ω・`)
でもね、安西先生もあーいってるし、あほげーならきっとまだまだ遅刻して出してくる遅刻仲間がいるはず・・・!そう思って頑張ってバグを調べました。

それで、思い出しました。 HSP 3.4 Dish のブラウザ版でのみ起きるバグ。
以前にもブログで書いたのですが、乱数関数 rnd に 2^n の値 2, 4, 8 などを入力すると、常に同じ値が返されるバグが HSP 3.4 Dish にはあります。

それでなぜ、フリーズするかというと無限ループが発生しているからです。
この間違い探しのタコさんの配置は、次のようなロジックです。
・格子状の全てのマスに、イカさんを配置
・そのあと、乱数で選択したマスのキャラをタコさんに変更
 ・ただし、そのマスがタコさんだったら、再抽選する

この再抽選ででてくる座標が同じだったため延々と無限ループしていたようです。
前と同じように 2^n の引数のときは +1 した値で rnd して、範囲内の値が返されるまでループする関数を作り対処しました。

発表会で他の人の作品をみるのもためになる


これで全てのステージの動作を確認して、モゲラさんに登録し、あほげーにエントリーしたのが22時(1時間遅刻)でした。
いつも思うことだけど、自分の見積もりの3倍の時間はかかるんだなーと改めて思いました。

次の日の朝はミニRPGを作ろうかなと思いながらも、ぜんぜん作れませんでした。
あれです。MP=0状態です。
脳が昨日大変だったんだから今日はだらけさせろと軽いボイコットをしている感じかもしれません。

そこで他の方の作品をやったりしました。結果的に他の人の作品を見て勉強になったのでよかったと思います。
全ての作品はしませんでしたが、それぞれ個性があって面白いし、絵のきれいさだったりネタの突き抜け方だったり勉強になりました。
イカビターンとかはシンプルだけどはらはらするし、面白いし、「あぁ、こういうのがあほげーなんだよなー」と一番記憶に残っています。

作品発表をみていて、後半にいくにつれてこれを1日+αで作ったのか?という驚くレベルのものがぞろぞろとでてきました。
今思い出すのは、某イカゲーを彷彿とさせるスプラッシュレーサーで、もう製品として出せるんじゃないかと思ってしまいました。
それと、今回のバージョンアップをするきっかけのひとつになったのが、イカ・トランケートでした。
ドット絵がきれいなアクションなのですが、背景もすごくきれいでした。
他の作品については割愛しますが、こういうやり方もあるんだと勉強になりました。

ver 1.1 を作ったらよりよくなってうれしかった


いろいろな作品をみて刺激をうけて、自分の作品をもう少しブラッシュアップしようと思いました。
しかし、ドット絵できれいな海の絵をかくのは、絵が下手な私には難しかったです。

そこで、少し使い方を知っている InkScape を使って、ためしに沈没船の絵を描いてみました。
グーグル先生の画像検索で帆船の絵をモデルにして、線をひいて、パス編集をして、色をつけて、グループ化してと小さいパーツごと作っていきました。
帆船はわりと複雑だったのですが1時間ちょっとでできました。
海全体については、ラフなデザインを鉛筆でかいて、それをもとに、先ほどと同じく部分ごと作って組み合わせていきました。
絵が下手な私ですが、それっぽい絵が InkScape で描けることがわかってうれしい驚きでした。

あとは、難易度調整です。
全体的に少し制限時間を短くしたりしました。
それと最後に難しいステージを新しく追加しました。
あまりに最後まで一回もミスなくクリアすると、簡単すぎて満足感も少ないと思ったので、数回に1回勝てる程度の難易度にするようにしました。

それと、キャラの動き方も、より細かくステージごとに調整できるようにしました。
ver 1.0 では、回転するのは1,2,3,7,8,9、移動するのは4,5,6,7,8,9と決めて、動きの激しさは常に同じでした。
回転する確率、移動する確率、移動する方向の変更の確率、移動の歩幅をステージごとに設定できるようにして、より細かな難易度調整をしました。

結果として、1日かけて作った作品の見栄えがよくなり、うれしかったです。
つい、作ってリリースすると、モチベーションがなかったり、次のことがやりたかったりして、ブラッシュアップをしないことも多くありますが、ブラッシュアップもやってみると満足感が多く得られる作業だと思いました。

感想としばらくの予定


結局3連休のほとんどをあほげーに使ったのですが、作品がよりよくなり満足しています。
だけど、まだまだプレイしてくれる人の数は少ないです。
プレイしてくれる人がいるだけうれしいのですが、もっと多くのプレイヤーがプレイしてくれるような作品を作るために、まだまだいろいろと勉強が必要だと思います。

あほげーなのにあほになりきれず、いつの間にか小さくまとまってしまうのも、何とか突き抜けたいです。
前も同じようなことを書いたのですが、なかなか突き抜けた作品は作れません。

他の作品を見て、新たに作りたくなったものがあるので、それを作りつつ、以前から作っている日記ソフトとデスチェリー農場2も完成させたいです。





2016年6月16日木曜日

ツクールMVのjsプラグインを作ってGitHubのリポジトリで公開してみた

数日前に、ツクールMVのプラグインを javascript で作成して公開しました。

このときのツイートは、リツイートが21件、いいねも44件と、
今までのツイートの中で最も反響があったものでした。
うれしいので、ツイートをここに埋め込んでおきます(=^ェ^=)

5月末にあった無料お試し+半額セールで steam の RPG Maker MV を買いました。
HTML5 に対応してウェブブラウザやスマホでできたり、
javascript を使ったプログラムをプラグインとして組み込めることにわくわくしています。
# 他の steam のゲームのように積みゲーにならないようになんとか一作は作りたいです。

SCTitleText プラグインとは?


タイトル画面に好きなフォントで好きな位置にテキストを表示するプラグインです。
くわしくは、 GitHub の公開ページの README.md に書いてありますのでそちらをご覧下さい。
RMMV/SCTitleText at master · sakura-crowd/RMMV


好きな音楽素材を使おうとしたときに
タイトル画面に提供者名を記載しようとしたら、
ゲームタイトル以外は簡単に設定できませんでした。

そこで、タイトルにテキスト描画するだけならば
プラグインの勉強にもちょうどいいだろうと思い作ってみました。

プラグインの設定ダイアログ

サンプル画像

 ツクールMVのプラグインマネージャで、このプラグインを選択して、
表示したい文字列や位置やフォントを設定するとサンプル画像のように表示されます。
A, B, C で指した場所のテキストがこのプラグインで表示したテキストです。

半透明も rgba(R, G, B, A) でできます。50%の透明度の緑ならば rgba(0, 255, 0, 0.5) となります。


プラグイン作りの勉強方法


ウェブの解説ページや同梱の help の js のページを見たり、それでもわからない部分は実際に動作している js のソースコードを読んで勉強しました。

メニュー[Game]->[Open Folder] で開いた場所の js フォルダや js/plugins フォルダの js がとても参考になりました。
特に最初は、プラグインの勉強として js/plugins フォルダのプラグインを読みました。

SCTitleText も構造は js/plugins フォルダに最初から入っていた js を参考にしています。

プラグインの作り方


js フォルダにある javascript で定義されたクラスのイベントや関数は
ゲーム実行中に呼び出されます。
プラグインでは、そのイベントや関数の再定義をすることで改造できます。

SCTitleText プラグインではタイトル画面での処理を改造するので
Scene_Title というタイトル画面を管理するクラスの createForeground 関数を再定義することでテキストを表示しています。
テキストの描画方法などは、 js フォルダの rpg_scenes.js の Scene_Title の実装を参考にしました。

プラグインへ渡すパラメータの定義


さきほどのプラグインの設定ダイアログでは、文字列やフォントの設定をしています。

設定ダイアログで入力できるパラメータは、 js ファイルのコメントで指定します。
これも js/plugins フォルダの js を参考にすればよいです。


/*: * @plugindesc
* タイトル画面にテキストを表示します。
* クレジット表記などにお使い下さい。
* @author SakuraCrowd
*
* @param Font Size
* @desc テキストのフォントサイズです。
* @default 16 * * @help * ヘルプボタンを押したときに表示されるテキストを記述します。 */

これは SCTitleText の一部を改変したコメントです。

まず最初にコメントの始まりは /* ですが /*: のようにコロンを追加します。
これで、プラグインの設定ダイアログ用のコメントであることを表します。
/*:ja から始めると日本語版を別に定義できるようです。

だいたい雰囲気でわかると思いますがさらっと説明します。
@plugindesc のあとに書いた文字列はプラグインの説明として表示されます。
@author のあとに書いた文字列は作者名として表示されます。

@param はパラメータの名前です。
@desc は直前のパラメータの説明です。パラメータ編集のダイアログで表示されます。
@default はパラメータの既定値です。
@param, @desc, @default のセットはパラメータごとに繰り返し使うことができます。

@help のあとに書いた文字列はヘルプボタンを押したときのウィンドウに表示されます。

プラグインのパラメータの受け取り方


var filename = 'SCTitleText'
var parameters = PluginManager.parameters(filename);
var text = String(parameters['Text'] || '')
var x = Number(parameters['X'] || 0);
var y = Number(parameters['Y'] || 0);
var fontSize = Number(parameters['Font Size'] || 16);


PluginManager.parameters(プラグイン名) でパラメータの辞書(連想配列)を取得できます。
なかった場合の規定値は || に続けて記述します。

もともとの関数を呼び出す

さきほど、プラグインは改造したい場所の関数を再定義するといいました。
しかし、再定義するだけでは、もともとの機能が失われてしまいます。
そこで、関数を上書きする前に、元の関数を別の一時変数に覚えて起きます。
そして、それを再定義した関数の中で呼び出すことで、
もともとの機能に独自の機能を追加することができます。


var _Scene_Title_prototype_createForeground =
Scene_Title.prototype.createForeground;
Scene_Title.prototype.createForeground = function() {
_Scene_Title_prototype_createForeground.call(this);
var maxWidth = Graphics.width - x * 2;
var maxHeight = Graphics.height - y;
this._gameTitleSprite.bitmap.textColor = textColor;
this._gameTitleSprite.bitmap.outlineColor = outlineColor;
this._gameTitleSprite.bitmap.outlineWidth = outlineWidth;
this._gameTitleSprite.bitmap.fontSize = fontSize;
this._gameTitleSprite.bitmap.fontFace = fontFace;
this._gameTitleSprite.bitmap.fontItalic = fontItalic;
var width = this._gameTitleSprite.bitmap.measureTextWidth(text);
var height = fontSize + 1;
this._gameTitleSprite.bitmap.drawText(text, x, y, width, height);
};

Scene_Title.prototype.createForeground が上書きする関数です。
function() {...} で上書きする前に var _Scene_Title_prototype_createForeground にもとの関数を退避しています。
あとは、再定義した処理の冒頭で、 call してもともとの処理を実行しています。
そのあとで、改造したい処理を追加します。

GitHub での公開方法

javascript のプラグインを説明つきで公開する方法として GitHub は便利です。
とはいっても、今まで Gist しか使ったことがなかったので少し時間がかかりました。

しかし、やってみると思ったよりかなり簡単です。
まず、プロフィールのページでリポジトリを選択し、 New でリポジトリを作成します。
readme.md はここで作成することができます。

さらにフォルダやファイルなどを作る場合は、作成したリポジトリのページで、 create new file ボタンを押してドロップします。
ファイルに間違いがあって修正したければ upload ボタンを押してから同名のファイルをドロップすれば更新してくれます。

今後の予定

ツクールMVで、前々から作ろうとしていた「デスチェリー農場へようこそ」の続編を作ろうと企画を練り直したりしてわくわくしています。
それと並行して、日記ソフトのほうも作っています。
仕様が決まらなくなったりだらけてきたら、ツクールMVをやって、また停滞してきたら日記ソフトをやってと切替ながら進めていきたいです。

2016年5月16日月曜日

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()))


いろいろな GUI の部品ごとに css の書き方の例もありました。

Qt Style Sheets Examples | Qt 4.8


QComboBox も css に次のように書くことでおしゃれになりました。
上記の書き方の例の QComboBox のスタイルシートを使っています。



QComboBox {
border: 1px solid gray;
border-radius: 3px;
padding: 1px 18px 1px 3px;
min-width: 6em;
}

QWidget への CSS の適用


簡単に css でデザインを変えられるのですが、 QWidget にはなぜかすぐには適用されません。
正確には QWidget を派生したカスタムウィジェットクラスです。

QWidget:focus {
border: 3px solid green;
background-color: #EEFFEE;
}
こんな感じの css を読み込ませることで、
選択時にフォーカスした QWidget のデザインが変わります。
フォーカスイベントで色を自分で塗るような処理を書かなくても css で設定することでできるのはとても楽だし、変更も容易で魅力的です。

ただし、すぐにはこれを反映してくれません。
2つの手続きが必要でした。

手続き1 選択されるようにする。

QComboBoxなどは配置するだけで、選択ができます。タブストップもします。
しかし、その土台となる QWidget は選択できないようになっています。
まずはこの設定を setFocusPolicy() で変更します。

フォーカスポリシーは、タブ選択(TabFocus)、クリック選択(ClickFocus)、両方の選択(StrongFocus)、フォーカスしない(NoFocus) から選びます。

QWidget 派生クラスの __init__ やメンバ関数で次のように呼び出します。

class InputWidget(QtGui.QWidget) :
    def __init__(self):
QtGui.QWidget.__init__(self)
        self.setFocusPolicy(QtCore.Qt.StrongFocus)

手続き2 描画処理で css に対応する。

wiki になにやらそれらしいコードがあります。


あいにく C++ だったので、 pyside 用に書き換えて実行するとうまくいきました。

QWidget 派生のメンバ関数として、次の関数をオーバーライドします。

class InputWidget(QtGui.QWidget) :
def paintEvent(self, qPaintEvent):
   # css のウィジェットの背景色や focus の設定を反映するために必要なオーバーライド
   painter = QtGui.QPainter(self)
   option = QtGui.QStyleOption()
   option.initFrom(self)
   self.style().drawPrimitive(QtGui.QStyle.PE_Widget, option, painter, self)

   return

結果



クリックすることで、緑色の枠で囲んで背景色も変更できました。
少しコードを追加する必要はありますが、
 css で外部からいつでもデザインが変えられるこの機能は強力だと思います。

あとがき

1ヶ月ぶりにブログを書いて、なぜかほっとしています。
別にノルマがあるわけじゃないのに何なんだろう。。。

引き続きしばらくは日記ソフトを作ってみようと思います。
結果の図でちょろっと見せたのがそのソフトです。
まだ、かなり作りかけですが、日記だけどGUIをばりばり使って簡単に入力ができるようにしようと思っています。(`・ω・´)

完成するかどうかもわからないので、ぽしゃってしまうかもしれません。
だけど、この PySide + CSS の強力なデザインのための Tips が書けただけでも成果はあったと思います。

これが一段落したら、またゲーム製作もやってみたいです。



2016年3月26日土曜日

「減量と時の部屋」で画期的なダイエットをしよう!₍₍ (ง ´・ω・` )ว ⁾⁾

だんだん夏が近づくとダイエットのニュースに敏感になる人も多いでしょう。

そんなあなたに朗報です!(`・ω・´)
「減量と時の部屋」でウォーキングを
数秒するだけで 60 Kg もやせられます!

ゲームの主人公限定だけどな!ԅ( ˘ω˘ ԅ)


ダウンロードはこちらから

ブラウザでプレイする場合はこちらから
ブラウザ版はウェブブラウザですぐにできますが、マップエディットには対応していません。 





ルール


操作は単純で、クリックした方向に主人公が直進します。
移動している間はみるみる減量していきます。
敵を避けながら目標体重まで減量するとクリアです。

ver1.1 では、さらに星のゴールを目指す要素を追加しました。
ただ逃げ回るだけではなく、ゴールを目指すマップも作れるようするためです。
初期バージョンのように星のない部屋は目標体重になるだけでクリアです。

きっかけ


作ったきっかけは第19回あほげーです。
お題はダイエットでした。
最初はいろいろともっと妄想が膨らんでいたのですが、1日(実際には1日と3時間かかった)で作るには難しいと判断してシンプルな仕様になっていきました。

今回も短時間でさくっと作れる HSP で作りました。音楽はフリー音楽素材/魔王魂様の音楽を使わせていただいています。いつも助かってます!

エントリーしたときの感想ですが
あほなゲームを作るのって難しいなと思いました。
つきぬけたいのに、結局できあがりは小さくまとまっている、そんな感じです。

それでも、達成感はあるし、何よりも自分の作品を遊んでくれてその様子を見ることもできる
あほげーは本当によいイベントだと思います。
#飲酒プレイを想定して作っていましたが、今回はしらふプレイだったのが意外でしたw


「減量と時の部屋」のプレイは 2:33:33 あたりからです。

マップエディット機能について


ver1.1 はあほげーが終わってから作りました。
最初はボタンの位置を調整して、テキストを画像にして見た目をよくするだけの予定でした。
でも、マップを Tiled で簡単にデザインできるシンプルな仕様を活かして、ユーザが自由にデザインしたマップでプレイできるようにしました。
バージョンアップは最初は乗り気ではなかったのですが、これを思いつくとものすごいモチベーションがあがりました。

初期バージョンでは壁がないとどこまでも移動してしまい、マップの外に出るとエラーになってしまいましたが、ユーザに必ず壁を作ってくださいというのもアレなので、マップの外にははみでないように判定を追加しました。

目標体重はタイトル画面で変えられるようにしました。
本当はマップごとの cvs に組み込みたかったのですが Tiled の扱い方が複雑になると、マップエディットが複雑になると思い、この方式にしました。

今後の予定


以前に書いた予定もほとんど進んでいないのでなんともいえませんが、
デスチェリー農場も Unity の作品もまだほそぼそと継続中です。

寄り道で Android Studio でアプリの勉強をしたり、
Cドライブが100GBしかないのがつらくなってきたので
512GBから3TBに思い切って換装するためにいろいろ調べたり、
最近の雷のせいか4年くらい使ってきた wifi 優先ルータの新しいものを買ったり
といろいろありました。(言い訳

それと今日は動画編集で5時間くらいかけましたが、おかげで編集レベルがあがりました。
aviutil すごすぎ。

そんなこんなでいろいろと寄り道しながら継続中です。

2016年2月25日木曜日

RaspberryPi2で使うツールをPython(pyside)で作ってみた(´;ω;`)

こんばんわ(; ・`д・´)

(`・д´・ ;)少しショックなことがあってこんな表情をしています。

実は、前回のブログで書いたミニゲームのチョコゲットですが、
バレンタインという大イベントにのっかって
モゲラさんで1日で500アクセスくらいいっちゃうかなー( ^ω^)タハー
とか、ひそかに期待していたのにバレンタイン効果ほぼゼロ
3週間経過した今も合計で300もいかず失速中です(´;ω;`)

まぁ、あれです。
1日半で作った作品だし、そうそう簡単にヒットはしないですよね。
そう思うことにします。ԅ( ˘ω˘ ԅ)


(2016/02/25 21:20追記)
ふりーむ!もDL数 23本 (9552位) と予想通りの残念な結果でしたが
ひとつだけ朗報がありました!
ふりーむ!で初めてレビューがつきました!!!ヽ( ´¬`)ノ ワ~イ !!
チョコゲット ChocolateGet のレビュー:無料ゲーム by ふりーむ!

本当にうれしいです!
このレビューを読むだけで、やる気が出てきます。
本当にありがとうございます(´;ω;`)<今度は感動の涙


作ったツールの話


で、タイトルのとおり、 RaspberryPi2 で使うツールを Python で作ったりしたので
久しぶりのブログのネタにでもしようかと思いアップしました。

はっきりいって、コマンド打てばいいじゃん?という人には不要なものだと思います。
GUI にすると何か落ち着くという方には需要があるかもしれません。

HSP とか Unity とかも GUI を作りやすいですが PySide もなかなか便利でした。

ツールの紹介画像の下にある .py のソースを python で実行するだけで動作します。
起動するための .bat や .sh についても後述します。

MountGUI.py について




MountGUI.py


MountGUI は LAN の外部 PC の共有フォルダをマウントして、アクセスするツールです。
Mount トグルボタンを OFF に戻すかウィンドウを閉じるとアンマウントを自動でします。

  • Mount Local Path はマウント先のローカルフォルダです。
  • Mount Remote Path は外部 PC の共有フォルダのパスです。
  • UserName は外部 PC のログインに使うユーザ名です。
  • Password は外部 PC のログインに使うパスワードです。
  • Option は mount コマンドのオプションです。既定では win 7 64bit にアクセスするために使ったオプションが設定されています。
これらの設定をすませて、 Mount すると Mount Local Path のフォルダにマウントされます。
Open ボタンを押すと Mount Local Path のフォルダを起動します。
Open では Raspberry Pi のエクスプローラ的なソフトである pcmanfm をコマンドで起動します。
おそらく他の環境ではうまく動かないので .py の Open ボタンのイベント処理を適宜変更して使ってください。

後で記述する .sh ファイルから呼び出すことで、入力欄の既定値を設定することができ、
起動後に変更しないで、より簡単にマウントすることができるようになります。

DragAndDropAndRunGUI.py について




DragAndDropAndRunGUI.py

DragAndDropAndRunGUI はファイルをドラッグ&ドロップすると、パスをリストに追加します。
リストを右クリックして表示された Remove メニューアイテムで削除できます。

画面の上半分がパスのリストです。画面の下半分はログです。

真ん中にあるチェックボックスで、ドラッグ&ドロップされたパスのフィルタリングができます。
Unique URL チェックボックスですでにリストにある同じ文字列のパスは追加しません。
File Only チェックボックスでフォルダのパスは追加しません。

 Run ボタンを押すと、リストのパスを使った処理を順次します。

Run で行う処理は .py ファイルを編集して書いてください。
処理結果をログ出力したい場合は addLog というメンバ関数を使うと出力できます。

ダブルクリックでやりたいというこだわり(甘え)


基本 Windows の GUI 環境でふにゃふにゃに育ってきた子なので
コマンド文字列ばりばり打って実行するというのが面倒に感じます。

一部の人からはお叱りを受けるかもしれませんが、
とりあえずダブルクリックすれば動くよ!
という状態が大好きなのです( ˘⊖˘)

そこで RaspberryPi でもこの .py をファイルをダブルクリックするだけで動作するように工夫してみました。
Windows なら .bat ファイルを作って、それをダブクリでバッチOKなことを知っているので、同じ感じをシェル .sh ファイルでやってみました。

.sh 自体はぐぐれば解説がたくさんでてきて、次のような感じでいけました。

MountGUI.py 起動用のシェル


MountGUI.py は引数を4つ与えると初期値が指定できます。
.sh ファイルごとにマウント先の情報を保持しておくと便利です。

#!/bin/bash
python MountGUI.py ./mount-point //192.168.1.20/shared username password

DragAndDropAndRunGUI.py 起動用のシェル


DragAndDropAndRunGUI.py は引数をとらないのでこんな感じです。

#!/bin/bash
python DragAndDropAndRunGUI.py

ちなみに Windows の .bat でやる場合はこんな感じです。

START C:\~\pythonw.exe DragAndDropAndRunGUI.py

シェルファイルのプロパティ設定


ここまでで .sh ファイルの設定はすみました。

しかし、 RaspberryPi2(Raspbian) で .sh ファイルをダブルクリックしても実行されずテキストエディタが開いてしまいます。

その場合は、右クリックのコンテキストメニューで、ファイルのプロパティを選択します。
現れたウィンドウのパーミッションタブの実行の選択肢がなしになっていると思うので、すべてなどに変更します。
そうすると、 .sh ファイルをダブルクリックすると実行するか編集するかが選択できるようになります。


Raspbian のファイルのプロパティウィンドウ
実行(E)の選択肢を[なし]から[すべて]に変更

近況について


twitter でウディタのコモンイベントについて少し書いたとおり、ウディタでちょっと作っています。

去年作った「デスチェリー農場」の派生作品で、今回はバトルで普通に戦えるようにしたいと思っています。
配布されているコモンイベントのおかげで最低限の実装はできていて、
ストーリーも大筋できたのですが細かなところでうまくつながらないところがあり止っています。

止まってはいるのですが、前作のむちゃくちゃな農場がなぜできたのかを妄想したりすることは楽しいです。
そのうちいいアイデアがうかんでストーリーがうまくつながったら早めにリリースしたいです。

Unity で作っているソフトはスローペースながら少しずつ進んでいます。
でもまだまだ実装できるかどうかすらあやしい段階で、試行錯誤の最中なので、
まだブログにのせられるようなことがありません。

RaspberryPi2 もまだまだ使い勝手をよくしたいことがあるのでちょくちょくいじろうと思います。

2016年2月8日月曜日

バレンタイン緊急企画!「チョコゲットChocolateGet」リリース(・`ω・´)

皆さんこんばんわ。
今年もあの恐ろしい呪文が発動しようとしています。(´Ծ_Ծ´)


 非リア充限定精神重圧呪文 
バ レ ン タ イ ン   
効果範囲:非リア充族全体。発動条件:2月14日(休日の関係で前後する)   
効果の説明

非リア充族は、その重圧によりいつもより挙動がおかしくなるものが多い。
メダパ○やザ○キやニフ○ムを混ぜて範囲を極大にしたものと解釈される。 
非リア充族でも悟りを開いた者に対しては、 この呪文は効果がないらしい。

非リア充族以外に対しては、
テンションを上げステータスを強化する効果があるらしいが
詳しいことは不明であるし、知りたくもない。 
対策:  
チョコという道具を授受することでこの重圧から解放されるらしい。
ただし、授受する相手によって効果が異なりダメージを受けることもある。 
非リア充族でも得られる可能性のあるチョコは義理チョコと呼ばれ
心優しき女神がくれる。  
しかし、チョコを受け取った場合、ホワイトデーという返済期日が設定され
より高価なものをお返しする必要が出てくる可能性があるらしい。


怖いですね。恐ろしいですね。(´Ծ_Ծ´)
冬場の凍てつく波動だけでもつらいのに、心が2、3本折れかねません。₍₍ (ง ˘ω˘ )ว ⁾⁾
いったいどうすればいいのか・・・。

そこに一人の非リア充が立ち上がった。
バレンタインの迷える子羊に光あれ!(`・ω・´)
安心しろ!ミニゲーム作ってきたぞ!

チョコゲット
ChocolateGet





ダウンロード版(ふりーむ!様)へのリンク

ブラウザ版(モゲラ様)へのリンク

これで思う存分チョコがゲットできるぞ!
これでバレンタインの重圧から解放されるぞ!よかったな!ԅ( ˘ω˘ ԅ)


何なのこれは?


簡単に言えばお手軽なもぐらたたきゲームです。
もぐらの変わりに現れては消えるチョコをクリックしてゲットします。
制限時間は30秒なのでタイトルから結果発表まで全部含めても1分で終わります。

つい出来心で作ってしまいました。(´・ω・`)

最近1ヶ月くらい別のソフトを作っているのですが、
完成の目処がたたない状態で、
達成感というか充実感がない日々でした。

1日であほなゲームを作る ahoge みたいなのを
ふとやってみたくなり1日半かけて作りました。

言語はHSPを使いました。

A4用紙にメモ書き程度の仕様を書いて、
たった 1個の .hsp ファイルのプログラムをいじって、
お絵かきしたスプライトシートを読み込んで、
魔王魂様の音源を読み込んで完成です。

小規模なゲームを作るなら HSP は本当に使いやすいと思います。


既知の問題


HSP3Dish を使うことで、ブラウザ版も簡単に作ることできます。
しかしというか当然というか、ブラウザによって微妙な動作の違いがあります。

ダウンロード版がきっちり動作しているので、それと比較した違いや問題を書いておきます。

・一部文字がかける

・ブラウザ版では、 MISS の効果音を再生しません。

ダウンロード版では、 GET! と MISS の効果音(.wav)を両方再生していますが、
ブラウザ版で両方再生すると BGM の音楽(.mp3)が停止してしまうことがたびたびありました。
mmplay の説明に、同じ形式のデータを複数同時に再生することができないかもしれないというようなことが書いてあったのでそれが原因かもしれません。
BGMが再生されないのはかなり違和感があるので、 MISS の効果音を鳴らさない仕様に変更しました。
ブラウザのチョコゲットを複数立ち上げると chrome で BGM が再生されなくなることもありましたが、チョコゲットを1つだけ起動する場合は発生しませんでした。
また、 IE では効果音(.wav)がそもそも再生されませんでした。

・ゲームの経過の速度が違う。

await によって1フレームの長さを25ミリ秒になるようにしていて、それを足し算して経過時間を計測しています。
これがブラウザごとに誤差があるのか定かではありませんが、ブラウザごとにずれがあります。
ダウンロード版では説明どおり30秒ですが、 
chrome では約40秒、 IE では約35秒
にプレイ時間が延びています。

このようにブラウザ版は多少不具合がありますが、
お手軽に遊んでもらえる位置づけでリリースします。

遊んでくれる皆様へ


興味を持っていただきありがとうございます。

このミニゲームで少しでもバレンタインの重圧から解放されてほしいです。
もちろんバレンタインやチョコに関係なく、遊んで楽しんでもらえたらうれしいです。

あとは、チョコを奪い合う人たちに
「私のために争わないで(´;ω;`)」
といいながら、さりげなく「チョコゲット」を出して
「より多くのチョコをゲットした人にチョコをあげる!(´;ω;`)」
とかわけのわからないことを言い出してもいいんじゃないかと思います。

作者のダウンロード版のハイスコアは103です。
テストプレイで当初は80~90台でしたが、
無心でチョコをゲットする境地になって100を超えることができました。
chrome ブラウザ版では118個とることができました。

目標があったほうが楽しめるという方は、
作者超え(前例からたぶん余裕でされると予想)を目指してやってみてください。

今後の予定


RaspberryPi2 の復旧もだいぶ終わってきたので、
先月から作っている Unity ベースのソフトの開発にまた戻ろうと思います。

#HSP の GUI も今はやりの Unity で採用されているイミディエイトモードモデルなのかな?
#HSP は進んでるなー。
#GUI のプログラミングはこのやり方がわかりやすくていいなと思ってます。

無駄に妄想を膨らませて凝りすぎて
結局完成できなくなるパターンにはまりかけている気がして
ストレスがたまってきていたように思いますが、
ミニゲーム作りで少し気分もリフレッシュできたので、
自分のできるやり方で、こつこつやろうと思います。


2017年02月15日追記

月に数回アクセスがある程度だったチョコゲットですが、今年は思い切って3日間ほどバレンタインデーの前にキャンペーン(ツイッターで朝と夜に宣伝)をしてみました。
キャンペーンとリツイートやいいねのおかげもあって、おかげさまでチョコゲットに半月で160アクセスがありました。ありがとうございます。
チョコゲット神もきっと喜んでいると思います。