FC2ブログ
就活で精神攻撃を与えらた結果、こうなりゃ一人でやってやんよ!という理由でAndroidアプリの開発をしてるぼくの活動記録です。お金に成るクオリティにしたいのです^p^
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
photonを利用してのネットワーキング。
現在、チュートリアルやらなんやらをいろいろ見ているところ。
それで気がついたのもメモ。

チュートリアルを動かしたところ、アップデート内でマスターの移動処理しか書いてないのに
クライアント側で同期できてる
のを見かけた。
どういうことかと注意深く拝見すると、photonViewスクリプトがアタッチされたオブジェクトに秘密があった。

photonViewインスペクタのオブジェクトに直接オブジェクトをドロップするとトランスフォームが入力される。
そのときインスペクタ内容が
・Owner
・View ID
・Observer(UnityEngine.Transform)
・Observer option
・Serialization
の五つが表示され、この中のSerializationがポイント。
Serializationの内容にOnly PositionだったりRotationだったりScaleなどがあり
どうやらこれの設定でわざわざスクリプト内にOnPhotonSerializeViewを表記しなくても
指定した内容に従い自動で同期
してくれるっぽい。
ん〜なるへそ。
最初いたときはマスタークライアントであればクライアントの同期は勝手に行われるのかと思って混乱した。

ちなみにphotonViewインスペクタのObserverに同オブジェクト内のスクリプト(多分Photon.MonoBehaviourを継承したクラス)をドロップするとインスペクタ内容がSerializationの抜けた四つの項目になりObserverも()内がそのスクリプト名になる。
このときはちゃんとOnPhotonSerializeViewで同期処理を明記する必要があるんだろうね。

ふぃ〜ちかれた。
上の階の住民がごっつんごっつん五月蝿いお・・・何がおこったんだお・・・。
スポンサーサイト
とにかくオンラインゲームが作りたい!
ということで行き着いた結果がphotonだ。
これのcloudサービスを使えばサーバってやつを自ら得ずともオンラインゲームが作れるとか作れないとか・・・

ということでものは試しに使ってみた。

結果。。。。

かなり簡単にオンライン系っぽくできる事がわかった!!
といってもチュートリアルを触っただけだから自分が実装できるかどうか…

とりあえず触ってみてわかって来た事をメモメモ。
思いついた順序で書き記す。

まずvoid OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
これはリスナーだろうという事がわかった。
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info){
   if (stream.isWriting){
       stream.SendNext(transform.position);//"Encode" it, and send it
   }else {
       transform.position = (Vector3)stream.ReceiveNext();
   }
}
上記のように綴られ
stream.isWritingがtrueならtransform.positionを送信。
falseなら受信transform.positionに受信しているのだと思われ。
では、stream.isWritingとは何なのか?

おそらく、一番始めにアクセスしたユーザーのことだと思う。俗にいうマスターってやつかな。
一番はじめにサーバーにアクセスする事でこのスクリプトをアタッチしたオブジェクトの書き込み権限を持つものだと解釈。=stream.isWritingがtrue。
上に記したスクリプトの場合、マスターになったユーザ(stream.isWriting==true)がオブジェクトを移動させる事でOnPhotonSerializeViewが作動し(実際には動かさなくても作動しているが)現在のオブジェクトtransformをサーバーに書き込む。
その他の非マスターユーザ(stream.isWriting==false)はオブジェクトのtransformをサーバーから受信し反映させる。
その結果両者間でオブジェクトの位置が同期する。
といった所だろう。
追記:どうもphotonViewをアタッチしたとき、observedにスクリプトをドロップして同期の処理を行ったりするけど、そのスクリプト内にこのメソッドがないとエラーが出る。中身は空っぽでもいいのでOnPhotonSerializeView()は確実に記述しよう。RPCでの処理に頼って抜かしていたらエラーが出たのでメモ。

その2、RPC(remote procedure call)
翻訳すると遠隔呼び出しの手続き、って感じ。
こっちの指示でこのスクリプトがアタッチされた(必要があるのかないのか)よそのオブジェクトに命令する。
void Update(){
(省略)
   if (Vector3.Distance(transform.position, lastPosition) >= 0.01f){
      lastPosition = transform.position;

      photonView.RPC("SetPosition", PhotonTargets.Others, transform.position);
    }
}

[RPC]
void SetPosition(Vector3 newPos){
   transform.position = newPos;
}

上記のupdate内で使用されてる
photonView.RPC("SetPosition", PhotonTargets.Others, transform.position);

[RPC]
void SetPosition(Vector3 newPos){
   transform.position = newPos;
}
を呼び出している。多分[RPC]でマーキングする必要あり。

この時photonView.RPC()は何をしているか?
まず第一引数"SetPosition"はこのスクリプト内のvoid SetPosition(Vector3 newPos)を作動させるのに必要。
次に第二引数"PhotonTargets.Others"、これは誰がこのメソッドを使用するかというのを指定してる。PhotonTargets.Othersは自分(マスター?)以外。
試しにPhotonTargets.の値をマスターみたいなやつにしたら非マスター側ではポジションの変化はしなかった。
で第三引数"transform.position"はvoid SetPosition(Vector3 newPos)の第一引数に入れる値を入れてやる。

上記の結果、
このオブジェクトをマスターが操作
 →一定の距離が離れると距離を更新してRPC発動
  →非マスター側でSetPosition()が使用される
結果同期する。
こんな感じか・・・?

おそらく、とか、だろう。とか多用するけど、手探りだからしょうがない。
まったく見当違いの可能性もあるから、気づいたら修正したい。
現在unityでshurikenを使用してのエフェクト作りを行っている。
手軽に派手なエフェクトが使えてイイネ!ってかんじ。

なれないうちは思うように動かせなかったりしてパラメータを
ちまちまいじり時間を取られる。
というかエフェクト一つ作るのも大変だな。
例のネット本買ってひととおりの基礎はできたかんじゃないかな。
今後作るゲームに活かしたい。
ただモバイル系だと高い負荷にならないように注意しないとなんだろうなぁ…

エフェクトの課題として
適当なゲームを見て、それらに使われてるモノを再現できるようにしよう。

ここんところオンラインアプリを作る環境が今だ整わないためしばらく
アプリをリリースできてない。
今月は一個もリリースできてない!!
なんてこった!!
せめて来月には何かしらの成果物を上げたい。
もっとパワーアップしたものを出してやりたい!!

精進せねば。
今日は新作の動きとカメラ制御を行った。
いままでのアクションゲームはカメラが意図しない方向に向く事が多々あり
今作からそれをうまく制御しようと考えた。
毎度ボタンダブルタップじゃアレだし、気づかない人もいるしね。

それでカメラ制御だけど意外なほどすんなりうまくいった。
あまりにも簡単にできすぎたので【疾風の翼】にも適用させた。
それだけでアプデするのも味気ないから
疾風の翼の壁外にいけるバグを改良。

この壁外にいけるのはできた当初から気づいたユーザーがいたのだけど
わざわざ直すほどのものでもないかと思ってたので今まで放置していた。
今回のカメラ制御と同時にこれもどうせならと、ちょこっと修正。
せっかく壁外にいけるのだし、ただ単に直すのも面白くないので裏面的なところに飛ばせるようにしてやった。
このバグに気づけた人だけがいける特別なステージ。
どれだけの人がたどり着けるのか・・・
新しく作るゲームの方向性も決まり、いまのところ順調。
今日はシステムの微調整を行い、キャラクターモデルを作成するところまで進める。

モデルを作ったので実機で動きを確認。
どうも過剰な動きが見られるので明日その辺も要調整かな。

一通り区切りがついたら疾風の翼のワイヤー移動を修正してみよう。
現在はオリジナルのゲーム作成中也。

最初にカジュアルゲー作ろうと思ったけど一日でそれっぽいのが作れてしまった。
簡単すぎてやる気が起きなくなったので、次にパズル系の作成を行った。
これは逆に難しくて挫折。パズル系を作れる人間は天才だと思う。ご教授願いたいものだ。
ということでアクション系のゲームを作ることに。
いまのところ思う動作ができてるからしばらくはこれと平行して疾風の翼のアプデをしよう。そうしよう。

疾風の翼に関しては次回のアプデでワイヤーの動きを滑らかにしたい。
あと例の画面外にいけるバグに秘密要素でも加えようか。
ただ単純に直すだけではつまらないし。

ちなみにタイトルの疾風の翼の下にちっこく書いている英語は日本語に訳すと
【反撃の刃】となっている。
これは間違えてるんじゃないくて反撃の刃の続編を意味させる上であえてそうしたのだけど
どうも間違えととらえられてしまってる。無難に疾風の翼を英語表記にしておけばよかった。
疾風の翼は副題みたいなものだね。
反撃の刃 〜疾風の翼〜 みたいな。

うっし。方向性も見えてきたし、頑張るか。
難易度下げようと思ったけどやたら態度でかい人がいるからやっぱり止めました。
何か勘違いしているのかな?サービス業でもなんでもないよ?
ましてやお金をとってるわけでもないのに、人にものを頼む態度がそれじゃダメですよね〜。

可能な限り意見は参考にして取り入れる姿勢はあるんだけどねぇ・・・
別に下手に出てヘーコラしろってわけじゃないのよ。
最低限相手に不快な思いをさせない気持ちって大事だと思う。
お・も・い・や・り。
ってやつだね。

別にノーマルでこさないと先に進めないって訳でもないからどうかがんばって欲しいです。
今日ちょこっと修正したverをアップした。

修正内容は下記2点
・大砲ステージの難易度調整(EASYのみ)
・OPTION項目追加

まず大砲のミニゲームステージについて
どうも難しいらしい…正直マジかよ!と思ったが端末によっては
カクカクしてそれで操作しづらいのだと解釈しておいた。
ってかテスト用の低スペック機でもlife300あれば余裕で超せたのに
life上限400まで引き上げて超せないとか・・・
と、愚痴っぽいことはおいといて〜
EASYでのみ敵の数を減らし、さらに少しスピードも遅くした。
もうこれで超せなかったらなにも言えないですの・・・。

そしてOPTIONに『ENEMY』項目を追加。
2〜5までの数値があり選択数に応じて戦闘中の巨人最大出現数を制御する。
いままでは難易度での制御だったが、今回から分けさせてもらった。
これによりEASYでも最大五体と戦えるしHARDでも二体までしか出さないようにできる。
まぁ端末の性能によっては敵が増えると動きが鈍くなるから、性能によって変化させてもらえればいいかな。
ちなみにミニゲームステージではこれに左右されない。

上記追加により、難易度の変更を行うことで変動するステータスは
敵の攻撃力やゲームオーバー時の所持金減率ぐらいかな。


アプデ内容に関しては以上。

余談だが・・・何かをするにあたって説明がある場合はちゃんとみて欲しい。
ちゃんと説明に書いてることを質問するとか勘弁しちくり〜><
あと無料のものに対していちいちブチギレてるのとか恐ろしっこ。
そういう人らはなにか?商品サンプルとして道ばたで無料で配っているものに対しても
いちいち文句言うのか??そりゃマズいっしょ〜・・・この国大丈夫かね?

いろいろ意見も拝見しているけど、どうも危ないのが見受けられるのよね〜
据え置きのゲームなんて高い金払って、超せないとかなったらどうするんだろう?
そりゃゲーム業界もゆとり仕様にするわな。

スマホ持つのが当たり前みたいになりつつあり、若すぎる層が所持すると
もうネットの世界はカオスだお。
据え置きのハードを所持している層はスマホゲームなんてヌルゲーなんだろうけど
そうじゃない人らにとっては難しいのだろう。タップゲーマーとでも言おうか。
前者をヘビーユーザー、後者をライトユーザーとすると
今後はどの層にしぼってゲームを作るか悩むね。
どの層にも受け入れられるのが一番なんだろうけど。

レビューみてると日本のユーザーが一番たち悪いと感じるんだ。
海外の人らはわりと短くまとめて淡々とした意見が多いけど、じゃぽんのユーザー様は稚拙で感情的なのが多いよ・・・大和魂どこいっただ・・・。
いい人がいっぱいいても一部のアレな人たちのせいで残念な印象だけが強く残っちゃうよね。
まぁ最悪日本での公開はしないでおけばいいか。

アプリについてのことを書くつもりが内容がただの愚痴になって笑った。
今回のアプデで一通り区切りついた。
ステージも100まで有るし区切りとしてはちょうど良い数字。
今後のアップデートに関しては細かい所の修正かな。

今回のアプデ詳細。
まず、5thステージ追加。
81~100までありうち81と90はミニゲームステージ。
固定砲台で向かってくる巨人を撃ち倒すというもの。
難易度によって敵のスピードが上がる。
あと処理能力の高くない端末だと動きが早く感じる。
一応どの端末で操作してもスピードは一定になるようにしているつもりなのだが・・・
なぜか低スペック端末でやると同じ難易度でも随分難しく感じた。
固定砲台ステージに関しては、敵のどの部位に当たっても倒せる。
顔だけ狙うとなると極端に難しくなるからである。
すべてのステージにおいて自分でクリアした後、さらに一段階優しくしているが
これの調整は極端に簡単になったと思うがどうなることやら。
難しいという人に対して自分でクリアした動画を上げて見せた方がいいのだろうかね・・・

次にLIFEのLV上限を引き上げた。
これにより最高レベルでLIFEが400になる。
馬ステージをノーマルでクリアできないという声と
後半ステージから敵の攻撃力が上がっているので、もうすこしばかり
LIFEがないと厳しいと思った故の判断である。

そして最後にキャラクタ一体追加。
はんじ先輩である。
開放条件は奇行種(四速歩行、顔でか)を20体倒すことで使用可能となる。

今回のアプデではこんなかんじ。

今後のアプデではワイヤーアクションの動きをもう少し滑らかにしたり、
要望の多いキャラクターの追加とか。

ぶっちゃけ滑らかなワイヤーアクションに関してはワイヤー一本ならできたんだよなぁ・・・
二本となると急に難易度あがるからひとまず今の形にしたけど・・・
キャラクターに関してはだんちょーとかさしゃとか色々要望あるんだけど
まぁ要検討。

一番やりたいのはオンラインで協力プレイもしくは対戦みたいなことしたい。
これに関しては正直できるかわからない。できたとしても取間がかかりそうだ。
11月中に何かしらの成果を出したいなぁ。

そのほかコメントいただいたことに関してもあえてやらなかったことはあるのよね~
GASを利用した高速移動だとかガス上昇に加えての移動要素だとかだけども
これらは加えちゃうとワイヤーの必要性が下がるからあえて除外した。
今後のオリジナルアクションゲーム案でこの辺はとりいれようかな。


次はカジュアルゲーかパズル系作ってみたいなぁ・・・みつを。
出来そうなかんじ。
というか特に何事もなければ明日の夕刻にはアップデートできそう。

アプデ作業と平行してモデリングの勉強も進める。
いよいよモデリングにも力を入れようと思い参考書も買った。

正直モデリングに関しては参考書って必要ないのかもね。と思った。
なぜならネットに必要な情報やモデリングの手順などはある程度流れているから。
独学でそこから入ったから参考書に書いてあるのはおさらい的な意味が強い。
せいぜいショートカットについてちょっと学べたぐらいで、ソレすらもググれば見つかるだろうと思う。

それに参考書の手順どおりにやっても全く同じものが作れるかといえばそうではない。
三次元的な要素を、たとえば頂点なんかを全く同じような配置にしないと教科書どおりのものは作れない。
これ素人がやるとこの頂点の配置がめちゃくちゃになって教科書どおりにいかず
修正で時間をとられる。
本から三次元的な配置を探るなんて無理だからこういうのはソレっぽく仕上がれば良いという感じで進めないと・・・
買う前に気付くべきだったがこれはこれで良い勉強になった。
この一冊あれば他にもういらないな。

それにまだ序盤だし、これからページを追うごとに自分の知らない情報が得られるかもしれないから
とりあえずこの本から基礎を十分なものへと仕上げよう。

今週中に参考書の内容を終えて、来週からは新アプリの開発でも使用かね。
次は直ぐ出来そうなカジュアルゲーでいくか・・・
どうもレビュー見るとこの間追加したばかりのちびキャラで巨人を倒せないという声を見かけた。
ためしに自分で使ってみると・・・マジに倒せない・・・!?
あるぇ・・・デバッグ時はちゃんと倒せた気がしたんだけど・・・
と思いとにかく修正してアップデートした。
ちなみに倒せないのが仕様だと思ってた人もいたっぽい。
ごめんね・・・不具合なんだ・・・。

ちなみにちびキャラの特徴としては
全キャラ中ジャンプ力が一番高い、そしてみかさLV2並の攻撃力を持つ。
さらに攻撃音が特殊なのだ!

気分転換用のキャラだね。
正直、せっかくSHOPにCHARACTERの項目を用意したのにLV4が上限ってのも味気ないから
加えただけなのだ。

あと前に次のアップデートが最終アップデートといったが
アリャ嘘だ。テヘペロ
正確には原作最新刊がでるまで控えるって感じ。
それまでにちょっとした修正やキャラの追加もしようかな~といったところ。

というか別のアプリ作りたい。
今度はパズル系かワイヤーアクションを使ったカジュアルゲー
もしくは3Dアクション系のオリジナルかな。

可能であれば疾風の翼にオンライン対戦機能も取り入れたい。
アレもしたいしこれもしたい。
お金と時間が欲しいよぉ・・・

ちなみに反撃の刃も疾風の翼もiPhone、韓国では出せません。
なぜなら表現の規制によるもの。
まったくガッチガチに頭の固いところですよ。
今回のアップデートではステージの追加はなしなのよねぇ・・・
ってか次のステージ追加でこのアプリは一通り完成という形になる。
ソコからオンライン対戦系かモデリングの勉強してもっとクオリティをあげたいのだ。

ちなみに今日のアプデではチビキャラ三対追加した。
コレはSHOPのキャラクターレベルを上げれば入手できるという簡単なもの。
みかさたんについては前作《反撃の刃》から流用して顔をSDきゃらっぽくした。SDってなんだろうね。

それ以外でも修正が入る。
まず前回のアップデートで追加したキャラが使えないという声が目立った。
しかし、全キャラ制覇したという声もみかけた。
恐らくキャラクターセレクト時の矢印に気付いていないのだろうと結論付け
例の矢印を赤くして目立たせるようにした。修正前はテキストと同じ色だったから目立たなかったのだろう。

次に敵キャラの追加。
モデルのメッシュとアクションを増やし、奇行種も増やす。
パターンが違うもの同士で集うとなかなかゲームっぽ。

それで最後はゲーム時のリターンキーでの動作を修正。
コレに関しては自分で操作していてもたまに不愉快だったので今回ようやく改善できた。
レビューでの要望で見たときに、その手があったか!というので取り入れた。
あのユーザーさんには感謝ですお。ありがたう~。

大体こんな感じ、次回のアップデートは来週末ぐらいかな。
最後にハンジさんぐらいは加えようかな?


あとアプリのレビューをみてわかったことがあるが
基本的に☆1の意見はあてにならんのう・・・
きゃつらはただ匿名にかこつけて気を多くした坊やが調子こいてメチャクチャ言ってるだけ
しかもろくに説明も見ないでブー垂れてる将来何も生み出さないような人種だお・・・
もしかしたら☆2も見なくていいかも~
基本的に☆1や☆2の言うことって☆3以上の人が
ココはいいけどあとこうして欲しい
っていう要望の中に入っているから、わざわざブーブー文句言うやつのレビューなんか見ないで
その人らからの意見さえ取り入れてりゃ良い気がするな。
精神衛生上にもよくないしね。

というわけでこれからはレビューにはフィルターかけて☆3以上のものでも見よっかな!
☆1、☆2・・・残念ながら貴公らの意見はあたしにゃ届かないのです。ゴメソぇ・・・
今回のアップデートでりばいへーちょとゆみるとくりすたマジ天使ちゃんを追加した。

開放条件を下記に詳細。
へーちょ
・えれんもしくはえれんlv2で巨人化せずに敵を50体駆逐すると使用可能

くりすたマジ天使ちゃん
・ステージ50の馬ミニゲームをノーマル以上の難易度でクリアすると使用可能

ゆみる
・くりすた以下略で獲物を20体屠ると使用可能

前回のへーちょlv1は使用条件が厳しいみたいなので今回は時間さえかければ誰でも使えるような
感じの開放条件にしてみた。
最悪ステージ1を50回クリアすればいいんだし、lv1に比べれば随分楽な使用条件だ。
くr以下略に関しても性能はあるみんレベルだし大して難しいものでない。
ゆみるに関しても同様。


馬のミニゲームに関しては慣れないうちは難しいのかもしれないのか・・・
コツとしては自キャラは画面中ほどにおいて巨人が現れたら左右に逃げる。
このとき奥に行くと前から出てくる木が避けられなくなる恐れがあるからだ。
画面中ほどなら奥から現れる木々を視認してよけることは難しいことではない。

その間に巨人をうまくさけよう。
巨人はある程度ひきつけて、木々のない方の画面奥方に逃げる。
巨人が去ったらまた画面中ほどに戻り、左右移動でひきつけ、十分にひきつけたら
木々のない奥方向へ・・・と言う感じのパターンでクリアできる。
もっといい方法もあるかもしれないが自分ではこんな感じでクリアしてるから
まぁ不可能ではないということだけ・・・

他に追加するキャラクターはお金で変える感じにしようかな・・・
今日疾風の翼をアプデしたたぁ!

今回は4thステージである61~80までのステージを追加。
例によって61,70はミニゲーム的なステージとなっている。
内容は獣巨人が投げる障害物を交わして時間経過を待つもの。
それ以外は普通のステージ、70を境に前半はミケが襲われた場所をイメージし
後半はウドガルド城をイメージしたつくりになっている。

4thステージは3rdステージに比べ巨人のスピードを落として攻撃力をあげた。
あとウドガルド城に関してはワイヤーをはじく箇所がある。
作った当初は想定していなかったが、劇中でもワイヤーが引っかからなかったりする場面があるので
コレはコレでいいかと思た。

あとゲーム難易度の敵攻撃力変化。
ノーマル、ハードは敵の攻撃力がちょっとだけ上がったんじゃよ。

そんでもって新キャラ3体ほど追加。
詳細はこの後まとめよう。

次のステージは原作11巻ぐらいの場面をイメージしてそこでひとまず終了かな。
敵キャラのバリエーションを増やしたりしよう。

コレを作り終えたら今度はネット対戦できるようにしたいなぁ・・・
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。