[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
Discord 上でオンラインセッションをするに際していくつか難しい点がある。その中の1つが視覚的マップの共有が難しい、という点だ。
これを解決するべく、以下のようなものを作ってみた。
この画像は http://hiyo-hitsu.sakura.ne.jp/sn/map.cgi?place=Aさん,,敵,,Bさん,
を表示したものである。URL と画像を比較するとお分かりいただけると思うが、これは URL によって誰がどこにいるのかを管理し、サーバ側で動的に画像を作成している。
サーバサイドは CGI で perl を動かしている。サーバは以下のようなコードとなっている。ただし、同じディレクトリに「font.ttf」と「garden.png」を配置している。前者の font.ttf は「適当なフォントをアップロードしてくれ」と言いたいが私が使っているレンタルサーバだとアップロード可能なサイズの制限にひっかかってしまった。なのでサブセットフォントメーカーを使って記号とひらがな、カタカナ、JIS第一水準漢字のみにしぼっている。一覧はググれば割と出てくる。第一水準漢字+記号+ローマ字+カタカナ+ひらがなとか。
#!/usr/bin/perl use Image::Magick; use CGI; $cgi = CGI::new(); $place = $cgi->url_param('place'); @places = split(/,/, $place); @xPos = (100, 280, 400, 260, 130, 20); @yPos = (100, 100, 250, 400, 400, 250); $filename = "garden.png"; my $image = Image::Magick->new; $image->Read("$filename"); for ($count = 0; $count < 6; $count++) { $image->Annotate( text=>@places[$count], x=>@xPos[$count],y=>@yPos[$count], fill=>"#000000", strokewidth=>3, antialias=>true, font=>"font.ttf", pointsize=>40 ); } print ("Content-type: image/png\n\n"); binmode STDOUT; $image->Write("png:-"); print "\n\n"; undef $image; exit();
後はこの URL を容易に操作・ポストできるツールがあれば現実的に Discord 上でセッションできるかもしれない。
ただいまコメントを受けつけておりません。