RPG製作情報など
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
最近、RPGで使用できる『ミニゲーム』のスクリプトに力を入れている。
既に『スロットマシーン』、『ポーカー』を作ったのだが、
これらのスクリプトには、07/07/16記事の『Window_digits_number』が不可欠だ!
hide的に、このスクリプトは、かなりイイ感じに仕上がったと自画自賛(笑)
ということで? 回転数値機構『Window_digits_number』をvol.2.20に更新したよ!って話し。
とりあえず、バグと機能の拡張をしてみた。
■バグ修正内容
Ⅰ・・・囲み文字の縁取りが一部表示されないのを修正。
※盲点、それは数値の4は他の数値より幅が1ピクセル大きい。
ゆえに、左側の縁取りが欠けてしまうのだ。
-----------------------------------------------------------------------------------------
ツクールXPは、重いと言われるが、原因の1つは、.draw_textの処理に時間がかかるから。
囲み文字の場合、あらかじめ黒(縁色)文字を右上、右下、左上、左下の4方向に、
1ピクセルずらして描画した後、真中に白(通常色)文字を描画する。
合計5回の.draw_textを行なっている事になり、単純に5倍の負荷がかかる計算だ。
ということは、.draw_textの回数を減らせば良い訳なので、
↓こんな方法を試みてみた。 ←(既出かもしれなケド)
①・・・適当なBitmapをつくる。
pic = Bitmap.new(bw,bh)
②・・・①のBitmap(pic)に黒文字を.draw_textで描画
pic.font.color = 黒
pic.draw_text(0,0,w,h,文字,align)
③・・・描画したいBitmap(XXX)に②のBitmap(pic)を.bltで描画(4方向に)
XXX.blt(1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(1,1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,1,pic,Rect.new(0,0,bw,bh))
④・・・描画したいBitmap(XXX)に白文字を.draw_textで描画
XXX.font.color = 白
XXX.draw_text(0,0,w,h,文字,align)
コレで、.draw_text5回を、.draw_text2回に減らすことができた。
その代わり、.bltの処理が、4回に増えたのだが、
この.bltの処理はかなり軽い処理(時間がかからない)なので問題ないハズ...
-----------------------------------------------------------------------------------------
Ⅱ・・・文字サイズを32以上に指定した場合、一部表示されないのを修正。
フォントのサイズで指定できる最大値は、96かな?
フォント名によっては変わるかも...
■拡張機能と仕様変更
Ⅰ・・・XYZ座標を外部操作可能に変更
.x = n ←デフォルトウィンドウと同様に.xに数値を指定すれば、X座標を変更できる。
※.y .z も同様に
Ⅱ・・・.move で、回転中であるかどうかを返す(true/false)
Ⅲ・・・valueに数値以外を指定した場合、エラーを吐かず、非表示に変更。
.update(value,se)を.update(value,type,se)に変更。
.refresh(value)を.refresh(value,type)に変更。
value=更新する数値、type=更新する数値の色、se=回転中に演奏するSE
--------------------------------------------------------------------------------
Ⅳ・・・class Copy_Font にcolorsを追加(高速文字色変更)
.update(value,type,se) ←高速回転数値描画
.refresh(value,type) ←高速数値描画
※typeは、ウィンドウ作成時に指定する↓fontsにcolorsを指定した場合のみの設定で、
色情報の配列で指定する。
fonts = Copy_Font.new(size,bold ,italic,shadow,round ,name,color ,s_color ,interval,colors)
fonts.colors = [Color.new(255,0,0,255),Color.new(255,255,0,255)]
※colors = [赤,黄]
XXX = Window_digits_number.new(x,y,z,value,max,min,fonts)
.refresh(value,type) type=0の場合、cororで指定した色(初期色)となり、
type=1 ならばcolors[0]の赤色、type=2 ならばcolors[1]の黄色に変化する。
※使用する場面で思いつくのは、
装備画面で、新しい装備品を選んでいる(カーソル移動中)に
ステータスUPなら赤文字、DOWNならば、青文字など。
バトルのHP、SPの回転描画で、HP=0 ならば、赤文字、瀕死(HP1/4)ならば黄色など。
既に『スロットマシーン』、『ポーカー』を作ったのだが、
これらのスクリプトには、07/07/16記事の『Window_digits_number』が不可欠だ!
hide的に、このスクリプトは、かなりイイ感じに仕上がったと自画自賛(笑)
ということで? 回転数値機構『Window_digits_number』をvol.2.20に更新したよ!って話し。
とりあえず、バグと機能の拡張をしてみた。
■バグ修正内容
Ⅰ・・・囲み文字の縁取りが一部表示されないのを修正。
※盲点、それは数値の4は他の数値より幅が1ピクセル大きい。
ゆえに、左側の縁取りが欠けてしまうのだ。
-----------------------------------------------------------------------------------------
ツクールXPは、重いと言われるが、原因の1つは、.draw_textの処理に時間がかかるから。
囲み文字の場合、あらかじめ黒(縁色)文字を右上、右下、左上、左下の4方向に、
1ピクセルずらして描画した後、真中に白(通常色)文字を描画する。
合計5回の.draw_textを行なっている事になり、単純に5倍の負荷がかかる計算だ。
ということは、.draw_textの回数を減らせば良い訳なので、
↓こんな方法を試みてみた。 ←(既出かもしれなケド)
①・・・適当なBitmapをつくる。
pic = Bitmap.new(bw,bh)
②・・・①のBitmap(pic)に黒文字を.draw_textで描画
pic.font.color = 黒
pic.draw_text(0,0,w,h,文字,align)
③・・・描画したいBitmap(XXX)に②のBitmap(pic)を.bltで描画(4方向に)
XXX.blt(1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(1,1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,1,pic,Rect.new(0,0,bw,bh))
④・・・描画したいBitmap(XXX)に白文字を.draw_textで描画
XXX.font.color = 白
XXX.draw_text(0,0,w,h,文字,align)
コレで、.draw_text5回を、.draw_text2回に減らすことができた。
その代わり、.bltの処理が、4回に増えたのだが、
この.bltの処理はかなり軽い処理(時間がかからない)なので問題ないハズ...
-----------------------------------------------------------------------------------------
Ⅱ・・・文字サイズを32以上に指定した場合、一部表示されないのを修正。
フォントのサイズで指定できる最大値は、96かな?
フォント名によっては変わるかも...
■拡張機能と仕様変更
Ⅰ・・・XYZ座標を外部操作可能に変更
.x = n ←デフォルトウィンドウと同様に.xに数値を指定すれば、X座標を変更できる。
※.y .z も同様に
Ⅱ・・・.move で、回転中であるかどうかを返す(true/false)
Ⅲ・・・valueに数値以外を指定した場合、エラーを吐かず、非表示に変更。
.update(value,se)を.update(value,type,se)に変更。
.refresh(value)を.refresh(value,type)に変更。
value=更新する数値、type=更新する数値の色、se=回転中に演奏するSE
--------------------------------------------------------------------------------
Ⅳ・・・class Copy_Font にcolorsを追加(高速文字色変更)
.update(value,type,se) ←高速回転数値描画
.refresh(value,type) ←高速数値描画
※typeは、ウィンドウ作成時に指定する↓fontsにcolorsを指定した場合のみの設定で、
色情報の配列で指定する。
fonts = Copy_Font.new(size,bold ,italic,shadow,round ,name,color ,s_color ,interval,colors)
fonts.colors = [Color.new(255,0,0,255),Color.new(255,255,0,255)]
※colors = [赤,黄]
XXX = Window_digits_number.new(x,y,z,value,max,min,fonts)
.refresh(value,type) type=0の場合、cororで指定した色(初期色)となり、
type=1 ならばcolors[0]の赤色、type=2 ならばcolors[1]の黄色に変化する。
※使用する場面で思いつくのは、
装備画面で、新しい装備品を選んでいる(カーソル移動中)に
ステータスUPなら赤文字、DOWNならば、青文字など。
バトルのHP、SPの回転描画で、HP=0 ならば、赤文字、瀕死(HP1/4)ならば黄色など。
07/08/10 早速、バグ発見!!vol.200からvol.2.20に更新!
■修正内容
・・・italic文字(斜め文字)の場合、文字の一部が描画されない!を修正。
・・・囲み文字(縁文字)を4方囲みから8方囲みに変更。
1など幅の短い数値は、4方囲みだとキレイに見えないから。
.blt描画なので、8方でも軽いハズ...
※8方囲み・・・右上、右下、左上、左下、右、左、上、下 の八方向。
■修正内容
・・・italic文字(斜め文字)の場合、文字の一部が描画されない!を修正。
・・・囲み文字(縁文字)を4方囲みから8方囲みに変更。
1など幅の短い数値は、4方囲みだとキレイに見えないから。
.blt描画なので、8方でも軽いハズ...
※8方囲み・・・右上、右下、左上、左下、右、左、上、下 の八方向。
PR
この記事にコメントする
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
最新コメント
[08/04 Faust]
[05/26 takku]
[11/12 ぱんだ]
[06/28 AntwerpBlue]
[06/28 AntwerpBlue]
[02/07 ジャリン]
[02/07 ジャリン]
[02/05 白豆]
[11/28 I・S]
[11/26 I・S]
ブログ内検索
最古記事
(09/12)
(09/15)
(09/15)
(09/15)
(09/16)
カウンター
忍者アナライズ