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

投稿

9月, 2015の投稿を表示しています

HSPでスプライトの試作

昨日書いて、今日もかくという異例の更新頻度を達成したぞ!ヽ( ´¬`)ノ ワ~イ !! 動機などは昨日のブログに書いたが、便利な hspdx を使わずにスプライトを動かしてみたいと思う。 今日はスプライトの細かな仕様を決める前に、実際に処理速度が十分出るかを検証してみた。 基本的には、昨日のプログラムと同じで、パーツ画像をバッファに読み込み、それを重ね合わせてコピーしていく。 昨日は、パーツ画像全体を重ねたが、今回は、キャラ1個分の 24x32 ピクセルだけを重ね合わせて、1個のスプライトを描画する。 そして、そのようなプロセスを繰り返して、スプライトを縦横に画面いっぱいに並べて配置した。 1フレームは 330 ミリ秒だ。 フレームごとに、一度、白い四角で塗りつぶしてからキャラを1つずつ書いている。 それだけだと、画面がちらつくので、ダブルバッファリングをしている。 具体的には一度バッファ(id=9)に書いてからそれをウィンドウ(id=0)にコピー転送した。 おおまかなプログラムはこんな感じだ。 この処理の前に昨日のパーツ画像の読み込みとバッファ(id=9)の初期化処理をしている。 *ScSpTest1 dim frameIdx, 4 frameIdx.0 = 0 frameIdx.1 = 1 frameIdx.2 = 2 frameIdx.3 = 1 for animeFrame, 0, 4, 1 gsel 9 // バッファにかく color 255, 255, 255 boxf 24 * 0, 32 * 2, 320, 480 for spX, 24 * 0, 320 - 24, 24 for spY, 32 * 2, 480, 32 for partsIdx, 1, 9, 1 pos spX, spY gmode 2, 24, 32 // 下向きの歩行アニメーション gcopy partsIdx, frameIdx(animeFrame) * 24 + 0, 0 next next next gsel 0 // バッファからウィンドウに転送 pos 0, 32 * 2

HSPで画像の重ね合わせをしてみた

あいにくの曇り空だったが、 スーパームーン を少し見ることができた。 なんとなくだが、月明かりがいつもよりも強い気がする。 中秋の名月とほぼ同時に月が地球に 接近するのは稀らしいので何かありがたい(-人-) 先週ブログを書いていたときに、 ハロウィン にちなんだゲームを作りたいなー と思っていて、ふわっとした企画を考えて、少し作り始めた。 まだできるかどうかわからないけど、初めて HSP で絵を出せたのがうれしいのでブログを書いてみる。 HSP 自体はだいぶ前から知っていて、ちょっとしたGUIのツールを作ったりしていた。 GUIアプリケーションをここまで短く実装できる言語は自分の中ではこれが一番だと思う。 もっと短くできるかもしれないが、ビギナーな私でもこのくらい短くかける。 screen 0, 160, 64 // ウィンドウ作成 button "greet", *OnGreet // ボタン作成&イベント関連付け stop *OnGreet // イベント dialog "Hello!" stop バージョンアップして今では WebGL や  iOS や Android でも実行できる。 そのときは HSP3Dish という環境を使うために  #include "hsp3dish.as"  でスクリプトを読み込む。  参照: HSP3Dish プログラミングマニュアル・基本仕様ガイド 制限として、拡張プラグインやCOM/Variant型や外部DLL呼び出しやモジュール変数については未サポートのようだ。 ゲームでスプライトを用いるため es_set などのスプライト用の関数を使いたかったが、これは hspdx という拡張プラグインなので HSP3Dish には対応していないと思う。 そんな理由から、スプライト系の処理を自作しようと思う。 先週ちまちまとドット絵を描いたので、それを HSP のウィンドウに描画してみた。 なんかドット絵を作っている最中は、わりと良く思えたのに、 ウィンドウに出してみると何か微妙 (´・ω・`) ちなみに、キャラは4コマにも描いている大砲ゲーム「お団子キャノン」に出てくるキャラクターだ。 キャラの

Unityの出力ファイルの容量を減らす&万歩計4コマ

Unity の出力ファイルの容量を減らす Unity の出力ファイルの 容量を減らしました 。 というか、今までのファイルの容量が 異常に大きかった ので普通にしました。 対象は WebPlayer と Google Play 用の apk です。 特に apk については容量がシビアなスマホやタブレットで利用している人が多いので、 こちらをメインにしてやりました。 Google Play で公開している3作品についてサイズを減らしました。 特に最初にリリースした「お団子キャノン」などは ミニゲームらしからぬけしからんサイズ を半分以下にすることができました。 apk      : 39MB → 16MB WebPlayer : 21MB → 7MB これでローディングの待ち時間も少しは短くなったと思います。 ダウンロードして、インストールしている方は 世界で10人くらい のようなので かなり 需要の少ない対応だけどがんばったよ ! 世界のインストールしてくれてる10人くらいの人ありがとう! やったことは主に3つです。 apk の容量の うちわけ は apk を作成した直後に、 Unity のコンソール画面右上のメニューから Open Editor Log を開くと見ることができます。 見て驚くのは画像ファイルが無圧縮なのか 1ファイルで3MB もくっていたことです。 ・使わないフォントファイルの削除 フリーのフォントをまとめていれていたのですが、結局1つしか使っていなかったので他のフォントファイルは削除しました。これで 4MB減らす ことができました。 ・Texture の Max Size の変更 Texture の Max Size プロパティは既定では 1024 でしたが、これを段階的に下げていきます。 下げると画像が荒くなるのですが、わりと 512 くらいまでは問題ありませんでした。 これで1つの画像ファイルが 3MBから200KB くらいまでぐぐっとさがりました。 これを複数ファイルに適用するとかなりサイズが減ります。 ここまでサイズが減るとやっていて楽しいです。 ・Android の Device Fil

CodeIQ のコンテストやったよ。あとQTableViewの続き書いたよ。

有言実行はできないとかっこ悪いので、なるべく無言実行(事後報告)の SakuraCrowd です。 こんばんわ(´#)・ω・`) 今日は CodeIQ の第1回コンテスト の締め切りなので、朝からやってました。 どうせやるなら100位以内に自分の名前をいれたいです!(`・ω・´)シャキーン そこで昨日、挑戦前の説明を呼んだり、ランキングを見て 作戦 をたてました。 今回のランキングのソート順は、 達成率>挑戦回数>作業時間 になっています。 処理時間は、遅すぎれば失敗になるかもしれませんが、ランキングには影響しないようです。 あまり時間は意識せず失敗回数を抑えることが重要です。 設問は4つあります。 ランキングを見ると達成率は ALL 100 が当たり前でした。 そして挑戦回数も、ノーミスの4回から1回ミスした5回までの人たちでしめられています。 絶対にミスれない戦いがそこにある!!! (; ・`д・´)…ゴクリ…(`・д´・ ;) そんな感じです。 ミスれない戦いの結果(; ・`д・´) 結果として19時ころの暫定ランクは あなたのランキング/得点 ランキング: 現在 150 位(  628 人中) 総合得点:  400 点 総挑戦回数:  6 回 合計解答時間:  4:16:58 こんな感じになりました。(´#)・ω・`)2カイミスッタゼ 犬ときじはノーミスでいけたのですが、サルと鬼の問題で1回ずつミスりました。 サルの問題では、複数のネストなのに break を1回しかしていないせいで、 ループを脱出失敗 してました。 break じゃなくて goto でどーんと exit: ラベルまで飛んでればこのミスは防げたと思います。 はからずも、最近ツイッターで goto もいいよね という話に混ぜさせてもらったばかりだったことを思い出しました。 鬼の問題では、 最大値をきちんと確認しない せいで失敗しました。a と b の2変数のループをそれぞれ大きな値からやっていったら最初に見つかった値が最大値だろうと思っていましたが、必ずしもそうはなりません。 例題2個がOKだったので、大丈夫かもと思ってしまいました。(´・ω・`) このどちらも、例題ではクリアしていて、テストケースの後半で失敗という形

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