Archive for the 'Linux萌え萌え大作戦' Category

「テイルている」のその後

ttsnap02
「テイルている」というパズルゲームを作った事がある。
2002年10月とかあるからもう11年も昔の話ですな。

当時は「天使のしっぽ」というアニメにどはまりしていて、それのファン活動の一環として作成した「同人ゲーム」といったところです。
Linux で動くゲームとして公開していますが、Windowsで動くものとして作成し CD-R に焼いて同人誌即売会で売るのが目的でした。まあ結局即売会で売れたのは10枚ちょっとという数字だったのでそれなりにしょんぼりして、後はオンラインでの配布とオープンソースとしての公開を軸とします。
絵は友人に描いて貰ったとはいえ、元キャラの意匠的なものはアニメから持ってきているものでして企画運営会社のワンダーファームさんに因るところが大きくその後あんましプッシュはしていません。

Windows版を作るのが目的でしたが、Linux とのマルチプラットフォームで作るというあたりがプログラマとしてのお楽しみでありそのために SDL というシンプルなライブラリを利用していた次第。
当初は Delphi 好きだったこともあって、ObjectPascal 互換のオープンソースコンパイラである FreePascal を選択し開発しています。当時 FreePascal はあんまり使われていなかったから、試しに使ってみたかったというのが理由ですが、その後あんましパッとしない扱いでしたね。

PSP の Homeblew が始まった頃、SDL がまっ先に移植されました。
シンプルな上にファウンデーションな部分をまとめてくれるので、大抵の組み込みハードには移植されます。
そこで PSP 上の SDL にテイルているを移植してみるために FreePascal で書かれてたコードを C言語(C++じゃないよ)に書き直してみました。2005年10月のお話。
以降、このC言語版がベースとなっていきます。

先にも書いたようにアニメのキャラなんで私個人の成果として振り回せず、あまり流布しないように細々と公開していた次第。そんな中でも GP2X に移植したものが一番広く見られていたのかな。
これが一部ではそこそこにうけてましてねえ。GP2X wiz にはバンドルアプリとして「テイルている」の画像差し替え版が入っていたくらい。
そのほかの部分でも細々とごひいきいただいていて、以前紹介した Android版 SDL を用いた移植例の様にあちこちで派生移植を見かける次第。

ドイツ在住の Martin Dieter という人もなんか妙に「テイルている」を気に入ってくれている一人で、昔から何かハードに移植したりする度にメールをくれる人物。テイルているの Wii移植版とかでググるとでてくる。
ちょい前まで明確な配布サイトを持っていなかったのだけれども、最近落ち着いてきたらしくダウンロードとかできるようになっているみたいなので宣伝しておこうというのがこの記事の意図。

BigVioSoft / TailTale

全部を見ているわけでは無いけれども Win/Mac/Linux/Android/NDS/PSP といったところがターゲットの様子。
Android版は GooglePlay からダウンロードできるらしく > GooglePlay
この Android版、起動時に http://u-ac.net から gamedata_high-v1.0.0.4.zip をダウンロードしてゲームのデータとするんだけれども、日本からだと回線が細くてダウンロードが終わらずに失敗することもあるみたい。ご注意。

Ver1.0 以降は SDLnet を使ったネットワーク対戦プレイの実装に力を入れているみたい。
WP_20131218_002

新しいキャラ絵があったらくれとか言われて追加で絵を渡してやったりしてます。

ほかにも色々データ差し替えたりして頑張っているみたいなので気が向いたら見てやってくださいな。

細々としたものではあるけれども、オープンソースならではな広がりかもね。



「ぴこぱこサイクル」とは


2009年は月1本のペースで「ぴこぱこサイクル」というオールドゲームのプレイ&レビュー動画を投稿していた。
月に1本といっても定期的に動画を作成するのは結構大変なことで、それでもなんとか12本を作成して昨年を終えることができた次第。一応、始めた時から月1の12回シリーズと決めていたので、予定通りの終了。
なんで突然プレイ動画を作り始めたのかというあたりにも理由があって、これはこれで以前からやりたかった積み残し作業なのですよ。
そんな思惑と過去の経緯を、誰に聞かれるでもなく勝手に書き連ねるのが今回の記事。
Read more…



拙作バッテリーゲージのQt移植版

qlm_batmon.jpg
年末に Satofumi氏より連絡いただいたのだが、私が昔Linux用に作成していたバッテリーモニターアプリを Qt Toolkit を使ってリファインしたものを作成されたそうだ。

サイトへGo! → 「APM ばってりーもにたー」

マルチターミナルをめざして Qt 版を作成したとの事なので、Linuxで動作することを保証するだけでなく Windows版のバイナリも提供されているのでお試しあれ。

今回の連絡をもらってありがたいなあと思うのはリファインしてもらったことよりも、10年も昔に作ったものが掘り起こされてかように使っていただけたところですなぁ。



ラジオサーバーをつくろう 〜 番組切り出し編 〜

前回は、24時間ノンストップでどんどん録音していくシステムを作成した。これだと、HDDがパンクするまでだらだらと録音していくだけなので、1日に1回これを整理し欲しいところを番組として切りだす仕組みを作成する。

このあたりはシェルスクリプトとrubyスクリプトでえいやと作成してしまえばよい。MacOSXにはrubyが標準で入っているあたりが極楽だのう。(むろんPythonやPerlも標準添付)
やることと設計としては以下のようになる。

■作業内容
・ビットファイルを作業領域に全ムーブ
・ビットファイル全てにwavヘッダーを付与
・プレーンwavをmp3に圧縮
・プレーンwavを全削除
・プレーンmp3を、全放送mp3フォルダにムーブ
・プレーンmp3で3日以上前の物を全削除
・録音リストからビットファイルを結合して番組ビットファイルを作成
・番組ビットファイル全てにwavヘッダーを付与
・番組wavをmp3に圧縮
・番組wavを全削除
・番組mp3をフォルダ分類

■作成するもの
1. cron起動する大家スクリプト (radio_works)
1.1. 作業フォルダの掃除
1.2. ビットファイルのムーブ
1.3. 各スクリプトの呼び出し
2. ビットファイルからmp3を作るスクリプト (str2mp3)
3. プレーンmp3管理スクリプト (radio_plane_mp3)
4. 番組リストワーク (radio_contents ruby)
5. 番組mp3のフォルダ分類スクリプト (radio_filing ruby)

録音リストというのは以下のような書式。

番組タイトル radio 1 21:30 30 AM

詳しくはLinuxのときの記事参照。
ちなみに録音ファイルには、月・日・時・分を8桁の数字にしたものがファイル名に付いており 01232330.str のようになっている。それを録音時間として扱っている次第。

細かい説明はすっとばして radio_works 以外のスクリプト。
radioserver.zip

これでおおよそそろったので一応のおしまい。



ラジオサーバーをつくろう 〜 録音編 〜

新しいラジオサーバーというか録音システムを作りたくて、制作を始めたというのがここまでのお話。
では、どんなものを作りたいと思ったのかというところから。

AMラジオをアナログで細々と録音するにはそんなにスペックが必要でもない。PCM録音で言うと 11025Hz 16bit mono といったあたりで十分なのです。そのビットレートで24時間丸一日録音したとすると 1GBちょっとになるのですな。
一昔前ならともかく、今時のコンピュータだと「どうということはない」数字。
そこで、富豪アーキテクトが発動するわけですな。
これまでエアチェックというと「何時から何時まで」と番組を狙い時間を決めてその間だけ録音していたわけです。ラジオサーバーはその「何時から何時まで」録音を自動化するためのシステム。これの問題は何かというと、スポーツ中継による延長に対応できない、ということと特別番組編成に弱いということ。別な言い方をすると、特別な状況に対応できず、録り逃したものは完全にあきらめるしかないということでもある。
これを富豪アーキテクトにかけると「じゃあ、24時間丸々録音すれば良いじゃん」という事になる。
「何時から何時まで」を録音するのではなく、全てを録音しておき「何時から何時まで」の部分を切り出すことでエアーチェックするというシステムを考えた。もし、時間移動があったとしても元の24時間の方から切り出し直せばいいだけだし、やっぱりあれが聞きたかったという要求にも1日以内であれば対応できる。

じゃあやってみようかー、と思ってもこの「24時間ノンストップで切れ目無く録音し続ける」といった部分が案外難しい。サーバーとしてコマンドラインから録音コントロールしたいという要求も相まって自作するしかなくなる。
Read more…



ラジオサーバーをつくろう 〜 これまで編 〜

以前Linux萌え萌え大作戦の中で「ラジオサーバー」なるものを作成した記事を書いた事がある。記事その1その2
ラジオサーバーといっても大それたものではなく、24時間つけっぱなしにしているラジオをこれまた24時間起動しているPCの音声入力端子に繋いで、タイマーで定期的に番組を録音しようというだけの話である。
当初はLinuxサーバーにこの機能を実装して使用していたが、2〜3台のサーバーマシン入れ替えの後、余っていた初代MacMini(PowerPC機だよ)に代替わりをしていた。
そんな、MacMiniが2年間の運用の後ハードウェア的に故障して壊れてしまう。今年9月の事であった。
7年間連続で動作し、録音を続けていたラジオサーバーが停止の時を迎える。

いい加減地上波のアニラジも聞かなくなってきており、アニラジはWEBの方に大体以降してしまったよなあという昨今。さて、この地上波ラジオを録音するためのラジオサーバーを新しく立てるかどうか悩み続けていた。
色々考えたあげく、ちとやってみたい事があったので再度構築することにした次第。
ここからシリーズで新世代ラジオサーバー構築の記事が続くのだけれども、その前に直前まで動いていたMacMiniでのラジオ録音環境について書き残しておきたい。いつか紹介しようと思っていたのだけれども、なんとなく機を逸していた話題なので。

Linuxで動作させていたものをMacOSXに持っていくといっても、MacOSXにはcronとrubyあるので大して難しいことはなさそうである。だが、cronから「録音」をさせようと言うところが少々の障害となった。MacだとGUIを伴う録音ソフトは多くあるのだけれども、コマンドラインやシェルスクリプトから利用できるNonGUIな録音コマンドがなかなか存在しない。
色々考えた末に取った手段が、シェルスクリプトからAppleScriptを実行し、AppleScriptでQuickTimePlayerをコントロールするといった手順。これだと録音時にQuickTimePlayerが画面に表示されてしまうけれども、一応cron起動のシェルスクリプトから録音をコントロールすることはできた。
QuickTimePlayerで録音すると基本 .mov ファイルになる。録音後ファイル形式を選ぼうとすると変換に時間がかかってしまうので、.mov 形式でどんどん録音だけして行き変換は後で行うことにする。
変換は後で一括して行うが、これはQuickTimePlayerを再度AppleScriptで起動し、.mov を読み込んで .aiff で保存するようスクリプトでコントロールする。それで一括して .aiff にしたあと lame でMP3にするといった流れ。この変換だけで1時間以上かかる作業だけれども、全自動なので特に問題は無し。

とまあ、ちょっと面白い形で構成していたMacMini版のラジオサーバー。今は、マシンクラッシュのためそのスクリプトとかも失われてしまったのである。
さて、次はどんな構成でラジオサーバーを作るのか、それは次の記事にて。



お待たせしております

マスターアップしますた…… ●∠\_



今日のぽえりな

表紙絵(と思われるもの)が付いた。
http://product.esbooks.co.jp/product/computer/top/cb?accd=R0027160

中身はこの絵から妄想してくらはい。



今はこれがせいいっぱい

http://product.esbooks.co.jp/product/computer/top/cb?accd=R0027160
(↑esBooksへのリンク)

今思い出して計算してみたら、放置オリエンテッドな当サイトも今年の初夏で五周年を向かえてしまうのですね。
五周年記念プロジェクト!!(いや、今まで忘れていた事をそんな大げさに言わなくても)

poe-lina.com はみんなが忘れた頃に更新されることでしょう。



今はこれがせいいっぱい

http://product.esbooks.co.jp/product/computer/top/cb?accd=R0027160
(↑esBooksへのリンク)

今思い出して計算してみたら、放置オリエンテッドな当サイトも今年の初夏で五周年を向かえてしまうのですね。
五周年記念プロジェクト!!(いや、今まで忘れていた事をそんな大げさに言わなくても)

poe-lina.com はみんなが忘れた頃に更新されることでしょう。




You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.