ゲームプランナーも知っておこう!クライアントとサーバーの違いって何?

どうもハジメです。今回は、企画でも知っておいて損はないシリーズとしてクライアントとサーバーの役割に関して紹介したいと思います。

と言うのも、企画をただ考えるだけでもいい場面もあると思いますが、実際にそれを形にするに当たって、メンバーに理解してもらえるように書くには、エンジニアさんにうまく伝わらないと言う場面も経験したことなどある方いないでしょうか?

そのような時に、このようなことを理解しているだけも、役に立つことはあるのかなと思っています。

仕様書を作る際の具体的なイメージがつきやすい。

開発を進めて行く際のエンジニアさんとの会話がしやすいなどのメリットがあると思っています。 

1 クライアントとサーバーの基本イメージ

皆さんもどこかでこの関係について聞いたことがあるのではないでしょうか?

クライアントは、ソシャゲだとスマホ。コンシューマーだとPS4に当たります。クライアントもサーバーも言ってしまえばPCみたいなものです。クライアントが皆さんの目の前にある機器で、サーバーはどこかサービスを提供している会社が保持しているマシンになります。それらがインターネットを通じてデータのやりとりをしています。

イメージとしてはこんな感じ。

なぜこんな形にしているのか?理由はいくつかりますが、ゲームという観点においてのみメリットを書くと。クライアントだけの昔のような売り方だと、クライアント内でゲームの世界が完結します。つまり、ネットワーク対戦などは出来ない。

また、アップデートをリリースしてから行うことが可能で、今ではゲームプレイする前に良くアップデートはしりますよね。

アーケードにしてもコンシューマーにしても、今やサーバーと接続しない形でゲームを開発することも少なくなってきたと思います。それだけに、基本的な知識はあって損はないと思います。

 ソシャゲで言うとこんな感じ

ソシャゲをプレイしていて、ボタンを押したりバトルを始める前など、少しのロード時間がありますよね?あの瞬間にサーバーとデータの通信をしてサーバーへデータの書き込みをしたり、逆に画像素材などをダウンロードしています。

 バトルもゲームによってwaveごとに通信が入るゲームとそうじゃないゲームを触ったことがないでしょうか?コマンド系のRPGだとコマンド入力後に通信が一瞬入る感じ。

2 全てにサーバーを介すと大変

今回のテーマの重要な箇所にもなるのですが、クライアントとサーバーの関係を理解することが役立つのは、なんでもかんでもサーバーと通信すればいいと言うことではないからです。

 サーバーと通信すると言うことは必ず遅延が発生します。つまり、リアルタイムなフィードバックを実現したい時にはサーバーとの通信は不向きなんです。

 サーバーを介さずにクライアントで処理をするとスムーズに操作ができます。だったらそっちの方がいいじゃないかと。

 しかし、サーバーを介さないと、いくつか問題が発生します。

・セキュリティーの問題(チート操作・改造アプリ)

・途中データが保存できない

などがあります。

 セキュリティーに関しては、クライアントである程度操作を完結させるとどうなるか?

そもそも、クライアント自体で様々な判定処理を行う形をとるチートがしやすくなります。クライアントにそれらのプログラムが書かれている形になるので、解析をすると中身を変更することが可能になります。

なので、バトルの処理や結果の判定までクライアントで決めて、サーバーに返すと、こういうシンプルな構造になります。

クライアントのプログラムを書き換えられて、強制的に勝たせるような実装に変更することもできます。

一方で、バトル中で予期せぬ通信トラブルなどで、バトルが再開できないケースがあったとして。そのような時にバトルの開始の時しかサーバーから通信をしていないと、途中経過が保存されておらず、バトルの最初からやり直すことになります。

これらのことをやらせたくないゲームの場合は、コマンド選択ごとに通信を走らせて、バトルを進行させているタイトルもあると思います。

3 P2P(ピアツーピア)と言うのもある

ゲーム会社を志望する方であれば聞いたことがあるかもしれないですが、P2Pに関しても少し記載しておきます。

 ソシャゲとは違って、コンシューマーなどでよくある実装かなと思います。P2Pの場合、簡単に言うとサーバーと言うものが存在せずに、クライアント同士で通信する仕組みのことです。

この技術を使って通信する方法で採用されているのが多いのが、おそらくですが、リアルタイムで同じフィールドで協力プレイしたり、競争したりするゲームでよく採用されている気がします。

 P2Pの場合、サーバーを介して通信をしないので、サーバーへの負荷が集中することなく、少ない人数でリアルタイムに遊びをさせたい仕様との相性がいいとされています。

 一般的なアプリケーションでいうと、skypeなどもこの技術を使って通信していると言われていますね。

4 WEBブラウザとは?

少し話がそれてしまいますが一緒に普通のアプリケーションとwebアプリケーションの違いに関して紹介して見たいと思います。

普通とは、皆さんが良く利用しているスマホアプリだったり、パソコンソフト、ゲームのソフトもそうですね、起動させると特定の機能が動くやつです。スマホの画面に表示される一つ一つのアイコンの事だと思ってください。

一方でwebアプリケーションとは、web専用のプログラムでどんな人も簡単にweb上で閲覧できたり、プログラムを動かしたりできる機能です。

いわゆるブラウザというもので、safari,chrome,internet exploreなどにあたるものです。URLを入れるだけで、共通の作法に乗っ取ればアプリのようなものを作らなくても様々な機能を実装することができます。

web一般的な特徴を書くと。

メリット:比較的手軽にホームページなどのサイトを作れる。更新がしやすい。バグがあってもすぐ直せる。

デメリット:機能がブラウザでできることに限られてしまう。

まとめ

どうでしたでしょうか?マスターデータ編でもそうでしたが、エンジニアではないので詳しい仕組みまでは把握していませんが、企画が開発するに当たって仕様書を書いたり、自分の企画を説明する際に知っていてそんはない知識かなと思います。

実際には、会社の環境やメンバーによっても企画が、この内容を把握していなければいけない度合いは異なります。ぜひ、必要になった際にはこの内容が少しでも助けになれば幸いです。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です