IRiS nX
114 ARTICLES / 235 REPLIES [1:2]
=ADMIN=


NAME / EMAIL
URL
SUBJECT
MESSAGE
ATTACH
ATTACH STYLE COOKIE  
#107. 그네고치기 [REPLY]
DirectX... 2005/03/07 (Mon)

안녕하세요, 안영기님...
오늘도 검색하면 튀어나올 듯 싶으면서도 안 나오는 질문을 들고 왔습니다.

지난번의 A* 및 A+ 알고리즘은...
대략 경악 그 자체였습니다 ~_~;

소코반을 그렇게 구현했다가 (Priority Queue + BFS + 휴리스틱스 + ...) 강아지 피를 보고 그냥 일본쪽 소스 배껴버린 친구의 일화를 되새겨 보니...

=_=; 뭐랄까요... 대변파이터 외전이 그렇게 구현되었다는 말씀이 선뜻 마음에 와닿지 않습니다. (제가 소스코드를 잘못 해석한 것이길 빕니다)


오늘의 질문은...

"DirectX를 하나도 모르는 사람이 DirectX를 사용해야 하는 상황이 온다면 어떤 단계들을 밟아야 할까요?" 라는 난감한 질문입니다.

물론 검색하면 튀어나올 겁니다.

=_=;;; 그러나 제 경우에는 왠만큼 검색을 해도 잘 나오지를 않더군요...

정직하게 말하자면 제가 MFC와 같은 요소는 전혀 알지 못한 덕분에, 그리고 C나 C++언어는 제대로 익히지 못한 덕에... 아니 좀 더 정직하게 말하자면 Windows Programming에 한 문외한 하는지라... 아주 미쳐버릴 지경입니다.



제가 현재 의뢰받은 프로그램이... 약 380명 정도의 "인간" 이 화면에서 동시에 움직이는 모습을 보여주는 기능을 갖춰야 합니다. 급한대로 TLabel 컨트롤을 배열로 써서 화면에 띄우는 식으로 (... 즉 사각형 사람을 만든 거죠) 구현을 해 보았습니다만, 사람의 크기를 조금만 크게 해도... 아니 사람의 크기를 작게 해도, 200명을 넘어가버리는 순간부터는 의도한 수준의 속도가 나오지를 못하더군요.

제가 필요로 하는 속도는 10fps면 충분합니다. 하지만 이를 위해서는... 일단은 DirectX를 익히는 것이 필수적인 일일 듯 싶습니다.

휴... 이런 상황에서 제가 어떤 단계를 밟으면 좋을까요...?

가령해서 MFC나 익히고 다시 질문하라고 말씀하신다면... 역시 그렇게 해야겠죠...

#107-1. 쉐용 2005/03/07 (Mon)
흠.....
순수 api 로 짜도 10fps 정도는 나올꺼 같습니다만.(크기가 문제겠지만..)

[ 정직하게 말하자면 제가 MFC와 같은 요소는 전혀 알지 못한 덕분에, 그리고 C나 C++언어는 제대로 익히지 못한 덕에... 아니 좀 더 정직하게 말하자면 Windows Programming에 한 문외한 하는지라... 아주 미쳐버릴 지경입니다. ]

이 구절에서.... 어떻게 인도를 해야 하나.. 막막해 졌습니다;;

어떻게 저 상태에서 프로그램을 의뢰받았을까 하는 생각도 해보고;;;

흠... 책한권을 권해 드리겠습니다.
요즘에 나오는 게임 개발쪽 서적들이 예전에 비해 전반적으로 수준이 높아져서
초보들이 보기에는 진입장벽이 좀 높아졌습니다.

그래서 예전에 나온 책을 구해서 봐야하는데

http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200112270013

이 책을 그네고치기 님에게 추천하겠습니다. 일시 품절이라고 나왔는데, 서점가셔서 찾아보시면 보이실듯 합니다.

그럼..

#107-2. 그네고치기 2005/03/07 (Mon)
아아... 쉐용님 감사합니다.
정직하게 말씀드리자면 =_= delphi는 vcl기반인지라 어줍잖게 마우스 드래그 조금 할 줄 아는지라... + 의뢰인이 컴퓨터 쪽에 완전한 문외한인지라... 그런 일이 일어나버렸습니다.

(실상을 말씀드리자면 그렇게 엉성하게 만든 프로그램을 [출품] 까지 했었으니... 도저히 드릴 수 있는 말씀이 없군요;;;)

감사합니다. 밑에서 안영기님께서 추천해 주셨던 책과 함께 이 책도 즉각 Get하러 출동하겠습니다.

#107-3. 안영기 2005/03/08 (Tue)

DirectX와 MFC는 거의 상관없으니 그냥 무시하셔도 되고, 일단 TLabel로 접근하는 방식이 잘못되었습니다. Delphi의 컨트롤들은 상대적으로 무거운데다가 갱신 속도가 느립니다. 따라서 Delphi만 다루실 거라면 Win32 API를 배울 필요는 없이 VCL의 TCanvas와 TBitmap의 조작만으로 10FPS 이상의 게임이 구현 가능합니다. (알고 보면 TCanvas가 DC이고 TBitmap이 BITMAP이므로 Win32 API를 다 사용하고 있는 것입니다.)


#106. 그네고치기 [REPLY]
자동 이동을 위한 최단경로 검색에 대해서... 2005/03/01 (Tue)

안녕하세요, 안영기님...
오늘도 당혹스러운 질문을 들고 왔습니다.

지난번의 스택 큐 이야기는 그냥...
접어두는 게 나을 듯 싶습니다... ^^;



AVEJ같은 식의 이동 방식을 사용하는 게임에서 NPC를 특정 위치에서 특정 위치로 이동시키려고 합니다.

문제는 이 [특정 위치 1]와 [특정 위치 2]가 난수적으로 결정되고, 장애물들이 난수적으로 발생하기 때문에 매회 이동시 특정 위치 1에서 특정 위치 2까지의 최단경로를 검색해 줄 필요가 있으리라고 봅니다.

생각같아서는 Dijkstra법으로 그냥 메모리 쫘악 쫘악 낭비하면서 구현해버릴까 아니면 그냥 BFS탐색으로 Flood Fill을 돌릴까 생각하고 있지만 역시... 게임 맵이다 보니 그런 건 무리일 듯 싶습니다.

어떻게 묘책이 없을런지요...? 맵의 규모는 AVEJ에서 사람 하나를 표현하기 위해 사용된 칸을 한 칸이라고 가정할 때 가로로 1천칸, 세로로 1천칸 가량 되는 자그마한 규모입니다.

#106-1. 안영기 2005/03/02 (Wed)

가장 기본적인 길찾기인 A+ 또는 A* 알고리즘은 '대변 파이터 외전' 소스에 나와 있으니 그것을 참고 하시고 위와 같이 1000*1000에 동시에 길을 찾아야 하는 캐릭터가 많이 있다면 위의 알고리즘으로는 속도가 나지 않아서 많이 힘들 것입니다. 보통 이것에 관해서는 많은 토론이 있었고 인터넷에도 자료가 많습니다. 아마도 스타크래프트가 뜨게 되면서 '왜 저글링은 한 줄로 달려갈까?'라는 의문을 한 번에 풀어주는 것들이 많습니다. (기본적으로는 길찾기는 한 놈만 하고 그 뒤의 나머지는 자기 앞의 놈을 따라가도록 한다는 규칙입니다. 그런데 항상 문제는 중간에 맵에 변형이 생길 때인데 이때는 변화를 감지한 놈부터 다시 계산을 해주고 그 놈 뒤의 놈들은 다시 그 놈을 따르게 하는 것이 아닌가 생각되는군요.)

사실 A* 알고리즘은 미로 찾기나 좁은 공간에 대한 길찾기에는 높은 성능을 보이나 넓은 지형에 장애물이 별로 없는 곳에서는 성능적인 면이나 결과적인 면이나 모두 만족스럽지 못한 결과를 나타내게 됩니다. 그래서 그것을 보완하기 위한 것이 맵 로딩 시(또는 미리 만들어진) 각각의 복잡도에 따라 단위 구역을 나누고 그 구역끼리에 대한 최단거리를 미리 설정합니다. (이때는 각 구역에 대해서 Dijkstra 알고리즘을 적용할 수도 있습니다) 데자뷰에서는 원래 가고자 했던 길에 방해물이 생기면 그길을 회피한 후에 다시 최단거리로 돌아 오도록 했는데 이때 회피 방법은 각각의 경우에 대해 간단하게 판단 조건을 추가 했던 것 같습니다. 아마도 회피 방법은 게임의 방식이나 맵의 구조에 따라 새로 구성되어야 할 것 같네요. (정말 못빠져 나올 것 같으면 현재부터 다음 중간 경로까지 A*를 적용하는 것도 한 방법..)

그런데 가장 중요한 것은 만드시려는 게임에 맞게 새로운 알고리즘을 만드는 것이 가장 중요하다고 생각되어지는군요. 그 게임이, 루카스의 어드벤쳐 게임처럼 그래프형 길찾기가 될 수도 있고, 데자뷰 수준의 단순 길찾기도 있고, 소코반 형식의 A*가 어울리는 길찾기도 있을 것이고, 스타크래프트같은 다수의 객체가 한 위치로 이동하기 위한 길찾기도 있기 때문에 만드시려는 것에 가장 적합하도록 기존의 제너릭 알고리즘을 변형할 수 있어야 할 것 같네요.

추천도서는 Strategy Game Programming 어쩌고 하는 책(이후에 번역본도 나왔음)입니다 그리고 Game developer인가 하는 잡지(역시 번역본 있음)에서도 비교적 넓은 지형에서 간단하게 길찾는 얼고리즘이 소개되었던 것 같네요.

#106-2. 그네고치기 2005/03/02 (Wed)
조금 너무하는 질문인 듯 싶습니다만 하나 더...
우선 Strategy Game Programming 어쩌고 하는 책을 사러 가 봐야 겠습니다. ~_~;

방금 구글신의 도움을 빌어 A* 알고리즘에 대한 간략한 소개가 되어 있는 PDF파일을 찾았습니다.

... 끄응...;
여기 나와 있던 설명만 듣고 보니...

도대체 Priority Queue를 간단하게 적용한 BFS와의 차이를 느끼기가 힘들군요... ㅠ.ㅠ

G+H를 구하는 것이 단지 Queue에 들어가 있는 노드들의 우선순위를 지정해 주는 것 이상의 역할을 한다는 느낌이... 어째 잘 들지가 않습니다...

제가 받아들인 것이... 그나마 완전히 틀린 것은 아닌지... 혹은... 그럭저럭 제대로 찾아가고 있는 건지... 혹 알려 주실 수 있으신지요?

#106-3. 안영기 2005/03/05 (Sat)

A*는 Best-first search의 한 종류라서 그렇게 느껴질 겁니다. 그리고 실제로 8 방향의 그래프를 가지는 Breadth-first search입니다. (A+라면 4방향이겠죠. '*'와 '+'는 방향에 따른 모양이 형상화된 것입니다) A*는 간단한 알고리즘에 속합니다.


#105. 강오 [REPLY]
안녕하세요, ISOMETRIC제작에서 2.5차원이... 2005/03/01 (Tue)

홈페이지의프로젝트->델파이 게임 제작 연제->13. Isometric view game을 보니, 코딩이 깔끔한 것 같습니다. (제가 delphi를 전혀 몰라서 잘은 모르겠지만 그렇게 보입니다. ^.^;)
질문드리고자 하는것은..
요 이틀간 2.5차원 맵을 제작중인데요..
제가 생각하는것과 약간 개념이 다른 것 같아서요..(제가 생각하는건 남아도는 영역이 너무 많아서 무척 지저분한..)
근데 님께서 제작하신걸 보니 같은 층에서도 세분화된 층이 있어서... 상당히 좋은 소스가 될 것 같더군요.. 근데 문제는 델파이를 몰라서;;
2.5차원 맵의 개념과 구조를 알려주시면 감사하겠습니다.. *^.^*

#105-1. 안영기 2005/03/01 (Tue)
안녕하세요.
2.5차원에 대해서 이야기 하셨는데 제가 생각하는 2.5차원은 점프의 기능이 있는 2차원이라고 생각하고 있으므로 그것에 맞추어서 말씀드리겠습니다.

2.5차원은 일반 2차원 게임에 대한 확장으로, 구조상의 가장 큰 차이점은 높이를 표시하기 위한 축이 하나 더 필요하다는 것입니다. 즉, (x,y)라는 위치에 z라는 높이가 존재한다는 것이고 만약에 캐릭터가 점프를 해서 (x,y)에 착지하게 된다면 그 위치는 z만큼 올라간 지점에서 착지를 하게 됩니다.
또한 날아가는 물체(마법등)도 자신의 높이를 가지고 있고 충돌 체크의 요소에 (x,y)의 높이가 추가됩니다.

따라서 2.5차원의 isometric view에서 실제 screen 출력하기 위해서는 아래와 같은 방식이 될 것입니다.

bool DisplayObject(IObject& object)
{
    POINT displayPos = ScreenDevice::IsometricToScreen(object.x, object.y);
    int x = displayPos.x;
    int y = displayPos.y - object.z;

    return ScreenDevice::PutSprite(x, y, object.sprite);
}

그리고 z축에 대해서 맵을 따로 구성할 필요가 없으며 (맵 데이터는 2차원이 되어야합니다) 높이는 (x,y)에 해당하는 맵이 가지는 하나의 속성으로 보시면 될 것 같습니다.

#105-2. 강오 2005/03/01 (Tue)
답변감사합니다.
저랑 조금 개념은 다르지만 많이 도움이 되었습니다.. 앞으로도 홈페이지 발전하시길 바랄께요.. ^^;


#104. 박성준 http://www.cyworld.com/popo8402 [REPLY]
영기님, 땅콩맨입니다... 2005/02/23 (Wed)

안녕하세요? 땅콩맨입니다.
델파이 프로그래밍, 하루에 하나씩 공부하기
페이퍼를 소개해드리고자 내용을 적습니다.
주소 : http://paper.cyworld.com/delphilove
많은분들이 오셔서 좋은 조언과 정보공유가 있었으면 좋겠습니다.
영기님도 항상 행복이 가득하시길...

#104-1. 안영기 2005/02/23 (Wed)
안녕하세요. 땅콩맨님.
델마당 게시판에서는 자주 뵈었는데, 여기서 만나는 것은 처음이네요.

저도 종종 들러서 좋은 정보 많이 얻어 가겠습니다. 앞으로도 자주 뵙겠습니다.

#104-2. 퍼스트드림 http://albahouse.kr/ 2009/07/14 (Tue)
재택근무로 자료입력 하실분을 구합니다
- 저희 퍼스트드림에서 참신한 인재를 모집합니다. -


① 21세(89년 생일 지나신분) 이상 누구나 가능합니다.

② 회사에서 제공하는 업무자료를 인터넷상에 입력하는 일입니다.

③ 출퇴근 없이 집에서 근무가 가능하며,

④ 일하시는데 필요한 자료 및 방법 모두 지원해 드립니다.

⑤ 급여는 기본급 외에 각종 인센티브로 급여혜택이 좋은 환경에서 일하실 수 있습니다.

⑥ 급여는 매월 26일 본인의 통장으로 입금됩니다.

⑦ 자세한 업무내용 및 신청방법은 아래에 들어가셔서 참고하세요.


초보자라도 업무보시는데 전혀 어려움이 없으므로 부담없이 지원하시길 바랍니다.

모집요강 페이지 : http://albahouse.kr/






---------------------------------------------------------------
본 정보로 인해 불편을 드렸다면 진심으로 사과드립니다. 꾸벅(_ _)
등록을 원하지 않으시면 수고스러우시겠지만
아래주소에 본 사이트주소를 한번만 남겨주시면 감사하겠습니다.

① 수신거부주소 : http://open.je.ro/
② 정보삭제암호 : 1234

게시판 성격에 맞지않는 글이었다면 정말 죄송하구요.
항상 건강하시고 즐거운 일들만 가득하시길 바랍니다.
---------------------------------------------------------------


#103. 그네고치기 [REPLY]
Queue와 Stack과 Priority... 2005/02/04 (Fri)

아아... 역시 전산은... 전산은...


그냥 Queue 와...
그냥 Stack 과...
Priority Queue...

여기까지는 =_= 그럭저럭 가지고 있던 책들에서 찾았습니다.

(어째서 책마다 한결같이 Priority Queue를 Heap 자료구조를 응용해서 맹글었는지는 잘 모르겠습니다만...;;;)

Sort 가능한 Queue 와...
Sort 가능한 Stack 는...
도대체 누굴까요;;;;;;


#102. 쉐용 [REPLY]
영기님 질문~ 2005/01/28 (Fri)

흠....게임을 만들다가..
ff_mplayer.dll에 문제가 있다는
오류가 떴는데... 이게 dshow관련
dll 같기도 한데...혹시 뭐 아시는거
없으신지요? ^^;;

#102-1. 안영기 2005/01/29 (Sat)
아마도
90%는 동영상 파일 자체의 문제이고 (깨졌거나 사제로 만든 것..) 나머지는 코덱의 충돌처럼 보이네요.

그 자체가 DirectShow의 구성 DLL처럼은 보이지 않습니다. 정 안되면 코덱을 모두 삭제하고 새로 까는 방법도...


#101. 그네고치기 [REPLY]
혹시... 2005/01/24 (Mon)

혹시...
델파이에서...

VC++ 6.0에서와 거의 같은 방법으로...
winsock을 써먹는 방법은 없을까요...?


#101-1. 안영기 2005/01/24 (Mon)
동일합니다.
만약 MFC의 CAsyncSocket이나 CSocket을 말씀하시는 것이라면 VCL에는 TServerSocket과 TClientSocket 같은 기본 소켓 class가 있습니다. 그리고 VC++에서 Winsock을 직접 사용하셨다면 Delphi에서도 같은 API로 사용하면 됩니다. Win32는 VC++이나 Delphi나 모두 호환되는 API니까요.

#101-2. 그네고치기 2005/01/26 (Wed)
아아... 그것이...
Winsock을 직접 써먹었더랬습니다.
#ifdef 장난(...;)을 통해 윈도 리눅스 양쪽 다에서 먹히는 프로그램을 만들었던지라...

그런데 Delphi에서 거의 같은 방법 (uses winsock;) 으로 코드를 옮기다보니... 몇몇 자료형이 [없더군요]...

후우; 상당히 난감합니다...

일단 말씀해 주셔서 감사합니다. 하는 데까지 더 해 보겠습니다.

생각같아서는 TClientSocket을 쓰고 싶습니다만 Raw 모드를 써먹어야 하는지라...

#101-3. 안영기 2005/01/27 (Thu)
이상하네요.
저도 C++로 Win32, Linux 다 돌아가는 소켓을 만든 적도 있고 그것을 델파이로 포팅한 적도 있었는데... 자료형이 없는 문제는 없었는데요. inet_aton() 같은 함수는 없을 수는 있지만 대체 함수를 쓰면 되고...

#101-4. 그네고치기 2005/01/29 (Sat)
휴! 답을 찾았습니다.
휴! 결국은 답을 찾았습니다. DelphiKorea를 뒤적이다가 좋은 예제 소스를 발견했습니다.

알고 보니 TSocket와 같은 "T자돌림"자료형들을 쓰더군요. =_=;
sockaddr_in 자료형과 같은 경우는 아예 TSockAddrIn처럼 밑줄이 사라지고 바뀌는 일도...

말씀대로 [동일하더군요]. ^^;;;
다만 변수 자료형같은 데서 약간의 차이가...

역시 감사합니다.

아, 한 가지 더 여쭐 것이 있는데요.

Sockaddr_in 자료형 (C++ 기준) 을 사용하는 데 있어 대부분 memset 함수를 써서 변수 전체를 0으로 초기화하더군요.

제가 구한 예제 소스에서는 그러한 초기화 없이 그냥 필요한 값만 지정하던데...



초기화는 필요가 없는 것일까요?
필요하다면 어떤 식으로 행해야 할까요?


#100. 쉐용 [REPLY]
바운드 체커 말고... 2005/01/18 (Tue)

메모리 누수 잘 잡는거 없을까요??

#100-1. 안영기 2005/01/19 (Wed)

저는 그냥 VC++에 있는 걸로 만족을...

#if defined(WIN32) && defined(_DEBUG)
extern "C" int __cdecl _CrtSetDbgFlag(int);
#endif

#if defined(WIN32) && defined(_DEBUG)
#define ENABLE_LEAK_CHEKING _CrtSetDbgFlag(0x21);
#else
#define ENABLE_LEAK_CHEKING
#endif

이렇게 선언한 후,

WinMain() 시작하자 마자 ENABLE_LEAK_CHEKING을 선언하면.. 종료시에 memory leakage 리포팅이 됩니다.

별로 화려하진 않고 원인을 찾는 방법이 불편하긴 하지만 못잡는 경우는 없었던 걸로..

#100-2. 안영기 2005/01/22 (Sat)
이 방법은..
malloc-free, new-delete, new[]-delete[]에만 효과가 있고 COM의 생성해제 방식이나 Win32 API를 통한 생성 해제에는 효과가 없습니다.


#99. 바람돌이 [REPLY]
스크립트강좌중 문의 2005/01/11 (Tue)

스크립트 강좌를 보던중 문뜩 구현해 보고 싶다는 생각이 들었습니다.
그런데 가장 걸리는게 if 문이라든지 기타 판별문인데 저에게 광명을 주시지 않으시겠습니까?

^^*

#99-1. 안영기 2005/01/12 (Wed)
스크립트의 비교문

제가 만든 스크립트 중에서 실용화 된 것이 2개가 있는데 그것들은 모두 비교문이 없습니다.
그 대신 비교문을 모두 함수로 만들어서 처리했습니다.


if a < b then
-> if LESS_THAN(a, b) then
if a <= b then
-> if LESS_EQUAL(a, b) then
if a = b then
-> if EQUAL_TO(a, b) then
if a > (b+c) then
-> if GREATER_THAN(a, b+c) then


이것은 fortran의 영향을 받은 것입니다.

일단 'if LESS_THAN(a, b) then' 에 대해 처리하는 입장에서는


1. keyword인 'if'가 발견되었다.
2. 이후에 꼭 나와야 하는 키워드인 'then'을 찾는다.
3. 'if'와 'then'사이의 문자를 가져 온다. (끝의 공백은 없앤다.)
-> 'LESS_THAN(a, b)'이 검출되었다.
4. 문법에 의해 '함수이름(....)'의 형태가 되므로 '(' 이전 문자열과 '('와 ')'사이의 문자열을 찾는다.
-> 'LESS_THAN' 과 'a, b'가 검출되었다.
5. 'LESS_THAN'에 해당하는 사용자 함수를 실행한다. 이때의 파라미터는 'a,b'가 된다.
-> 함수명: LESS_THAN, param1 = a, param2 = b
6. 미리 등록된 native 함수에서는 다음과 같이 처리한다.

bool __LESS_THAN(int param1, int param2)
{
    return (param1 < param2);
}

만약 native 언어가 delphi일 때는

function __LESS_THAN(param1, param2: integer): boolean
begin
    result := (param1 < param2);
end;

7. native 함수의 결과가 true이면 then 이후의 스크립트를 실행한다.
native 함수의 결과가 false이면 짝이 되는 end if 이후의 스크립트를 실행한다.


위의 시나리오에는 문법적 에러 처리는 빠져 있으니 필요한 부분에 넣어야 합니다.
그리고 편의상 함수로 처리했을 뿐 실제 부호로 처리한다고 하더라도 그렇게 어렵지는 않습니다.

#99-2. 바람돌이 2005/01/12 (Wed)
안영기님의 최근 정신적인 붕괴 상태에서도
광명을 찾아 주시니 깊이 깊이 감사드립니다.


#78. 틈새 [REPLY]
컬러키..... 2004/11/05 (Fri)

안영기님 덕분에 열심히 공부하고 있습니다.
한가지 궁금한게 있어서요.
그러니까 마리미테 링 셀렉션에서요.
이제 배경이 투명인 상태가 되어 좋은데요.
마우스가 위에 있으면 각 얼굴에 테두리가 생기도록 하고 싶어요.
준비된 다른 그림을 덮어씌워서 만들기는 했는데...
투시 안경 시뮬레이터 1처럼 2중컬러키를 사용할 수 있는 방법이 있을까요?
안될것 같지만 제가 모르는 세계가 있을 수도 있으니까.... 용기내어 여쭈어봅니다.

#78-1. 안영기 2004/11/06 (Sat)
일단 Direct3D에서는
2중 컬러키를 사용하기 위해서는 2번 이상의 렌더링이 필요합니다. 그런데 원하시는 작업에 따라 그 방법은 달라지는 것이라서...

단순하게 테두리만 씌우려 한다면 그냥 마우스가 위치한 texture 위에 테두리만 그려진 texture를 한 번 더 그려주면 되는거 아닌가요?

#78-2. 틈새 2004/11/06 (Sat)
아~
감사합니다.


#74. R양 [REPLY]
프로젝트 한번 잘못 맡았다가.... 2004/10/24 (Sun)

근 3달째 스트레스와 동반하며 파탄나는 중입니다. 쉬어도 쉬는것 같지도 않고...

이번에 얻은것... 이라고 느끼는 것에 대해서는 다음에는 실수를 하지 말아야 겠습니다.

1. 포팅을 하기전 원본 소스는 반드시 확인한다.
- 원 제작자의 프로그래머 자질이 어느정도 인지 모르는 상태에서 덥썩 집었다가 욕나올 정도로 피봤습니다. 가장 기본적인거지만서도 '그래도 최소한의 정도는 짜지 않았을까' 하는 안일한 자세에서 부터 나온 첫단추였습니다.

2. 포팅하는 기기간의 성능차에 대한 데이터 부재.
- 디바이스간의 기본적인 차이는 인식을 하고 있었으나 그 외적인 SDK사용이라던지등의 세세한 부분의 체크 미스가 더더욱 프로젝트가 스트레스로 변하게 되었습니다. 또한 cpu나 ram의 수치로 인한 성능차도 '이러한' 케이스에는 '전혀' 도움이 되지 않을 수도 있다는걸 느끼게 해주더군요.

3. 원본 소스 이해에 대한 부재.
- 당연히 해야 할 일이였음에도 소스를 보고 있으면 이해하는 것 자체가 싫어집니다. 이걸 이해하면 오히려 실력이 퇴보해버리는게 아닌가 할 정도입니다.-_- 허나 프로젝트를 맡은 이상 이점을 게을리 했던 것이 버그 발생시 상당히 막막한 상황을 야기시키더군요.

4. (포팅경험 부족에 의한)유유부단
- 최종적으로 처음부터 다시 제작하고 있습니다. 1개월이 지나서 예정보다 한참 늦는 것을 발견 했을 때 빨리 선회를 했어야 하는데 이에대한 경험 부족으로 결정이 늦어져 예정 일정의 3배의 시간을 들이고 있습니다.


마지막으로 느낀 결론은... 먹고살기 위해서가 아니면 가능한 하고 싶지 않은 일입니다.
물론 제가 제작한 게임일 경우를 제외하고서겠죠. 만약 원 소스의 제작사가 평소 동경의 대상이였던 회사였다면 또 모르겠습니다. (라지만 가급적이면...-_-)

ps. 혹 모르니 저의 존재와 사명은 가급적 언급하지 말아주세요. ㅠ_ㅜ

#74-1. 안영기 2004/10/24 (Sun)
고생 많으시네요..
저도 남이 만든 소스를 포팅하는 것을 굉장히 싫어 합니다. 뭐.. 몇 백줄 정도는 코드를 제 스타일로 수정하고 소스를 찬찬히 살펴서 이해하도록 하지만 몇 천 라인만 되도 사실 쉽게 이해하기가 어렵죠.

단지 소스만 그런 것이 아니라 기기간 포팅이라면 더 문제가 많았겠네요. 처음부터 다시 제작이라.. 고생이 많으십니다.. T_T

그때 토,일요일도 없다는 것이 이것 때문이었군요........ (묵념)

#74-2. 용맨소녀 http://www.doyongid.com 2004/10/27 (Wed)
저는 아예...
포팅이라는 개념이 없습니다.. 결과물만 참고하면서 무조건 새로 짭니다..


#72. 틈새 [REPLY]
마리미테 링 셀렉션~ 2004/10/22 (Fri)

영기님 강좌와 작품은.....
언제나 그렇지만 정말 감동입니다.
거기에 주인공그림의 배경을 지우고 주인공
얼굴만 보이게 바꿔보려고 하는데요.
투명키설정은 어떻게 하나요?

#72-1. 안영기 2004/10/23 (Sat)
배경을 투명하게 하려면...
marimite.bmp (이 첨부 파일로 그림 파일을 교체 하세요)

USmD3D.pas의 내용을 수정해야 합니다.

431번째 줄의 아래 내용을

for i := 0 to pred(width) do begin
     pDest32^ := pSour32^ or $FF000000;
     inc(pSour32);
     inc(pDest32);
end;

다음처럼 바꿉니다.

for i := 0 to pred(width) do begin
     if (pSour32^ and $00FFFFFF) <> $000000FF then
          pDest32^ := pSour32^ or $FF000000
     else
          pDest32^ := pSour32^ and $00FFFFFF;
     inc(pSour32);
     inc(pDest32);
end;

이렇게 한 뒤 첨부한 그림파일로 파일을 교체하세요.

그러면 링 셀렉션에서 '홍장미'일당들은 모두 배경이 투명하게 나옵니다. (총 3명만)
나머지 사람들도 모두 배경을 0x0000FF로 바꾸면 투명하게 바뀝니다.

#72-2. 틈새 2004/10/23 (Sat)
영기님 감사합니다.
거듭 감사의 말씀을 드립니다.


#70. 결이 http://www.cyworld.com/hhskks48 [REPLY]
게임 개발시 던전 만들 때 2004/10/18 (Mon)

영기님 혹시 또다른 시리즈 만드실때 사용하시던 던전들 (메너스 광산이라던가 알수없는 피라미드 등등) 만드실때 그 구조들을
어떻게 만드시나요? 미로를 그릴려고 해도 상당히 머리 아플텐데 뭘 보시고 만드시는지.. 아직도 신기함

#70-1. 안영기 2004/10/18 (Mon)
일단은
모눈 종이에 타일을 다 그리고 거기에다가 이벤트 위치등을 다 표기한 후 직접 종위 위에서 게임을 해보고 그것을 컴퓨터로 옮겼습니다.

#70-2. 결이 http://www.cyworld.com/hhskks48 2004/10/18 (Mon)
상당한 창의력이 있어야 겠군요.
상당한 창의력이 있어야 겠군요.
알수없는 피라미드 구조가 매우 복잡하던데
그걸 일일이 다 손으로 그리시다니 존경
^^;

#70-3. 안영기 2004/10/19 (Tue)
아...
그 중에 '알수 없는 피라미드'의 맵은 제 동생의 작품입니다. 저도 직접 통과해본 적은 없고.. 치트를 통해 건너다녀야만 했습니다.. -_-;;;


#69. 밥벌레 [REPLY]
조합형 한글 라이브러리 감사.. 2004/10/17 (Sun)

잘 쓰겠습니다.. 상용 어플에 쓸지도 모르는데 괜찮겠죠? 보답은 오프때 꼭!

#69-1. 밥벌레 2004/10/17 (Sun)
헉..지금 방금 소스를 봤는데..
이러면 안되지만... 최적화 해야함.. 편법이다..등등 멋진 대사이들 많네요..^^ 하지만 원래 일로 할때는 잘 돌아가면 두번다시 안쳐다보고.. 심심풀이로 할때는 최대한 장인정신을 발휘하는것이... 이 업계의 속성이니 만큼(나만 그런가--;).. 회사일에 쓸때는 최대한 수정없이..^^;

#69-2. 안영기 2004/10/18 (Mon)
상용에 써도 상관없습니다.
남들도 다 할줄 아는 것을 단지 미리 타이핑 해 놓은 것 뿐인데요 뭘..

#69-3. 안영기 2004/10/18 (Mon)
아참...
상용에 쓰시려면 bmp파일의 글꼴을 다시 디자인 하셔야 합니다. 그 폰트는 '쉐롬데이러맨'에서 추출한 폰트이기 때문에 저작권이 있을 겁니다. 그리고 상용에 쓰시려면...

1. 4 gray-bmp로 anti-aliasing를 구현하시는 것이 더 보기 좋을 것 같습니다.
2. TTF2BMP를 통해 자동 생성하는 방법으로 폰트를 확장한 후 저작권을 피해갈 정도의 수정을 하시는 것도 좋습니다.

#69-4. 바람돌이 2004/10/19 (Tue)
벡타폰트를 만들고 싶은데..
음.. 예전부터 한가지 해 보고 싶은것이
벡타폰트를 지원해 보고 싶은것이었는데..
영기님 코드를 보고 다시한번더 불타 오르는군요...
혹시나.. 힌트나 아이디어를 주셔서 저를 광명으로 인도해 주실분 계신가요?

#69-5. 용맨소녀 http://www.doyongid.com 2004/10/19 (Tue)
저는 이야기 폰트를 쓰는데..
GP32 텍스트 뷰어를 만들때 이야기 폰트를 썼는데...
큰사람에게 메일을 보내면 그냥 쓰라고 허락해줍니다.. 다만, 다 만든 후에 완성 프로그램을 보내달라고 하더군요..

#69-6. 안영기 2004/10/19 (Tue)
벡터 폰트는..
폰트 데이터를 디자인 하는 것이 어려울뿐 폰트 엔진의 구현 자체는 많이 어렵진 않습니다. Win32에서 Outline으로 폰트를 그리는 방법을 해보시거나, FreeType2같은 open source 폰트 엔진을 사용해 보시면 그 벡터 폰트의 구조가 쉽게 이해되실 겁니다. (만들기는 쉬운 편이라고 했지만 출력 퀄리티를 높이는 것은 어려운 작업입니다)
---------------------------------------
저도 예전에는 이야기 폰트를 썼었는데.. 어느때부턴가 새롬의 폰트를 쓰게 되었습니다.
아마 한글1.5x와 이야기의 조합 구조가 같았던 것 같은데, 같은 초성끼리 10벌씩 붙어 있는 구조였던가요? 그러고 보니 '또다른..'에 사용했던 폰트는 아래한글의 폰트(명조,고딕,샘물)를 빼내어서 '초중종6:2:2'로 개조해서 사용했던 것 같습니다. 요새는 OS의 API가 폰트 출력을 도와주니 이런 이야기는 이젠 추억이 되어버린 이야기가...

#69-7. 바람돌이 2004/10/20 (Wed)
Win32에서 Outline으로 폰트를 그리는 방법 이란..
어떠한 방법인지 한번더 광명을 주실수 있습니까? 0TL

#69-8. 바람돌이 2004/10/21 (Thu)
지금 읽어 보니
그냥 윈도우에서 외곽선을 그려 본다는걸로 해석... T.T

#69-9. 안영기 2004/10/22 (Fri)
Win32 API 중에
GetGlyphOutline()을 사용해서 폰트를 출력해보시면 됩니다. 제일 처음에는 GGO_GRAY8_BITMAP로 해보시고 (여기에 강좌가 있음) 그 다음에는 GGO_BEZIER 또는 GGO_NATIVE 로 출력을 해보시면 됩니다.

#69-10. 바람돌이 2004/10/22 (Fri)
광명 +_+
^^


#67. 석주현 [REPLY]
이젠 유부남 이시네요. ^^ 2004/10/08 (Fri)

결혼 하신거 축하 드리고 신부님이 참 어려 보이시고 이쁘시네요.. ^^

정말로 축하드리고요.

전 이번에 이직을 했는데
흐흐 문자인식하는 쪽으로 이직을 했습니다.. 뭐 게임쪽에서 점점더 멀어져 가는게 가슴은 아프지만...

가끔 들어와서 영기님이 만들어 놓으신 여러가지 것들을 다운 받아 감탄하며 보고 있습니다. ^^

저도 게임을 만들어야 하는데 그게 잘 안돼네요.

암튼 결혼하신거 다시한 번 축하드리고요.
행복하세 사세요... ^^

#67-1. 안영기 2004/10/18 (Mon)
아..
게임 쪽에서 자꾸 멀어지시는군요. 하지만 그것이 더 좋은 것인지도 모르겠습니다. 항상 게임 제작으로 지니고 있을 수 있으니까요.


#64. 용맨소녀 http://www.doyongid.com [REPLY]
VC 2005 2004/07/02 (Fri)



C#빌더랑 똑같이 생겼네.. -.- 아니.. C#빌더가 VC랑 비슷한건가..

#64-1. 안영기 2004/07/03 (Sat)
구성 요소로 봤을 때는
델파이나 별반 다를 것이없는...
(우리회사도 이거 사주려나... 일 더 열심히 할지도 모르는데.. -_-;;;)

#64-2. 지나가다 2004/11/15 (Mon)
훔..델파이 따라했네 ㅡㅡ;
ms 빌...게이...츠는 이딴식으로 따라하나? ㅡㅡ;
린도우즈가 윈도우즈와 흡사하다고 상표권으로 분쟁일으켜놓고 디자인은 델파이를 따라하네 -_-; 게다가 처음부터 윈도우즈는 X윈도우하고 흡사하던데... 참 x같은 ms넴...쩝
상표침해되지않게 잔머리돌려서 디자인만 따라하니 MS 언제망하나 ㅡㅡ;
이거야원...앞으로 디자인 개발하게되면
디자인까지 등록해야할판이네...


[PREV] [2][3][4][5][6][7][8] [NEXT]


IRiS nX by NvyU =starry scape=