サンゴラボ

4年目ソシャゲエンジニア

ソシャゲ会社に入って2年ちょっとくらいのまとめとこれから

ソシャゲ作ってる会社に新卒で入って今年で3年目になった。このブログは入社当時になんかアウトプットしなきゃと思ってつくったものなんだけど、最近はまったく書いてないし、存在すら忘れてた…

定期的にアウトプット衝動に駆られるけど、普段からやってないからなかなか書けない。今回は、そのアウトプット衝動と帰省が重なって暇だったので、なんとなく書いてみた。だから、普段mac使ってるけど、実家のWindows使って書いてる。OSはいいんだけどJISキーボードつらい、ソフトもいれたくないからMarkdownはChromeのエクステンションを使ってる。

何書くかなあ?と思ったけど、久しぶりだし、会社入ってやってきたことのまとめとか環境や思考の変化を書いておく。ソシャゲエンジニアとしてはレアケースな気がしている。

心機一転してブログとか書こうとすると、過去記事を一気に消したくなるけど、今回は残しておく。今見ると、ああ…とか思う。

概要

  • ソーシャルゲーム作ってた会社の環境は変わり続けてる(ブラウザとネイティブの話)
  • フロントエンドエンジニアである僕自身が環境の変化にどう対応していくか
  • おもしろいと思ってることがあるので、やれるうちはやる

やってきたこと流れ

1年目

研修があったので本格的に現場に入っていったのは7月くらい。ガラケースマホ向けのいわゆるソーシャルゲームを作っていて、技術的にはLAMPとHTML/CSSでオーソドックスな感じ。Flashが多用されていること以外は一昔前のwebページと大差ない。JavaScriptはほとんどなかった。

Flashアニメーションすげーとか負荷つれーとか思ってた。とあるプロジェクトでインフラはやらないけど、サーバサイドからフロントエンドまでやって、つらい運用を経験できたので結構ためになった。オーソドックスなwebだったので、聞いたことがない技術はほとんどなかった。知らなかったのはFlash合成くらいかなあ?

自分の知ってるwebじゃないと思いながらスマホ向けにJSいじってたのもこの時期。コピペじゃないJSを書いてるひとなんていなかったんじゃないかなあという印象がある。外を見ればクライアントサイドMV*、altJS、SPAあたりがちょこちょこ出てきてたと思う。SPAはワードとしては定着してなかった。個人的にこのあたりに一番興味をもっていて、実際に大規模なアプリ作りたかったので、勉強して社内SNSで煽ったりしてた。当然、生意気だったわけだけど、僕の話を拾ってくれる先輩方がいたので、ありがたいなと思ってた。生意気だけど、そこそこできる新卒くらいには思われていた気がする。

市場的にはブラウザが大きくてネイティブはパズドラくらいしか出てなかった。業界の雰囲気はネイティブの流れが少しあった。まあこの時期にちゃんとしたネイティブゲームを仕込んでいた会社が現在ストアでトップランカーになってるんだけど…

2年目

優秀な後輩が何人か入ってきた。みんな今では貫禄がでてきてたくましい。

自分の業務についてはあまり記憶がない。確か運用プロジェクトは抜けていた気がする。1年目の煽りが効いたのか、新規ブラウザゲームで大規模なHTML5を使って作ることになったんだけど、僕はタイミングが悪くて入れなかった。プロジェクトには入れなかったけど、個人的に勉強は続けてた。

市場はパズドラがすごい勢いだった。他には黒猫のウィズとかブレフロとかが出始めてはやり始めてた。2年目後半はすでにネイティブばっかりになってきてて、ブラウザはカードバトルとリアルタイムGvGくらいしか出てなかった。

そういった流れもあってか、業務でネイティブを触る機会がきて、Cocos2d-xでモックみたいの作ってた。何かゲームが出たわけでもなく、僕自身も何をアウトプットしたのかわからないけど、いろいろ気づきはあった。以下気づき

  • ゲームプログラミングとやらが必要になってきた
  • ネイティブつらそう、ブラウザゆるふわ
  • C++は僕には早かった

1つ目は、メインループとかシーンとかゲームプログラミングの用語がいっぱい出てきて、圧倒されたことが始まり。プログラミングを始めた頃にゲーム作ったりしてたので聞いたことがないわけではないけど、しばらくブラウザゲーム作ってたので忘れてた。ブラウザゲームはwebアプリと変わらないし、基本イベントドリブンで書けるのでメインループなかった。

2つ目は、実際に運用となるとネイティブはつらそうだなということ。主に更新性とUI関連なんだけど、ネイティブやっても結局はブラウザとHTMLみたいのが欲しくなるなと考えてた。

3つ目は、急にネイティブでモック作る仕事が来たときの話。期間と僕のスキルを考えて無理だなと思ったので、Cocos2d-xのJavaScript Binding(現在はCocos2d-JS)というのを使った。もともとCocos2d-xの組み込みスクリプトLuaとJS)の設計思想がいいなと思っていたのも選んだ理由。モックを提出した後にネタバレしたけど、バレてなかったので結構使えるなと思ったのも気づきのひとつ。C++が僕には早かったというかほとんどやっていないというのが実際のところ。モックといえど、それなりに仕様が盛り込まれてたので、ソースコードは結構増えてた。この時、このプログラミングじゃスケールしないと思ったことは1つ目の気づきと共通している。

そんな気づきがありながら、2年目の終わりの方で運用中のブラウザタイトルに戻った。このあたりで役割的にはJavaScriptを書くフロントエンドエンジニアになった。

3年目

また後輩が増えた。すごい優秀。

業界的にも会社的にもネイティブの流れが加速してる感じ。それで、2年目のときからだんだん増えてたけど、コンシューマー出身者がすごい増えてきた気がする。同時に嗅覚の鋭いwebエンジニアは他に移っていた印象がある。

ゲームプログラマとwebエンジニアは結構コンテキストが違う。今のスマホゲーム業界はそんな異なるコンテキストが入り乱れてる感じ。サーバサイドは今のとこどっちでもあまり変わらないけど。

僕自身はブラウザタイトルにいるけど、ガッツリ運用に入っているわけではない。いろいろ実験できるような環境にいるので、何かしらアウトプットして貢献しようとしてるのが最近の動き。簡単に言うとブラウザでもちゃんとしたゲームを作れるようにしたいということ。ブラウザというプラットフォームを使ってゲーム作り(設計からプログラミング)を学びたいと言ったほうがしっくりくる。ブラウザゲームも求められるレベルが上がって、遊びの要素が増えてくると思うので、今のうちやっておきたい。まあ市場に投資をしても仕方がないとなったら引き上げだけど、まだちょっとはやれそう。

こんなこと言ってるとブラウザでネイティブに勝ちたい奴、みたいに思われるかもだけど、ちょっと違う。ブラウザでもネイティブでもやることは本質的に一緒だと思っていて、僕自身が付け入る隙がありそうだからブラウザでやってみる感じ。まあ、それブラウザでよくね?というネイティブゲームがいっぱいあるから、そういうのはブラウザで作ろうよと提案していきたいとは思う。

今必要なこと

ゲームの作り方

上で書いたけど、これは主に設計やプログラミングの話。こういうのは、スクールガールストライカーズの 内製クライアントエンジンみたいにあるとこにはあるんだけど、民主化はされてない。僕が必要としているのはエンジンの設計みたいな低レイヤーのとこではなく、もっと高いレイヤーのとこなんだけど、まだ見つからない。Cocos2d-x入門・Unity入門という本があるとしたら、それらには書いてないようなあたり。Game Programming Gemsに全部書いてあるから読めば?、というのではなくてもうちょっとカジュアルに取り入れたい。このあたりはオープンなweb業界とは違うとこだなと感じてる。

ちなみにスクストの資料に書いてあることはコンシューマー出身なら当たり前のことなんだそうな。当たり前のことをちゃんとやってる感じらしい(ゲームプログラマー怖い

web技術との融合

とりあえずはブラウザ向けに作っていくので、単純にゲームプログラミングをやってれば済むというわけではない。最終的にHTML/CSS/JavaScriptにどうやって落とし込んでいくのかを考える必要がある。このあたりは流れが速いので追っていくのがすごくたいへん。最近だとビルドツールが熱い。サーバも同様にちゃんとする必要がある。

残念なこと

  • ゲームコーディング・コンプリートが欲しかったんだけど、地元の本屋には売ってなかった
  • いきなり長文書いたのでブログが続かないかもしれない