1
0
hugo/content/blog/2024-01-23-game.md

148 lines
6.7 KiB
Markdown
Raw Permalink Normal View History

2024-04-23 13:21:26 +00:00
+++
date = "2024-01-23"
tags = ["ue5", "ue"]
title = "ue5のBPでapiを呼び出す方法"
slug = "game"
+++
今回は、ue5のBP(ブループリント)でapiを呼び出す方法やue5で最近やったことをまとめます。
最近はゲーム開発を全くやっていませんでしたが2日くらい前から再開しました。
再開した理由としては、誕生祭でしょうか。そこに間に合わせるため実装を進めました。
とりあえずデバッグモードみたいなものを公開し、少しずつ改良していくのが自分には合ってるのかもしれません。
既存の完璧なゲームを目指してると、なんかやらなくなっちゃう気がする。
あと、windowsで開発してるとブログを書きづらい。とりあえず[blueprintue.com](https://blueprintue.com/)をwindowsから貼って、それをブログで引用する。
### va rest
va restのpostですが、macで動いたものがwindowsでは動きませんでした。ですが、windowsでイチから作成すると動きました。
ue5は`PATCH`に対応していません。この辺はapiを作り直さないといけないかもしれない。
<iframe src="https://blueprintue.com/render/4qo0qydu/" scrolling="no" width="100%" height="400px"></iframe>
### login
login処理です。atprotoと連携できればいいなと考えています。
あと、ゲーム公開/非公開はaiのアカウントで判断しています。ある値がtrueなら公開、falseなら非公開です。ここをapiで変更すれば基本的にゲームの起動自体をコントロールできるようになってる。
<iframe src="https://blueprintue.com/render/9v24l5h6/" scrolling="no" allowfullscreen width="100%" height="400px"></iframe>
### global var
instansで作成したものをpulbicにして、castで呼び出します。
### mouse cursor
マウスカーソルが表示されないのに対応。
### day if
日付でifして処理する。
### destroy actor
アイテムを取得後は呼び出さないようにします。例えば、lvを移行すると再び出現してしまうのを回避できます。
どのように処理するのかというと、いろんな方法があるものの、私の場合はapiを叩いてカードの手持ちから判断します。既に持っていれば`event begin play`でdestroyします。
これらの値はlogin時にすべてglobal変数に入れておきます。アイテムのBPでdestroyする処理を書きます。
### ゲームの方向性と今後
今回公開しているのは、デバッグモードと私が勝手にそう呼んでいるものになります。つまり、世界を作っている最中の様子を少し垣間見えるようにした、みたいな感じです。ですから、本来作ろうとしているゲームとは少し違った形での提供になっています。
#### 常に動かせる
とにかく、アイをかわいくしたい。
モーションとかを自然に、かつ常に動くようにしたほうがいい。あと、これは世界そのものを常に動くもので満たされるようにしないといけないと思っていて、時間や季節、風や動物など。
- あらゆるものが常に動くようにする
#### コマンドで操作
最終的にはatprotoのアカウントを採用した上で、blueskyと連携できるようにしようと考えています。
新しくatproto serverを建てたのもそのためです。いきなりbsky.socialのアカウントを使ってもらうのはよろしくないので、最初は全部をself-hostしているsnsでログインできるようにした上でコマンド操作を可能にしていきたい。
例えば、コマンドで敵のリポップなどを操作して、戦闘のデバッグを行いたい。
- 現実とゲームをリンクさせる
#### あらゆるものをランダムに
色々なものにランダム要素を入れていく。
例えば、ジャンプ一つとっても、2つのパターンを用意して8:2の割合で異なる動きをするみたいな感じ。
- バランスとランダム要素
#### 戦闘システム
- アイは一度死んでも数秒間パワーアップして蘇る。つまり、それを前提にした戦闘システム
- 基本的に日をまたいで攻略する。HPを記録する。それほどまでに強敵でHPが高い
- ボスの攻撃は即死か2,3発食らうと死ぬレベルがいいと思う
- 成功報酬はランダムで、かつ厳選難易度が高い
#### ガチャ
ガチャはpaypal決済で以下の要素で構成したい。
1. 衣装
2. 武器
衣装のガチャは、ピックアップされた衣装が当たる。
衣装を変えるとスキルやバースト(必殺技)が変わる。普通のゲームで言うキャラガチャ。
衣装は最大4つまでセット、切り替えられるようにするとかなら戦闘をデザインしやすい。
#### システムは使い回せる
あらゆるシステムは一度構築すると使い回せるので、とりあえずゲームとして秘境、ガチャ、強化周りのシステムを構築したい。
シンプルに小さくするのが作り方としては良さそうなので、小さなことからコツコツと。
- 一つ一つ丁寧に作って、それを使い回す
#### スタミナと経験値、ステータス
lvは移動速度やスタミナを増加させるだけのものにしようと考えています。そのための経験値はキャラが動いた時のみから得られる。例えば、1歩動いたら1ポイント。lv10に上げるには`10,000,000`ポイント必要みたいな感じ。大体1年やって7レベルくらいを考えてる。
最初は飛べないし、移動速度もかなり遅くする。
攻撃力や会心率は武器や秘境ボスがドロップするアイテムの厳選で上げられる。
- 歩くと経験値
#### 物語
物語はいくらでも作れるけど、どんな風にしようかは迷ってる。
物語は殆どなくてもいいかもしれない。作るとしたらアイのパワーアップのきっかけにする。つまり、物語とパワーアップはセットにしたい。
物語のコアは「世界の秘密と旅」にしようかな。
あと、物語には常に一つの「プレイヤーの選択」を入れること。選択は取り返しがつかないものにすること。
- プレイヤーの選択と取り返しがつかない要素
#### 最初の選択
アイは髪の毛が長い(女の子)と髪の毛が短い(男の子)を選択できるようにする。
これは色々なゲームに採用されているし、重要なことだと思う。
- 性別の選択