カテゴリ:ゲームを作る( 118 )

HTML5とCanvas

仕事でWebサイトの話とかしてたら、以前テストしていたCanvasのプロジェクトの続きを作りたくなったので、引っ張り出してきた。

が、現時点で、ゲームに必要なものがほぼ揃っていて、作る必要がないくらいだった!

JQueryを最新のものに差し替えても、問題なく動作。
無駄な.cssと.jsを削ったくらい。

マウスもキーボードも対応してるし、オブジェクト化も既に対応していた。
あとは、実装してないのは、サウンドくらいか。

しかし、HTML5とCanvasでゲームをスマートに作ろうとすると、スーファミを彷彿とさせる。
背景をスクロールさせたいと思うと、Canvasに画像を表示するより、
<div>タグで、レイヤーを作って、absolute指定で重ねられるのが便利。
スーファミは、BG面を4面持てたんだが、HTMLならいくらでも増やせる。

スクロールするプログラムが面倒なら、スクロールするGIFアニメを作って貼るだけで良いしね。

加算半透明っぽい処理ができるだけで、Javaアプレットより上だし(笑)、
何より、60fpsが楽にでるのがいいわ。

まあ、実際、60fpsぴったりは無理なんだけど。

※JavaやJavaScriptで使用できるタイマーは、ミリ秒単位での指定なので、
 60fps=16.7ミリ秒という指定ができず、16.0か、17.0になるため。

ここまで作っていたのを忘れて放置とはもったいない。
もう少し、先に進めてみよう。
[PR]
by miries | 2015-06-10 09:41 | ゲームを作る

Javaアプレットの衰退

2013年に、「将来アプリをブロックする」という警告に対して、
アプレットオワタ…というブログ記事を書いたんですが。

トラックバックをつけてくれた方が居たんですよ。

これからの正男界はどうなるか、どうするべきか
http://mugi.hp2.jp/masao/uncategorized2/2757


私と同じように、カスタムできるゲームを公開されている方です。
2013年当時、やはり別の言語への移植を考えられていますが、
設計方針などをみると、私と同じような考えの方だと推測します。
(過去の資産を切り捨てず、重視するタイプ)

私の方は、もうJava(アプレット)にうんざりして、研究やめちゃいましたが、
HTML5のCanvasの方では、60fps出せるプログラムも作ってるので、
カスタムカードくらいなら、単純な移植で、1ヶ月もあれば、できる…はずなんですよね。
今は仕事が超デスマーチなんで無理なんですが。

スマホ版は作ってないけど、インターネットから素材を拾ってくる方式で、
作れないこともないので、ちょっとだけ仕様を考えた程度。
google playに蹴られたら、野良apkを配布する形になってしまいますが、
それって結局、Java Appletの警告&ブロックと同じ問題になってしまうので、
最低限 GooglePlayに載せたいんですが。

Javaのプログラムの移植がめんどーなので、iOSは考えてないんですが、
一度JavaScript&canvasにしてしまえば良いんですけどね。

さすがに、モバイルのブラウザでは、30fps出すのも辛いので、まだまだゲームは無理っぽい。
ああ…だれか、半年ほど自由な時間をくれないだろうか。
[PR]
by miries | 2015-05-07 09:57 | ゲームを作る

忙しす…

作りたいアプリがいっぱいあるんだが、忙しくて何もできん。

一方、他のプログラマは、仕事でも暇してるぐらい仕事が無いのがうらやましいな。
[PR]
by miries | 2015-04-10 10:02 | ゲームを作る

久しぶりに仕事の話。

4年ほど前、ガラケーのソーシャルゲーム作ってたってのを、ちらっと書いて行こう、
表立って仕事の話をしたことがない気がする。

去年(2014年)は、久しぶりにコンシューマーゲーム機(PS3)でリリースできたよ。
同時期に、ヘルプとしてVitaのゲームにも関われたし。
同時期ってのが、またデスマーチっぽいよなぁ。

それにしても、コンシューマ機は、GBAのアニスのアトリエ以来だから、感慨深いわ。

その間…

・Webデザイナー(プログラム含む)
・デザイン校正
・ガラケーアプリ
・その移植(ドコモ⇒au⇒ソフトバンクで全キャリア制覇)
・ソーシャルゲーム

色々やったなぁ。
リリースしてないの含めると、スマホアプリもあったんだけど。

というわけで、自分のスマホアプリを作り始め、
リリースできるくらいのクオリティのものは出来たと思うんだが、
仕事で緊急案件が来たおかげで、ほったらかしになってしまった。

裏では、某サイトも着々と新バージョンを作っているし、アプリもこっそり作ってるんだけど…。
果たして公開できるのだろうか…。
[PR]
by miries | 2015-02-21 21:34 | ゲームを作る

Javaでリフレクションをやってみる

某雑誌でかなり前に取り上げられていたんだが、思い出して作ってみた。
リフレクションとは、簡単に言うと、String型に代入された文字列で、クラスを定義する、というものだ。

String hoge = "testClass";

という変数から、 testClass.java のインスタンスが作れるのだ。

雑誌で取り上げられていたネタとしては、メンテナンスフリーとして使える、というものだった。
新しいデータクラスが必要になっても、外部から文字列を読み込めるようにしておくと、再ビルドすることなく、取り込める、とかなんとか。

で。
実際やってみると、これが全くのデタラメである(笑)

私は、eclipseなどは使わず、コマンドラインから javac でビルドしているのだが、
ソースコード中で一度も testClass を使わなければ、そもそも、testClass.java はビルドされない。

そりゃそうだ、ビルド時は、単なる文字列なんだから。
なので、ClassNotFound になる。

これを回避するには、だ。

・ソースコードのどこかで、ダミーでいいので、testClass を使う
・本プロジェクトとは別に、testClass.java をビルドして、.classを作り、使う

とかなんとかして、.class 作る必要がある。
スマートなやり方じゃないよなぁ。
[PR]
by miries | 2014-11-27 01:06 | ゲームを作る

絶賛炎上中

よし、炎上プロジェクトのヘルプ分を何とか仕上げた。
明日が期限だから、上々だな。
 
とにかく、もうソースがヘタレすぎて見てられん。
やたらと ○○Base という基本クラスを作っているだが、作ってるのが素人かと疑いたくレベル。
  
選択肢用の SelectBase というクラスを作り、継承して、
キャラ選択用、装備選択用のクラスを作っているのだが、
”現在選択されているものが変更された”というイベント検出が、なぜかSelectBaseではなく、継承側で実装されているため、キャラ選択にはあるが、装備選択には無いというクソ仕様。
  
そのため、装備品を選択中に、リアルタイムにパラメータの更新(攻撃力+10とか)ができないという…。
俺の作業は、まず全部の継承クラスにイベント検出をつけるというところからなんだぜ…。
[PR]
by miries | 2014-08-20 07:54 | ゲームを作る

私の現状

かなり更新していませんが。
大型のプロジェクトのプログラマーリーダーとしてお仕事してます。
まだまだ一般には告知されてませんが、来月辺りに発表されるのではないでしょうか。

で、マスターも見えている感じなんですが、なんと!
炎上しているプロジェクトのヘルプに召喚されたわけですよ。

リーダーを火消しに回さないといけないほどの自体ってことですな。

そのせいで、私のプロジェクトのプログラマーは実質一人になり、
炎上の方は、9人ですよ。

そして、実際ヘルプに入ってみて、なるほど。これは炎上するわ。
全くつながりができてないじゃん。

そして、そもそも繋がるように作って無いじゃん。

(ゲーム)プログラムの王道として、メインループの中でシーンを分けるというのがある。

switch( scene ){
case タイトル:hoge();break;
case メニュー:hoge();break;
case キャラ選択:foo();break;
case バトル:hoge();break;
case リザルト:hoge();break;
}

まあ、こんな感じ。
各シーンの中で、共通に使える部分などを別クラス化したり、小項目で分けたりするけれど、あまり細分化しないものだと思っていた。

ところが、炎上プロジェクトで、キャラ選択の部分に手を加えて欲しいと言われたのだが、
驚くべきことに、それがソースのどこにあるのか分からないのよ!
この長年他人のプログラムを見てきた私がw

character_select
という分かりやすいフォルダがあるのに、そこにあるのは、別のプログラムw

ようやくたどり着いたキャラ選択。

私が作る場合は、上記の例で、foo() に当たる部分にその処理を書くわけだが、
この炎上プロジェクトでは、だな…。

└ 何かのインターフェース
 └ 何かのインターフェース
  └ 何かのインターフェース
   └ 選択クラス

とかいう感じで超階層。
しかも、CMenuBase とか、キャラ選択とはかけ離れた命名規則。

正直、発狂するレベル。
[PR]
by miries | 2014-08-12 00:29 | ゲームを作る

ミドルウェア改修

今開発しているプロジェクトは、ミドルウェアを使用している。
ミドルウェアと言うより、フレームワークに近いもので、システムほぼ全てそのミドルウェアで動いている。

不具合があればサポートに連絡して対応してもらうのが筋なのだが、
オープンソースなので改良が自由にできるのが災いしてか、明らかな不具合が残ったままになっているものもある。

みんな、発見しても独自に修正して報告しないんだろうな。
私は即効報告して直してもらうんだが。

で、このミドルウェア、フォント周りの作りが荒い。
通常の文字を出すだけなら良いのだが、いまどき単色の文字でOKってことはないだろ。

アウトラインやドロップシャドウが実装されているのだが、見るに耐えないレベルで、
こんなんでゲーム作ったら、ボロクソに叩かれるレベル。

というわけで、フォントデータを作るツールのソースから改造し、表示するためのシェーダーも原型が分からないくらい書き換えた。

その結果、1リソースで、通常文字、アウトライン文字、グラデーション文字に対応。
ドロップシャドウは対応外としたが、そもそも、2枚重ねれば再現できるので問題なし。

アトリエのときも、フォントのためのツールを作りまくった覚えがあるわー。
懐かしい。
[PR]
by miries | 2014-02-13 02:01 | ゲームを作る

前代未聞。

このブログに訪れた方の一部の方はご存知だろうが、私のプログラム暦は長い。
某スレで神認定(笑)された、GBAのアトリエは、もう10年前の作品だ。

残念ながら、あれ以来コンシューマ機では作っていないが、携帯電話のアプリ、ソーシャル、そして、企業のWebサイトをちょこっと制作・運営した程度であるが、どれも担当はプログラムだ。

職業で10年以上プログラマやってる人って…どうなんだろう。
普通は、ディレクターとかやらされそうだけど、やっぱプログラムが楽しいからな。

最近、日経ソフトウェア読み始めたけど、やっぱり面白い。

で、今関わってるプロジェクトなんだが、実に久しぶりにコンシューマ機(※)に戻ってきた…
んだけど、正直、プロジェクトがグダグダすぎてね。

私は、プロジェクトが決まったら、全体の構成とスケジュールから入るんだが、
その辺に触れると、「それは考えてなかったなー」なんて言葉が出たりしてね。

仕様書がない…というのは業界の常だが、そんなものは無くても、
形が決まっていれば作れるわけですよ。

例えば、対戦格闘であれば、ある程度フォーマットがあるわけで、それをあらかじめ組み込んでおけば良い。
残念ながら今のプロジェクトは、あまり前例のないジャンルでね。

年末までには仕様を作る ⇒ 1月のMTGで ⇒ もうちょっと先

という、デスマーチのフラグが立っている状態ですよ。
そこで、昨日出た、長いプログラマ人生で初めて聞くセリフ。

「仕様がまだ決まらないので、プログラマの方は残ってる有休を取るなら今のタイミングで」


なんと!
プログラマが休んで良いプロジェクト!!


…。
そんなことあるかい!


こちとら、社内初のプラットフォーム(※)で、1から作ってるんやで。
ゲームの仕様以前に、セーブ機能とか、サウンド、入力周りとか、
やることいっぱいあるわ!!
サンプルプログラム見るだけで、

そんなこと言いに来る間に仕様考えろよ…。



※でも、最新機種(PS4とか)じゃないんすよ。残念ながら。
[PR]
by miries | 2014-01-21 09:31 | ゲームを作る

12月20日に何があったのか。

ゲーム開発について書くのは、ワンダースワン開発秘話以来だが、今回は開発完了する前に書いてみたいと思う。

現在は、クライアントから開発を請け負う受注開発をしている。
20日は、α版のROMをクライアントに提出する日であった。

クライアントは、そのROMを見て、各種判断・評価をするため、
評価版ROMと言われることもある。

この評価版ROMを12月20日に提出することは、当然ながら開発開始時に決まっている。
期間で言うと何ヶ月も前だ。

その間、なんどか確認してもらいつつ、クライアントの意向を反映してくわけだが、
なぜが最後の評価版ROMを確認してもらうのが、12月20日の定時以降という意味不明なスケジュール。

そこでクライアントにダメだしされたら、修正する時間も無い。
3連休が飛ぶわけだ。

私はプログラムのリーダーを任されているが、イベントシーンの完成がぎりぎりで、前日の19日にようやく自分の目で完成シーンを確認できた。

感想は「何だこのクソシーンは」。

何をやっているのかが全くわからないのだ。
カメラを数フレームごとに切り替えているため、状況の把握が全く出来ない。
即効でディレクターに文句を言う。

「意図通りです。」
「上にも確認してもらってOKでてます」
「もっと悪かったのを修正してここまで仕上げたんです」

これまで同様の予想通りのコメント。
意図通りなら良いわ、とその場は引き下がる。


前述したとおり、これまでも何度かクライアントには定期的に確認をしてもらっており、
その都度、修正指示を頂いている。

例えば「効果音が耳障りである」とかだが、これらクライアントの意見が、私の意見とほぼ同じであった。

だが、後から言っても、「後出しジャンケン」なので言わないでおいたが、
さすがに今回のイベントシーンは、文句を言わざるを得ない出来だった。

が、直す気はないらしいので、そのまま20日の定時を迎える。
定時過ぎているのだが、会議が終わるまで待機。

そして1時間以上の会議後して、クライアントから出た意見が、
「イベントシーン以外は問題なし。イベントシーンを作り直し。」

私のゲームクリエイターとしての適性が、まだ健在であると証明された瞬間だ。
が、当然その後、修正版を提出しなければならないわけで。


確認の日を1日前日にしてもらえば、調整する時間はもっとあったはず。
私の意見を聞いて、前日から調整案を検討していれば問題ないはず。

それ以前に、出来が悪いのを一度修正して、あの出来だから、もうディレクションのセンス的にどうしようもないんだろうが。
[PR]
by miries | 2013-12-22 11:23 | ゲームを作る