ページ 11

RPGの演出について

Posted: 2012年9月28日(金) 11:35
by softya(ソフト屋)
どぶろくさんに対する回答です。
「RPGを作りたい人の自己紹介 と アンケート • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=6 ... 401#p93401

加算半透明とか光系の演出にWin32APIは向いていないですからね。
DXライブラリは、そういうのは得意です。

>簡単な演出プログラム集など欲しいですね。ワイプや魔法など単純なものでいいんですけど。

ワイプは切り替え前後を別バッファにレンダリングしてWin32APIならStretchBltで2つの画像を合成してやれば良いと思います。
Win32APIは回転系の変形は苦手なので、そういうのは避けたほうが良いでしょう。

あと演出でDQ系だと旅の扉のラスタースクロールが有名ですが、これもStretchBltで実現できます。

魔法の演出はどんなイメージなのかわかりませんので答えられないですが、もう少し細かく聞いてもらえると答えられると思います。

Re: RPGの演出について

Posted: 2012年9月28日(金) 18:52
by どぶろく
解答ありがとうございます。

DXライブラリで書き換えようと思います。何といってもサンプルが豊富なのと処理が単純になるのが良い所ですね。
おっしゃる通り加算半透明とか光系の演出が得意なのも魅力ですね。

魔法の演出は難しく考えるとシューティングゲームの演出(弾幕のボス戦など)に似ているものを想像しています(例えが変?)。
火炎系ならくるくる回って伸縮したり。氷系なら氷を表示して砕け散らせるような感じです。
サンダー系なら画面を暗くして細かい稲妻をたくさん表示したいですね(ビカビカじゃなく穏やかに)。

簡単な演出プログラム集は、例えばサンダー系の魔法なら稲妻が走ればいいので、ラインを描くグラフィック関数で
ギザギザを作って黄色く塗りつぶしてピカピカさせたり、または、文字の●を連続してギザギザに流すように表示したり、
絵を描かなくても出来そうなやつです。こういうのを参考にしたいワケです。こういうのを投稿してくれる人が
いればいいのですが・・・。えっ? 自分で投稿しろって?

旅の扉のラスタースクロールは是非とも欲しいですね。期待しています。えっ? 自分で作れって?

ちなみに、私が敵と遭遇した時に使っている演出は実に単純なものです。某プログラム言語のサンプルにあったもので、
ただランダムに星を表示しているだけです。(DXライブラリで書き換えてみました)。
本格的な演出もいいんですが、こんな単純な演出もたくさんあると楽しいと思うのです。

コード:

include "DxLib.h"

//-------------------------------------------------------------
//  戦闘開始の星を表示
//-------------------------------------------------------------
void put_star(void)
{
    int  x, y, i;
    int  r, g, b;

    SetFontSize(40);      // フォントサイズを変更

    for(i=0; i<180 ;i++){
        r=GetRand(255); g=GetRand(255); b=GetRand(255);
        x=GetRand(639-40); y=GetRand(479-40);
        DrawString(x, y, "★", GetColor(r,g,b));
        WaitTimer(7);
    }
}

//-------------------------------------------------------------
//  エントリーポイント
//-------------------------------------------------------------
int WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR, int)
{
    ChangeWindowMode(TRUE);    // ウィンドウモード

    if( DxLib_Init() == -1 ){  // DXライブラリ初期化処理
        return -1 ;            // エラーが起きたら直ちに終了
    }

    put_star();                // 星を表示

    ClearDrawScreen();
    DrawString((640-6*40)/2, 200, "バトル開始!",GetColor(255,255,255));

    WaitKey() ;                // キー入力待ち
    DxLib_End() ;              // DXライブラリ使用の終了処理

    return 0 ;                 // ソフトの終了
}

Re: RPGの演出について

Posted: 2012年9月29日(土) 11:19
by softya(ソフト屋)
どぶろく さんが書きました: 魔法の演出は難しく考えるとシューティングゲームの演出(弾幕のボス戦など)に似ているものを想像しています(例えが変?)。
火炎系ならくるくる回って伸縮したり。氷系なら氷を表示して砕け散らせるような感じです。
サンダー系なら画面を暗くして細かい稲妻をたくさん表示したいですね(ビカビカじゃなく穏やかに)。
それこそ龍神録が参考になると思います。
どぶろく さんが書きました: 簡単な演出プログラム集は、例えばサンダー系の魔法なら稲妻が走ればいいので、ラインを描くグラフィック関数で
ギザギザを作って黄色く塗りつぶしてピカピカさせたり、または、文字の●を連続してギザギザに流すように表示したり、
絵を描かなくても出来そうなやつです。こういうのを参考にしたいワケです。こういうのを投稿してくれる人が
いればいいのですが・・・。えっ? 自分で投稿しろって?
それを作るのが楽しいと思うのでわからないことは聞いてくださいね。
どぶろく さんが書きました: 旅の扉のラスタースクロールは是非とも欲しいですね。期待しています。えっ? 自分で作れって?
そんなに難しくないですよ。
画面を数ドット単位で横にスライスして左右にsinカーブで揺らしてやるでけです。
この周期を適度に変えてやると旅の扉っぽくなります。
どぶろく さんが書きました: ちなみに、私が敵と遭遇した時に使っている演出は実に単純なものです。某プログラム言語のサンプルにあったもので、
ただランダムに星を表示しているだけです。(DXライブラリで書き換えてみました)。
本格的な演出もいいんですが、こんな単純な演出もたくさんあると楽しいと思うのです。

コード:

include "DxLib.h"

//-------------------------------------------------------------
//  戦闘開始の星を表示
//-------------------------------------------------------------
void put_star(void)
{
    int  x, y, i;
    int  r, g, b;

    SetFontSize(40);      // フォントサイズを変更

    for(i=0; i<180 ;i++){
        r=GetRand(255); g=GetRand(255); b=GetRand(255);
        x=GetRand(639-40); y=GetRand(479-40);
        DrawString(x, y, "★", GetColor(r,g,b));
        WaitTimer(7);
    }
}

//-------------------------------------------------------------
//  エントリーポイント
//-------------------------------------------------------------
int WINAPI WinMain( HINSTANCE , HINSTANCE, LPSTR, int)
{
    ChangeWindowMode(TRUE);    // ウィンドウモード

    if( DxLib_Init() == -1 ){  // DXライブラリ初期化処理
        return -1 ;            // エラーが起きたら直ちに終了
    }

    put_star();                // 星を表示

    ClearDrawScreen();
    DrawString((640-6*40)/2, 200, "バトル開始!",GetColor(255,255,255));

    WaitKey() ;                // キー入力待ち
    DxLib_End() ;              // DXライブラリ使用の終了処理

    return 0 ;                 // ソフトの終了
}
良い感じが出て入れば何でもいいですよ。
私のRPG講座のやつは、フィールドとバトル背景を徐々に置き換えていくものです。
※ 背景を小さなブロックでランダムに上に重ねているだけですが。

Re: RPGの演出について

Posted: 2012年9月29日(土) 16:43
by どぶろく
softya(ソフト屋) さんが書きました: そんなに難しくないですよ。
画面を数ドット単位で横にスライスして左右にsinカーブで揺らしてやるでけです。
この周期を適度に変えてやると旅の扉っぽくなります。
こういうふうに説明してもらえると、大変分かり易いです。ありがとうございます。

その他の演出について、
屋根の上に鳥がとまっていて近ずくと飛んで行ったり、
池に魚が泳いでいたりするのも面白い演出でした。
鏡や池に自分の姿が映るのも面白かったですね。

あー、夢がどんどん広がって行く。楽しい。

宿屋に泊るときなど、単に暗くなるだけですが、
カラスが飛んできて「カァー」と鳴くのはどうでしょうか?
毎回こういう演出を入れると飽きるので、たまに入れたりします。

あー、夢がどんどん広がって行く。

Re: RPGの演出について

Posted: 2012年9月29日(土) 16:51
by softya(ソフト屋)
どぶろく さんが書きました:
softya(ソフト屋) さんが書きました: そんなに難しくないですよ。
画面を数ドット単位で横にスライスして左右にsinカーブで揺らしてやるでけです。
この周期を適度に変えてやると旅の扉っぽくなります。
こういうふうに説明してもらえると、大変分かり易いです。ありがとうございます。

その他の演出について、
屋根の上に鳥がとまっていて近ずくと飛んで行ったり、
池に魚が泳いでいたりするのも面白い演出でした。
鏡や池に自分の姿が映るのも面白かったですね。

あー、夢がどんどん広がって行く。楽しい。

宿屋に泊るときなど、単に暗くなるだけですが、
カラスが飛んできて「カァー」と鳴くのはどうでしょうか?
毎回こういう演出を入れると飽きるので、たまに入れたりします。

あー、夢がどんどん広がって行く。
鳥が飛ぶは、リアルタイムにプレイヤー動作と並行でイベンド実行できるシステムを用意するとできますね。プログラムでも良いですが。
池の鯉は専用プログラムかなぁ。
鏡や池は専用のシステムですね。マップの鏡属性で特殊なプログラムを動作させていると思います。

>カラスが飛んできて「カァー」と鳴くのはどうでしょうか?

夜のふくろうとかもいいですよね。
実際、日常的に鳥などを演出で入れていると急にいなくなって異変が起きたなどの演出にも応用できますね。
日常⇔異変の演出としても日常的な描写は大事だと思います。

Re: RPGの演出について

Posted: 2012年9月30日(日) 06:00
by どぶろく
夜のふくろうはいいですね。かわいいし、面白みもあります。
虫が鳴くというのもどうでしょうか?実際の音じゃなくても文章で表現してもいいんじゃないでしょうか?
日常からの異変の演出がイベント発生の演出になるというのはさすがですね。

セリフの表示で、普通ボックスに表示するのですが、
漫画みたいに、ふきだしを作って表示していたものがありました。
アイディアは素晴らしかったのですが、実際は読みづらかったので残念でした。
それにしてもプロは大変ですね、常に新しいことを考え続けなければならないし、
それを表現するプログラムを作るのも大変ですよね。