Game Dev 150

cocos2d v3.14.1로 포팅하기 (1/N)

Google에서 메일이 왔다. StarCrush 어플리케이션에서 몇가지 개인정보를 사용하고 있으니 개인정보취급방침을 담은 URL을 제출하라는 내용인데 귀찮기도하고 따로 개인정보를 쓰는 일이 없으니 연관된 라이브러리를 없애려고 마음먹었다. 그런데 웬일!? 빌드가 되지 않는다. 작년 11월 이후에 변경한 것이 없는데... 이렇게 나는 더 귀찮은 엔진 포팅의 길로 접어들게 되었다. 참고로 이 글의 모든 내용은 다음 링크를 참고하였다.http://www.cocos2d-x.org/docs/installation/Android-VisualStudio/ cocos2d-x 파일을 다운로드 받아서 압축을 푼다.http://www.cocos2d-x.org/downloadsetup.py 파일을 실행한다.테스트로 cmd에서 ..

Game Dev/StarCrush 2017.03.07

Terrain Elevation 얻어오기

UE에서 Landscape를 생성한 후 Landscape의 Z 값을 읽어오는 작업을 진행했다. Landscape를 만드는 자세한 설명은 생략한다! CryEngine에서는 GetTerrainZ, GetZ 같은 함수가 있었는데 UE에서는 찾지 못했다. 포럼을 검색해보니 그냥 LineTrace를 해보라고 한다. 많이 느릴 것 같은데 우선 함수 Wrapping을 해서 나중에 구현은 바꿀 수 있도록 하고, LineTrace를 해보았다. 오 대충 되는듯? 몇가지 문제가 있는데 Grid의 선분이 Lighting에 영향을 받는다. (나는 단색으로 나오기를 원함) Grid의 선분이 굴곡이 있는 곳에서는 땅 밑으로 들어간다. 두번째 문제의 원인은 Terrain의 Vertex보다 Grid의 Vertex가 더 크기 때문이다...

VisualStudio를 위한 Unreal 설정

Unreal을 제대로 사용하려면 VisualStudio에 추가 설정이 필요하다. 몇개는 Unreal에서 이미 제공하는 것이고 다른 하나는 웹을 검색하다가 발견한 것이다. 사실 VisualAssist가 없다보니 VS 기본 Intellisense의 느린 단점이 너무나 잘 보인다. VisualAssist 개인 구매를 심각하게 고민 중! 참고로 오늘 UE 4.15.0 버전을 설치해보니 VS2013, VS2015은 물론이고 VS2017까지도 Extension이 지원되고 있다. Unreal VisualizerVisualStudio에서 디버깅 할 때 watch 윈도우 등에서 값을 잘 보여준다.설치/Engine/Extras/VisualStudio/Debugging/UE4.natvis 파일을 찾는다.해당 파일을 다음 중..

UE4 새로운 프로젝트 시작

새로운 프로젝트를 시작해보기로 했다. 언리얼 엔진 사용주제는 내가 좋아하는 삼국지서버도 만들어서 클라우드 서비스에 올려 볼 예정새로운 작업을 할 때마다 블로그에 기록 남기기 사실 작업이 완료된 것은 거의 없는데 시작이 반이니까 블로그에 첫 글을 남겨본다. 오늘까지 한 일육각형 그리드를 관리하는 클래스 구현https://github.com/ypchoi/hexgridHexGrid 프로젝트는 오픈소스로 꾸준히 업데이트 할 예정UnrealEditor에 육각형 그리드를 그려보기 어려웠던 점언리얼 엔진은 왼손좌표계를 쓰는데 Forward가 +X, Right가 +Y, Up이 +Z내가 쓰던 크라이 엔진은 Forward +Y, Right +X, Up +Z자기가 만든 게임을 실행하려면 다음과 같이 설정해야 함세팅 > Ga..

Tiled Rendering

개요사실 SW Render Technique라기 보다는 GPU Render Technique화면 공간을 여러 Tile(or Grid)로 나누어 렌더링 하는 방식Tile-based Rendering(=TBR), Sort-middle Architecture라고도 불린다.중간에 어떤 Tile에 어떤 Geometry가 그려질지 결정하기 때문기존의 Immediate Rendering(=IM)은 Sort-Last이렇게 나누면 동일한 (빈 공간이나 동일한 배경) 타일을 활용할 수도 있고 HW의 성능이 떨어질 경우 적은 리소스만 가지고도 렌더링이 가능하다. 순서Rendering 하기 전에 Geometry가 어느 Tile에 그려질지 결정해야 한다.Modern GPU에서는 CPU가 아닌 GPU에서 수행 가능보통 Tile은..

Game Dev/Article 2016.10.21

Forward+ Rendering

개요전통적인 Forward Rendering의 확장!최종 Shading 전에 Light Culling 하나만 추가되었다.많은 수의 Light를 Culling하고 Pixel에 영향을 주는 것만 저장한다.Light List를 구축하고 이를 Shader에서 사용하지만 메모리는 적게 쓴다. Standard Forward, Standard Deferred식상한 얘기들ForwardDeferred에 비해서 Material 수는 큰 문제가 되지 않는다.다만 Light 개수가 많아지면 성능에 문제가 된다.또 Shader 조합이 폭발적으로 늘어날 수 있고 Light와 Geometry의 CPU 관리가 필요하다.DeferredGeometry 복잡도와 Light 복잡도를 분리하여 많은 Light를 그릴 수 있다.Shader 조..

Game Dev/Article 2016.10.19

Premultiplied alpha

Post Multiplied Alpha우리가 익히 많이 사용하고 있었던 Blending 공식Dest.rgb = (Src.rgb * Src.a) + (1 - Src.a) * (Dest.rgb) Src : SRC_ALPHADest : INV_SRC_ALPHA 하지만 이 공식은 많은 경우에 잘못된 Artifact가 발생한다. 다음의 이미지를 보면 왼쪽은 (R:1.0, G:0.0, B:0.0, A:1.0) 컬러이고, 오른쪽은 (R:0.0, G:1.0, B:0.0, A:0.1) 색이다. 이 둘을 혼합한다면 아주 연한 녹색 빛을 띄는 붉은색이 되어야 할 것이다. 그런데 저 둘을 가지고 1x1 Mipmap을 만들어보면 다음과 같은 결과가 나타난다!?이 컬러는 (R:0.5, G:0.5, B.0.0, A:0.55)로 단..

Game Dev/Article 2016.10.14

VS TeamService로 작업 공간 이동

원래는 개인 작업 저장소를 http://dev.naver.com/ 에서 관리하고 있었다. 용량 제한이 있지만 일단 무료이고, Git이 지원 가능하며 (예전에는 SVN만 가능했음) 가장 마음에 드는 것은 Private로 프로젝트를 만들 수 있어서이다. 물론 내 코드나 작업물을 누가 퍼가겠느냐만은... 사실 국내 최고의 IT 기업 중 하나인데 이런 결정을 내렸다는건 너무 아쉽다. 그런데 네이버 오픈 프로젝트를 접는다는 소식을 듣게 되었고 때마침 동료 프로그래머가 Visual Studio Team Service를 추천해 주었다. 승리의 MS! https://www.visualstudio.com/team-services/위 링크로 접속이 가능하며 Microsoft 계정만 있으면 무료로 사용이 가능하다. (단 5..

Game Dev/Work Log 2016.10.13

Inferred Lighting

개요infer : 추론하다, 추측하다, 언급하다.낮은 해상도에서 Lighting을 수행한다.따라서 Material Shader가 낮은 해상도에서도 정확한 Lighting 값을 "추론"할 수 있는 Filtering Algorithm이 중요함총 3번의 Rendering Pass가 필요하다. 하지만 투명한 오브젝트에 대해서 별도의 렌더링이 필요하지 않다.최종 결과물은 HW Anti-Aliasing이 적용되도록 한다. Light Pre-pass Rendering과 다른점Light Pre-pass는 투명한 오브젝트를 그릴 때 Forward Rendering이 필요함Light Pre-pass는 Light Buffer의 해상도가 커야 함 (=Full resolution)Light Pre-pass나 Standard D..

Game Dev/Article 2016.10.13

Light Pre-Pass Renderering (=Deferred Lighting)

개요총 3번의 Rendering Pass가 필요하다.하지만 Standard Deferred Rendering에 비해서 Render Target이 많이 필요하지 않다.가장 중요한 아이디어는 머트리얼과 빛의 속성을 분리해서 그리는 것! 구현Z-Buffer에는 Depth, Render Target에는 Normal(+Specualr Factor)만 그린다.MRT 필요하지 않음Light Buffer에 Light 속성을 그린다. (하단의 Light Buffer 참고)Forward Rendering으로 Geometry를 그리면서 Lighting을 수행한다. Light Buffer다음은 일반적인 LightingColor = Ambient + Shadow * Att * (N.L * DiffColor * DiffInten..

Game Dev/Article 2016.10.09