ゲーム開発備忘録

ゲームプログラマー UE4・5向けの記事を書いておりますので見ていただけるとありがたいです。

【UE4・UE5】〈Tips〉WebAPIを使ってゲームと現実の天気を同期してみよう

目次

 

はじめに

この記事はUnreal Engine (UE) Advent Calendar 2022の2部6日目に参加しています。

Unreal Engine (UE) Advent Calendar 2022

今回はWebAPIを活用して現実世界の天候とゲーム内の天候を同期する方法を解説します。


この記事を執筆するにあたり以下のAPIとアセットを使用しました。

weather.tsukumijima.net

www.jma.go.jp

www.unrealengine.com

www.unrealengine.com

 

 

解説

1.APIを使用する無料プラグインの導入

以下のプラグインを導入します。

www.unrealengine.com

 

使用したいエンジンのバージョンを選択してインストールします。

 

プロジェクトを開いてプラグインからVaRestを有効化します。

 

これで利用できるようになりました。

 

2.天気データの取得方法

現在の天気をJsonで返すAPIがあるのでこれを利用します。

weather.tsukumijima.net

 

試しに東京の天気にアクセスするには以下のサイトを開きます。

https://weather.tsukumijima.net/api/forecast/city/130010

 

今日の天気や明日の天気を返してくれます。

 

任意の都市への検索は以下のURLから取得できます。

東京(130010)なので末尾に番号を付けています。

https://weather.tsukumijima.net/api/forecast/city/  +  都市コード

 

都市コードのサイトは以下の通りです。

weather.tsukumijima.net

 

3.UEからデータの取得

 

どこでもいいですが今回はレベルブループリントに記述していきます。

 

先ほどのURLを入力します。

 

CallBackに内容が返ってくるので

"forecasts"の初めのデータ(今日の天候)を取得します。

 

返ってくる内容は以下

 

デバッグするためにも日付と天候を出力してみます。

 

実行してみましょう。

こんな感じに内容が取得できていることがわかります。

 

4.実際に天気を変えてみる

0から作るのは大変なので天気アセットのUltraDynamicSkyで実装してみました。

www.unrealengine.com

ざっくり実装例を解説します。

レベルに以下のBPをドラッグアンドドロップします。

 

天気の文字情報から処理を分岐します。

代表的な内容を作ってみたので参考にしてみてください。

 

~のち~は暫定的に午前午後で処理を分岐しました。

 

時々~はランダムで返すようにします。

 

実行して天気が変化していく様子を見てみましょう。

 

実装例をBluePrintUEで共有しておきます。

blueprintue.com

blueprintue.com

blueprintue.com

 

追記

お天気APIがアクセスできなくなってしまったので、臨時で気象庁Jsonデータから取得するバージョンも紹介します。

www.jma.go.jp

東京の天気は以下のURLからアクセスできます。

https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json

 

文字だと余計な文が入ってしまうので天気コードで返します。

weather.yukigesho.com

 

最後に

今回はAPIを使用することでゲーム内と現実の天候を同期してみました。

ほかにも現在地を取得したり、任意のAPIを作成して文字列を可変取得したり応用が利くので活用していきましょう。

 

UE4やUE5向けの記事を書いています。

皆様の応援が投稿のモチベーションになりますので

コメントやTwitterのフォローなどしていただけるとありがたいです。

それではよきゲーム開発を。

投げ銭を投げる