2011年05月10日

ゲーム開発入門?

最近暖かくなってきて、仕事中は半袖のシラッチです。

今日は表計算ソフト Excel と、このブログで何回か登場している
Ruby, Python とを連携するためのモジュール、ライブラリについて
紹介したいと思います。

 ・Ruby
  spreadsheet
  http://rubyforge.org/projects/spreadsheet/

 ・Python
  pyExcelerator
  http://pypi.python.org/pypi/pyExcelerator/
  python-excel(xlrd、xlwt、xlutils)
  http://www.python-excel.org/

ゲーム開発をする際に、昨今のゲームエンジン等に見られるような、
ゲーム内オブジェクトの視覚的な配置等が行えるツールのようなものを
スクラッチで作ろうとすると、かなり手間がかかるかと思いますたらーっ(汗)

またゲームによっては、ビジュアルなエディタを必要とせず、ステージや
シーンのセットアップ時に静的なパラメータがあれば十分、というものも
ありそうです目

そんなときに Excel を使ってゲーム内パラメータを定義すると便利かもしれません。
Excel から出力した csv ファイルを、ゲーム内パラメータに変換するコンバータを
作成してもいいかもしれませんが、上記で紹介しているモジュールを用いれば
もう少し楽にデータの抽出、変換が行えそうです。

最新の技術情報にアンテナをはっている方にはレトロな内容の記事かもしれません。
ですが、これからゲームを作ってみたい、もしくは初めてゲーム開発に取り組んでいるという方は
表計算ソフトとライトウェイトランゲージ(Ruby, Python, etc) の力を
借りてみれば、強力なレベルデザインツールがつくれるかもしれませんねわーい(嬉しい顔)

またゲーム用のツールだけでなく、工夫すればスケジュール管理や仕様書などに
関する作業でも、自動化できるものが見つかったりするかも?

それではまた手(パー)

posted by 管理人 at 14:28 | ソフトウェア紹介

2010年11月22日

プログラムを取り巻く環境

こんにちは、ナカムラです。

今回は、最近お気に入りの、Akinator(アキネイター)という iPhone アプリを紹介したいと思います。

Akinator とは、膨大なデータベースを利用した、人工知能の一種です。
Akinator の楽しみ方は、次の通り。

1 頭の中で、任意の人物を思い浮かべる。
2 Akinator が出してくる設問に、「はい」「いいえ」「わかりません」「たぶんそう」「たぶん違う」の中から選択し、答えて行く。

これだけで、設問に答えて行くうちに、自分が頭の中で想像している人物の名前を特定されてしまうのですひらめき
もっとも、ある程度名前が公に知れた人物に限りますが、ドラマやマンガのキャラクターまでカバーしています手(チョキ)
「そりゃあ、何問も質問されれば、いつかは当てられるでしょ?」
と思われるかもしれませんが、ほとんどの場合20問〜30問程度の間に当てられてしまいます。
その質問の切り込み方には驚かされることも多く、1問ごとに正解に近づかれていることが分かりますたらーっ(汗)
まるで、名探偵に追いつめられていく犯人のような心境に陥ることも、しばしばですあせあせ(飛び散る汗)



このAkinator、基本的なアルゴリズム自体はさほど新しいモノではありません。
思い起こせば20年ほど前、私が所属していたコンピュータのクラブで Akinator めいたプログラムを作り、人工知能として発表している人たちがいました。
その頃はまだ、今ほどネットワークも発達していませんでしたから、データベースもなかなか成長しません。
最初の内、プレイするのは人工知能を作成したプログラマ本人だけですから。
そんな状態で友人、知人にプレイしてもらっても、まず正解を当てることは叶わず、
「つまんねexclamationドコモ提供
と言って飽きられ、ますます人工知能のデータベースは充実しない・・・という負のスパイラル台風に陥っていました。

しかし時代が進むに連れ、この人口知能アルゴリズムにとって、理想的な環境がやってきましたexclamation
それは、誰もが簡単にこのプログラムにアクセス可能な環境…すなわちインターネットと通信端末が普及した環境ですぴかぴか(新しい)

「プレイヤーが想像している人物を当てられなかった場合は、その人物の情報を新たに追加登録する」

という人工知能の育成を、多人数で同時並行的に行えるようになったわけです。
これにより、人工知能は飛躍的に成長を遂げ、その結果正解率が向上し、評判を聞きつけた人が新たにプレイする…
という好循環が生まれるようになったのですグッド(上向き矢印)


然るべき環境を与えてやれば成長するなんて、まるで生き物のようですよねクリスマス

今では成長しすぎた感があるので、「いかに Akinator に"わかりません"と言わせるか?」を楽しんだりしています。

Akinator は、iPhone アプリだけでなく、ブラウザ上で楽しめるサービスもあるようです。
興味のある方は、人工知能の育成に協力してみてはいかがでしょうか?手(グー)


posted by 管理人 at 13:58 | ソフトウェア紹介

2010年11月19日

ネットでの動向

こんばんは。平尾です。
今年もボジョレーヌーボーが解禁されましたねイベント
普段はビール派ですが、たまにはワインも美味しそうでするんるん

こういったイベントは全国的に行われていると思うのですが、
盛り上がり方は全国どこでも均一なのでしょうか?
また盛り上がる期間とは?
そういった情報をある程度検索できるシステムがあるんですねサーチ(調べる)

Google Insights for Search

検索したい単語や国、期間などを入力すると、
ネット上での検索数や動向、地域別の人気度などを知ることが出来ますひらめき
地域の指定も全世界から日本、また日本の特定の地域など細かく設定できますリゾート
まだベータ版のようですが、問題無く使えそうです手(チョキ)

こういった大量のデータがほぼリアルタイムに検索できるとは
本当に便利な世の中になったと関心してしまいます!ぴかぴか(新しい)


開発したゲームの動向をこのサイトで注目して一喜一憂する…
そんなのも楽しそうですわーい(嬉しい顔)


トレンドを追いかけるのが好きな方は一度使ってみてはいかがでしょうか目

posted by 管理人 at 20:25 | ソフトウェア紹介

2010年10月27日

GUIライブラリ

寒いですexclamation
今朝、あまりの寒さに厚手のダウンジャケットを引っ張り出してきたのですが、
出社中の電車の中で(アレ・・・自分だけ浮いてる?)と思ったシラッチです。


さて、今回は少しGUIライブラリの紹介をしてみたいと思います。
ゲームを開発していると、データのコンバートなど、自動化されるフローに組み込まれるツールは基本的にGUIである必要はないと思うのですが、どうしても視覚的に確認しながら作業できるツール(ゲーム内オブジェクトの配置等)が必要なケースもあります。
そんな時に紹介するライブラリが役立つかもしれませんわーい(嬉しい顔)

■Qt
http://qt.nokia.com/title-jp?set_language=ja&cl=ja
C++ で記述されたアプリケーション・ユーザインタフェース(UI)フレームワークです。
GUIツールキットとして知られていますが、コンソールツールやサーバのような非GUIプログラムでも広く使用されているそうです。
(ちなみにQtの呼称はキュートなのですが、ついついキューティーと呼んでしまうのはヒミツです。)
Adobe Photoshop Elements、Autodesk Maya 2011、Skype、Google Earth、Opera(Web ブラウザ)等々、様々なソフトウェアで使用されているそうです。安定感がありそうですねぴかぴか(新しい)
コミュニティーにより多言語のバインディングが開発されていて、JavaからQtを利用できるようにしたQt Jambi、QtをRuby、Python、Perl、C#などから利用できるようにしたオープンソースのAPIが存在します。
商用版, LGPL版, GPL版 等様々なバージョンがあり、それぞれ適応されるライセンス形態が異なるようです。
興味のある方は調べてみて下さい。

■wxWidgets
http://www.wxwidgets.org/
クロスプラットホームなウィジェット・ツールキットで、Qtと同じくC++で記述されていて
Perl、Python、Ruby など様々なプログラミング言語向けにバインディングが用意されています。
単なるウィジェットだけでなく他のOSに移植しやすいように文字列操作やファイル管理、HTTPによる通信を行う機能まで用意されています。
各コンポーネントの描画をOSに行わせているため各々のOSに調和したコンポーネントを表示できるのが特徴です。
実際に wxPython(wxWidget の Pythonバインディング)でツールを作っていた事があるのですが、サンプル・デモがとても充実していて、実現したい処理をすぐに確認できて作りやすくかった印象があります手(グー)


他にも Foxglui、Java の Swing 等々調べてみると様々なライブラリが存在する事が分かってきます目
自分に合うライブラリを見つけてみるのもいいかもしれませんね。

ゲームプログラマを目指している学生さんは、自身の作品に役立つツールが作れるだけでなく、
いろいろなライブラリやフレームワークに触れて、精通することでソフトウェア設計のバランス感覚も養えると思います。
是非挑戦してみて下さい手(パー)

posted by 管理人 at 17:12 | ソフトウェア紹介

2010年05月17日

構文解析

今朝は少し肌寒いなぁと思って厚手の上着を着て家を出たのですが、意外と暖か…暑いexclamationふらふら
長袖のシャツの袖をまくって仕事をしているシラッチです。

この土日に、オープンソースのプロジェクトのソースを読んでいて、ふと
既存のソースコードを、特定のコーディングルールに従ったフォーマットに置き換えたり
関数の解説コメントのテンプレートを、特定のフォーマットで付加させたりできるような
C++の構文解析ツールがあれば、いろいろ便利そうだと思い、調べていたので
紹介したいと思います。

まず、伝統のある、というか定番なのが lex と yacc のようです。
lex http://ja.wikipedia.org/wiki/Lex
 「テキストを任意の規則に従って単語に切り分けていくプログラム」を作ってくれるプログラムです。
yacc http://ja.wikipedia.org/wiki/Yacc
 「単語毎に分けられたデータを順番に処理していくプログラム」を作ってくれるプログラムです。


lex/yacc を Python から使えるようにしたモジュールって無いのかな?と思ったらありました。
PLY http://www.dabeaz.com/ply/
他にも Python モジュールで pyparsing という構文解析モジュールがあるようです。
pyparsing http://pyparsing.wikispaces.com/


Eclipse という Java で記述されたオープンソースの IDE のプラグインで
C/C++の開発をできるようにする CDT というプラグインがあるのですが
CDT のパーサーもC++構文解析に利用できそうです。
『CDT ベースのエディターを構築する、第 3 回: 基本的な CDT 構文解析』
http://www.ibm.com/developerworks/jp/opensource/library/os-ecl-cdt3/


う〜ん、色々選択肢がありそうですね目
ここに挙げている以外にも様々な構文解析ツールがありそうで
調べれば調べるほど発見があり、奥が深い分野だと実感しましたぴかぴか(新しい)


<おまけ>喫茶店
構文解析ツールではないですが、以下のようなツールもソースコードの作成や解析に
役立ちそうです。

Artistic Style(astyle) http://astyle.sourceforge.net/
 C/C++/C#/Java ソースファイルを自動で再インデント&整形するためのツールです。

DoxyComment http://doxycomment.sourceforge.net/
 Doxygenというソースコード中の特定のフォーマットのコメントを基に
ドキュメントを生成するツールがあるのですが、Doxygen準拠のコメントの
テンプレートをソースコードに挿入できる Microsoft Visual Studio の
add-in です。
※add-in は Standard より上位のバージョンでなければ使えないので Express では利用できません。


posted by 管理人 at 15:56 | Comment(0) | ソフトウェア紹介

2010年02月15日

Wild Magic

こんにちはexclamation
先週からGOD EATERをプレイしているシラッチです。

始めは戦闘不能になってしまっても仲間(NPC)が復帰させてくれるので、
クリアするだけなら難しくないのかなexclamation&questionと思っていたのですが、
難易度が上がってくると、クリアするのも大変に…もうやだ〜(悲しい顔)
戦略を練りつつ少しずつ進めていますわーい(嬉しい顔)

今日は、Wild Magic というリアルタイム3Dグラフィックスエンジンを
紹介したいと思います(僕も最近知ったばかりですが…あせあせ(飛び散る汗))。
http://www.geometrictools.com/

ソースコード(C++)が公開されていてるクロスプラットフォーム
(Windows、Linux、Macintosh) のグラフィックスエンジンです。

リアルタイム3Dゲームエンジンや物理、衝突判定についての書籍で
取り上げられているようです。
http://www.geometrictools.com/Books/Books.html

ソースコードの量が多く、クロスプラットフォームということもあって
少し読み辛いソースコードを想像していたのですが、各プラットフォームや
レンダリングAPI(DirectX,OpenGL等)のコードが殆どファイル単位に
まとめられていて、個人的に整然としていて読みやすいという印象を受けました。ぴかぴか(新しい)

3Dのゲーム制作に興味のある方には面白い実験材料、教材だと思います。
僕も空いた時間に自宅で少しずつ触っているところです。

C++の文法を理解していてゲーム制作を行ったこともある、または
ゲームエンジン制作に興味がある、という学生さんに是非触って
頂きたいと思って紹介してみました。
ではまた〜手(パー)

posted by 管理人 at 17:41 | Comment(0) | ソフトウェア紹介

2009年09月25日

どこでも使えないとね

東の地では東京ゲームショウ2009が開催されていまするんるんるんるん
今年のテーマは、「GAMEは、元気です。」とのことわーい(嬉しい顔)
どのくらい元気だったかは、来週以降の日記に期待しつつ・・・・
こんにちは、ハラです。

今まで何度かRubyスクリプトの便利さを書いてきましたが、
実は、その全てに共通した不便さもあったりしますがく〜(落胆した顔)
それは、RubyをインストールしているPC上でしか実行できないことですふらふら

Rubyは、記述したスクリプトを直接実行するため、独立した実行形式ファイル(Exeファイル)が作られません。
(もちろん、そこが利点の1つだったりはするのですがひらめき
スクリプトを実行するPCにRubyをインストールすれば全て解決しますが、
インストールできない or したくない というケースもありますバッド(下向き矢印)

そこで、スクリプトファイルから実行形式ファイルを作り、RubyをインストールしていないPCからでも実行できるようにしていきましょうexclamation×2

と、いうことで「Exerb」というツールを使ってみたいと思いますぴかぴか(新しい)
(インストール方法などのマニュアルは上記リンク先のホームページにあるので見てみて下さい。)

Exerbを使って、Windows実行形式ファイルを作るには2つのやり方があります。
  1スクリプトファイルにExerbのコマンドを実行する
Ex. コマンドプロンプト上で「exerb sample.rb」
2設定情報を記述したレシピファイルを作ってExerbコマンドを実行する
Ex. コマンドプロンプト上で「exerb sample.exy」
1は、対象のスクリプトが他のスクリプトやライブラリを使っていない時に選択します。
特に準備が要らないので簡単です。

2は、他のスクリプトやライブラリを使っている場合、文字コードを指定したい時などに選択します。
そのためにレシピファイル(exyファイル)を作成する必要がありますが、「mkexy」というコマンドで自動生成してくれます。便利ですねるんるん

ただ、より細かい設定が必要な場合は、自分で編集する必要がありますメモ
レシピファイルの編集が難しいかもしれませんがあせあせ(飛び散る汗)
慣れるとかなり簡単に実行形式ファイルが出来上がりまするんるん


どちらの方法にしても、数回のコマンドを実行すれば実行形式ファイルが完成します。
これで、RubyをインストールしていないPCからでも使えるようになりますねわーい(嬉しい顔)

自分のPCでは使えるけど、他の人のPCで使えないからRubyを敬遠していたみなさん。
Exerbを併用して、存分に使ってみてはいかがでしょうかexclamation&question


そういえば、難点が1つ。
実行形式ファイルには、Rubyのインタプリタやライブラリが内包されますmail to
そのため、機能に対してファイルサイズがとても大きくなります。
実行するには問題になりませんが、メールなどで送る場合にはご注意を〜。

posted by 管理人 at 11:28 | Comment(0) | ソフトウェア紹介

2009年08月04日

ニシキヘビ

暑いですねぇ〜…しろくまアイスが恋しいシラッチです。

ヘキサドライブ日記の過去の記事で何度かスクリプト言語
Ruby について触れられていますので、今回は
Python(パイソン) の紹介を少ししたいと思います。

そのまま訳すとニシキヘビの意味で、Python言語のマスコットや
アイコンとして蛇が用いられていたりします。
ビルトインの豊富なライブラリがあり、即実行できるので
ちょっとしたプログラムを試すには最適ですわーい(嬉しい顔)
また、外部のモジュールを追加することで本格的なGUIの
プログラムも作成できますパンチ

僕は電卓を用いるような感覚で、Python の対話モード
(コンソール上でプログラムを書き、ソースコードを
逐次解釈しながら実行できるモード)でテストプログラムを
書いたりすることがあります。

例えば、2000年1月1日から今日(2009年8月4日)まで何日経ったか
知りたいなぁという場合は次のように書くと…

 from datetime import date
 print date.today() - date(2000, 1, 1)

 >出力結果
 3503 days, 0:00:00

3503日経過ということが分かります目
ちなみに自分の生年月日で実行してみると10000日を超えていて少し凹みました…たらーっ(汗)

曜日を知りたい場合はこんなかんじです。

 from datetime import date
 wd = ('月', '火', '水', '木', '金', '土', '日')
 print wd[date(2000, 1, 1).weekday()]

 >出力結果
 土

学生のみなさん、ドラクエ9やモンハン3等で忙しいかもしれませんが…
この夏休みに、ひとつスクリプトを習得してみてはいかがでしょうか〜手(パー)

※上記の出力結果は Python2.6.1 で実行したものです。
 バージョンの違いにより表示が異なったり、エラーとなる可能性がありますのでご了承下さい。


posted by 管理人 at 18:06 | Comment(0) | ソフトウェア紹介

2009年07月29日

マルチモニターをさらに快適に

こんにちは、ケイタですわーい(嬉しい顔)

ヘキサドライブでは開発部の社員全員がモニターを2つ使用する
マルチモニター環境で開発をしています。
マルチモニター環境で開発をすると、単純に作業できるスペースが広がるので
作業効率を上げることができますグッド(上向き矢印)
僕はヘキサドライブに入社してから初めてマルチモニターで開発をしているのですが、
そのあまりの快適さに体が慣れてしまい、先日自宅のパソコンにもマルチモニター環境を
導入してしまいましたひらめき

今回はその快適なマルチモニター環境を、さらに快適にするソフトウェアの紹介をしたいと思います。

1 MultiMonitor Taskbar
マルチモニターを導入しても、タスクバーが出るのはプライマリモニタだけですが、
他のサブモニタにもタスクバーを出してくれるソフトウェアです。
さらにMultiMonitor TaskBarを導入すると、アプリケーション最小化ボタンの横に
「ウィンドウを別のモニタに移動させる」ボタンが追加されます。
これにより、ウィンドウを別のモニタへ移動させる際に必要だった、マウスでタイトルバーをつまんで別のモニターの領域までドラッグさせるという手間を省くことができます。

2 WindowTeleport
WindowTeleportは、上で紹介したMultiMonitor TaskBarの「ウィンドウを別のモニタに移動させる」機能に特化したソフトウェアです。
こちらはボタンを押してウィンドウを移動させるのではなく、キーボードのホットキーでウィンドウを別のモニタへ移動することが出来ます。

3 MaxTo(シェアウェア。30日間のトライアルバージョン有り)
MaxToは、ユーザー好みにモニタ内を区分けして、区分けしたサイズにウィンドウをフィットさせることができるソフトウェアです。モニターの作業領域を無駄なく使いたいexclamation
という方にお勧めです。
こちらはマルチモニター環境に限られたソフトウェアではないのですが、マルチモニターでも有効活用できたのでご紹介しました。

モニタ内を区分けするというソフトでは、絶対領域。というソフトウェアもあります。
こちらはウィンドウを最大化しても指定したデスクトップの領域を隠さないというソフトウェアです。

今回4つのソフトウェアを紹介してみましたが、いかがだったでしょうか?
少しでも気に入ってもらえるものがあればいいなと思いまするんるん
それでは、良いマルチモニターライフを手(パー)

posted by 管理人 at 21:35 | Comment(0) | ソフトウェア紹介

2009年07月07日

Hudson

席替えで空調機の真下に移動してきました。
思っていたよりも強力に冷却されている席だと分かり、ヘキサジャンパー
愛用しているシラッチです。

今日は七夕ですね。皆さんは短冊に何か願い事を書かれましたか?

僕の願い事は…いろいろありますが、ひとつは快適な開発環境の構築です。
僕たちゲームプログラマーの仕事は基本的に
 1実装 ... プログラムの動作を定義するソースコードを書く
 2ビルド ... ソースコードから実行ファイルを構築
 3テスト ... 動作のテスト
 4修正 ... 問題がある箇所修正
のサイクルです。

このサイクルのビルドテストを出来るだけ自動化出来れば…空いた時間で、さらに実装を進めることが出来たり、テストを忘れていて修正に時間がかかってしまう、といった事を防げたり出来るのでは?と常々考えていたのですが…
そんなシステムを構築して開発中のプロジェクトに適応するのは相当な労力が必要になりそうだなぁたらーっ(汗)、とも思っていました。

そんな願い事について会社の先輩と話をしていて「Hudson(ハドソン)というオープンソースのシステムがある」という情報を得ました。
※有名なあの会社のことではありません。

さっそく少し調べてみると…
 ・インストール/セットアップが簡単
 ・設定は Web ブラウザ上から行える
 ・CVS や Subversion などのバージョン管理システムツールをサポート
 ・プラグインを通じた機能拡張が可能
 ・メールによるビルド結果通知

…なんだかイイかんじですぴかぴか(新しい)
まだ個人的に調査しているような状態なので、実際に仕事に導入できるか分かりませんが、世界中のエンジニア達がエンジニア自身ハッピーになるにはどうしたらいいか考え、実践しているのを知ることが出来て嬉しくなりました。
イイ開発環境でイイモノづくりが出来るよう、取り組んでいきたいと思いますパンチ

posted by 管理人 at 15:59 | Comment(0) | ソフトウェア紹介