Steamworks パッケージを利用してFlutterアプリケーションをSteamにリリースします
※ readmeに’Steamworks SDK wrapper written in a darty way to be used in dart projects’の記述がありました。念のためご注意ください
#2 実績作成編
1. steamの実績を作成します
実績の作成はこちらを参考に作成しています
2. steamworksをインポートします
import "package:steamworks/steamworks.dart";
3. utf8Pointer作成用の関数を準備します
import 'dart:ffi';
import 'dart:typed_data';
import 'package:ffi/ffi.dart';
Pointer convertUint8ListToPointerUtf8(Uint8List uint8List) {
// Utf8にはnullで終端するためのバイトが必要です。
final Pointer utf8Pointer =
calloc.allocate(uint8List.length + 1).cast();
// Uint8Listの内容をutf8Pointerにコピーします。
final Uint8List nativeString =
utf8Pointer.cast().asTypedList(uint8List.length + 1);
nativeString.setAll(0, uint8List);
nativeString[uint8List.length] = 0; // null-terminate the string
return utf8Pointer;
}
4. 実績を解除する
Future _AchievSteam() async {
String input = '[API名の文字列]';
// 文字列をUTF-8バイトリストに変換
Uint8List uint8List = Uint8List.fromList(utf8.encode(input));
Uint8List data = Uint8List.fromList(uint8List);
Pointer utf8Pointer = convertUint8ListToPointerUtf8(data);
try {
SteamClient steamClient = SteamClient.instance;
CSteamId steamId = steamClient.steamUser.getSteamId();
print("SteamId: $steamId");
SteamApiCall callId =
steamClient.steamUserStats.requestUserStats(steamId);
print("SteamApiCall first: $callId");
await steamClient.steamUserStats.setAchievement(utf8Pointer);
await steamClient.steamUserStats.storeStats();
} catch (e) {
print("Error : $e");
calloc.free(utf8Pointer);
return ;
}
calloc.free(utf8Pointer);
return ;
}
steamUserはISteamUserStatsのラッパーのようです。他の機能を使用したい場合はこちらで仕様を確認できます
Flutterを利用したSteamのアプリです
作成した画像はゲーム等の素材としてもご利用いただけます!