IronPython 3D 프로그래밍 프레임워크

Posted at 2010/06/10 21:14// Posted in IronPython
IronPython 을 사용하는 목적은 아무래도 "한번 작성해서 모든 플랫폼에 적용하자" 일 것입니다.
멀티 플랫폼하면 아무래도 Mono + OpenGL 이겠죠?

모노에서 사용가능한 3D 프로그래밍 프레임워크를 찾아보니
http://www.mono-project.com/Libraries
  • Tao
  • OpenTK
  • Orge.NET
  • Irrlicht NETCP
  • Axiom 3D
  • GtkGLAreaSharp
위와 같은 것들이 있는데...

OpenTK 쪽이 제일 만만해보이는군요.
http://www.opentk.com/

설치한 다음 바이너리 폴더에서 OpenTK.dll 파일을 가져와 IronPython 폴더에 복사해주면 준비 끝입니다 -_-)/

사용자 삽입 이미지

사용 방법도 간단하네요~

more..



의외로 쉽게 별 문제없이 결과를 확인해 볼 수 있네요 ~(-ㅁ-)~
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/06/10 21:14 2010/06/10 21:14

IronPython-2.6.1

Posted at 2010/06/10 18:10// Posted in IronPython

http://ironpython.net/

오오 -ㅁ-; iron python 1.x 의 허접함에 실망해서 거의 신경 쓰지 않고 있었는데...


엄청나게 강한 모습으로 다시 돌아왔습니다.

최근 앞으로 변화되는 플랫폼에 대응하기 위해 아래 3가지로 고민하고 있었는데...

1. HTML5 + JavaScript

2. FLASH + Action Script

3. Unity3D + JavaScript, CLR 언어

4. nebula3 + C++



사실 마음에 내키는게 별로 없었거든요.

HTML5 는 핵심인 canvas 기능에 대해 MS 가 딴청부리는 중인데다;
JavaScript 무조건 소스 공개 스타일이 게임에는 적합하지 않아보였고


FLASH 는 애플에서 노골적으로 거부를 하는 상황이죠;

Unity3D 는 과연 커스터마이징이 어느정도 될 것인가... 문제 발생시 대처가 어느정도나 가능할까...
(무엇보다 설치 후 툴이 실행 안되는 모습에 신뢰도가 -ㅅ-;; DEP 문제라는 것 같은데... )

nebula3 는 코어는 맘에드는데 최근 업데이트가 거의 없는데다가;
과연 다른 플랫폼에 대응하려면 엄청난 노력이 필요할것 같더군요.




제가 생각하는 프로그램을 만드는 가장 좋은 방법은

일단 스크립트 언어로 편하게 프로토 타입을 만든 다음
필요한 부분만 저수준 언어로 확장 모듈을 만드는 방법이거든요.


그런데 c 나 c++ 만 10년 정도 하신 분들은 새로운 언어에 대한 두려움아 꽤 많은 것 같더라구요.
더군다나 통합 디버깅 환경도 지원이 안되면... 모르겠다 -ㅁ-)~ 이런 결과가...;

이런 점에서 IronPython-2.6.1 버전은 꽤 괜찮은 솔류션으로 보입니다.

홈페이지 첫화면에 떠있는 대형 문구!

IronPython Tools


for Visual Studio 2010


오오 -ㅁ-);

다운로드 받아서 돌려보니

단독 실행 파일 생성 을 지원하더군요!!



ipy.exe Tools\Scripts\pyc.py /out:test /target:exe /main:test.py /platform:x86


Windows 뿐만 아니라 Mono 가 지원되는 유닉스 계열 운영 체제나 모바일 운영체제도 지원되죠
동일한 바이너리로 말이죠! -ㅁ-)! 오오;


파이썬 모듈은 ctypes 도 가능!


IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.4927
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> ctypes.cdll.msvcrt.puts(b"HAHA")
HAHA
0
>>>


ctypes 가 된다는 말은 .NET 안쓰고
기존에 c/c++ 로 작성된 dll 을 그냥 불러와서 사용할 수 있다는 이야기거든요! 확장 모듈 만들기가 쉽다는 말이죠

>ㅁ<) 와하하~



멀티 코어 시대에 GIL 때문에 난감한 CPython 과는 달리


멀티 쓰레딩도 어느정도 지원한다는 것 같고요~



다만 몇가지 문제가 있긴 한데...

그중 하나가 성능입니다.

2008 년 성능 비교 (음... ;; )
http://ironpython.codeplex.com/wikipage?title=IP20VsCPy25Perf&referringTitle=IronPython%20Performance&ProjectName=ironpython


2010 년 성능 비교 ( 아아-_-;; )
http://ironpython.codeplex.com/wikipage?title=IP261Net20VsCPy26Perf&referringTitle=IronPython%20Performance

2년이 지난 결과가 오히려 더 안 좋다는건 그만큼 CPython 성능이 좋아진걸로 받아드리도록 하죠. 흠흠;;


개별 성능 비교를 보면 극단적인 결과를 찾아볼 수 있습니다.

빠른건 2배 가까이 빠른데

느린건 (구체적으로 말하면 문자열 처리-_-) 2배 이상 느리네요;;


열심히 최적화하다보면 언젠가는 빨라지지 않을까 기대해 봅니다.
(왜 이렇게 느린지는 소스를 한번 뜯어 봐야 할 듯 합니다)



두번째 모듈은 아직까지 Python 모듈 포팅이 완벽하지 않습니다.
자주 사용되는 모듈 중심으로 70% 정도 진행된것 같은데...

신기하게도 제가 자주 사용하는 expat 이 빠졌더군요 T_T)~


덕분에 xml.dom.minidom 을 사용 못하고 있습니다 orz;


스크립트 언어를 쓰는 이상 느리거나 없는 건 만들어 쓰는게 당연하니
큰 문제는 없으리라고 생각됩니다~

이런 이유로 오늘부터 저는 IronPython 의 세계로 들어가겠습니다. 햐햐 -ㅂ-)~
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/06/10 18:10 2010/06/10 18:10