오늘은 Clean Code 를 꺼내 들어서 일고 있는 중입니다.
얼마전에 게임코디 눈팅을 하다가 본 getter/setter
=> 최대한 클래스 내에서 처리하도록 해서 getter/setter 없는 세상을 - 멋진 말인듯 합니다.
=> 사실 엔진 회사에서는 쉽지는 않은 듯(인터페이스를 어떻게 제공해야 할지가 문제.)
=> 무작정 상속받아서 처리하라고 그러기엔-ㅅ-
return null, pass null
=> 사실 이런 저런 악의 근원인데요. 포인터가 없는 언어가 많은 것도 이런 이유이겠지요-ㅁ-
=> 뭐 최대한 안쓰고 널객체를 넣어주면 좋긴 한 듯 합니다.
=> 최근에 널 사운드 시스템을 넣었습니다. 널 렌더러등도 필요한듯 한데요(이건 뭐 일단 제 당담이 아니니; =_=) 크게는 여러 객체들이 널 타입을 갖는 것이 테스트 하기도 좋고 한 거 같습니다. MockObject (이 개념이 맞는지는 정확히 모르겠습니다만) 처럼 행동을 흉내내고 테스트 하는 하나의 요소가 될 수도 있을 거 같습니다.
함수 이름 잘 짓기
=> 일단 영어라는 압박이, 제가 요즘 코드 리뷰시 지적받는 사항이 함수 이름과, 코멘트입니다.
=> 일단 영어는 둘째 치고 뭐하는 지 고민하고 함수 이름 짓는게 중요한 거 같습니다.(생각보다 쉽지 않은 거 같습니다.
리팩토링의 생활화
=> 회사에서 자주 하는 일이 여러 군데 흩어진 비슷한 코드를 모아서 이쁘게 함수를 작성 후 테스트 돌리기(완벽한 유닛 테스트가 없어서 손 테스트도 해야 되긴 합니다만,,=_=) 어느 정도 규모가 되면 전체적인 코드양이 일정하게 유지 되야 하는 거 같습니다.(기존 기능들이 통폐합,,,비슷한 기능들을 묶다 보면---+)
클래스는 한가지일만, 함수도 한가지 일만,
컴포넌트 패턴하고도 잘 맞는 얘기인 거 같습니다.
요즘 대세는 리플렉션(뭔지 정확하게 이해는 안갑니다만,,,) 시리얼라이제이션, RTTI 그리고 멀티코어에 중요한 메시징 시스템 까지 이미 있는 컴포넌트 라이브러리가 많으니 잘 가져다 써야 할 거 같습니다. 결국 C#의 프로퍼티 그리드로까지 깔끔하게 연결;; gpg 책에도 내용이 많고, http://nocturnal.insomniacgames.com/ 여기에는 깔끔하게 통짜로 제공하니 함 가져다 쓰면 좋을 거 같습니다.!!!
그리고 요즘 느끼는 건데, 소프트웨어라는게 어디서 만들 던 초반에 버그가 없을 수는 없나봅니다. 뭐든 x.0 버전을 쓰면 고생하네요 -ㅁ- 최소한 좀 기다렸다 작업하는 게 내 코드도 깔끔하게 만들고 마음도 편한 듯 합니다.!!><
2010년 11월 23일 화요일
2010년 11월 22일 월요일
[Book]Apprenticeship Patterns
That's a great book for me.
I'm reading for second time now.
I know I need to wear white belt for programming now since I need more & different knowledge.
I've been working for 10 year at game company already.
I realized that I didn't study enough. ><
But it's okay. I have a great passion for programming. And I really enjoy it.
And I'm working now in great environment.
I hopefully can wear yellow belt soon.
Now I know that the most important thing is the passion and study & research everyday.!!
I'm reading for second time now.
I know I need to wear white belt for programming now since I need more & different knowledge.
I've been working for 10 year at game company already.
I realized that I didn't study enough. ><
But it's okay. I have a great passion for programming. And I really enjoy it.
And I'm working now in great environment.
I hopefully can wear yellow belt soon.
Now I know that the most important thing is the passion and study & research everyday.!!
2010년 11월 21일 일요일
렌더링 공부 스타일
원래 공부 스타일이 처음부터 쭈욱 하나하나 인데,
렌더링하고는 잘 안 맞는 거 같다.
아니 공부할 양이 방대해지면 효율이 급속도로 저하되는 느낌이다.
(나름의 장점은 있지만.)
생각해보면 GDC 나 GPG 등등을 다 읽어 본다고 도움이 많이 되진 않는 거 같다.
특정한 문제(예, Deferred Rendering 에서 DOF 버퍼 처리?)
뭐 이런 게 있다고 한다면,
위의 관련 자료를 검색해보고,
모르는 게 있으면 타고 들어가고 들어가다 보면
Grpahic Gems 도 몇개 거치고 GDC 논문도 몇개 거치고 하면서 어떻게 구현해야 될지 감을 잡는 거 같다.
그동안 공부를 너무 안했더니, 공부 방법도 계속 변해야 된다는 것을 잊었던 거 같다.!!!
이상 프로그래밍 공부 방법 패턴을 모아놓은 듯한,
프로그래머 멘토에게 묻다를 읽다가 생각난 것이었습니다.~~
렌더링하고는 잘 안 맞는 거 같다.
아니 공부할 양이 방대해지면 효율이 급속도로 저하되는 느낌이다.
(나름의 장점은 있지만.)
생각해보면 GDC 나 GPG 등등을 다 읽어 본다고 도움이 많이 되진 않는 거 같다.
특정한 문제(예, Deferred Rendering 에서 DOF 버퍼 처리?)
뭐 이런 게 있다고 한다면,
위의 관련 자료를 검색해보고,
모르는 게 있으면 타고 들어가고 들어가다 보면
Grpahic Gems 도 몇개 거치고 GDC 논문도 몇개 거치고 하면서 어떻게 구현해야 될지 감을 잡는 거 같다.
그동안 공부를 너무 안했더니, 공부 방법도 계속 변해야 된다는 것을 잊었던 거 같다.!!!
이상 프로그래밍 공부 방법 패턴을 모아놓은 듯한,
프로그래머 멘토에게 묻다를 읽다가 생각난 것이었습니다.~~
2010년 10월 30일 토요일
게임 개발자 해외 취업 얘기.
한국에서만 일하는 것 보다 전혀 다른 환경이 해외에서 일하는 것도 나쁘지 않은 거 같습니다.
또는 외국 개발사의 한국지사에서 일하는 것도 좋으 경험이 될 거 같습니다.
운 좋게도 요즘의 해외 회사들은 한국 개발자 구인에 적극적인 편입니다.
이유는.
1. 한국이 최고의 미들웨어 시장이 된 것에 기인하는 거 같습니다. 즉 많은 게임 미들웨어 회사들이 한국에서 서포트를 해야 되고 한국어를 하는 개발자를 뽑고 싶어합니다. 한국어 되는 개발자 해외에서는 찾기 어렵습니다. 국내에서 모시고 가야겠지요.
2. MMO 라는 새로운 환경에 이미 적응한 개발자들이 많습니다. 해외에서 관련된 경험자가 필요할때 한 번쯤 눈여거 보게 되는 것입니다.
허나 뽑고 싶어도 몇가지 문제가 있는데요.
1. 영어 말하기/쓰기가 잘 안됩니다. 많은 경우 읽기는 완벽한 편이고, 듣기는 그럭저럭 됩니다만, 외국인 상대할일이 많지 않던 우리는 잘 안됩니다. 지인 중 한 분은 전화영어로(저는 회화학원에서--) 이런 부분을 해결했다고 하네요. 덤으로 전화영어는 외국 회사 면접의 첫번째 코스이기도 합니다. 저는 처음에 전화 면접에서 몇 번 떨어졌습니다.
2. 보통 한국에서는 잘 없는 코딩 시험을 봐야 합니다. 보통 지인을 통해 움직이거나, 간단한 코딩 시험과 구술 시험이 주였던 한국 과는 다르게 하루에서 이틀 짜리 코딩 시험을 보는게 일바적입니다. (넥슨에서는 하는 거 같습니다.) 보실 때 귀찮아하시지 말고 있는 힘 다해서 보셔야 됩니다. 이게 실제 당락을 가르는 중요 요소이고 한국 개발자분들이 많이 떨어진다고 합니다. 진지하게 지원해 주시고, 진지하게 코딩 시험에 임해주시면 문제가 없을 거 같습니다.
간단한 팁이라면,
사람에 따라 말이 다르긴 합니다만,
북미권은 제가 볼땐 영어가 많이 필요한 거 같습니다.
현지인하고 경쟁해야 되는데다가, 북미에선 프로그래머는 대우가 좋은 직업인데다가, 다들 영어도 잘하니까요--+(그래봐야 안 가봐서 잘은 모릅니다.;;;)
그럽 이제 제가 밟고 있는 유럽(독일)은 조급 다릅니다.
여기도 나름 각국의 언어가 있어서, 영어가 보통 제2 외국어 입니다만,
게임 회사의 경우 나라 상관없이 뽑는 경우가 많고, 유럽내 국가끼리는 취업이 자유로운 편이니, 회사에서는 영어를 쓰게 되는 경우가 많습니다.
즉 회사안에서 이미 영어를 잘하고 못하는 사람들이 있는 경우가 많습니다.
(그래도 보통 잘하더군요, 같은 언어권의 이점인가요;;)
암턴 이런 환경이기 때문에 영어에 관대한 경우가 많습니다. 게다가 보통 프로그래머가 많이 없어서 인력부족인 편입니다.
그래도 영어 쓰기는 좀 보는편이기 때문에 이력서나 커버레터는 (당연하지만) 에러가 없는 게 좋습니다. 원어민이 한번 봐주면 좋겠지요.
완전히 다른 환경에서 일한다는 게, 그리고 익숙하지 않은 언어로 말한다는게,
생각보다 스트레스가 있긴 합니다만,
즐거운 스트레스가 아닐까 싶습니다.
저 같은 경우에는 한국 회사에서 이래저래 좀 고생한편이었는데요, 해외로 오고 그런 것들이 많이 사라졌습니다. 자기 문화와 익숙한 회사를 찾아만 다닐 수는 없겠지만, 그래도 자신에게 좀 더 맞는 회사가 있는것도 아닌 가 싶습니다.
또는 외국 개발사의 한국지사에서 일하는 것도 좋으 경험이 될 거 같습니다.
운 좋게도 요즘의 해외 회사들은 한국 개발자 구인에 적극적인 편입니다.
이유는.
1. 한국이 최고의 미들웨어 시장이 된 것에 기인하는 거 같습니다. 즉 많은 게임 미들웨어 회사들이 한국에서 서포트를 해야 되고 한국어를 하는 개발자를 뽑고 싶어합니다. 한국어 되는 개발자 해외에서는 찾기 어렵습니다. 국내에서 모시고 가야겠지요.
2. MMO 라는 새로운 환경에 이미 적응한 개발자들이 많습니다. 해외에서 관련된 경험자가 필요할때 한 번쯤 눈여거 보게 되는 것입니다.
허나 뽑고 싶어도 몇가지 문제가 있는데요.
1. 영어 말하기/쓰기가 잘 안됩니다. 많은 경우 읽기는 완벽한 편이고, 듣기는 그럭저럭 됩니다만, 외국인 상대할일이 많지 않던 우리는 잘 안됩니다. 지인 중 한 분은 전화영어로(저는 회화학원에서--) 이런 부분을 해결했다고 하네요. 덤으로 전화영어는 외국 회사 면접의 첫번째 코스이기도 합니다. 저는 처음에 전화 면접에서 몇 번 떨어졌습니다.
2. 보통 한국에서는 잘 없는 코딩 시험을 봐야 합니다. 보통 지인을 통해 움직이거나, 간단한 코딩 시험과 구술 시험이 주였던 한국 과는 다르게 하루에서 이틀 짜리 코딩 시험을 보는게 일바적입니다. (넥슨에서는 하는 거 같습니다.) 보실 때 귀찮아하시지 말고 있는 힘 다해서 보셔야 됩니다. 이게 실제 당락을 가르는 중요 요소이고 한국 개발자분들이 많이 떨어진다고 합니다. 진지하게 지원해 주시고, 진지하게 코딩 시험에 임해주시면 문제가 없을 거 같습니다.
간단한 팁이라면,
사람에 따라 말이 다르긴 합니다만,
북미권은 제가 볼땐 영어가 많이 필요한 거 같습니다.
현지인하고 경쟁해야 되는데다가, 북미에선 프로그래머는 대우가 좋은 직업인데다가, 다들 영어도 잘하니까요--+(그래봐야 안 가봐서 잘은 모릅니다.;;;)
그럽 이제 제가 밟고 있는 유럽(독일)은 조급 다릅니다.
여기도 나름 각국의 언어가 있어서, 영어가 보통 제2 외국어 입니다만,
게임 회사의 경우 나라 상관없이 뽑는 경우가 많고, 유럽내 국가끼리는 취업이 자유로운 편이니, 회사에서는 영어를 쓰게 되는 경우가 많습니다.
즉 회사안에서 이미 영어를 잘하고 못하는 사람들이 있는 경우가 많습니다.
(그래도 보통 잘하더군요, 같은 언어권의 이점인가요;;)
암턴 이런 환경이기 때문에 영어에 관대한 경우가 많습니다. 게다가 보통 프로그래머가 많이 없어서 인력부족인 편입니다.
그래도 영어 쓰기는 좀 보는편이기 때문에 이력서나 커버레터는 (당연하지만) 에러가 없는 게 좋습니다. 원어민이 한번 봐주면 좋겠지요.
완전히 다른 환경에서 일한다는 게, 그리고 익숙하지 않은 언어로 말한다는게,
생각보다 스트레스가 있긴 합니다만,
즐거운 스트레스가 아닐까 싶습니다.
저 같은 경우에는 한국 회사에서 이래저래 좀 고생한편이었는데요, 해외로 오고 그런 것들이 많이 사라졌습니다. 자기 문화와 익숙한 회사를 찾아만 다닐 수는 없겠지만, 그래도 자신에게 좀 더 맞는 회사가 있는것도 아닌 가 싶습니다.
2010년 10월 19일 화요일
해야할일 목록 입니다.
1. 영어 공부 - 우선 순위가 높을 수 밖에 없습니다. 언제 바짝해서 평생 써먹어야 되는데 말이져. 아직도 틀린 문법에 어설픈 발음으로 연명하고 있습니다.
=> 아이패드 동화책보기 - 디즈니 책 읽어주기 어플들이 멋지더군요!!중간중간 게임도 그럭저럭 재미나다눈(한권당 3불정도라서 약간 지출이 생깁니다.)
=> 안병규 미드 보기 - 기존에 학원 다니면서 괜찮은 느낌이라 보고 있습니다. 많은 분들이 발음이 이상하다고, 하던데 --저는 그런 거에 별로 예민하진 않아서,어차피 미드 따라하기인데요 뭐.(제 발음을 보면 좀 에민해야 될 거 같기도 합니다만, 그러면 너무 팍팍하잖아요.ㅎ)
=> Grammer in Use - 문법도 가끔씩 살랑살랑 봐주면 좋은 거 같습니다.
=> 아이패드에서 영어책 보기.!!
=> 그리고 토플이나 IELTS 등도 준비하면 좋을 거같습니다.
2.프로그래밍 공부
=> 꾸준히 필요한 책을 읽어야겠습니다. 엔진 사용하면 게임 개발하는 중간 역할만 오래했더니, 실제 기본 개념이 좀 부족합니다. - 소프트웨어 렌더러 만들어 보기!(학교 다닐때 한번 했었는데 거의 실패작이라,,,그래도 그때 배운걸로 렌더링 개념 써먹고 있으니 교수님께 감사의 메일이라도 써야 될듯...--물론 써도 누군지 모르실거라서--으음)
=> 아이패드 취미 플밍 - 현재 맥북과 아이패드 환경이니 취미로 플밍은 맥으로 아이패드용. (음 그래도 역시 개발은 비쥬얼 스튜디오인데---황홀한 디버깅 세상이라는 걸 다른 IDE 를 써보고 알게되었습니다.) MS 최고의 제품은 비쥬얼 스튜디오가 아닐까 싶습니다.-_-
=> 멀티 코어 개념이 급 필요해지고 있습니다. 렌더링은 일할때 필요하니 책좀 읽어야겠고요.
3. 건강
=> 운동해야 됩니다. 매일 땀 한방울이라도 흘려야겠습니다. 운동할때 안할때 체력과 집중력차이가 많이 나는군욤!!.
그리고 제일 중요한 건 즐기면서 살자 입니다. 즐거운 마음으로 프로그래밍을 대하고 생각하고 장인이 되려하는 마음가지. 이것만큼 중요한게 없을 거 같습니다. 돈 받으니 일한다는 마음으로 다닌 적도 있고, 대충 회사 다닌 적도 있습니다만, 제일 즐거운 건 돈이나 회사에 상관없이 열시히 즐겁게 내 길을 걸어가면 프로그래밍 하는 것입니다.
집에서도 심심하지 않게 어떻게 하면 프로그래밍을 잘할까 고민하구요.!!ㅎ 이런 저런 문제를 머리속으로도 풀어보고 해야 겠습니다.
=> 아이패드 동화책보기 - 디즈니 책 읽어주기 어플들이 멋지더군요!!중간중간 게임도 그럭저럭 재미나다눈(한권당 3불정도라서 약간 지출이 생깁니다.)
=> 안병규 미드 보기 - 기존에 학원 다니면서 괜찮은 느낌이라 보고 있습니다. 많은 분들이 발음이 이상하다고, 하던데 --저는 그런 거에 별로 예민하진 않아서,어차피 미드 따라하기인데요 뭐.(제 발음을 보면 좀 에민해야 될 거 같기도 합니다만, 그러면 너무 팍팍하잖아요.ㅎ)
=> Grammer in Use - 문법도 가끔씩 살랑살랑 봐주면 좋은 거 같습니다.
=> 아이패드에서 영어책 보기.!!
=> 그리고 토플이나 IELTS 등도 준비하면 좋을 거같습니다.
2.프로그래밍 공부
=> 꾸준히 필요한 책을 읽어야겠습니다. 엔진 사용하면 게임 개발하는 중간 역할만 오래했더니, 실제 기본 개념이 좀 부족합니다. - 소프트웨어 렌더러 만들어 보기!(학교 다닐때 한번 했었는데 거의 실패작이라,,,그래도 그때 배운걸로 렌더링 개념 써먹고 있으니 교수님께 감사의 메일이라도 써야 될듯...--물론 써도 누군지 모르실거라서--으음)
=> 아이패드 취미 플밍 - 현재 맥북과 아이패드 환경이니 취미로 플밍은 맥으로 아이패드용. (음 그래도 역시 개발은 비쥬얼 스튜디오인데---황홀한 디버깅 세상이라는 걸 다른 IDE 를 써보고 알게되었습니다.) MS 최고의 제품은 비쥬얼 스튜디오가 아닐까 싶습니다.-_-
=> 멀티 코어 개념이 급 필요해지고 있습니다. 렌더링은 일할때 필요하니 책좀 읽어야겠고요.
3. 건강
=> 운동해야 됩니다. 매일 땀 한방울이라도 흘려야겠습니다. 운동할때 안할때 체력과 집중력차이가 많이 나는군욤!!.
그리고 제일 중요한 건 즐기면서 살자 입니다. 즐거운 마음으로 프로그래밍을 대하고 생각하고 장인이 되려하는 마음가지. 이것만큼 중요한게 없을 거 같습니다. 돈 받으니 일한다는 마음으로 다닌 적도 있고, 대충 회사 다닌 적도 있습니다만, 제일 즐거운 건 돈이나 회사에 상관없이 열시히 즐겁게 내 길을 걸어가면 프로그래밍 하는 것입니다.
집에서도 심심하지 않게 어떻게 하면 프로그래밍을 잘할까 고민하구요.!!ㅎ 이런 저런 문제를 머리속으로도 풀어보고 해야 겠습니다.
물리 엔진
요즘 열심히 글쓰기를 해보려고 하는데, 역시 블로그 초보라서 글 쓰는게 많이 어렵네요.
요즘 락프리니 헤스켈이니 하면서 멀티 코어에 대비해야 되니 하면서 말이 많은데요. 막상 일하는데서 안 쓰니 생각보다 공부는 안하게 되는군요. 반성해야겠습니다.
그러 면에서 물리 엔진을 어떻게 돌리느냐가 클라이언트에서 고민할 수 있는 멀티 코어 문제인 거 같습니다.
이상적인 구조는 물리 엔진은 따로 남는 시간에 계속 돌면서 원하는 한프레임 전 데이타를 저장해두는 것일 겁니다.
(뭐 락 안걸고 최신 데이타 가져올 수 있으면 더 이상적인 건가요--가능은 할 거 같은데 어떻게 되는지 모르니...음 공부공부)
일단 근데 한프레임 전 데이타를 굳이 저장해두느니 렌더링할때 CPU 가 놀테니 요때 바짝 돌리고 업데이트 타임에 쉬어주는 방법도 있습니다. 이상적인 구조는 아닙니다만, CPU 가 노는 타이밍을 안다면 사용하기도 편리하고--그냥 그럭저럭 괜찮은 거 같습니다.
더 좋은 구조 있나요? 기타 엔진에서 어떻게 사용하는 지 아시는 분은 답글 좀 달아주세요~~
요즘 락프리니 헤스켈이니 하면서 멀티 코어에 대비해야 되니 하면서 말이 많은데요. 막상 일하는데서 안 쓰니 생각보다 공부는 안하게 되는군요. 반성해야겠습니다.
그러 면에서 물리 엔진을 어떻게 돌리느냐가 클라이언트에서 고민할 수 있는 멀티 코어 문제인 거 같습니다.
이상적인 구조는 물리 엔진은 따로 남는 시간에 계속 돌면서 원하는 한프레임 전 데이타를 저장해두는 것일 겁니다.
(뭐 락 안걸고 최신 데이타 가져올 수 있으면 더 이상적인 건가요--가능은 할 거 같은데 어떻게 되는지 모르니...음 공부공부)
일단 근데 한프레임 전 데이타를 굳이 저장해두느니 렌더링할때 CPU 가 놀테니 요때 바짝 돌리고 업데이트 타임에 쉬어주는 방법도 있습니다. 이상적인 구조는 아닙니다만, CPU 가 노는 타이밍을 안다면 사용하기도 편리하고--그냥 그럭저럭 괜찮은 거 같습니다.
더 좋은 구조 있나요? 기타 엔진에서 어떻게 사용하는 지 아시는 분은 답글 좀 달아주세요~~
엔진 사용.
게임 엔진 사용 하면서 많이 듣는 얘기 중에 하나가,
아 엔진 잘못 골라서 게임 안나왔어.+_+ 이런 종류의 얘기입니다.
생각했던 거하고 다르다면 뭐 도망가고 싶을 때도 있겠습니다만, 안타까운 얘기입니다.
(물론 이런 저런 정치적인 이유로? 엔진 핑계를 대는 경우도 많지요;;;ㅎ)
사실 게임 엔진에는 크게 2가지 스타일이 있는 거 같습니다.
자체개발 게임이 있는 경우와 아닌 경우 입니다.
1. 자체 게임이 없는 경우.
이 경우는 사실 아무리 잘 되있고 다 있는 것 처럼 보여도, 실제 게임을 개발하려면 많은 부분을 작업 해야 됩니다. 특히나 디자이너나 기획자하고 데이타를 주고 받는 부분이 약할 수 밖에 없는 거 같습니다. 보통 프로토타이핑 까지는 어찌어찌 되나, 이후에는 엄청난 툴 작업과, 중간 중간 어이 없는 병복을 맞딱 드리게 됩니다.(물론 자체개발 보다는 보통 낫지 않을까 싶습니다.) 물론 차근 차근 서포트를 받아가면 수정하면 됩니다만 어쨌든 생각보다 게임 후반으로 갈수록 개발 시간이 예상보다 길어지는 경우가 많은 거 같습니다.
2. 자체 게임이 있는 경우
이 경우는 코드가 이해하기 어려울 가능성이 매우 높은 듯 합니다. 마지막 최적화라던가, 툴을 위해 이상한 인터페이스를 꼬아 넣었다던가 하는 말입니다. 이 경우는 프로타이핑을 아무것도 안고치고 쉽게 내놓거나, 조금 고치려고 하다가 시간이 많이 걸리는 경우가,,,ㅎㅎ
그래도 많은 게임을 위한 툴이 있고, 최적화 부분등도 실제로 게임을 만들면서 진행된 부분이기 때문에 동일한 스타일의 게임이라면 편안하게 개발 가능합니다.
저는 개인적으로 1번의 경우를 선호합니다. 이미 다 있는 거 헐어내는 것 보단, 조금 부족해도 열심히 분석해가면서 넣는 재미도 있고, 실제 프로그래밍도 좀 더 적극적으로 하게 되는듯 합니다.
아 엔진 잘못 골라서 게임 안나왔어.+_+ 이런 종류의 얘기입니다.
생각했던 거하고 다르다면 뭐 도망가고 싶을 때도 있겠습니다만, 안타까운 얘기입니다.
(물론 이런 저런 정치적인 이유로? 엔진 핑계를 대는 경우도 많지요;;;ㅎ)
사실 게임 엔진에는 크게 2가지 스타일이 있는 거 같습니다.
자체개발 게임이 있는 경우와 아닌 경우 입니다.
1. 자체 게임이 없는 경우.
이 경우는 사실 아무리 잘 되있고 다 있는 것 처럼 보여도, 실제 게임을 개발하려면 많은 부분을 작업 해야 됩니다. 특히나 디자이너나 기획자하고 데이타를 주고 받는 부분이 약할 수 밖에 없는 거 같습니다. 보통 프로토타이핑 까지는 어찌어찌 되나, 이후에는 엄청난 툴 작업과, 중간 중간 어이 없는 병복을 맞딱 드리게 됩니다.(물론 자체개발 보다는 보통 낫지 않을까 싶습니다.) 물론 차근 차근 서포트를 받아가면 수정하면 됩니다만 어쨌든 생각보다 게임 후반으로 갈수록 개발 시간이 예상보다 길어지는 경우가 많은 거 같습니다.
2. 자체 게임이 있는 경우
이 경우는 코드가 이해하기 어려울 가능성이 매우 높은 듯 합니다. 마지막 최적화라던가, 툴을 위해 이상한 인터페이스를 꼬아 넣었다던가 하는 말입니다. 이 경우는 프로타이핑을 아무것도 안고치고 쉽게 내놓거나, 조금 고치려고 하다가 시간이 많이 걸리는 경우가,,,ㅎㅎ
그래도 많은 게임을 위한 툴이 있고, 최적화 부분등도 실제로 게임을 만들면서 진행된 부분이기 때문에 동일한 스타일의 게임이라면 편안하게 개발 가능합니다.
저는 개인적으로 1번의 경우를 선호합니다. 이미 다 있는 거 헐어내는 것 보단, 조금 부족해도 열심히 분석해가면서 넣는 재미도 있고, 실제 프로그래밍도 좀 더 적극적으로 하게 되는듯 합니다.
2010년 10월 11일 월요일
심심 풀이 게임 엔진 이야기...(주관적인 생각입니다)
1. 유니티3 => 아직 제대로 안써봤지만
=> 툴이 멋지다.
=> 상당히 게임 디자이너(기획자) 친화적인 툴
=> 많이 수정하지 않다고 다자이너 중심으로 게임을 만든다면 최고 일듯
=> 플래쉬의 3D 버전. 음?!!
2. 게임브리오 => 3.1 까지만 써본,,(3.2부터 툴이 좋아졌다고 합니다...이제 월드툴에서 터레인도 수정 가능??-_-)
=> 툴은? 괜찮아지고 있다. 그래도 완전 프로그래머 친화적인 엔진인듯.><
=> 디퍼드를 지원안한다. 엔진을 샀는데 거대 렌더링구조를 집어넣는 건 좀 삽질이지 않은가? 포워드로 저사양을 노릴 계획이라면 제대로인듯!!
=> 한국에 있는 프로그래머라면 게임브리오는 한번씩은 해본듯 => 인력 충원 후 바로 일에 투입하기 좋다.
=> 뛰어난 게임브리오 프로그래머가 있다면 좋은듯,,,
=> 그러나 서포트는 없다.!!
=> 툴이 부족하므로 뛰어난? 또는 많은 툴 프로그래머가 필요하다. 또는 3rd 파티 인테그레이션을 제대로 활용 해야 되는(근데 스피드트리5는,,아직도 지원 안한다눈,,,)
3. 비전 엔진
=> 아티스트 친화적?인 툴은 아니지만 그럭저럭 비쥬얼 쉐이더 에디터와 파티클 툴도 있다.
(겜브리오 라이트스피드 정도의 툴 + 비쥬얼 쉐이더 에디터 + 파티클 툴 인듯)
=> 게임브리오처럼 뛰어난? 또는 많은 툴 프로그래머가 필요한 것은 아니지만 그래도 툴 수정이 지속적으로 필요하다!!
=> 게임브리오처럼 프로그래머 친화적인 엔진인듯(게임 안 만드는 회사들은 프로그래머밖에 없어서,,,음)
=> 디퍼드 렌더링을 기본으로 지원한다.=> 디퍼드를 기본으로 한다면 당연히!!
=> 해본 프로그래머가 없다 -> 교육해야 한다,,, -> 이해하기는 좋은 소스이다.!!><
=> 서포트가 매우 좋다.? -> 아티스트들이 직접 데이타를 주고 받으며 한글로 서포트를 받는 것이 가능하다 => 프로그래머가 직접 교육하고 서포트에 질문 보내지 않아도 되니,,,편하다.=> 알파 같은 머리 아픈 문제를 개발사에서 해결하도록,,,,유도 가능+_+
4. 언리얼 엔진 (조금만 써 봤습니다.)
=> 개인적으로 테크니컬 디자이너 친화적인 엔진이라고 생각
=> 뛰어난 테크니컬 디렉터가 필요(디자인 감각있는 플머 또는 플밍 잘하는 디자이너--)
=> 엔진을 커스토 마이즈하고 고쳐야 하는 프로젝트라면 뛰어난 프로그래머가 많이? 필요하다.
=> 코드가 좋다고는 하나, 기본적으로 내용이 방대하므로 수정은 쉽지 않음.
=> 기본적으로 구색? 을 맞추려면 팀 규모가 커지는 듯/
5. 크라이 엔진 (듣기만 했습니다...)
=> 디자이너 친화적인 툴(멋지고 이뻐요.) = 프로그래머 비친화적인 엔진?
=> 이해하고 파악하는 데 상당한 시간 소요(물리 엔진만 봐도 PhysX 를 이용하지 않아서 기존에 PhysX 다뤄본 사람이 있어도;;; 음)
=> 엔진을 수정하지 않고 사용하면 좋다는 소문도( 영화 프리프로 덕션이나,,군사 시뮬 같은거?)
=> 신기술을 제일 빨리 넣는 듯.
=> 툴이 멋지다.
=> 상당히 게임 디자이너(기획자) 친화적인 툴
=> 많이 수정하지 않다고 다자이너 중심으로 게임을 만든다면 최고 일듯
=> 플래쉬의 3D 버전. 음?!!
2. 게임브리오 => 3.1 까지만 써본,,(3.2부터 툴이 좋아졌다고 합니다...이제 월드툴에서 터레인도 수정 가능??-_-)
=> 툴은? 괜찮아지고 있다. 그래도 완전 프로그래머 친화적인 엔진인듯.><
=> 디퍼드를 지원안한다. 엔진을 샀는데 거대 렌더링구조를 집어넣는 건 좀 삽질이지 않은가? 포워드로 저사양을 노릴 계획이라면 제대로인듯!!
=> 한국에 있는 프로그래머라면 게임브리오는 한번씩은 해본듯 => 인력 충원 후 바로 일에 투입하기 좋다.
=> 뛰어난 게임브리오 프로그래머가 있다면 좋은듯,,,
=> 그러나 서포트는 없다.!!
=> 툴이 부족하므로 뛰어난? 또는 많은 툴 프로그래머가 필요하다. 또는 3rd 파티 인테그레이션을 제대로 활용 해야 되는(근데 스피드트리5는,,아직도 지원 안한다눈,,,)
3. 비전 엔진
=> 아티스트 친화적?인 툴은 아니지만 그럭저럭 비쥬얼 쉐이더 에디터와 파티클 툴도 있다.
(겜브리오 라이트스피드 정도의 툴 + 비쥬얼 쉐이더 에디터 + 파티클 툴 인듯)
=> 게임브리오처럼 뛰어난? 또는 많은 툴 프로그래머가 필요한 것은 아니지만 그래도 툴 수정이 지속적으로 필요하다!!
=> 게임브리오처럼 프로그래머 친화적인 엔진인듯(게임 안 만드는 회사들은 프로그래머밖에 없어서,,,음)
=> 디퍼드 렌더링을 기본으로 지원한다.=> 디퍼드를 기본으로 한다면 당연히!!
=> 해본 프로그래머가 없다 -> 교육해야 한다,,, -> 이해하기는 좋은 소스이다.!!><
=> 서포트가 매우 좋다.? -> 아티스트들이 직접 데이타를 주고 받으며 한글로 서포트를 받는 것이 가능하다 => 프로그래머가 직접 교육하고 서포트에 질문 보내지 않아도 되니,,,편하다.=> 알파 같은 머리 아픈 문제를 개발사에서 해결하도록,,,,유도 가능+_+
4. 언리얼 엔진 (조금만 써 봤습니다.)
=> 개인적으로 테크니컬 디자이너 친화적인 엔진이라고 생각
=> 뛰어난 테크니컬 디렉터가 필요(디자인 감각있는 플머 또는 플밍 잘하는 디자이너--)
=> 엔진을 커스토 마이즈하고 고쳐야 하는 프로젝트라면 뛰어난 프로그래머가 많이? 필요하다.
=> 코드가 좋다고는 하나, 기본적으로 내용이 방대하므로 수정은 쉽지 않음.
=> 기본적으로 구색? 을 맞추려면 팀 규모가 커지는 듯/
5. 크라이 엔진 (듣기만 했습니다...)
=> 디자이너 친화적인 툴(멋지고 이뻐요.) = 프로그래머 비친화적인 엔진?
=> 이해하고 파악하는 데 상당한 시간 소요(물리 엔진만 봐도 PhysX 를 이용하지 않아서 기존에 PhysX 다뤄본 사람이 있어도;;; 음)
=> 엔진을 수정하지 않고 사용하면 좋다는 소문도( 영화 프리프로 덕션이나,,군사 시뮬 같은거?)
=> 신기술을 제일 빨리 넣는 듯.
2010년 9월 10일 금요일
PeekMessage HWND...
PeekMessage 에 기본 윈도우 핸들을 넘길때와 NULL 을 넘길때의 작동이 완전히 다르군요.
전 NULL 이면 내부적으로 윈도우 핸들을 찾아서 넣어주지 않을까 싶었습니다만,
MSDN 을 살펴보니-- NULL 일 경우에는 스레드가 어쩌고 저쩌고 합니다.
IME 메시지가 안와서 반나적을 헤매었는데, 저런 함정이 있었군요.
그러고보면 항상 NULL 을 자연스럽게 넣어주어서 생각지 못했네요.
요즘은 클래스 인터페이스 구성에 대해 많은 걸 배우고 있습니다.
범용 적인 인터페이스에,
실수할 가능성을 줄여주는(함수인자라든가.
그 어느 책에서 본 실수하기 힘들게 만들어주는 인터페이스 구성 하는 것을 배우고 있습니다.
그리고 이제서야 조금씩 디퍼드렌더링에 대해서 배우고 공부하고 있습니다.
서포트 해야 되니까요. 알파나 앤티앨리어싱 문제가 왜 생기는 지 이제서야 조금씩 이해하고 있습니다.(뭐 핑계를 대자면 온라인게임에선 별로 안 썼는데,,,---공부해야지..훔냐랑)
아무튼 그리하여 점점 의도하진 않았지만 제너럴 프로그래머가 되어가고 있습니다.
정말 하고 싶은 게 생기면 제대로 파서 전문분야는 하나쯤 있어야 되려나요.ㅎ
그래도 제게 제일 재미난 분야는
게임엔진과 게임 로직 사이의 징검다리 같은 역할 입니다.
인터페이스를 구성하고 게임에서 실제 사용할 수 있도록 해주는 이런쪽이요.
그런 의미에서 서포트 엔지니어를 택했습니다. 그리고 재미있네요^^
전 NULL 이면 내부적으로 윈도우 핸들을 찾아서 넣어주지 않을까 싶었습니다만,
MSDN 을 살펴보니-- NULL 일 경우에는 스레드가 어쩌고 저쩌고 합니다.
IME 메시지가 안와서 반나적을 헤매었는데, 저런 함정이 있었군요.
그러고보면 항상 NULL 을 자연스럽게 넣어주어서 생각지 못했네요.
요즘은 클래스 인터페이스 구성에 대해 많은 걸 배우고 있습니다.
범용 적인 인터페이스에,
실수할 가능성을 줄여주는(함수인자라든가.
그 어느 책에서 본 실수하기 힘들게 만들어주는 인터페이스 구성 하는 것을 배우고 있습니다.
그리고 이제서야 조금씩 디퍼드렌더링에 대해서 배우고 공부하고 있습니다.
서포트 해야 되니까요. 알파나 앤티앨리어싱 문제가 왜 생기는 지 이제서야 조금씩 이해하고 있습니다.(뭐 핑계를 대자면 온라인게임에선 별로 안 썼는데,,,---공부해야지..훔냐랑)
아무튼 그리하여 점점 의도하진 않았지만 제너럴 프로그래머가 되어가고 있습니다.
정말 하고 싶은 게 생기면 제대로 파서 전문분야는 하나쯤 있어야 되려나요.ㅎ
그래도 제게 제일 재미난 분야는
게임엔진과 게임 로직 사이의 징검다리 같은 역할 입니다.
인터페이스를 구성하고 게임에서 실제 사용할 수 있도록 해주는 이런쪽이요.
그런 의미에서 서포트 엔지니어를 택했습니다. 그리고 재미있네요^^
다시 블로그 시작
오랜 시간 동안 블로그를 방치해두었었는데,
우중충한 글들도 좀 치워버리고 새롭게 작성해보려고 합니다.
요즘 게임엔진회사에서 열심히 이것저것 엔진 서포트 작업을 하고 있습니다.
주로 하는 일은
문제가 생기면 개발사와 같이 고민하고 디버깅 하는 것과,
많은 회사에서 요청이 들어온 기능을 개발하는 일입니다.
지금까지는 한국에서 온 제가 잘 할수 있는,
IME 나 폰트 관련 작업이 가능하도록 엔진 내부 쪽을 수정하는 일이었네요.
그리고 PS3, XBOX360, WII 와 관련된 콘솔 디버깅 기법을 배웠습니다.
기계치인 저에게 이런 것들은 좀 어지럽더군요.
해외에서 일하면 좋은 것은,
말단이 제가 의견을 낼 수 있다는 것입니다.
물론 아직 파악하지 못한 것이 많아서 의견이 많진 않습니다만,
한국쪽에 관련 된 것이라든가 하는 것에 대해서는 이것저것 얘기도 하고
같이 고민도 하고 있습니다.
좋은 것은 의견이 나오면 왠만하면 귀 기울여 듣고 같이 의논해봅니다.
뭐 힘든 점은 아직까지 당연히 영어 문제입니다.
특정 단어를 못 알아들어서 아는 것인데도 모르는,
가끔 아주 기초적인걸 모른다고 잘못 말해서 무시를 당하기도 합니다. 흑흑;
뭐 영어 공부 열심히 하는 수밖에요.ㅎㅎ
가끔 갈굼도 당하고, 실수도 하곤 합니다만,
저한테는 한국에서 일할 때보다 훨씬 마음편하고 열심히 하게 되는 거 같습니다.
우중충한 글들도 좀 치워버리고 새롭게 작성해보려고 합니다.
요즘 게임엔진회사에서 열심히 이것저것 엔진 서포트 작업을 하고 있습니다.
주로 하는 일은
문제가 생기면 개발사와 같이 고민하고 디버깅 하는 것과,
많은 회사에서 요청이 들어온 기능을 개발하는 일입니다.
지금까지는 한국에서 온 제가 잘 할수 있는,
IME 나 폰트 관련 작업이 가능하도록 엔진 내부 쪽을 수정하는 일이었네요.
그리고 PS3, XBOX360, WII 와 관련된 콘솔 디버깅 기법을 배웠습니다.
기계치인 저에게 이런 것들은 좀 어지럽더군요.
해외에서 일하면 좋은 것은,
말단이 제가 의견을 낼 수 있다는 것입니다.
물론 아직 파악하지 못한 것이 많아서 의견이 많진 않습니다만,
한국쪽에 관련 된 것이라든가 하는 것에 대해서는 이것저것 얘기도 하고
같이 고민도 하고 있습니다.
좋은 것은 의견이 나오면 왠만하면 귀 기울여 듣고 같이 의논해봅니다.
뭐 힘든 점은 아직까지 당연히 영어 문제입니다.
특정 단어를 못 알아들어서 아는 것인데도 모르는,
가끔 아주 기초적인걸 모른다고 잘못 말해서 무시를 당하기도 합니다. 흑흑;
뭐 영어 공부 열심히 하는 수밖에요.ㅎㅎ
가끔 갈굼도 당하고, 실수도 하곤 합니다만,
저한테는 한국에서 일할 때보다 훨씬 마음편하고 열심히 하게 되는 거 같습니다.
피드 구독하기:
덧글 (Atom)