初めてのブログ
初めまして。neotaiyouです。
マイクラRPGがいつまでたってもできない、最初に投稿したのはゴミ、この前のも手抜き。このままじゃ印象悪い。
だから、ブログやっちまえ!!って始めました。
なんかわめいてるやつがいるなってみてくれたらありがたいです。
マイクラRPGはJAVAで作りたい。
つい最近…とはいってもかなり前になってしまいましたが、統合版のパリィできる某RPGはかなりクオリティが高く、ものすごい衝撃をうけました。
統合版の可能性を感じました。
じゃあなんでJAVAなの?って話。
理由は簡単でアプデで動かなくなることがないからです。
やっぱり、作ったものがアプデでうごかなくなったら悲しい。
でもJAVAならバージョンをさかのぼれる。
いつまでも自分の作ったものを遊んでもらえる(そもそも完成したらの話ですが…)
だからJAVAで作りたい。
独自システムをどうするか。
日本のJAVAのRPGといえば、某霧が真っ先に浮かんできます。
ただ思ったんです。
某統合版のRPGに登場するmobは雑魚まで特殊でかっこよかった。システムもよかった。
でもそれは、今後この作品がすごい!って言われるためにはあれは最低限のラインになるということ。
いったいどうしたら、あれのような、でも独自のシステムを作れるのだろうか?
そこで僕が目をつけたのは”攻撃”でした。
攻撃をタイミングよく防御するのってゲームとしてはすばらしい。
でも、アニメとかだとよく剣とか素手で魔法を切ったり投げ飛ばしたりしますよね?
それを作ろう!と思ったんです。
自分の攻撃で相手の攻撃をはじける。 相手の攻撃によって自分の攻撃がはじかれる。
なんだかすごそうじゃないですか?
とりあえず、ファンタジーならラテン語が僕の中での認識なので切るを意味するsecareと呼ぶことにしました。
これが原因で開発がものすごい長くなっているのですが…
攻撃スキルを停止する、ただそれだけからはじまった。
ここからデータパックの話です。
事前に行っておきます。へたくそです。超下手です。
まず、攻撃を止めるシステムを作ろう!ということで、ハスクに特殊スキルを実装しました。
スコアボードで、aiのタイマーを作成、スキルを使うときにinteractionを召喚。
もし、interactionをプレイヤーが攻撃したなら、そのプレイヤーの攻撃力を取得して、ハスクの攻撃力より高ければ、スキルを停止。
低ければ敵の攻撃力を減らす。
このシステムは我ながら名案!なわけなかったですね。通常攻撃をsecareできません。しかも、hp管理、攻撃力取得といろいろ複雑で面倒。
ってことで今度は、プレイヤー、敵のすべてのステータスをスコアボードで管理することにしました。
それを適用するためにハスクの当たり判定から何から何までinteraction。
通常の攻撃力は0に設定。
これはなかなかうまくいきました。
一体の時は…
当たり前の話ですが、当たり判定に使っているinteractionをハスクに結び付けなくてはいけません。
なので全entityにidスコアを付与して、interactionと結び付けました。
これがすごい面倒。
自分と同じスコアのentityに処理を発動させるというコマンド。この自分の持つスコアはランダムで、しかもこの”自分”が同時に複数体いる。
execute if score @s OOO = @e[tag=OO] OOO run … これだけだと当たり前ですがどうしようもありません。
いろいろ考えた結果、再帰処理しかない。となりました。
ダミープレイヤーに自分のスコアを保存して、interactionがそのスコアに一致するかを調べる。
そしてダメージやらなんやら大量の処理をする。
そうしたらまだ別の誰かのスコアをダミープレイヤーに…
これ作るの当時はかなり大変でした。
entityへidをあたえる処理がうまくいかなかったり、再帰処理を組み間違えてクラッシュしかけたり…(コマンドチェーンの最大数的なののおかげで助かった。)
これらの苦労を乗り越えてやっと…
ハスクが透明な箱をかぶってあるく、スキルをsecareできるようになりました。
これだけだったらrideコマンドでよかっただろと思いますが,,,まあいろいろあった今役に立ってるのでよし!
アニメーション問題
やっと独自システムの基礎を完成させた(と思っていた)僕。
演出を付けられるようになれば、すごいものができる!
と、私は昔友達のために作ったカスタムモデルデータ式の3dボスのデータを引っ張ってきました。
その技術をおうようして、ハスクが剣を振る演出を作ったのですが、それに3時間。
しかもできたものはパラパラ漫画。
これだとsecare以前に敵の攻撃がわかりません。
どうにかできないか…とyoutubeを漁る日々。
おすすめ欄がswitch向けのコマンドであふれかえるという代償を払って私はあるツールをみつけました。
animated_javaです。
このツールは海外の方が製作しているものでblockbenchで作ったアニメーションをデータパックに出力してくれるものです。
でもこのツール、情報が極端に少ないです、
というのもこのツール、マイナーすぎるからか解説動画は日本人1本外国の方2。3本(しかもツールのバージョンが古くどれも使い物にならない。)
中卒englishで頑張ってツールを翻訳、英語すら書いてない細かい仕様は手探り。
涙ぐましい努力の結果、ついに習得。
そして、先ほど作っていたシステムをツールに対応したものに作り直すことになりました。
コメント