Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9438

LINEボットでゲームブックを作った、ついでにシナリオエディタ作ったので完成

$
0
0

前回の投稿( LINEボットでゲームブックを作ってみた )で、ゲームブックを作ったのですが、ついでにシナリオエディタも作りました。
これで完成です。

画面はこんな感じです。

シナリオ作成画面です。
テキストを入力したり選択肢を入力したり、背景画像を決めて、重ね合わせる人物画像を指定したりします。

image.png

こっちが、画像ファイルのアップロード画面。

image.png

こっちが、音声ファイルのアップロード画面。

image.png

GitHubにソースコード一式上げておきます。

pururuba/LinebotGamebook
 https://github.com/poruruba/LinebotGamebook

勉強になった機能

これまで個々に勉強してきましたが、それらを総ざらいした感じです。
(私自身はこれが目的でして)

・ファイルのアップロード、ダウンロード機能
・AWSのS3アクセス、DynamoDBアクセス
・vuejs-paginateの利用
・オーディオファイル再生
・LINEのMessaging API、Flex Message

サーバ側エンドポイント

前回の投稿でもエンドポイントを用意していましたが、作り替えた部分もあるので、改めて整理します。

  • /linebot : LINEボット用エンドポイント

api/controllers/linbot/index.js が処理します。
LINEのMessaging APIの処理をして、Flex Messageのレスポンスを返しています。
詳細は、前回の投稿を参照してください。

  • /linebot-image/* : 画像処理用エンドポイント

api/controllers/linbot-contents/index.js が処理します。
背景画像の名前と、人物画像の名前をHTTP GETで受け取って、重ね合わせた画像(image/png)を返します。
詳細は、前回の投稿を参照してください。前回からエンドポイント名を変えましたが、処理内容は同じです。

  • /linebot-upload : ファイルアップロード用エンドポイント

api/controllers/linbot-contents/index.js が処理します。
シナリオエディタでのみ使います。
画像ファイルや音声ファイルのバイナリファイルのアップロードを受け付けます。

  • /linebot-contents : シナリオエディタ用エンドポイント

api/controllers/linbot-contents/index.js が処理します。
シナリオエディタでのみ使います。
画像ファイルや音声ファイルやシナリオファイルのリストを返したり、削除を受け付けたり、シナリオファイルをアップロードしたりダウンロードしたりします。
とはいっても、基本的な処理しかしていないので、理解してしまえば単純です。

今回ちょっと頑張って、AWSのAPI GatewayやLambdaで動作し、コンテンツ類はS3やDynamoDBで保持できるようにしたつもりです。
フォルダやファイルで動作させるのが一番手っ取り早いですが、切り替える場合は、以下のいづれかにしてください。

フォルダやファイルで動作
 const AWS_ENABLE = false;
 const FILE_ENABLE = true;

AWSで動作
 const AWS_ENABLE = true;
 const FILE_ENABLE = false;

上記の互換をとることは結構勉強になりました。

あと、sharpというnpmモジュールを使って画像の合成をしているのですが、いろいろできそうで、今後も使っていきたいなあ。

ブラウザ側処理

シナリオエディタのメインは、ブラウザ側の処理Javascriptです。

Webページは、GigHubの
 public/gamebook/index.html
にあります。

画像ファイル・音声ファイルのアップロード・削除処理が多く見えますが、それ以外は、エンドポイントの呼び出し処理や、Vueに処理してもらうデータの変更処理です。
ほとんどのことは、Vueがユーザの操作と内部で保持するデータの処理を同期してくれるので楽ちんです。

詳細は、GitHubを参照してください。
Vueの機能をフルに使っているので、Vueの知識が必須です。それさえわかっていれば、理解できるはず。。。。

以上


Viewing all articles
Browse latest Browse all 9438

Trending Articles