C++ 에 대한 회의 ~(-_-)~

Posted at 2010/06/17 19:14// Posted in freetalk
IronPython 을 보고 난 다음 c# 과 .net framework 에 빠져버렸습니다~

리눅스랑 iMAC 에서 거짓말처럼 잘 돌아가더라구요 >ㅁ<)~
http://www.mono-project.com/Main_Page

아직 돌려보지는 않았지만 iPod Touch 랑 iPhone 도 지원한다고 하고
http://monotouch.net/

올해 8월쯤이면 안드로이드까지!! 두둥!
http://androidcommunity.com/novel-monoc-is-developing-monodroid-20100217/




최근 들어 C++ 에 대한 회의가 들고 있었거든요...

boost 활용의 절정이라 할 수 있는 libtorrent 의 난감한 코드라던지...;
STL 썼을때 libcmt,lib 링크 에러라던지, 바이너리 레벨 호환이 안되는 문제라던지...;
다른 언어와의 연동시 c 언어에 비해 매우 불편하다는 점이라던지..; ( C++ - C# 연동은 최악이더군요 ㄱ- )
언제든지 방심할 수 없는 메모리 릭, 크래쉬 ...;
지저분한 인터페이스...;
느린 컴파일 속도...;
쓸데없이 커다란 용량..;


boost 나 차기 c++ 표준이 추구하는 방향은 훌륭해보입니다만;
저수준 언어와 고수준 언어의 사이에서 태어난 c++ 이 가진 근본적인 모순점을 벗어나기에는 힘들어보입니다.

하드웨어와 운영체제를 담당하는 분야는 c언어같은 저수준 언어로 작성하고
컨텐츠는 스크립트 언어나 Java, c# 같은 언어로 작성하는 것이 훨씬 깔끔하죠 ~(-_-)~

컨텐츠를 작성하다 실수로 저수준 영역을 건들여 오작동이나 크래쉬를 만들어내는
과도기 언어 C++ 은 이제 역사의 뒤안길로 사라질 때가 되었다고 생각합니다.
( 물론 완전히 사라지기보다는 c 언어 보조 역할 정도 하게 되지 않을까 싶내요~ )


모든 컨텐츠가 스크립트 언어(JavaScript, PHP, ASP, Python, Ruby, ...)로 작성될리는 없을 것이고
속도나 보안을 요구하는 프로그램은 컴파일러 언어(JAVA, C#, VisualBasic, ...)가 사용될텐데,
JAVA 보다는 C# 쪽이 좀더 가능성이 있어보입니다~

거의 대부분이 플랫폼에서 실행된다는 점은 JAVA 와 C# 이 비슷하지만
가장 큰 시장을 갖고 있는 MS 의 전폭적인 지원이 있는데다,
다양한 언어를 사용할 수 있어서 이미 구축된 코드풀을 사용할 수 있다는 점도 매력입니다.

유일한 단점이 MS 외의 시장에서 거의 사용이 안된다는 점이었는데,
모노 프로젝트로 인해 거의 희석되어 버렸다는 것이 큰 호재로 작용하고 있는 것 같습니다.



ps.
요즘 C# 과 닷넷 프레임워크도 공부하고
게임 엔진 트렌드도 익힐 겸해서

nebula3 포팅중
입니다 ♡

http://dev.naver.com/projects/nebula3dotnet/

닷넷 프레임워크에서 지원하는게 많아서 의외로 쉽게 되네요~ ㅎㅎ

IronPython 연동도 해봤는데... 오오 -ㅅ-; 빌드만 한번 더 해주면 끝이네요~
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/06/17 19:14 2010/06/17 19:14

소켓 버퍼 크기 설정

Posted at 2010/02/02 12:03// Posted in network

//option= SO_RCVBUF | SO_SNDBUF
int SetSockBufSize(int option, int size)
{
int ret=0;
for (int trySize=size; trySize>=1024; trySize-=1024) {
if (setsockopt(m_socket, SOL_SOCKET, option, (char FAR *)&trySize, sizeof(int))==SOCKET_ERROR) {
int err=WSAGetLastError();
if (err==WSAENOPROTOOPT || err==WSAEINVAL) break;
} else {
int len=sizeof(len);
getsockopt(m_socket, SOL_SOCKET, option, (char FAR *)&ret, &len);
break;
}
}
return ret;
}

이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/02/02 12:03 2010/02/02 12:03

으햐햐 ~(-_-)~ 겜브료 터레인~

Posted at 2009/02/21 17:16// Posted in gamedev
이틀동안의 삽질끝에
터레인을 지원하면서도 달랑 레이어 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- ~
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/02/21 17:16 2009/02/21 17:16