기타/Steam

[Steam] 스팀 도전과제 추가

나는야 개발자 2025. 3. 14. 12:50
반응형

선행

1. 스팀 앱 등록이 되어 있어야함

2. 스팀 초기화까지 완료된 상태

 

SDK 링크

- https://github.com/rlabrecque/Steamworks.NET/releases

 

Releases · rlabrecque/Steamworks.NET

Steamworks wrapper for Unity / C#. Contribute to rlabrecque/Steamworks.NET development by creating an account on GitHub.

github.com

 

스팀 윅스 도전과제 이동

- 대시보드 -> 원하는 게임 선택 -> 기술적 도구 -> Steamworks 설정 수정 -> 통계 및 도전 과제 -> 도전과제

 

새로운 도전과제 생성

-  API 이름 : API 불러올때 사용(유저에게 표시 X)
- 표시 이름 : 도전과제 이름(달성 시 유저에게 표시O)
- 설명 : 유저에게 보여지는 설명 
- 숨깁니까? : 달성 전 도전과제가 유저에게 노출될지 설정(달성 시 노출됨)
- 달성아이콘 : 달성 시 아이콘
- 미달성 아이콘 : 달성 전 아이콘

 

완료하고 난 후 변경사항 게시할 것

 

코드 작성

using System.Threading.Tasks;
using Cysharp.Threading.Tasks;
using Steamworks;
using UnityEngine;

public static class SteamQuestManager
{
    public static async Task Steam_Quest_Active(string apiname)
    {
        if (!SteamManager.Initialized)
        {
            Debug.Log("SteamManager가 초기화되지 않음!");
            return;
        }

        SteamUserStats.ClearAchievement("test");  // "test"를 원하는 도전과제 API 이름으로 변경
        SteamUserStats.StoreStats();
        Debug.Log("도전과제를 초기화했습니다!");

        await UniTask.WaitForSeconds(0.25f);

        // 현재 유저의 도전과제 상태 요청
        if (!SteamUserStats.RequestCurrentStats())
        {
            Debug.Log("도전과제 상태 요청 실패!");
            return;
        }

        Debug.Log("도전과제 상태 요청 성공!");

        await UniTask.WaitForSeconds(0.25f);
        // 도전과제 상태 가져오기
        if (!SteamUserStats.GetAchievement(apiname, out bool isstate))
        {
            Debug.Log($"도전과제 {apiname} 정보를 가져오는 데 실패!");
            return;
        }

        Debug.Log($"도전과제 {apiname} 상태 확인 완료, 현재 달성 여부: {isstate}");

        // 이미 달성한 도전과제라면 리턴
        if (isstate)
        {
            return;
        }

        await UniTask.WaitForSeconds(0.25f);

        // 도전과제 달성
        if (!SteamUserStats.SetAchievement(apiname))
        {
            Debug.Log("도전과제 달성 실패!");
            return;
        }

        // 도전과제 저장
        if (!SteamUserStats.StoreStats())
        {
            Debug.Log("도전과제 저장 실패!");
            return;
        }

        Debug.Log("도전과제 저장 성공!");
    }

}

 

결과

 

실패시

- SystemMessage.Create($"현재 Steam App ID: {SteamUtils.GetAppID()}"); 로 내가 설정한 ID가 맞는지 체크

- 도전과제를 apiname 제대로 넣었는지 체크 

반응형

'기타 > Steam' 카테고리의 다른 글

[Steam] 브랜치 사용방법  (0) 2025.04.11
[Steam] 앱 출시 후 올리는 방법  (0) 2025.04.09