• このエントリーをはてなブックマークに追加
Jumper (ジャンパー) って結局なに?
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Jumper (ジャンパー) って結局なに?

2016-01-26 22:00
    今までちょっと固めの話が多かったので、今回は、僕らのゲーム Jumper (ジャンパー) が生まれた理由に関して話していこうと思います。では、まずは、遊んでみてください。

    Jumper iOS 版
    Jumper Android 版

    Jumper ≠ ゲーム

    Jumper はよく周りからゲームとして捉えられています。一応、アプリとしてのジャンルは、アクションゲームに値するのですが、何度かプレイしたユーザは、世界観の広さに気づかれている方も多いようです。

    リリース以降数ヶ月のゲームで機能も非常にシンプルなものではありますが、100以上のステージを作成している作者がいたり、ほとんど全てのステージをクリアしている強者もいます。

    他人のステージが簡単すぎたり、つまらなかったら自分で作ってしまえば良い。難しすぎれば、簡単なステージを作れば良い。そのようにして、日々、多くのステージが生み出されています。

    これぞ、 Jumper のキャパシティの広さといえます。単にゲームとして考えるだけではもったいないです。

    Creativity and Communication

    Jumper には2つのCが思いとして込められています。まず、1つめは、Creativity (創造性) です。ステージのクリアの方法は1つでないことが多いです。沢山のルートから好きなものを選択できる魅力があります。また、多数の Jumper (キャラクター) の中から、好きな Jumper を選択してステージをクリアしていくのです。

    そして、2つめは、 Communication (コミュニケーション) です。ステージを作ること自体も、他のユーザとのコミュニケーションの手段になりますし、コメント機能によってアドバイスしあったりするのも、 Jumper ならではの楽しみ方といえます。

    2つのCが1つのアプリに備わっている。そのように考えています。当初から、あまり難しく方向性を定めず、創造性やコミュニケーションが円滑に行えるような設計をしてきました。

    ゲームという視点よりも、むしろ SNS (ソーシャル・ネットワーキング・サービス)というような視点で設計や実装するように考えています。

    Haskell で書かれた頑健性の高いAPIサーバ

    そして、前に述べたようなアプリを作る上で重要なのが、インフラとなるAPIサーバです。APIサーバには、Haskell を採用しました。

    Haskell は非常に強い静的型付けの言語です。あくまで傾向の話になりますが、動的型付け言語と静的型付け言語を比べたときに、静的型付け言語の方が開発コストは高くなりますが、運用コストは安くなります。

    Haskell は静的型付け言語で、記述する文法もかなり制限の厳しいものとなります。これが幸いして、GHC コンパイラによってビルドが通る時点で、かなりバグの少ないソフトウェアとなります。ビルドができるということが、既に厳しいチェックを終えた後ということになります。

    Jumper は、ゲームという性質上、不正を許してはいけません。不正を防ぐためには、暗号化の技術はもちろん、プログラム上のバグを最小限にしなくてはいけません。Haskell はそれに一役買っているといえます。

    よくプログラムによっては、1ヶ所直すと、多数のバグが生まれてしまうことがあります。これは、プログラマが、物事の切り分けが上手くできていない場合に起こります。切り分けが下手ですと、これもあれもと、同じ関数に違う値を入れ込みたくなってしまいます。Haskell では、関数に入る型を明示しなくてはいけません。バグを生むような値が関数に適応されることは少ないのです。

    ユーザ毎に違うパラメータも、先ほどお話した型を見ることでユーザ毎に異なるパラメータだと認識することができます。型によって、プログラマは注意すべき点をミスなく実装していくことができ、それぞれのユーザに同様のユーザ体験を届けることができるのです。

    また、ゲームやアプリは、基本的には同じサービスの繰り返しになります。これを、n次元では、「ユーザ体験は繰り返し」という表現をしております。関数型言語の高階関数Lambda (ラムダ)によって、多数のユーザに同じ体験を届けるということが非常に容易になります。

    やることは、ユーザの一覧を取ってきて、適切な高階関数と Lambda に投げるだけです。Jumper のシステムは、以上のように全体として非常にシンプルなものなのです。

    Cocos2d-x で書かれた移植性の高いゲームアプリ

    Jumper のスマートフォンの実装は、 Cocos2d-x によって行われています。Cocos2d-x のどこがよいかという話を致します。

    Cocos2d-x はオープンソースのフレームワークで、世界中のプログラマがフレームワークのバージョンアップに日々貢献しています。そのおかげで、フレームワークとしての設計や実装が年々良くなってきています。

    現時点では、Cocos2d-x プログラミングやフレームワークの扱いに習熟した人が、ひと目で理解できる設計になっています。洗練された設計によって、メンテナンスのコストは劇的に下がっていきます。

    また、Cocos2d-x は C++ で開発されているので他の言語(C言語とか Objective-C、Javaなど)との親和性は非常に高いです。他の言語による成果を取り入れることが容易になります。これは、開発コストを下げるのに役立ちます。

    これらのメリットを鑑みて、バージョンアップを頻繁に行いたい Jumper にとって Cocos2d-x 1択という結果になりました。

    そして、なによりも

    楽しく開発する。これに尽きるかと思います。創造性を最大限に高めるのには、どんなツールよりも楽しさが一番大事になります。

    n次元は、3年目となり、事務所も一転。より快適に働ける環境を実現する工夫を日々取り入れています。受託会社ということで、リソースは100%避けるわけではありませんが、毎日楽しくやっております。

    少しでも多くのアップデートを皆さんに届けられるように日々努力していきます。今後とも n次元 及び Jumper をよろしくお願いします。

    チャンネル会員ならもっと楽しめる!
    • 会員限定の新着記事が読み放題!※1
    • 動画や生放送などの追加コンテンツが見放題!※2
      • ※1、入会月以降の記事が対象になります。
      • ※2、チャンネルによって、見放題になるコンテンツは異なります。
    ブログイメージ
    ysawa が教える「超プログラマへの爆速勉強法」
    更新頻度: 毎週水曜日
    最終更新日:
    チャンネル月額: ¥550 (税込)

    チャンネルに入会して購読

    コメントを書く
    コメントをするにはログインして下さい。