カテゴリー : NovelEngine

トランジションをどうするか

どうも、hide92795です。
自作ゲームフェスの方は残念ながら落選となってしまいました。
どうやらツール部門は受賞なしだそうで驚いていますw
今回のお題は「トランジション(画面遷移エフェクト)」です。
デフォルトでもフェードだったりの基本的なものは搭載しますが、既存のノベルゲームエンジンで有名な吉里吉里さんの方では、画像を用いたトランジションが出来るようになっています。
白黒の画像(ルール画像)の濃淡で順番に表示・非表示する といったものですね。
この機能は非常に優秀なので是非リスペクトしたいと思っていますが、なんせどう実装すればいいのかわからない・・・
個人的な決め事で「既存のノベルゲームエンジンのソースは(出来る限り)見ない」というのを決めているので・・・
というわけで色々考えてみたわけですが、一番しっくりした方法を書いてみようと思います
パフォーマンスは非常に悪そうで、さらにサンプルソースすら書いてませんけどねwww


①ルール画像の濃淡を8bitに直し、0.0~1.0の間に割り当てる
②全ピクセルの濃淡だけを抽出し、Client用に保存
③Client側で、②で保存したものを読み取り、①の数字をZ軸にしてVBOを作成
④トランジション実行中にVBOをデプスバッファのみ有効で書き込む
⑤フォグで指定範囲より奥にあるピクセルに霧をかけ、アルファ値が下がってるような感じをする
⑥指定範囲の閾値を時間ごとに変えていく
これが1週間ほど悩んだ結果に出された案です
非常に気がかりなのが③のVBO作成時に頂点数がバカにならない数になってしまう(800*600で48万)ということです
アルファテストとかでがんばろうかと思いましたが、閾値から完全に見えなくなるまでの範囲の濃淡をどうするか
という問題にぶち当たり没になりましたw
サンプルソースでパフォーマンスが非常によろしくなかった場合には禁じ手のソース閲覧を使うしかないのかなぁ・・・・
(ちなみに今まで見たことありません)
サンプル書くのも非常に大変・・・・
けどそれが楽しいんだけどねww
ではノシ

 

NovelEngine a1.0.0 公開

どうも、hide92795です。
前々から作っていた自作ビジュアルノベルゲーム制作ツールである「NovelEngine」を
FileCreatorの公開をもちまして正式に公開したいと思います。
NovelEngine_logo2Dv3_blog
バージョンはa1.0.0ということでアルファステージですがご容赦ください。
今回アルファバージョンながら公開したのは、niconicoで開催中のニコニコ自作ゲームフェスに応募するためです。
応募動画はこちら↓

バージョンa1.2.0の公開に伴い紹介動画②を投稿いたしました。↓

はじめにこれらの動画を見ることをおすすめします。
Wikiのようなものの作成も進めています。→ http://novelengine.hide92795.org/
まだコマンド部分についてしか書いていませんがね・・・


ダウンロード
バイナリファイルなどのダウンロードはこちらから出来ます
・NovelEngine Client
実行ファイル単体
実行ファイル単体&サンプルストーリー
ソースコード(Github)
・NovelEngine FileCreator
実行ファイル(単体)
サンプルプロジェクト(動画で使っているもの)
実行ファイル&サンプルプロジェクト
ソースコード(Github)
・その他
技術仕様解説PDF
ストーリー文法と使えるコマンド一覧PDF
ファイルの記述方法PDF

サンプルストーリーに使用させていただいた素材は各Zipファイル内にファイルが置かれていますので、
そちらを御覧ください。

 


起動の仕方
・NovelEngine Client
関連付けが正常に行われている場合はダブルクリックで起動します。
関連付けが行われていない、起動しない場合にはコマンドプロンプト/ターミナル上から
java -jar NovelEngine.jar
と打ってみてください。
・NovelEngine FileCreator
起動時の第一引数にプロジェクトファイル(*.project)を指定する必要があります。
もし省略して起動した場合は「example.project」が読み込まれるようになっています。
ダブルクリックでも起動出来ますが、出力ログが出なく、成功したのかがわかりにくいためおすすめしません。
コマンドプロンプト/ターミナル上から
java -jar NovelEngine_FileCreator.jar [プロジェクトファイル]
と起動するのを推奨します。
また、ストーリーファイルの解析エラーによって処理が中断してしまう場合にはストーリーファイルの文字コードをShift JISにしてみてください。
※※ 3/9追記
素材の中にニコニ・コモンズ内のみのものが有りましたので、FileCreatorのZIP内から削除いたしました。
また、Client側のものはサンプルストーリーのDLを一旦中止させて頂きます。
ご迷惑をお掛けして申し訳ございません。
※※ 3/24追記
バージョンアップしたため、紹介動画②を公開しました。
それに伴い、素材をコモンズ内で「インターネット全般」で使用可能なものや、その他フリー素材として配布されているものに変えました。
ただし、再配布(2次配布)についてきちんと書かれていないものに関しては再配布を行わない方針をとったため、FileCreator側のファイル内から該当の素材をのぞかせて頂きました。
素材のダウンロード先や編集方法を載せたテキストを添付してありますので、そちらをご覧ください。

 

[Java&LWJGL]OGGをストリーム再生出来ない時がある

どうも、hide92795です
エンジンの作成を進めていた時にBGMなどの長めの音声を生成する際にやけに処理が重くなっているのに気づきました。
(ちなみにSoundlyという外部APIを使っています)
調べてみたところ1-2秒も処理がかかっていました・・・
①この時の仕組みはCipherInputStreamから内容すべてをbyte[]に格納
②ローダーに渡してXSound生成
という感じでした(考えてみればMB級のファイルをすべて読み込むというのはすごく非効率)
1は別スレッドで行なっているので問題なかったのですが、2で時間がかかっている模様・・・
Javadocを眺めているとXStreamingSoundというクラスが有り、URL指定でストリーミング再生が出来るとのこと
実際にそちらの方で簡単にプログラムを作ってみたところ0.002秒ほどで2と同等の処理が終わりました
しかし、実際に使うとなるとCipherInputStreamをかませなければ暗号化されているので読み込めない・・・
というわけでSoundlyを改造してInputStreamも引数に取れるように改造しましたw
SoundlyはGPLv3なのでこちらで公開しています。
しかし、ここで新たな問題に直面しました
特定のOGGファイルだけ再生が開始できなくなってしまうという現象が発生するようになってしまいました(´・ω・`)
そのファイルとは
softalk及び棒読みちゃんなどのゆっくりボイスです
テスト用に適当に見繕ったのですが、自作・ニコニコモンズ上のもの両方でダメでした
また、改変したInputStreamの引数ではなく元々のURL指定でもダメでした。
ちなみにストリーミングせず従来の方式ではちゃんと再生されました
変換には同じソフト同じ設定でやっているので差異は無いはずなんですが(そもそも従来方式では再生できていたので再生自体は出来るはずなのに。。。。)
誰か情報を知っている人がいれば教えていただけると助かります><
とりあえずデフォルトはストリーミング、ファイル作成時にユーザーが従来方式のも選べるようにしておきますかね・・・
ではノシ

[Java]LWJGLで動画再生

どうも、hide92795です
ゲームエンジンの作成にあたり、結構悩んでいたのが動画再生についてです。
Javaで動画再生といえばJMFを使用したものが有名ですが、プラットホームごとのインストーラーがあったり、プラットホームに依存しないバージョンだと対応フォーマットが皆無に等しかったりといろいろと難点があったのです。
さらにLWJGLではSwing上にて動作自体はできるものの、JMF用のPanelに切り替えた時にどんな問題が発生するかわからないなど結構なリスクがありました。
そこでグーグル先生で色々調べていたところ、
http://www.java-gaming.org/index.php?topic=24846.30
↑のサイトを見つけました。この中の画像が貼り付けられている投稿に書かれているURL
http://www.java-gaming.org/?action=pastebin&id=23
こちらにはソースコードが書かれています。
投稿があったスレッド名は「VLCJ in OpenGL / LWJGL」です。
このVLCJというのはVLCPlayerの機能をJavaで使えるようにしているライブラリです。
VLCJ – http://www.capricasoftware.co.uk/vlcj/
ではまず下準備から
今回はWindows&Eclipse使用を前提としています。
1.必要なライブラリ等
・LWJGL
・VLCJ(↑のURLからDL出来ます)
・JNA(jna.jar, platform.jar)(VLCJのダウンロードページにリンクがあります。)
・libvlc.dll&libvlccore.dll(VLCのインストールディレクトリにあります)
2.ソースコード
基本的には先程のURLのソースですが、一部修正をしてあります。

修正箇所はmainのはじめに書かれている行です。
jarに対してネイティブライブラリの登録をしたのですが、何故かダメだったので直接ソースコードに。
あとは、再生したい動画ファイルをクラスパス直下において、

のop00.mpgの名前を変え、フィールドの一番上にあるWIDTHとHEIGHTの値を変えるだけです。
lwjgl_movie
↑RewriteのOPを拝借して再生してみましたが、問題ありませんでした。
基本的にVLCで再生出来るものなら問題ないと見て大丈夫でしょう。
ではノシ