-
アーケードで稼働していたシューティングゲームをiPhoneとAndroidに移植
アーケードで稼働していたシューティングゲームをiPhoneとAndroidに移植しました。
元のソースはあったとは言え、昔のゲームでしたので、32ビットに依存したコードが多く、
64ビット向けに書き換えるのに非常に苦労しました。
スマホ向けに移植するのにあたり、ステージセレクトや難易度変更、実績処理などを追加しました。
-
アーケードでリリースされていたリズムゲームをStreamに移植
アーケードで稼働しているリズムゲームをSteam向けに移植しました。
元のプログラムは一部ソースコードが欠落しており、その部分を自前で再実装しました。
また、オリジナルは縦画面でしたが、横画面でも動作出来るよう縦横両対応のアプリとして実装しました。
メニュー周り等は、Steam向けに新規実装を行ないました。
-
とあるカードゲームのコンシューマ版の続編の作成
とあるカードゲームのコンシューマ版の続編の作成です。
元のカードは物理的なカードで、千枚近いカードがありました。
このゲームは通信バトルがあり、その通信システムの全ての設計と実装をしました。
また、カードの能力はカード毎に様々で、 前作に当たる物はほぼプログラムコードで実装していましたが、
これを機能毎に分解し、全てデータで表現できるように実装しました。
-
スマホブラウザで動作するUFOキャッチャーゲームを作成
CocosCreator上で3DのUFOキャッチャーゲームをTypeScriptで作成しました。
CocosCreatorの3D機能はおまけ的な物でしたので、 Three.jsという3DエンジンとOimoPhysicsという物理エンジンを組み込んで作りました。
本来はクライアントのみの担当で、クライアントプログラマは私一人でしたが、 クライアントの作業が先行し、
サーバに遅れが出たため後半サーバの実装も行ないました。
-
既に運用開始済みのソーシャルゲームにおいて、運用上の機能追加
運用中のソーシャルゲームにおいて、サーバプログラマが不足していたため、 サーバ支援としてプロジェクトに入りました。
私は自社でソーシャルゲームの企画・開発・運用の経験があり、プログラマリーダーが比較的若い方でしたので色々な技術アドバイスも行ないました。
また、途中からクライアント部分も担当することになり、サーバの手が足りなければサーバ部分、クライアントの手が足りなければクライアント部分、
新規機能追加の場合はサーバとクライアントセットでというように、状況に応じて色々な作業を行ないました。 -
C++で開発されている自社ゲームエンジンのRust対応
Rustという言語は比較的新しいですが、ゲームに非常に向いている言語です。
今後のゲーム開発の工数削減に有効だと判断したため、自社エンジンをRust対応にしました。
Rustは仕様が非常に厳格であり、エラーを起こす可能性のある処理は記述できません。
そのため、対応中に既存の自社エンジンの曖昧な仕様を整理したり、Rust向けに仕様を一部修正したりしました。
-
VTuberを運用するシステムの開発
VTuberを行ないたい人向けに提供するシステムの開発案件です。
私の役割は、クライアントが技術に詳しくないためオンライン会議等での技術アドバイスがメインでした。
本来、方針が決まり開発が始まれば実際のコードも書くことになるはずでしたが、 仕様が二転三転し、方針が定まらないままプロジェクトが中断しました。
-
Switch,PS4,PS5,Steam向けにオリジナルのアクションゲームの開発
自社エンジンの実績作りとRustサポートをメインの目的として、 コンシューマ向けのダウンロードタイトルを開発しました。
他社で各種コンシューマ開発は行なっていましたが、今回は各メーカーとデベロッパー契約を結び、 開発機を購入して自社でコンシューマゲームを開発しています。
自社エンジンのPS4,PS5,Switch対応も同時に行なっています。
また、前回Rustに対応させた自社エンジンで、実際にRustでの開発実績作りの目的もあります。
-
約10ほど前に発売されたコンシューマ用のアクションゲームの移植
過去にPS3,Xbox360向けに発売されたアクションゲームのSwitch移植を行ないました。
すでにサポートがなくなったミドルウエアを使った昔のゲームをSwitchに移植しています。
昔のエンジンをSwitch対応させるのは大変なため、自社エンジンのラッパーという形で作成しました。
まずはWindows状のDX11で動作させ、それをSwitchに移植する形で実現しています。
その際、大量に存在するシェーダを両方のプラットフォーム向けに書き換える必要があったため、 既存のシェーダをSPIR-Vに変換し、
そこからHLSLとGLSLを出力する形にし、共通のシェーダを使えるようにしました。