いちおくまんえん

最近はcocos2d-xでゲームアプリ「いちおくまんえん」の制作がメインです。 あとアニメも少々・・

ついにきた

休日出勤('A`)


プロジェクト大炎上中でございます。


毎日が仕様変更。そんなん終わるわけがないですやん!


来週末が開発完了予定日ですが、そもそも仕様が決まってない。画面レイアウト決まってない。素材がない。作ったそばから仕様変更。そんな状況です。


Android先行リリースなのにiPhone担当3人、Android担当私一人。ナニコレ。

iPhone担当がクリエイティブとサーバ屋と仕様決めて、作ってそれをAndroidでも実装してね。

iPhoneではデフォルト機能であるので簡単に実装出来ます!とやりたい放題やってくれて、そんな機能Androidにはありません。なので独自実装して吸収するしかありません。


更に言うと既存のゲームのガワ替えでスタートしたプロジェクトで、iPhoneはまともに日本で開発されました。
Androidは恐らくフィリピンの子会社がむちゃくちゃな作りで作成。それを日本に持ち帰ってテコ入れ。
それでも最悪品質でマーケットの評価は☆1ばかり。
普通に遊んでて10分も落ちずに遊べた試しがありませんでした。
グローバル展開することから、せめて頻繁に落ちないように更にあっちこっちから人をあてがってテコ入れ。
何とか数十分は持つように改善された状態になりましたの段階のものをベースに開発が始まりました。

すごい数の人が独自の方法で無理やり対応しているので、全く使われていないゴミソースが大量。訳の分からない場所のstatic変数でフラグ管理、あっちのバグを直せばこっちがたたず。
タブとスペースが入り混じったインデント。それだけならまだ良かったんですが、タブ幅をいくつのスペースに変えてもインデントががったがた。
1メソッド600行、11段ネスト。そしてその中であっちこっちのクラスのメソッドが頻繁に呼ばれる。
追っかけていってたら、あれ?俺今何してたんだっけ?状態。
1つのこと実装するつもりが気づいたら開いてるタブが30〜40になってるという、ね!


そしてそんな状況の中、工数見積がiPhoneと同じです/(^o^)\

ちなみにレイアウトファイルが酷いカスタムビュークラス郡によって構成されている為、デザインタブに切り替えても解析出来ず表示できないので、起動するまでレイアウトが確認出来ません。
android:hogehogeで与えたパラメータがことごとく殺されたり上書きしたりするので、どうしてこうなった!の解明に相当時間を費やされます。

なのでデフォルトのImageViewとかに置き換えたりしてるんですが

((HogeImageVIew)findViewById(R.id.hoge)).hoge()

とか色んなとこでやられてたりで修正箇所が膨大・・
なんでか普通の静的画像表示するだけなのにHogeNetworkImageViewとか使ってたり、HogeTextViewBoldのスーパークラスのHogeTextViewで既にBoldになってたりします。

後ガチャムービー再生ActivityのonPause()でfinish()してたり、1回の通信で全タブの情報もらってるのに、タブ切り替えの度に毎回API叩いて更新してたり、既存のおかしな部分修正してるだけで時間がががが

そしてほとんどの画面での実装
onClickで
startActivityForResult(intent, RESULT_OK);

onActivityResultで
if (requestCode == RESULT_OK) {
  いろいろ
}

英語でOK!!!!!!!!

ちなみにこのIntentの中身ですが、最初の画面で取得したAPIの結果をputExtra("key", getStringExtra("key"))的な感じで引きずり回してます。
毎画面20項目くらい同じこと書いてるので修正しようと思ったんですが、たまにちょっと違ってたりして罠にかかりまくったので諦め。
そしてサーバは違うブラウザゲーからの転用なので既存のネイティブゲーとの整合性取れてませんでした。
なのでマスタのカラム名や返すAPIのキー名を今回のゲームの内容に合わせて正しくしよう運動のおかげで、クライアント側は更にカオスな状態になりました。
クリエイティブも好き勝手な画像名でコミットしてくるので、同じものを表す物が全て異なるなんてザラです。

((ImageView)findViewById(R.id.leaderImage)).setBackgroud(R.drawable.character_image);
((TextView)findViewById(R.id.leaderName)).setText(unitNode.getStringValue("unit_name"));

クラス名、ビューのid名、何から何まで整合性取れてません。
APIのキー名もAndroidのIDもスネークケース、キャメルケースが入り混じってます。
APIに至ってはスネークケース、キャメルケースで違う意味持たせて管理されてたり、iPhoneAndroidで見る場所が違ってたりで、結局Android側を合わせて下さい。に落ち着くという!!

あと画像ファイル名もiPhone先行でやってたので[0-9a-z_]以外の文字が含まれた画像ファイルをリネームする処理、@2xを消す処理もほぼ必須でやってたり・・。
Automatorにワークフロー作ったのですぐ変換出来るようにはしましたが。



と愚痴を吐いてみる('A`)

いやー、ソースのことだけでなく人間関係やその他もろもろ栗山さんみたく感情の赴くままに書き綴りたい!

でも、同じ現場の人に見られる可能性が大いにあるのでこの辺にしておこう(・ω・`)

実はおとつい位に、不満をつらつらと書いてましたが、これはさすがに表には出してはいけないと公開ボタンではなく下書きボタンを押して、グッと我慢しました。



今の心境。


不愉快です!

cocos触りたい。まともなゲーム作りたい。時間がない・・・。

休みが消えてい・・く・・・