「時の故郷」というゲームについて
失われたゲーム(3本目)
![]() |
| プレイ画面例 |
「時の故郷」は、2001年7月にPleiades Company 牧尾様が公開したフリーウェアのアドベンチャーゲームです。
主人公は浪人中の18歳、志度聡志です。亡くなった祖母の家を掃除するため6年ぶりに田舎へ帰った聡志は、幼なじみの真田ゆり子と再会します。滞在は4日間、4日目の夜には花火大会があり……という物語を、選択肢で読み進めるノベルタイプのADVです。今回移植した「3.11 完全版」は追加編を含み、エンディングは全18種類あります。
※一定以上の年齢の方は当時サーパラで買ってプレイした人も多いのではないでしょうか?
(若い子にサーパラってなんだって言われそうですね……💦)。
詳しくは牧尾様のnoteをご覧ください。
https://note.com/so_nosg/n/n012993c5690c
なぜ動かなくなったか
理由はErinyes・アクアノートキャンパスと同じで、IEとFlash Playerの終息です(詳しくは前の記事をどうぞ)。
①Ruffleを入れただけでは動かない ― Pleiades Company様製のErinyesを現代ブラウザで蘇らせて分かったこと【原作者様許可済・GitHub公開中】
https://qiita.com/shinohara-tsukasa/items/67a2bb1d333fcfae53e4
②Ruffleとの格闘 ― Pleiades Company様製のアクアノートキャンパス(Aquanaut Campus)を現代ブラウザで動かせました💪
https://qiita.com/shinohara-tsukasa/items/62d1fadbed3ad5ef060f
復元プロジェクト3
今作の復元作業は、ざっくりメモ程度ですが以下となります。
A. 画面の切り替えで一瞬暗くなる(blendTrans)
原作は SetBlend() で切り替えを準備し、SetImage() で画像を差し替え、GoBlend() で切り替える、という順で画面を変えています。中身はIEの blendTrans(Apply() で今の画面を撮り、Play() で混ぜる)です。
移植版の初期実装は、これを「透明にする → 差し替える → 不透明に戻す」で問題ないかなと置き換えていました。Erinyesと同じ考え方ですが、時の故郷では背景を切り替えるたびに下の黒が透けて一瞬暗くなっていました。スタッフロールの写真も同じやり方で切り替えていたため、2秒のフェードが見えずにパッと切り替わっていました。
blendTrans は「消してから出す」ではなく「旧画面と新画面を混ぜる」フィルタです。そこで、新しい画像のデコードが終わるまで今の画像を残し、その上に新しい画像を重ねてフェードインし、出きってから古い画像を外す形に作り直し、原作にそろえています。
教訓:blendTransの置き換えは「消して出す」ではなく「重ねて混ぜる」。旧画面は新画面が出きるまで残すこと。
B. テキスト枠が一瞬消える(1行ごとに作り直す枠)
テキストウインドウの枠だけが、ときどき一瞬消える症状がありました。原作は文章を1行表示するたびに枠画像をinnerHTMLで作り直していて、名前つきの行と地の文で画像を使い分けています(IE9以外のIEでは AlphaImageLoader を使う分岐になります。移植版はIE9用の分岐を使っています)。
// 原作 DrawText()(IE9用の分岐)
if (lbl!="") s="<img src='../sys/frame.png' width=640 height=220>";
if (lbl=="") s="<img src='../sys/frame0.png' width=640 height=220>";
WriteLayer(5,s);
使っていない方の画像がChromeのガベージコレクションで解放されると、次に作り直したときに読み込み直しになり、その間だけ枠が空になります。対策として原作が作り直すUI画像12種類を起動時に読み込んで持ち続けるようにしています。
教訓:「たまに一瞬消える」画像は、GCによる解放を疑う。
C. ムービー明けに前の場面が見える
最終章に入る直前、黒くフェードした後に前の場面が一瞬見えてから最終章に移っていました。原因は、移植した際にムービーを再生していたRuffleのプレイヤーを消すと、その下にムービー前の場面がそのまま残っていたためです(仕方ないところではありますが、仕様がずれるとこういうバグが出ますね)。
対処として、ムービーが終わったら次の文章までのシナリオを先読みし、画像が切り替わる場合はムービーの最後の色(1本だけ白、ほかは黒)で画面を覆ってから切り替えるようにしています。
教訓:上に重ねたものを消すときは、その下に何が残っているかを確認すること。
まとめ
| 原作の作り | Chromeで起きたこと | 対処 |
|---|---|---|
| 旧画面と新画面を混ぜて切り替える | 透明→差し替えだと黒が透ける | 旧画像を残して重ねる(A) |
| 1行ごとに枠画像を作り直す | GCで解放されると1フレーム抜ける | UI画像12種を常駐(B) |
| ムービーの後に次の場面へ切り替える | プレイヤーを消すと前の場面が見える | 先読みして最後の色で覆う(C) |
ファイルが元々分割されていた関係上今回の対応自体は相当楽な方でした🤔。
おわりに
前回記事に書いていた通り、ひとまず時の故郷の移植版を出すことができました。
ファイルサイズはZIPで約125MBです。今回も重いですがお願いします<(_ _)>。
※今回もChromeで動作を確認しています(他のブラウザは非推奨、動作保証せずでお願いします)。
不具合があった場合は、GitHubのIssueかREADMEのメールアドレスまでお知らせください。
※F2のデバッグログ(「コピー」でまとめてコピーできます)を添えていただけると助かります。
いい再現具合でしたら、できればGitHubのstarお願いします(Erinyes・アクアノートキャンパスのほうもできればお願いします👍)。
移植版のGithubは以下となります。
https://github.com/shinohara-tsukasa/TokinoFurusato
DL直リンクは以下となります。
https://github.com/shinohara-tsukasa/TokinoFurusato/archive/refs/heads/main.zip
