SVGマスターへの道

付録B3: テキストアドベンチャー風ゲーム - SVGで物語を紡ぐ

SVGは図形やグラフだけでなく、テキストベースのインタラクティブなコンテンツ、例えばシンプルなテキストアドベンチャーゲームやビジュアルノベル風の表現にも活用できます。このサンプルでは、SVGのテキスト描画機能とJavaScriptのイベント処理を組み合わせて、文字が徐々に表示されたり、クリックで物語が進行したりする基本的な仕組みを作成します。

デモ: 小さな冒険の始まり

下のSVGエリアをクリックして物語を進めてください。

▼ Next

使用した主なテクニック

豆知識: SVG vs Canvas (テキストアドベンチャー編) (English/日本語)

For text-heavy interactive experiences like text adventures or visual novels, SVG often has advantages over Canvas. SVG's text is real, selectable, and accessible, and can be easily styled with CSS. DOM-based UI elements (message windows, buttons) are straightforward to create and manage. SVG's `<foreignObject>` even allows embedding HTML for complex layouts. Canvas would require manual text rendering, layout, and hit detection for UI elements, which is more complex for this genre. Canvas excels when high-performance, pixel-level graphics and numerous fast-moving objects are the priority, which is less typical for traditional text adventures.

テキストアドベンチャーやビジュアルノベルのような、テキストが主体となるインタラクティブな体験には、CanvasよりもSVGの方が有利な点が多いです。SVGのテキストは本物のテキストであり、選択可能でアクセシブル、そしてCSSで簡単にスタイリングできます。DOMベースのUI要素(メッセージウィンドウ、ボタンなど)も直感的に作成・管理できます。SVGの<foreignObject>を使えば、複雑なレイアウトのためにHTMLを埋め込むことさえ可能です。Canvasでは、このジャンルのゲームには複雑すぎる、手動でのテキストレンダリング、レイアウト、UI要素のヒット判定が必要になります。Canvasが真価を発揮するのは、高性能なピクセルレベルのグラフィックや多数の高速で動くオブジェクトが最優先される場合であり、これは伝統的なテキストアドベンチャーではあまり一般的ではありません。

まとめ

このサンプルでは、SVGとJavaScriptを組み合わせることで、テキストが主体のインタラクティブなコンテンツ、いわゆるテキストアドベンチャーやビジュアルノベルの基本的な表現が可能であることを示しました。タイプライター風の文字表示やクリックによる物語の進行は、ユーザーを引き込む効果的な手法です。

SVGのベクター性を活かしたクリアなテキスト表示と、自由なグラフィック表現を背景やキャラクターに用いることで、独自の雰囲気を持つ作品を作り上げることができます。より複雑な分岐や状態管理、演出などを加えることで、本格的なゲームやインタラクティブなストーリーテリングへと発展させることが可能です。

これにて、「簡単なSVGゲーム集」および本サイト「SVGマスターへの道」の全ての学習コンテンツは終了となります。最後までお付き合いいただき、本当にありがとうございました! SVGの世界は広大で、常に新しい発見があります。ぜひ、ここで学んだことを土台に、さらなる探求を続けてください。

このページの要約

日本語

このページでは、SVGとJavaScriptを用いたテキストアドベンチャー風のサンプルを作成しました。物語のメッセージをSVGの<text>要素で表示し、JavaScriptで1文字ずつ表示するタイプライターエフェクトを実装。クリックイベントで次のメッセージに進み、簡単な選択肢によってシナリオが分岐する仕組みを取り入れました。SVGの描画機能で背景やキャラクター(シルエット)、メッセージウィンドウ、選択肢ボタンなども表現可能です。

English

This page created a text adventure-style sample using SVG and JavaScript. Story messages are displayed with SVG <text> elements, implementing a typewriter effect via JavaScript to show characters one by one. Click events advance to the next message, and a simple choice mechanism allows for scenario branching. SVG's drawing capabilities can also represent backgrounds, characters (silhouettes), message windows, and choice buttons.

Español

Esta página creó una muestra de estilo aventura de texto usando SVG y JavaScript. Los mensajes de la historia se muestran con elementos <text> de SVG, implementando un efecto de máquina de escribir mediante JavaScript para mostrar los caracteres uno por uno. Los eventos de clic avanzan al siguiente mensaje, y un mecanismo de elección simple permite la ramificación del escenario. Las capacidades de dibujo de SVG también pueden representar fondos, personajes (siluetas), ventanas de mensajes y botones de elección.

中文

本页创建了一个使用SVG和JavaScript的文本冒险风格示例。故事消息通过SVG的<text>元素显示,并通过JavaScript实现打字机效果,逐个显示字符。点击事件推进到下一条消息,简单的选择机制允许场景分支。SVG的绘图功能还可以表示背景、角色(剪影)、消息窗口和选择按钮。