본문 바로가기
Development/Internship

[멋사 로켓단 인턴쉽] 16일차 - 밸런싱 및 기타 작업

by Mobics 2025. 8. 28.

목차


    멋쟁이사자처럼 로켓단 인턴쉽

    25.08.28

    회의록

    >> 안건

    • 업무 업데이트
      • 질문 혹은 피드백 요청
    • 주요 안건
      • 앱 출시(앱 등록)
      • 밸런싱 회의

    >> 회의 내용

    - 3차 밸런싱 회의

    : PC플레이와 모바일 플레이 환경간의 난이도 체감 격차가 달라 재 밸런싱.

    --> 모바일이 서비스 되는 게임이므로 모바일을 기준으로 밸런싱한다.

    • 단계에 따라 피버로 얻는 일과시간 조정 : (기존) 1/1/2/2/3 --> (변경) 1/1/1/1.5/2
      • (모바일)후반 피버타임의 밸류가 너무 높아서 피버타임 발동 시 얻는 일과시간의 값을 개별로 다루어 고정시키기로 함.

     

    - 앱 출시는 멋사측의 다음 절차를 기다리는 중

     

    ▶ 이제 정말 완성이 얼마 안 남았다.

     

    앱이 백그라운드 상태일 때 Audio Mute

    : 모바일로 게임을 플레이하는 중에 앱이 백그라운드 상태가 될 때, 모든 Audio를 Mute 시키고 다시 게임으로 돌아왔을 때 기존에 유저가 설정한 상태 그대로 복귀

    --> OnApplicationPause()를 활용하여 구현

     

    ※ OnApplicationPause vs OnApplicationFocus

    • OnApplicationPause : 앱이 일시정지 상태면 True, 재생 상태면 False  ex) 홈 버튼,  다른 앱 전환, 화면 꺼짐 등
    • OnApplicaitonFocus : 게임 객체에 Focus가 있으면 True, 그렇지 않으면 False  ex) 알림창 내려옴, 다른 앱이 잠깐 위로 뜸

    ▶ 모바일 환경에서 가장 확실하게 동작하는 이벤트는 OnApplicationPause()기 때문에 이를 활용하여 구현

    --> 에디터나 PC로 빌드한 환경에서 테스트할 때는 OnApplicationFocus()가 더 자주 호출되기 때문에 모바일 뿐만 아니라 모든 환경에서 안정적으로 동작하기 위해서는 둘 다 사용하는 것이 좋다.

     

    ※ 공식 문서 - OnApplicationPause / OnApplicationFocus

    https://docs.unity3d.com/2022.3/Documentation/ScriptReference/MonoBehaviour.OnApplicationPause.html

    https://docs.unity3d.com/2022.3/Documentation/ScriptReference/MonoBehaviour.OnApplicationFocus.html

     

    >> 작성한 코드

    - AudioManager.cs

    <hide/>
    // 앱이 백그라운드로 갔을 때 Audio Mute
    private void OnApplicationPause(bool pauseStatus)
    {
        if (pauseStatus)    // 백그라운드 --> 강제 음소거
        {
            bgmController.SetBGMOn(false);
            sfxController.SetSFXOn(false);
        }
        else                // 포그라운드 --> 유저 설정에 맞춰서 복원
        {
            bgmController.SetBGMOn(_isAudioOn);
            sfxController.SetSFXOn(_isAudioOn);
        }
    }

     

    └ 최종 코드

    >> AudioManager.cs

    <hide/>
    using System;
    using UnityEngine;
    
    public class AudioManager : Singleton<AudioManager>
    {
        [SerializeField] private BGMController bgmController;
        [SerializeField] private SFXController sfxController;
        
        // 각 Controller가 필요하시면 아래와 같이 호출해주세요.
        public BGMController BGM => bgmController;
        public SFXController SFX => sfxController;
    
        private bool _isAudioOn = true;     // Audio 토글이 On인지, Off인지
    
        protected override void Initialize()
        {
            base.Initialize();
            _isAudioOn = true;   // 기본값은 켜짐으로 설정
            
            // 필요 시, 초기화    ex) 저장된 설정 로드
        }
        
        public void SetBGMController(BGMController bgmController)
        {
            this.bgmController = bgmController;
        }
        
        public void SetSFXController(SFXController sfxController)
        {
            this.sfxController = sfxController;
        }
    
        // Audio 토글을 통해 BGM 및 SFX On/Off
        public void ToggleAudio()
        {
            _isAudioOn = !_isAudioOn;
            bgmController.SetBGMOn(_isAudioOn);
            sfxController.SetSFXOn(_isAudioOn);
        }
    
        public bool GetIsAudioOn()
        {
            return _isAudioOn;
        }
        
        // 앱이 백그라운드로 갔을 때 Audio Mute
        private void OnApplicationPause(bool pauseStatus)
        {
            if (pauseStatus)    // 백그라운드 --> 강제 음소거
            {
                bgmController.SetBGMOn(false);
                sfxController.SetSFXOn(false);
            }
            else                // 포그라운드 --> 유저 설정에 맞춰서 복원
            {
                bgmController.SetBGMOn(_isAudioOn);
                sfxController.SetSFXOn(_isAudioOn);
            }
        }
    }

     

    Unity에서 만든 게임을 앱인토스에 올리기

    : 다른 팀원 분께서 만든 게임을 앱인토스와 연동해놓으셨다. (React + TypeScript + Vite)

    --> 만드신 자료의 GitHub Repository에 초대해주셔서 코드를 볼 수 있게 해주셨고, 만드실 때 참고하신 자료도 함께 올려주셨기에 내가 나중에라도 참고하기 위해 이를 남긴다.

    ※ 참고 자료

    - 공식 문서

     

    앱인토스 개발자센터

     

    developers-apps-in-toss.toss.im

     

    - 블로그

     

    유니티 ait 파일 생성, 앱인토스 ait 파일 빌드, 유니티에서 만든 게임을 앱인토스에 올리기

    앱인토스 개발자센터 이 글은 앱인토스 ait 빌드, 리더보드,, 어쩌고 기능을 어떻게 써!! 하시는 분들에게 바칩니다. 앱인토스로 게임을 만드는 분들께 도움이 되길 바랍니다 … ⭐ 일단 제일 중

    velog.io