2009年08月20日

プリマルチプライ

7月22日の記事に書いたWriteableBitmapに半透明なアルファ
チャンネルが存在する場合、半透明後の画像があらかじめ
セットされてしまうという件を調べてみたら
「プリマルチプライ(Premultiplied Alpha)」と言われている
形式になっているという事がわかりました。
プリマルチプライでは無い形式の事をストレートとか
ノンプリマルチプライというらしいのですが、
こういう名前の形式があるという事を初めて知りました。
プリマルチプライだと合成するのにアルファ値があらかじめ
画像に乗算されているので処理が軽くなるとの事ですが、
自分の場合WriteableBitmapから色を抜きとって自前で
合成しているので、アルファの乗算も合成の時に一緒に
やれば1回で済むから処理が軽くなるというメリットが
ほとんど無いという。

合成の処理をプリマルチプライ済の処理に書き換えれば
いいだけなのですが、ノンプリマルチプライの方が
自前で全て処理出来るので安心というのもあって
出来たらこちらでやりたいなぁと。
ノンプリマルチプライで取り込めるPNGデコーダを用意する
しかやっぱり方法は無いみたいです。うーん。
posted by Rael at 21:19| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年08月06日

画像を使った日本語表示

今まで画像を使った英数字を表示させる事は出来ていたのですが
今回は画像を使った漢字を含む日本語を表示させてみました。
Silverlightで文字を表示させる場合、通常ではフォントを使って
画面に表示させるのが普通なのですが、あえてコンシュマーゲーム
と同じ手法で画像を使って表示してみようかなと。
画像を使うメリットはグラデーションや影などの加工を初めから
文字に適応させる事が出来るのが大きいです。
あと個人的にはドットの雰囲気か堪らないというのも^^
続きを読む
posted by Rael at 19:08| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年07月26日

AIR

AIRといってもAdobeの方じゃなくて、アドベンチャーゲームの方のAIRです。
実際のゲームをちゃんと遊んだ事は無いのですけど、動画投稿サイトにあった
ファミコンとPC-6601で再現したAIRのオープニング動画に感動してしまい、
夏というとAIRの季節と言う事を聞いたのでSilverlightで再現してみるのも
面白いかなと思って作ってみました。
続きを読む
posted by Rael at 23:08| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年07月22日

WriteableBitmapを使った画像処理2

前々回作ったWriteableBitmapに画像を読み込む処理を
Stretch.NoneとImageをChildren.Addしないで済むように
StreamResourceInfoを使って改良しました。
続きを読む
posted by Rael at 20:50| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年07月19日

WriteableBitmapを使った画像処理

今回は先日作成したWriteablebitmapのコードを使って、簡単な画像処理をします。
Writeablebitmapに画像を取り込んでしまえば、後はPixelsというInt型の配列を
順番に処理していくだけでOKです。
続きを読む
posted by Rael at 17:10| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年07月18日

WriteableBitmapに画像を読み込む

- こちらのコードを7月22日に改良しました -

マネージドコードだけでWriteableBitmapに画像を読み込むコードを作りました。
何故かStretch.NoneとImageをChildren.Addしないと正常に読み込め無くなって
しまいますが、とりあえず自分の環境ではこれで動いています。
もっとスマートな方法があるかもしれませんね。
     public MainPage()
        {
            WriteableBitmap writeablebitmap = ImageLoader(new Uri("test.png", UriKind.Relative));
        }

        WriteableBitmap ImageLoader(Uri uri)
        {
            Image image = new Image();
            BitmapImage bitmapimage = new BitmapImage(uri);
            image.Source = bitmapimage;

            //Stretch.NoneとImageのChildren.Addを実行しないと何故か失敗してしまう
            image.Stretch = Stretch.None;
            LayoutRoot.Children.Add(image);
            LayoutRoot.Children.Remove(image);

            WriteableBitmap writeablebitmap = new WriteableBitmap(image, new TranslateTransform());
            return writeablebitmap;
        }
        }

コードが見難かったのでブログのデザインを変えました。
それとコードを貼り付ける方法をCSSを使った方法に変えてみました。
以前より見やすくなったと思う。
posted by Rael at 19:13| Comment(4) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年07月16日

Silverlight 3 Toolsの日本語版がリリース

Silverlight 3 Toolsの日本語版がリリースされました。
http://www.microsoft.com/downloads/details.aspx?FamilyID=9442b0f2-7465-417a-88f3-5e7b5409e9dd&DisplayLang=ja

早速インストールしてBeta版で作ったプロジェクトを読み込んでみましたが、
Beta版とWriteablebitmapの仕様が変わっている為Writeablebitmap関係の
エラーが何個か出ました。
Beta版からの変更点はLockメソッド、Unlockメソッド、PixelFormatsが
削除されているのと、新たにPixelsというint型の配列が追加されていました。
これらを修正したらちゃんと動いたので、とりあえず安心。
他にもマウスホイールのイベントが追加されていたり
色々Beta版から変わっているみたいです。
posted by Rael at 19:20| Comment(0) | TrackBack(0) | Silverlight | このブログの読者になる | 更新情報をチェックする

2009年06月21日

Silverlight 3 Beta

7月10日にSilverlight3の正式版が出る予定なのですが
なんか我慢出来ないのでBeta版をインストールしました。
アウトオブブラウザ、Writeablebitmap、GPUアクセラレーション
など気になっていた機能を一通り試してみました。

続きを読む
posted by Rael at 19:37| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年06月07日

タイトル画面のエフェクト

レトロゲームのタイトル画面でよくありそうなロゴの演出を10種類作りました。
ファミコンだと派手な演出がほとんど見当たらなかったので、
スーパーファミコンとメガドライブを参考にしてます。
やっぱりピクセル単位でプログラム出来ると色々凝った演出を再現出来るので
作っていて面白いです。

続きを読む
posted by Rael at 22:52| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年05月13日

モザイク

今回はスーパーファミコンで良く使われていたモザイク処理を作りました。
これもちょっとした演出とかエフェクト的に使うと面白いと思います。
モザイク処理は指定範囲の色の平均を取ると正確な色になるのですけど
正確さよりもスピード重視で指定範囲の左上のピクセルを使って塗りつぶしてます。
正確な色では無いですけど見た目は問題無いと思います。
画像をバイナリに変換する方法なんですけど、WPFにあるCopyPixelsが無いので
画像の読み込みの方はRAW形式の画像をBinaryReaderを使ってbyteに変換しました。
画像作成は前回と同じくnikola氏のPngEncoderを利用させてもらいました。
続きを読む
posted by Rael at 19:30| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年05月08日

砂嵐

Silverlight3ではWriteablebitmapが追加されるので
ピクセル単位で画像の操作が出来るようになります。
実はSilverlight2でもPNGのStreamを操作する事で同様の事が出来ちゃうんですよね。
そこでnikola氏のPngEncoderを利用させて頂いて砂嵐を作りました。
ちょっとした演出とかエフェクト的に砂嵐を使うと面白いかなと。
ゲームだとスターブレードとかバーチャロンみたいな使い方は好きです。
続きを読む
posted by Rael at 19:46| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年04月23日

宇宙飛行

Windowsのスクリーンセーバーにある宇宙飛行のような画面の向こうから
星がこちらに迫ってくるヤツを作りました。

続きを読む
posted by Rael at 20:22| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年03月21日

沙羅曼蛇風の触手

前回作ろうとしたUMLはたいしたクラス図にならなかったので
代わりに触手の考え方をまとめて置きます。
続きを読む
posted by Rael at 18:06| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年03月18日

誘導弾作成

シューティングゲームなどでおなじみの誘導弾を作ってみました。
今回もHakuhin氏のサイトを参考にしてます。
マウスポインタをミサイルが追いかけてくるのですけど
なんだかミサイルが餌に寄ってくる魚に見えたりして
ちょっとかわいいw
やっぱり三角関数がわかると色々出来て面白いです。
次回は長年作成したいと思っていた沙羅曼蛇風の触手を作ります。
もうすでに触手のドット絵は作成済みで準備万端。
親子関係とか結構複雑な所があるので久々にUMLでも作って
みようかなと思ってます。
続きを読む
posted by Rael at 23:18| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年03月15日

爆発エフェクトとテキスト処理

ゲームで使えそうな爆発エフェクトとテキスト処理を作りました。
爆発エフェクトの方は花火っぽくてキレイな感じ
シューティングの弾幕にも使えるかな。
テキスト処理の方は、よくある文字が順番に表示されるやつです。
やっぱりSilverlightはこのようなちょっとしたプログラムを
手軽にupするのに凄く向いてますね。
続きを読む
posted by Rael at 17:46| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年03月07日

AJIFRY更新

ブロック崩しゲームのAJIFRYを更新しました。
更新内容は、Enterキーでポーズ機能を追加と
ゲーム進行によってボールのスピードを変化させました。
スピードを変化させる事によって少しはゲーム性が上がったかなと。
後はネットワークを使ったスコアランキングなんかも出来たら追加したいなぁと
思って調べているのですけど、もしサーバを用意しないでランキングの機能を追加
出来る方法があれば、ぜひやってみたいですね。

最近発売になった気になるソフトがあるのです。
ずばりアクションゲームツクールというソフトなんですけど
マリオやゼルダやグラディウスなんかのゲームを手軽に作れるらしい。
残念なのはXNAとFlashに出力できるのにSilverlightには対応していない事かな。
まあXNAとFlashに出力出来るだけでも凄いことだと思いますけどね。
あとアクションゲームツクールから.NET FrameworkとXNA Frameworkが
普及してくれると嬉しいかも。
posted by Rael at 23:24| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年02月22日

ラスタースクロール

Hakuhin氏のサイトを参考にしてラスタースクロールを作ってみました。
ラスタースクロールはサンダーフォースVやダライアスUなどで効果的に使われていた
画面がウニャウニャ動く効果なのですが、見ていて面白いので好きです。
Silverlightで一つのImageを1ドットずつ操作する方法がわからないので
縦の解像度の数だけImageを作ってそれを動かす方法で作ってみましたが…
うーん。やっぱり処理が重い^^;
このままではちょっと処理速度的に実用には向かないなぁ。
Silverlight3になればハードウェアのサポートが受けられるのでなんとかなるのかも
しれないけど、どうなんだろう。
続きを読む
posted by Rael at 21:22| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年02月06日

タルカス完成

テトリスクローンゲームのタルカスが完成しました。
ゲームの仕様は
壁蹴り:有り
ツモ調整:有り
ホールド:無し
先行回転:無し
backtobackと全消しもエフェクトは無いですけどあります。
T-Spinの得点はありません。
まあ、いたって普通のテトリスですね。
これも気が向いたらバージョンアップさせるかもしれません。
左のゲームの中にあるTarkusから遊べます。
posted by Rael at 00:16| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年02月03日

テトリスクローン作成その2

前回テトリスクローンゲームのタイトルをテトソスとしていましたが、ネットで
検索したらすでにテトソスというテトリスクローンゲームが存在している事が
わかったので他の名前を考え中です。
やっぱり同じことを考えている人はいるもんですね。

テトリスはルールがクラシックとワールドというのに大きく分かれています。
要素で言うとwait、スーパーローテーション、HOLD、テトラミノの色、回転法則など
他にも色々違いがあり、単純と思われるテトリスのルールですけど調べると結構奥が深い。
自分が作っているのはクラシックルールの要素が強いですけど、2つのルールが
ミックスされている感じになってます。

ゲームモードの方はゲームクリアが無いエンドレスモードと
40ラインを消すまでの時間を競う40LINEモードを作りました。
エンドレスモードの方は元祖セガテトリスに近い調整をしています。
40LINEの方はwaitを無くしてワールドルールっぽい感じになってます。

teto2.jpg

当初の予定より作りこんでしまったので時間が思っていたよりも掛かってしまいましたけど
あともう少しで公開出来ると思います。
posted by Rael at 20:11| Silverlight | このブログの読者になる | 更新情報をチェックする

2009年01月17日

テトソス作成 & FireFoxの使えるキー 

落ち物パズルゲームのテトソスを作成中です。
完成度は80%ぐらいで後は音の素材や細かい仕様を実装すれば完成かな。
画面の見た目的にはかなり頑張ってアーケードっぽくなるように努力してます。
操作性や仕様の方は良く分からない所があるので出来る範囲と言う事で。

テトソス.jpg

あとテトソスを作っていて大きな問題が見つかってしまいました。
IEなら問題無いのですが、FireFoxだとキーボードの使えるキーが制限されているのです。
具体的には英数字のキーやスペースキーが使えません。
他にも使えないキーがまだあると思いますけど、英数字とスペースが使えないのは
アクション性のあるゲームを作る上で大問題です。
使える他のキーを探したのですが、SHIFTキーは連続で使うとOSから警告が出てしまう
ユーザーがいますし、CTRLキーはショートカットなどで使う特殊なキーなので
出来るだけ使いたくない所なんですよ。
本当ならZ、Xキーあたりに割り当てたいのですが、普段自分はFireFoxを使っている
だけにどうにか対応したい所なのですけど、うーん困ったなぁと。

※2月4日追記 
今日FireFoxでもZ、Xキーが動く事を確認しました。
前回はなんで動いてくれなかったのか(´・ω・`)
posted by Rael at 21:51| Silverlight | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。