KLabGames Tech Blog

KLabは、多くのスマートフォン向けゲームを開発・提供しています。 スマートフォン向けゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。 このブログでは、KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、広く紹介していきます。

プログラマのfmystBです。

普段3D関連のプログラミングをする事が多いのですが、様々な局面でちょっとしたテスト用のモデルが欲しくなる事があります。でもわざわざアーティストに頼むほどでもない・・・。そんなときBlenderが使えると便利でして、日頃とてもお世話になっています。

毎日のように仕事でBlenderに触れているうちに、内部の仕組みを知りたくなって来たのでコードリーディングにチャレンジしようと思います。

宝が星の数ほど

Blenderには数多くの3DCG技術が集約されているので、コードを読んで楽しい場所はたくさんあるはずです。

Modifiersや物理シミュレーション部分のコードには特に興味があります。

オブジェクトの形状を便利に編集できるModifiers機能には高度な幾何学が使われていると思いますし、物理シミュレーションにはプリレンダリングの技術が使われているのでリアルタイムレンダリングとは違ったアルゴリズムを知る事が出来るでしょう。

他にも、マシン環境によっては有効となるCUDAオプションのコードを追いかけてみるのもGPGPUプログラマにとっては面白そうですし、Pythonハッカーな人はスクリプト機能の部分に興味があるかと思います。

全てを知ろうとするな

このようにプログラマにとって刺激的な内容にあふれたBlenderですが、 BlenderWikiのDev:ContentsNew Developer Info にこんな注意書きがあります。

「Don't choose a project that spans across many files and areas of Blender, since you may get bogged down trying to understand everything at once.」

Blenderは規模が大きいだけに、一度に全てを知ろうとすれば泥沼にはまるようですね。興味がある部分に絞って理解を深めていくのが長続きするポイントのようです。

ですのでこの連載でも気の趣くままに、面白そうな部分だけピックアップして紹介していきます。

準備

環境としてはMacのXcodeを使い、ソースを読むだけではなくブレイクポイントを張りながら実行する事で動作を確認していきます。(後の記事でも触れるつもりですが、Blenderはいたる所で関数ポインタを使っているのでステップ実行せずに読み進めるのはキツいです><)

ソースコードの管理はGitが使われており、ダウンロードからXcodeプロジェクトの生成まではこちらに書かれている通りです。

コマンドラインのみでビルドする方法も書かれていますが、今回はXcodeでビルドしてBlenderを起動する事が目的なのでそこまでの設定が出来れば大丈夫です。

また、ここで書かれている事の他に、Blenderは頻繁に更新されてしまうのでコードリーディング用のブランチをtagから作成しておくと便利です。この記事を書いている時点では2.74が最新安定板なので、「v2.74」というtagからブランチを作成してしばらくそこでコードリーディングを進めていきます。


@fmystB

KLabGames Tech Blogとは

KLabGames Tech Blogは、KLabの新しい技術ブログです。 これまでの、「若手エンジニアのブログ」と、 「データ分析グループのブログ」を整理して、 KLabのゲーム開発の技術を紹介するブログとして新しく作られました。

KLabでは、多くのスマートフォン向けモバイルオンラインゲームを開発・提供しています。 モバイルオンラインゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、 またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。 このブログでは特に、「DSAS開発者の部屋」だけではカバーしきれない、 KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、 幅広く紹介していきたいと思います。

誰が書くの?

社内のエンジニアが誰でも記事を書けるような仕組みを構築しました。 今後、KLabの様々な技術領域を専門とするエンジニアが、 モバイルオンラインゲーム開発で得た技術や経験を紹介していきます。 また、ゲーム開発ではエンジニア職以外でも技術的な課題を扱いますので、 ゆくゆくはゲーム開発に関わる全職種が記事を書くような体制を目指します。 ご期待ください。

どんな内容を扱うの?

KLabの技術ブログといえば 「DSAS開発者の部屋」 をご存じの方も多いかと思いますが、 こちらはインフラおよびR&D関連の記事が中心です。 それに対し、「KLabGames Tech Blog」では、 現在KLabのビジネスの中心となっているモバイルオンラインゲーム事業の技術側面のアウトプットを、 積極的に行っていきたいと考えています。

では、モバイルオンラインゲームを支えている技術とはどのようなものでしょうか。 例えば、

  • Unityや自社ゲームエンジンPlaygroundを活用したゲーム開発の実際
  • PHPやPythonで構成するサーバーサイドの技術
  • シェーダーなどの3DCGの技術
  • Jenkinsやパイプライン、Unityエディタ拡張などの自動化やツールの話題
  • AIやゲームロジック・アルゴリズムなどの話題
  • ゲームのバックグラウンドで頑張っているデータ分析の話題
  • 同期対戦などの、ネットワークの話題

他にも様々な話題があると思います。 これらの幅広い技術領域を、広く深く紹介していきます。

最後に

KLabは、「世界と自分をワクワクさせろ」というビジョンを持っています。 私たちは、ゲームを通してユーザーさんにワクワクを届けるだけでなく、 このブログを通してゲーム開発者の皆さんにも、 KLabらしい技術的な『ワクワク』をお伝えしていきたいと考えています。

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

↑このページのトップヘ