JINZO Novelの軌跡



1. はじまりのその前

 JINZO Novelについて話をするためには、まずPalm/Newt/ZauHeartから説明しなければなりません。

 私がWindowsCE機を購入する前、Newton MessagePad130を使用していました。そして、Newtonユーザーのsugich君とyamachaさん、PalmIIIユーザーのcoolly君たちと、PDAでテキストアドベンチャーゲームを作りました。ちょうどPCで「To Heart」などが流行っていた時期でしたし、PDAでそういうゲームを作れば面白いよね、という軽いノリでした。

 結局、Palm/Newt/ZauHeartシリーズは、以下の4作が出来ました。ちなみに、Palm版のプログラムはcoolly君、Zaurus版はZauADVシステムを使用してシナリオデータ作成をBABさんが行いました。

  • PalmHeart (PalmではPalmHeart / NewtonではNewtHeart / ZaurusではZauHeart)
       シナリオと絵はsugich君、yamachaさん、coolly君
  • Hide and Seek (Newton / Palm / Zaurus)
       シナリオと絵はBABさん
  • 粉雪のストロベリージャム (Newton / Palm)
       シナリオと絵はichise君
  • PalmHeart Refrain (NewtonではNewtHeart Refrain / PalmではPalmHeart Refrain)
       シナリオと絵はcoolly君

 そして、5作目としてBABさんが「MMM」というシナリオを書きました。しかし「MMM」はシナリオサイズが大きすぎて、PalmやNewton、Zaurusでは実現不可能。こうして、「MMM」は幻のシナリオとなったのでした。

2. JINZO Novelの誕生

 私としても、Newtonでは実現不可能でしたが「MMM」が日の目を見ないのは残念でした。そしてJINZO Paintで画面操作や文字表示などを実装しているうちに、WindowsCEであれば「MMM」が実現できるのではないかと思い始めました。そうしてプロトタイプを作ってBABさんに見てもらったりして、本格的に作成を開始したのです。

3. 汎用テキストアドベンチャーシステム

 NewtHeartシリーズをプログラムしていて苦痛だったのは、テキストファイルのシナリオに、選択肢の分岐やタップ待ちによる改ページなどのタグ打ちをすることでした。Newtonではプログラムファイルととテキストや画像ファイルをを分離するのが面倒で、プログラムのコンパイル時にそれらデータファイルをプログラムに内蔵させたため、NewtHeartシリーズではプログラマである私がそれらのタグ打ちをする羽目になりました。

 JINZO Novelでも私がタグ打ちをするのはウンザリだったので、シナリオのテキストファイルや画像データをプログラムから分離して、プログラマがタグ打ちをしなくてすむようにしました。シナリオの作者さんが自らタグ打ちすれば、自分の意図する改行・改頁・文字サイズ変更などが出来ます。ただし、この方式だとプログラムされている機能しか使えないため、アニメーションなどの気の効いた演出を作り込むことが出来ず、面白味には欠けるかもしれません。たとえばNewton版の「粉雪のストロベリージャム」では雪の降るアニメーションを搭載して、なかなか好評でした。

4. 漢字コードとファイル操作

 JINZO Novelのプログラムで一番の問題が、漢字コードでした。WindowsCEではEUC、Windows95/98ではシフトJISが使われているため、Windows95/98のテキストエディタで編集したシナリオファイルをWindowsCEに転送すると、プログラム側でシフトJIS→EUCの変換を行うことになります。とりあえず、これはVidualC++に用意された変換関数を使って何とか回避できました。

 また、VC++にはUnixにあるfopenやfreadなどのファイル操作関数が無く、低レベルなバイト単位の読み書きしかありません。まぁ泥臭い処理を書くのは面倒なだけで難しくはないので適当なプログラムで対処しましたが、少し疲れました。

5. Windows95/98版のJINZO Novel?!

 HPCならばWindowsCEでシナリオファイルの編集とJINZO Novelでのテストプレイを同時に出来ますが、PsPCではさすがにシナリオファイルの編集をするのは面倒なので、Windows95/98で編集してPsPCに転送することになります。しかしシナリオサイズが大きくなると、転送はかなり面倒になります。そこで、Windows95/98用のJINZO Novelを作ってみました。

 残念ながら、WindowsCEとWindows95/98ではMS Pゴシックのメトリックが違うらしく、どうやっても画面への文字表示が同じになりませんでした。それなりには動 作するのですけどね。

 これがWindows95/98版ですので、興味のある人は試してみてください。ただし、jzn形式のシナリオは使用できませんのであしからず。バージョンもちょっと古いかな?

6. 画面サイズ

 画面上部のメニューバーと下部のタスクバーを除くと、HPCは640x190、PsPCは240x270の画面サイズです。JINZO Novelでは文章の改行や改頁もシナリオで明示しますし、なにより画像サイズは画面サイズに大きく依存しますので、データはHPCまたはPsPCで個別に作成することになります。

 ただ、PsPCとHPCの両方持っている人は少ないでしょうし、PsPC版のみの「MMM」をHPCユーザーがプレイできないのは残念です。よく考えてみると、HPCでもメニューバーとタスクバーを除けば縦240ドットの表示は可能… そこで、正常な向きでは全画面表示できなくても90度回転させれば表示できる場合は、強引に90度回転させてプレイ可能としました。これを応用すれば、PsPCでも270x240の横長画面シナリオを作成可能です。ただし、液晶は90度回転させると非常に見づらくなる場合がありますけど。

 選択肢ボタンは最初はVC++標準のボタンダイアログを使っていたのですが、90度回転させたボタンを作ろうにもボタンに表示するの文字列を90度回転させられないという問題もありました。結局ボタンは自分で描いて、押されたときのハンドリングも自分で行う羽目になりました。

7. 表示色数

 WindowsCEでは、画面表示可能な色数はグレー4階調/256色カラー/65536色カラーの3種類があります。グレー4階調で作られたシナリオデータはもちろん256色/65536色でそのまま表示出来ますが、256色カラー/65536色で作られたデータをグレー4階調で表示させた場合、ディザや誤差分散などで256色/65536色→グレー4階調の変換をしたとしても上に文字を重ねると非常に読みにくくなりそうです。結局、変換は行わないことにしました。

 ただし、4階調グレーのデータだけというのはカラー機種で寂しいので、シナリオデータでグレー4階調と256色/65536色の2種類の色情報を持てるようにしました。こうすることで、4階調グレー機種では見やすい色、256色/65536色ではカラフルな色を使用出来ます。

8. JINZO Novelの今後

 一番の問題は、シナリオの数が増えないことですね。データはまだ「粉雪のストロベリージャム」「MMM」「PalmHeart」の3本しかありませんし、そのうちオリジナルは「MMM」だけ、あとの2本は以前NewtonやPalmで作ったもののコンバートです。

 やはり、シナリオ(文章)と絵の両方を作れる人は少ないのでしょうか。私は両方とも不得手ですし。文章の得意な人と絵の得意な人をそれぞれ斡旋するのも手ですが、私自身が複数人数での共同作業に良い思い出ばかりというわけでもないですし....

 まぁ、そのうち何とかなりますかね。