추상화의 허상

CPU가 아무리 빨라지고 온갖 개념의 프로그래밍 언어가 등장해도 현대의 컴퓨터는 종이테이프 머신에 기초를 두고 있다. 코드를 짜고 배포를 하고 디버깅을 하다보면 객체고 뭐고 아무리 포장을 해도 결국 소프트웨어란게 코드와 데이터의 스트림-종이테이프에 불과하다는 사실을 깨닫게 된다. 이걸 뼈저리게 느낀 첫 경험은 처음 멀티스레드로 네트워크 프로그래밍을 했던 2000년도였다. 여느 초심자들처럼 멀티 스레드 프로그래밍의 쓴맛을 톡톡히 맛보았다. ‘이 … More 추상화의 허상

생산성에 대한 고찰

내 경험에 비추어 보면, 프로그래밍 측면에서 프로젝트가 지연되는 이유는 다음과 같다. 1. 대략적으로 돌아가는 프로토타입이 없어서 프로그래머들이 각각 쓸데없는 짓을 함. 조립이 불가능한 부품을 각각 만들고 있음. 이것도 배가 산으로 가는 케이스. 2. 치명적인 버그를 잡지 못함. 디버깅 능력의 결여. 디버깅을 빼고 순수하게 코드만 작성하는 시간이 오래 걸려서 프로젝트가 늦어지는 경우는 한번도 보지 못했다. 프로젝트의 … More 생산성에 대한 고찰

혼자 개발하기

개인 프로젝트는 여전히 진행중이지만 어렵다. 어렵다. 사소한 문제에 부딪쳐도 해결하기 전까진 사소한 문제가 아니다. 나중에 사소한 문제로 밝혀지더라도 몇일씩 시간을 잡아먹는 일은 흔하다. 그리고 그 동안 프로젝트는 스톱된다. 단 한사람의 동료라도 있으면 다르다. 내가 진행을 못해도 프로젝트 전체로 보면 단 한픽셀 분량이라도 프로젝트는 진전된다. 게다가 막상 게임을 릴리즈하고 싶으면 이건 개발은 둘째 문제다. 배포는 어떻게 … More 혼자 개발하기

게임 프로그래밍이 만만해 보이냐?

2003년도 코룸온라인 클베 하기 직전이었다. 다음은 어느 코룸 유져가 코룸온라인 홈피에 남긴 글중 일부이다.. ——————————————————————– 4.세부소견-프로그래밍/네트워크 [ 코룸은 디아블로2의 엔진을 사용했다.] 그것은 디아블로2의 뛰어난 액션성을 그대로 장점으로 만들 수 있는 가능성이 있다는 것을 의미한다. 그리고 그것은 반드시 코룸이 갖춰야할 장점이기도 하다. 개인적으로 시스템엔지니어이긴 하지만 사실 게임 프로그래밍은 세부적으로 어떻게 돌아가는지 잘 모른다. 기회가 된다면 소스를 … More 게임 프로그래밍이 만만해 보이냐?

간만에 DX11 vs DX12 관련 잡설

DX12엔진 작업하느라 DX11엔진은 한동안 방치상태였는데 요 근래 Hololens 작업하면서 DX11엔진을 집중적으로 뜯어고쳤다. 그 와중에 약간의 최적화도 이루어졌고 기능도 추가됐다. DX11엔진의 변경분을 DX12엔진에 반영하면서 HLSL Shader코드를 똑같이 맞췄다. DX12에서 특별한 기능 추가된게 거의 없기 때문에 일반적으로 쉐이더코드는 그냥 공유한다. MS샘플도 그렇게 되어있다. 나도 최대한 공유하고 싶었다. 하지만 DX12엔진 작업할때 Constant Buffer 메모리 관리가 워낙 빡세서 이걸 좀 … More 간만에 DX11 vs DX12 관련 잡설

설계하지마라.

토요일 C++ 코리아 세미나에서 비는 시간에 어느 학생분이 질문을 해왔다. 설계에 대해서 어떻게 생각하냐고…라기보다 설계를 어떻게 해야하느냐..에 가까웠던거 같은데..어쨌든. 딱 잘라서 말했다. “설계하지 마세요.” “그냥 졸라 프로그램을 짜세요.” “같은 프로그램 세번쯤 만드세요.” 설계라는건그 도메인(나 이 말 정말 싫어한다.마땅한 표현이 없어서 적었다)에 대해서 훤히 알고 있고 코드를 짠 경험도 많을때나 하는거다. 소켓프로그래밍을 한번도 안해본 사람이 네트워크 … More 설계하지마라.

HoloLens 개발메모 #8 – Spatial Mapping

HoloLens의 기능은 크게 3가지 영역으로 나눌 수 있다. 1. HoloLens에서 HUD부분. 다른 VR과 달리 HUD에 영상을 투영하므로서 바깥 사물을 여전히 볼 수 있다. 이 기능 자체는 프로그래머가 컨트롤 할 수 없는 하드웨어의 고유영역. 2. 입체영상을 출력해주는 부분. 다른 VR과 원리가 별로 다르지 않음. API사용법도 크게 다르지 않음. 3. 가장 다른 부분이 Spatial Mapping이라는 실시간으로 주변 공간을 … More HoloLens 개발메모 #8 – Spatial Mapping

디렉터 시절 옛날 기억 한 조각.

예전에 오랫동안 같이 일했던 경영자의 스타일은 이런 식이었다. 회사 안에서 여러 프로젝트를 돌리면서 각 프로젝트에 대해서 다른 프로젝트의 장들에게 의견을 묻는다. ‘너네 A프로젝트 게임 해봤냐? 어떤거 같냐?’ 나도 딱히 좋은 소리는 안했지만 물론 우리 프로젝트에 대해서 다른 팀도 좋은 소릴 안했다. 저쪽이 예산을 많이 가져가면 상대적으로 우리가 손해보는 상황에서 좋은 소릴 해줄리가 있나. 각 팀의 … More 디렉터 시절 옛날 기억 한 조각.

내가 대형 프로젝트에 참여하길 꺼리는 이유.

1. 온갖 자질구레한 부분까지도 다 신경써야한다. 그래서 꼭 표현하고 싶은 핵심적인 기술을 구현하는데 집중하기 어렵다. 예를 들면 뛰어난 공간분할 기술로 아주 빠르고 깔끔하게 돌아가는 엔진을 만드는 이슈와 UI의 모서리를 이쁘게 처리하는 이슈가 동급이 될수도 있다. 아니 심지어는 그 중요도가 역전될수도 있다.   2. 개발에 참여하는 사람이 많아지므로 내가 기여하는 코드의 지분이 점점 줄어든다. ‘내 개인적인’ 기준으로는 내 … More 내가 대형 프로젝트에 참여하길 꺼리는 이유.

나오기만 하면 살건데 이 게임 왜 안나와?

게임, 특히 온라인 게임, HTTP 리퀘스트 날려서 점수 세이브 하는 게임 말고, 소켓 통신하는 고전적인 의미의 온라인 게임, 그중에서도 수백 수천명 이상이 한 게임 공간에 접속하는 온라인 게임-mmorpg의 개발은 어렵다. 어렵다 내가 다녔던 모 회사의 경우 1년 반만에 게임을 찍어낸 경우도 있었지만 이미 만들어진 네트워크 라이브러리,게임엔진,서버와 클라이언트의 통신체계,맵툴,DB구조 다 있었고 그저 스킨과 숫자를 바꿨을 뿐이었다. … More 나오기만 하면 살건데 이 게임 왜 안나와?