메뉴 건너뛰기

창조도시 기록보관소

언어 왜 C언어를 해야하나요? -2

2006.09.17 08:30

웁피 조회 수:657 추천:7

안녕하세요~ ^^


제가 주말엔 피씨방에서 야간 알바를 하기때문에


시간이 많아서 아마 강좌를 올리게 된다면 주말 타임을 이용하게 될겁니다


기대하시는 분이 많이실지는 모르겠지만 한분이시라도 도움이 될 수 있다면


감사히 생각하고 열심히 올려보겠습니다 ^^


아 참고로 msn 아이디는 oopdual@hotmail.com 입니다~


 


_______________________________________________________________________________


 


왜 C언어를 해야하나요? -1을 쭉 읽어보셨다고 해도


 


전혀 아직 C언어를 해서 어떻게 게임을 만들 수 있을까? 라는 생각만 드실겁니다


 


C언어를 열심히 공부하셔서 C언어 책을 1권에서 2권 정도 봤다


 


라고 하는 사람들이 되어도 게임프로그래밍으로의 길과 전혀 가깝게 느껴지지 않을 것입니다.


 


그정도 수준이 되어도 콘솔 화면에(도스 화면 같은거라고 생각하시면 되요) 무언가를 뿌려주는


 


것 밖엔 안되거든요. 그러니까 뭔가 어떠한 문제가 있을때 그 문제를 컴퓨터의 언어로


 


좀 더 자연스럽게 바꿀 수 있는 것 뿐입니다.


 


뭐 사실 C언어에 실력이 늘어가면 늘어갈 수록 좀 더 가까운 프로그램을 짤 수 있는건


 


사실입니다. 가령 전화번호부 프로그램이라든지 영어사전을 만드는 프로그램이라든지


 


현재 우리가 접할 수 있는 주변의 것들을 구현하기 쉬워진다는 말입니다.


 


그렇지만 여전히 콘솔환경에서 벗어날 수가 없습니다.


 


제 생각에 게임 프로그래밍을 하는 사람들이 갈 수 있는 환경은 크게 두가지에서 세가지로


 


보입니다.


 


첫번째 비디오 게임 시장.


 


두번째 컴퓨터 게임 시장


 


세번째 임베디드(모바일 게임 등) 게임 시장


 


물론 그 세가지만 있는것은 아니겠죠. 제가 아는바로 크게 분류를 봤을때 그렇다는 겁니다.


 


제가 여기서 주안점을 맞출 곳은 컴퓨터 게임 시장입니다.


 


우리가 현재 컴퓨터 게임을 만들어서 출시를 한다면 그 운영체제 환경은 어디일까요?


 


컴퓨터 게임 시장의 경우 거의 대다수가 윈도우즈 환경이 아닐까 생각합니다.


 


그렇지만 우리가 C언어를 배우면서 무언가를 처리하는 곳은?


 


콘솔환경인거죠


 


결국 우리는 윈도우즈 프로그래밍이라는 것을 배워야 하는 것입니다.


 


그럼 먼저 대체 윈도우즈 프로그래밍이란게 무엇인가를 생각해봅시다.


 


간단히 생각해봤을때 윈도우즈 프로그래밍이라고 하면 윈도우즈 환경에서의


 


프로그래밍을 뜻하게 될 것입니다.


 


그럼 대체 윈도우즈 환경에서의 프로그래밍은 우리가 콘솔환경에서의 프로그래밍과


 


무엇이 다를까요?


 


간단히 예를 들어보겠습니다.


 


#include<stdio.h>


void main()
{


  printf("Hello World");


}
라는 프로그램은 콘솔환경에 간단한 Hello world라는 문자열을 출력하는 프로그램이 되겠죠


 


제가 여기서 하고 싶은 말은


 


printf라는 함수 입니다.


 


이 printf라는 함수는 기능이 콘솔 환경의 표준 입출력 장치인 모니터에


 


어떠한 문자열을 출력하는 함수입니다.


 


감이 조금은 오셨습니까?(이런 설명을 듣고 감이 올까? -_-)


 


그러니까 제가 하고 싶은 말은 윈도우즈 화면에 어떠한 문자열을 출력하기 위해선


 


윈도우즈 환경에 출력할 수 있는 출력 함수를 써야 한다는 겁니다.


 


그래서 Windows API라는 것이 존재합니다.


 


윈도우즈 환경에서 어떠한 일을 처리하기 위해 존재하는 함수들을 Microsoft사가


 


제공한 것인데요


 


이것을 통해 윈도우즈 화면에 출력을 할 수 있게됩니다.


 


그리고 또 windows 프로그래밍은 메시지 구동방식입니다.


 


가령 C언어에서는 프로그래머가 정해준 방식대로 사용자에게 입력을 받고


 


출력을 해주는 식으로 순서가 정해져 있다고 볼 수 있습니다.


 


하지만 윈도우즈 프로그래밍에서는 이 메시지(이벤트)의 순서에 따라


 


프로그래밍이 진행되게 됩니다.


 


가령 게임이라고 한다면 가만히 아무 메시지(이벤트)가 발생하지 않을때는


 


화면에 그래픽을 뿌려주는 것 말고는 아무것도 하지를 않습니다.


 


그러다가 키보드에서 왼쪽으로 이동하는 키를 눌렀을때


 


키보드 다운이라는 메시지가 프로그램에 날라가면서 캐릭터가 왼쪽으로


 


움직이게 되는 것입니다.


 


자 간단히 말하면 바로 이런게 윈도우즈 프로그래밍 방식입니다.


 


사실 윈도우즈 프로그래밍을 이렇게 간단히 설명해서는 안되는데요


 


사실은 윈도우즈 프로그래밍을 배우기 전에 윈도우즈창을 화면에 띄우고


 


하는 식의 것들을 먼저 배워야 하지만


 


제 강의는 그냥 단순히 C언어와 게임프로그래밍과의 연관성 등을 알아보는게


 


목적이므로(잘도 둘러대는군 -_-;) 나중에 윈도우즈 프로그래밍을 공부하시면서


 


직접 알아보시는게 더 좋을거라 생각해서 중간 중간 부분들을 과감히


 


싹둑싹둑 잘랐답니다 =_=;


 


윈도우즈 프로그래밍이란게 대충 뭔지는 알았는데


 


그럼 왜 처음부터 윈도우즈 프로그래밍을 배우지 콘솔환경의 프로그래밍 방식을


 


배우냐? 윈도우즈 프로그래밍은 C언어랑 관계가 있느냐?


 


등의 생각들이 머리를 지배하실 겁니다(나만 그랬었나? -_-)


 


간단하게 말하면 콘솔환경에서의 C언어 방식의 프로그래밍을 잘 하시게 되면


 


윈도우즈 프로그래밍방식의 몇가지만 익히시면 그대로 프로그램 만들 수 있게됩니다.


 


콘솔 환경에서 전화번호부를 C로 짤 수 있으셨다면 윈도우즈 프로그래밍의


 


메시지 구동방식 및 윈도우즈 화면을 띄우는 방법


 


윈도우즈 환경에서의 함수들(이외에도 상당히 많이 있긴 하군요


 


DC 뭐 그런 것들 =_=)


 


을 배우시게 되면 이전 콘솔환경에서의 프로그램을 윈도우즈 환경에서


 


띄우실 수 있게 되시는 겁니다.


 


뭐 하지만 윈도우즈 프로그래밍을 다 배우셨다고 해도


 


게임을 또 만들 수 있는 건 아닙니다.(만들 수는 있지만 느립니다;;)


 


물론 그 윈도우즈 프로그래밍에 달관하시게 되어 그 구조를 자신이 조금


 


변형시키고 함수도 변형시키고 하시면 얼마든지 빠르게 만드실 수 있지만


 


그리고 나중에 정말 전문가가 되셨다면 그렇게 직접 엔진을 만드셔야 하지만


 


대부분 Direct X 또는 Open gl이라는 방식을 이용하게 됩니다.


 


윈도우즈 프로그래밍(API 및 MFC) 환경은 게임 프로그래밍 방식에 맞지 않게


 


무겁게 설계되었기 때문입니다.


 


그렇기에 C언어를 공부하시고 windows 프로그래밍을 공부하시면서


 


direct X를 공부하시게 되면 게임 프로그래밍을 하실 수 있게 되는 것입니다~ >_<


 


강좌같은걸 처음 쓰다 보니 뭔가 최대한 이해하기 쉽고 알아듣기 쉽게 하기 위해


 


전문적인 내용을 빼고 쓰려고 노력했는데


 


전문적인 내용도 은근히 많이 들어있고;; 전문적인 내용을 빼서


 


빈약해 보이는 부분도 있고 그러네요;; ㅜㅜ


 


결론적으로 말하면


 


C언어(혹은 다른 언어라도 좋습니다. 하지만 되도록 C언어 수준의 언어로)


 


를 공부하신다는 것은 게임프로그래밍의 기초를 닦는다 라는 것이라고 생각하셔도


 


물론 나중에 게임 프로그래밍을 하시려고 하신다면 요즘 추세로는


 


C++이 더 어울립니다.(객체 지향적인 설계가 필요하거든요;;)


 


하지만 C언어를 배운 사람이 C++을 배우기도 수월하기도 합니다.


 


결국 제 생각에 C언어라는 언어를 배운다는 것은 게임프로그래밍으로 가기 위해


(컴퓨터 게임 시장쪽을 말해요 ^^)


 


먼저 배워야 할 첫번째 언어가 아닐까 싶네요.


 


하지만 rpg 만들기 시리즈로 게임을 만들어보는 것은


 


미래에 게임 프로그래밍을 하실 분이시라면 상당히 도움이 된다고 생각합니다


 


시나리오, 그래픽, 게임 구성 등 rpg만들기로 만들어낸 게임도


 


게임의 요소가 분명하거든요


 


C언어는 빨리 시작하면 빨리 시작할 수록 좋습니다.


 


프로그래밍에 대한 눈도 트이고 시야도 넓어지거든요.


 


내가 중학생때 아니 고등학생때라도 이 C언어를 했다면 더 좋았을 텐데


 


라는 생각을 하면서 이 강좌를 쓰게 된건지도 모르겠네요


 


게임 프로그래밍의 길은 참 멀고도 험하답니다~ ㅋ


 


하지만 분명히 매력 있는 직업이라는 것에 대해서는


 


단언 할 수 있을 것 같네요 ^^


 


뭐 이렇게 대충 강좌를 마치겠습니다~


 


정말 제가 써놓고 읽어봐도 허접하네요;; =_=


 


이후 혹시 C언어 강좌를 원하신다면


 


천천히 하나둘 씩 올려 드리긴 하겠습니다~


 


오늘도 허접한 강좌 읽으시느라 수고하셨습니다(__)

번호 제목 글쓴이 날짜 조회 수
329 획기적인 게임 제작 제1편(게임의 전체적인 분위기의 선택) [4] Santiago 2006.12.04 492
328 말풍선 대화창 [9] 그노에즈 2006.12.04 664
327 리듬액션 게임 아이디어. [12] file 켄타 2006.11.23 1481
326 액알 맵 1분 안에 만드는방법 [21] 천룡수 2006.11.12 1363
325 액션 알피지 노가다 줄이는 방법 [7] 다크세이버™ 2006.11.08 755
324 BGM 페이드에 관한 팁 [2] 『덩키동크』 2006.10.29 467
323 [자작]마름모형 거리 재기 [4] A. 미스릴 2006.10.22 801
322 스토리아이디어 [4] B HERO 2006.10.22 428
321 심심해서 생각해본 rpg2000툴로 전략시뮬(실시간) 만들기 [5] 감자는칩이다 2006.10.21 897
320 캐릭터 행동에 대한 팁? [6] mk_brand_ 2006.10.12 462
319 게임 구상을 해봤는데....이 게시판에 성격에 맞나? [5] mk_brand_ 2006.10.12 431
318 Love One 7차 체험판 [6] 자유의지 2006.10.10 1210
317 약간의 아이디어.. [2] 닉네임군 2006.10.08 509
316 게이지 시스템 [액알의 게이지 같은 거 아니에요. ] [4] S.단이한 2006.10.07 749
315 선행처리기 지시어. (#???) [3] 연지 2006.09.30 302
314 게임자체가 히든피스!! [10] [S's-S] 2006.09.28 762
313 그냥 심심해서 생각해낸 플레이어 낚기 이벤트인데요... [11] 네모상자 2006.09.24 491
312 인터넷 프로그래밍 강의 시간에 실습했던 것. 아란 2006.09.23 309
» 왜 C언어를 해야하나요? -2 [5] 웁피 2006.09.17 657
310 왜 C언어를 해야하나요? -1 [12] 웁피 2006.09.16 670