忍者ブログ
RPG製作情報など
[5]  [6]  [7]  [8]  [9]  [10]  [11]  [12]  [13]  [14]  [15
×

[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)ならば黄色など。
PR
07/07/27記事で、『ポーカー』を公開したのだが、
早速、更新したよ!って話し。

一応、27日公開の『vol.1.00』を『vol.2.00』に差し換えているのだが、
新バージョン → 『Poker_Game vol.2.00』を公開ってこと。

※旧バージョン『Poker Game vol.1.00
※仕様変更の為↑バージョンは、使用不可。07/09/12記事を参照してね。
-------------------------------------------------------------------------------------
■変更箇所
・・・ポーカーの演出に変化は無し(ゲーム自体には)
・・・カードのめくりアニメを軽量化し、動作を軽減。
※ボタン連打しても軽いハズ。
-------------------------------------------------------------------------------------
bltでカード画像の再描画(アニメ)を行なっていたので、
それを、Viewportのoy移動に変更してみた。

あらかじめ、アニメパターンを全て描画しているので、
アニメーションの処理は軽量化できたと思う。
その分、『ポーカー』の呼び出し時間が長くなったかな?

とりあえず、現在製作中の『神経衰弱』の仕様に合わせてみた。
カードを20枚以上、アニメさせるには、『vol.1.00』の仕様ではキツイので。

※『神経衰弱』 ←ド○クエのラ○キーパネルって知ってる?
07/07/16記事で、『ポーカー』を製作中♪と言っていたので、
今回は、それを公開!って話し。

『ポーカー』と言っても、正式には、多数のルールが存在する。 ←適当に調べてね♪
hideの公開するスクリプト『Poker_Game vol.2.00』は、オリジナルポーカーなので、
ルールについてのツッコミは、無しの方向で...(笑)
※仕様変更の為↑バージョンは、使用不可。07/09/12記事を参照してね。

 ←こんな感じの画面
----------------------------------------------------------------------------------------
■オリジナルポーカー解説
①コインを獲得
↓を実行するとコインを獲得。(イベントコマンド『スクリプト』に記入しても有効)

$game_party.gain_coin(n)
※n=獲得するコインの枚数。

$game_party.lose_coin(n) ←減らす場合

②オリジナルポーカーで遊ぶ(実行イベントを作る)
↓をイベントコマンド『スクリプト』に記入。
make_poker(0)

■ポーカーのキー操作
上下左右キーでカーソル移動。
決定キーで決定、キャンセルで終了!

③ポーカーのタイプを指定
ポーカータイプとは、例えば、100枚賭けのポーカー、10枚賭け、1枚賭け
みたいに、賭けるコイン枚数と当たりコイン数を設定する!ってこと。
※『Poker_Game vol.1.00』内の『■ポーカーの設定』を参照

④スクリプトの準備
ポーカーを実行するのに必要なスクリプトを導入する。

Ⅰ・・・ゲームパーティにコインを追加・・・『Game_Party_Coin vol.1.00
Ⅱ・・・回転数値機構・・・『Window_digits_number
Ⅲ・・・ポーカー実行・・・『Poker_Game vol.2.00
※Ⅰ~Ⅲは必須。 Ⅳ~Ⅴは任意。

Ⅳ・・・1行選択肢のカーソル移動を拡張『Selectable_plus vol.1.00
※項目のいちばん右(最後)で右キーを押すと、いちばん左(最初)にカーソルが移動。
※項目のいちばん左(最初)で左キーを押すと、いちばん右(最後)にカーソルが移動。
左右でカーソルのループ機能を追加する機構。

Ⅴ・・・カーソルアイコン・・・『カーソルアイコン+
07/04/07記事を参照。

⑤画像を準備
↓画像を『Windowskinsフォルダ』にインポート(フリー素材)

 

poker_background.png(640x480)
ポーカーのメイン背景

※『Windowskinsフォルダ』にインポート

 

poker_hit.png(272x30)
当たりの演出(点滅)


※『Windowskinsフォルダ』にインポート

 

poker_back.png(192x32)
(0,0,96,32) 選択肢の背景
(96,0,96,32)選択中の演出(点滅)

※『Windowskinsフォルダ』にインポート

 

card0.png(480x408)
カードの絵柄(スペード)
96x136が1つの絵柄(15種類)

※『Windowskinsフォルダ』にインポート

 

card1.png(480x408)
カードの絵柄(ダイヤ)
96x136が1つの絵柄(15種類)

※『Windowskinsフォルダ』にインポート

 

card2.png(480x408)
カードの絵柄(クラブ)
96x136が1つの絵柄(15種類)

※『Windowskinsフォルダ』にインポート

 

card3.png(480x408)
カードの絵柄(ハート)
96x136が1つの絵柄(15種類)

※『Windowskinsフォルダ』にインポート

 

card4.png(480x136)
カードの絵柄(他)
96x136が1つの絵柄(5種類)
(0,0,96,136) ジョーカー
(96,0,96,136)カード裏
(192,0,96,136)右斜め向きのカード影
(288,0,96,136)左斜め向きのカード影
(384,0,96,136)縦向きのカード

※『Windowskinsフォルダ』にインポート


07/07/04記事で『スロットマシーン』を公開したのだが、
コインで遊べるゲームが、スロットだけなのは寂しい。

そこで、コインゲームを他にも作る為、『スロットマシーン』を更新したよ!って話し。

とりあえず『スロットマシーン』のコイン追加(Game_Party)部分と、
回転する数値(コイン数)部分を、独立したスクリプトにしてみた。

①ゲームパーティにコインを追加・・・『Game_Party_Coin vol.1.00
②回転数値機構・・・『Window_digits_number
③スロットマシーン実行・・・『Slot_Machinevol.2.00

※仕様変更の為↑バージョンは、使用不可。07/09/12記事を参照してね。

なぜ独立させたかと言うと、①コイン追加と②回転数値は、
使いまわしの利くスクリプトなので、新しいコインゲームを作った場合にも、
使用するスクリプトなのだ。

ちなみに、現在『ポーカー』を製作中♪近日公開予定
-------------------------------------------------------------------------

■↓スクリプトの改造に興味のある方は、読んでね♪

回転数値機構『Window_digits_number』は、
他の目的にも使用できるよう、機能を拡張している。
特徴、回転数値描画。高速数値描画。

例えば、ショップ(お店)の所持金を、回転しながら増減するものに変更可能。
※↓の改造方法では、メニューの所持金表示が消えるので注意!

■改造方法
Ⅰ・・・Scene_Shopの@gold_window = Window_Gold.newの真下に↓を挿入!
@digits_window = Window_digits_number.new(33+480,64,100,$game_party.gold,8)

(X座標,Y座標,Z座標,描画する数値,最大桁数)

Ⅱ・・・# ウィンドウを解放 の真下に↓を挿入!
@digits_window.dispose

Ⅲ・・・def update の真下に↓を挿入!
@digits_window.update($game_party.gold,$data_system.cancel_se)

※$data_system.cancel_se ←は回転するときのSEを指定。
省略すると、SE無し → @digits_window.update($game_party.gold)  

Ⅳ・・・Window_Goldのゴールド表示部分をコメントアウト(↓#を頭に付ける)
#self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
-------------------------------------------------------------------------
一応、開発者向けのスクリプトなので設定はメンドウ...
@digits_window.refresh(num) ←で更新(回転無し)
詳細は、スクリプトを見てね♪
カレンダー
04 2024/05 06
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]
プロフィール
管理人
hide
ホームページ
ブログ内検索
カウンター
忍者アナライズ
忍者ブログ [PR]