はじめまして!アルバイトのkouhiraです!
いきなりですが、僕は三度の飯よりも野球が好きだと自負しています。三度の飯もかなり好きな方なので、野球に対する愛はそんじゃそこらの人には負けない自信があります。
そしてもちろん、プログラミングも大好きです。こちらはまだまだ勉強することの多い身ですが、毎日楽しくスプーキーズでもコードを書いています。
野球オタクがプログラミングという趣味を持った場合、当然「自分で野球ゲームを表現してみたい!」という目標を持ちますよね?(持ちませんか?)
僕もご多分に漏れずそんな目標を抱いていて、その足がかりとして、「Minecraft」というゲーム内で野球をするプラグイン(Steamゲーにありがちな「MOD」の亜種みたいなものだと思ってください)を趣味で作成しています。
そして先日、社内勉強会で発表する機会があり、僕はそのプラグイン作成時に学んだ知識について発表しました。(スプーキーズの社内勉強会は業務内容と微塵も関係なくても温かく聞いてもらえます!)今回は、その時に発表させていただいた内容を紹介させていただこうと思います!
前提としている環境はかなり特殊ですが、環境に依存しない内容に絞って紹介するつもりですので、もし役に立ちそうな知識があれば、スポーツゲーム作成などの際の参考にしていただければ嬉しいです!
※物理の知識について書いた箇所がありますが、書いている僕は高校物理すら習っていない根っからの文系です…なにか誤りなどありましたら申し訳ありません…。
前提
- SpigotというMinecraftの公式サーバーソフトウェア上が動作環境。
- MinecraftのJava Editionで動作するものなので、開発言語はJava。
- イベント駆動(ゲーム中にこういうエンティティがこういう挙動を行ったとき、といったものに対応してリスナーを書いていく形式)で概ね書く。
- イベントとは無関係に定期的に実行したい動作はRunnableというものを定義し、実行間隔などを指定して呼び出す形式。
- 基本的なプレイヤーの動きはMinecraftにデフォルトで搭載されているものが利用でき、野球の根幹を成す「投げる」という動作は雪玉というアイテムを利用している。
- 物体の移動は「速度」として三次元ベクトルを付与する形。
- その瞬間(0.05秒=1tick)の(xの移動量,yの移動量,zの移動量)というのがここでの「ベクトル」(yが上下方向)
続きを読む