2011年12月

2011年12月29日 (木)年末年始のお休みのお知らせ

アクセスゲームズは年末年始を下記の通りお休みさせていただきます。

12月29日(木)~1月3日(火)

新年は1月4日(水)より業務開始いたします。

よろしくお願いいたします。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-ea4c.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月28日 (水)年末挨拶

  おはようございます。本日の当番、CGデザイナーの岡本です。

今年も早いものでもう後数日を残すのみとなりました。
アクセスゲームズも本日で年内の業務は終了となる予定です。


個人的には前回の年末ブログ(2009年)に2010年の目標を、

・ロト6 1等当選
・阪神タイガース優勝

と書きましたが、2年越しながらどれも達成できず・・・orz
今年は控えめに、

・ロト6 2等当選
・阪神タイガースクライマックスシリーズ進出

程度にしておきますw


と、前置きはこのぐらいにして・・・、
振り返ってみると今年もパブリッシャー各社様ご協力の元、
無事2本のタイトルを発売できました。
PS Vitaのローンチタイトル開発という貴重な体験もさせていただきました。

また来年に向けても楽しみなタイトルが控えております。
ゲーム開発以外にもGDCやCEDECでのSWERY講演や、研修旅行などイベントも
盛りだくさんと充実の一年でした。


年明けに10周年を迎えるアクセスゲームズですが、より一層飛躍できるよう
スタッフ一丸となって頑張って行きますのでご期待くださいませ!

では、皆さま良いお年を!


最後に今年は震災とそれに続く原発の問題があり、まだ事態は収束して
おりませんが、被災者の方々にとって来年が良い年になるよう願います。
follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-08f9.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月27日 (火)勉強会とは?

おはようございます。本日の当番、プランナーのK.Tです。

ゲーム業界でお仕事をする以上、
日々、技術やアイデアに関してアンテナを張っていなければなりません。

そこでアクセスゲームズでは、
皆の技術や知識を養うということに対して真剣に取り組んでおり、
国内/海外を問わずに積極的なセミナーの参加も行っております。

加えて、これら外部のセミナーに参加するだけではなく、
社内でも月一で「勉強会」というものを開催しております。
この勉強会は企画、デザイン、プログラム各部署でテーマを決めて開催されます。

デザインであれば、最新の技術やツールだけではなく、
美術史などもテーマとして取り上げられることがありますし、
プログラマであれば、プログラム言語に関することはもちろん、
数学的な内容の勉強会も開催されます。

では、企画は?と言いますと…

デザイナーであれば絵が描ける。プログラマであればコードが書ける。
…など職務をこなすうえで、最低限必要なスキルや知識が具体的ですが、
企画はエクセル使えればOK、アイデア出せればOKというだけでは
仕事が成り立ちませんので、明確にこの技術知識があれば企画マンとして
仕事が出来ているということにはならないのです。

しかも、どうすればアイデアが生まれるのか?パラメータ調整のしかたは?
進行管理の仕方は?…等々
誰かにレクチャーしてもらって容易に出来るものでもないもので、
どれもこれも、経験してみないと分からないものだらけです。

なので、企画が難しいお題に挑戦して失敗することもあります。
まあ、失敗は成功のもと、とも言えますが。
それぐらい何を勉強するか?ということは難しいのです。

特に企画などは現場で経験することがベストですが、
それ以外でも積極的にセミナーや
勉強会に参加することで他部署の知識も吸収していくことも重要になります。
しかしながら、勉強会を開催しているからと言って、
あぐらをかいていてはいけません。

こうした勉強会の意義として重要なのは、
スキルや知識を身につけると言うことも大事なのですが、
やはり色々なセミナーや勉強会に参加することで、
「自分はゲーム業界で仕事をしている」という認識を高め、
向上心を持つということが重要かと思います。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-2bb8.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月26日 (月)こたーつリーグ(ゲーム三昧)突入!

おはようございます。本日の当番、プランナーのM.Yです。

皆さんクリスマスプレゼントは良いものが貰えましたでしょうか?
巷では枕元の靴下にロード オブ アポカリプスのソフトが入っており、
大変喜ばれていると聞き及んでおります。

さて、最近ゲームのスタッフロールを見た記憶が無いなぁ・・・と
ふと思い当たりました。
最後にスタッフロールを見たゲームを思い出せますか?
私は開発中にテストプレイで見た自社のゲームが最後です。

日頃多くのゲームをプレイしているのですが、クリアするまでに次のゲームが
発売されて、乗り換えてしまうんですよね・・・。
そういう訳で、今年の年末年始はゲーム三昧で積みゲー消化の予定です。

近頃はスマートフォンのソーシャルゲームが増えて来ましたが、
明確なクリアが存在しないタイプのソーシャルゲームでは、スタッフロールは
専用のメニューからいつでも見ることができる仕様があるようです。
また、海外のRPGなどもタイトル画面からスタッフロールを見ることができる
ものがあります。

なるほどなぁ~。
いつの間にか、スタッフロール=ゲームクリア時に見るものという固定観念が
自分の中で出来上がっていたのかも知れません。
これからのゲーム開発では、スタッフロールの表示タイミングも考える必要が
ありそうです。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-658f.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月22日 (木)年の瀬ですね

おはようございます。
マネージャーの富田と申します。

早いもので年の瀬になりました。
今年を振り返ると、部署の立ち上げなど、本当に忙しい一年でした。

今年一年で業界も大きく変化しています。
特にソーシャル系の携帯コンテンツが大きい市場となり、
それに負けず劣らず、新しい家庭用ハードの発表&発売。

劇的な変化ですね。


制作も世界的に見ると大規模プロジェクトと小規模プロジェクトの個体差がはっきりし、それぞれがそれぞれの分野で力を持ち、クオリティを堅持。
より独創的、工夫的、且つ魅力的な商品が生き残る。

サバイバルな時代になってきました。


そんな中で、生き残っていく工夫が必要です。


アクセスゲームズは来年で10周年を迎えます。
しかし上記のように転換期とも言える世の中なので、「10周年だ!やっほー!」と喜んでいてはいけないのです。

次に向かって進化するため、今はどんどんエネルギーを溜めてます。
来年は放出する年になりますよ。


来年のアクセスゲームズの動きをご期待ください!!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-0809.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月21日 (水)今年はサンタクロースが来ない

おはようございます。本日の当番、プランナーのN.F.Hです。
アクセスゲームズ10周年で行った研修旅行での興奮も一段落し、社内には年末
ならではの慌ただしい雰囲気が漂っています。
こう忙しいと仕事も思い通り進まず、かといって自分の時間もとれなくなり、
FがフラストレーションのFになるくらいですが、そんなピリピリした空気を
払拭するかの如く、定時になれば即効で携帯ゲーム機をとりだす!

じゃじゃーん! 最新の携帯ゲーム機!
(諸事情により名前はお伝えできません)

今まで使っていた旧世代機は酷使しすぎたせいか、入力を受け付けないという
症状が時々発生するため、これを機に最新型を購入しました。

過去にハードの性能を充分に把握していなかったため、表現不可能な内容の
企画書を書いてしまった私としては、最新のゲーム機に触れてそのスペックを
理解しておくことはとても大切なことなのです!
ネットの記事見て、動画見ただけではゲームの面白さなんて理解できません!
「面白い」ということは実際に体感した経験なのです!

・・・遊びまくってることへの理由付けじゃないのよ?

とか言いながらも、実はもう一つの最新ゲーム機はまだ購入していません。
(諸事情により名前はお伝えできません)
同窓会とか、友人の結婚式とか、アップ休暇中に旅に出たり、社員旅行に行ったり
と、いろいろと入用だったんですよ・・・。
ですが、そんな問題も今晩には解決されます。
なぜなら今日はアクセスゲームズの忘年会!

まずはこれまでの忘年会を振り返っていただこう。

AG EVENT 2010 忘年会

AG EVENT 2009 忘年会

AG EVENT 2008 忘年会

そう!忘年会には毎年最新のゲーム機がもらえるくじ引き大会があるのだ!

2011年を締めくくる忘年会なら、今年も最新ゲーム機がもらえるくじ引き大会が
用意されているに違いない!
そうなると、くじをひく → 1等の最新ゲーム機がオレにあたる
という自然な流れが容易に想像できます。

最新ゲーム機に囲まれて、しかも3連休だなんて、今年はクリスマスだなんて
騒いでいる場合じゃないなぁ。

よし、仕方ない。
今年のクリスマスは中止とさせていただきます!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-d7b6.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月20日 (火)若さゆえの構想と妄想と暴走(その④)

おはようございます。本日の当番、プロデューサーの角和です。

先日までの当番からも報告されていましたが、ベガスでの研修旅行無事終わり、気が付けば既に12月も中旬となっています。
毎年12月中の取締役会の日の頃は、寒がりの僕はロングコートで身を守りながら街を歩いていましたが、旅行先が寒かったせいか、今年はまだ、ジャケットの上にブルゾンを羽織る程度で済んでますね。

・・・と思っていたら、先週末急激に寒くなりました。残念。


さて、前々回の最後に、成形品で作った巨大な顔に、目パチ、口パクの映像を投影して物語をかたる〝ストーリーテラー〟なるギミックを実現するべく、実体的過ぎるのと、その大きさのあまり配置場所に困り、新たな機構を考えないといけなくなったところまでをお話をしましたが、今回はその続きをお話しします。

このストーリーテラーは、時には行き先を見失った旅人の道を示し、弱気になった者を勇気づけ、また、浮き足立った冒険者を戒める精霊と言う設定なんですが、こいつを画面のど真ん中に設置したいと考え、いろんなアトラクションやアーケードゲームの構造を調査したところ、案外簡単にアーケードゲームで良く使われている手法の応用を思いつきました。

それは〝ミラー(いわゆる鏡)〟の活用です。

ミラーは、アーケードゲームではその頃よく使われている手法で、当時は、今の様な大型液晶が無く、ブラウン管に映像を映していましたが、ユーザーと画面の距離を開けたい場合、ブラウン管の厚み分、余計に筐体が大きくなっています。

その解消法として、編み出されたのが、ブラウン管を上向けにして胸元に設置し、その真上に、手前斜め45°に傾けた鏡に映すことで、ユーザー正面から見るとユーザー前方の奥の方に虚像が見えるという構造でした。
おそらく、当時プレイしていたユーザーは、虚像と気付かずプレイしていた人が多かったと思います。

その構造の応用でミラーをハーフミラー(50:50等の割合で、後ろの映像が、〝透け〟て見えるミラーの事)にして、奥にモニター、胸元にジオラマを設置し、あたかも画面の前にジオラマの虚像が浮かび上がるという仕組みを思いつき、試してみる事にしました。

するとどうでしょう。
予想通り、モニター映像の前にジオラマで作ったストーリーテラーの顔が、ぼんやりと浮かび上がっているではありませんか。

よっしゃあ!!です。

後は、目パチと口パクの合成ですが、当初はそれらを別途投影する事で表現しようと考えていましたが、今回発案した構造により、ハーフミラー越しに設置しているモニター側に目と口を表示する事で、ジオラマの顔に表情を付けることにも成功。

かくして、僕たちの目標としていたイメージの映像を再現ができたのでした。

いやいや、文章に書くと簡単にクリアして行っている様に見えますが、この間、ゲーム開発と言うより、日々、メカニカルデザインの部署と、自分がどこの部署の人間か判らなくなるほど基板開発の部署との行ったり来たりの繰り返しでした。

おかげで、これまで社内とは言え、各部署のあまり知らなかったスタッフ達とも親密になれ、また、ハードやメカに関して、いろんな知識を蓄えられ、今回の苦労は、この後の僕の開発者人生に思わぬ収穫を得ることが出来ました。



こうして、このプロジェクトの筐体試作もいよいよ大詰め。
残すところ、

【 ⑥BOXタイプスピーカーとボディーソニック音響システム 】

の、検討のみとなりました。


今でこそ各社ともに音響に関して、それなりのコストをかけた筐体も多くみられますが、当時のアーケードゲーム業界では、開発中はサウンドデザイナーの方々は良く聞く名前のBOX型スピーカーで開発こそするものの、販売時の筐体には耳を疑うくらいローコストのスピーカーで、しかも、スピーカーボックスも無く本体直付けと言う、割り切った?つくりでした。

つねづね開発中と発売後の聞こえ方のギャップが気になっていたのですが、今回は、〝目指せ!テーマパークのアトラクション〟という事もあり、音響関係も新たに設計する事にしました。

まずは、ボディーソニックなのですが、こちらは、いくつかの特性の物を用意してもらい、一番、体に『ズシ~~~ン!』と来るものをチョイス。比較的に簡単に決まりました。

唯一問題となったのがその設置場所。

本当は丁度お腹にヒットする位置に配置したかったのですが、各種コンパネの都合で膝元辺りに配置するしかないという事になり、ちょっと勿体ないなと悩みましたが、それでも、大迫力の音響で、やはり、搭載してよかったと言う気持だったことを覚えています。


次に、BOX型スピーカーです。
これを採用しているのは、限定品ならともかく、量産品のアーケードゲームでは、殆どなかったように記憶していますが、当時所属していた会社の筐体でも同様に初の試みでした。

スピーカーの事を知らない僕は、当初、皆さんが良く聞くアルファベット4文字のメーカー(あの会社ですよ)の物をメカデザイン部署の担当者にリクエストしたところ、鼻で笑われてしまいました。
それもそのはず、業者価格を聞いたところ、当然〝L〟〝R〟の2個が必要なのですが、単体でも筐体で予定していた2個分の予算をはるかに上回る、お話にならない金額でした。

仕方なく、そのメーカーの物を断念し、でも、見かけは肝心でしたので、見た目が似ていてコストが抑えられるメーカーを探してもらったところ、世の中には色んな会社があるもんですね。
パッと見、イメージに近い物を試作してくれるという会社が見つかりました。

早速、そのメーカーのBOXのサンプルをを取り寄せる事にしました。


さて、どんな物だったかは、そのお話はまた次回にしたいと思います。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-ad26.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月19日 (月)Simple is best

おはようございます。本日の当番、新人プログラマーのT.Mです。
よろしくお願いします。

時が過ぎるのも早いもので入社して2カ月半が経ちました。
入社と同時に一人暮らしを始めたのですが
実家では家事をほとんどしたことがなかったので最初の頃は毎日がアドベンチャーでした。
そんな私も環境に慣れて最近では料理が楽しく感じます。

最近ピーマンの肉詰めの作り方を覚えてよく作ります。
作っている時に思うのが”調理するスペースがない”ということです。
材料や調味料、フライパン等を出すと台所が物で溢れ、
調理を始めると野菜のヘタや発泡皿などゴミが出てさらに
調理スペースが狭くなってしまいます。
対策としては調理する際に”一つの工程に必要な道具だけを出す”ことが大事です。

これはプログラミングにも言えることで
処理を行う際には”一つの処理に必要な要素だけを出す”ことが大事なんです。
そうすればデータ量も減り処理内部が綺麗になりますし、
何をやっているか分り易くなります。

料理もプログラムもシンプルにまとめて、効率良く進めていきたいです。
以上、昔、フライパンから火柱を上げたT.Mでした。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/simple-is-best.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月17日 (土)『LORD of APOCALYPSE/ロード オブ アポカリプス』発売のお知らせ!

皆さま、こんにちは~♪

アクセスゲームズディレクターのSWERYです。

お待たせいたしました。

本日ついにスクウェア・エニックス様より
弊社が開発を手掛けた新作アクションRPG

『ロード オブ アポカリプス』

が発売されました!

LORD of APOCALYPSE
(c)2011 SQUARE ENIX CO., LTD. All Rights Reserved.

発売日:
2011年12月17日(土)

タイトル:
ロード オブ アポカリプス

ジャンル:
アクションRPG

対応ハード:
PlayStation(R)Vita │ PlayStation(R)Portable

プレイ人数:
1~4人

CERO:
C(15才以上対象)

価格:
UMD版・PS Vitaカード版 希望小売価格:5,980円(税込)
ダウンロード版(PSN配信)  販売価格:4,980円(税込)
※PS Vita版とPSP(R)同価格

ダウンロード版容量:
PS Vita版:約1.5GB PSP(R)版:約900MB

前作からゲームジャンルをアクションRPGへと一新して、生まれ変わった本作。
新たな武器カテゴリやストーリーの追加だけでなく、新システムのマーセナリーや、
コンクエストなどなど、新規要素盛りだくさん。

PS Vitaのローンチタイトルとして、自信を持ってみなさまに遊んでいただける
作品に仕上がりました。

PSP(R)版も同時発売です。

今年の冬休みは、家族や友達みんなでワイワイと『ロード オブ アポカリプス』
世界をお楽しみください。

もちろん1人プレイでも大丈夫。マーセナリーと一緒に戦いに出よう!

以上、みんな愛してる!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/lord-of-apocaly.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月16日 (金)残り半月!

おはようございます。本日の当番、プログラマーのT.Fです。


2011年も残すところ、残りあと半月となりました。

普通なら、これから楽しみにしている予定がある!と語ったりするのでしょうが、
残念ながら、12月らしいイベントの予定がないので、

「あー、たしか、12月16日はアーサー・C・クラークや、フィリップ・K・ディックの誕生日だったなー」

といった具合に、SF小説を読まない人にとっては、

「誰の話だ?」

と思うような事を考えながら、2011年も残り半月を迎えた今日を過ごしています。


まあ、そんなどーでも良いような事を日々考えて生きている自分も、
年末が近づいてきたとあれば、

「そろそろ部屋の片付けをしよう。」

と思ったりもするわけで、というか、思うまでは良いのですが、

いざ部屋を片付けようとすると、至る所に、読んでそのまま放置した本が部屋の中に転がっていて、どう片付けて良いか分からず、げんなりします。

そして、プログラムにおいても同じような思いをする事があります。

プログラムを作って、そのままソースを放置しておくと、あとからソースを確認する時に、どこに見るべき処理が書かれているのかが、パッと見で分からなくなります。

だからソースを整理しようと思うのですが、いざ整理しようと思ったときにも、どこにどう整理してやれば良いのか分からなくなったり、物量が多すぎてヤル気がうせてしまいます。


部屋の掃除も、プログラムも、日頃から時間を見つけては、少しずつ片付けろって話ですね。

あくせくジェ~ムズ読者の皆さんは、こんな風にならないよう、日頃から整理整頓を心がけてください。

プログラムに絡めて話がまとまったので、また次回! (^_^)/~

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-35d8.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月15日 (木)もしもの時の為に

おはようございます。本日の当番、プログラマーのS.Kです。

ブログは研修旅行について書こうと思っていたのですが、
後日アップされるWEBレポートでの内容に被ってしまいそうなので、
毎度お馴染み(?)のプログラムの小ネタでも書こうかと思います。


今回の小ネタはDoxygen(というよりコメント)についてのお話です。

・Doxygenとは
プログラムのコメントからドキュメントを自動生成する便利ツール
※HTMLやPDF等の形式で出力が可能

基本的にプログラムにコメントを記載する目的は、
可読性を保守する為のコードの説明や意図の記述等がありますが、
Doxygenではドキュメントの生成にも使用する事が出来ます。

Doxygenの使用方法を簡単に説明すると以下の手順になります。
1.ソースコードの記述
2.ソースコードのディレクトリをDoxygenのINPUTディレクトリに設定
3.ドキュメントの出力


簡単に説明するとたったこれだけでドキュメントが作れてしまいます。

但し、ドキュメントを生成するに際に手順1で注意事項があります。
それはコメントをDoxygenの形式に合わせて記述する必要がある事です。

という訳で、Doxygenを使ったコメントの記述方法を簡単に紹介したいと思います。
Doxygenの記述の方法については複数の方法がありますので、
今回は僕が普段使用している記述で説明したいと思います。

・基本的な記述
『//! @***』と記述する事で出力したい内容を指定します。
***の部分が内容の指定部分になります。
例えば『//! @author S.K』と指定すると作成者がS.Kとして出力されます。
又、『//! ***』と指定する事で関数や変数等の説明を記述する事が出来ます。
例外等もありますが、基本はこの形式にしています。

・ソースファイルの説明(ソースの先頭に記述)
//! @file ファイル名
//! @brief 要約説明
//! @author 作成者

・関数の説明(関数の前に記述)
//! 関数説明
//! @param 引数名 [out] 引数説明
//! @param 引数名 [in] 引数説明
//! @return 戻り値説明

・クラス、変数、enum、namespace等々(それぞれの前に記述)
//! 説明文

他にも色々とありますが、基本的には上記のもので対応出来ます。

・上記を使った簡単な例
※sub.hに記述した場合
//! @file sub.h
//! @brief 減算定義
//! @author S.K

//! 減算
//! @param a [in] 減算される値
//! @param b [in] 減算する値
//! @return 減算結果
int sub(int a, int b)
{
  return a - b;
}

とこんな感じに記述していきます。
普段は必要ないかもしれませんが、こういった記述を心がけておく事で、
引き継ぎ等があった際のドキュメント作成が楽に行えるかもしれません。

C、C++以外にも色々と対応しているので、
気になった方はDoxygenで調べてみて下さい。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-e62e.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月14日 (水)OpenCVと某カメラを使う

おはようございます。 本日の当番プログラマなT.Yです。

最近はプログラマにも関わらず、
プライベートではほとんどプログラマらしい事をしていなかったので、
ちょっとプログラマらしいメモ日記でいこうかと思います。

発売して以来、いろいろなプログラマやクリエイターの
遊び道具になっている、某カメラのインターフェイス。

世間では、OpenNIとOpenCV使って使ってる人が多いのですが、
敢えて、販売元から公式に公開されているプレビュー版で触ってみました。

商用利用は出来ないので商売は無理といった制限があるのですが、
簡単なインストーラーでドライバの組み込みまで自動でやってくれる便利さが
個人で軽く嗜む程度には便利かと。

これでカメラユニットから得られる映像のストリームをOpenCVに突っ込んで
遊んでみようと思います。


ここからは、とりあえずベースとして
Windowが表示出来てDirect3Dテクスチャが扱える物がある前提で。。

ということで、以下軽く嗜む為のサンプル


#include "MSR_NuiApi.h"
#include "opencv/cv.h"
#include "opencv/highgui.h"


HANDLE   m_hNextSkeletonEvent
HANDLE   m_hNextVideoFrameEvent
HANDLE   m_pVideoStreamHandle
HANDLE   m_hNextDepthFrameEvent
HANDLE   m_pDepthStreamHandle
NUI_SKELETON_FRAME   m_SkeletonFrame;

CvHaarClassifierCascade*   cascade = 0;
CvMemStorage*           storage = 0;

IplImage* g_pInputImage;
IplImage* g_pOutputImage;
IplImage* g_pGrayImage;


void main()
{
   // 他システム部分の初期化

   // 某カメラの初期化

   {
      HRESULT result;

      result = NuiInitialize(
         NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX | NUI_INITIALIZE_FLAG_USES_SKELETON | NUI_INITIALIZE_FLAG_USES_COLOR);
      if( FAILED( result ) )
      {
         return;
      }


      result = NuiSkeletonTrackingEnable( m_hNextSkeletonEvent, 0 );
      if( FAILED( result ) )
      {
         //エラー処理
      }

      result = NuiImageStreamOpen(
         NUI_IMAGE_TYPE_COLOR,
         NUI_IMAGE_RESOLUTION_640x480,
         0,
         2,
         m_hNextVideoFrameEvent,
         &m_pVideoStreamHandle );
      if( FAILED( result ) )
      {
         //エラー処理
      }

      result = NuiImageStreamOpen(
         NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX,
         NUI_IMAGE_RESOLUTION_320x240,
         0,
         2,
         m_hNextDepthFrameEvent,
         &m_pDepthStreamHandle );
      if( FAILED( result ) )
      {
         //エラー処理
      }
   }

   // OpenCV
   {
      // openCV用イメージ作成
      g_pInputImage = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 3 );
      g_pGrayImage = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );
      g_pOutputImage = cvCreateImage( cvSize( 640, 480 ), IPL_DEPTH_8U, 1 );


      // 顔認識用データ
      {
         cascade = (CvHaarClassifierCascade *) cvLoad (cascade_name, 0, 0, 0);
         storage = cvCreateMemStorage (0);
         cvClearMemStorage (storage);

      }

   }

   // ウインドウ作成
   cvNamedWindow ("GrayImage", CV_WINDOW_AUTOSIZE);


   // メインループ
   while(1)
   {
      // 省略
      // ここまで他処理


      HRESULT result;
      const NUI_IMAGE_FRAME * pImageFrame = NULL;
      const NUI_IMAGE_FRAME * pDepthFrame = NULL;

      // カラーイメージを取得
      result = NuiImageStreamGetNextFrame(
         m_pVideoStreamHandle,
         0,
         &pImageFrame );

      // 深度イメージを取得
      result = NuiImageStreamGetNextFrame(
         m_pDepthStreamHandle,
         0,
         &pDepthFrame );

      // 骨格情報を取得
      result = NuiSkeletonGetNextFrame( 0, &m_SkeletonFrame );
      NuiTransformSmooth(&m_SkeletonFrame, NULL);


      if( pImageFrame )
      {
         KINECT_LOCKED_RECT srcLockedRect;
         pImageFrame->pFrameTexture->LockRect( 0, &srcLockedRect, NULL, NULL );
         for( int y=0; y<480; y++ )
         {
            unsigned char* pSrcLine = reinterpret_cast

(srcLockedRect.pBits);
            pSrcLine = (pSrcLine + (srcLockedRect.Pitch * y));

            for( int x=0; x<640; x++ )
            {
               g_pInputImage->imageData[((y * 640 + x) * 3)+0] = pSrcLine[(x * 4)+0];
               g_pInputImage->imageData[((y * 640 + x) * 3)+1] = pSrcLine[(x * 4)+1];
               g_pInputImage->imageData[((y * 640 + x) * 3)+2] = pSrcLine[(x * 4)+2];
            }
         }

         pImageFrame->pFrameTexture->UnlockRect( 0 );
         NuiImageStreamReleaseFrame( m_pVideoStreamHandle, pImageFrame );


         // グレイスケール化
         cvCvtColor( g_pInputImage, g_pGrayImage, CV_BGR2GRAY );

         // 顔認識用のデータを使って検出器にかける
         {
            CvSeq *faces;
            faces = cvHaarDetectObjects (g_pGrayImage, cascade, storage, 1.11, 4, 0, cvSize (40, 40));
            CvScalar col = {255,255,255};
            // 検出された全ての顔位置に,円を描画する
            for (int i = 0; i < (faces ? faces->total : 0); i++)
            {
               CvRect *r = (CvRect *) cvGetSeqElem (faces, i);
               CvPoint center;
               int radius;
               center.x = cvRound (r->x + r->width * 0.5);
               center.y = cvRound (r->y + r->height * 0.5);
               radius = cvRound ((r->width + r->height) * 0.25);
               cvCircle (g_pGrayImage, center, radius, col, 3, 8, 0);
            }
         }


         // 結果を表示
         cvShowImage ("GrayImage", g_pGrayImage);
      }
      
      if( pDepthFrame )
      {
         NuiImageStreamReleaseFrame( m_pDepthStreamHandle, pDepthFrame );
      }

   }
}




使用した各SDKバージョンは、某カメラがv1.0-beta2の64ビット版
OpenCVが2.3.0を使用しました。

DirectXのテクスチャが扱えるようにと言っておきながら、
結果確認用にはOpenCVのHighGUI使って手抜きだったりですが・・・
あくまで軽く嗜むサンプルということで!!


深度情報は全く使ってないので正直普通のwebカメラでも出来る事だけど、
深度データも基本は似たようなもんなんで、
上のサンプルを参考に深度情報からも何か使ったりと遊んでみてはいかが?


参考までに、深度情報を使う際は16ビットのグレースケールデータのうち
下位3ビットはプレイヤー認識用のIDが振られているので、通常のグレースケール画像として扱う際には、
3ビットシフトしてやる必要があります。



まずは、検出用のデータを自前で作ってみてもよし、
グレースケール化した画像を今度はエッジ抽出してみてもよし。

ちなみに私は、まだ自前で検出用のデータを作る所で彷徨ってます。
適当にググった情報を頼りに作ってると、妙に大きなデータが出来て突っ込むと激重(0.01fpsくらい?)
だったり、変換途中でコンバータが落ちたり。。。。


とりあえず後は任せた!!

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/opencv-e832.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月13日 (火)代替プラン

おはようございます。
本日の当番、プログラマーのS.Zです。

実はブログのネタを全く考えておりませんでした。

しかし、普段ならネタがないと焦っているところですが、今日は違います。
社内や世間のイベントごとは立派なネタになるのですよ。

ということで、連日の旅行ネタで続きすぎと制限がかかってしまう前に書いてしまいます。

とは言いつつも、主な内容は後日WEBレポートが公開されるはずなのでそちらをご覧ください。

さて、ラスベガスをしっかり楽しみ、後は日本へ帰るだけとなったのですが、ここでアクシデントに遭遇しました。
旅行にアクシデントはつきものですね。
実は、乗るはずだった飛行機が悪天候など諸々の事情で欠航となってしまったのです。

でも、そこはさすが旅行のプロというべきか、
旅行代理店の方が急きょ代わりの帰国プランを考えて下さって無事、帰ってくるくことができました。

目的を果たすための手段をいかに達成するかということで、この代わりの手段ってのが大事なんですよね。
この場合は日本に帰らないといけないっていう目的に対して、代わりの帰国プランが用意されたわけです。

ゲーム開発では一つの処理を作っても、思ったより処理負荷やメモリ使用量が多かったり、いくら調整してもなかなかいい動きが作れないといったことがあります。

結構、ちまちまと触って時間を食ってしまうということもあるかとおもいます。

そんな時は、いっそ代わりの手段を用意して作り直してしまいましょう。

開発末期になってしまったり、大きなシステム部分だったりすると
作り直すというのはなかなかできませんが、かなり有効だとおもいますよ。

でも、何時間もかけて作った処理を壊すのってやっぱり勇気いりますよね。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-f5ed.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月12日 (月)デフォる

トゥデイのナンバー、プログラマーのT.Tです。
おっとベガス語が出てしまいました。ベガ語が。dollardollardollar


忙しい時期も過ぎ去り、
以前のプロジェクトの反省点を個人的にまとめています。

その中の一つ、
「デフォルト引数多すぎワロタ」
をなんとかしていきます。

「敵作ってー」「了解です」
CreateEnemy(int iId);

「あのへんに作りたいんやけど」「はーい」
CreateEnemy(int iId, Vec3* pPos = NULL);

「あーこっち向かせて」「なるほど」
CreateEnemy(int iId, Vec3* pPos = NULL, Vec3* pRot = NULL);

「出てきたやつのHP半分にできへん?」「ヨユーっす」
CreateEnemy(int iId, Vec3* pPos = NULL, Vec3* pRot = NULL, float fHp = 1.0f);

「イベント起こしながら出したいんですが・・・」「まかせろ!」
CreateEnemy(int iId, Vec3* pPos = NULL, Vec3* pRot = NULL, float fHp = 1.0f, int iEventId = -1);

と、ちょっと極端ですが上記の感じで少しずつ増えていきました。

そろそろ呼び出している箇所を確認する際に、
関数のコメントと睨めっこしないと書けなくなってきますね。

こういうのを解消するには、
汎用的な作成関数は残したまま、
拡張部分を含めた構造体を引数に持つ作成関数をもう一つ作ると・・・

CreateEnemy(int iId, Vec3 Pos);
CreateEnemyEx(SCreateEnemyOption* pOption);


ルックもビューティフォー!ユーズもエクセレント!goodshineあぁまたベガ語が。
見た目も美しく、呼び出す側は楽チンですね。

と長々と書いたんですが、
こういうのってみんなわかってるんです。

ただ、修正しようすると、呼び出している箇所を全て書き換えないといけないし、
きちんと動作しているかチェックするのが大変です。
バグチェックしている終盤は特にこうなりがちです。

しかし使いにくいことには変わりないので、
後のプロジェクトで再利用する際には直しておきたいですね。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-3b15.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月 9日 (金)やる気は思ったほど簡単に出せるもんじゃない

おはようございます。本日の当番、プログラマのY.Tです。
めっきり寒くなり、朝、布団から出にくくなっている今日この頃、
皆様はいかがお過ごしでしょうか。

昨日の記事でもありますように、先日海外研修を終えて帰国した直後となりますが、
皆すでに意識を切り替えて制作業務を行っております。
心配していた時差ボケもほぼありません。よかったよかった。happy01

気付けば年末も近くなり、
テレビtvをつけるとCMでクリスマスソングxmasが流れる時期になってしまいました。
今年のクリスマスは三連休だそうで、
もう・・・本当・・・なんかやる気出ない・・・w

という訳で、今回は「気力(やる気)」をテーマにしようかなと。

気力モチベーションにつながる大切な要素です。
ことクリエイタには必要な物ではないでしょうか。

疲れている時、目的が定まらない時、あるいは目的に届かない時、
どうしても気力は低下しがちで、回復しにくくなります。
以前、どうやったら常に気力フルでいられるのか調べた事がありましたが、
そもそも「常に気力フルでいられる」と考える事自体が間違いだそうです。

気力は、脳が作り出すドーパミンやノルアドレナリン等の神経伝達物質が源になります。
脳は本能に忠実であり、その本能とは「生物個体として生きる」事になります。
上記の伝達物質は作られた後、タンクに溜められ、必要に応じて引き出される事になりますが、空になると、うつ病や慢性疲労等のリスクを負う事になり、
生きる事に対する障害となる為、もともと出し惜しみするものだそうです。

さらに、脳は伝達物質を作る為に、それに見合う報酬を要求します。
その報酬が「快感」だそうです。

快感を得る → 伝達物質を作り貯蔵する → 引出に応じて気力に転換する → 気力をもとに行動する → 新しい快感を得る
これをループさせ続けると、ある程度の気力を常時保てる様になる、
といったところでしょうか。

逆に、上記のループのどこかが途切れてしまった場合、
脳は前例から判断し、受け渡しを拒否する様になっていきます。
のループですね。

ここで一番途切れやすい箇所は
「気力をもとに行動する → 新しい快感を得る」になるかと思います。
行動の結果が必ず快感につながる訳ではありませんので。
なので、「どうやって行動を快感に繋げていくか」が、
やる気を保つ要点になってくると思います。

こればっかりは個人の感じ方なので、確実な事は言えません・・・。
なので、個人的な例の話になりますが、
私の場合は「小さな目標を多数達成する」様に心がける事で、
うまく繋げられている様に感じます。

大きな快感を得るためには、それだけ大きな行動をしなくてはならず、
もちろん時間もかかるので、大体の場合、
気力が先に無くなって、ループは途切れてしまっている様です

仕事の場合、得られる快感は殆どが「達成感」になるかと思いますが、
小さな達成感を得る為に、
・大きな一つの目標を、かなり小さな多数の目標に分ける
・一つ一つの目標と予定を明確にする
・出来るだけ一つずつクリアしていく

等を行う様にしています。

それに加えて、達成感の妨げになるかもしれない物を、
予め消す様にもしています。
・宙に浮いている業務がある場合は、先にその予定を確定させる
・やるべきかどうか解らない予定は、いっその事捨ててしまう
・出来るだけやりたくない事はやらない(少し問題かも知れませんが)

等々。

人それぞれやる気を保ち続けるやり方は変わってくるとは思いますので、
一度、自分に合ったやる気の出し方を考えてみてはいかかがでしょう。

少なくとも「やる気なんていつでもどこでも無限に湧いている」
という考え方をされている方は、
少し考えを改めて頂いた方がいいと思います。

とまぁここまで偉そうに語ってきましたが、結構うろ覚えです。
もっと細かく色々と要素があった筈なんですが・・・w
気になった方は調べてみてください。

では。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-af2c.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月 8日 (木)聞くより見るよりやるが良い

おはようございます。本日の当番、プログラマーのM.Oです。

さて、今回は先日研修旅行に行ってまいりましたので簡単に報告します。
詳細は後日AGWEBレポートが上がると思いますのでそちらを確認してください。
今回、私は国立公園の散策、ショー観覧、射撃、乗馬をしてきました。
全部初体験のため、どきどきしながら楽しんできました。

まず国立公園の散策は、気候や土地の隆起、植生等日本と違い、興味深いものでした。
砂漠で雨季と言う事もあり、ところどころ丈の短い緑があるといった所から、
川の付近に行けば周囲の岸壁を見上げなければぱっと見は日本と同じような印象がある場所。
そして、杉と同じ場所にサボテンがある場所等、不思議な印象を受けました。

ショーはと高さを使った空間的でアクロバティックな物でした。shine
演出者がその時その時に何を注目させたいか、
また、場面場面をスムーズにするためにどうしていたか、
そういった演出や構成。また、演者はメインだけではなく、
スポットライトの当たらない人も、全力で演技をし、
全体での調和と一人一人の力を感じさせられました。

射撃はインストラクターの説明を注意深く聞き、
最初はおっかなびっくりと撃っていました。
デザートイーグルは自分で撃った際は手への衝撃impactが他と比較にならず、
衝撃で銃口が上がりますが、的へは普通に当たり、
マシンガンはフルオートで撃つと照準がぶれ、
着弾位置がぶれてしまいましたが、弾数でフォローでき、
思っていたより的に当たりました。
他にも拳銃を数種、ライフルを1種撃ちましたが、どれも的によく当たり、
武器として誰もが使える物は優秀と言うことを実感しました。

乗馬horseもガイドの人の説明をよく聞き、カウボーイが乗る馬を決め、
馬に乗り、鐙を調整してもらったら特に練習もなく、早速一列で渓谷を回る事になりました。
基本並足で前の馬についていく感じです。
たまに前と距離が離れたり、曲がったり、草を食べたりするので、
その時は手綱を引いたり、お腹を蹴ったりしますが、
馬が賢く、さらにカウボーイの方がフォローしてくれたため、
大きな問題もありませんでした。
今回は、馬に乗せてもらってありがとうと言う感じでした。

さて、今回の旅行は初体験だらけでしたが、やってよかったと思います。
受けた刺激をゲーム作りに反映していき、
やりたいと言わせるゲームを作っていくパワーにします。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-0cd8.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月 5日 (月)お休みのお知らせ

アクセスゲームズ研修旅行のため下記の期間お休みさせていただきます。

12月5日(月)~12月7日(水)

次回は12月8日(木)となります。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-1763.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月 2日 (金)切り替え

おはようございます。本日の当番、ゴルファー兼プログラマのJ's.Kです。

先日、11月末でありながらポカポカ陽気の中、半袖でゴルフ!golf
81の好スコアを出しましたが、パターの下手さに頭を抱え中です。
でも、ハンデキャップが9になったので、晴れてシングルさんです。


さて、本日のお題は、「切り替え」です。


私は、帰宅する時、会社の事はスポーンっと忘れるようにしています。
というか、会社から一歩出て、帰って何をするか?を考え出すと自然に忘れます。

自分では、この行為が、精神的な切り替えに非常に有効であると思っています。

若かりし頃は、家に帰っても仕事の事を考えて、自宅のPCで処理を作成してみたり
動作の確認をしてみたり、とあらゆる時間を仕事に費やしていました。

それはそれで、非常に良い時間だったのですが、遂に寝言でも仕事の事を言う始末。
しかも、休日の時間まで作業に当てていたために、様々な弊害が…

外出しなくなった…
友人と遊ばなくなった…
部屋にこもりきりになった…
運動しなくなった…
箸より重いものを持たなくなった…
etc...

自然とPCが友達!になるわけで…sweat02

これはイカン!ということで、なるべく家には仕事を持ち帰らないようにしました。

と言っても、何もかもスポーンっと忘れるわけにもいきません。

明日やることを整理して、メモとして置いておきます。
そしてスポーンっと忘れます。
次の日にメモを確認して作業開始。

という流れを作っておきます。

これで、精神的には毎日リラックス。

では、身体的にはどうすれば?

私の場合は、週に1回必ずゴルフ練習場へ行きます。
ゴルフの練習なんて、体力要るのかよ?とか聞こえてきそうですが…
その辺のヘッポコとは違いますよ!

ビュアァァァン!!!と豪快に空気を裂くスイング!
バキャキャーン!!!と豪快な打球音!
ドビシュゥゥン!!!と飛んでいくボール!


濃密練習であれば10球で体から湯気が出てきます。
大体これを100球ほど。

それ以外にも通勤の往復では、移動は早歩き、階段は一段飛ばしを心がけています。
あまり効果はないように思われますが、継続は力なり。
パワーアップ効果は微妙ですが、体力の減退を食い止める効果は十二分にあります。

しかし、プロジェクト終了直前にもなると、疲労困憊
精神的な切り替えはできても、身体的には…ムリです…

なので、プロジェクト終了後の休暇を利用して、元の体に戻すべく運動します。
脳ミソが筋肉になるくらい、普段の就業中とは切り替えて運動します。

もちろん、この休暇中は、精神的な切り替えもします。
旅行に行ったり、一日中寝たり…

今回の休暇で、精神的にも身体的にもうまく切り替えができて、リフレッシュ!
良かった、良かった。

そう、実は私、この文章を書いている前日まで休暇中でした。
いや~最高の休暇でした。

よく働き、よくリフレッシュ。

これに限りますね。


さて、研修旅行で身にまとった「脱げない肉ジャンバー」を削ぎ落としますかね。


あとはパターが上手くなればなぁ…

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-b855.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)

2011年12月 1日 (木)グッドナイト、ビターハーツ

気がつけば、今年も12月になってしまいました。
本日の当番のM.L.Kです(LはLeaveのLです。Leave&Go!!)。

いつもはメディアンカットが云々とか言って悦んでいるのですが、
今回はちょと時間がなくて、メディアンな記事はカットとなってしまいました…。
楽しみにしていた良い子の皆んな、ゴメン。

さて、唐突ですが、アクセスゲームズの面々は、明日からの研修旅行のため、やや浮足立っております。
出版業界などでは、年末年始のお休みに合わせた締め切りを敢行する、「年末進行」なるものが良く知られていますが、旅行を前にして、今のアクセスゲームズでも似たようなカンジで「進行」しております。

と言うワケで、夏休みの宿題は8月31日に全部やるのがモットーの、「すぐやらない課」勤務のワタクシめも、例に漏れることなく忙しくしております。
ええ、小人ほどこういう時に忙しがるものですから!

つか、この記事を書いている現在、11月30日の32時です。
読書感想文を最後に残して、泣きながら推薦図書のあとがきを写した記憶が、苦い思い出として蘇ります。

まあ、察して頂けているかと思いますが、実はネタが全く思いついておりません。

とりあえず、今はシュワっとしてる麦の発酵した汁のことで頭がいっぱいです。

この業界は厳しいことも多いですが、大抵は発酵した汁でなんとかなることもあります。
酸っぱいものを食べると身体の疲れがとれるカンジで、心の疲れにも効くみたいな。

ほど良く気持ちよくなったところで、ぐっすり眠る。
ベタですが、歴史的にも最強のストレス解消法ですね。

と言うワケで皆さん、ごきげんよう。
おやすみなさい。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2011/12/post-1296.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0) | トラックバック (0)