はてなキーワード: FarCry3とは
吾輩は無職である。職はまだ無い。どこで無職になったか、とんと見当けんとうがつかぬ。
何でも薄暗いじめじめした所で手斧を投げられていた事だけは記憶している。
しかもあとで聞くとそれは増田という人間中で一番獰悪な種族であったそうだ。
・・・・
まぁ、前置きの冗談はこの辺までとして、前々から作りたいな思っていた
Webサービスを中々時間が取れず作るのを諦めていたのだけど、
僕自身、プログラミングを生業とする職業では無く、学生時代も特にプログラミングついて何か
始めたのが昨年末の大晦日ちょい前なので、約5ヶ月掛かり、当初想定していた期間より
かなりの時間が掛かってしまい、反省点等含めその辺の事を書けたらなと思います。
■やりたい事(実装した事)
・ゲームユーザー同士を繋げるマッチングサイト(出会い系ではないよ。)
・タグをつける
構成を書いた方が良いと思うので
以下になります。
■構成
--------------------------------------------
FW:Flask 1.0.2
ORM:SQLAlchemy 1.2.7
その他ツール等:Let's Encrypt/fail2ban/等々
--------------------------------------------
ほぼ、既存のベーシックなサーバーサイド側の制御のみです。(jsで非同期通信はしてます)
変えるのもなと思い、取り敢えず上記です。
■選定理由
Railsの名前を良く聞くのでRuby on Rails触ったのですが、
Railsには馴染めなかった(扱えなかった)ので
何かマイクロFWの方が良いのだろうと、Sinatraいこうか思いましたが
Railsの印象が強く残った為、Rubyは止めてPythonに移りました。
今度は初っ端からマイクロFWが良いだろうとFlaskのサンプルを試すと
比較的プログラミング初学者でも扱いやすく覚える事も少ないので、PythonとFlask
の組み合わせで決定。
(気軽にプログラムを書け、自分がイメージしている処理や制御を素直に実現できる点が
書いていて気持ちが良いです。まぁ分からない所も有りますが、そう思わせてくれる点
が良いです。モチベーション的に)
NginxとuWSGIの組み合わせはFlaskで検索すると一番でてくるのでこれに決定。
SQLite3 はマイクロFWだから軽めのDBでたぶん大丈夫だと思ったのでこれに決定
■開発概要
・まずPythonの開発環境を整えようとなり、WindowsにVagrantをインストールして
仮想マシンの環境構築。ゲストOSの中にPyenv等を入れPython環境構築
・上記構築後に取り敢えず小さなサンプルから作ろうとなり、簡単なCRUDをFlaskで行える様にしました。
これができた時は嬉しかったです
・上記が出来てから、本番の開発に移りCRUDをベースにひたすら肉付けていく
→ユーザー登録機能作成/ログイン機能作成/ユーザー情報表示/編集機能/チケット作成/及び編集/バリデーション
・細かいViewの調整とスマホ用のViewも作成(レスポンシブルでは無いので)
・本番用のさくらVPSに環境構築とセキュリティ用のツール導入とLet's Encryptでhttps化
■悩んだ点/反省点
・悩んだのがタグ機能周りになるとどうすればよいか、かなり悩みました。
結論を言うとToxi法を使用しましたのですがここにたどり着き、理解するのに結構時間がとられました。
また、実装したらしたで、今度はそのタグ機能を検索するとなると検索ワードが1つとは限らないので
クエリーを動的に生成する必要が有り、これも実装するのにかなり時間が掛かりました。
SQL文だけならば比較的すぐに検索でヒットしますが、それをSQLAlchemyでどう実現すれば良いか分からず
かなり時間が掛かりました。DB設計やSQLAlchemyの文法に自信は無いですねぇ。。
・1次情報のリファレンスからは情報得ることがほとんど出来ず(たまにはできたが)、
Stack OverflowとQiitaと個人ブログが無ければこのサイトできなかったので
■総評
・5ヶ月と時間が掛かりまた反省点も多々有るが、とりあえずサービス公開まで
もっていけた事が嬉しいです。ただただ嬉しい。
・FlaskとSQLAlchemyの情報が日本語が少ないので公式リファレンスとStack Overflowを
行ったり来たりしたおかげで英語アレルギーがそこまで無くなった。
■成果物
オンラインゲーマー向け(e-sports)のマッチングサイトになります。
名前が安直で小学生が5秒で考えたような名前ですが、安直で気に入っています。
作った理由は、僕はBF1が好きなのでオペレーションキャンペーンと言うモードを
やろうとしたのですが、時間帯が悪いのか過疎なか分からないが全然マッチングしないのですよ。
やりたいのにマッチングしないので出来ないどうしよう、と。
また、昔セールでFarCry3をかなり昔に購入した時(既に4が発売済み)にCO-OPモードが全然マッチしない事が有り
旬が過ぎたオンラインゲームは中々マッチしなくてほぼシングルモードしか出来ない事は割とあると思うんです。
今だとBF4もかなり人数がいない状態なので特定マップのみとか。
なのでオンラインゲームでマルチプレイやCo-opで人を集めたい時、PUBGやFORTNITE等バトロワゲームのスクワッドを
募集する時、オンラインゲームの大会(e-sports)を開きたい時に利用して貰えると嬉しいです。
主に想定ユーザーと考えているのは、FPS/TPS/RTS/MOBA等のPCゲーマーをメインに考えていますがCS機やTCGでも
使って貰えると嬉しいです。
あとViewがレスポンシブでは無く、PC用とスマホ用しかなくタブレット用の中サイズのViewが無いのでご了承下さい。
遊んでも良いよという奇特な方がいましたら当該サイト内でコメント頂けると幸いです
・BF1(PC版)
それでは長々とありがとうございました。
・・・・
日月を切り落し、天地を粉韲して不可思議の無職に入る。吾輩は死ぬ。
ありがたいありがたい。
そうじゃないんだよなあ。金のためにベータテストしてるわけじゃないことぐらいわかってるよ。
ActivisionとかInfinity Wardみたいな大手ベンダーがそんな端した金に困るわけない。
恐らく、無料だとすごい人数が押し寄せるので、テスト用サーバーが負荷に耐え切れず接続障害で
過去に、Overwatchが3日間無料キャンペーンをした時、本番サーバーでしたんだが、
DDoS攻撃と新規ユーザーの多重ログインが重なって3日間ずっと無料ユーザーもふつうに買ったユーザーも接続できず、
新規ユーザーは獲得できない上に、常連ユーザーも離れる結果を招いたし。
有料にしとけばとりあえず、接続できなかったら連打するサーバーの天敵リアルキッズくんたちをある程度、退けられるしな。
俺が危惧しているのは、この前例によって、有料ベータテストをやるベンダーが他に現れること。
例えば、FarCry3の体験版は日本のみ10円かかる。北米版は無料なのに。
北米版の存在を知っている人なんてごく少数だろうし、まあこれの場合、
買っても後で返金してくれるらしいけど、金かかるんなら最初からもうしないや、ってやつが絶対いると思うんだ。
それって機会の損失じゃね?
実際、今の据え置きゲームはDLC商法とゲーム内通貨システムでどんどんユーザーが減ってるじゃん。
周りで据え置きゲームの話題するやつ、いる? みんなソシャゲばっかりだろ。
CODの場合は上のような事情があっての有料と予想されるが、2流、3流ベンダーの場合はただの金稼ぎだろ。もしするとしたら。
2流、3流の開発中のゲームを金がかかってまで、しかも期間限定でしかできないものをしようなんていう狂信者はそうそういないだろうし、
端した金に目がくらんで、将来獲得できたかもしれないユーザーを失うのは、据え置きゲームの市場全体を縮小させることに繋がる。
俺はそれを危惧してるんだ。
グラビティデイズ2とかちょっと前まで体験版配信してたけど、あれ期間限定配信だったじゃん。
しかもプレイ時間も一定時間いくとそれ以上遊ぶことができないし。
失礼ながら、あれはそんな大作ゲーじゃないから体験版を期間限定にしたところで、
急いでダウンロードしようってユーザーは全然増えないと思うんだ。
ただ、偶然見かけたからダウンロードしてみた、っていうのが期間限定だったら
そもそも見かけることすらないんだから、偶然、ってユーザーを獲得できない。
俺はSkate3ってゲームを北米版の体験版を遊んでから購入した。
あれは時間制限こそあるけど、一定時間以上で二度と遊べないなんてことはないから、
面白いと思ったら何度も体験版をプレイした後、実際の購入に踏み切る。
有料にするとか、遊べる期間を制限するとか、そんなことをしたら、
無料だったら買っていたかもしれない、配信をずっとやっていたら買っていたかもしれないユーザーを獲得できない。