質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

3回答

3925閲覧

オンラインゲーム実装

peter_kes

総合スコア14

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

1グッド

1クリップ

投稿2019/01/31 20:39

こんにちは

オンラインゲームで最大12人で遊ぶゲームを作っています。
どんなものかは言えませんが、ババ抜きのような簡単なゲームだと思ってください。

UnityとCGIを使って実装しています。
私はサーバーサイドはまったく知識がなかったので、Unityのマルチオンラインの機能をつかうかPhotonを使う
ことを提案しましたが、サーバーにお金がかかるという理由で却下されました。
そしてさくらサーバーを使って開発しています。
ここで質問なのですが、ババ抜き程度のゲームなら12人でもこの程度のサーバーで実装は楽勝なんでしょうか?
やはり、ちゃんとしたゲームしサーバーをお金を払ってつかうべきでしょうか?

ゲーム実装で、まず入室後マッチングをしますが、
私は最低でも1秒ごとに入室者の確認のをするのにサーバーにコンタクトしたいですが(待ち時間いっぱいギリギリで入室したプレイヤーと差がでてしまうから)、15秒ごとにするようにいわれています。また退室プレイヤーチェックも同じく1秒ごとにはしたいです。
その他の同期もだいぶ長い秒数にするように言われています。(503エラーが大量に出てしまうため)
アクセス回数を減らしていろいろ工夫を凝らしても7人接続までが限界です。

これは、私の知識不足なだけでしょうか?私の知識ではミリ秒がオンラインゲームでは当たり前だと思っています。

質問をまとめると
1.ババ抜きのような簡単なゲームで12人が楽しめるようには、どのレベルのサーバーが必要か
2.いろいろな同期は何秒間隔ぐらいが最低必要か?

御指南のほどよろしくお願いいたします。

bochan2👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

CGIでは何の言語か分からない。
さくらサーバーではどれか分からない。

数秒ごとにとか太古のCGIチャットのやり方。
今はそんなことしないだろう。
Unityでできるのかは知らないけどWebSocketとか。

でPhoton見たら「WebSocket」は書いてる。こういうのを見て理解できる知識がなければ何も作れない。
https://www.photonengine.com/ja/PUN

Photonは難しいことは知らなくても使えるように作られたツールだろう。
Unity自体もそう。
先人の知恵の塊を投げ捨てて初心者が作ると20年前レベルと同じことをやってしまうのは面白い。

投稿2019/02/01 01:02

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

peter_kes

2019/02/08 09:09 編集

CGIはperl さくらサーバーは一番安いライト、とにかくウェブサイトを置くためのサーバーだと認識しており、ゲームサーバーとは規格外だと思います... Websocketでの実装は挑戦を以前したんですが、サーバー側になるプレイヤーのPCのセキュリテイ設定をいじくろうがルーターもいじくろうがNAT越えができなくて断念。TCP/UDPでのオンラインゲーム実装例も参考テキストで学習したんですがLAN想定でしか実装していなくて(どの例もIPアドレスをいれて接続云々...)使 そうです。すでに発明されているものをお金がかかるからと一から初心者に作り直すのはかえってダメですよね。 数秒ごとについてもやっぱりおかしんだとわかりました!! 回答ありがとうございます。
ozwind918

2019/02/04 08:17

WebsocketでNAT越えを挑戦したのであれば、STUNやTURNは試してみたのでしょうか。
peter_kes

2019/02/05 07:58

STUN試していないです。そんなのあったなんて知らなかったです!!朗報です。試してみます。ありがとうございます!!
guest

0

自己解決

ozwind918さんが言っていたSTUNの実装をしてみます。 ネットにUnityでどう書けばいいか例もあるのでこれは試してみる価値があります。
回答してくださいました方々ありがとうございました!!

投稿2019/02/05 08:00

peter_kes

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問頂きありがとうございます。
単純にタイムアウトしないようにすぐにリクエストを返してクライアント側を待たせるようにしたらどうでしょうか?
また、接続確認は1秒に一回行いながら他の処理を15秒に一回行うようにすれば良いと思います

投稿2019/01/31 23:07

bochan2

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/01/31 23:12 編集

サーバーの負担になるので止めろと言われていることを勧めないでください。自分のプログラムが動きさえすればいいというのは傲慢です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問