하루 하루 일기 (8월) 2017/08/08 01:47 by cagetu

[08-95]

- 박웅현님과 그 회사 분들이 쓰신 "안녕 돈키호테"를 보았다. 최근 책을 잘 읽지 않게 되어서, 전자책으로 갈아타볼까? 라고 생각했는데, 이런 책들을 책 그 자체의 완성도가 너무 좋다. 아마 전자책을 보게 되더라도, 서점에 가서 책 자체를 만져보고 전자책과 종이책을 골라서 보게 되지 않을까? 책을 읽으면 생각을 많이 하게 되어서 좋다. 자주 봐야하는데, 휴대폰과 게임기에 빠져 살고 있다. 이제 그만 빠져나와야 할 때다...

[08-08]

얼마 전에 스터디 모임에서 약간의 언쟁이 있었다. 개발자 한 분이 굉장히 공격적으로 말씀을 하셔서 조금 격해진 것이다. 약간 불편한 마음이 있었는데, 그 분을 보면서 많은 생각을 하게 되었다.

* 나는 과연 그와 이야기를 나눌 수 있을 정도로 공부를 부지런히 했을까?
: 최신 기술에 대해서는 굉장히 열심히 보시고 연구하신 듯 하다. GDC, SIGGRAPH 내용들도 다 보시고 (영어가 되신다니 부러울 따름). 나는 2014~5년 이후로는 거의 찾아보지도 못하고 만들어보지도 못했다. 

* 나는 엔지니어인가 게임 개발자인가?
: 게임을 만들고 싶다는 생각을 가지면서 부터, 프로그래머이지만 나는 게임 프로그래머이다. 엔진을 개발하고 싶고, 렌더러도 멋지게 만들고 싶지만, 게임을 만들기 위한 엔진과 멋진 그래픽을 표현할 수 있는 렌더러가 필요한 것이지 멋진 기술을 사용하고 싶은 것은 아니다. 

* 그가 욕하는 대기업 (N사들)이 정말 그렇게 형편없을까?
: 규모가 큰 프로젝트에서 진행을 해보니, 확실히 다른 점이 참 많다. 이건 그냥 뭐랄까? 같은 게임을 만들지만 약간 분야가 다르다고 해야 하나? 음악으로 따지만, 오케스트라 혹은 합창단과 락 밴드, 아이돌 그룹 처럼 그냥 다른 것 같다. 그러니, 대기업에게 락 밴드가 하는 음악이 안나올리는 없지만, 그냥 시스템 자체와 그들이 만들어 내고자 하는 음악의 방향성이 다를 뿐이지 않을까? 그렇게 생각 주이다.

* 내가 누구를 평가할 정도인가?
: 그냥 각자 자신의 길을 가면 되는 것이다. 내가 그 분을 평가할 정도가 되지도 않을 뿐더러, 많이 부족하기 짝이 없다. 나이가 이제 꽤 많아져서 공부를 하고, 계속 선두에 가는 사람들을 계속 따라가기가 점점 어려워지고 있지만, 그래도 프로그래머라는 직함을 가지고 있는 한은 의미적으로 해야할 것이 있는데, 내가 너무 안일하게 생각하고 있었나보다. 나부터 잘하자!!!

[08-10]

- 오랜만에 카사 스터디 동료들과 모임을 가지고 신나게 수다를 떨었다. 너무 즐거웠다. 같은 일을 하고 같은 관심사를 가진 사람들과의 대화. 그 동안 혼자 공부하고 연구하던 것들에 대한 궁금증이나 내가 가진 어려움을 공유할 수 있는 사람들. 참 좋다... 어떤 분이 엔지니어들이 기술보다 친목질이나 하고 있다고 한 적이 있는데, 그런 모임이 맞습니다. 같이 게임 만들어 가는 사람들이 게임 만드는 이야기를 나누는 곳이에요~ 


개발 노트 Dev Blogs 2017/08/04 21:27 by cagetu


개발 노트 다니는 회사가 너무 성장해도 두려운 이유 (만화) 2017/08/02 11:33 by cagetu

너무나 공감되는 만화다.. ㅡㅡ;;

최근 많은 개발자들이 "전문 분야 개발자" -> "멀티 플레이어" -> "전문 분야 개발자"로 되기를 요구 받고 있다. 회사를 살리기 위해 혹은 내 게임을 만들 기회를 얻기 위해서 자신이 잘하는 것보다 다른 일을 해야만 했지만, 지나고 나면 나는 그냥 애매한 개발자가 되어 있는 경우를 너무 많이 보았다. 

다행히 나는 다시 좋은 기회를 얻을 수 있었지만, 많은 개발자들이 자리를 고민하고 있다. 

이 만화를 보면서 지난 몇 년 동안 수 없이 고민하고 괴로워한 경험들이 떠올랐다. 





다니는 회사가 너무 성장해도 두려운 이유 (만화)

개발 노트 Vulkan 발표자료들 2017/07/31 18:03 by cagetu


개발 노트 스플래툰은 어떻게 구현했을까? 2017/07/26 19:20 by cagetu


게임을 해보면서 어떻게 만들었을까?? 를 생각해보았다. 대충 크게 2가지 가능성이 있다고 봤다.

1. 버텍스 칼라를 이용한다.
2. 텍스쳐 UV를 이용한다.

3차원 공간의 모든 오브젝트들에게 스플래팅을 해야 하니까, 텍스쳐 UV로 한다면 라이트맵을 굽듯이 모든 메쉬에 대한 UV 정보가 있는 아틀라스 텍스쳐가 있어야 하고, 그 텍스쳐에 실시간으로 마스킹을 하면 되지 않을까? 라는 생각을 해보았다. 라이트맵을 제작해서 적용해본 경험이 없어서 정확하게 이야기하기는 어렵지만, 해상도는 그렇다고 치더라도 라이트맵이 가지는 개발 상의 어려움 (텍스쳐를 구워야 하는 번거러움?!)과 더불어 실시간으로 텍스쳐 버퍼를 갱신하는 것 또한 부담스럽기는 마찬가지이다. 

메모리 부담이 있다고 생각이 들지만, 여러가지로 버텍스 칼라를 사용하는 편이 좋지 않을까? 라는 상상을 해보게 된다.

그러던 중 검색을 하니 궁금증을 가진 사람들을 조금 발견했다.

텍스쳐로 해서 Tri-planer mapping으로 하는 것이 어떠냐? 부터 다양한 의견들이 오가는데, 버텍스 칼라로 테스트해본 사람이 등장!! 이 분은 버텍스 칼라 방향으로 만족하고 나가는 듯... 샘플 코드도 올려두셨는데, 이건 뭐 간단함.
  1. public void ApplyPaint(Vector3 positionfloat innerRadius, float outerRadius, Color color) {
  2.         Vector3 center = transform.InverseTransformPoint(position);
  3.         float outerR = transform.InverseTransformVector(outerRadius * Vector3.right).magnitude;
  4.         float innerR = innerRadius * outerR / outerRadius;
  5.         float innerRsqr = innerR * innerR;
  6.         float outerRsqr = outerR * outerR;
  7.         float tFactor = 1f / (outerR - innerR);
  8.      
  9.         for (int i=0; i<verts.Length; i++) {
  10.             Vector3 delta = verts[i] - center;
  11.             float dsqr = delta.sqrMagnitude;
  12.             if (dsqr > outerRsqr) continue;
  13.             int a = vertColors[i].a;
  14.             vertColors[i] = color;
  15.             if (dsqr < innerRsqr) vertColors[i].a = 255;
  16.             else {
  17.                 float d = Mathf.Sqrt(dsqr);
  18.                 byte blobA = (byte)(255 - 255 * (- innerR)*tFactor);
  19.                 if (blobA >= a) vertColors[i].a = blobA;
  20.             }
  21.         }
  22.         mesh.colors32 = vertColors;
  23.     }
버텍스 검색 속도만 해결되면 나쁘지 않은 듯하고 멀티쓰레드로 후려쳐도 될 것 같기도 하다. 

게임도 참 재밌는데, 이런 즐거움까지!!! 훌륭하다!!!




1 2 3 4 5 6 7 8 9 10 다음



메모장

내가 먼 훗날에 이 글들을 보았을 때, 좋은 추억이 될 수 있기를...

나를 위해... 나에게 쓰는...

msn: cagetu@hotmail.com
mail: cagetu79@gmail.com
twitter: twitter.com/cagetu
facebook: facebook.com/cagetu