이틀동안의 삽질끝에
터레인을 지원하면서도 달랑 레이어 4장만 되는
겜브료 악랄한 기능을 수정해서 8장까지 확장했습니다.
첫날은 소스 백업안하고 진행하다가 잘못 건드리는 바람에 쉐이더 컴파일 에러로 실패-_-
둘째날은 전날의 실패를 교훈삼아 SVN 으로 등록한 다음 어제 수정한 코드를 하나씩 넣어가면서
작업한 끝에 ... 블렌드맵 설정에 아주 작은 실수로 인해 8시간 정도 디버깅(-_-) 노력을 제물삼아
드디어 기술적인 구현에 성공했습니다. >ㅁ< 꺄햐햐
겜브료측에서 1년이나 질질끌면서 수정을 안해주던 부분인지라..
뭔가 완전 꼬였나 생각했는데...; 놀랍게도(!) 거의 다 코딩이 되어있더군요 -_-
투자한 48시간에 비해 수정한 코드가 20줄 정도랄까요
(좀 허망한 생각이... orz; )
...
아마 제 생각으로
프로그래머는 다 작업해놓고 런칭하려는데~
QA 쪽에서 4 레이어 베이스+디테일+노말+패러럴 해서
텍스쳐 16장 혼합이 하드웨어 최소 조건이므로
8 레이어로 확장하게 되면 실행이 안될수도 있다.
그러므로 일단 4레이어로 가자 라는 식으로 막아놓은 듯 합니다.
이해가 안가는 것은
겜브료 자체가 노드 결합 쉐이더 생성 방식인지라...
게임 개발사가 엄한 짓만 안하면 문제가 없거든요 -_-)r
사실 노말맵 잘쓰기도 어려워 아예 제끼고 있는 상황인데 orz;;
그냥 주의해서 사용하라고 하지 TㅁT)
...
어쨌든 저 기술적인 구현을 작업자들도 쓸수있게하려면
오늘부터는 c# 의 세계에 빠져야 하는데-_-
하아...
python 쓰다가 c# 보니 뭐라 말이 안나오네요.
... (-- ); 문법도 지저분하고... 연동도 지저분하고... 코드도 지저분하고...
c# 에서 c++ DLL 디버깅이 안되서 고생했는데...
http://lohengrin.egloos.com/1787447 의 글을 보니
옵션/디버그/비관리 코드 디버깅을 체크해주면 작동하네요 ~(-_-)~
ps.
작년 12월에 자료실에 올라온거 보니 겜브료에 python 바인등을 하고 있는것 같드라구요
느무느무 좋은것 같아요 ㅋㅋ
불과 며칠전에 NiPointer - swig 연동하느라 고통받았던거만 빼면 말이죠 - _-)y- ~
1. 프로세스 아이디 확인
$ ps -ux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
myevan 46674 0.0 0.2 39732 1784 pa- SL 10 507 84:27.05 ./game
2. gdb 실행파일 로드
$ gdb game
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd"...
(gdb)
3. 프로세스 연결
(gdb) attach 46674
Attaching to program: home/myevan/game, process 46674
Reading symbols from /lib/libz.so.2...done.
Loaded symbols for /lib/libz.so.2
Reading symbols from /usr/lib/libstdc++.so.4...done.
Loaded symbols for /usr/lib/libstdc++.so.4
Reading symbols from /lib/libm.so.2...done.
Loaded symbols for /lib/libm.so.2
Reading symbols from /usr/lib/libc_r.so.5...done.
Loaded symbols for /usr/lib/libc_r.so.5
Reading symbols from /lib/libc.so.5...done.
Loaded symbols for /lib/libc.so.5
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
[Switching to Process 68794, Thread 1]
0x283a32af in poll () from /lib/libc.so.5
(gdb)
4. 브레이크 포인트 설정
(gdb) b do_skillup
Breakpoint 1 at 0x8111419: file cmd_general.cpp, line 791.
5. c++ 멤버 함수 브레이크 포인트 설정
(gdb) rbreak CHARACTER::SkillLevelUp
Breakpoint 2 at 0x80c91f2: file char_skill.cpp, line 576.
void CHARACTER::SkillLevelUp(unsigned long, unsigned char);
6. 브레이크 포인트 리스트 보기
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x08111419 in do_skillup(CHARACTER*, char*, int, int) at cmd_general.cpp:791
2 breakpoint keep y 0x080c91f2 in CHARACTER::SkillLevelUp(unsigned long, unsigned char) at char_skill.cpp:576
7. 브레이크 포인트 제거
(gdb) delete 1
(gdb) info b
Num Type Disp Enb Address What
2 breakpoint keep y 0x080c91f2 in CHARACTER::SkillLevelUp(unsigned long, unsigned char) at char_skill.cpp:576
8. 디버깅 시작
(gdb) c
Continuing.
9. 프롬프트 모드로
^C
Program received signal SIGINT, Interrupt.
0x283a32af in poll () from /lib/libc.so.5
(gdb)
10. 프로세스 연결 해제
(gdb) detach
Detaching from program: home/myevan/game, Process 46674, Thread 0
(gdb) quit
$
관련링크:
KLDP GDB 잘 쓰기
GDB 를 이용한 디버깅


python 을 좋아하는 게임 프로그래머