2021년 1월 16일 토요일

맥 부팅 소리 제거

MacOS Big Sur 이전

응용프로그램 > 터미널 실행

끄기 : sudo nvram SystemAudioVolume="%00"

켜기 : sudo nvram -d SystemAudioVolume

비밀번호 입력.

아무일도 안 일어난다. 그냥 맥이 켜질때 조용하다.

 

MacOS Big Sur 이전

아래 그림 따라 가서, 마지막 화면에서 [시작 시 사운드 재생] 체크를 제거 하면 된다.



 

 

선언 vs 정의 2

선언 vs 정의 1 

내용을 이어간다.

 

A.h

1
2
3
4
#pragma once
 
extern int number;
 
cs

#pragma once 라는 매크로가 보일것인데, 중복으로 include되는 것을 막는 매크로이다.

아래에 있는것과 동일하다. 간단하게 설명하면

_A가 정의되어 있으면, 포함시키지 않는다.

_A가 정의되어 있지 않으면, _A를 정의하고 해당 파일 내용을 포함시킨다.

1
2
3
4
5
6
7
#ifndef _A
#define _A
 
extern int number;
 
#endif// _A end
 
cs

A.cpp

1
2
3
4
#include "A.h"
 
int number = 1004;
 
cs

Main.cpp

1
2
3
4
5
6
7
8
9
#include "A.h"
 
int main()
{
    printf("number = %d\n", number);
    return 0;
}
 
cs

A.h파일을 포함했으니, 어딘가에 number라는 변수가 어딘가에 선언되었다고 컴파일러에게 알렸으며,

실제로 실행을 해보면 number = 1004 라고 잘 출력 될것이다.

 

이번에는

A.cpp 를 이렇게 수정해보자.

1
2
3
4
#include "A.h"
 
//int number = 1004;
 
cs

컴파일러가 A.cpp 와 Main.cpp 를 각각 컴파일을 성공해서 오브젝트 파일인 A.obj, Main.obj를 성공적으로 만들었을것이다. 보통 여기서 일어나는 문제들은 대부분 문법상 문제(syntax error)일 것이다.

컴파일 결과물인 A.obj, Main.obj를 재료로 실행파일을 만들려고 할때,(링크 과정이라 한다.)

어딘가에 존재해야 할 number라는 변수가 없으니 실행파일을 만드는데 실패하게 되고 에러를 알려준다.

이것을 링크에러~라고 한다.

컴파일과 링크를 합쳐서 부르는 말을 빌드라고 한다.

 

그럼...

B.cpp 를 작성하자.

1
2
3
 
int number = 5004;
 
cs

빌드를 해보면 성공할 것이고,

실행을 해보면 number = 5004 라고 잘 출력 될것이다.

extern 으로 선언된것은 어디에 있든 컴파일하는 모든 파일중에 존재하기만 하면 된다.

확실히 감 잡았을거라 생각한다.

 

그럼 이번에는

A.cpp 수정

1
2
3
4
#include "A.h"
 
static int number = 1004;
 
cs

B.cpp 수정

1
2
3
4
#include "A.h"
 
int number = 5004;
 
cs

빌드 후, 실행하면?

number = 5004 라고 출력한다.

A.cpp와 B.cpp둘다 number라는 변수를 선언을 했지만, 용도가 다르다.

A.cpp에서 선언한것은 static을 붙여서 A.cpp파일내에서만 사용했고

B.cpp에 선언한 number는 B.cpp 내부 외부에서 모두 사용할수 있도록 선언한것이다.

 

static 키워드는 해당 외부에 알려지기를 막는 역할을 한다. 그리고 같은 변수명 중복에러를 막는데도 사용된다.

static과 extern은 이 외에도 여러 용도가 있으니 따로 빼서 익히기를 추천한다.

 

정의 vs 선언 1

Java, C# 고급 언어를 먼저 사용하고 C, C++을 나중에 시작했다면, 컴파일 에러가 많이 힘들게 할 것이다.

어쩌면 편한 언어를 사용해왔기 때문에 오히려 처음 프로그래밍 언어를 배우는 사람보다 더 힘들게 하는것일 수도 있다.

 

고급 언어와 같은 부류처럼 *.c, *.cpp 파일만 존재하면 좋을텐데, 불행히도 *.h, *.hpp 파일들이 느닷없이 등장한다.

사실 이게 가장 큰 차이점이기도 하고, 이게 C, C++ 언어를 배우는데 걸림돌 중에 하나가 아닐까 싶다.

특히, 고급 언어를 능숙 능란하게 다루는 개발자에게는 더욱 정 떨어지게 만든다. ㅎㅎ

 

쉽게 설명된 곳이 없거나, 혹은 찾기 어려웠을것이다.

근데, 사실 한가지만 알면 모든 의문의 실마리 풀려 버릴것이다.

그 키워드는 놀랍게도 정의, 선언에 모든 것이 있다.

 

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
    int a = 0;// 선언
 
    printf("a = %d\n", a);
 
    return 0;
}
 
cs

 

선언을 보자. int라는 타입의 a라는 변수를 0이라는 값으로 초기화 했다.

1) 메모리 종류 중 하나인 스택에 4바이트를 확보한다.

   => 흔히 이말을 "할당한다"라고 표현한다. int 타입은 4바이트

2) 방금 할당한 스택 메모리를. a라는 이름으로 된 변수가 int타입으로 사용할 수 있게 되었다.

   => a의 주소값이 스택 메모리의 시작 주소와 같다.

3) 방금 명명한 a라는 변수에 0을 대입한다.

   => 흔히 이 부분을 "초기화한다"라고 한다. 만약 int a; 였더라면 여기가 생략된다.

5 line이 1), 2), 3)이 순차적으로 일어난다고 이해하면 좋다.

위의 코드처럼 선언이란 것이 사실 메모리를 할당한다는 말을 포함하고 있다.

 

 

선언이 다른 위치에 있는 코드를 보자.

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
int main()
{
    printf("a = %d\n", a);
 
    return 0;
}
 
int a = 0;// 선언
 
cs

C, C++은 절차형 언어다.

컴파일러가 4 line 까지 읽어들인 상태에서,

5 line을 읽으면 처음 보는 변수 a를 보고 컴파일 에러를 토해낸다.

10 line에 있는 선언 부분을 알아 주면 좋을텐데, 기계들은 인간미가 없다 ㅋ

(Java에서 main이 멤버 메쏘드이고 a가 멤버변수라면,

line의 순서에 상관없이 괜찮다고 할 것이다. 허나 그건 C++클래스에서도 똑같다. 차이없다.

다만, 고급 언어에서는 전역 변수 자체가 존재 하질 않는다걸 명심해라.

알고 보면 고급언어가 제약이 많고 더 불편하다고 말하고 싶다.)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
extern int a;// 정의 1
int main()
{
    extern int a;// 정의 2
    printf("a = %d\n", a);
 
    return 0;
}
 
int a = 0;// 선언
 
cs

위에 처럼 3, 6 line 둘다 있거나, 둘 중 하나만 있더라도 해당 컴파일 에러 문제가 해결된다.

extern 키워드가 변수 타입 앞에 붙게 된다면,

"이 타입의 변수는 코드 어딘가에 선언되어 있어."

라고 컴파일러에게 알려줄 뿐이다. 할당을 하는 선언이 아니니 새로운 변수를 만드는게 아니라는걸 알아야 한다.

당연히 아래 처럼 하더라 전혀 문제가 되지 않는다. ㅎㅎ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
extern int a;// 정의 1
extern int a;// 정의 2
extern int a;// 정의 3
extern int a;// 정의 4
extern int a;// 정의 5
int main()
{
    printf("a = %d\n", a);
 
    return 0;
}
 
int a = 0;// 선언
 
cs

감이 왔을 것이다.

int a;           => int 자료형 만큼을 할당하고 a라고 명명함.

extern int a;  => 컴파일러에게 알려만 줌.

 

지금까지는 자료형의 변수에 대해서만 다뤘다.

함수도 사용법이 거의 동일하지만, 약간 다르니까 주의깊게 살펴보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    printf("number() = %d\n", number());
 
    return 0;
}
 
int number()
{
    return 1004;
}
 
cs

10 line에 number()함수가 구현되어 있는데,

5 line에서 쓰려고 시도하려니 당연히 컴파일러가 에러를 낸다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int number();// 정의1
extern int number();// 정의2
 
int main()
{
    int number();// 정의3
    extern int number();// 정의4
    printf("number() = %d\n", number());
 
    return 0;
}
 
// 선언
int number()
{
    return 1004;
}
 
cs

정의1~4 어디든 상관없이, 1개이상 정의되어 컴파일러에게 알려주면 에러가 고쳐진다.

자~ 그럼 다른점만 살펴보자.

함수는 중괄호{}가 있으면 선언이라고 하고, 중괄호가 없으면 정의다.

따라서 extern은 생략이 가능하고 명시해서 표시해도 된다.

 

그럼 여기까지 컴파일 에러라는것을 살펴보았다.

링크 에러라는것도 존재한다. 여러 파일로 나눴을때 복합적인 상황을 연출과 함께 같이 살펴보자.

아래 링크로...

정의 vs 선언 2

 

2021년 1월 15일 금요일

개발자, 무엇을 준비 할까?

 

2005년 10월. 부산 영도 남항동에 있는 부산멀티미디어 지원센터 SOMAT.

어필이라는 게임 회사를 설립. 같은 해 8월에 결혼. 자금도 없이 시작했는데, 그때 난 참 용감했다.


회사를 다닐때 PC게임(다이렉트X), 피쳐폰(국내 skvm, gvm, brew, midp, wipi 해외 docomo java)을 거쳐

창업 후, 스마트폰(iOS, Android), 스팀, 에픽 스토어에서의 PC게임.


2001년 겨울부터 2021년 현재까지 간단히 읊은 개발 플랫폼만 하더라도 상당히 다양하다.

프로그래머가 새로 생겨나는 플랫폼별 대비? 대응? 하는 개발 준비 시간이 얼마나 걸릴까?


기본에 충실한 개발자라면, 1주일? 많게는 1달이내일거라 생각된다.

제공되는 기술문서를 참고하고 API를 보며 바로 개발 진행 할 수 있어야 할것이다.

학생이거나 신입의 경우때야 시중에 출간된 책을 보거나 유투브, 블로그 등 검색을 참고하겠지만,

경력이 일정 이상이라면 그런것보다 SDK에 포함되어 제공되는 문서들이 최고의 참고서가 되어야 할것이다.


그런 개발자가 되려면, 무얼 준비해야 할까?

딱히 준비랄건 없다. 그냥 개발자가 되면 된다. 진짜 개발자 말이다.


2019년에 첫 수업을 시작으로, 2020년에 프로그래밍 강의가 조금 익숙해진것 같다.

2021년에 강의 시간 운영만 잘 한다면, 학생들에게 필요한 내용을 다 할수 있을것 같다.

첨부한 그림은 부산콘텐츠아카데미에서 진행하는 2021년 게임아카데미 프로그래밍  커리큘럼이다.

취업 준비 중이거나 아직 재학생이라면 참고가 되었으면 좋겠다.

맥북프로 2015 mid 15inch SSD용량 업그레이드 2

 맥북프로 2015 mid 15inch SSD용량 업그레이드 1

이어간다.


드디어 주문한 것들이 왔다. 바로 작업 시작.

970evo + A타입 아답터 꽂아서 아이맥에 장착한다. 인식을 위해서 포멧 시전.

볼륨 이름은 아무 상관없음. 그냥 내가 볼 이름으로 아무데나...어차피 복원하게 되면 복원하는 놈의 이름으로 이름이 바뀜.

포멧하고 나면 항상 물어봄. 사용 안함.

 

밑에 사이트 보고 따라 해봤음. 결론 이미지를 복제를 하는 순간, 그 볼륨은 마운트도 안되고, 복원도 안된다. 하지마라. 절대로 하지마라.

내가 해봤고 안되는 증거도 남긴다.

www.benchodroff.com/2017/02/15/backup-and-restore-boot-camp-on-a-new-mac-for-free/

하지마라.

하지마라.

하지마라.

하지마라. 혹시라도 시도한게 있어서 2일 동안 더 해보았지만 실패.

 

Mac은 복원 한번에 성공.

이제 교체하려고 보니, 배터리 안습 ㅠㅠ

젠장 모델은 정확히 맞는데, 내가 두 달 빨리 사서 리콜대상 제외.

결국 주문 69,000원 짜리 배터리. 쇼핑몰 사진에는 분명히 정품처럼 보였는데, 역시나..

이거 떼내는거 진짜 힘듬. 배터리 정식으로 교체하는 비용이 25만원인데..이해가 감.

어차피 분해한 한거 청소도 하고, 서멀구리스 빌려서 도포해 줌.

 

내 돈 25만원 들어간거..효과는 이걸로 입증. ㅋㅋ

+ 256gb에서 1tb 용량 4배 증가!!

+ 속도 6배 향상!!

+ 256gb 외장하드 생김!!

+ 배터리 교체후, 맥북프로 날씬해 짐!!

귀찮아서 계속 미뤘는데, 해보니까 나름 재미도 있었고, 작업환경이 쾌적해지니 앞으로 능률이 오를것 같음.

2021년 1월 9일 토요일

프로그래머 워밍업 2

 프로그래머 워밍업 1 

 지난 번 내용에서 이어간다.

 

얼마전 인디라에 올라 왔는데, 요즘 온, 오프라인에서 자주 접하는 글 중 하나다.

개발자를 준비하는 사람들이

엔진(유니티, 언리얼, ...),

엔진 사용 언어(유니티C#, 언리얼 C++, ...)

이 2가지를 가장 우선 순위에 둔다.

어쩌면 아주 스마트한 생각이다.

근데 또 어쩌면 쉽게 시작하고, 빨리 포기해 버릴 수도 있겠다는 조심스럽게 걱정이 된다.

 

당연히 엔진과 언어가 아주 중요한 부분임에는 부정하지는 못하지만,

그게 게임 제작에 있어서 최우선 기준이 되어서는 안된다고 말하고 싶다.

게임을 제작할때면 개발자들의 혼을 갈아 넣을 만큼 많은 노력이 들어간다.

어차피 시작을 하게 되면 오랜시간 갈고 닦는 노력을 해야 할것이니,

무엇을 준비할지 천천히 순서대로 곰곰히 잘 생각 해보고 합리적인 결과를 얻은 다음 시작하기를 바란다.

 

1. 궁극적으로 만들고 싶은 게임이 무엇인지를 알아야 한다.

본인이 게임을 좋아하지만, 왜 좋아하는지를 모른다?

게임을 좋아하는데는 분명히 이유가 있다. 좋아하게 된 계기가 무엇이었는지, 어떨때 즐겁게 플레이 했던건지, 누구와 플레이 할때 혹은 누군가의 특정한 플레이가 흥미롭게 느꼈는지, 누군가의 해설이 즐거웠는지 등을 곰곰히 생각 해보길 바란다. 그 속에 즐거움을 지배하는 무언가를 발견할 수 있을것이다.

꼭 정확히 알 필요까지는 없다. 게임 장르라도.. 그림체라도... 컨트롤이었을지도...그런 막연하게라도 알아 낼 필요가 있다.

처음 시작하는 것이라면 아무것도 없는 상태다. 한참 애정을 쏟은 다음이야 한게 아까워서 쉽게 포기하지 않지만, 처음엔 동기부여란 놈이 있으면 생각보다 도움이 될것이고, 또한 이 부분이 사실 가장 중요한 것 중 하나라는 것을 경력이 쌓일때마다 느낄것이다.

 

2. 플랫폼을 결정하자.

개발하고자 하거나 평소 관심이 많이 쏠렸던 플랫폼을 찾아내자. 데스크탑, 콘솔, 모바일, 아케이드 등등.

모두다? 그러지 말고 하나만 결정하자. 어렵다면 1순위와 2순위까지 정하자.

플랫폼 결정이 왜 중요하냐면,

환경적인 요소(해상도, 성능, 컨트롤러 등), 개발적인 요소(OS, 하드웨어 가속영향을 미치는 DirectX, Vulkan, OpenGL,  Metal 등), 마켓 요소(MS, Apple, Google, Steam, 에픽 등) 등 제공 SDK에 영향을 받아서 프로그래밍 언어가 달라질테고, 2D, 3D냐, 퍼포먼스 혹은 UI/UX에 유용함에 따라 상용/비상용 엔진 혹은 네이티브 개발이 결정할 수 있다. 그리고 같이 개발할 팀원이 상당히 영향을 미칠 것이다.

개발 기술의 방향을 제시해주는 요소라 왠만하면 특정한 플랫폼을 타겟으로 잡는것이 좋을 것이다.

 

3. 우선 순위 스펙 쌓기

1) 프로그래밍 언어 (아래 그림은 2020년 10월 프로그래밍 언어 순위다. 게임 프로그래밍 언어 순위가 아니다.)

게임프로그래밍 언어로는 Java, C/C++를 추천하며 가능하다면 C#도 해보길 바란다. 반드시 2개이상의 언어를 해보길 추천한다.

언어 공부는 문법으로 공부하지 말고, 게임을 만들면서 필요한 것들을 즉각 배워가면서 공부하기를 바란다. 책에 나오는 모든 내용 보다는 게임을 만들면서 자주 쓰게 되는 기법들을 연구하면서 언어를 익혀나가길 바란다.

절대 시험공부처럼 언어를 공부하지 마라.

 

2) 프로그래밍 수학

 

사실 프로그래밍은 수학은 뗄래야 뗄수 없는 아주 밀접한 관계다.

수학을 잘 하는 사람이 무조건 프로그래밍을 잘 하고,

수포자라서 무조건 프로그래밍을 잘 못한다는 그런 말이 아니며, 약간(?)의 도움이 될 뿐이다.

지금은 잘 못 하더라도 개발을 하면서 몰랐던 부분들을 그때 그때 학습해간다면, 그 간격은 서서히 좁혀질 것이다.

수학도 따지고 보면, 게임에서의 아름다운 표현을 하기 위한 언어에 불과하며,

사실은 그 아름다운 표현을 아느냐 모르느냐가 더 중요하다고 생각한다.(흔히들 센스가 있다 없다라고 표현들 한다)

 

엄밀하게 말하면, 프로그래밍 수학은 학교에서 배웠던 수학과는 조금(?) 다르게 보는 것이 좋다.

학교에서의 수학은 진학을 목표로, 학생들간 등급을 내기 위해 시험 공부에 가까웠다.

강압적인 분위기 였을테고, 억지로 하다 보니 흥미는 당연히 별로 없고 오히려 거부감이 많이 들었을 것이다.

게다가 제한 시간내에 많은 문제를 풀어야 했고 실수를 하면 점수로 이어지지 않는 상실감도 컷을 것이다.

 

게임에서의 수학은 직접 계산할 필요가 없으며 명령만 잘 하면 된다. 설령 그 명령이 틀렸더라도 제대로 고치면 된다.

(물론 최적화 작업시에는 퍼포먼스 향상을 위해 연산량을 줄이거나 하는 곳에서 수학적인 부분으로 머리를 싸메야 한다)

캐릭터나 발사체의 이동 및 충돌은 수학 같지 않고 흥미의 연장선처럼 느껴질테고,

광원 같은 화려한 이펙트는 내가 RGBA를 계산한다기 보다 물감을 섞는 기분이 들게 해줄 것이다.

아마 게임을 제작하다 보면, 이미 수학은 게임을 제작하는 도구가 되어 가고 있을 것이다.

따로 시간내서 억지로 수학 공부하려고 하지마라.

그냥 게임을 제작하다가 막힐때, 알고보면 수학적인 부분일 경우 그때 그 부분만 땜빵하듯이 공부하면 충분하다.

그러다 정말 갑자기 공부하고 싶을때, 그 때 해도 늦지 않다.

 

3) 자료구조, 알고리즘, CS

게임 프로그래밍을 하는데, 그게 자료구조였다둥, 그게 알고리즘이었다는 둥

그런것들이 나중에 아주 뒤늦게 컴퓨터 프로그래밍과 관련된 이론이었다는걸 알도록 준비를 해라.

굳이 특별히 하나의 특정한 과목으로 나누듯이 잘라서 공부하지 마라.

언어도 수학도 마찬가지 처럼 좋아하는 게임 만들면서 부족한 것들을 채워가며 자연스럽게 익혀라.

 

4) 포트폴리오

혈연, 학연, 지연등은 어차피 자신이 살아온 긴 과정이니 짧은 시간내에 쉽게 못 바꾼다.

하지만, 포트폴리오는 자신이 최근에

무엇을 보았으며,

그것을 위해 무얼 준비하였고,

그걸 표현하는데 얼마나 노력을 많이 했는지,

또한 그걸 달성하기 위해 어떤 각오를 담았는지,

자신을 보여주는 거울과 같은 상징물이다.

포트폴리오는 무조건 혼자하기를 추천한다.

스케일이 너무 클 경우라면 2명까지는 괜찮다. 그 이상의 인원이라면 의미가 없다.

 

4. 엔진과 언어

이제 고려해보면 된다.

 

2021년 1월 8일 금요일

프로그래머 워밍업 1

평범한 사람보다 게임 플레이가 월등히 많은 편이며,

특별한 이벤트, 피할수 없는 플래그 발생, 크리티컬한 사건 따위가 발생하지 않았는데도,

어느날 갑자기 게임 제작 욕심이 생긴 당신이라면 개발자의 피가 흐르고 있다는 증거이다!!

어쩌면 21세기의 게임업계의 한 획을 거을지도 모르는 인물일 수도 있다. 

아무리 게임 개발에 필요한 우월한 유전자를 많이 물려받은 잠재적 초능력 개발자라 하더라도,

이제 부터가 진짜 중요하다.

 

1. 검색한다.

구글님이 알려주시면 뭔가 믿음이 간다. 너무나도 익숙한 나무위키에서 잘 정리도 되어 있고, 고민하는 사람들을 위해서 작성한 글들이 생각보다 많이 보인다.

알것도 같고, 모르는것도 같다?

 

2. 공유하는 곳을 찾자.

궁금한것을 묻고 답해주는 곳은 많지만, 얻은 정보가 신뢰할 만한 곳인지도 중요하다.

1) 평소 많이 가본곳일것이다.

루리웹

2) 한국 인디 개발자들이 가장 많이 모이는 곳이다. 매년 BIC Fest도 진행되며 인디 개발자들의 활동이 아주 활발하며, 아마 여기가 주 무대에 가깝다고 할수 있을것 같다.

인디라! 인디게임개발자 모임

3) 여기도 개발자들이 가장 많이 모이는 곳 중에 하나다. 인디라와는 약간 성격이 다르다. 인디라는 창작 작품에 비중을 많이 두지만, 스마게는 상업적 기치에 비중을 더 많이 두는 곳이라 생각된다.

 

3. 전문과정을 알아봐라.

혼자서 준비하는것도 좋지만, 전문적으로 배울곳을 찾아두는것이 좋다.

아무래도 혼자하다보면 너무 험난해서.. 처음처럼 계속 이어나가기 쉽지 않다. 그리고 같은 처지에 있는 사람이 옆에 있어줘야 의쌰~의쌰 하면서 의외로 버틴다. 국비로 가능한 곳도 있고, 비용이 제법 나오는 곳도 있다. 잘 알아보면 자기한테 잘 맞는곳이 있다.

 

만약 글을 읽고 있는 사람이 부산이라면, 밑에 링크도 가보기를 추천한다.

부산콘텐츠 아카데미라는 곳인데, 부산정보산업진흥원이라는 부산시 산하, 비영리 기관이다.

[부산게임아카데미 게임 개발자 양성과정] 장기 취업과정도 있고, 단기로 여러 수업들이 무료로 진행된다.

부산콘텐츠아카데미(페이스북)

부산콘텐츠아카데미(네이버블로그)


다음 글 부터는 [부산게임아카데미 게임 개발자 양성과정]에서 진행하는 내용들을

업로드할 계획이다.

 

4. 마음을 열어라

지금 하고 있는 게 제대로 진행중인 것인가에 대한.. 불안감이 찾아올때가 있다.

특히 준비하는 기간이 길어지면 길어질수록...

걱정하지 마라. 제대로 준비하고 있어서 불안한 것이다.

제대로 준비하지 않는 사람은 불만만 가득하다.

 

세상은 넓고 소스는 많다.

자신이 생각하는 것, 주변 사람이 생각하는 것 이것들이 전부가 아니다. 한계를 정하지 마라.

국가가 다르고, 언어가 다르고, 세상엔 약 75억명이 살고 있다.

사람마다 생각이 다르고 똑같은 언어라도 말투가 틀리다. (말투 == 코딩, 생각 == 설계)

1) 여러가지 방법으로 최대한 많이 프로그래밍을 한다.

2) 유사한 오픈 소스를 최대한 많이 뜯어 본다.

3) 두 개의 코드를 냉정하게 비교한다.

4) 1)~3) 계속 반복한다.

완성된것을 개발자끼리 공유한다. 개발자 사이트에 업로드하는 것도 좋고 스터디 모임에서 소소하게 공유하는것도 좋다. 혼자 생각한 것 보다 더 나은 방법이 나올지도 모르고, 또한 예상치 못한 폭풍 칭찬으로 자신감이 업이 될지도 모른다. 완성하는 기쁨도 누리고 고생한 자신을 많이 축하 해줘라.

 소스포지, 코드프로젝트, 스택오버플로우


다음을 이어간다.

게임 개발 환경2