2012-04-01から1ヶ月間の記事一覧

衝突判定のやりかた

Spriteクラスの衝突判定はSprite.checkで使うことができるが、もっと手軽に使えないものかと。いちいち継承してクラス定義してhitメソッドを作ってとかするほどでもない場合に、Sprite.checkの戻り値で判断できるが、それすらめんどくさい。 どこまでもめん…

DXRuby1.3.3dev

開発中のDXRuby1.3.3devをWikiに置いた。 今回は細かいメソッド追加と不具合修正および、RenderTargetのブレンドアルゴリズム変更。 あと、微妙にWindow.draw_tileを修正。ちょっと使い勝手がよくなったはずだ。ちょっとだけ。 現在直面している問題は半透明…

RGSS2のマップデータ読み込み

マップデータを読み込んで配列に展開するのはこのようなコードになる。 module RPG class Map def getdata @data end end class Event class Page class Graphic end class Condition end end end class MoveRoute end class MoveCommand end class EventCom…

マップ描画

開発版でWindow.draw_tileを少し書き直した。 いままで描画するマップチップの数だけ描画予約をしていたのを、1つだけ予約して描画時にループして画面を作るようにした。描画予約のキューが大幅に減り、メモリの利用効率が上がったはずだ。ループ処理や演算…

色の配列

DXRubyでは色の指定は3つないし4つの要素を持つ配列で行う。なぜこの形になっているのかというと、そのほうがコードを書くのがラクだったからだ。 例えばStarRubyとかMiyakoとかRGSSを見るとColorクラスというものが用意されている。Color.new(r,g,b,a=255)…

半透明と半透明の合成の結論

RenderTargetの半透明合成は結局DirectX9のせいでできないということであった。そこでシェーダを使ってムリヤリにでもどうにかならないだろうか、とちょっといじってみた。 まずDXRubyの開発中最新版でWindow.draw_exに:blend=>:noneの指定を追加。透明色も…

半透明と半透明の合成

ずいぶん前に半透明の合成式に関してあれこれ考えていたことがある。 http://d.hatena.ne.jp/mirichi/20091207/p2 現在DXRubyのImage#drawはこの式を採用していて、半透明画像に対して半透明画像を描画した場合の結果は見た感じ自然になる。 ところが先日、D…

Spriteオブジェクトの管理方法

アクションゲームなどを作る場合に、キャラのオブジェクトを管理する方法としては、Rubyなので標準で組み込まれている配列クラスを使うのが普通じゃないかと思う。 しかし、配列はループ中に消したりできないから、何らかのフラグなどを用いてArray#delete_i…

決まりきらないポーズでも

異次元だったらOKだろうということで、ウィングマンのアレを作ってみた。 画像はきまぐれアフターさまから。いつもお世話になっております。 http://www5d.biglobe.ne.jp/~gakai/ グレイスケール化にDXRuby1.3.2dev添付のSpriteShaderを更に改造したものを使…

ソースの圧縮をする微妙なBimyoモジュール

手段がバレバレになるので見ようと思えばちょっとした細工ですぐ見れるわけだが。 画像とかもそうで、簡単に見れないようにするためにはソース非公開でバイナリの拡張ライブラリを作るほうがよい。 とりあえず参考までに。 このような微妙なモジュールを作る…

turnトランジション

吉里吉里の拡張トランジションのスクリーンショットだけを見てチャレンジ http://devdoc.kikyou.info/tvp/docs/kr2doc/contents/Transition.html もっと頑張りましょう。Window.draw_morphのアルゴリズムはイマイチなので、違う向きに画像をつぶすと大変なこ…

DXRuby1.3.2dev

DXRuby1.3.2devをWikiのファイル置き場に置いた。 http://dxruby.sourceforge.jp/cgi-bin/hiki.cgi大きな修正点としては、DXRubyFrameworkのものに近い衝突判定の追加。Spriteオブジェクトの描画にあわせてSprite#angle=やSprite#scale_x=/scale_y=などで指…

衝突判定の分割

画面を4分割して判定する場合のアルゴリズムを考えていた。 これはオブジェクトの中心座標をすべて足してオブジェクト数で割って分割座標を作った場合に、どのぐらい衝突判定の負荷が減るかというのを検討したプログラムの画面。 オブジェクトは100個あって…

衝突判定など

DXRuby1.3系ではSpriteを実装しはじめているが、DXRubyFwレベルの複雑な機能を統合しようとは思ってなくて、でも単純に簡易版にしようとも思っていない。 DXRubyFwのSpriteができる限りの高速化を狙っていたのに対し、本体統合版のSpriteはゲームを作りやす…

砂サンプルのアレンジ

サンプルに入れてあるdot.rbをシェーダ使ってどうにかできないかと試行錯誤していた。 まだちょっとおかしいが、なんとなく動く。落ちた砂が横に薄く広がるようになっている。 問題点は、薄く広がった砂が薄すぎて見えないというところだ。 あと、そのあたり…

RGSSに近い色調整機能を持たせるSprite拡張

DXRuby1.3.1devのSpriteに載せる予定はなく、RGSSにあってFreeRGSSでも作りこんである機能として、tone=、color=、flashといったメソッドがある。 これらは従来のDXRubyでは実現が不可能であり、1.3系ならShaderクラスを使うことで可能となる。実はFreeRGSS…