-
Notifications
You must be signed in to change notification settings - Fork 0
よくある質問
xdev001 edited this page Jun 10, 2024
·
1 revision
- iOSやAndroidのアプリをワンクリックで出力できる世界で唯一のノベルエンジンです
- 出力にはUnityなどのエンジンを使っておらず、自前のソースコードを書き出します
- Unityプロジェクトを出力できるので家庭用ゲーム機への移植が簡単である世界で唯一のOSSノベルエンジンです
- 他のエンジンからx-engineへ移行するのは、iPhone, iPad, Android, 家庭用ゲーム機で公開する可能性がある場合にしていただければと思います
- PCやWebでの公開しか考えない場合、無理に学習コストをかけて移行していただかなくてもよいと思います
- 新たにノベルへ参入される方はウェルカムです
- Windows / Webブラウザ
- まずは「ふりーむ!」様での公開を目標とされることをおすすめします
- 公開場所へのリスペクトがあれば審査をクリアできると信じています
- iPhone / iPad / Vision Pro
- まず、ご自身のApple IDのデバイスにアプリをインストールするのは自由に行えます (Apple Developmentと呼ばれるインストール)
- 次に、あらかじめデバイスIDを登録しておけば、100台までならAirDropでアプリをインストールできます(Ad Hocと呼ばれるインストール)
- 最後に、App Storeでの公開にはアプリの内容を元にAppleによる総合的な審査を受ける必要があります (App Store Connectと呼ばれるインストール)
- Android
- Google Driveなどの適当な場所にAPKファイルをアップロードして、野良アプリという形でゲーム公開することが可能です
- Google Playストアでの個人公開の場合、アプリのテスターを20人集める必要があり、法人公開ならまだこの制限はないようです
- 家庭用ゲーム機
- 各社のWebサイトで開発者登録を行います
- 作品の申請を行います
- 申請にあたっては「ミドルウェア」や「ゲームエンジン」の欄に「Unity」と記述してください
- ゲーム機専用のUnityを入手したら、Unity用にゲームをエクスポートしてください
- エクスポートされたゲームにはREADME.txtが入っており、その手順に従ってください
- 他のエンジンではできる○○という機能がないので実装してくれますか? [#z8037e20]
- x-engineの機能不足であれば、ほぼ例外なくご要望の機能を実装しております
- 一方で、スマートフォンはPCの1/100くらいの性能しかないため、移植を考えてあえて実装しない場合もあります(たとえば福笑い方式や衣装差分など)
- 提案者を尊重していないということは一切なく、既存エンジンの手法がスマホでは利用できないだけです
- 実行ファイルがウイルス対策ソフトによってウイルスと誤判定されている可能性があります
- 対策として、
- Windowsアップデートを行う
- ウィルス定義ファイルを最新にする
- リアルタイムスキャンを一時的に無効にする
- ウィルス対策ソフトの設定で隔離済みファイルを確認し、ウィルスではないとマークする
- ゲームのフォルダを変えてみる
- インストール先を変えてみる
- Ciel というYU-RIS/ERIS風の演出システムがあり、これの活用をご検討ください
- それより前からある機能ですと、
- コマンドリファレンス というコマンドがあります
- キャラクタと背景のうち、好きなものを変更したり、消去したり(none)、そのままにしたり(stay)できます
-
Cielと@allは同時に利用できません
- conf/config.txt ファイルの最後の方にある、下記の箇所を書き換えて、=0 を =1 に変更してください
msgbox.show.on.ch=1
- キャラクタ画像として特殊な位置(face)に表示します
@ch face ファイル名.png
- face の位置に表示する画像は、フェードイン・フェードアウトの時間指定が無視されます
- サンプルゲームでは、画面の小さなスマホでの操作を考慮して、右上のシステムメニューを使っています
- 一方、Windows向けゲームでよくある、メッセージボックスにボタンを作るスタイルも可能です
- この場合、右上のシステムメニューは無効にすることができます
- スマホ対応を考えると積極的におすすめはしませんが、一応機能としてはあるということです
- 個人的な考えでは、この機能は他のエンジンの「負の遺産」だと思います
- たしかに制作が楽になる面はあるのですが、読み込み時間、メモリ使用量、合成時間を考えると、スマホには荷が重いと考えます
- よって、技術的な詳細は省きますがx-engineでは実装しないことに決めました
- セーブデータにフォントファイル名が記録されていることで、フォントを変更できない、指定していないはずのフォントファイルが開けないと言われる、といった問題が発生します
- 開発ツールを終了した状態で、セーブデータのフォルダ
savを削除し、開発ツールを再度起動することで解決します
- GUI で解説しております
- 最大26個の名前を入力できます(
%aから%zまで)
- 目パチ を参照ください
- 口パク を参照ください
- テキストレイヤと コマンドリファレンス をお使いください
- x-engineはノベル特化であるため、あまり複雑なゲームシステムの構築を意識していません
- 気合いの入ったSLGを作りたい方は、素直にUnityを使っていただくことをおすすめしています
- エフェクトレイヤーを使います
- 一番廉価な水準のAndroidスマートフォンだと描画性能的にギリギリになるため、積極的にはおすすめしていません
- できるだけカラーフィルター適用済みの画像を作成して対処をお願いします
- あります。@gosub>コマンドリファレンス#tdc94466 と @return>コマンドリファレンス#g3c671e9 が利用できます
- マクロを外部ファイルにまとめるには、using>コマンドリファレンス#r3c95140 文を使います
- マクロ呼び出しは &マクロ名 と省略して記述できます (例: &my_macro)
- マクロの引数は、マクロ内では &1 のように引数番号で記述できます (例: @ch c &1 1.0)
- 呼出元のファイルとマクロファイルでラベル名が重複したときに問題が発生するのを避けるため、 マクロ内で分岐するには拡張ifブロックを使ってラベル名を不要にできます。
<<<
# 呼び出し側 (happyは引数)
&マクロ名 happy.png
...
# 呼び出される側
:マクロ名
if $1 == 0 {
# 引数で指定されたファイルを表示する
@ch c &1
}-
else {
@ch c normal.png
}
>>>
-
@guiコマンドを利用して作成可能です コマンドリファレンス - ボタンの設定で、type: gallery;を指定して、var: $1;のように変数を指定します
- 変数の値が0であればボタンは表示されません
- 変数の値が0以外であればボタンが表示されます
-
@guiコマンドを利用して作成可能です コマンドリファレンス - 仕組みはCG鑑賞モードと同じです
- 開発ツールの起動後にゲームを新規作成するときに、「日本語ノベル」か「日本語縦書き」のテンプレートを選択してください
- 現状では未対応で、半角スペースを使って手動調整していただいております(実際、プロの開発現場はこんな感じです)
- 対応しています。多言語化 をご覧ください
- WMSの使い方 をご覧ください
- キーボード操作をご覧ください
- PC向けのゲーム
- BGM ... ステレオ 128kbps
- SE ... ステレオ 128kbps
- ボイス ... モノラル 64kbps (日本語サンプル)、場合によってはステレオ128kbps (英語サンプル)
- スマートフォン
- すべて モノラル 48kbps
- スピーカーが1つのことが多いのでモノラルです
- スマホ本体の小さなスピーカーであれば、高音がカットされてもプレイ感に影響が出にくいため、アプリサイズ削減を考えて低ビットレートにしています
- イヤホンでプレイされるようであれば、プレイ感に影響が出ないように、PC向けと同じ設定をおすすめします
- フラグに名前をつけられるようになりました
- フラグ名はコンフィグファイルに記述して管理できます
- 作品を長期にわたって保守して行く上で、よい設計資料になると考えています
- スクリプトには
#でコメントを入れられるので、@setや@ifを使うときには何のフラグを操作しているのかわかりやすく書いておくことが大切だと考えます
- コメントを書くのは重要です
- 1年後のあなたにも読めばすぐわかるようにコメントを書くのが望ましいと考えます
- 開発ツールからWindows向けにエクスポートして、フォルダごとZIP圧縮して配布します
- 自由に変更できます
- Resource Hackerというソフトでgame.exeのアイコンを差し替えてください
- Mac向けエクスポートでソースコードを出力して、Xcodeで変更してください
- Android版の作り方 をご覧ください
- iOS版の作り方 をご覧下さい
- まず次のことを知ってください
- Appleはストアにおいて、JavaScriptやPythonからiOSのAPIを呼び出すことを禁止しています(事実)
- Appleはマーケティング上の理由で、Webではなくアプリに力を入れています(事実)
- 日本でのiPhoneシェアは7割、つまりアプリの方が重要であり、Webゲームは主流ではないです(事実)
- Safariの対応状況から察するに、Appleは今後もWebに力をいれることはないでしょう(憶測)
- ゲームプラットフォームとしてのWebの力は衰えていく一方だと思います(憶測)
- AppleはすでにアプリでOpenGLを非推奨にしており(事実)、いずれ廃止すると思います(憶測)
- そこで次の点を思い出してください
- あのエンジンはJavaScript製です(禁止されている。アプリ化に難がある。)
- あのエンジンはPython製です(禁止されている。アプリ化に難がある。)
- あのエンジンはOpenGL製です(重すぎる。)
- x-engineはJavaScriptやPythonやOpenGLを一切使わず、iOS専用のソースコードをエクスポートします(Appleとして理想形)
- 以上を踏まえると、ノベルのiOS対応では、x-engineは第一選択という判断になってきます(結論)
- 私たちはOSごとにネイティブアプリを作り分けており、これがサクサク動作の秘密です
- すべてのOSで共通して利用できるコア部分には、どんなOSでも必ず利用できるという観点から、1989年バージョンのC言語だけを用いています
- 共通して利用できない部分はOSごとの推奨言語を使って完全に作り分けています
- 私たちはこれを「HAL: ハードウェア抽象化レイヤー」と呼んでいます
- HALは元々、OSの移植性を高めるための設計実装手法であり、Microsoft Windows NTやNetBSDで採用されています
- 実行速度の最適化でも職人芸を披露しています
- GPU方面の最適化
- Direct3DのシェーダをHLSLではなくアセンブリを使って記述して極限まで最適化しています
- すべてのスプライトを毎フレーム描画するのではなく、合成済みの2枚の画面をフェードして軽量化/安定化/省電力化/低発熱化しています
- 機能性で割り切った部分もありますが、スマートフォンでの動作の安定性がバツグンです
- CPU方面の最適化
- GPUの描画結果をCPUに書き戻せないプラットフォームもある、という観点で、現状ではCPU描画も併用しています
- 描画ルーチンをSIMD命令に最適化しており、ユーザのCPUで利用できる一番速い拡張命令を使用しています
- Intel/AMD: SSE, SSE2, SSE3, SSE4.1, SSE4.2, AVX, AVX2
- Arm: NEON
- GPU方面の最適化