2009年11月30日

char型のキャストに注意

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

昨日のボクシングの試合はすごかったですねexclamation×2
TVを見終わった後、鏡の前で思わずシャドーボクシングをしてしまったのは私だけではないはず・・・あせあせ(飛び散る汗)

さて、学生の皆さんはそろそろ就職活動の時期ですね!!
リクルートスーツに身を包んだ初々しい姿を街で見かけるようになり、当時の記憶がよみがえってきますひらめき

専門学校に通っている方は就職作品作りに精を出しているのではないでしょうか?
そこで今日は、就職作品制作時に私が陥った恥ずかしいバグを皆さんに公開しようと思いますたらーっ(汗)
(少しでも参考になれば幸いです・・・)

// char型の-1を終了を示す値として扱う
#define ARRAY_END (0xff)

// 配列サイズ削減のため、char型でテーブルを定義
char array[] = {
  1,
  2,
  3,
  4,
  ・
  ・
  ・
  ARRAY_END
};

bool func(char no)
{
   switch( no )
   case 1:
     // 処理
     break;
   case 2:
     // 処理
     break;
   ・
   ・
   ・
   case ARRAY_END:
     return true;
   }
   return false;
}

int main(void)
{
   int cnt = 0;
   for( ; ; ){
     if( func( array[cnt++] ) ){
       break;
     }
   }
   return 0;
}

このコードですが、予期せぬ動作をします。
なぜなら関数func()内のswitch文の終了を示す「case ARRAY_END:」の箇所に処理が来ないからです。
これはC言語ではswitch文に値を渡すと、暗黙にint型にキャストされるという仕様になっているせいです。
つまり、char型の-1のつもりで記述した0xffが、intに型変換された時点で0xffffffffに符号拡張されてしまうわけですねバッド(下向き矢印)

上記例では、int型の4byteをケチってchar型のテーブルを定義したことで、この問題を引き起こしていますが、同じような理由でint型を使用せずにchar型を使用した経験がある方も多いのではないでしょうか。

もし同じようなコードを書く場合は、注意してみてくださいねパンチ
(※処理系により、char型の符号付きが変わります)

では、充実した就職活動をわーい(嬉しい顔)
ヘキサドライブへの応募もモチロンドシドシお願いしますexclamation×2
応募はコチラ

posted by 管理人 at 18:18 | Comment(0) | プログラミング

2009年11月27日

誕生日会 in 大阪

東京という新しい住居&職場に移ってから早2週間。
住環境の変化にも徐々に慣れてきた今日この頃です。
こんにちは、ハラです。

さて、ヘキサドライブ大阪にて、恒例の誕生日会が行われました。
今回のケーキは、チーズケーキバースデー

sP1010903.jpg

すこぶる美味しそうですねるんるん
私も大阪までの500kmを駆け抜けて食べたいっ新幹線
ちなみに、このケーキはこちらで購入されたそうです。

sP1010904.jpg

今月は、えーきちくんが主役exclamation
おめでとうございますexclamation×2

さて、以前に比べると人数が減っていますね。
私も写真には写っていません。
それは、東京開発の立ち上げで、私を含めメンバーが移ったことによります新幹線

東京側でも大阪に負けない誕生日会をっバースデー
さらには、東京大阪合同の誕生日会っっバースデープレゼントバースデー
を行っていきたいと思います。

この誕生日に参加したいという方々exclamation
私ならもっとアツイパフォーマンスが出来るという方々exclamation&question
大前提として・・・一緒に素晴らしいモノを開発したいと思う方々exclamation×2

採用情報からエントリー可能です。
是非とも確認してみて下さい。お待ちしております。


posted by 管理人 at 13:45 | Comment(0) | 日記

2009年11月26日

リフレッシュ

こんにちは、マーシーです目

東京に来て早三週間が経ちました新幹線
一番変わったことといえば…通勤時間です。
大阪より一時間近くも短縮できました手(チョキ)
でも、その分歩く距離も短くなり、メタボが気になりだした今日この頃…ふらふら


11月22日、私は東京大学の駒場祭という文化祭に行きました。
そして、初めて「茶道」の「お茶会」に参加してきましたNEW

畳。生け花。着物。
少し緊張して「御茶」を頂く順番を待っていたのですが、他のお客さんはそれほど硬い感じはしません。

むしろリラックスしている風に感じました。

私も肩の力を抜いて、御茶と御茶菓子を頂きました。
心が落ち着く居心地のいい空間でしたぴかぴか(新しい)

忙しい時もありますが、たまにこういう静かな時間を楽しむのもいいですね。

自分なりのリフレッシュ方法を探して、これからも仕事を頑張っていきたいと思います手(パー)


posted by 管理人 at 21:47 | Comment(0) | 日記

2009年11月25日

装いも新たに

こんにちは。さいやん、こと齊藤です。

ヘキサドライブ東京開発が開設してはや2週間が経ちました。
前回ご紹介したblogでは何もなかった空間に少しずつヘキサドライブの息吹が吹き込まれる様子をお伝えしました。
真新しいエントランスもCOOLなデザインのたたずまいでしたが、今は東京開発開設にお祝いを寄せて頂いた方々のあたたかい気持ちに包まれてとても華やかになっていますぴかぴか(新しい)かわいいぴかぴか(新しい)

sP1000120.JPG

きれいな花や木に囲まれて、またその励ましとご期待に応えるべく、スタッフ一同気持ちも新たに頑張って参りますパンチ
改めて、この場を借りてお送り頂いたお礼を申し上げたいと思います。ありがとうございます。

そして、なんとなんと、この新東京オフィスを体験できるチャンスがありますexclamation
来月開催予定の2011年卒業予定の方向けの会社説明会を東京はこのオフィスで開催しますexclamation×2
詳しくはホームページの採用情報を確認のうえ、エントリーして下さい。
この機会をお見逃しなくexclamation

posted by 管理人 at 15:50 | Comment(0) | 採用 -お役立ち情報も-

2009年11月24日

楽しく連携!

こんにちは!
今日からヘキサブログは東京開発のターングッド(上向き矢印)
トップバッターは、イノウエです手(チョキ)

ブログをよく読んでくださっている方は
書く人間の順番を把握されていたかと思いますが、
東京と大阪に分かれてからは基本的に
 大阪全員→東京全員→大阪全員→エンドレスぴかぴか(新しい)
と、交互に回していく事になりました。
この方が順番わかりやすいですからねわーい(嬉しい顔)

いつもの番が回って来ているはずなのに、違う人が書いている…
と、親から心配されたりしてしまいましたが、大丈夫です。
息子は元気にバリバリ働いています手(グー)


さて、人が分かれ、ブログの順番が交互になり、
なんだかハッキリした境界が出来てしまったのでは…たらーっ(汗)
と感じるかもしれませんが、それも大丈夫です!
ヘキサは常に、しっかりつながっていますぴかぴか(新しい)

業務の内容を相談するチャットや
テレビ会議で話したりなどはもちろんの事、
お互いの職場風景を映像と音声で常に送りあっているのです!
つまり、ずっとビデオチャットをつないでいる状態ですねいい気分(温泉)

これにより、お互いの状況がすぐにわかります。
「あ、MTG中なんだな」
「何度か咳してる、大丈夫かなぁ」
「電話が鳴ってる!」(音が同じなので、ピクリと反応…)
「休み時間、クチをあけて寝てる人が…」
「プログラムの話や、ゲームの話で盛り上がってる!参加させて!」
「美味しそうな物食べてる!こっちにも下さい!」
などなど、すぐ横にいるような感覚でやり取りしていまするんるん

さらに、カメラを特定の人に向けてイタズラしてみたり、
アップで映って笑いを取ろうとしたり…などなど、
楽しみながらも、大阪と東京とで連携を取り合っていますわーい(嬉しい顔)

場所は離れても、社員全員、一丸となり、
世界征服(?)に向けて奮闘しなくてはなりませんからねグッド(上向き矢印)
これからも仲良くしっかりと、
より良い環境で制作にあたり、
面白いゲームを世に送り出せるよう頑張り続けます晴れ

posted by 管理人 at 19:14 | Comment(0) | about ヘキサ

2009年11月20日

☆ボジョレー解禁!!

こんにちは。しばやんです☆

最近、何かと入社時のキャラ設定に無理が生じてきたため、
新たなキャラ確立に日々奮闘していますグッド(上向き矢印)グッド(上向き矢印)グッド(上向き矢印)
目標は、女子高生のようにかわいく、そして難解な言葉を巧みに操る乙女キャラですハートたち(複数ハート)

さて昨日ですが、ついにボジョレー・ヌーヴォーが解禁になりましたねexclamation×2
さっそく乙女じゃない話題ですが…(笑)

「この日を待ちわびていたのよるんるん」というほどワイン大好き!というわけでもなかったのですがあせあせ(飛び散る汗)
スーパーマーケットの特設コーナーで店員さんに捕まり、勢いでついつい買って帰ってしまいましたわーい(嬉しい顔)

10代の頃は、月々のイベント(例えば、バレンタインデーやクリスマスなど)に
ミーハー的に流されてなるものか!という尖がった(?!)考えを持っていたのですが、
いつの間にか「どんなことも楽しんだもの勝ち!」と思うようになり、今回もボジョレー購入に至りましたぴかぴか(新しい)

意識的に、世の中で話題になっていることに乗っかって、
いつもは買わないものを買ってみたり、その時季にしか味わえないものやできないことをやってみると、
1年を通して毎月毎月にとてもよぃ感じの右斜め上メリハリ右斜め下が生まれます手(チョキ)

仕事をしている時でも、
少し前に考えつかなったことがパッと閃いたりひらめき
気づかなかったことが見えてきたりもしますexclamation×2

なので、「そういうのあんまり興味ないな〜」という方も、
ぜひ一度"いつもと違う何か"にチャレンジしてみてはいかがでしょかexclamation&question

さぁ、今月はやっぱり紅葉ですねぴかぴか(新しい)わーい(嬉しい顔)ぴかぴか(新しい)
私はライトアップもみじ&おいしい湯豆腐を食べに、京都へお出かけしてきますダッシュ(走り出すさま)

posted by 管理人 at 19:43 | Comment(0) | 日記

2009年11月19日

新作発表!?

こんにちは、ケイタです。
最近は平尾さんと同じようにベヨネッタをプレイしています。
僕も難易度Normalの全チャプタープラチナアワードを目指しているのですが、なかなか難しいですふらふら
もっと精進しなければexclamation

さて、このヘキサドライブ公式HPのいたるところに居て愛嬌を振りまいてくれている
ヘキサドライブのマスコットキャラクター、グリ&ブランですが、
新たに可愛らしい2匹の画像が出来上がりましたので、一部紹介したいと思いますわーい(嬉しい顔)

20091119_logo.png20091119_marubatu.png
20091119_pin.png20091119_sleep.png


とても愛くるしいですねえ揺れるハート
このグリ&ブランですが、現在鋭意製作中の採用パンフレットや、
会社説明会のプレゼンテーション資料などに使われる予定です。
一体、どんな風にパンフレットや資料に華を添えてくれるのか非常に楽しみです。
そんな気になる会社説明会イベントの情報は、↓のリクナビ2011のページで告知していくので是非チェックしてみて下さいexclamation

http://job.rikunabi.com/2011/company/top/r928110073/

グリ&ブランと一緒に、それではまた手(パー)
20091119_byebye.jpg




posted by 管理人 at 21:56 | Comment(0) | グリとブラン

2009年11月18日

暗号解読と、念のための処理

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

今回は、先日読んだ暗号解読という本の紹介をしたいと思います。

日常生活で暗号なんか関係無いやドコモポイントと思われるかも知れませんが、インターネットでの機密情報のやり取りが普通に行われている現代、全くの無関係ではいられないと思います。

20091118_00.jpg



この本の中では、暗号作成者vs暗号解読者の戦いの歴史が語られています。
昔から暗号は国家レベルの機密を通信するのに使われ、それを解読されることは国民の生命を危険にさらすことに直結するというケースも、多々ありました。
中世の時代では、暗号解読者側の圧倒的勝利ぴかぴか(新しい)だったようです。
それが、第二次世界大戦頃から徐々に暗号作成者側が有利になってきて、現状は暗号作成者側の勝ちぴかぴか(新しい)、と言われています。

「暗号なんて所詮人間が考えた物なんだから、人間に解読できないはずはないexclamation
と考える方も多いでしょう。その考え方に間違いは無いと思います。
でも、工夫次第によって、解読に要する時間を膨大グッド(上向き矢印)なものにすることは可能なのです。
こぼれた水をコップに戻すのが困難なように、あるいは割れた壺を復元するのが難しいように、一方向の作業は簡単だけど、その逆の作業は至難の業あせあせ(飛び散る汗)というものがありますよね。
現在の暗号作成にも、その考え方が応用されています。

その具体例が、素因数分解です。
ある人物Aさんが、ある2つの素数(94191933)を掛けて、答えを得たとしましょう。


9419 × 1933 = 18206927

これは、計算機があれば簡単にできますよね。
では逆に、18206927という値から、Aさんが掛け合わせた2つの素数を特定することはできるでしょうか?

不可能ではないですけど、大変な作業であることが想像できますよね?
実際の暗号化では、もっともっと大きな桁数(10の130乗以上exclamation×2)でこれを行い、掛け算する前の2つの素数を特定しないと、暗号が解読できない仕組みになっています。

現代最先端の暗号を解読するためには、とてつもない時間(世界中のコンピュータを使っても、宇宙の年齢以上の時間)が掛かると言われています。
もし、量子コンピュータ(今のところ空想上の超並列コンピュータ)ができた場合、そのとてつもない時間が掛からなくなるため、暗号作成の上で大問題たらーっ(汗)…とされているようですが、なんとその対策も既にできているとか。
まだ実際には存在しない脅威に対しての対策も既に練ってあるなんて、ちょっと驚きですよね。
でもこの「こんな事、現状あり得ないけど念のため…」という考え方、プログラマにとっては重要だったりします。

*

例えば、C/C++ での switch 文で、信号機の3色の場合分けをするとしましょう。
そんな場合、次のような switch 文にしていませんか?

switch(signal) {
case RED: // 赤
  break;
case BLUE: // 青
  break;
case YELLOW: // 黄
  break;
}

「信号なんてその3色しかありえないんだから、それでいいんじゃないの?」
と思いがちですが、念のための処理として、次のような default 処理を用意しておくのをお勧めします。


switch(signal) {
case RED: // 赤
  break;
case BLUE: // 青
  break;
case YELLOW: // 黄
  break;
default: // 想定外の色! 
  printf( "Unexpected color!" );
  assert(false);
  break;
}

現実世界でならいざ知らず、ゲームの中の信号の色が4色以上に仕様変更されることは、十分あり得ます。
もしくは signal という変数が想定外の値に書き換えられるようなバグもあり得るでしょう。
そんなとき、より早いタイミングで不具合を発見するためにも、この一手間を習慣づけるのは有効です手(グー)

お試しあれ!


posted by 管理人 at 14:08 | Comment(0) | 書籍紹介

2009年11月17日

ベヨネッタ

こんにちは。平尾です。
ここのところすっかり寒くなってきました。
部屋が乾燥してきてノドがやられてしまいそうなので、寝る前にタオルを濡らして干しています霧
湿度的にはいい感じになってる気がします!
***

最近ファミ通で満点をとったベヨネッタをプレイしています。
今までのアクションゲームに比べてテンポが早くて慣れるまでに少し時間がかかりましたが、
慣れるととっても爽快です!るんるん
他のゲームで遊んでいてもついRトリガーを引いてしまう癖がついてしまいましたが…ふらふら

今は難度Normalを全てプラチナアワードにすべく奮闘中です。
リザルト画面はこんな感じになりました。
もう少しです!パンチ


純粋に楽しんでるのもありますが、中身の技術もチェックしてますよひらめき
どうしても気になって見てしまうのは
・シャドウの品質
・一度に出てくる敵の数(ポリゴン数やボーン数、ステージの広さ)
・特殊な描画表現(透明の人や召喚される魔獣)
・布などの表現
・画面フィルタ
・イベントシーンの長さや演出
etc...
他にも見た目ではないところ、例えば
・プレイヤーの操作感(連続入力のタイミングやヒット感)
・敵AIの動き(どういった状況でどんな技を出す傾向にあるか)
・読み込み速度
・装備画面などのユーザーインターフェース
・アイテムや敵の配置、難度調整
・武器の攻撃力や速度のバランス
etc...
挙げればキリが無いですが、すごく楽しく勉強してます!わーい(嬉しい顔)ぴかぴか(新しい)
ゲーム開発者として最新のゲームには触れておかないとですね。
ゲーム業界を目指される方は、自分がゲームをプレイして不満だった点や、
楽しかった点など、分析してみると良いかもしれませんよメモ
(面接で聞かれたりするかも?)


次は発売初日で700万本を売り上げたという「Call of Duty: Modern Warfare 2」でしょうか。
http://gamez.itmedia.co.jp/games/articles/0911/12/news075.html
日本での発売がとても楽しみです!!


ストレス解消や研究として秋の夜長にゲーム、みなさんもいかがですかゲーム


posted by 管理人 at 16:11 | Comment(0) | ゲーム

2009年11月16日

滑らかなフォント描画

こんにちは!イワサキです。わーい(嬉しい顔)
実は2カ月ぶりのブログ書き込みです。前回のときはまだ暑かったですがもう木枯らしが吹く季節になってきました。時が経つのは早いですね。

今回のお題は『テクスチャ画像のベクトル化』です。

解像度の低いテクスチャでもシャープでくっきりした画像を描画できるようにしよう、という内容です。ぴかぴか(新しい)
一般的にはゲームのようなリアルタイムレンダリングでは拡大縮小にバイリニア補間をつかった補間を行ないます。
これによってギザギザした四角いドット形状を和らげることができます。

しかしそれでも解像度が極端に低い場合で引き延ばしを行なうと、この補間では滲んだようにぼやけてしまいます。
フォント描画などでアルファテストでくっきり境界線を作ろうとすればガタガタの境界線になってしまいます。

SIGGRAPH2007ではValve社によってこれについての新しい手法が発表されました。
Valve社は、「Half-Life 2」「Team Fortress 2」「Left 4 Dead」など非常にクオリティの高いゲーム作品を手掛けるメーカーです。
下記がSIGGRAPHのドキュメントです。

■Improved Alpha-Tested Magnification for Vector Textures and Special Effects (PDF)
http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf

画像のカラーを補間するのではなく、まず距離を補間する
という視点が面白いです。
早速今回試してみましょう。

この手法のポイントは「境界線からの距離の情報を事前処理で生成しておき、レンダリング時に境界線を検出する」というところです。
さらにこの距離情報(Distance Field)はピクセルデータとして等間隔に格納されることになりますが、この距離情報をバイリニア補間することで均一の距離フィールドを参照できるようになります。

【元イメージ】
2009-11-16-3.png

【距離情報(DistanceField)】
2009-11-16-4.png

2009-11-16-5.png

画像イメージの白い部分からの最短距離を計算してグレースケールのグラデーションを生成します。
これが黒くなればなるほど元データから遠い場所にあるといえます。

そうして出来上がったデータに試しに同一距離にある部分を赤く着色してみます。

2009-11-16-6.png

まるで地図の等高線みたいですよね。このように特定の距離にある部分に着色をします。その結果次のような見え方になります。

2009-11-16-1.jpg

左から順に、バイリニア補間、アルファテスト、距離フィールドのレンダリングです。
拡大した時の斜めの線の品質がかなり違いますよねわーい(嬉しい顔)
今回の技法のものはツルっとした線になっています。同じ解像度なのに鮮明さが格段に良くなっていて、なおかつさらに大きく拡大してもこの鮮明さは失われませんぴかぴか(新しい)

文字フォントの描画以外にも応用の幅が広そうです。
キュー・ゲームスの PS3「PixelJunk Eden」でもこの技法が応用されているそうです。
http://pixeljunk.jp/library/Eden/
先日のCEDEC2009ではPixelJunk Shooterにもこの技法が積極的に応用されているということが発表されていました。
PixelJunk Edenのオブジェクト描画は本当に滑らかで鮮明ですよね



技術デモは下記よりダウンロードできます。



◎動作可能な環境
基本的にはシェーダーモデル2.0以降で動作します。
なるべく最新のデバイスドライバで実行してください。

Download
HexaFont.zip (約2.0MB)

── 2009-11-20 追記──
GeForce6000シリーズで境界スムーシングが効いていなかったため修正しました。


2009-11-16-2.jpg

【動作確認済ハードウェア】
nVIDIA GeForce9800GT
AMD RadeonHD4350


この技法については書籍GameProgrammingGems6の 「5.8 道路標識をシャープにレンダリング」で見え方の調整の方法について紹介されています。
興味のある方はご覧になってみるのも良いかと思います。


ヘキサドライブでは自社内製ゲームエンジン「ヘキサエンジン」を開発しています。
共にゲーム作品を作っていきませんか?目
新卒・中途ともにご応募お待ちしています


posted by 管理人 at 22:52 | Comment(2) | 研究・開発