Entries

【思い出】Chain Taskとエターナルシティ2

前々回予告したので、今日は今から5年半前に公開した
『Chain Task』についてのエピソードを書いてみたいと思う。


◆『Chain Task』とは

あるアプリケーションの状態を監視し、特定の状態になると、
それに連動してアプリケーションの状態に変化を加えるツール。

20180322_ec2_002_Chain Task_
→紹介ページ

この説明だと分かりにくいと思うけど、例えば、僕の使っているゲーミングマウスなんかだと、
アプリケーションごとに設定ファイルを作ることが出来、それがアクティブになると、
自動的にその設定が選ばれるようになっている。

この 『設定ファイル』 の部分を各種便利機能に変更したのが 『Chain Task』というツールだと言える。
 

◆始まり

当時の僕は 『自分のMMOを作る』 という夢のために、いろいろ模索し、挑戦していたんだけど、
その一つとして、完全に独立し、ゲーム会社を立ち上げることができないかと考えていた。

と言っても、人を雇うお金なんてないし、僕の持つスキルはプログラミングしかない。
ゲームを作るにしても、絵が無いし、フリーで商用に使えるものなんてほとんど存在しなかった。

そもそも、ゲームを作ると簡単に言っても、プログラマーの僕は
マインクラフトのような素晴らしいアイディアでも思いつかない限り、成功は難しい。

そこで、まずは一人で出来るツール開発で様子を見つつ、
とりあえず生活できるだけの収入を得て、それから次の展開を考えようと思った。

ツールのアイディア自体は何個かあったんだけど、なぜ『Chain Task』だったのかというと、
当時遊んでいた 『エターナルシティ2』 が関係してくる。

20180322_ec2_003_ec2_.png

当時のエターナルシティ2は、FPSの基準値が20までしかなく、カクカクで、
それだけじゃなく、プレイを続けているとFPSが不安定になる不具合があった。
(当時マルチディスプレイで遊んでいたため起きていた不具合)

EC2は一部の動作を時間ではなくフレーム単位で処理していたので、
一度不安定になるとゲームをまともにプレイすることが出来なくなっていた。
そのため、1~2時間に一度は再起動をかけていたんだけど、
そのたびに行っていた決められた操作などを自動化できないかと考えていた。

具体的にどういったものかというと……


機能1:プロセスプライオリティの変更

今のエターナルシティ2はノーガードみたいだけど、
昔はゲームガード(nProtectだったかな?)が動いていた。

20180326_ec2_005_プロセス

再起動のたびにゲームガードの優先度を下げて、負荷を減らしていたんだけど、
これがとても面倒だった。


機能2:画面外にマウスカーソルが出ないようにする

この手のゲームは右クリックを押している間射撃するというのが結構当たり前なんだけど、
長時間プレイすることを考えると、これがなかなかしんどい。

だから僕はゲーミングマウスのマクロ機能で右クリックをトグル化していた。
これは一度右クリックを押すと押しっぱなしになり、もう一度押すと解除されるというもの。

ただ、これはマクロの内部的な仕様で、実際には右クリック連打になる。
そして、この状態でタイトルバーや、画面外に出ると厄介なことになっていたw


機能3:起動と同時に別のプログラムを立ち上げる

当時、エターナルシティ2を 『片手パッド+ゲーミングマウス』 というスタイルで遊んでいた。
また、それ以外にもエルソードで遊んでおり、パッドの設定はJoyToKeyを使っていた。

JoyToKeyはコマンドラインに設定ファイルの名前を渡すことが出来たので、
それぞれのゲームの起動と同時にその設定でJoyToKeyを開くことが出来ないかと考えた。


機能4:ウィンドウの位置やサイズ調整

これも、同時期にプレイしていたエルソードのために用意したかった機能。
基本的にフルスクリーンモードはデュアルディスプレイで遊ぶのに適していない。
そこで、ウィンドウモードで、ディスプレイと同一のサイズにして遊ぶわけだけど、
解像度=クライアント領域のサイズだから微妙にずれが生じる。

20180326_ec2_006_ウィンドウ
(例。タイトルバーとウィンドウの枠分、下と右の画面が見切れてしまう)

これを起動のたびに手動で微調整するのがかなり面倒だった。


機能5:解像度の変更

昔のゲームなんかだと、フルスクリーンモードがワイドディスプレイに対応していない場合が多い。
さらに解像度が固定で、ウィンドウモードだと画面が小さくて見ずらかったりする。

エターナルシティ2でも同様の現象が起きていたんだけど、
毎回手動でディスプレイ解像度を変えるのはあまりにも面倒なので、自動化できないかと考えた。


機能6:音量の変更

エターナルシティ2には音量の調整機能が無い。
したがって、音量ミキサーを使って、アプリケーションの音量を調整することになる。

20180326_ec2_007_音量ミキサー

しかし、これが厄介で、当時は変更した設定が保存されないことがあった。
(おそらくゲームガードのせい)

マスター音量の方を変えるという手もあったんだけど、それをすると、
動画配信サイトの音量を最大にしても聞き取りにくくなってしまう。

そのため、爆音が流れてびっくりして、慌てて音量調整するという酷い状態だったw


---

上記のシステムは、エターナルシティ2の完成度が低かったから必要だった機能で、
それ以外での需要が低いことは分かり切っていた。

ただ、僕にはこのプロジェクトを成功させるための3つの狙いがあった。


◆アプリケーションごとに動作するという考え方

『Chain Task』の最大の売りは、この考え方の部分にある。

ツールのアイディアは他にもあったんだけど、まずこの部分のシステムを構築すれば、
以後作るであろうツールにも適用することが出来る。

これって、すごい強みだと思わない?

それに、当時僕が使っていたゲーミングマウスは手動で設定を切り替えなければならないもので、
僕の作ったシステムのアイディアや技術は、それ自体に値段が付くのではないかと思った。

まぁ、誰でも考え付くようなシステムだから既に存在はしていたと思うんだけど、
このシステムを作り上げ、公開することで、「やり方を教えて欲しい」
「技術を売って欲しい」 という会社が現れるのではないかという期待があった。


◆ユーザーがローカライズするという考え方

僕のプログラマーとしての強みの一つに、エクセルVBAを使ったプログラミングというものがある。

これはエクセル上で管理されたデータを、エクセル内部に仕込んだプログラムで
直接出力するというもので、仕事でローカライズ周りの担当をしたことのある僕は、
その時に作ったシステムを作り直し、公開可能なものに変更した。

これにより、ツールの正式対応言語は日本語だけだけど、
ユーザーがローカライズデータを容易に作成できる環境を整えた。

20180322_ec2_004_ローカライズ_

『Chain Task』はカンパウェアだけど、世界単位でカンパを募れば、
それなりの利益が出るのではないかという期待があった。

まぁ、誰が翻訳すんだよっていう話なんだけど、需要があるなら誰か翻訳するだろうし、
このシステムも、一度作ってしまえば後々作るであろうツールにも反映できるので、
システムを構築すること自体に意味があった。


◆最悪、お金にならなくてもいいという考え方

大抵どんなプロジェクトでもダメなプログラマーの一人や二人は存在する。
そして僕はスタッフロールに名前が載るとき、
あいうえお順だったり、年齢だったり、外部の人間だったりで、大抵下の方に書かれてしまう。

これがとても不愉快だった。

まるで僕がダメなプログラマーみたいじゃない?w

ゲーム会社の面接には基本的に職務経歴書を持参して面接を受けることになるんだけど、
もし、僕が採用するほうだったら、職務経歴書と面接だけではどれだけ実力があるかを図るのは難しい。
口では何とでも言えるからだ。
だからこそ、職務経歴書以外に、自分の実力を証明する作品というものが欲しかった。

ポイントは、設計から開発、公開まで全部一人でやったというところ。
特に、設計の部分はゲームプログラマーにとってとても重要な能力だと思う。

あるプログラマーさんの話なんだけど、昔働いていた会社の社長さん(プロデューサー?)に
『俺の頭のここにあるものを汲み取ってほしい』
とおでこの少し前の部分を指しながら言われたことがあるらしい。

まぁ、かなりひどい話なんだけど、実際、ちゃんとした仕様書を用意する会社というのは少ない。

場合によってはヒアリングだけで開発することもあるから、
優秀なプログラマーは同時に優秀なディレクターでもある必要がある。

だから、お金にならなくても、そこまで損をすることは無いのではないかと考えた。


◆開発~公開後のこと

まずは設計から始めたわけだけど、実現可能かどうかは全くの不明だった。
それでも、他のツールや、OSで似たようなことが出来ているなら何とか実現可能だろうという
無茶な考えの基、強引に開発を始めた。
勿論、そんな単純な話でもなく、実際の開発は困難を極めた。

情報収集はインターネットのみ。
中には日本語のページが存在せず、海外のページも情報が足りず、完全に手探り状態のものもあった。
そういったものは1つの機能を実装するだけで2週間近く時間がかかったりもした。
だけど、そういった苦労もあり、やりたかったことの9割以上は実装することが出来た。

実際の開発から公開までにかかった期間は約3か月で、その期間中に設計、開発、
ホームページ(ブログ)作成、マニュアル作成といった一連の作業を終わらせた。

公開後、すぐに雑誌会社からフリーウェアの紹介で雑誌に載せてもいいかという問い合わせがあり、
僕は二つ返事で了承した。
(その際、掲載した雑誌を送ると言われたけど、住所を知られるのは怖かったのでそれは断ったw)

モチベーションが最高潮に達した僕は、作り終えたばかりだったけど別のツールも作成し、
チェインタスクをさらにアップデートさせた。

ただ、リアクションがあったのはそれが最後だった。
雑誌に載ったからと言ってダウンロード数が上がるわけでもなく、もちろんカンパは1円も集まらず、
僕のモチベーションはどんどん落ち、ついには底をついてしまった。
(一応友人からお祝儀としてウェブマネー1000円が送られたw)

まぁ、元々、アプリケーションに不備が無いと、使い道がほとんど無いし、
なんでもできるようにしてしまったせいで、設定が難しく、よくわからずに使うと、
危険な動作をしかねないという玄人向けのツールになってしまったのが問題だったと思う。

実際僕も、エターナルシティ2を辞めてからは、滅多に使う機会が無くなってしまった。
というか、このツールの完成と同時に、なんか満足しちゃって、エターナルシティ2の熱も冷めてしまった……w

結局、最初のツールで無理と悟り、以後のツール制作、ましてや、完全独立の野望も潰え、
今となっては、この恥ずかしいブログの存在を知られてしまうので、自己アピールにも使う気になれないっていうね……w

僕にとってはある意味黒歴史なんだけど、一応MMO愛は伝わったと思うw
 

このエントリーをはてなブックマークに追加 ツイート ラインで送る
Pocketに保存
関連記事

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://nekosuji.com/tb.php/151-90b5afac
この記事にトラックバックする(FC2ブログユーザー)

Appendix

プロフィール

 ねこすじ

 Author:ねこすじ
 ねこ一筋 めこすじ です。

アクセスカウンター

 
 (閲覧者数)

Appendix

検索フォーム

 

ブログ項目選択

 
 
 

最新記事

【開発】セーブロード実装 (07/19)

【開発】エンカウント演出実装 (07/11)

【開発】バトルシーンのレイアウトと隊列変更実装 (07/05)

【開発】ダンジョン選択周りの仕様 (06/28)

【ゲーム雑記】昔作ったThe Forestの動画…その後 (06/20)

最新トラックバック