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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

Q&A

解決済

3回答

2121閲覧

iOSゲームアプリの構造について

earnest_gay

総合スコア615

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

COCOS2D-X

COCOS2D-Xは、 2Dゲームを手軽に開発できるフレームワークのことです。 iPhone(iOS)向け、Android等に対応しており、 実質ワンソースで開発が可能です。

0グッド

0クリップ

投稿2016/09/18 00:06

編集2016/09/18 00:08

アカウントを必要としないゲームアプリはだいたい作れるようになりました。(Swift)
実際、作りたいのは、アカウントを持ったPRGゲームなどです。

例えば下記です。

・パズドラ
・モンスト
・白猫プロジェクト
・タワプリ

疑問点は下記です。

・サーバーを持っていて、DBにプレイヤー情報を格納して管理しているのか
・それとも、単にアプリ内で記憶させているだけなのか

とりあえずゲームアプリのその辺の構造が分からない状態です。

例えばどっかの企業の会計システムとかはたいていDBで管理していると思いますがその構造は分っています。(PHPをよく触っていたので)

・ウェブブラウザ(HTML/CSS/JavaScript/PHP)
・サーバー()

①ウェブ上で入力したものをDBへ格納していき(INSERT)
②得たい情報はSQLで組んだクエリでゲットしてきてウェブ上に表示させたり(SELECT)
③変更したい内容があれば①と同じことしたり(UPDATE)
④削除したいな内容があれば削除したり(DELETE)

と、
ウェブからサーバーへリクエスト
サーバーからウェブへレスポンス
と、ウェブだとそこらへんは分かっています。

ゲームアプリも同じのでしょうか?

レベルが上がりばステータスも上がり、その値をUPDATEで修正していってるのでしょうか?

そこらへんが良く分かりません。

そこらへんの構造の図があれば分かりやすいのですが、リンク先などありましたら教えていただけるとありがたいです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

・サーバーを持っていて、DBにプレイヤー情報を格納して管理しているのか
・それとも、単にアプリ内で記憶させているだけなのか

一般的に言って、ソシャゲを含むオンラインゲームは、
サーバのデータベースにプレイヤーの情報を保存して管理しています。

なぜ、「単にアプリ内で記憶させているだけ」でないのか。
それは一言でいうと、課金の都合です。
違法コピーや改造ツールなどで、データを改ざんされないためです。

なお、課金のないフリーゲームでも、サーバに保存する場合があります。
それはランキングがあるタイプのゲームで、やはり改ざんされないためです。


ゲームアプリも同じのでしょうか?

DBの設計方針は様々だと思いますが、
普通にSQLを使っていたりしますし、
ゲームだからといって特殊なDBではないです。

ただし、微妙に違ってくるところもあります。
セキュリティと負荷対策、メンテナンスと障害対策です。

企業のビジネス用システムと違い、外部に公開され何万人もアクセスでき、
しかも24時間営業していますから、上記が大きな問題となるでしょう。

投稿2016/09/18 02:31

LLman

総合スコア5592

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

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

earnest_gay

2016/09/18 02:35

具体的にありがとうございます! 課金の都合というのが気になりますが、制作前にまだまだ調べることが多そうです、、、
guest

0

・サーバーを持っていて、DBにプレイヤー情報を格納して管理しているのか
・それとも、単にアプリ内で記憶させているだけなのか

サーバ側にもアプリ側にも(それぞれ異なる)情報を記録しています。

1シナリオ5ステージで10ポイントを消費するゲームで例えると
(1) シナリオ開始時 → 10ポイント消費という情報をサーバへ送信
(2) ユーザー操作後 または ステージクリア時にアプリ側に記録
(3) シナリオ終了時 → 結果をサーバへ送信
といった感じになるかと思います。
#実際にはもっと複雑になるかと思いますが。。。

スマートフォンでは突然の通信断や充電切れ、予期せぬエラーによってアプリが続行不能になることが多々あります。
サーバ側だけで情報を管理している場合は (2) の途中で続行不能になった場合、再度起動したとき「10ポイント消費してシナリオを開始した」という情報しか残っていないため、またステージの最初から始めなければいけません(クリアできそうになくても、アプリを落としてしまえば再度チャレンジできちゃいます)。
シナリオクリア直前でアプリが続行不能になって、またシナリオの最初からというのはあまりにも不親切過ぎますしね。

また、(2) の情報もサーバ側へ送信すればよいのでは?という考えもあるかと思いますが、リアルタイムな情報が必要でないゲームアプリでサーバとの通信を頻繁に行うのは、都度ユーザーの待ち時間が発生するためナンセンスかと思われます。

投稿2016/09/20 16:15

hyper-drums-ko

総合スコア736

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

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

0

DBの構造自体は会計などと同じ考え方で良いかと思います。

数年前のソシャゲだと、Webサーバを立てて
そこにHTTPリクエストで要求を受けられるようにAPIを(PHPなどで)用意して、
実際のSQL処理などはそのAPIが処理する、という形が一般的だったかと思います。

HTTP通信そのものの暗号化、それとシークレットキーなどによるAPIの保護なんかは
だいたい必須項目として普通に入ってきますね。

投稿2016/09/18 14:01

YokemuraTakeshi

総合スコア297

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問