Category Archives: プログラミング

読:『実例で学ぶゲームAIプログラミング』

著者 : Mat Buckland
オライリー・ジャパン
発売日 : 2007-09-28

 日本語版2007年の本ですが、レビュー高評価だったので福袋欲しさに買いました。
 第1章より、数学と物理学の復習的な内容から始まっていて、すこしずつ読み進めています。
 サンプルはC/C++言語で書かれていて、ダウンロードできるソースコードはVC、同じものがVS環境向けにも用意されてます。
 VS環境を用意する気がないので、別の言語に書き移しながら勉強していくつもり。

 今月は福袋がつきます。去年は何を買ってたかなと思ったら同じくゲーム関連書籍でした。
 正月明けても即ポチせずに一呼吸置くのがプロの業。

DSC_1633

読:『Cocos2d-html5ではじめるモバイルゲーム開発』

買ってみました。

超有名なゲームエンジンCocos2dの派生版であるCocos2d-html5です(まだよくわかってない)。同じく有名なゲームエンジンであるUnityにも興味あるんだけど、開発環境がLinuxサポートしてないので、こちらに。

本命はC++で書くCocos2d-xだけど、市場の書籍がバージョン2系ばかりなので(現在の最新版は3らしい。よく知らない)、3系の書籍が出揃うのを待つとして、とりあえずはHTML5でCocos2dに触れてみようかなと。

ちょっと試してみます。

LLまつりに行ってきたよ

DSC_0176

Lightweight Language Conference 2013

 2013/08/24にLLカンファレンスの11回目である『LLまつり』に参加してきました。毎度の事ですが、LL○○○の○の部分は毎回変わります。で今年は「まつり」だってこと。

 僕は2010年のLL Tigerではじめて参加してそれから今年で4回目の参加になります。このカンファレンスは毎回趣向を凝らしていて、これまではしばらくホール会場で行なってましたが、今年はフラットな会場でかつ、マルチセッション形式で進行しました。

 僕自身はWebで食べてるわけじゃなくてLLも趣味で使うくらいだけど、技術者が集まるイベントとか参加すると開発の原動力が補充されるというか、なにかそういう一種の盛り上がりを得られるので毎回楽しんでます。

オライリーガチャ

DSC_0184

 毎回の事ですが、本買ったりおまけもらったりガチャ回したりしました。

DSC_0181

 オライリーガチャは他のイベントでも登場してるはずなので見たことあるかもしれない。

 まつりの内容に全く触れてないけど以上です。ジャ。

No tags for this post.

AndEngine スプライトを表示する

「困ったらネコを出せ」

 AndEngine勉強中。
 AndEngineExamplesのコードを読み始めました。

 前回、空っぽのアプリを作ったので、それをベースに画像(スプライト)を表示します。

blue_cat

 表示する画像は何でも良かったのですが、「困ったらネコを出せ」とゴースト的な何かが頭の中で囁くのでネコを描きました。ネコに見えない?勘弁してよ。
 高さと幅は64ピクセルの正方形画像です。このファイルは、以下のパスに入れておきます。

/assets/gfx/blue_cat.png

実行結果

 画面サイズ480×800のNexus Sのエミュレータです。
 画面中止よりやや右下にズレて表示されていますが、これについては後で説明します。

CatFaceSpriteActivity

コードの解説

[gist id=5927407]

CatFaceSpriteActivity クラス

 前回作ったMainActivityの名前を変えました。
 スプライトの格納先 ASSET_BASE_PATH と ファイル名 IMAGE_FILE_NAME を追加で定義しています。

onCreateEngineOptions()

 描画領域の設定を行います。前回から特に変更ありません。

onCreateResources()

 スプライトを読み込みます。

  • Line:35
     スプライトの保存位置を設定しています。
  • Line:37
     読込用のバッファを定義しています。第2, 3パラメータにてバッファのサイズを与えていますが、以下を守るよう使用してください。

    • 読み込む画像サイズと同じかそれ以上のサイズとする
    • 2のべき乗数とする。as
  • Line:37
     ファイル名を指定して読み込むスプライトを設定します。
  • Line:41
     設定したスプライトを読み込みます(描画はまだ)。
onCreateScene()

 描画します。
 前回は背景色を定義しただけでしたが、スプライトの描画処理を付け加えています。

  • Line:48
     第1、2パラメータでスプライトを描画する起点座標を与え、スプライトオブジェクトを生成しています。スプライトの左上の点(x:0, y:0)がこの起点とマッチします。
     今回は単純に高さと幅を2で割った値(中点)としています。このためスプライトが中点より右下寄りに表示されています(正確には、x軸y軸共に32ピクセル分ずれています)。
  • Line:50
     生成したスプライトを、Sceneに追加しています。

おわり

 各種メソッドの使い方についてまだ深くわかっていない点があります。勉強を続けます。
 次回はネコを動かします。ムービングネコです。

フリーのスプライト画像集『SpriteLib』

SPY

WidgetWorx > SpriteLib

 2Dゲームの背景やキャラクター等に使えるフリーの(でもライセンスはよく読もう)8bitテイストのスプライト画像集『SpriteLib』を配布しています。

 ちょっとバタ臭い感じもするので用途は限られてしまいますが、サンプルプログラムの作成でとりあえずの画像が欲しい時とか使えます。
 もちろん、このスプライト使ってゲームをリリースしても問題ありません。

 元は、オライリーの『HTML5 Canvas』内のサンプルで使用されていて知りました。

著者 : Steve Fulton
オライリージャパン
発売日 : 2012-01-21

Gunma.web #13に行ってきたよ #gunmaweb

2013.5.18 Gunma.web #13に参加してきました。
(レポートもっと早く書けるようにしたい)

前回に引き続き会場は高崎です。イーヨー高崎イーヨー。
では、さっそくLT/発表のメモを。

「Enalica」(LT) @ivoryworks
自分のLTです。スライドはココで見てね。
前座ですね。前座じゃないと耐えられない内容。ぜんぞじょのいか。

「Localize」(LT) @yterajima
Localize。つまり我々日本人から言えば日本語化の事ですね。
OSSの世界で翻訳作業してると色々と話が舞い込んできたりして良い事たくさんあるよというお話が聞けました。
レビューアになってとか本書いてとか。とか。
でも翻訳大変そうだナー。

「クラウドを使ってみた話」(LT) @clicktx
Saas、Paas、Iaas、etc…いろいろクラウドあるけど今回はIaasのおはなし。
GMOクラウドの使用感とか教えてもらいました。
あと、以前のGunma.webにも遊びに来てくれた@pinktx_jpという人がけしからんコンテンツ置いて怒られちゃったナッコラー!みたいな1人称なんだか3人称なんだかわからないお話も聞けました。

「GTDでタスク管理」(LT) @caz0404
preziというプレゼン資料を作成できるサービスの紹介でした。
タスク管理のおはなし。タスクは細分化していこう。細分化しないと終わりがはっきりとしなかったり、何を処理すればそのタスクが解消されるのかわかりにくくなるよ、という話なのですが、聞いてる方はpreziで描かれた資料に興味津々で、質問の時間もpreziの事ばかり。
はい、大成功です!
あと、たぶん@caz0404は前回を経てLTにハマりだしているのではないかと思っています。

「プロメテウスとわたし」(LT) @track8
プロメテウスってCMであのスペースジョッキーがチラ見せ的にアレされてたナニです。
ぐんまRuby会議01の前日譚という事でした。僕はRuby書かないのでRuby界隈の事には疎いのですが皆楽しそうですね。あと@kanayannetおめでとうございます。

「プログラムウィッチーズ」(LT) @tsurumau
今回は警戒しながら聞いていたため、ある程度の事では驚きませんでしたが、聞きながら書いてたメモに「パンツ」と書いてありました。来場の方々にパンツを見せつけるという事態になってたような気がします。
発表中、脳波を検知するヘッドセットに注目が集まってましたが、個人的にはOpenGL使ったコンピューターヴィジョンのプログラムの方がおもしろかったです(最初ちょっとうまくいかなかったけど)。「まずは防御から」と言っていました。
それと、最後に脳波でプログラムタイプし始めてビビったと思ったと思ったら嘘でしたとか言い始めたのであとで叱りつけたほうがいいです。

「windows store app を HTMLベースで作ってみた」 @kanayannet
HTML&JavascriptでWindowsストアのアプリを作るはなしです。
JavascriptからWindowsのAPIを叩くという事でした。
オーバーヘッドが気になりますが実際どうなんでしょか。早いのかな。
見せてもらったアプリは、ブルーベリーの栽培記録を残すアプリでした。
こ、これは確かGunma.web #10で発表してた、XcodeでiPhoneアプリをつくったよ、で作ってたブルーベリーの栽培記録を残すアプリから派生したブルーベリーのアプリなのでは!
自分が使うアプリを作るのは情熱を継続しやすくて良いです。

———
LT/発表の後、各自自己紹介して談話するという前回と同じパターンです。
自己紹介を後にするのいいかもしれない。
先にLT/発表を介することで場の緊張が少しほぐれて、いきなり自己紹介するこれまでのパターンより話しやすい気が。

2次会は、Gru – 群馬県高崎のイタリアンレストラン「グルー」。雰囲気良いお店でした。
別の用事があって3次会出られませんでしたが、後で聞いたら何だか楽しそうだったので次回リベンジしたい。

では。

Gunma.web #12 で喋って来ました『NuukJam』 #gunmaweb

 2013/02/09 のGunma.web #12にて、『NuukJam』というLTを行ってきました。
 いつものかんじです。

Gunmaweb#12 nuuk jam from ivoryworks .

 「こういうのつくったよ」系。

 今回は小さくて邪悪なプログラムを書きました。

NuukJam
http://nuukjam.ivoryworks.com/

 ヌークジャム。
 Googleの短縮URL APIを用いて、URLにデータを埋め込むWebアプリです。

これね。
URL Shortener API

 テキストだけでなく、画像データもイケます。大きめのデータは、複数の短縮URLとして保存してます。

 今回のアイデアはオリジナルのつもりでしたが、このエントリ書いてる間に調べてみたら、もっと昔に同じ事してる人が沢山いました。

URL短縮サービスを利用したオンラインストレージ

 こちらは大きなデータを僕とは別の方法で保存しています。

 ”URL Shortener base64″とかで検索すると色々出てくるから
 海外でも書いてる人沢山いそうですぬ。
 わたしまけましたわ。

 さて、GitHubにソースおきました。

ivoryworks/nuukjam

今回のアプリ、Gunma.web用の書き下ろしなので、しばらく触る予定ありません。
現在動いてるのがそのまま載ってます。

APIキーもベタ書きしたままコミットしてあります。

ちなみに、というか、実は、このURL ShortenerのAPIは、1日の利用制限数が少なくなりますが、APIキーなくても使えます(後で知った)。

『JOJOしりとり』v1.2.0 のリリース

JOJOしりとりロゴアイコン

JOJOしりとり – Google Play
https://play.google.com/store/apps/details?id=com.ivoryworks.android.jojoshiritori

Androidアプリ『JOJOしりとり』のversion 1.2.0 をリリースしました。

今回のリリースは、いくつかの収録語の誤記修正、コンテニュー時の不具合改修、および新規に82単語を追加しています。

新規追加の単語は1部から5部までの「アイテム」「技法/能力」「人名」「場所」の用語です。
6部から7部の用語については次回バージョンアップで対応します。

先日のリリース時、次のルールを打ち立てましたが、今回のバージョンより、後半部のルールを方向修正させて頂きます。すみません。

■特殊ルール2:類似語の使用禁止
 通常のしりとりでも、「ジョセフ」が既出の状況で「ジョセフ・ジョースター」を出したらよい顔をされないでしょう。
 本ゲームではこの場合、「ジョセフ」を使用したら以降、「ジョセフ・ジョースター」は使用できないルールとしています。
 更に特殊なルールとして、上記ルールを拡張し、同じものを指す語もその対象としています、例えば同じ人物を指す「リサ・リサ」と「エリザベス・ジョースター」など、他方を使用したらもう一方は使用不可となります。
http://www.ivoryworks.com/blog/2012/11/1970

今回のバージョンより、「リサ・リサ」と「エリザベス・ジョースター」は個別の用語として使用することが可能となっています。「ジョセフ」「ジョセフ・ジョースター」の関係についてはこれまで通りです。

No tags for this post.

スマートフォン車載ホルダーをデバッグで用いる

 これ、車のダッシュボードにスマートフォンを固定するためのホルダーですが、Androidアプリのデバッグ時に使ってます。

 Androidアプリの開発中、PC上で動作するエミュレータは遅いので(GPSやセンサーを用るアプリの場合に面倒というのもある)実機デバッグが中心になります。
 その際、単に机上に置いてでも見れなくはないのだけど、画面が水平になるので見にくかったりしてストレスに。
 また、単に出力を見たい場合などはまだ良いとしても、操作を伴う場合はどうしても手に持ってしまって、つまり操作するのに両手を使うという事になるんですね。

 で、この手の商品を机上に設置すると、チョーカイテキ。
 片手で済むし、画面見やすい。
 強く吸着するので大抵の操作には耐えられます。
 また、机上じゃなくて壁面でも(表面の凹凸具合による)設置可能なので、色々とオススメデスヨ。

No tags for this post.

Gunma.web #9 に行ってきたよ

 2012/05/26 Gunma.webに参加してきました。(ATND)

 これまで毎回LTしてたのですが、今すこし大きなものを作っているので今回はパスさせて頂きました。ごめんね。

 それでは皆さんの発表に対する簡単なコメントを。

「”とてか”ではじめるなんとか活動」@vestige_
 とちぎテストの会議02の告知を含めた発表です。忍者式テスト。
 発表の中で言われる破壊者であるところのテスト屋さんに自分もコテンパンにされた事たくさんありますが、毎回感謝しています。
 テスト屋さんいなかったらたぶん生きちゃいられないでしょう。
 ちなみに第1回目のレポートが技評さんにありました。なるほどー。

「とちぎテストの会議」レポート
http://gihyo.jp/news/report/2010/08/0301

「だから、作れる」とRO廃人は言った @parrot_studio
 Ragnarok Online のために自分が作ってきたユーティリティ群の紹介からLUAで書けるゲーム中で動作させられるAIの紹介など。
 「自分が欲しいの作る」でつまり「欲しいから作れる」というお話。
 これ大切。経験上「たぶんこれ作ったらみんなウケるだろう、作ろう」より「こういうの欲しい、作ろう」の方が良いものが出来ると思っています。
 例えば、『釣り人SNS』というものを企画するとします。その釣りじゃないです。
 釣り場に行って、スマートフォンのカメラかざすとARで前に来た人のコメントなんかが見れたり、友達になれたりするサービスです。
 「このポイントで釣ったよ。写真これだぜ見ろよ」みたいな。セカイカメラのようなGUIでね。時間を超えてコミュニケーションが取れます。すごい。
で、これを自分が作るとしたら断言するけどロクな物にならないです。なぜかと言うと自分は釣りをしないから。ニーズを正確に捉えられないし、情熱を継続できないためです。そういうことです。

「LDDによるWebアプリケーション開発」@pinktx_jp
 今回全部持ってった感のあるLT。
 リビドー駆動開発。性的衝動を開発の推進力とするという崇高な開発スタイルです。
 スクリーンにダメな画像出てきました。あと「リビ道」とか言ってました。先生。
 基本的に最初から最後までダメなのですが、上記RO廃人の人も言ってた「自分が欲しいの作る」という点で欲望全開の開発はとても良いと思います。

「WebエンジニアのためのCコンパイラ」@tsurumau
 JavaScriptでCコンパイラを実装するというおはなし。
 これ、どうしてCコンパイラを実装するかというと、これまで色々な人が、JavaScriptでUnix実装したり(つまりブラウザ上でOS動かしたり)、他の言語のコードを動かしたりしてますが、それらのように直接的にエミュレートするのではなく、Cコンパイラを実装してC言語で書かれた言語そのものを動かす、という事なんです。壮大過ぎるぜ。
 あと発表中、「来月号のSoftwareDesignでviの記事書いた」みたいな事をサラリと言ってビビったのですが、というか、数日前に「来月号またエディタかよ胃もたれするぜまたかよ」みたいに書いた手前、とりあえず謝っておきました。
 でも内容読むまで前言撤回しないしない。ゲェップ。

「<video> で JS と CSS」 @kanayannet
 videoタグによるメディアプレイヤーのコントローラをJavaScriptとCSSでカスタマイズするというデモを含めた発表でした。
 前回(#8)持ち込んだ自分のLTでvideoタグ必要だったこともあり、実は少し勉強していました。
 オライリーの『HTML5 Canvas』にvideoタグについて少し書かれています。
 videoタグ、まだ発展途上なのでクロスブラウザ対応大変そうですが、要求仕様によっては今回のような対応をしなければならないのかな。

 次回はLT持参できるといいなー。