[Unity] Android AAB 150mb 이상일 때 추가 코드 없이 Addressable과 함께 처리하기
·
프로그래밍/Unity
문제 게임 개발을 하다보면 Android AAB 빌드 용량이 150mb를 넘기는 순간이 온다. 이 때부터 개발자는 AAB내 base파일과 리소스 파일을 분리하여 base파일을 150mb가 넘어가지 않도록 수정해야 한다. 해결 Play Asset Delivery 안드로이드에서는 이런 문제를 해결 하기 위해 PAD(Play Asset Delivery)를 지원한다. PAD는 구글플레이에서 지원하는 애셋 호스팅 서비스다. 이 서비스를 사용하면 따로 CDN을 쓰지 않아도 쉽고 간편하게 애셋을 올릴 수 있다. 전송 모드 PAD는 총 3가지의 전송 모드를 지원한다. install-time: 앱이 설치될때 같이 전송된 된다. google play의 앱 크기에 영향을 미친다. ( 최대 1GB ) fast-follow: ..
뒤끝 비동기 함수와 C# Promise 사용하기
·
프로그래밍/C#
뒤끝에서 서버 API를 사용하는 방법 뒤끝에서 서버 API를 사용하는 방법은 총 3가지다. 동기호출 비동기호출 SendQueue(비동기) 호출 난이도가 가장 쉽고 직관적인건 1번이지만 서버 값을 받아올 때까지 게임이 멈추기에 그렇게 좋은 방법은 아니다. 그렇다면 비동기호출을 해야하는데, 보낸 순서대로 순서를 보장 받을 수 있는 SendQueue방식의 호출을 게임을 개발하며 주로 사용했다. Promise 패턴 Promise 패턴은 여러 비동기 함수들을 쉽게 관리할 수 있게 하는 패턴이다. Promise 객체는 처리에 대한 결과 상태를 반환하고, 작업의 종료시점을 알 수 있게 된다. Promise객체의 상태는 크게 3가지다. Pending - 작업이 완료되지 않은 상태. Resolved - 작업이 성공적으로..
[C#] 소수점 Parsing 할 때, (float.Parse, double.Parse) 언어에 따른 소수점 에러
·
프로그래밍/C#
문제 float.Parse() 함수를 사용할 때 러시아, 스페인등 지역에서 파싱 에러가 난다. FormatException: Input string was not in a correct format. at System.Number.ParseSingle (System.String value, System.Globalization.NumberStyles options, System.Globalization.NumberFormatInfo numfmt) 원인 C#에는 사용자의 문화권에 따라 , 나 . 를 사이에 사용한다. 만약 사용자의 언어 환경이 다른 숫자 표기법을 사용하는 국가라면 string에서 float나 double로 파싱할때 특정 언어 환경에서만 에러가 난다. 해결 CultureInfo.Invaria..
[Unity] 유니티 MVC 패턴 적용하기
·
프로그래밍/Unity
Unity로 게임을 만들다 보면 필연적으로 데이터와 로직이 결합된 상태로 개발하게 된다. 프로젝트가 커질수록 점점 코드는 복잡해지고, 데이터와 로직이 뒤섞여 더 이상 유지보수가 힘든 상황이 이르게 된다. 따라서 데이터(Model)와 로직(Controller)을 분리해주는 패턴으로부터 개발을 시작하는 게 좋다. MVC 패턴 MVC 패턴은 Model과 View, 그리고 둘을 잇는 Controller라는 요소가 들어있는 패턴이다. Model 게임의 데이터가 되는 요소 로직이 아닌 순수 데이터가 들어가야 함 Controller 게임의 핵심 로직들을 담당한다. Model들을 조작하고 업데이트된 Model들을 View에 통지해준다. View 게임 내 외적으로 보이는 모든 요소들이다. Controller에서 받은 데..