Hatena::ブログ(Diary)

5.1さらうどん Twitter

2012/01/16(Mon)

iPhone Dev Sap勉強会でKobold2Dについてセッションしました

| 08:25 |

iPhone Dev Sap勉強会 Jan, 2012 : ATND

参加してきました。

また、iOS/Mac向け、ゲームフレームワークのKobold2Dについてお話させて頂きました。

機会を頂きありがとうございます!


スライドは発表時より加筆しております。口頭で話したけれど、重要なところ・基本的な情報が抜けていたので。

@さんにも突っ込んで頂きましたが、至らぬところが多いなぁと。


今回、とりあげたKobold2Dは、日本国内ではまだ誰も使っていない+取り上げていないようなので、良い情報を提供できたのではないかと思います。

本当は何かサンプルゲームを作っていきたかったんですけどね!


Kobold2Dに関する日本語の文献は、今のところ、僕が作った資料と、公式の日本語ドキュメント、ドキュメント訳者によるスライドの3つしかないようです。

日本語ドキュメントは、まだほとんど翻訳作業が進んでいないようなので、興味のある方は、やはり本家ドキュメントを参照されることをオススメします。

Home - Kobold2D™ - Kobold2D

Kobold2D ドキュメント - Kobold2D™ 1.0 Documentation (Japanese) - Kobold2D

Kobold2d users_guide_japanese



今回、発表前にちょこちょこ使ってみて、GlobalGameJamに向けての準備ができて良かったと思います。

本格的に使ってみるのはGGJだと思うので、GGJ終了後に開発したゲームについて記事を書きたいと思います!

『GlobalGameJam2012 in 札幌』開催します! - 5.1さらうどん

このスライドを読んで、少しでもゲーム開発仲間が増えたら幸いです。


今回、中心になっていた@さんともお話しさせて頂いたのですが、iPhone Dev SapはiOS開発では最先端の内容を扱っているのに、今までのセッションの資料などが共有されていなくてもったいないなぁと思った。

@notoroidさんによる、ARC(Automatic Reference Counting)についてのセッションを楽しませて頂いたのですが、続き物だったこともあり、前提知識や前段階の知識がない人には理解しづらい内容になっていたのではないかなぁと。

やっぱり、自分で触ってみないと、ハマるところや、便利さなどは体感しづらいと思う。

iPhoneの勉強会って、プログラマ以外の方も結構いらっしゃるので、セッションの内容としては浅く広く、最大公約数を取る感じになってしまうので、深い内容が扱いづらいですね。


最近Objective-Cばかり書いているけど、プロダクトがあんまりないので、年度内にゲーム1本出したいなぁと考えています。

来月から本気出す。

mswarmswar 2012/01/21 16:42 題記のスライド以上にニューススタンドを押し込めることに衝撃を受けたww

mswarmswar 2012/01/21 16:42 題記のスライド以上にニューススタンドを押し込めることに衝撃を受けたww

gigi-netgigi-net 2012/01/21 16:43 > id:mswar

本番の発表もそっちの方がウケ良かったですよ!
生でNewsstand入れ実演しました。

トラックバック - http://d.hatena.ne.jp/gigi-net/20120116

2012/01/01(Sun)

『GlobalGameJam2012 in 札幌』開催します!

| 15:22 |

皆様、新年明けましておめでとうございます!

2012年があなたにとって良い年となりますように。


さっそくですが、1月27日から29日までの3日間、北海道大学において、GlobalGameJam2012 in 札幌を開催いたします!

f:id:gigi-net:20120101151421p:image

GlobalGameJam2012 in 札幌 : ATND


GlobalGameJamは、世界中のゲーム開発者が集まってゲームを作る世界規模のイベント。

開催期間中、世界同時にテーマが発表され、そのテーマに沿ったゲームを各チームが開発、48時間で完成させて、世界中の参加者からフィードバックをもらう、世界中のゲーム開発者のためのお祭りです。

2009年から始まり今年で4回目。札幌では2回目の開催になります。

f:id:gigi-net:20120101151422j:image

The Global Game Jam | January 27-29, 2012


インテルやACMなんかも協賛しており、昨年は6500名のゲーム開発者が参加しました。

プログラマはもちろん、デザイナや3DCGモデラー、コンポーザーなど、様々なゲームに関わる職種の方が参加しています。

昨年、札幌会場では30名により5つのチームに分かれ、5ほんのゲームを開発しました。


昨年は、同じく僕らが主催した北海道大学による札幌会場と、東京工科大学による東京会場、九州大学による福岡会場の3カ所で開催されました。

今年は、国内の会場には東京・宮城・大阪が加わり6会場に。ご興味をもたれた方は、お近くの会場で是非ご参加ください!

企画だけでも参加できるため、特別なスキルは必要ありません。この機会に是非!

Hokkaido University | The Global Game Jam



僕は、去年はPyGameで開発したのですが、今年はKobold2dを利用して、iPadのゲームを開発しようかなぁと考えています。

Home - Kobold2D™ - Kobold2D


cocos2dに関しては資料がたくさんあるのですが、Kobold2dは、少なくとも国内ではまだほとんどの人が目をつけていない感じなので、この機会に習得したいと思います。


ゲーム開発に興味のある方は、この辺の記事も併せてどうぞ!

CoffeeScript+enchant.jsで始めるゲーム開発入門 - 5.1さらうどん

『cocos2dで始めるiPhoneゲーム開発入門』を放送しました - 5.1さらうどん

2011/12/22(Thu)

CoffeeScript+enchant.jsで始めるゲーム開発入門

| 17:11 |

CoffeeScriptからenchant.jsを叩いて使ってみたところ、スゴい速さでクロスプラットフォームなゲームができあがって、非常に開発がしやすい感じだったので、今回の開発についてまとめてみました。

この方法でゲームを開発すると

  • 実行環境構築が不要で
  • クロスプラットフォームで
  • スマートフォンでも動き
  • 開発しやすく
  • 凄まじい速度で

ゲーム開発ができます。

enchant.jsとは、国産のJavaScriptで実装されたゲームフレームワークです。


ドキュメントやサンプルが充実しており、初学者でも敷居が低いのが特徴です。

enchant.js - HTML5 + JavaScript Game Engine

ゲームを作ってみました

僕の所属している、札幌ゲーム制作者コミュニティKawazで、enchant.jsを利用した初心者向けのゲーム開発イベントがあったので作ってみました


新感覚シューティングゲーム、Jubiol -ユビオル-

Jubiol

giginet/Jubiol - GitHub

Kawaz - JUBIOL -ユビオル- 〜新感覚シューティング〜


弾を数える新感覚シューティングゲームです。

ルールの詳細や遊び方などはリンク先をご覧ください。


CoffeeScriptとは

  • JavaScriptにコンパイルすることができる
    • 文法ミスの場合、コンパイルできないため、エラーに気付きやすい
    • シンタックスチェックに通るJSが生成される
      • minifyに失敗するなどの問題が起きない!
  • 見た目はRubyとかPythonっぽい
    • うつくしい!
    • JSがゴミのようだ
  • JSで欲しかったような機能が言語レベルで実装されている
    • リスト内包表記とか
    • 変数展開とか
    • undefinedチェックとか
  • プロトタイプ継承を意識せずにオブジェクト指向ができる
  • うつくしい!

文法などはこちらをどうぞ

CoffeeScript

今日から始めるCoffeeScript | tech.kayac.com - KAYAC engineers’ blog

CoffeeScript基礎文法最速マスター | 株式会社インフィニットループ技術ブログ

環境を構築する

当方はMacユーザーなので、他の環境については各自ググってください。

Homebrewをインストール済みの方は、

brew install node

brew install coffee-script

brew install yuicompressor

辺りをインストールしておくと良いと思います。(MacPortsでも大丈夫!)

yuicompressorについては任意ですが、後述するCakefileで、JSをminifyするのに利用しています。

エディタの設定を整える

当方はVimmerなので、他のエディタ使いの方は自力でなんとかしてください。

vimの場合、vim-coffee-scriptというプラグインがオススメです。

Bundleなどで導入すると良いと思います。

kchmck/vim-coffee-script - GitHub

Cakefileを書く

ゲームを作り始める前にCakefileを記述してみましょう

Cakefileとは、CoffeeScriptで記述できるMakefileのようなもので、コンパイル時の動作を定義しておくこともできます。

今回は、コマンド一発で

  • 複数のcoffeeファイルを結合する
  • 結合したファイルを元にJavaScriptのコードを生成する
  • 生成されたJavaScriptのコードをminifyする

という一連の動作を行ってくれるように記述してみましょう。

例えば、以下のようなCakefileを用意します。

その後

cake compile

を実行すると、定義したCoffeeScriptのソースコードを全て結合し、minifyされたgame.min.jsが自動で生成されます。

(このCakefileを実行する場合、yuicompressorをインストールしていないと正常に動作しません)


また、エディタの設定を変えて、cake compileの実行をバインドしておくと、キー一つで、変更をゲームに反映させることができます。

例えばvimの場合

~/.vim/ftplugin/coffee.vimを以下のように定義しておくと良いでしょう。

このように設定しておくと、特定のキー(今回はCtrl+C)を押すと、Cakefileが存在する場合、cakeを実行し、存在しない場合はjsを自動的に生成します。

あらかじめこのような下準備をしておくと、高速に動作確認が行えるようになります。

また、vimスクリプト中のCoffeeMake!はvim-coffeescriptのコマンドのため、前述のステップでインストールしていないとこのままでは使えません。

基本的なゲームを作ってみよう

ここでさっそくCoffeeScriptからenchant.jsを利用して、ゲームを作ってみましょう。

わずかこれだけのコード量でキャラクターの移動が実装できてしまいます。

JavaScriptを用いて書くよりも、簡潔に書けることがわかります。

また、enchant.jsのクラスをCoffeeScriptの文法で継承して利用することができるため、あたかもクラスベースのオブジェクト指向のように開発することができます。

詳しくはenchant.jsのドキュメントをご覧ください。

Class Index | JsDoc Reference


作ってみて雑感

  • 凄まじい速度でアイディアが形にできる
  • 環境構築不要
  • クロスプラットフォーム。スマートフォンでも動く!
    • ↑のゲームは5~6時間×3日ぐらいでできた気がします。
  • すぐに作れるし、遊んで貰いやすい!
  • ファイルを分割しても簡単に結合できるので、大規模開発にも向いている
  • もうJS書きたくない
  • enchant.js使いにくい
    • クラス構造が謎
      • 例えば、scaleやrotateはSpriteのフィールドなので、LabelやGroupを回転したり拡大したりできないとか
    • ところどころバギー
      • Safariで動かなくてハマる
    • イベント周りが貧弱
      • 一時的にイベントを退避させたりができない
      • そのため、ポーズなどを実装するときにイベントドリブンだと難しい
    • いつか自分でゲームフレームワーク作りたいですね

ついでにライブラリも作ってみました

enchant.jsが機能不足だったので作ってみました。

kwing Documentation - GitHub

汎用的なフレーム管理(Timer)とベクトル演算(Vector)をカプセル化したクラスです。

また、Arrayをprototypeで拡張しまくったライブラリもあります。

オマケ:nodeunitでテスト駆動する

ライブラリを作るときにTDDを行うためにnodeunitを利用したのですが、日本語の記事がほとんどなかったため、ついでにまとめてみます。

caolan/nodeunit - GitHub



nodeunitをインストールしてしまっても良いのですが、プロジェクト内に組み込んでしまうのがオススメです。

具体的には

git submodule add git://github.com/caolan/nodeunit.git node_modules/nodeunit

git submodule init

git submodule update

をプロジェクトrootで実行すると良いでしょう。



次に、テストコードを記述します。


以下のように、testを引数とするユニットテストを書いていきます。

テストコードの最後にtest.done()が必要ですのでお忘れなく。


その後、テスト実行用のコードを記述します。ここではnodeunit.coffeeとします。


このとき、nodeunitはnode_modulesディレクトリ直下に置いておきます。

nodeのモジュールロードが若干取っつきにくいですが、詳しくはこの辺に書いてます。

node.jsのモジュールロードのルール - hakobenikki# - subtech


その後

coffee nodeunit

を実行すると、テストが走ります。

test_calc.coffee

✔ testCalc - testSum

✔ testCalc - testSub

✔ testCalc - testMul

✔ testCalc - testDiv

OK: assertions (5ms)

このようにすることで、CoffeeScriptでテストを記述することができます。

ゲーム開発の場合、TDDで開発するのは難しいですが、知っておくと役に立つかもです。


ここに書いてある情報は、nodeunitのREADMEとほぼ同じ内容なので、そちらを見てもらった方が詳しくわかります。


まとめ

みんなゲーム作ろうぜ!

あと、面白いと思った方はCoffeeScriptでenchant.jsよりも良い感じのゲームフレームワークを作ってくださると僕が喜びます。

suztomosuztomo 2011/12/23 12:55 面白そうですね。
iPhoneで動かなかったので報告です。