Git Product home page Git Product logo

fiveelements-opencombat's Introduction

FiveElementsOpenCombat

Unityの習作としてOpenCombatを組んでみた。 五行説を元にした属性相性を取り入れたが、うーんどうだろう?

Font:しっぽりアンチック SIL Open Font License Version 1.1

開発日記

ClientWebSocket.ReceiveAsyncを無限ループで回すことにしたが、こいつの終了判定が判明するまでめちゃくちゃ迷走しまくった。 最初はキャンセルしたり例外をcatchしてみたり、なんとなくは動くけどエラーが消えなかった。 いやまさかWebSocketReceiveResultで判定するとはな。 CloseStatusだけあって「なんで?」とおもったら

MessageType:現在のメッセージが UTF-8 メッセージであるか、バイナリ メッセージであるかを示します。 噓書くなや、三状態じゃねーかよ Close 2:終了メッセージを受信したため受信が完了しました。

WebSocketの変遷

  1. 自前処理がなんとかできた WebGLに対応したい

  2. https://github.com/jirihybek/unity-websocket-webgl にたどり着く 文字で送信されてると無視されて読めないのを修正する。websocket-sharpが要求される(まあ別にいいっちゃ良いんだが)

  3. https://github.com/endel/NativeWebSocket なんてのもあった WebGL以外は適当なメインスレッドでDispatchMessageQueueを呼ばないとOnMessageを飛ばさないという一貫性のない実装 とりあえずNativeWebSocketのReceiveAsyncループ内でsynchronizationContext.Postを使ってDispatchMessageQueueすることに

  4. なんとなくPUN2を用いたマスタークライアントで実装してみたが、めちゃくちゃ疲れた。 カスタムプロパティとルームコールバックでいろいろやってみたが、更新タイミングが意味不明でいろいろめんどくさくなったので 結局、IOnEventCallback.OnEventとPhotonNetwork.RaiseEventでゴリ押すことに。流すデータのシリアライズもJSONでゴリ押し。 サーバとクライアントがくっ付いてる構造がややこしいし、デバッグも面倒だしでほんと疲れた。

fiveelements-opencombat's People

Contributors

juna-idler avatar

Watchers

 avatar

fiveelements-opencombat's Issues

IGameServerの仕様をちょっと変えたい

今はタイトルシーンで初期化処理をして初期データを貰ってからゲームシーンに渡しているが、
ゲームシーンの初期化を完全に終えてから、接続済みのサーバに改めて「準備完了」と伝えて初期データを貰いたい。

ゲームシーンの初期化に結構時間が掛かるようになったので、タイムラグをなるべくなくしたい。

拡張ルール

メモ帳代わりに。

属性相性のみで、賢い(先読みの計算力+相手の思考推察力)ほうがほぼ勝つであろう現状でもまあいいんだけど、
もうちょっと一般的なカードゲームの楽しさに近づけるなら、もうちょっとなんかあっても。

まあ要するに特殊効果ってやつ。

既存の似たシステムを参照するに、「戦闘時(タイミング諸々)」と「場に出たとき(アクティブ)」と「場に居るとき(パッシブ)」が主流っぽいか。
(カードコマンダー、突破 Xinobi Championship、メソロギア)

「場に出す」が原理的にただの運ゲーなので無しとして、しかし「場に居るとき」もなんか好きじゃない。
戦闘時のみで押してもいいけどもうちょっとなんかほしい。

効果の方から考えてみると、
まず除去は絶対にない。あってもバウンスが限界。
あとランダム効果も好きじゃないので無し。
しかしユーザー選択が必要な効果も基本的に無しにしたい。

で思いついた案の一つが、計略フェイズ
戦闘フェイズの前に計略フェイズを作って、そこで手札からスキルを発動する。
この時も互いに同時に選択、発動する。未使用(もしくはスキルを使えるカードが手にない)もあり。

スキルはカード一枚につき一回まで。
スキルを持つカードは基本ステータスが低い。
スキルの効果は、単純なバフデバフはなるべく避けたい。
フィールドに属性を流入させる効果が基本か?あとはサポートの属性を変化させるとか
ちなみに両者がフィールド効果を同時に発動した時はそれぞれ自陣にのみ影響。
順番で効果が変わるようなものは基本的に実装しない。どうしても必要な時は効果の順番を固定する。

計略スキルとは別に戦闘時系効果をどうするか?

使用したカードの一覧を表示する

考えてはいた(というか旧JavaScript版にはある)んだが、めんどくさがって放置していた。
まあ一応想定はしてイメージはあるので、いい加減やってみるか。

ソーティングオーダーを整理する

Canvas含めて適当に数値を決めてるのでややこしくなってきた。
排他的なUIには適当な高数値よりもソーティングレイヤーを使うことも考慮か。

演出を何とかする

ぶっちゃけゲーム自体はひたすら地味なんで見た目をよくする。

とりあえずバトル時の勝敗決定プロセスを分かりやすく見せたい。
サポートからの影響と対戦カード同士の相性の発生と数値の変化をいい感じに表示して、戦闘結果も見た目に分かりやすく。

しかし演出のセンスとか自分自身まるで期待できないので、まあ努力目標。

一段落

とりあえず一段落ついた感じなので、まったりと過ごす。(それをここに書く必要があるのか?)

妄想ゲーム拡張仕様以外には、まあステートレスなサーバで実装できないかなとか考え中。

CPUをなんとかする

ランダムだけではさすがにアレなので、もうちょっと思考するCPUを。
先の先まで予測するとかは面倒だとしても、
せめて単純に現在の自分の手で最も勝率の高い手を選ぶとか、
相手が単純に動くと仮定したときに対抗できる手を選ぶぐらいはまあ。

待ち時間を何とかする

相手の手を待つ時に何の演出もないのを何とかする。
合わせて時間制限もそのうちに。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.