djangoでゲームを作る。(アーキテクチャ編)
Sal
python djangoはMVCモデルと呼ばれるデザインパターンを適用している。MVCはModel, View, Controlの頭文字を取っており、それぞれデータベース, 画面表示, メインフレームの3つに分かれている。

djangoでゲームを作る。(アーキテクチャ編)

  1. djangoのアーキテクチャについて
  2. #channels-obstructionのアーキテクチャの概要
  3. gameフォルダー
  4. 次に見るべきは一つ上の階層
  5. django routing.py
  6. #
  7. djangoのurls.py
  8. api Application Programming Interface
  9. 2. ゲームサーバー部分をみたければ
  10. #3. ロビー部分を見たければ
  11. 次回
#djangoでオンライン対戦ゲームを作る(アーキテクチャ編) 概要はこちら djangoでオンライン対戦ゲームを作る(概要編) セットアップはこちら djangoでオンライン対戦ゲームを作る(セットアップ編)
##djangoのアーキテクチャについて
djangoはMVCモデルと呼ばれるデザインパターンを適用している。 MVCはModel, View, Controlの頭文字を取っており、それぞれデータベース, 画面表示, メインフレームの3つに分かれている。 ゲームサーバー構築用フレームワークchannels-obstructionはdjangoフレームワークを利用しているためMVCモデルにもれなく当てはまる。
###channels-obstructionのアーキテクチャの概要
channels-obstructionのルートディレクトリ にはいると channels obstruction game static templates のフォルダーが目に入る。 templatesにはhtmlファイルが含まれており、 ブラウザに表示されるhtmlテキストのベースとなるファイルやゲーム中に必要になるチャット部分のみのファイルなどが格納されている。 staticには文字通り静的なファイルが含まれており、CSS、img、javascriptから構成される。 これらに対してはブラウザからアクセスできるように設定されており、ブラウ ザ上での柔軟な動きを可能にするjavascriptなどが含まれる。 そして最も重要なのがgameフォルダーである。 このgameフォルダーには主にpythonファイルが含まれており、ゲームユーザーの管理やゲームサーバーのコントロールを管理している。 このgameフォルダーを今回は深堀していく
##gameフォルダー
game フォルダー diangoプロジェクトを初めに開いたときに最初に確認するべきはurls.pyファイルである。 なぜならurlsという名前が示す通りここにはurlによってどの機能を提供するか(もっと いうとどの関数、メソッドを実行 するか) を決めるためのリストが存在するためである。 しかしここにはurls.pyというファイルは存在しなかった。
##次に見るべきは一つ上の階層
channels-obstruction/channels_obstruction/ urls.pyというファイルは存在しなかった。 であれば次に見るべきはurls.pyを呼び出しているはずのコード。 routing djangoではフレームワークを利用する際、あらゆるプロジェクト設定ファイルなどは全て プロジェクト名と同じ名前のフォルダーに格納されている。(本プロジェクトだとgameフォルダーに当たる) そしてdjangoで複数のアプリを作動させたい場合(一つのドメインに対して複数のプロジェクトを立ち上げる時) これらのurlをコントロールする必要があるが、そのコントロール用のファイルもプロジ テクトメイト同じフォルダーに存在する。 それが今回はrouting. pyファイルである。
##django routing.py
routing.pyファイルを見ると以下のコードが見て取れる。
 

 
このコードから見て取れることは urlが「https://???.??/lobby/」であればconsumersメソッドを LobbyConsumerメソッドを、 GameConsumerメソッドを 呼び出すような設計になっている。 ということである。
ちなみにこのchannel_routingは channels-obstruction/channels_obstruction/settings.py から呼び出されている。 settings.pyはその名の通りプロジェクト全体の設定ファイルである。 つまりrouting.pyは
###
channel_routingというurlの設定を行うファイルでそれはsetting.pyから呼び出されることで設定が完了する。 という役割をになっている。 routing.pyの役割が分かったところで一度 channels-obstruction/channels obstruction へ戻る。
##djangoのurls.py
channels-obstruction/channels_obstruction/ を見ると プロジェクトのurl管理はrouting.pyだけでないことが分かる。 もう一つのurl管理ファイルがurls.pyである。 urls.py このファイルを見てみると以下のコードが目につく このコードを見るだけでも admin, register, login, logoutといったユーザー管理のためのurlパスだけでなく、 gameやlobbyのようなゲームに必要なurlが用意されており,それぞれがそれぞれのクラスメソッドに結びついている状態であるのが分かる。 このurls.pyから分かる情報はそれだけではない その下にあるコードにも注目してほしい このコードのコメント部分にapiと書き込まれている。
##api Application Programming Interface
ここでコードを読む方針が固まったのでまとめる。 リクエストを送ることで #1.ユーザー登録部分をみたければ
##2. ゲームサーバー部分をみたければ
###3. ロビー部分を見たければ
##次回
ここまでdjango/channels_obstructitonのアーキテクチャの概要を説明してきた そしてその過程でurls.pyファイルに全てのurl構成図が書かれておりその中の一文から ゲームapiはSingleGameViewSet, CurrentUserViewが中心となっていることが分かった。 次回からいよいよゲームサーバーを深く見ていく。 djangoでオンライン対戦ゲームを作る(ゲームサーバー/api編) title:djangoでゲームを作る。(アーキテクチャ編) description:djangoはMVCモデルと呼ばれるデザインパターンを適用している。MVCはModel, View, Controlの頭文字を取っており、それぞれデータベース, 画面表示, メインフレームの3つに分かれている。 img:https://cdn.cloudflare.steamstatic.com/steam/apps/1646200/header.jpg?t=1630662269