RSS2.0

友人とハッカ村的な場を作ってアクションゲーム制作に挑戦しました

ここ最近休日を有効活用しきれてないなーと感じていたので、先週の土曜日に、友人と集まってそれぞれ自分の作業をするハッカソン的イベントを開いてみました。お題は特になく、自分で決めた目標にむかって刺激し合いつつも、もくもくと作業していこうぜ、という主旨です。ハッカソンならぬハッカ村です。

友人達は iPhone 用ゲーム作りを進めたり、ドールのメイク(?)をしたり、南方海域へ出撃したり、まどマギ叛逆を見たりとそれぞれ個性あふれるテーマを選んでいました。私は気分転換をかねてアクションゲーム的なものを作ってみました。RPG には幾度となく挑戦しては敗れたり破れなかったりしていますが、アクションゲーム制作は(おそらく)はじめてで楽しかったです。
slashfox.png
できあがったのがこちら。
グラフィックを用意する時間があまり取れなかったので、適当に描いても味があるように見せかけられる和風テイストにしています。かなり昔に見つけてブックマークしていたいい感じの水墨画ブラシがここで役に立ちました。

製作期間は、キャラクターや背景などの画像素材の用意も含めて 1 日に区切っていました。ハッカ村はお昼頃集合で開始だったので、午前中に家で必要になりそうな画像はひととおり準備しています。プレイヤー画像 4 点、敵画像 1 点、背景画像 1 点、ライフゲージ 1 点をだいたい 3 時間強で描いています。

最終的なゲームの仕上がりとしては、果たしてゲームに成立しているかと言われるとかなり微妙なレベルなのですが、これまでのゲーム開発での蓄積もあって、それなりの速度感で作っていけたんじゃないかと思います。ゲームのメインロジック、テクスチャー合成、キーボード入力処理、キャラクターのアクションの扱いなんかは別で作っているゲームのエンジン部分をそのまま利用しています。ちょっと斬撃エフェクトの演出効果を変えたいという場面で、テクスチャーのパラメーターを 1 つ変えるだけで加算合成や乗算合成に切り替えられたりというのは、開発環境としてはなかなか使い心地が良かったです。

続きを読む ゲーム製作雑記  コメント (0)  2014/05/22 08:52:14

svn リポジトリをローカルにコピーしてから git リポジトリに変換する

今年になって、個人的なコードを書き溜めていた svn リポジトリを徐々に git に移行しています。

私はフリープランでもプライベートリポジトリを無制限に作れることから、数年前から assembla を使っていました。しかし最近(??)になってフリープランで作れるリポジトリ数に上限が設定されたようで、新しいリポジトリが作れなくなっていました。有料プランへ乗り換えられればよかったのですが、リポジトリ数をふまえて開発予算(お小遣い)と相談した結果、やむなくお世話になった assembla から bitbucket に移住することにしました。念のため強調しておきますが、これまでながらく愛用していたことからもわかるとおり、assembla 自体に不満があるわけではありません。あくまでやんごとなき事情(お小遣い)のため、泣く泣くの別れとなります(涙)。

移住先として選んだ bitbucket はリポジトリ数の上限こそないものの、コミッターの総数が 5 人までに制限されています。私は他人に見せられるコードは別途 github に置いているので、プライベートリポジトリについてはこの制限はまったく考慮しなくてよいものでした。

 assembla の svn リポジトリに git svn clone するとエラーで落ちる

assembla から git への引越し作業にはすこし面倒でした。
ネットの各所に資料があるとおり、svn リポジトリを git リポジトリに変換するには git svn clone を使えばいいのですが、assembla 上の svn リポジトリにこのコマンドを使うと以下のようなエラーが発生し、変換処理が異常終了してしまいました。
...
r372 = 4b5404a5643c5d3refref081c06c3acaa2e8eeb (refs/remotes/trunk)
Checked out HEAD:
  https://subversion.assembla.com/svn/momokan/myrepo01/trunk r372
error closing pipe: 不正なファイル記述子です at /usr/libexec/git-core/git-svn line 0.
error closing pipe: 不正なファイル記述子です at /usr/libexec/git-core/git-svn line 0.
詳細がよくわかないのですが、時間を置いて再度実行してもここで落ちてしまうため、別の手段で移行を進める必要がありました。

続きを読む Linux  コメント (0)  2014/05/13 22:15:33

Pushy Grandma ver 0.3 を公開しました

一度中毒症状から抜け出しても、ふとしたきっかけで再びクッキーを焼きたくて焼きたくて仕方なくなってしまうという恐怖のクリックゲーム Cookie Clicker にて、せめてプレイヤーの身体だけは守ろうというコンセプト(嘘)で去年公開したPushy Grandma をバージョンアップしました。
Pushy Grandma は Cookkie Clicker のクッキーを自動でクリックし続ける Grease monkey スクリプトです。
pushyGrandmaVer0.3.png

今回のアップデートでは通常のノーマルクッキー、ゴールデンクッキーに加えてクリスマスのトナカイが自動クリックされるようになりました。
おばあちゃんがトナカイを屠るようになりますので、ぜひぜひご利用の方はアップデートしてみてください。

ダウンロード

Greasemonkey 用 Cookie Clicker 自動クリックスクリプト
Pushy Grandma ver 0.3

インストール手順は前回と同様になります。
そのまま ver 0.3 のリンクを開いてもらえればバージョンアップできるかと思いますが、もしうまくインストールできないようでしたら、一度 Pushy Grandma を削除してから再度インストールしてみてください。

続きを読む WEB 技術  コメント (7)  2014/04/26 13:55:39

Git 実行時にブランチとユーザー情報を表示してみる

最近になって、私が関係しているプロジェクトもだいたい Suvbersuin から Git に移行してきました。Git 自体は便利ですし、おもしろい機能もいっぱい詰まったとても魅力的なツールなのですが、Git を使う上ではいくつか気をつけなければならない点があります。

1 つは、自分が今どのローカルブランチにいるかを意識しなければならないことです。
Git では複数のブランチを切り替えて渡り歩くということが頻繁にあります。develop ブランチで開発していたけれど、少し大きめの実装をしなければならなくなると専用の別ブランチを切ってみたり、そこで日をまたぐと翌日には develop にいるものと思い込んで別ブランチで develop のコミットをしてしまったり、という失敗をたまにやってしまうのです。
もちろん、まず git branch を実行して確かめる習慣をもつことが重要ですが、いちいち git branch をタイプするのが何気に面倒なのです。

もう 1 つ、Git でコミットをする際のユーザー名とメールアドレスの設定忘れです。
Git でコミットするとコミットログに自動で user.name と user.email が追記されますが、これはリモートリポジトリからソースコードを取ってきた後自分で設定しなければなりません。git config に --global オプションを設定すれば設定値を共有できるそうですが、私は違うアカウントでいくつものリポジトリを自分のマシンに置いておくことが多く、それぞれのリポジトリで正しい名前でコミットされているかをいつも気にかけています。

ということで、より快適な Git ライフを手に入れるべく、git コマンド実行時にブランチ名やユーザー情報を表示するシェルスクリプトを書いてみました。
gitinfo.png

続きを読む Linux  コメント (0)  2014/03/06 00:01:52

Maven pom.xml のバージョン番号を Java プログラムから取得する

LWJGFont ver1.1 の開発で、LWJGFont のバージョンを埋め込んだ別アーティファクト用の pom.xml を動的に生成しなければならない、という場面がありました。私は Java プロジェクトの管理に Apache Maven3 を使っているので、LWJGFont 自体のバージョン番号は LWJGFont プロジェクト自身の pom.xml に記載されています。ところがバージョン番号自体を扱いたいのは LWJGFont のロジックだったので、状況としては、Java プログラムから自身の Maven プロジェクトの pom.xml に書いてあるバージョン情報を取得する、ということになります。

pom.xml.png

開発中にいろいろ調べてみたのですが、簡単にとれるということではないにしろ、実現方法はいくつかありました。それぞれ違った特徴があるのでどれを採用するかはプロジェクトの置かれた状況によっても違ってくるでしょうが、LWJGFont での採用理由も含め、備忘録がてらに書き残しておこうと思います。

Maven プロジェクトのバージョンを Java から取得する方法

・java.lang.Package.getImplementationVersion() を利用する
・maven-antrun-plugin でファイルにバージョンを書き出す
・exec-maven-plugin でファイルにバージョンを書き出す
続きを読む LWJGFont 開発  コメント (0)  2014/03/04 07:45:53

LWJGFont ver 1.1 をリリースしました

2014/2/25 にリリースした LWJGFont の更新版 ver1.1 をリリースしました。
LWJGFont は LWJGL 上で日本語文字列表示を簡単に実現するための、LWJGL の 3rd パーティライブラリです。

ver 1.0 では日本語文字列を表示するのに使いたいフォントのフォントファイルを手元に用意する必要がありましたが、ver 1.1 ではそれに加えて Java VM が認識しているシステムフォントも利用できるようになりました。とにもかくにもすぐに LWJGFont を使ってみたいという場合に OS にインストールされているフォントを使って日本語表示を実装できるようになりました。

LWJGFont_ver1.1.png
また ver 1.0 の Windows 環境で発生していたいくつかの不具合を修正し、安定性が向上しています。コマンドラインから実行する際に出力されるメッセージは実行環境にあわせて日英で切り替わるようになりした。
ひとまず先週の初期リリースで見逃してしまっていたバグについてはひと通り修正してありますので、すでに ver 1.0 をご利用頂いている方はぜひ最新版への乗り換えをお願いいたします。

なお、ver 1.1 へバージョンアップする際には再度 LWJGFont を実行し、フォントを jar ファイルに変換する必要があります。
加えて、net.chocolapod.lwjgfont.AbstractFont はクラス名が net.chocolapod.lwjgfont.LWJGFont に変更されているので注意してください。
続きを読む LWJGFont 開発  コメント (8)  2014/03/02 11:38:52

LWJGFont ver 1.0 を公開しました

2014/2/25 に、LWJGFont ver 1.0 をリリースしました。
LWJGFont はお手持ちのフォントを使って手軽に文字列表示をするための LWJGL のサードパーティライブラリです。あらかじめ任意のフォントを任意のサイズで画像イメージに描き出しておき、実行時にはそれを切り貼りすることで文字列を表示させます。
特に LWJGL で日本語表示(テクスチャーマッピング)する際の壁となる日本語文字画像の用意、日本語文字画像の切り貼り作業をサポートしているため、java.awt.Graphics.drawString() の感覚で文字列を表示することができます。
lwjgfont_top.png
LWJGFont は等幅フォントに加え、プロポーショナルフォントにも対応しています。プロポーショナルフォントは文字によって文字幅が異なるため、手動でテクスチャーマッピングしようとすると手間がかかりますが、LWJGFont ではプロポーショナルフォントの文字幅についても自動計算して表示するため、手軽に綺麗な文字列表示を実装することができます。

2014/03/02 追記

LWJGFont ver 1.1 がリリースされています。
Windows 環境での不具合を修正した安定版となりますので、そちらをご利用ください。

ダウンロード

LWJGFont は公式ページからダウンロードすることができます。

また、maven をご利用の方は、pom.xml に以下の設定を追加することで入手できます。
  <dependencies>
...
    <dependency>
      <groupId>net.chocolapod</groupId>
      <artifactId>lwjgfont</artifactId>
      <version>1.0</version>
    </dependency>
...
  </dependencies>

LWJGFont のしくみ

簡単に LWJGFont のしくみについて触れておきたいとおもいます。

LWJGFont は任意のフォントで、アルファベット、ひながなカタカナ、数字、常用漢字約 2000 文字をすべて描きこんだ画像ファイルを生成します。また、画像ファイルのどこにどの文字が書き込まれているかというマッピング情報を持ち、実際に Java プログラムから各文字を表示するための class ファイルも作り出します。これらのファイルを jar ファイルにまとめるので、LWJGFont と LWJGFont が生成した jar ファイルをクラスパスに追加することで、LWJGL から好きなフォントでの文字列表示ができるようになります。

詳しい使い方についてはチュートリアルを用意しましたのでそちらをご覧下さい。

続きを読む LWJGFont 開発  コメント (1)  2014/02/25 08:39:05

LWJGFont の開発をはじめました。

LWJGL で好きな True Type Font を使うためのライブラリ LWJGFont を作り始めました。

以前書いた記事: LWJGL で日本語フォントを使ってみるで、Java AWT の Graphics を使って文字列を描き、それを Image からテクスチャーに随時変換して表示していく方法についてご紹介しました。Java SDK の java.awt.Font を使って True Type Font を読み込むので、比較的簡単な実装で日本語のテキストを LWJGL で表示することができます。ただ、OpenGL ではテクスチャーの生成にそれなりのコストがかかるため、表示する文字列が変わるたびにテクスチャーを再生成するというのはリアルタイム性に課題が残るやり方でした。

LWJGL をラップする形で実装されている Slick2D では TrueTypeFont や UnicodeFont というクラスが用意されているそうですが、サンプルプログラムを見る限り、これらのクラスも java.awt.Font を利用して文字列を表示しているようです。.ttf ファイルの読み込み自体は実行時に行われるようなので、おそらく同じような仕組みで動いているのではないかと思います。

そうは言っても、文字列表示はゲームでも重要な要素であるわりに、LWJGL で実現しようとするとそれなりに敷居が高いのが現状です。そこで、以前の日本語フォントを表示する方法とは少し違ったアプローチで、開発者にとって、もう少し手軽に文字列表示を実現しようというのが LWJGFont 開発のゴールになります。

lwjgfont.png

ライブラリを準備する際にひと手間加えなければならないのですが、文字列の表示処理自体は以下のようなシンプルな呼び出しでできるようになります。
MyFont myFont = new MyFont();

myFont.drawString("捲土重来!!!", 100, 400, 0);
LWJGFont で提供するのは、Java AWT などでよく見かける drawString(String, flaot, float, float) というメソッドです。第一引数は表示する文字列、第二~第四引数は表示する座標(X, Y, Z)になります。

今週にかけてそれなりに時間をかけていたので、ようやくひとまずの完成形が見えてきました。
今回は開発の経緯とコンセプトを少し書くだけですが、そう遠くないうちに LWJGL のサードパーティライブラリとして公開できるのではないかと思います。

2012/02/25 追記

LWJGFont ver 1.0 を公開しました。公式ページをご覧ください。
続きを読む LWJGFont 開発  コメント (0)  2014/02/13 23:59:31

Fedora 20 をインストールした後に行うひと通りの初期設定

月曜日にしていた Fedora 20 のインストール作業に関する記事です。
Fedora 20 の UI はまた少しずつおしゃれに進化していて、これなら職場の PC も遠くないうちにバージョンアップすることになりそうなので、Fedora のインストール後に私がいつもやる初期設定をまとめて書いておきたいと思います。

初期設定は UI 関連のことを中心にしています。私の Fedora の用途は開発環境としてなので、エンジニア的なこともそれなりに含まれていますが、java とか ant とか maven とかのインストールは割愛しています。もし同じようなことをやりたいとなった時に、参考にしていただけるものがあれば嬉しいです。

fedora20_setup.png


続きを読む Linux  コメント (0)  2014/01/16 00:21:22

Fedora 17 にて SCSI 接続のドライブで CD を焼いてみる

2013 年 12 月 17 日に Fedora 20 の Final Release がリリースされました。
Fedora プロジェクト 10 周年記念だそうで、Fedora Core が出始めた頃からのユーザーとしてはなんとも感慨深いものです。
私は何気にめんどくさがりで、PC の置き換えなどがないとなかなか OS の入れ替えはしないのですが、せっかくなので家の開発環境を更新してみることにしました。今使ってる Fedora 17 は 2013 年 7 月 30 日にサポート切れてますしね!

さっそく Fedora 公式ページから Live 版を取ってきたのはいいものの、cdrecord コマンドで ISO イメージを焼こうとしたところ、こんなエラーが出ました。
# cdrecord -scanbus
wodim: No such file or directory. 
Cannot open SCSI driver!
For possible targets try 'wodim --devices' or 'wodim -scanbus'.
For possible transport specifiers try 'wodim dev=help'.
For IDE/ATAPI devices configuration, see the file README.ATAPI.setup from
the wodim documentation.
ドライバーが使えないですエラーです。
ていうか SCSI って!久しぶりに聞いたよ!そういえば SCSI 接続だったのを今思い出したよ!

Dropbox や github なんかでファイルを管理するこのご時世に、CD や DVD メディアを焼くなんてことも少なくなってきました。
備忘録がてら、Linux 環境で CD / DVD を焼く方法について書き残しておきたいと思います。

続きを読む Linux  コメント (1)  2014/01/13 12:50:49
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2018, 4>>
1234567
891011121314
15161718192021
22232425262728
293012345