개발환경 구축

스팀에 유니티 게임 올리기

codehunter 2024. 6. 9. 21:39

이 글은 스팀에 게임을 올리면서 겪은 걸 까먹지 않도록 하기 위해 적어놓는 글이다.

 

스팀웍스에 앞으로 올릴 앱정보를 등록해서 Appid 를 받은후에 할 작업에 대해서

먼저 초간단 요약을 해보면 (좀 아래에 유니티로 스팀작업을 할때 많이 검색되는 글)에 자세히 나와있긴 하다.

 

1. 제일먼저 유니티에서 스팀빌드를 지원하는 플러그인을 다운받자. 2024.6 기준 20.2.0버전이 최신이다.

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

 

2. 이 플러그인을 유니티에 설치후에 빌드한다음 실행을 해보면 바로 문제가 발생하는데 그때부터가 고생시작이다.

설치후에 프로젝트의 루트 폴더를 보면 steam_appid.txt 파일이 하나 보이는데 열어보면 480이라는 숫자가 보인다. 이 숫자를 본인이 스팀웍스에서 등록할때 받은 앱 아이디로 바꿔야 한다. 편의상 1234라고 하자.

 

3. Assets/Scripts/Steamworks.NET 아래에서 Steamworks.NET으로 가져온 SteamManager.cs 파일을 열고.99번라인쯤에

if (SteamAPI.RestartAppIfNecessary(AppId_t.Invalid))  -> if (SteamAPI.RestartAppIfNecessary(new AppId_t(1234)))

로 바꾼다음에 StameManager 스크립트를 초기화할수 있게 적당히 빈오브젝트 만들고 여기에 StameManager 를 추가. 

 

4. 스팀앱이 떠 있는 상태에서 스팀과 통신하는지를 간단히 테스트 해보려면 에디터 상에서 초기화 체크후에 userid를 얻어오는지를 살펴보면 된다. 여기까지 되면 업로드할 준비는 된 상태이다. 빌드후에 일단 실행해보면 설치를 하려고 하는 화면이 나온다.

using Steamworks;
using UnityEngine.UI;

public class MySteamManager : SteamManager
{
    private CGameID m_GameID;

    public Text txtData;

    private void Start()
    {
        if (SteamManager.Initialized)
        {
            CSteamID userId = SteamUser.GetSteamID();
            string userName = SteamFriends.GetPersonaName();
            print("Logged in as: " + userName + " (ID: " + userId + ")");

            txtData.text += "\n" + "Logged in as: " + userName + " (ID: " + userId + ")";
        }
    }
    
    ...

 

5. 4번까지는 유니티에서 할 작업이었고 이제는 스팀웍스에서 할 작업이다. 스팀웍스 페이지에서 Steamworks SDK 를 다운받을수 있는데 2024.6 기준 1.59버전이 최신이다. 이 SDK가 하는일은 크게 보면 업로드 주 역할이다. 일단 다운 받아서 압축은 적당한 곳에 풀어서 살펴보면 여러 폴더가 보이는데 주로 tools 폴더에서만 작업하면 된다.

 

sdk > tool > ContentBuilder > content > 업로드할 게임 루트폴더 (예를들면 steamworktest) > 실질적인 콘텐츠들

sdk > tool > ContentBuilder > scripts > 이 폴더에 있는 파일 3개가 매우 중요한데

app_build_1000.vdf

depot_1001.vdf

depot_1002.vdf

요 파일에 정보들을 적어놓고 업로드하면 실질적인 스팀업로드 작업은 끝나는 것이다.

 

6. app_build_1234.vdf

이 파일은 파일명을 앱아이디로 바꿔놓아도 작동하는데 이렇게 바꿔놓으면 식별하기가 좋다. 내용은 아래와 같은데 

ContentRoot와 Depots 내용이 중요하므로 잘 적어놓자. Depot id는 편의상 1235로 하자.

	"AppBuild"
	{
		"AppID" "1234"
		"Desc" "test game" // 게임 설명
		"Preview" "0" // make this a preview build only, nothing is uploaded
		"Local" "" // put content on local content server instead of uploading to Steam
		"SetLive" "AlphaTest" // set this build live on beta branch AlphaTest
		"ContentRoot" "..\content\steamworktest\" // 콘텐츠 루트 폴더
		"BuildOutput" "..\output\" // put build cache and log files on different drive for better performance
		"Depots"
		{
			// file mapping instructions for each depot are in separate script files
			"1235" "depot_build_1235.vdf"
		}
	}

 

7. depot_1235.vdf

이 파일명은 파일들이 올라가는 장소의 아이디를 뜻하는데 플랫폼별로 여러개가 있을수 있다. 아이디는 앱아이디에 1씩 추가되는 형식인데 정확한 규칙을 모르겠다.

이 아이디는 스팀웍스에서 본인의 앱의 Technical Tools > Edit Steamworks Settings 

 

여기 페이지에서 SteamPipe > Depots 에서 Add New Depot를 클릭하고 생성하면 아이디가 나오는데 이게 depot_xx 파일에 써질 아이디이다.

Save 하고 나오자. 이때 상단에 Publish 어쩌고 하는 빨간 경고문이 뜰때가 있는데 뭔가 변경사항이 있으면 Publish에서

적용하라는 얘기이다. git 작동하고 비슷하다.

 

아 그리고 실행파일명도 지정을 해주는게 좋은데 Installation > General Installation 에서 작업을 해주면 된다.

 

이렇게 depot 아이디를 얻었으면 depot_1235.vdf 파일명에 잘 적어주고 아래와 같이 LocalPath만 잘 설정해주면 된다.

	"DepotBuild"
	{
		// Set your assigned depot ID here
		"DepotID" "1235"

		// include all files recursivley
		"FileMapping"
		{
			// 콘텐츠 루트폴더
			"LocalPath" ".\steamworktest\"

			// This is a path relative to the install folder of your game
			"DepotPath" "."
			
			// If LocalPath contains wildcards, setting this means that all
			// matching files within subdirectories of LocalPath will also
			// be included.
			"Recursive" "1"
	  }
	}

 

8. 이제 업로드할 게임을 복사해서 sdk > tool > ContentBuilder > content > steamworktest > 콘텐츠들 에 잘 붙여놓고

sdk > tools > SteamPipeGUI.zip 압축파일을 풀어서 실행해보면 아래와 같은 화면이 뜨는데

App ID는 1234,

Build Description에다가는 게임 설명

Depot ID는 1235, 

Build Path는 콘텐츠 루트 (  sdk > tool > ContentBuilder > content > steamworktest )

ContentBuild Path 는 말 그대로 ContentBuilder 패스

Steam ID / Password는 적어주고 Upload 클릭하면 끝이다.

 

업로드하다 보면 Access Denied 에러가 날때가 있는데

원인은 스팀웍스 페이지의 depot 세팅 및 publish 상태에 따른것이다. 스팀웍스 페이지에 가서 갱신되지 않은 내용이 있는지 살펴보자.

 

잘 업로드가 됐으면 버전을 올렸으면 SteamPipe에서 Builds 항목에서 버전 세팅을 해줘야 함.

 

 

위에서 페이지에서 가봤던 SteamPipe > Depots 페이지 말고 SteamPipe > Builds 페이지에 가보면 내가 올린 버전이 올라가 있을 것이다. 여기서 내가 올린 버전을 Select an App branch 버튼을 눌러서 default로 바꿔줘야 올린버전이 적용되게 된다. Preview Change 누르고 다음 페이지에서 Set build Live Now까지 눌러줘야 함.

 

이제 스팀앱에서 검색해서 다운받아 테스트해보면 된다.

 

이상은 요약 내용이고 좀 더 심화내용을 원하면 아래 링크들을 찾아보자.

 

 

 

https://www.youtube.com/playlist?list=PLckFgM6dUP2jBeskIPG-7BVJR-I0vcSGJ

 

Steamworks Tutorials

Tutorials to help developers who publish applications on Steam using the Steamworks tools.

www.youtube.com

 

일단 위의 영상을 참고 하고 제일 좋은건 스팀 웍스의 공식 매뉴얼이다.

https://partner.steamgames.com/doc/home

 

Documentation Home Page (Steamworks Documentation)

Documentation Resources News & Updates Support

partner.steamgames.com

 

또한 유니티로 작업을 한다면 위 글들과 같이 봐야 하는 글이 아래 글이다.

https://steamworks.github.io/gettingstarted/

 

Steamworks.NET - Getting Started

Docs » Getting Started Getting Started Getting Started with Steamworks.NET After completing the Installation steps you can start using Steamworks.NET in your project. The SteamManager script provides the ideal starting point for your project and I would h

steamworks.github.io

 

역시 유니티로 스팀작업을 할때 많이 검색되는 글중에 하나이다.

https://medium.com/@yoonicode/publishing-unity-games-on-steam-the-ultimate-guide-5e09fc812c65

 

Publishing Unity Games on Steam: The Ultimate Guide

Steam is one of the most popular game publishing platforms today, yet Steam developers haven’t made it exactly easy to publish apps to the…

medium.com

 

 

이렇게 게임전에 문서들을 살펴봤다면 이제 실제 스팀에 게임을 올릴준비가 된 상태이다. 그럼 이제 스팀 파트너 사이트에 가입을 하고 각종 서류지옥에 빠져보자.

 

이건 이 블로그를 참고하자

https://mangveloper.com/entry/%EC%8A%A4%ED%8C%80-%EA%B2%8C%EC%9E%84-%EC%B6%9C%EC%8B%9C-%ED%95%98%EB%8A%94-%EB%B2%95

 

스팀 게임 출시 하는 법

안녕하세요 개발자 망고 입니다. 오늘은 제가 인디게임을 만들어 스팀에 출시를 하기 위해 가입하면서 겪었던 어려움을 공유하는 post를 써보았습니다. 1. 스팀 파트너 사이트 https://partner.steamgame

mangveloper.com

 

또한 구글 검색을 해보면 이 블로그가 젤 많이 보게 되는데 좀 오래되서 안맞는 내용도 있지만 걍 참고용으로...

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=56334&_rk=96k&page=1

 

테스트 프로젝트를 빌드해서 돌려보려고 하면 스팀앱이 자동으로 뜨면서 설치하려고 한다. 걍 바로 스팀에 올리는 처리를 해야 한다.

https://pleasantstep.tistory.com/m/63

스팀에 등록하는 과정...

 

참고 영상

https://www.youtube.com/watch?v=i2qC_RhEy5s (2년전 영상)

https://www.youtube.com/watch?v=SoNH-v6aU9Q (7년전 영상) 오래된 영상인데 중요 내용은 동일하고 여기서 많이 도움을 받았다.