TCP/IP 소켓통신을 이제껏 클래스화 시키지않고 그냥 무자비하게 사용해온 1人 이있었으니.....
그건 바로 저랍니다 =ㅇ=;
뭐 잘사용할필요도없고 그랬는데 이번에 혼자 계획한 프로젝트가 네트워크를 이용하는거라서
이번기회에 클래스화 시키기로 하였습니다~

(뚝땅 운마엄나ㅣ엄니ㅏㅓㅇ미ㅏㄴㅇㄴ마)

클래스화 끝~!

클래스화 시킨것으로 간단한 채팅 서버를 구현해보았습니다.
흠냐... 기존의 채팅서버를 참고해서 만드는데 걸리는시간은 약 10분정도...
[##_kaAmo_##]
사용자 삽입 이미지

물론 현재 채팅서버에만 적용해봐서 다른 부분에 적용할때의 수정해야 할부분이 생길지도 모릅니다.
=ㅇ= 그런고로 오늘내일중으로 예전에 만들어뒀던 프레임워크에 적용을 해볼까합니다 캬캬캬


Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/35
  2. EOSTORY 2009/03/28 07:49  Modify/Delete  Reply  Address

    단단하게 하나 만들어두시면 마음이 든든합죠! ㅋ 앗흥~ (게임코디에서 왔습니다~ ㅋ)

    • 랜스 2009/03/31 00:14  Modify/Delete  Address

      헉 게임코디님이 시군요~~~
      블로그 들어가자마자 알아챘습니다 ㅋㅋ(그보다)

이번 시간에는 새프로젝트를 생성해서 기본적인 윈도우를 띄어보는것까지 해보겠습니다~
지난 시간에 모두 SDK와 프로젝트 마법사설치를 끝내었죠?
그렇다면 시작해보겠습니다.~


일단 오우거로 새프로젝트를 생성합니다.
전 프로젝트 이름을 MakeWindow 라고 하겠습니다~

사용자 삽입 이미지


프로젝트 설정시 아래와 같이 빈프로젝트로 오우거프로젝트를 설정하면됩니다~
그리고 아래의 링크로 MakeWindow.cpp 를 다운받아서 프로젝트에 추가하도록합니다.
MakeWindow.cpp -다운받기
사용자 삽입 이미지
자 그리고 컴파일을 시키면 두둥~
성공했다는 메세지를 보시게 되실껍니다~ 밑에 그림처럼 맨땅윈도우창이  하나 떳으면 성공~
사용자 삽입 이미지
하지만 아직 종료에 관한처리를 않해주었기때문에 종료해도 프로세스 상에뜹니다.
그러므로 작업관리자를 켜서 종료해주도록합니다.
(혹은 F5로 프로그램을 실행시켜 shift+ F5 로 종료시켜줍니다.)

사용자 삽입 이미지

[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/34
  2. 호수 2009/03/11 01:28  Modify/Delete  Reply  Address

    읔...이글에서 MakeWindow.cpp -다운받기 이거 링크가 안돼있어요. ㅠㅠ

  3. 호수 2009/03/11 14:42  Modify/Delete  Reply  Address

    감사해요. ㅎㅎ 집에 가서 다운 받아서 해봐야 겠어요. ㅋㅋ

Ogre SDK - 다운받기

자신의 컴파일러 버젼에 맞는 SDK를 Ogre3d사이트에서 다운받습니다.
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

여기까지 잘따라오셨으면 SDK설치가 완료된것입니다.
그렇다면 VS에서 새프로젝트만들때 쉽게 오우거 프로젝트를 생성할수있도록 하는
Wizard를 설치해보도록 합시다.

Project Wizard - 다운받기


다 다운받으셨다면 ogresdkwizard90_v1_6_1.zip 의 압축을 풀어봅시다.
압축을 풀고나서 VC9_Setup.js 를 실행 시켜줘서 위저드설치에 성공시 아래와 같은 메세지가 뜹니다.

사용자 삽입 이미지
자 이제 기본적인 설정이 완료되었습니다.
그럼 이제 각자의 VisualStudio를 키고 [메뉴]-[새프로젝트 생성]으로 들어가봅시다.
그러면 설치된 템플릿중에서 처음보는 템플릿이있을텐데요
OGRE SDK Application으로 프로젝트를 생성해줍니다.
사용자 삽입 이미지
이건 뭐 프로젝트 관련 설정하는것인데요.
일단 오늘은 잘 컴파일되는지 확인하기 위해 SampleFrameWork로 설정해서 생성해줍니다.
사용자 삽입 이미지
프로젝트가 생성되었다면 바로 컴파일 ㄱㄱ~
그리고 컴파일이 멀쩡히 되셧다면 한번 실행해봅시다.~
아래의 화면들이 나왔다면 정상적으로 오우거가 실행이 되었다는겁니다.
기본 설치밑 환경구성을 하신것에 대해 축하드립니다. ^^
사용자 삽입 이미지
사용자 삽입 이미지

처음 써보는 강의 형식의 포스팅이네요 ^^;
혹시 앞으로 틀린점이라던지 보충할점 궁금한점있으시다면 제 블로그 방명록에 남겨주시면
성실히답변해드리겠습니다~
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/33
  2. 호수 2009/03/11 01:26  Modify/Delete  Reply  Address

    하하;; 따라해봤는데 재밌네요. 이게 3D 엔진인가요??
    프로젝트 이름 만들때 띄어쓰기 하니까 에러가 7개 생기네요. ㄷㄷ;;

  3. 간담브이 2009/04/08 11:10  Modify/Delete  Reply  Address

    랜스님 질문있어요^^!!
    VC9_Setup.js를 실행할 시 "연결 프로그램" 이라고 나옵니다.
    어떻게 해야 하나요?^^ 랜스님^^

    • 랜스 2009/04/14 11:07  Modify/Delete  Address

      방명록에 비공개로 메신져 주소 남기시면 아는 한도내에서 최선을 다해 도와드리겠습니다!

  4. 비밀방문자 2011/05/15 06:07  Modify/Delete  Reply  Address

    관리자만 볼 수 있는 댓글입니다.

사용자 삽입 이미지

좌측은 BitStream Vera Sans Mono 우측은 VC9기본폰트

BitStream Vera Sans Mono - 다운로드

글자들의 폭이 모두 같고 소문자 L과 대문자 I의 비교가 쉽습니다.
그리고 숫자 0과 영어 O의 구분도 쉽구요.
글자도 약간귀엽기도하고 기타등등의 이유로 애용하는 폰트입니다.
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/32
  2. 랜스 2009/03/09 15:35  Modify/Delete  Reply  Address

    그나저나.... 스샷에 Hellow라고 써버렸네요 -ㅇ-

  3. 날자고도 2009/03/11 21:30  Modify/Delete  Reply  Address

    예전에는 폰트 많이 신경썻는데,
    요즘은 VA가 다해결해주시니, 별필요성을 못느끼고 있네요 ^^

  4. 크라이키스 2009/07/15 20:27  Modify/Delete  Reply  Address

    ㅎㅎ 저는 디나라는 폰트를 사용하고 있는데 눈에 쏙쏙 잘들어옵니다.
    Dina

Direct를 이용한 구의 충돌 테스트

Direct를 이용한 구의 충돌 테스트 -랜스


 원 과 구의 차이는 무엇일까요?
쉽게 생각해서 2D-> 3D 라고 할수있습니다.
2D에는 x,y 좌표만있지만 (깊이도있습니다만 수학적으로) 3D에서는 한가지더 z라는 값이 있죠.
 
그렇다면 원의 충돌체크와 구의충돌체크의 차이점도 구에 생긴 한가지 값을 이용한 연산을
해주면 되는걸까요?

 예 맞습니다. -_- 단지 그것만 해주면 구의 충돌체크가 됩니다.. 실로 매우 간단합니다..
왜냐하면 원의 방정식과 구의 방정식 둘다 각자 접할때와 겹칠때의 조건이 같기때문에
구에 추가된 Z값을 중점사이의 거리를 구하는데 사용해주면 구의 방정식에서 충돌이 성립합니다.
 
 아래는 참고용 소스입니다.  

bool isCollision(Sphere* m1,Sphere *m2)                
{                                                            
 중점사이의거리= sqrt((float)((m2->x-m1->x)*(m2->x-m1->x))
               +((m2->y-m1->y)*(m2->y-m1->y))            
               +((m2->z-m1->z)*(m2->z-m1->z)));         
 if(m1->r+m2->r>=중점사이의거리)                            
  return TRUE;                                             
 else                                                       
  return FALSE;                                            
}

 
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/31
  2. 닭도난다 2009/03/09 08:06  Modify/Delete  Reply  Address

    멋지군요! ㅎ

 1년전쯤 학교 수학시간때 선생님께서 1번부터 순서대로 교과서에서 약간의 부분을 학생이
칠판앞에 나와서 선생님대신 설명을 하고 수업을 진행하게 하는 방식으로 3개월정도 수업이
진행되었었는데요, 이때는 아 저선생이 가르키기 귀찮구나.. (물론 지금도 그렇게 생각하지만)
라고 생각을했습니다.

 뭐 선생이 시킨 이유야 어찌됬든 저의 첫발표때 분명 제가 완벽히 알고있다고
생각한 부분이었는데 약간 설명하기 골치아펐다고 할까? 하여튼 이런게 있어서
그다음발표때는 조금 설명할 준비를 하면서 그 부분에 대해 좀더 공부하게되기도하였습니다.

 그리고 이포스팅을 쓰기 바로 전날 학원에서 선생님께서 포인터에 대해 설명해주시는데
포인터에대해 설명하기엔 약간 골치아프다고 누구 포인터 잘아는사람 있냐고 할때 손을
들지않았습니다. 겸손함과 제 허접한 말쏨씨때문이기도하지만 설명하고 타인을
이해시키기 많이 어려울것같아서죠.


 한가지 이야기로는 우리는 포인터를 이해하고 자신의 프로그램에 각자의 방식으로
자유롭게 적용할수있습니다. 그런고로 '우리는 포인터에 대해 잘 알고있다.' 라고 말할수있습니다.
그러던 어느날 한 사람이 우리에게 묻습니다.

'제가 포인터를 몰라서 그러는데 혹시 알려주실수있으신가요?'

라고요. 우리는 그사람에게 알려줍니다. 각자의 이해방식 , 자기가 본 책또는
문서같은것들을 떠올리며...  하지만 우리중에 그사람에게 약간이라도 이해가 가도록
설명할수있을까요? 우리가 그사람에게 설명을 잘  못하고 우물쭈물하면

그사람을 우리를 

"이사람도 잘모르는거아니야?"

라구요..
 
 타인을 한번에 이해시킬수있는 사람은 자신이 설명한것에대해 확실히 안다는 것이며
질문자측에서도 만족스러워할껍니다. 그리고 물론 어떤 똑똑한 사람이든 이해하기
힘든 어려운 것들도있죠.

 앞으로 스스로 공부를 하면서 배우는것이나 제가 생각했을때 제가 부족한것같다는 부분에
있어서 포스팅을 할껏입니다. 제가 아는것을 남에게 알려주는 일종의 표현연습이라고나 할까요? :)

[##_kaAmo_##]
Posted by 랜스.
TAGS

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/30
  2. 마르스 2009/03/06 11:18  Modify/Delete  Reply  Address

    네 잘 하는 사람은 잘 가르켜주더라구요.

  3. 커니 2009/03/08 16:45  Modify/Delete  Reply  Address

    저도 블로그에 강좌를 정리하다보니 그런 생각이 많이 들더군요.

    저 스스로는 이해하고있다고 생각했는데, 막상 다른 사람이 "이게 뭔데?" 라고 물어보면 명확하게 답을 하지 못할 때가 있더군요...
    그리고, 아예 "강좌"를 목적으로 글을 쓰다보니 글을 쓰면서 "이런 점이 부족하지 않을까"하는 생각이 들면서 애매한 부분은 더 파고들어 공부하게 되더군요. ㅎㅎ

    이래저래 다른 사람에게 "가르쳐줄 수 있을 수준"까지 공부하는게 좋은 것 같아요.

  4. 랜스 2009/03/09 15:36  Modify/Delete  Reply  Address

    예 그렇죠~ 저도 블로그시작하면서 점점 그걸 느껴가고있습니다 ㅋ_ㅋ

  5. EOSTORY 2009/03/28 07:56  Modify/Delete  Reply  Address

    처음으로 C 강의할때 만만하게 생각했던 C가 이렇게 어려운건줄 처음 알았었습니다. ㅡㅡ;;

    이유없이 당연한 걸로 알면서 사용해오던 것들에 이유를 설명하려하니
    완전막막하더군요 ㅋㅋㅋ

    • 랜스 2009/03/31 00:03  Modify/Delete  Address

      예.. 맞아요 ㅋㅋ
      이래하는게 당연한거라 생각하는걸 왜 이래야하는 지 묻는다면 대략...

하나를 꺠우치면 열 혹은 그이상을 꺠우칠수있는 응용력이필요합니다...
그런고로 응용법을 생각해봅시다~

아래의 그림을 보면 '스트리트파이터4'라는 게임의 스크린샷인데
춘리라는 게임캐릭터가 공격을 시도하는 장면인데요. 이것을 가지고 예를 들어 설명해보겠습니다.
물론 스트리트파이터4는 3D로 제가 설명하는 방식의 충돌체크를 사용하지않습니다..
그리고 대부분의 2D격투게임들은 바운딩박스라는 방식으로 충돌체크를 합니다.
사용자 삽입 이미지
밑에 사진을 다시 보시면 원으로 충돌 체크를 할시에 필요한 원들이 보입니다.
부위별로 상하좌우 방어 공격 등등의 상태값을 가지겟죠. 그런데 이많은 원들을 항시로 체크해줄려면
프레임소모가 심합니다.
예를들면 충돌원을 1000개씩 가진 캐릭터가 떨어져있어도 1000000번의 충돌연산을 하게됩니다.
그런고로 아래사진처럼 가장큰원을 하나씩 잡고 충돌시 하위 계층의 충돌원과 충돌연산을 시켜주면됩니다.
사용자 삽입 이미지

한번 응용해봅시다.그래픽 불러오기 귀찮고 리소스생산해내기 귀찮으므로 원두개로 딸랑만들수있는 눈사람을 만들어보았습니다.
그리고 충돌체크시 충돌검사하는 갯수를 받아서 화면에 찍어주게하였습니다.



사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/28
  2. 알콜코더 2009/03/05 10:24  Modify/Delete  Reply  Address

    스파4같은 격투게임은 바운딩 스피어의 충돌안에서 또다시 폴리곤 충돌까지 계산하죠. ^^

    • 랜스 2009/03/06 03:51  Modify/Delete  Address

      오호 ~ 그렇군요!! 바운딩스피어검출방법도 그리 어려운게 아닌데 D3D로 스피어2개뛰어 놓고 한번 해봐야겠습니다>_<

  3. cretom 2009/03/12 18:51  Modify/Delete  Reply  Address

    스파4는 개발 초기엔 일반적인 3D게임(ex:철권)처럼 3차원적으로 판정을 했지만
    후기에 가선 2D게임이였던 시절의 느낌을 살리기 위해 2차원 처리로 바꾸었다고 하네요..
    일반적인 3D게임의 경우는 알콜코더님의 말씀이 맞습니다.

중고등학교 수준의 수학을 공부하고도 사실 구현해내는 방법을 잘몰랐지만
다시한번 책을 보면서 생각해보니 "접한다","겹친다" => "충돌한다" 였던것이다.

그런고로 오늘은 원과 원의 충돌에 대해 구현을 해보았다.


bool isCollision(Circle* m1,Circle *m2)
{
 중점사이의거리= (float)sqrt((float)((m2->x-m1->x)*(m2->x-m1->x))+((m2->y-m1->y)*(m2->y-m1->y)));
 if(m1->r+m2->r>=중점사이의거리)
  return TRUE;
 else
  return FALSE;
}


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

















[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

합격발표이후 계속해서 기다려왔던 오늘이시작되었다...

긴장되어서 꿈에 학원다니는 꿈과함꼐 3시쯤 깨서 지금까지 서핑중이다...

가서 잘할수있을까 좋은 사람들을 만날수있을까도 걱정되고 과정을 모두수료후에 어떻게 생활해야할지도

걱정이되네...

하여튼 기초부터 차근차근 배운다 생각하고 학원에서 배우는것과 스스로 공부하는것 하나하나를

블로그에 남겨두려한다... 설마 데이터가 날라가거나 하지않는이상없어지진않겟지..
(계정기간은 아직 한참남았고...)

하여튼 화이팅!!!
사용자 삽입 이미지
[##_kaAmo_##]
Posted by 랜스.
TAGS

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/26
  2. 알콜코더 2009/03/05 10:25  Modify/Delete  Reply  Address

    제가 운영하는 '초중급 게임 개발자 스터디'가 매주 토요일마다 KGCA에서 하죠 ^^

  3. 12기 2009/04/23 20:17  Modify/Delete  Reply  Address

    kgca로 웹서핑을 하다가 들어온 12기 기획자입니다. 17기 분이신것 같은데, 같은 울타리 안에

    있게된 점 무척 반갑네요. ^^ 지금쯤이면 c++ 프로젝트가 들어갔을것 같은데...재밌는 게임

    만드시고요. ^^

1년전쯤 잠실역에 직거래하러갔다가 레브님을 만나서 레브님꼐 돈을 꿔서 산책...

하루에 한단원씩 2주내로 끝내야겠다!!
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/25
  2. 닭도난다 2009/03/01 01:03  Modify/Delete  Reply  Address

    저도 보긴 했는데 ㅎㅎ 어느정도 기초가 있다면 금방 금방 이해하고 나갈수 있는 내용들.
    심화 있게 볼려면 게임 물리 바이블 등등 이런 책들도 읽어 보는것도 좋을듯 ㅎ

    • 랜스 2009/03/03 05:07  Modify/Delete  Address

      흐음 4장까지봤는데 제가 기본고등학교 수준도않되네요 ㅠㅠ ; 그냥 요점정리에 요점정리를 한듯한 느낌... 한번 쏵훑고 딴거해야지...

: 1 : ... 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 :