포슀트

🫐 WitchMendokusai DevLog 04

🎲 λΉŒλ“œ μ—λŸ¬


였λ₯˜ 였λ₯˜ 였λ₯˜
ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ λΉŒλ“œλ₯Ό λŒλ €λ΄€λŠ”λ°, 였λ₯˜κ°€ μž”λœ©μ΄λ‹€.

μ΄μœ λŠ” λ‚΄κ°€ μ§€κΈˆκΉŒμ§€ κ΅¬ν˜„ν•œ λ°©λ²•μœΌλ‘œλŠ”, κ²Œμž„ 데이터 μŠ€ν¬λ¦½ν„°λΈ” μ˜€λΈŒμ νŠΈλ“€μ„ λΉŒλ“œ 후에 뢈러올 수 μ—†κΈ° λ•Œλ¬Έμ΄λ‹€.

κ·Έλ™μ•ˆ μ‚¬μš©ν•œ 방법은 μ•„λž˜κ³Ό κ°™λ‹€.

λ¨Όμ € 에디터 νƒ€μž„μ— μœ λ‹ˆν‹° ν”„λ‘œμ νŠΈ κ²½λ‘œμ— μœ„μΉ˜ν•œ μŠ€ν¬λ¦½ν„°λΈ” μ˜€λΈŒμ νŠΈλ“€μ„ λ‘œλ“œν•˜κ³ ,
이λ₯Ό λ§€λ‹ˆμ € μŠ€ν¬λ¦½ν„°λΈ” 였브젝트의 λ”•μ…”λ„ˆλ¦¬μ— μ €μž₯ν•΄ μΌμ—ˆλ‹€.

1
2
3
4
5
public class SOManager : ScriptableObject
{
    [field: SerializeField] public Dictionary<Type, Dictionary<int, DataSO>> DataSOs { get; private set; } = new();
    // ...
}

보면 잘 λ“€μ–΄κ°€ μžˆλŠ”λ°
둜그λ₯Ό 찍어보면 잘 λ“€μ–΄κ°€μžˆλŠ” κ±Έ 확인할 수 μžˆλ‹€.

이 방법은 에디터 μƒμ—μ„œλŠ” λ¬Έμ œκ°€ μ—†μ§€λ§Œ,
μœ λ‹ˆν‹°μ—μ„œ DictionaryλŠ” μ§λ ¬ν™”λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, λΉŒλ“œ ν›„μ—λŠ” DataSOsκ°€ ν……ν…… λΉ„μ–΄μžˆκ²Œ λœλ‹€.

([field: SerializeField]λŠ” λ‚˜μ˜ μ½”λ“œ μŠ€νƒ€μΌ 상 같이 λΆ™μ—¬λ‘” 것인데, μ‹€μ œλ‘œ μ•„λ¬΄λŸ° 영ν–₯을 주지 μ•ŠλŠ”λ‹€.)
(μƒκ°ν•΄λ³΄λ‹ˆ 이거 μ§€μ›Œλ‘¬μ•Όκ² λ„€.)

μ–΄μ¨Œκ±°λ‚˜, 그럼 이 문제λ₯Ό μ–΄λ–»κ²Œ ν•΄κ²°ν•  수 μžˆμ„κΉŒ?

직렬화 κ°€λŠ₯ν•œ μ»€μŠ€ν…€ λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“€μ–΄μ„œ ν•΄κ²°ν•΄λ³Ό μˆ˜λ„ μžˆκ² μ§€λ§Œ,
λ‚˜λŠ” 이참에 Addressable을 ν•œ 번 써보기둜 ν–ˆλ‹€.

Addressable을 μ΄μš©ν•˜λ©΄ λŸ°νƒ€μž„μ— 에셋을 λ‘œλ“œν•  수 μžˆλ‹€.
λ˜ν•œ λΉŒλ“œ/λŸ°νƒ€μž„ λ©”λͺ¨λ¦¬ 관리가 κ°€λŠ₯ν•˜κ³ , μƒˆ λΉŒλ“œ 없이도 λ¦¬μ†ŒμŠ€λ₯Ό κ°±μ‹ ν•  수 있게 ν•΄μ€€λ‹€.

비둝 λ‹Ήμž₯ Addressable을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ‹¨μˆœ λŸ°νƒ€μž„ 에셋 λ‘œλ“œ λ•Œλ¬Έμ΄μ§€λ§Œ,
미리 κΈ°λ°˜μ„ λ‹€μ Έλ‘”λ‹€λ©΄, μΆ”ν›„ ν™•μž₯성을 λΉ„λ‘―ν•΄ Addressable의 μ—¬λŸ¬ 이점을 얻을 수 μžˆμ„ 것이닀.

.. 근데 사싀 μž‘μ€ ν”„λ‘œμ νŠΈλΌ λ‹Ήμž₯ ꡳ이 Addressable을 μ‚¬μš©ν•  μ΄μœ λŠ” 크게 μ—†λ‹€.

λ‹€λ§Œ μ–Έμ  κ°€ 써보고 μ‹Άμ—ˆλ˜ 것이기도 ν•˜κ³ ,

μ–Έμ  κ°€ λ‚΄ κ²Œμž„μ˜ μ½”λ“œλ₯Ό μ „λΆ€ κ³΅κ°œν•˜κ³ ν”ˆ μš•μ‹¬λ„ μžˆμ–΄μ„œ,
κΉƒ λ ˆν¬μ— μ½”λ“œλ§Œ μ˜¬λ €μ„œ κ³΅κ°œν•˜κ³  μ‹€μ œ μ•„νŠΈμ μΈ 에셋듀은 μ–΄λ“œλ ˆμ„œλΈ”λ‘œ λΆˆλŸ¬μ˜€λŠ”.. 그런 κ³„νšμ΄ μžˆλŠ” 것이 μ΄μœ λ‹€.

… κ·Έλƒ₯ μ¨λ³΄λŠ”κ±°μ§€ 뭐 !

πŸ‘Ύ Addressable

λŸ°νƒ€μž„μ— 데이터λ₯Ό λ‘œλ“œν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ 크게 3가지가 μžˆλ‹€.

λ¨Όμ € Resources 폴더λ₯Ό μ‚¬μš©ν•˜λŠ” 방법이 μžˆλ‹€.
κ°€μž₯ κ°„λ‹¨ν•˜κ³  μ§κ΄€μ μ΄μ§€λ§Œ, λΉŒλ“œμ— ν¬ν•¨λ˜κΈ°μ— λΉŒλ“œ μš©λŸ‰μ΄ 컀지고, ν•œ 번 λΉŒλ“œν•˜λ©΄ μˆ˜μ •μ΄ λΆˆκ°€λŠ₯ ν•˜λ‹€λŠ” 단점이 μžˆλ‹€.

이λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ AssetBundleμ΄λΌλŠ” 방법이 λ‚˜μ™”λ‹€.
AssetBundle은 μ™ΈλΆ€μ—μ„œ λŸ°νƒ€μž„μ— 데이터λ₯Ό λ‘œλ“œν•˜κΈ° λ•Œλ¬Έμ—, λΉŒλ“œ μš©λŸ‰λ„ μž‘μ•„μ§€κ³ , μ™ΈλΆ€μ—μ„œ μˆ˜μ •λ„ κ°€λŠ₯ν•˜κ²Œ 됐닀.
이런 μ—¬λŸ¬ μž₯점이 μžˆμ—ˆμ§€λ§Œ, λ¬Έμžμ—΄λ‘œ 경둜λ₯Ό μ§€μ •ν•΄μ•Όν•΄μ„œ 관리가 μ–΄λ ΅κ³ , 쒅속성 관리가 μ–΄λ ΅λ‹€λŠ” λ¬Έμ œκ°€ μžˆμ—ˆλ‹€.

κ·Έλž˜μ„œ 또 이런 단점듀을 λ³΄μ™„ν•˜κΈ° μœ„ν•΄ Addressableμ΄λΌλŠ” 방법이 λ‚˜μ˜¨ 것이닀.
Addressable은 AssetBundle을 기반으둜 ν•˜λ©΄μ„œ, 이λ₯Ό μ’€ 더 쉽고 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 있게 ν•΄μ€€λ‹€.

κΈ°μ‘΄ λ¬Έμžμ—΄λ‘œ 경둜λ₯Ό μ§€μ •ν•˜λŠ” 방식 λŒ€μ‹ , Addressλ₯Ό 톡해 에셋을 μ°Έμ‘°ν•˜κ³ ,
μ—¬λŸ¬ 쒅속성 λ¬Έμ œλ„ μžλ™μœΌλ‘œ ν•΄κ²°ν•΄μ€€λ‹€. (이뢀뢄은 μ’€ 더 곡뢀해봐야겠닀.)

μ°Έκ³  : β€˜μ–΄λ“œλ ˆμ„œλΈ” 에셋 μ‹œμŠ€ν…œ - κ°œλ…: λ“±μž₯ λ°°κ²½, vs μ—μ…‹λ²ˆλ“€β€™

πŸ‘Ύ κ΅¬ν˜„

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
public class UILoading : Singleton<UILoading>
{
    [SerializeField] private Image progressBar;
    private readonly List<AsyncOperationHandle> handles = new();

    public IEnumerator Loading()
    {
        gameObject.SetActive(true);
        progressBar.fillAmount = 0f;

        LoadAssetsAsync();

        while (true)
        {
            float totalPercent = 0;
            foreach (var handle in handles)
                totalPercent += handle.PercentComplete;
            progressBar.fillAmount = totalPercent / handles.Count;

            Debug.Log($"Loading... {progressBar.fillAmount * 100}%");

            if (handles.All(handle => handle.IsDone))
                break;

            yield return null;
        }
        Debug.Log($"Loading... {progressBar.fillAmount * 100}%");

        //foreach (var handle in handles)
        //    Addressables.Release(handle);

        progressBar.fillAmount = 1f;
        gameObject.SetActive(false);
    }

    private void LoadAssetsAsync()
    {
        SOManager.Instance.DataSOs.Clear();

        LoadAsset<QuestData>("QUEST_DATA");
        // 각 νƒ€μž…λ³„λ‘œ λ‘œλ“œ.. (μƒλž΅)

        void LoadAsset<T>(string label) where T : DataSO
        {
            var handle = Addressables.LoadAssetsAsync<T>(label, null);
            handle.Completed += OnAssetsLoaded;
            handles.Add(handle);
        }
    }

    private void OnAssetsLoaded<T>(AsyncOperationHandle<IList<T>> obj) where T : DataSO
    {
        if (obj.Status == AsyncOperationStatus.Succeeded)
        {
            List<T> assets = obj.Result.ToList();
            SOManager.Instance.DataSOs[typeof(T)] = new();

            foreach (T asset in assets)
            {
                Debug.Log($"Loaded {asset.name}");
                SOManager.Instance.DataSOs[typeof(T)].Add(asset.ID, asset);
            }
        }
    }
}

κ²Œμž„μ„ μ‹œμž‘ν•˜κΈ° 전에, 잠깐 λ‘œλ”© 화면을 λ„μ›Œμ£ΌλŠ” UILoading을 λ§Œλ“€μ—ˆλ‹€.
이 λ‘œλ”© ν™”λ©΄μ—μ„œ Addressable을 μ‚¬μš©ν•΄ 에셋듀을 λ‘œλ“œν•œλ‹€.

큰 이해λ₯Ό 가지고 κ΅¬ν˜„ν•œ 것은 μ•„λ‹ˆμ§€λ§Œ, κ°„λ‹¨ν•˜κ²Œ Addressable을 μ‚¬μš©ν•΄λ³΄μ•˜λ‹€.

.. 근데 ν•œ 가지 고민슀러운 게 μžˆλ‹€λ©΄,
λ‹Ήμž₯은 둜컬둜 에셋을 λ‘œλ“œν•˜κ³  μžˆλŠ”λ° μ΄λ ‡κ²Œ 되면 Addressable을 μ‚¬μš©ν•˜λŠ” μ˜λ―Έκ°€ μ—†λ‹€.

Addressableκ³Ό μ„œλ²„λ₯Ό μ—°κ²°ν•˜λŠ” μž‘μ—…μ„ μ‘°λ§Œν•œ 진행해야겠닀.

🎲 Private λ ˆν¬μ§€ν† λ¦¬ Public둜 λ³€ν™˜


μ „λΆ€ν„° λ ˆν¬μ§€ν† λ¦¬λ₯Ό Public으둜 μ „ν™˜ν•˜κ³  μ‹Άμ—ˆλ‹€.
이유라면, λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²Œ λ‚΄ μ½”λ“œμ™€ κ²Œμž„μ„ 보여주고 μ‹ΆκΈ° λ•Œλ¬Έμ΄λ‹€.

졜근 μ‹€λ ₯적으둜 λ§Žμ€ 뢀쑱함을 λŠλ‚€λ‹€.
ν˜„μ—… κ²½ν—˜μ΄ μ „λ¬΄ν•˜κ³ , λ‚˜ν˜Όμž κ°œλ°œν•˜λ‹€λ³΄λ‹ˆ λ‚΄κ°€ μ§œλŠ” μ½”λ“œκ°€ μ•„λ¦„λ‹€μš΄μ§€ 잘λͺ¨λ₯΄κ² λ‹€.
λ‚΄ μ½”λ“œλ₯Ό κ³΅κ°œν•¨μœΌλ‘œμ¨, λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ ν”Όλ“œλ°±μ„ λ°›κ³  더 쒋은 μ‹€λ ₯을 가지고 μ‹Άλ‹€.

그리고, λ‚˜λŠ” λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ°Έμ—¬ν•˜λŠ” κ²Œμž„μ„ λ§Œλ“€κ³  μ‹Άλ‹€.

λ¬Όλ‘  λ‚˜μ˜ 세계관이 많이 λ“€μ–΄κ°€λŠ” κ²Œμž„μ΄μ§€λ§Œ,
λ‹€λ₯Έ μ‚¬λžŒλ“€λ„ λͺ°μž…ν•  수 μžˆλŠ” κ²Œμž„μ„,
λ‹€λ₯Έ μ‚¬λžŒλ“€λ„ μ°Έμ—¬ν•˜κ³  μ‹Άλ‹€λ©΄ μ–Όλ§ˆλ“ μ§€ μ°Έμ—¬ν•  수 μžˆλŠ” 그런 κ²Œμž„μ„ λ§Œλ“€κ³  μ‹Άλ‹€.

그러기 μœ„ν•œ 첫 κ±ΈμŒμ΄λ‹€.

πŸ‘Ύ 파일 정리

λ¨Όμ € λ ˆν¬μ§€ν† λ¦¬μ— μ˜¬λΌκ°€ μžˆλŠ” νŒŒμΌλ“€μ„ μ •λ¦¬ν–ˆλ‹€.

λ‹¨μˆœνžˆ ν•„μš”μ—†λŠ” νŒŒμΌλ“€μ„ μ§€μšΈ 뿐만 μ•„λ‹ˆλΌ,
μ €μž‘κΆŒμƒ μž¬λ°°ν¬κ°€ λΆˆκ°€λŠ₯ν•œ νŒŒμΌλ“€μ€ νžˆμŠ€ν† λ¦¬μ—μ„œλ„ 지웠닀.

μ•„λž˜ λͺ…λ ΉμœΌλ‘œ κ°€λŠ₯ν•˜λ‹€.

1
2
git filter-branch -f --index-filter "git rm --cached --ignore-unmatch 파일λͺ…" --prune-empty --tag-name-filter cat -- --all
git filter-branch -f --index-filter "git rm -r --cached --ignore-unmatch 폴더λͺ…" --prune-empty --tag-name-filter cat -- --all

μ΄λ•Œ 파일λͺ…은 경둜과 ν™•μž₯자λ₯Ό ν¬ν•¨ν•œ 전체 파일λͺ…이어야 ν•œλ‹€.

λ§Œμ•½ κ²½λ‘œμ— 곡백이 있으면, μ΄μŠ€μΌ€μ΄ν”„ 문자λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
예λ₯Ό λ“€μ–΄ 파 일 λͺ…이라면 파\ 일\ λͺ…μœΌλ‘œ 써야 ν•œλ‹€.

λ˜ν•œ 파일λͺ… 뒀에 *λ₯Ό 뢙이면, ν•΄λ‹Ή 파일λͺ…μœΌλ‘œ μ‹œμž‘ν•˜λŠ” λͺ¨λ“  νŒŒμΌμ„ μ§€μšΈ 수 μžˆλ‹€.
예λ₯Ό λ“€μ–΄ ABC*이라면, ABC둜 μ‹œμž‘ν•˜λŠ” λͺ¨λ“  νŒŒμΌμ„ μ§€μš΄λ‹€.

μ΄λ ‡κ²Œ μ§€μš΄ νŒŒμΌλ“€μ€ μ•„λž˜μ™€ κ°™λ‹€.

  • μ €μž‘κΆŒμƒ μž¬λ°°ν¬κ°€ λΆˆκ°€λŠ₯ν•œ νŒŒμΌλ“€
    • μž„μ‹œ ν…μŠ€μ³, μ•„μ΄μ½˜λ“€
    • 폰트 (ν”½μ…€λ‘œλ³΄λ‘œλ³΄, κΈ±λΈ”λ§λž‘μ΄μ²΄)
    • μ‚¬μš΄λ“œ
    • μŠ€μΉ΄μ΄λ°•μŠ€
  • ν•„μš”μ—†λŠ” νŒŒμΌλ“€
    • ν”„λ‘œμ νŠΈμ— 같이 ν¬ν•¨ν•΄λ’€λ˜ λΉŒλ“œ 파일
    • 더 이상 쓰지 μ•Šκ±°λ‚˜ μ§€μ› μ§€λ§Œ, κΉƒ νžˆμŠ€ν† λ¦¬μ— 남은 에셋 (μ‘°μ΄μŠ€ν‹±, KiwiCoder ν–‰λ™νŠΈλ¦¬)
  • 개인 정보가 λ“€μ–΄μžˆλŠ” νŒŒμΌλ“€
    • ꡬ글 ν”Œλ ˆμ΄ κ²Œμž„μ¦ˆ, ꡬ글 ν”Œλ ˆμ΄ μ„€μ • 파일
    • ν”Œλ ˆμ΄νŒΉ μ„€μ • 파일
    • .keystore 파일

이후 μ•„λž˜ λͺ…λ ΉμœΌλ‘œ λ°±μ—… 참쑰듀을 μ‚­μ œν•˜κ³ , λΆˆν•„μš”ν•œ 객체듀을 μ •λ¦¬ν–ˆλ‹€.

1
2
3
4
5
git rm -rf .git/refs/original/
git reflog expire --all
git gc --aggressive --prune=all

git push origin --force --all

μ΄λ ‡κ²Œ ν•˜λ©΄, κΉƒν—ˆλΈŒ μž”λ””μ—λ„ μ‚­μ œν•œ 컀밋 이λ ₯이 λ°˜μ˜λœλ‹€.

μ°Έκ³  : β€˜gitμ—μ„œ 잘λͺ» 올린 파일의 이전 내역을 μ „λΆ€ μ œκ±°ν•˜λŠ” 방법’
μ°Έκ³  : β€˜κ²½λ‘œμ— 곡백(띄어쓰기)이 μžˆμ„ λ•Œ cd, git add 방법’
μ°Έκ³  : β€˜.gitignoreκ°€ μž‘λ™ν•˜μ§€ μ•Šμ„λ•Œ λŒ€μ²˜λ²•β€™

πŸ‘Ύ μž”λ””κ°€ μ™œ 이래 !

154 컀밋이
912 μ»€λ°‹μœΌλ‘œ λ³΄μ—¬μš”

그런데 κΉƒ νžˆμŠ€ν† λ¦¬λ₯Ό μˆ˜μ •ν•˜λ©΄μ„œ Rewriteν•œ 컀밋 이λ ₯듀이 λ‚¨μ•„μžˆλŠ” 건지,
μœ„ μ‚¬μ§„μ²˜λŸΌ κΉƒν—ˆλΈŒ ν”„λ‘œν•„ Contribution activity(μž”λ””)에 λΉ„μ •μƒμ μœΌλ‘œ λ§Žμ€ 컀밋이 기둝됐닀.
λ ˆν¬μ§€ν† λ¦¬λ₯Ό 보면 μ§€κΈˆκΉŒμ§€ 154개의 컀밋을 ν–ˆλŠ”λ°, ν”„λ‘œν•„μ—μ„œλŠ” 912개의 μ»€λ°‹μœΌλ‘œ 보인닀.

큰 λ¬Έμ œλŠ” μ•„λ‹ˆμ§€λ§Œ, λ‹€λ₯Έ μ‚¬λžŒμ΄ λ³΄κΈ°μ—λŠ” 이거 뭐지? 싢을 것 κ°™μ•„μ„œ μ§€μ›Œμ£ΌκΈ°λ‘œ ν–ˆλ‹€.

912 μ»€λ°‹μœΌλ‘œ λ³΄μ—¬μš”

λ”±νžˆ λ‚΄κ°€ 직접 ν•΄κ²°ν•  수 μžˆλŠ” 방법은 μ—†λŠ” 것 κ°™κ³ , 문의λ₯Ό ν†΅ν•΄μ„œ Contribution 기둝을 κ°±μ‹ λ°›μ•„ ν•΄κ²°ν–ˆλ‹€.

그런데.. 이후 μ§€μ›Œμ•Ό ν•  νŒŒμΌμ„ ν•˜λ‚˜ 더 λ°œκ²¬ν•΄λ²„λ Έλ‹€..
ν•΄λ‹Ή νŒŒμΌμ„ μ§€μ› λ”λ‹ˆ λ‹€μ‹œ 컀밋 기둝이 μ—„μ²­ λŠ˜μ–΄λ‚¬λ‹€..

λ‹Ήμž₯ λ‹€μ‹œ κ°±μ‹  μš”μ²­ν•˜κΈ°λŠ” μ’€ λ―Έμ•ˆν•˜κ³ , λ‹€λ₯Έ νŒŒμΌλ„ μ°Ύμ•„λ³Έ λ‹€μŒμ— λ‚˜μ€‘μ— λ‹€μ‹œ ν•œ 번 문의 λ„£μ–΄μ•Ό ν•  λ“― γ…Žγ…Ž..

πŸ‘Ύ 파일 μˆ˜μ •/μΆ”κ°€

파일 μ‚­μ œλ₯Ό μ™„λ£Œν•˜κ³ , 이제 μ‚­μ œν•œ νŒŒμΌλ“€μ„ λŒ€μ²΄ν•  에셋듀을 μΆ”κ°€ν–ˆλ‹€.
파일(에셋)듀은 λͺ¨λ‘ λΌμ΄μ„ΌμŠ€ 상 재배포 κ°€λŠ₯ν•œ κ²ƒλ“€λ‘œ κ΅¬μ„±ν–ˆλ‹€.

  • DOTween (κΈ°μ‘΄ Feel 에셋 λŒ€μ²΄)
  • Unified-Universal-Blur (κΈ°μ‘΄ Translucent Image - Fast UI Background Blur 에셋 λŒ€μ²΄)
  • μ‚¬μš΄λ“œ 및 μŠ€ν”„λΌμ΄νŠΈ (κΈ°μ‘΄ μ‚¬μš΄λ“œ 및 μŠ€ν”„λΌμ΄νŠΈ λŒ€μ²΄)
    • PROTODOME의 Albumλ“€ (CC BY-NC-ND 3.0)
    • ArtisticDube의 RPG Sound Pack (CC0)
    • NathanGibson의 UI Sound Pack (CC BY 4.0)
    • Havi Averilla Xavier(Shade)의 16x16 Assorted RPG Icons, 16x16 Weapon RPG Icons (CC0 1.0)
    • Beast Pixels의 Crafting Materials, Weapons and Tools (CC0 1.0)
    • Midhil M(Leo Red)의 Lucid Icons (CC0 1.0)

FMOD λΌμ΄μ„ΌμŠ€λ₯Ό 지킀기 μœ„ν•΄,
κ²Œμž„ 둜그인 화면에 FMOD 둜고λ₯Ό μΆ”κ°€ν•˜κ³ ,
섀정창에 FMOD의 κ°„λ‹¨ν•œ ν¬λ ˆλ”§μ„ μΆ”κ°€ν–ˆλ‹€.

πŸ‘Ύ README.md

ν¬λ ˆλ”§μ„ 적기 μœ„ν•΄, README.md νŒŒμΌλ„ μˆ˜μ •ν–ˆλ‹€.

이미 μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 에셋듀 뿐만 μ•„λ‹ˆλΌ,
기쑴에 μˆ˜μ •ν•΄μ„œ μ‚¬μš©ν•˜κ³  있던 에셋듀에 λŒ€ν•œ ν¬λ ˆλ”§λ„ μΆ”κ°€ν–ˆλ‹€.

λ‹Ήμž₯은 ν¬λ ˆλ”§ 밖에 μ—†λ‹€.
μΆ”ν›„μ—λŠ” κ²Œμž„μ— λŒ€ν•œ μ„€λͺ…, μ‚¬μš©λ²•, λΌμ΄μ„ΌμŠ€ 등을 μΆ”κ°€ν•  μ˜ˆμ •μ΄λ‹€.

일단 μ΄μ •λ„λ‘œ λ ˆν¬μ§€ν† λ¦¬λ₯Ό μ •λ¦¬ν•˜κ³ , λ ˆν¬μ§€ν† λ¦¬λ₯Ό Public으둜 μ „ν™˜ν–ˆλ‹€ !
λ‹€μŒ λͺ©ν‘œλŠ”, 개발 λ¬Έμ„œλ₯Ό μž‘μ„±ν•˜κ³ , 첫 μ•ŒνŒŒ 릴리슀λ₯Ό ν•΄λ³΄λŠ” 것이닀.

🎲 Git LFS


μƒˆ μ‚¬μš΄λ“œλ“€μ„ μΆ”κ°€ν•˜κ³  컀밋을 ν•˜λ €λ‹ˆ, FMOD의 λΉŒλ“œ 파일이 λ„ˆλ¬΄ μ»€μ„œ 컀밋이 μ•ˆλλ‹€.
Git LFSλ₯Ό μ“°λ©΄ κ·Έλƒ₯ μ—…λ‘œλ“œλ₯Ό ν•  수 μžˆμ—ˆμ§€λ§Œ, 이전 Wakgreed ν”„λ‘œμ νŠΈ λ ˆν¬μ§€ν† λ¦¬μ—μ„œ LSF μš©λŸ‰μ„ μ „λΆ€ μ“°λŠ” λ°”λžŒμ— μƒˆλ‘œμš΄ νŒŒμΌμ„ μΆ”κ°€ν•  수 μ—†μ—ˆλ‹€.

꽉꽉

FMOD λΉŒλ“œ νŒŒμΌμ„ .gitignore둜 μ œμ™Έν•˜λŠ” μˆ˜λ„ μžˆμ—ˆμ§€λ§Œ,
λ‹€λ₯Έ μ‚¬λžŒμ΄ λ‚΄ λ ˆν¬μ§€ν† λ¦¬λ₯Ό λ°›κ³  λ°”λ‘œ μ‹€ν–‰ν•  수 μžˆλŠ” ν™˜κ²½μ„ λ§Œλ“€κ³  μ‹Άμ–΄μ„œ 그럴 μˆ˜λŠ” μ—†λ‹€.

κ·Έλž˜μ„œ LFS μš©λŸ‰μ„ ν™•λ³΄ν•˜κΈ°λ‘œ ν–ˆλ‹€.

μ°Ύμ•„λ³΄λ‹ˆ LFS μš©λŸ‰μ€, LFS 였브젝트λ₯Ό μ‚­μ œν•˜λ”λΌλ„ κ·Έ μš©λŸ‰μ΄ νšŒμˆ˜λ˜μ§€ μ•ŠλŠ”λ‹€.
직접 LFS μš©λŸ‰μ„ 쀄이기 μœ„ν•΄μ„œλŠ”, λ ˆν¬μ§€ν† λ¦¬λ₯Ό μ‚­μ œν•˜κ³  λ‹€μ‹œ λ ˆν¬μ§€ν† λ¦¬λ₯Ό λ§Œλ“œλŠ” 방법 밖에 μ—†λ‹€κ³  ν•œλ‹€.
ν•˜μ§€λ§Œ WakgreedλŠ” λ‚˜μ˜ 첫 κ²Œμž„ ν”„λ‘œμ νŠΈμ΄κΈ°λ„ ν•˜κ³ , μ—¬λŸ¬ λͺ¨λ‘œ μ˜λ―ΈμžˆλŠ” ν”„λ‘œμ νŠΈλΌ μ§€μšΈ μˆ˜λŠ” μ—†μ—ˆλ‹€..

λ‹€λ₯Έ λ°©λ²•μœΌλ‘œλŠ” μœ„μ—μ„œ Contribution activity(μž”λ””)λ₯Ό κ°±μ‹ ν–ˆλ˜ κ²ƒμ²˜λŸΌ,
κΉƒν—ˆλΈŒμ— 문의λ₯Ό λ„£μ–΄μ„œ μ„œλ²„μ— μ €μž₯된 LFS μš©λŸ‰μ„ νšŒμˆ˜ν•΄λ‹¬λΌκ³  μš”μ²­ν•˜λŠ” 방법이 μžˆλ‹€.

이λ₯Ό μœ„ν•΄μ„œλŠ” ν•΄λ‹Ή λ ˆν¬μ§€ν† λ¦¬μ—μ„œ LFS 였브젝트둜 λ“±λ‘λœ νŒŒμΌλ“€μ„ νžˆμŠ€ν† λ¦¬μ—μ„œ μ œκ±°ν•΄μ€„ ν•„μš”κ°€ μžˆλ‹€κ³  ν•œλ‹€.
μ–΄λ–€ μ˜€λΈŒμ νŠΈκ°€ LFS둜 λ“±λ‘λ˜μ—ˆλŠ”μ§€λŠ” git lfs ls-files --all --long λͺ…λ Ήμ–΄λ‘œ 확인할 수 있고,
νžˆμŠ€ν† λ¦¬μ—μ„œ μ œκ±°ν•˜λŠ” 방법은 μœ„μ—μ„œ μ–ΈκΈ‰ν•œ git filter-branch λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

Git LFS

μŠ€ν¬λ¦°μƒ·μ—λŠ” μ—†μ§€λ§Œ, Wakgreed λ ˆν¬μ§€ν† λ¦¬μ—μ„œλŠ” 폰트 κ΄€λ ¨ νŒŒμΌλ“€μ΄ LFS둜 λ“±λ‘λ˜μ–΄ μžˆμ—ˆλ‹€.
이왕 μ§€μš°λŠ” 김에 λ ˆν¬μ§€ν† λ¦¬ 자체 μš©λŸ‰μ„ μž‘μ•„λ¨Ήλ˜ FMOD λΉŒλ“œ νŒŒμΌμ΄λΌλ˜μ§€, ν…ŒμŠ€νŠΈμš© λΉŒλ“œ νŒŒμΌλ“€λ„ νžˆμŠ€ν† λ¦¬μ—μ„œ 지웠닀.

ν……ν……

이후 문의λ₯Ό λ„£μ–΄λ³΄λ‹ˆ λΉ λ₯΄κ²Œ LSF μš©λŸ‰μ„ νšŒμˆ˜ν•΄μ£Όμ…¨λ‹€.
이제 FMOD λΉŒλ“œ νŒŒμΌμ„ LFS둜 올릴 수 있게 됐닀.

Wakegreed λ ˆν¬μ§€ν† λ¦¬λ„ Rewrite둜 인해 컀밋 λͺ©λ‘μ΄ λΉ„μ •μƒμ μœΌλ‘œ λ§Žμ•„μ Έμ„œ,
문의 넣을 λ•Œ Contribution activity(μž”λ””)도 갱신해달라고 같이 μš”μ²­ν–ˆλ‹€.

.. 이런거 직접 λ¬Έμ˜ν•΄μ•Όλ§Œ ν•  수 μžˆλŠ”κ±΄κ°€?
κΈ°λŠ₯이 제곡되면 μ’‹κ² λ‹€..

μ°Έκ³  : β€˜Github LFS μ €μž₯곡간 확보’

To Be Continued..

이 κΈ°μ‚¬λŠ” μ €μž‘κΆŒμžμ˜ CC BY 4.0 λΌμ΄μ„ΌμŠ€λ₯Ό λ”°λ¦…λ‹ˆλ‹€.