表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
18/32

俺の最強カードをみんなで集めて対戦したい! → APIこんな感じです

http://sukidukinn.blog/wp-content/uploads/2024/10/20241023_CardMasterAI.zip

↑プロジェクト+コード ↓実行プログラム

http://sukidukinn.blog/wp-content/uploads/2024/10/CardMasterAI_Win.zip


https://chatgpt.com/share/e/67189739-9314-8013-b5b6-42f94deb487a

Firebaseの接続、googleスプレッドシートの読み書き、chatGPT,DALL-E3のAPI連携について色々聞いた。



で、「俺の最強カードをみんなで集めて対戦したい!」ので、chatGPTに色々聞いた。


★firebaseだとカードイメージやjsonの送受信できる? →はい、コードとやり方こんな感じ

public void ReceiveTexture2D(Action<Texture2D> callback, string loadPath)

{

StorageReference imageRef = storageRef.Child(loadPath);


// 画像をFirebase Storageからダウンロード

imageRef.GetBytesAsync(long.MaxValue).ContinueWithOnMainThread(task =>

{

if (task.IsFaulted || task.IsCanceled)

{

Debug.LogError($"Failed to download Texture2D: {task.Exception}");

callback(null);

}

else

{

byte[] fileContents = task.Result;

Texture2D texture = new Texture2D(2, 2);

texture.LoadImage(fileContents);

callback(texture);

}

});

}



★chatGPTでカード名からイラストを作りたい →はい、コードこんな感じ

public async void Dalle3(Action<Texture2D> callback, string imageText )

{

RequestBody body = new RequestBody();

body.model = "dall-e-3";

body.prompt = imageText; //画像生成テキスト

body.n = 1;

body.size = "1024x1024";


string jsonBody = JsonUtility.ToJson(body);


//以下、OpenAIのAPIへJSONを投げる

UnityWebRequest request = new UnityWebRequest(dalle3Url, "POST");

byte[] postData = System.Text.Encoding.UTF8.GetBytes(jsonBody);

request.uploadHandler = new UploadHandlerRaw(postData);

request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

request.SetRequestHeader("Content-Type", "application/json");

request.SetRequestHeader("Authorization", "Bearer " + apiKey);


var operation = request.SendWebRequest();

//Debug.Log( "DALLE-3: " +body.prompt );


while (!operation.isDone)

{

await Task.Delay(10);

}

if (request.result != UnityWebRequest.Result.Success)

{

Debug.Log(request.error);

}

else

{

// OpenAIのAPIが正常にレスポンスがあった場合は以下

if (request.responseCode == 200 || request.responseCode == 201)

{

string text = request.downloadHandler.text;

ImageResponse response = JsonUtility.FromJson<ImageResponse>(text);


string imageUrl = response.data[0].url;

Debug.Log(imageUrl);

await DownloadAndSetTexture(callback,imageUrl);

}

}

request.Dispose();

}

async Task DownloadAndSetTexture(Action<Texture2D> callback, string url)

{

using (UnityWebRequest www = UnityWebRequestTexture.GetTexture(url))

{

TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>();

www.SendWebRequest().completed += _ => tcs.SetResult(true);

await tcs.Task;


if (www.isNetworkError || www.isHttpError)

{

Debug.Log(www.error);

}

else

{

Debug.Log("DownloadAndSetTexture");

Texture2D returnTexture = DownloadHandlerTexture.GetContent(www);

callback(returnTexture );

}

}

}


★カードの名前から強さをAIで考えて! →はいこれ

string jsonData = $@"

{{

""model"": ""{model}"",

""messages"": [

{{

""role"": ""user"",

""content"": ""{message}""

}}

]

}}";


UnityWebRequest request = new UnityWebRequest(chatGPTUrl, "POST");

byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonData);

request.uploadHandler = new UploadHandlerRaw(bodyRaw);

request.downloadHandler = new DownloadHandlerBuffer();

request.SetRequestHeader("Content-Type", "application/json");

request.SetRequestHeader("Authorization", "Bearer " + apiKey);


await SendUnityWebRequestAsync(request);


if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)

{

Debug.LogError("ChatGPT Error: " + request.error);

callback(null); // エラーが発生した場合はnullを返す

}



こんな感じでコピペで実行したらこうなった。

挿絵(By みてみん)


城を守るゴーレム、という名前で画像生成すると、20秒後に画像ができる。

次に、強さ作成をすると、パラメータもテキストでできる。


あとはドロップダウンで指定した番号0から7で、送信と受信をするとfirebaseで読み書きできる。

挿絵(By みてみん)


実行時に、firebaseで登録された枚数を取得して、jsonとpngを取り込むことでみんなのオリカで対戦できるかも?


今はこの仕組みだけ確認して終了! 次はDNA変異ビルドゲーム作るぞい。


firebase接続 10h、スプレッドシート連携5h、openAI API連携 12h、ゲーム枠の作成と確認 3h

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ