삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12
description
Transcript of 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12
![Page 1: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/1.jpg)
NEXON DEVELOPERS CONFERENCE 2012
인스톨이 필요 없는Full 3D
MMORPG 게임 만들기
박 현 우
![Page 2: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/2.jpg)
NEXON DEVELOPERS CONFERENCE 2012
강연 내용
인스톨이 필요 없다 !• Web Full 3D MMORPG “ 삼국지를 품다”
Unity3D• Resources & Asset Bundle
문제 해결과 최적화• 버그 이슈• 메모리 이슈• 쾌적성 이슈• 생산성 향상 이슈
![Page 3: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/3.jpg)
NEXON DEVELOPERS CONFERENCE 2012
인스톨 없이 MMORPG 게임을 ?도대체 어떤 게임인데 ?
![Page 4: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/4.jpg)
NEXON DEVELOPERS CONFERENCE 2012
삼국지를 배경으로
웹 브라우저 상에서 인스톨 없이 실행하는
웹 Full 3D MMORPG 게임
![Page 5: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/5.jpg)
NEXON DEVELOPERS CONFERENCE 2012
웹 게임 !통상적으로 그래픽이 저급하다고 인식하지만 인스톨이 필요 없다는 장점이 있다
웹 게임으로 만들기 위해 사용한 기술은
![Page 6: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/6.jpg)
NEXON DEVELOPERS CONFERENCE 2012
유니티는
모바일 전용 개발 툴 아닌가요 ?처음에는 그렇게 생각했지만 ,
이런 저런 이유로 전격 채택 !
![Page 7: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/7.jpg)
NEXON DEVELOPERS CONFERENCE 2012
인스톨 없이 웹 브라우저에서 바로 실행멀티플랫폼 지원개발 생산성 향상• 별도의 툴 개발이 필요 없이 에디터 화면 내에서 거의 모든 것을 지원
2 년 6 개월<C# 스크립트임에도 불구하고…
각종 툴 제작하고 게임 프레임워크 코딩 하느라 시간이…
![Page 8: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/8.jpg)
NEXON DEVELOPERS CONFERENCE 2012
웹 게임입니다 !
유니티를 사용했습니다 !
그렇다고
그래픽 품질이 조악하거나 ,
게임성이 절대 떨어지지 않습니다 .그럼 게임 한번 감상해 볼까요 ?
![Page 9: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/9.jpg)
NEXON DEVELOPERS CONFERENCE 2012
웹 게임 증거
![Page 10: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/10.jpg)
NEXON DEVELOPERS CONFERENCE 2012
천여 개 이상의 게임 드라마 턴 방식 전략 전투
모바일 기기 지원열심히 준비 중
내정
![Page 11: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/11.jpg)
NEXON DEVELOPERS CONFERENCE 2012
화려한 렌더링 옵션
Real-time ShadowSSAO
BloomContrast Enhance
Color CorrectionFull Texture Size
Anisotropic Filtering
Terrain LODShader LOD
25 일 수 14:10 308 호삼국지를 품다 테크니컬 아트
엔도어즈 TAD 정종필세션을 참고해 주세요
![Page 12: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/12.jpg)
NEXON DEVELOPERS CONFERENCE 2012
![Page 13: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/13.jpg)
NEXON DEVELOPERS CONFERENCE 2012
현재 3 차 서포터즈 테스트까지 마무리 .
4 차 서포터즈 테스트 이후 클로즈 베타 예정
올 여름에는 오픈 ?
이상 ! 광고 끝 .
![Page 14: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/14.jpg)
NEXON DEVELOPERS CONFERENCE 2012
이제 본격적으로 …
![Page 15: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/15.jpg)
NEXON DEVELOPERS CONFERENCE 2012
MMORPG 설치 용량 비교
4G, 라이트 버전은 1G
13G
13G+@ 설치 시간은 ?
오래 걸립니다 ㅠㅠ
![Page 16: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/16.jpg)
NEXON DEVELOPERS CONFERENCE 2012
1M Under
9M
230M
4G+@
웹 플레이어 설치
게임 구동 최소 데이터
게임 진입
개발된 컨텐츠
플레이어 설치
1 분 미만
게임 진입까지
1 분 미만
i5 CPU100Mbps
![Page 17: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/17.jpg)
NEXON DEVELOPERS CONFERENCE 2012
처음 실행하는데 고작 1 분 !
하지만 처음부터 그런 건 아니었으니…• 프로젝트 초반부에는 컨텐츠가 적어서 3 분 이내• 컨텐츠가 추가 되면서 점점 길어져서 5 분 이상 걸리기 시작• 유니티가 리소스를 다루는 방법 몇 가지가 있다
![Page 18: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/18.jpg)
NEXON DEVELOPERS CONFERENCE 2012
유니티가 리소스를 다루는 법 !
게임에 리소스를포함시키는 방법과 분리 시키는 방법• All in one Scene• Resources• AssetBundle
Scene
게임 플레이에 필요한
데이터를 담고 있는
레벨 데이터
![Page 19: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/19.jpg)
NEXON DEVELOPERS CONFERENCE 2012
유니티의 게임 빌드• 같은 리소스로 플랫폼 별로 빌드• 빌드 할 때 Target Platform 에
맞는 구조로 변경ex) OS 별 텍스처 압축 포맷
게임 빌드에 포함되는 것• 게임 씬
게임 화면에 보여질 것들을 담고 있는 게임 레벨 데이터
• Resources프로젝트의 폴더에 있는 모든
게임 리소스• 모든 스크립트 코드
Scene 에 모두 포함
![Page 20: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/20.jpg)
NEXON DEVELOPERS CONFERENCE 2012
Resources 폴더• 게임 실행에 필요한 리소스를 담고 있는 특수한 폴더• Resources 폴더에 있는 데이터들은 모두 게임 빌드 할 때
포함• 런타임에 동적으로 Load
Resources.Load
![Page 21: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/21.jpg)
NEXON DEVELOPERS CONFERENCE 2012
그런데 !Resources 폴더에 게임 리소스들을 담고 있으면• 용량 큰 Texture, BGM Audio, 게임 드라마 씬 etc.
게임 용량 증가 !• Standalone 일 때는 상관 없지만• Web Player 로 빌드 할 때는 초기 다운로드 용량에 포함
메모리 사용량 증가 !• Resources 폴더에 있는 모든 Asset 을 메모리에 한번에 올린다• 3.4 버전에서 실제 사용 할 때만 메모리에 올리도록 수정됨
![Page 22: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/22.jpg)
NEXON DEVELOPERS CONFERENCE 2012
웹 플레이어에서는 초기 다운로드 용량을 줄이기 위해
Asset Bundle 사용게임에서 사용하는 모든 리소스의 묶음을 이르는 말AssetBundle 로 만들어서 웹 서버에 올려놓고런타임에 다운로드 받아 동적으로 생성 삭제
게임 빌드에 포함되지 않는다게임 빌드에서 제외시켜야 한다
Pro 버전에서만 지원
Asset [명사 ] 자산 ( 이 되는 물건 또는 사람 )게임에서 사용되는 모든 리소스• Mesh, Texture, Shader, Ani-
mation, Audio, Script etc.
Bundle[명사 ] 꾸러미 , 묶음 , 보따리
부분 유료화 모방 ?
Asset Bundle 로 만들고
프로젝트에서 제외!
![Page 23: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/23.jpg)
NEXON DEVELOPERS CONFERENCE 2012
AssetBundle 관련 APICreation• BuildPipeline.BuildAssetBundle• BuildPipeline..BuildStreamedSceneAssetBundle
Loading• WWW• WWW.LoadFromCacheOrDonwload• AssetBundle.Load• Application.LoadLevel
Unloading• WWW.Dispose• AssetBundle.Unload• Resources.UnloadUnusedAsset
WWW
웹 서버에 올려진 리소스를
다운로드 받게 해주는 클래스
![Page 24: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/24.jpg)
NEXON DEVELOPERS CONFERENCE 2012
AssetBundle Creation Sample Code
![Page 25: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/25.jpg)
NEXON DEVELOPERS CONFERENCE 2012
AssetBundle Creation Sample Code번외 !
에디터 메뉴에 자동으로 추가
![Page 26: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/26.jpg)
NEXON DEVELOPERS CONFERENCE 2012
Loading Sample Code
번외 ! Coroutine• 함수 호출을 잠시 중단 시키고 다음 업데이트에서 실행이 멈춘 이후부터 실행되는
기능• 쓰레드와 비슷하게 별도의 콜 스택을 가지고 동작하지만 쓰레드는 아님
![Page 27: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/27.jpg)
NEXON DEVELOPERS CONFERENCE 2012
기본적인 사용법은 알고 프로그래밍 했지만…디버깅은 물론이고 기능 추가하기가 힘들었습니다 .
관련 코드가 여기저기 흩어져 있어서 ㅠㅠ
그리고 우리 팀에게 떨어진 일은…
디버깅과 최적화
![Page 28: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/28.jpg)
NEXON DEVELOPERS CONFERENCE 2012
기존 코드로는 도저히 작업을 진행할 수가 없어서
전격 리팩터링 진행• AssetBundle 관련 코드 중앙 집중화• 여러 가지 디버깅 정보 추가
TsBundl
e
![Page 29: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/29.jpg)
NEXON DEVELOPERS CONFERENCE 2012
문제 해결 (삽질 ) 과 최적화버그 이슈
메모리 이슈게임 플레이 쾌적성 이슈
생산성 향상 이슈
![Page 30: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/30.jpg)
NEXON DEVELOPERS CONFERENCE 2012
버그 이슈 1/5종종 Asset Bundle 이 안 받아진다
원인 1. 웹 서버에 실제 파일이 없는 경우• 404 Page not foundWWW.text 에서 관련 문자열 찾아서 확인유니티 3.4 이후 버전에서는 WWW.error 에서 정상적으로 확인 가능
원인 2. 웹 브라우저의 동시 다운로드 개수 제한• 보통 2 개가 디폴트큐를 사용해 전체 다운로드 요청을 관리하고 동시에 제한된 개수만 처리함
WWW.asset
Bundle
WWW.textur
e
WWW.bytes
WWW.text
WWW.error
…
![Page 31: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/31.jpg)
NEXON DEVELOPERS CONFERENCE 2012
버그 이슈 2/5Resources 폴더에 포함할 때 보다 메모리 사용량이 증가
C# 이라서 Garbage Collection 을 믿고 삭제 없이 생성만 했더니…
메모리 해제 코드 누락• WWW.Dispose()• WWW.assetBundle.Unload(false) 누락
유니티가 제공하는 API 는 C++ 로 구현되어 있어요 ~리소스 해제에 관련된 함수를 꼭 찾아봅시다 !
![Page 32: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/32.jpg)
NEXON DEVELOPERS CONFERENCE 2012
버그 이슈 3/5맵을 로딩을 했는데 안 보인다
Resources.UnloadUnusedAsset 호출 후 바로 Load 할 경우 발생• 삭제 마킹만 해놓고 다음 프레임에서 실제 삭제되는 경우가 많다
Resources.UnloadUnusedAsset• 더 이상 레퍼런스가 없는 객체들을 모아 메모리에서 삭제• 호출한 현재 프레임에서 작업이 완료되는걸 보장하지 않음
런타임 컨텐츠 씬그래프
![Page 33: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/33.jpg)
NEXON DEVELOPERS CONFERENCE 2012
버그 이슈 4/5게임 플레이 중 메모리가 계속 증가하다가 씬 전환할 때 줄어든다씬 전환시에만 런타임에 할당한 메모리를 정리하는 기능이 들어가 있다• 주기적으로 Resources.UnloadUnusedAsset() 호출해준다
GC.Collect 도 함께 호출 됨• 부하가 크기 때문에 적절한 시점을 찾아야 한다 !
![Page 34: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/34.jpg)
NEXON DEVELOPERS CONFERENCE 2012
필수 메모리 정리 코드 샘플
1 Frame Skip
![Page 35: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/35.jpg)
NEXON DEVELOPERS CONFERENCE 2012
버그 이슈 5/5Asset Bundle 에 포함된 스크립트가 없거나 동작하지 않아요• Asset Bundle 을 만들었을 때와 스크립트 코드가 틀려져서 발생• Asset Bundle 에 포함되는 스크립트는 수정시 유의해야 함Asset Bundle 을 새로 만들어야 하는 경우• 데이터 필드의 변수 이름이 변경된 경우• 데이터 필드가 추가된 경우• 클래스를 삭제한 경우구 버전 Asset Bundle 을 사용해도 되는 경우• 데이터 필드가 삭제된 경우• 스크립트의 실행 코드만 변경된 경우• 클래스 이름이 변경된 경우
반드시 유니티 에디터 상에서 바꿔야 함 . 탐색기에서 바꾸면 헛일 .
클래스의 자동 Serialize 속성
![Page 36: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/36.jpg)
NEXON DEVELOPERS CONFERENCE 2012
메모리 이슈 1/5Audio 메모리 해제가 안 된다오디오가 플레이 될 때마다 메모리 증가그런데 사용 후 메모리가 반환 되지 않음Audio 는 특이하게 AssetBundle.Unload(true) 를 호출해 주어야만메모리에서 완전히 정리된다
Unload(false) 는 레퍼런스가 있으면 남겨둔다 .Unload(true) 는 레퍼런스가 있어도 강제 삭제
![Page 37: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/37.jpg)
NEXON DEVELOPERS CONFERENCE 2012
메모리 이슈 2/5메모리 스파이크 발생게임 드라마를 볼 때 메모리가 심하게 증가게임 드라마의 경우 연출을 위해 많은 카메라를 사용활성화된 많은 카메라가 있을 경우 씬에 있는 거의 모든 객체가 로딩카메라를 끄면 문제 해결
![Page 38: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/38.jpg)
NEXON DEVELOPERS CONFERENCE 2012
메모리 이슈 3/5점진적인 메모리 증가 현상유니티 Garbage Collection 모듈 특징• 메모리가 부족할 때 추가 할당• 이미 잡은 메모리는 내부에서 관리하고 해제하지 않는다
잦은 new 할당 객체는 객체 메모리 풀로 완화 !• 너무 잦은 new 할당은 오브젝트 풀로string 연산은 StringBuilder 로 대체
![Page 39: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/39.jpg)
NEXON DEVELOPERS CONFERENCE 2012
string 연산의 위험성String 은 Immutable 패턴 객체생성시 초기화 이후에는 절대로 내부의 데이터를 바꿀 수 없다 !데이터를 참고하고자 할 때는 임시객체를 생성한다 .
![Page 40: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/40.jpg)
NEXON DEVELOPERS CONFERENCE 2012
메모리 이슈 4/5그래도 발생하는 지속적인 메모리 증가 현상• 씬 전환시 메모리가 완전히 정리되지 않는 상황 발생
• 웹 브라우저 비정상 종료 후 메모리 해지가 안되고 재실행시 초기 점유량 높음첫 비정상 종료 이후 더 빨리 비정상 종료됨
• Garbage Collection 모듈 문제Mono Boehm GC 문제 Sgen-GC 로 업데이트 예정
![Page 41: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/41.jpg)
NEXON DEVELOPERS CONFERENCE 2012
메모리 이슈 5/5메모리 할당 실패• Too many heap section
한 프레임 내에서 한번에 너무 많은 객체 할당이 일어날 경우 발생• 원인이 밝혀지지 않은 유니티 모듈 내 malloc 실패
![Page 42: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/42.jpg)
NEXON DEVELOPERS CONFERENCE 2012
게임 플레이 쾌적성 이슈 1/4Asset Bundle Caching• 매번 웹 서버에 접근하고 다운로드하는 오버헤드를 없앤다 .• 처음 한번만 캐시에 저장하고 로컬 파일처럼 사용 .WWW.LoadFromCacheOrDownLoad(url, version) 사용• 파일 업데이트 패치를 위해 version 관리가 필요하다 .
Pro 버전에서 지원됨 .Free 버전에서는 무려 50M 지원유료 라이선스를 구입해서 용량 확장 가능
비꼬는 거 절대 아님 !
![Page 43: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/43.jpg)
NEXON DEVELOPERS CONFERENCE 2012
Asset Bundle Caching Bug!파일이 많을 때 일부 캐시에 저장하지 못해서 매번 다운로드 받는 문제 .
이 외에도 많은 버그들을 알고 있어서유니티사와 협력하여 문제 수정 중에 있지만
해결은 언제나 다음 버전에서나…
![Page 44: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/44.jpg)
NEXON DEVELOPERS CONFERENCE 2012
게임 플레이 쾌적성 이슈 2/4CPU 스파이크 발생게임 화면이 뚝뚝 끊기면 기분 나빠요 ~
![Page 45: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/45.jpg)
NEXON DEVELOPERS CONFERENCE 2012
CPU 스파이크 발생 상황발생 상황 1. 서버에서 받은 여러 캐릭터 생성 명령• 한 프레임에서 처리하는 수를 조절하여 분산 시켜 해결발생 상황 2. Animation.AddClip 함수• 주인공 캐릭터의 경우 여러 파트로 나누어진 AssetBundle 을 다운로드 받아서
조립함• 그런데 애니메이션을 추가하는 순간 유니티 내부적으로 오버헤드 발생• 애니메이션이 포함된 캐릭터를 미리 만들어놓고 캐싱해서 문제 해결발생 상황 3. 순수 파일 IO 시간• Coroutine 과 비동기 로딩함수를 사용하여 Lag 현상 제거발생 상황 4. Garbage Collection• Immutable 패턴을 사용한 객체 사용 조심• Object Pool 로 Garbage 없이 재사용 하도록 수정
Immutable
대표적인 객체가 string
StringBuilder 사용 권장
![Page 46: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/46.jpg)
NEXON DEVELOPERS CONFERENCE 2012
비동기 로딩함수 사용 샘플 코드
비동기 방식이기 때문에
요청한 후 바로 사용하면
바보됩니다 !
![Page 47: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/47.jpg)
NEXON DEVELOPERS CONFERENCE 2012
게임 플레이 쾌적성 이슈 3/4Asset Bundle Pre-downloading• 웹 다운로드 시간을 없애기 위해 게임 진행에 맞추어 필요한 리소스를 미리
다운로드
![Page 48: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/48.jpg)
NEXON DEVELOPERS CONFERENCE 2012
게임 플레이 쾌적성 이슈 4/4씬 전환 대기 시간을 줄이자 .씬 전환시 발생하는 로딩 시간 단축• 내정 씬과 전투 맵을 미리 로딩• 필드 맵과 전투맵은 공유• 씬 전환을 관리하는 씬 스위처 구현
필드
내정전투
![Page 49: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/49.jpg)
NEXON DEVELOPERS CONFERENCE 2012
생산성 향상 이슈 1/2프로젝트의 거대화와 악몽의 시작• 메모리 부족과 에디터 비정상 종료• 변경 사항 반영하는데 반나절
프로젝트 분리와 악몽의 시작• 리소스 GUID 관리 문제 발생• 리소스가 사라지거나 덮어써지거나…
자세한 내용은 아래 세션 참고25 일 수 11 시 307 호 공현구 / 장건희대형 게임 개발환경과 Unity유니티를 사용한 대규모 프로젝트
어쩌라는 건지 ㅠㅠ어쨌거나 프로젝트는 분리
유니티는 아직까지는
대형 프로젝트에 대한
배려가 부족하다 .
![Page 50: 삼국지를품다- 인스톨이 필요없는 MMORPG 만들기 - 박현우, NDC12](https://reader035.fdocument.pub/reader035/viewer/2022062313/5588f7c9d8b42abd418b46de/html5/thumbnails/50.jpg)
생산성 향상 이슈 2/2Local WWWAsset Bundle 이 서버에 올라가 있어야만 런타임에 리소스 확인 가능디자이너들은 서버에 올라갈 때 까지 일 주일 이상 확인 불가서버 접속 없이 작업한 리소스 확인 기능이 필요• WWW(“http://외에 사용할 수 있는 프로토콜” )
ftp:// file://• WWW(“file://c:/myResource/mywork.assetbundle”)