Game Dev 150

Light Indexed Deferred Rendering

개요현재의 렌더링 방식은 크게 2가지인데 각각 단점이 있다.Forward : Light가 많을 때 문제Deferred : Bandwidth 사용량, 반투명, MSAA각각의 장점만 취할 수 없을까?Light Volume의 Index를 저장해서 해결해보자.결론부터 말하자면 Lighting은 Deferred, Geometry는 Forward 구현Render depth only pre-passLight Index Texture에 Light Volume을 그림이 때 Light Index만 기록하면 됨Depth Write Off, Depth Test OnForward Rendering으로 Geometry를 그림2에서 기록한 Light Index Texture를 참고하면서 Lighting 문제점한 Fragment에 ..

Game Dev/Article 2016.10.08

CppCon2014 : C++ in Huge AAA Games

발표자유비소프트 몬트리얼 개발자, 아마도 Rainbow Six 프로젝트에서 일하는 듯 Code Structure 하지 않는 것RTTI : 별도의 Type 추론 구현Exception Handling : 느리니까STL Container : STL Algorithm은 사용하지만 Container는 사용하지 않음Boost in Engine Iteration-TimeFastBuild 사용http://fastbuild.org/docs/home.html무려 OpenSourceDistribution, Caching 지원 (Caching이 잘 되어있으면 3분, 아니면 5분의 Rebuild)Unity Build와 연동Debug 환경에서 /Ob1 사용/Ob : Inline 함수 최적화 여부 (기본값 2)https://msd..

Game Dev/Article 2016.10.08

C4265 Warning을 켜자!

경험적으로 현재 프로젝트에서 메모리 릭이 발생한 경우는 크게 3가지이다. 메모리를 할당하고 해제하지 않았다.array 버전인 new [ ]로 할당하고 delete로 해제했다.다른 클래스를 상속하였는데 super class가 가상 소멸자를 갖지 않았다. 1번과 2번의 경우는 std::unique_ptr을 사용하면 편해지지만 3번의 경우는 정말 어디서 발생했는지 알지 못하는 경우가 많다. cppcheck 같은 정적 분석기도 못 찾아줬고, Visual Leak Detector나 Dr.Memory 같은 별도의 메모리 분석 도구를 연동한 상태로 실행해야 찾을 수 있는데 이것도 단점이 있다. 메모리 릭을 발생한 지점이 실행되지 않으면 찾을 수 없다. 대부분의 경우 추가 메모리가 많이 필요하다.결정적으로 매우 느리다..

Game Dev/Article 2016.09.22

Unity5 안드로이드 플랫폼에서 Shader가 분홍색(혹은 검은색)으로 나오는 문제

현상분PC에서 실행한 에디터에서는 정상적으로 화면이 나온다.하지만 안드로이드에서 실행하면 특정 Shader를 사용한 부분이 모두 분홍색으로 나온다. 원인유니티는 확실히 사용되고 있는 Shader만 배포한다.예를들어 Material에 특정한 Shader를 연결하고 이 Material이 특정 오브젝트에 할당된 경우지금 해보니 Material만 만들고 할당하지 않으면 배포하지 않는듯그래서 런타임에 Shader.Find 같은 함수로 Shader를 찾는 경우 배포 버전에 포함되지 않아서 화면이 분홍색으로 나올 수 있다. 해결Edit > Project Settings > GraphicsAlways Included Shaders에서 자신이 사용하는 Shader를 추가한다.혹은 위에서 말했듯이 직접 Material을 ..

모바일게임 StarCrush 포스트모텀

게임을 만들게 된 계기 나는 약 10년차 클라이언트 프로그래머이고, 늦둥이 동생은 대학생이다. 그런데 어느날 동생이 (아마 스마트폰 어플리케이션 개발 같은 과목을 수강해서인듯) 모바일 게임을 하나 만들자고 이메일로 간단하게 컨셉을 보냈다. 사실 나는 PC 플랫폼 게임만 만들고 있었기 때문에 모바일 게임도 한번 해보고 싶었고 그렇게 제안을 받아드리게 되는데... 엔진선택 Unity와 cocos2d 둘 사이를 많이 고민을 했었는데 알고 지내는 다른 프로그래머가 자기는 cocos2d로 한다고 해서... "모르면 물어보고 배울 수도 있겠구나"라는 생각으로 cocos2d를 선택했다. 나중에 알았지만 서로 수준은 비슷했다. cocos2d의 장점Visual Studio를 이용하여 C++ 프로젝트로 게임을 만들 수 있..

Game Dev/StarCrush 2016.05.14

This project is out of date

VisualStudio에서 작업을 하다보면 "This project is out of date"라는 메세지가 뜨면서 프로젝트가 계속 빌드되는 경우가 있다. 경험상 이런 경우의 원인은 크게 2가지인데, 첫번째는 특정 소스파일의 시간이 잘못된 경우이고, 두번째는 VisualStudio의 솔루션에는 파일이 등록되어 있는데 실제로는 파일이 없는 경우이다.후자의 경우는 빌드 로그를 아주 자세하고 빡세게 돌리면 검출할 수 있으나 수백~수천줄의 빌드로그를 일일히 확인하기는 쉽지 않다. 그래서 검색해보니 "Show Missing Files"라는 좋은 플러그인이 있다.링크https://visualstudiogallery.msdn.microsoft.com/900b48cc-52b5-4afa-b4db-f1c3655c32aa사..

Game Dev/Work Log 2016.04.27

VisualAssist의 대안?

개인적으로 VisualAssist에서 가장 많이 사용하는 기능은 "Open files in solution"과 "Switch header and source" 2가지이다. 하지만 집에서는 VisualAssist를 구매하지 않았으니 과자를 찾기보다는 무료로 이용할 수 있는 대안을 찾아보았다. 링크 : https://visualstudiogallery.msdn.microsoft.com/cfdf85c2-aaa4-4bdd-b8ea-e22bcc9860af기능 : 솔루션에 있는 파일을 찾을 수 있는 다이얼로그를 제공함사용법위 링크에서 플러그인 다운로드 및 설치VisualStudio를 켠 후 메뉴의 Edit > Find and Replace > Quick Find File 선택VisualAssist처럼 "Alt + ..

Game Dev/Work Log 2016.04.26

안드로이드 스토어 "키워드 스팸" 거부

취미로 동생과 만드는 게임이 있는데 이래저래 여러 사정이 있어서 많이 완성하지 못하고 퍼블리시를 결정했다. (가장 큰 원인은 알지못하는 AdSense 계정 정지) 개발자콘솔에서 "알파테스트"로 되어있던 것을 드디어 "프로덕션"으로 바꿨는데... 몇시간 후에 이런 메일이 도착했다. XXXXXXX 개발자님, 안녕하세요.Google Play에 앱을 제출해 주셔서 감사합니다. 을(를) 검토한 결과 수정해야 하는 몇 가지 키워드 스팸 문제가 발견되었습니다.앱을 제출하여 다시 검토를 받으려면 다음 단계를 따르세요.개발자 콘솔에 로그인하고 스토어 등록정보의 번역문에서 모든 관련 없는 키워드를 삭제합니다.앱을 검토하고 키워드 스팸 정책과 개발자 프로그램 정책에 열거된 다른 정책을 모두 준수하는지 확인합니다.앱을 제출합..

Game Dev/StarCrush 2016.02.22

cocos2d-x + Android 조합에서 File IO 주의점

1. Android는 Linux처럼 파일에 대소문자를 구분한다. (하지 않을 때도 있다.) 일반적으로 윈도우에서는 파일의 대소문자를 구분하지 않는다. 하지만 안드로이드에서는 파일 대소문자를 구분한다. 따라서 코드에서는 "asset.png"로 읽고, 실제 파일은 "Asset.png"로 만들었다면, 로딩이 제대로 안 될 수 있다. (Sprite 같은 경우는 바로 크래시가 발생하였음) LogCat으로 로그를 보면 "xxx Possible missing file"과 같은 로그가 뜨는데, 기본적으로 안드로이드와 cocos2d의 로그가 너무 많아서 찾아보기도 힘들다. 개인적으로 진행하고 있는 프로젝트에서는 애셋 목록을 코드가 아닌 텍스트 파일에서 읽는 것을 고려하고 있기 때문에 고민하다가 cocos2d의 FileU..

Game Dev/StarCrush 2015.02.04