ほげたつブログ

プログラムとアニメーションをかじって生きてる

パッケージにアンダースコアが入っていた場合にJNI関連でハマったのでメモ

Qiitaに投稿した。
Java - パッケージにアンダースコアが入っていた場合にJNI関連でハマったのでメモ - Qiita [キータ]

cocos2d-xとかでクロスプラットフォーム開発やる時にJNIを書かないといけない場面が多々あるけど、シミュレータだけハングする問題とか色々と落とし穴があって面倒。

あと毎年の事だけど、勤労感謝の日に出勤してた。

中堅と呼ばれ始めたゲームプログラマだけど、新人時代の事を書いてみる

入社前

普通の高専生だった。総合的には平均以下の学力で、プログラムに関しても授業でCをちょっとやっていたくらいだったから、インターンで日立に行った時に書いたプログラムを見せたら「高専生ってこれくらいのレベルなんだ…」って驚かれ方をされるくらいには酷かった。まぁ高専生なんてこんなもんだよね。全体的にヌルい。大体は学校のコネで仕事を決めて、そこで定年まで安定した仕事ができればいいなって感じにゆるく考えてる。

就職活動の時期になってから、ゲーム好きだしゲーム作る仕事がしたいなって気持ちが出てきてコンシューマ系のゲーム制作会社を片っ端から受けてみた。本当は企画屋をやりたかったけど、競争率が高そうだからプログラマやるかーなんて考えているしまっている糞コード量産機だった。もちろん落ちまくった。でも12月の頭に、最後の一社と決めていた会社から奇跡的に内定を貰えた。

入社

入社したのは名前を出せばゲームをやってない人でも知ってるくらいの中堅ゲーム会社だった。その年の新人は自分を含めて8人。それなりの規模の会社だったので、最初の二ヶ月は研修として色々な部署で仕事体験みたいなことをさせてもらった。それからコンシューマコンテンツ開発部に配属され、プログラムの研修として上長から出された課題に取り組んでいた。その頃は床井研究室にお世話になった。

この頃の自分はよくやっていたなと思う。新人らしくやる気に満ち溢れていた。研修とかいいから早くゲームが作りたいという気持ちが強かったので、課題を終わらせては上長に「そろそろゲームを作らせてくれない?」って感じに催促しに行ってた。新人だから人月の話とか大人の事情なんて知らないし。そうやってしつこくしていたら開発中のDSゲームのソースコードを見せてくれることになった。それからは食い入るようにコードを追っていた。でもそれだけじゃ放置プレイされそうな臭いがプンプンしていたので、目についたコードを綺麗にして上長に見せてドヤァァしていた。忙しいのに本当にウザかったと思うよゴメンね上長。

入社して三ヶ月

念願叶ってDSゲームの開発メンバーとしてアサインされた。テンション上がりまくった。
一週間後、プロジェクトがペンディングした。
もう笑うしかないよね。ちょっと落ち着いた。そのまま夏休みに入った。

夏休み明けから同じメンバーで、新しいプロジェクトがスタートした。ペンディングとは言いつつも、名前とゲームのメインコンテンツ部分を作り替えて同じようなゲームをまた作ってた。他のプログラマはプログラムを書きつつディレクションもやっている上長と、ベテランのプログラマが二人だけだった。その頃も時間を見つけては他の人が書いたコードを読んでいたな。

入社して半年

ベテランプログラマの一人がゲームのメインコンテンツ部分を作っていたのだけど、その人は良くも悪くもベテランでお固い人だったので、遊びとしては面白くないものが出来上がっていた。
そもそも企画から面白くなかったけどね。
とはいえ、実装が真面目過ぎたのが仇となり手触り感がだいぶ悪かった。そしてディレクタは何を思ったか、プロジェクト終盤にメインコンテンツ部分を新人に作り直させるという無謀な決断に出たので、仕方なくフレッシュマンパワー(有り余る時間と体力)を消費して作り直した。作り直し前よりは良い手触り感になったと思うので、やって良かったとは思う。(コードとして綺麗なのかはさておき)
企画は同じだから糞には変わりなかったけどね!
案の定売れなくてチームも解散した。プロジェクトが終わってからは振休で一ヶ月も出社せずに家を守ってた。

二年目

部署移動になった。コンシューマコンテンツ開発部であることは変わりなかったけど。そこで自分の師匠と呼べる人に出会った。自分の人生を変えたと言っても過言じゃない人。とにかく今まで見てきたコードとは違う、美しく合理的なコードを書く人だった。自分はその人のコードに惚れたのだと思う。毎日欠かさずコミットログを漁り、その人がコードに込めた考えを読み取ろうとしていた。それがわかった時は達成感で満たされていたし、わからなかったら意図を教えてもらってた。この頃になると新しい技術やコードの書き方を模索するのに夢中になり、プログラマとしては糞コード量産機からダメプログラマくらいまでには昇格していたと思う。仕事は忙しかったけど、今の自分を形成した大事な一年だった。そして三年目になる直前に、会社が買い取られた。

それから書くのが面倒なくらい色々あって現在(五年目)

ばっちりGとかDとかのソーシャルゲームの大波に飲まれた時期もあったけど、今は小さなゲーム開発会社に転職してプログラマやってる。コンシューマゲーム業界ではそこそこ有名で、技術力で勝負していくような会社なので学ぶことは多い。ダメプログラマから、やっとプログラムで飯食ってますって言えるくらいの普通レベルにはなったと思う。

まとめ

つまり新人の頃は他人の美しいコードでも糞コードでも、とにかく色々と読んでみることが大事ってこと。美しいコードに出会って自分でも書いてみたいと思うようになったら、途端にプログラムは楽しくなる。あと自分はC++を書く機会が多いけど、C#とかPythonとかJavaScriptとか色々と使ってみると視野が広がると思う。PHPはもうお腹いっぱいです。GitHubとかQiitaとか技術系ブログを見れば高いレベルで構築されたプログラムが公開されていたりもするし、読むべきコードは尽きない。自分もまだまだ25歳になったばかりの若造だから、もう一つ上のステップに行きたいと思ってる。

Sublime Text 2 + Visual Studio 2012でC++開発するための設定

Qiita に投稿した。
Sublime Text 2 + Visual Studio 2012でC++開発するための設定 - Qiita [キータ]

Sublime Text が優秀過ぎて鼻血出そう。
ずっと xyzzy 使ってきたけど、今後のアップデートとか Mac でも使える点とか考えると、乗り換えるべきかなと思ってる。
まだライセンス買ってないけど、SublimeClang が Sublime Text 3 に対応したら買うつもり。

今さらだけどDeferred Rendering書いてみた

ゲームプログラマンだけど、特にCG系に疎いので今まで書いてこなかったDeferred Renderingを書いてみた。

参考にしたサイトは以下のサイト。
http://www.codinglabs.net/tutorial_simple_def_rendering.aspx

書いたのは1光源のやつだから、これから光源増やして影も付けていきたい。


f:id:hogetatu:20131006073114j:plain

プログラムの設計はシンプルに

会社でプログラムの設計に関して相談を受ける機会が増えてきた。
ちょっとアレな設計になっているものの大半は複雑に考え過ぎていたり、道理に適っていない事が多い。
設計というものはもうちょっとシンプルに考えていいと思う。
オブジェクト指向なんて難しく言っているけど、日常に存在するもので考えると簡単だったりする。


例えば目玉焼きを作るとする。


まず必要なものは「卵」。
卵は普通の安い卵かもしれないし、ヨード卵・光かもしれない。
しかし完成した目玉焼きの味に違いはあれど、「目玉焼きを作る」という目的であれば何の卵であろうと関係ない。
ただし、それが結果的に目玉焼きにならないのであれば、それは卵ではない。
「ヨード卵 is 卵」だけど、「トム is 卵」ではない。
トムをどう調理したって目玉焼きにはならない。


次に必要なのは「熱」。
熱は卵を目玉焼きに変える。
しかし熱は魚を素材とすると焼き魚に変えるし、トムを素材とすると焼死体に変える。
与えられたものによって振る舞いを変えるので、何も卵専用のものではない。


卵はあくまで卵であって、それ単体で目玉焼きにはなれない。
(そんな卵、道理に反している。)


「目玉焼きを作る」という目的であれば、これ以上の工程は必要ない。
これ以上の工程を入れても複雑になるだけだ。


目的が「目玉焼きを作る」ではなく「美味しい目玉焼きを作る」というものに変わるのであれば、その時にヨード卵・光を使えばいい。
トムへの嫌がらせの為に不味い目玉焼きを作りたいのであれば、腐った卵を使えばいい。


何を作りたくて、そのために何が必要なのかを考えれば、シンプルに組み上げられるんじゃないかな。