E D R S I H C RSS
ID
Password
Join
한 점도 나무랄 데가 없는 말(馬)을 얻고 싶은 자는 말없이 지내거라! -포르투갈 속담

 * 게임을 하나라도 완성해본 분(설령 예제라 하더라도)은 읽으실 필요가 없습니다. :)
  • 수업때 들었던 추상적인(?) 질문들을 모아봤습니다.

Contents

1 게임프로그래밍을 처음 하려하는데, 꼭 C/C++을 배워야하나요?
2 좀처럼 감이 안잡힙니다. 예제를 고쳐봐도 느는 것 같지 않아요. 제가 재능이 없는건가요?
3 directx와 direct3D만 익히면 게임을 만들수 있나요?
4 생각보다 어렵습니다. 원래 게임제작이 이렇게 맨땅에 헤딩인가요?
5 삼각함수 같은거 정말 싫습니다. 거리 계산같은 간단한 부분에서도 튀어나와요. 이런거 모두 알아야되는 겁니까?
6 강사님이 가장 중요한 게임 프로그래밍에서의 조건들을 순위를 매긴다면?

1 게임프로그래밍을 처음 하려하는데, 꼭 C/C++을 배워야하나요? #

꼭 그렇지는 않습니다. 유명한 온라인 게임중에는 상용엔진을 통한 스크립트로 만들어진 경우도 있고 java를 사용하여 제작되는 경우까지 있습니다. 시스템 진화속도가 상당히 빠르므로(기가CPU가 이미 일반화되었죠) 프로그램상의 효율이 어느정도 시스템의 성능으로 덮어지는 상황까지도 일어나고 있습니다. 하지만, 어셈블리어외에 현존하는 가장 하위수준의 언어는 C이므로 처음에 다소 어렵더라도 익혀두는 것이 (상황에 따라 다른 언어로 바꾼다 하더라도) 상당히 빠르게 흘러가는 게임개발기술진화속도에 적응할 수 있는 방법이라고 생각합니다. 그 이유는 대부분의 언어(심지어 java조차도)들 역시 C 언어로 만들어져있고, 현존하는 거의 대부분의 시스템(PS2와 같은 게임기까지!)에서 사용할 수 있는 언어이기 때문입니다.

2 좀처럼 감이 안잡힙니다. 예제를 고쳐봐도 느는 것 같지 않아요. 제가 재능이 없는건가요? #

(천재적인 머리를 가진 극소수를 제외하고)개인적으로 프로그래밍은 오기에 가까운 끈기로 하는 것이지, 감으로 하는거라고 생각되지는 않습니다. 제가 학원강의때 가급적 알려드리려하는 것도 사전식의 함수 암기가 아니라 '이런 흐름으로 프로그램이 실행되는구나'라는 것을 보여드리는 것이 대부분입니다. 객체지향이니, 절차적이니 하는 얘기도 모두 이런 스타일로 짜면 왠만한 경우에 깔끔하게 작성할수 있지롱~에 대한 내용인 겁니다. 강사인 저도 C라는 언어에 익숙할 때까지 몇년이 걸렸으므로 한두달 수업으로 포기하시기에는 조금 성급한거 아닌가 생각됩니다. (하긴 전 좀 뭐든지 익히는데 시간이 걸리는 스타일이라...ㅜ_ㅜ 그래서 수업때 빨리빨리 알아채고 성장하시는 분들을 보면 섬뜩섬뜩하답니다 ^_^) 뭐... 정답은 (어떤 일이든 마찬가지겠지만) 하다보면 손에 익어버린다고 해야하나요... 그렇게 생각하시고 느긋하게 가시기 바랍니다.

3 directx와 direct3D만 익히면 게임을 만들수 있나요? #

단적으로 말씀드리면 그렇지 않습니다. directx 라이브러리는 빠른 입력제어와 빠른 화면 출력기능을 제공할 뿐입니다. 당연히 게임에서 효과나 비쥬얼한 요소는 매우 중요하므로 이 부분이 중요하지 않다는 것은 아닙니다. 단지 전부는 아니라는 거죠. 의외로 (개인적인 경험에서 비추어보면) 게임에서 제작이 가장 어려운 부분은 기본언어(예를 들면 현재 개발에 사용하는 언어)를 사용한 무형의 부분을 만들어내는 것이라 볼 수 있습니다. 예를 들면, NPC의 인공지능 부분이라든가, 화면 비행기와 총알의 충돌체크, 슈팅게임에서의 날아오는 총알 패턴, 적움직임등등.. 이런 부분까지도 directx에서 제공하고 있지는 않지요. 즉, 기획단계의 게임 프로토타입을 만드는데 있어서는 이런 입출력부분에 목을 맬필요는 없다거죠. API나 콘솔로 게임의 기본틀을 만들고 재미있겠다할 때 그런 효과나 세부사항을 구현하는 것도 좋습니다. [http]nethack이라는 게임을 보면 명령행만으로도 어떻게 게임을 이렇게 만들수 있는가를 볼 수있는 좋은 계기가 되리라 봅니다.

4 생각보다 어렵습니다. 원래 게임제작이 이렇게 맨땅에 헤딩인가요? #

보통 대작게임 만들려고 처음부터 아둥대다 포기하게 되는데, 개인적으로는 MAME 에뮬게임조차도 대작으로 느껴질 때가 많습니다. 처음 게임제작에 입문하시는 분들이 가장 쉽게 겪는 혼란이 게이머로서의 입장과 게임제작자의 입장의 차이를 모르는 겁니다. 영화의 예를 들어도 영화를 보고 그 연기나 시나리오에 대해 평가를 하는 것과, 그런 재미있는 영화를 "만드는 것"은 엄연한 입장차가 있는 겁니다. 물론 좋은 영화를 만들기 위해서 영화를 많이 보는 것도 중요하지만, 그외의 문학이나 촬영기술, 역사와 같은 공부도 수반되어야하는 걸 겁니다. 누구의 평가에도 게의치않는 그냥 나만의 게임을 만들거라면 상관없지만, 상업적 수준의 게임을 만드실려면 결심을 단단히 하고 가시는 것이 좋습니다. :) (저역시 아직 부족하다고 생각되기에 이런 말씀을 드리는 것이니 잘난체라고는 생각하지 말아주시길...)

5 삼각함수 같은거 정말 싫습니다. 거리 계산같은 간단한 부분에서도 튀어나와요. 이런거 모두 알아야되는 겁니까? #

솔직히 아닙니다. 인터넷을 조금 서핑해보시면 왠만한 소스는 거의 구하실수 있습니다. 단지 삼각함수같은 프로그래밍과 다른 분야의 지식은 이런 코드의 원리를 이해하는 것에 도움을 주겠죠. 양팔저울 같은 겁니다. 어떻게 돌아가는지 모르고 쓰거나, 그 원리를 알고 쓰거나... 그 노력과 댓가의 차이는 쉽게 짐작하실수 있을 거라 봅니다. 고수와 하수의 차이는 원리를 기초로 코드를 만들 수 있느냐, 그냥 코드를 외우거나 인용하여 사용하느냐... 차이라고 볼 수 있겠죠. 고수는 인터넷에서 소스를 구해도 "아.. 이런식으로 짤수도 있구나"정도로만 받아들인답니다. 그 느낌이 중요하겠죠. (저요? 저는 많이 배껴쓰는 데가가 만들어져있는 엔진응용하는 것도 좋아해서... 중수정도로 자신을 평가하고 있답니다. 이제 요근래 좀 만지작거리는 느낌이 나는 것 같아요.)

6 강사님이 가장 중요한 게임 프로그래밍에서의 조건들을 순위를 매긴다면? #

순수 제 주관적이니 참고만 하시길... (다른 게임 프로그래머들이 돌던질수도... :( )
  1. 흐름파악(예 : 어디에 출력부분을 넣고 어디에서 입력처리를 하고 시간을 어디서 재지?) -> 이부분은 C위주이냐, C++위주이냐에 따라 큰 차이를 보일수 있습니다. 즉, 언어마다 달라집니다.
  2. 기본언어문법(예 : 포인터, 구조체, 연산자 오버로딩, 동적 바인딩등등)
  3. 제작툴사용법 및 디버깅방법(예 : printf(), OutputDebugString()과 같은 간단 출력 함수의 활용)
  4. 필수 라이브러리 사용법 -> directx, opengl등등
  5. 라이브러리 know-where -> 라이브러리는 사용법보다는 어떤 용도의 라이브러리들이 있는지를 파악하는 것이 중요.
  6. 구현원리(예 : ray-plane 충돌체크 계산법)

아래로 갈수록 덜 중요한 것이라 생각합니다. 보통 인터넷에서 고수라고 하시는 분들은 4번을 논의하는 경우가 많습니다. 하지만 뭐니뭐니해도 아무리 간단한 게임이라도 완성시키는 것이 매우매우 중요합니다. 보통 게임을 완성시키지 못하는 분들의 공통적인 원인은 지식이나 실력이 아니라 에게, 이게 뭐야하는 자기비하에 빠지는 경우가 90%이니까요. 이걸 극복하는 건 0순위라고 볼 수 있지요.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-10-28 12:42:52
Processing time 0.3548 sec