調査の日
前回、いろいろ実装前に技術調査してみて発見があったので、
今日も技術調査。でもでも、オンラインゲーム関連は情報が少ない。
正確に言うと、情報は溢れているけど使える情報が少ない。
企業でやってるひとはノウハウを既に持ってる。
バリバリのゲーム企業でやってるひとは、サーバー側でゴリゴリロジックがあるようなもっと大規模なものを作ってて、素人のアプリには参考にならない。
そして、趣味でやってるひとは写経をただ載せているだけでPC上で(しかもLAN内で)動かして満足してしまっている…
というような印象をうけた。
※趣味でやってるゲーム開発者さんたちはLAN内だけで動くアプリをどうやってリリースするんだ…リリースしたのか、その後はどうなったんだ…
と、具体的な実装方法があまりみつからない。
引き続き調査してみてから実装します。
・チャットなどリアルタイム性の強いアプリの実装方法や調査
https://qiita.com/mono0926/items/bb7fdd912bc338096f57
・Nodejs:SocketIDが意図せず変わってしまう
http://blog.adjust-work.com/632/
http://blog.adjust-work.com/661/
・ホスト、クライアントの通信方式説明
http://motoyama.hateblo.jp/entry/unet-02
・ログを画面上に表示する
http://motoyama.hateblo.jp/entry/unet-03
・P2P対戦について
http://3dgame.dip.jp/unity3D_22.html
■音楽のはなし
・類似のアーティストを探すWebサービス
http://musicroamer.com
久々にロック聞きながら作業した。
ロック大好きなんですが、久しく新しいバンドを発掘していないので、戒めのために…
※いつもは歌があると集中できないからアーマードコアのサントラとか聞いています。
最近のバンドってとっても演奏上手だしおしゃれだなぁと思いました。
でも、おじさんだからかぴんとこんなぁ
ハードよりのオルタナティブ・ロックが好きなんですが、なんかおすすめないですかねえ
ほそぼそとゲーム開発。P2P、Socekt通信、よくわからん
凄く詰まって、詰まって煮詰まってちょっと抜け出せそうなので一服。
僕はモバイル用のゲームをいつかリリースすべく、ノロノロと休日プログラミングをしています。 普段はSierみたいなことをやってるので毎日Excelを開いたり閉じたりしているだけでゲームプログラミングとは無縁です。
今は「オンラインゲームのしくみ Unityで覚えるネットワークプログラミング」という本を使って写経しながら勉強してるんですが、ソケット通信でP2Pでチャットアプリを実装する所に来てピンとこなくなりました。
というのも、内容は実践的でわかりやすいんですが、肝心のチャットがPC上で実行しLocalhost内での通信になっているのでモバイル端末上で動くところがみられず、ゲーム開発初心者のよくわからなかったからです。
ソケット通信のサンプルアプリをいろいろなサイトで見てみたんですが、結構みんなLocalhost内での通信の話しかしていないので困りました。nodejsでSocket.ioを使うチャットアプリはいろいろ見たんですが、結局サーバー↔ブラウザ上の話なのでAndroidやiPhone上でどうやってグローバルアドレスを取って、ポートを開けて待ち受けるのか、僕にはよくわかりませんでした。
「オンラインゲームの仕組み」とか、主語のでかいものをググると粒度の細かいものから荒いものまで色々な情報が出てきすぎて混乱しました。・・・絞って検索せねば・・・
そこで、まずはオンラインゲームの仕組みを絵に書いたりしてよく考えてみました。
・P2Pで直接端末同士が通信すると、ハッキングされたり不正操作される。
・対戦中のプレイヤーの行動が取得できない(オンライン対戦でよく使われる技とかがわからない)
冷静に考えてみると、僕はPSPで実装できたとしても危ないし、不正防止のためにリレーサーバーが必要になるのではないかと思いました。 仮説が立てられたので、近しいことを書いているブログだけ見ていきました。
どうやら、やはりリレーサーバーが間にはいって対戦をさせるのが一般的なようです。
・UnityにおけるP2Pの実装
https://qiita.com/haminiku/items/ef80b6e8a4b4270efcd4
・マルチプレイのサンプル
https://forum.unity.com/threads/unet-sample-projects.331978/?_ga=2.138374960.1808294958.1536805688-1235319137.153231507
・Socket.io 特定の誰かに送る
https://blog.mitsuto.com/nodejs-socketio-server-client
・Socket.io 特定の誰かに送る2
http://thr3a.hatenablog.com/entry/20141123/1416723018
・VisualStudioでデバッグ
https://docs.microsoft.com/ja-jp/visualstudio/ide/develop-code-in-visual-studio-without-projects-or-solutions?view=vs-2017
・おしえてGoo
※濃い事が書いてあってよく理解できないんだけど、なんとなくゲームの裏側で何をやっているのかわかった気がする
https://oshiete.goo.ne.jp/qa/8444808.html
今はNode.jsで対戦相手2名同士のデータを送り合うためのリレーサーバーを実装中です。 うまくいくといいなあ。
プレイヤーA ↔ サーバー ↔ プレイヤーB (お互いの行動をJsonで送り合い、クライアント側で処理)
しかし、リレーするサーバーを作ったとしていくつのコネクションまで貼れるのか、 コネクションが足りなくなったときに、マッチングサーバーを一つの世界で行いつつ並列して動けるようにサーバーを増やしていくのはどうやってやるのか。色々疑問はつきません。徐々に調べながら覚えていこうと思います。
【昨日の日記続き】Netlify!
静的サイトのホスティングサービス「Netlify」これすごい。
昨日、いろいろやった結果、たかだか静的サイトのデプロイすらちゃんとできず、無料のやりかたがわからず、 自分はWebの才能ないんだなーと思い、さくらのインターネットにでも金払おうかと思ってネット調べたらみつけた。
無料なのに、最近流行りのパイプライン的なのを持ってて、 Biubucketと連携するとGitpushのタイミングでプログラム(静的コンテンツ)をデプロイしてくれる。 URLも自分で決められえう(.netlify.comがURLの後ろについちゃうけど別にいいよね)
みんなちゃんとブログに書いてくれてありがとう。インターネットはいい人ばっか。
・Netlifyについて https://qiita.com/Keitaro/items/44cc974140a5b99fb6cc
・URL変更の方法 General -> Setting -> Site details -> Change site name http://magcho.hatenablog.jp/entry/2017/10/15/023440
・Atomのキーバインディング(自分用メモ) http://pasolavo.com/web/atom-keybinding-for-windows.html
静的ファイルをデプロイしよう
2~3時間かけて作った静的Webサイトができたのでインターネットにアップしようとしたら躓いた。 4時間くらいかけてデプロイできない。Webの才能がないんじゃないか。
■静的サイトを公開するのに時間がかかっている経緯 ・GoogleDrive、URLかっこ悪い、やだ ・S3、金掛かりそうでやだ ・GAEでやるの、つまづいた ・Amazon EC2も金掛かりそうでやだ ・AWS EBでデプロイうまくいかない
もう、さくらのサーバーでいいんじゃないか… Web向いてないのかも…。自信喪失。寝る。
【しらべたこと】 ・GAEを無料運用 https://koni.hateblo.jp/entry/2016/01/06/130613
・GAE始め方 https://blog.apar.jp/web/6912/#WEB
・AWS ElasticBeanStalk https://qiita.com/Mic-U/items/f9f0c03080d9cf6c3cc6
・新規開発におけるElastic Beanstalkという選択 https://qiita.com/TAKA1111/items/775b4b1dc2b02dbbea2c
・EBには、ルートフォルダを圧縮してもデプロイできないよ https://stackoverflow.com/questions/20634122/failed-to-find-package-json-node-js-may-have-issues-starting-verify-package-js
・EBCLIでやってみるも、エラー https://github.com/awslabs/amazon-kinesis-scaling-utils/issues/5
【Unity】error CS1525 CS0116 CS8025 VSのビルド通るけど、Unity側でエラーとなる
「オンラインゲームのしくみ Unityで覚えるネットワークプログラミング」を写経している。 さて、写経し終わったし実行するかと、Unityの画面に戻るとなにやら3つもエラーが出ている。
CS1525: Unexpected symbol `
【解決方法】 全角のスペースがどっかに混ざっている
【解決に至るまで】
予期せぬシンボルがある…ふむふむ。
頭のいい僕はすぐにひらめいた。これは{}の数が一致しないパターンのやつ! しかし、VSはエラーを指摘していない。どうしたものか。 ははーん、もしかしてEOFの形式がこのファイルだけ違うのかな?と思ったけど、すべてのファイルはCRLFのようだ。
インターネットで全角スペースが入っているというのを見つけて検索から削除してみるとエラーが消えた!ありがとう!よかった! 3つもエラー出ると一瞬絶望感に襲われるけど大抵エラーなんてものは概して1つに対して複数出るのだ。落ち着いて対処しよう。
備忘録で残します。
今日やったこと日記:Windows 10からWIndows IMEを抹殺する
今日やったこと日記
・WIndowsIMEを抹殺 いつもいつもいつもWIndowを更新するたびに復活してきやがる。 おまえらそこまでしてこの糞なIMEを使ってほしいのか?Microsoftの社員さんだってATOKとかGoogle翻訳使ってんじゃないの? ってレベルで頭おかしいぞIME。Windows更新のたびにどこにいったか巧妙に隠されているメニューを見失うので、備忘録 web-generalist.com
・Unityをバージョンアップして、C#の新しい機能を使おう 何の気なしにstatic usingを使ったら、エラーで怒られた。ランタイムが古かった。 どこから変えたらよいかわからない。メニューがないっぽいのでUnityをアップデートすることにした。 www.buildinsider.net
・FireBaseがいいらしい したのブログを読んで、興味が湧いたので調べてみた。 趣味で一人でゲーム作成をやっているけど、いつ完成するやら不安でしかたない。 fushiroyama.hatenablog.com
UnityのSDKも出ている Unity プロジェクトに Firebase を追加する
大人数でリアルタイムにデータをやり取りするようなアプリのバックエンドには向いているっぽい。 ガチャで自分の持ち物が増えていくようなものの場合、別にサービスを建てないといけないなぁと調べてたら GCPとの連携も推奨してた、いろいろドキュメントがありそうなので、ちょっと浮気して試して見るかもしれない。 でも、僕はヘボいのでこういうのでうまく言ったためしがない。そうしてまたSDKだけが増えていく。 業務でやってみたいな。プライベートだと時間が足りないな。 cloud.google.com
Firebase と App Engine フレキシブル環境を使用して Android アプリを作成 | ソリューション
・MemoryStreamクラス Flushの説明がさっぱりわからん。 https://msdn.microsoft.com/ja-jp/library/system.io.memorystream(v=vs.110).aspx