XNA / C # 플랫폼의 스크립팅 언어로서 Lua와 Python의 장단점은 무엇입니까? [닫은]


9

게임에 대한 고대의 아이디어 중 하나에 가려고 생각하고 있습니다. 이 게임의 핵심은 게임 환경과 객체 (예 : 우주선 무기의 행동 수정)에 대한 가능한 기능 맞춤화 수준입니다. 이를 위해 게임은 스크립트 가능해야합니다. 또한 나는 그것을 상업화하는 것을 목표로하지 않으며 단지 나에게 흥미로운 프로그래밍 도전 일뿐입니다.

내가 주로 .NET 사람이므로 게임 자체에 XNA / C #을 사용합니다. 스크립팅의 경우 Python 또는 Lua를 사용하는 것이 좋습니다. 나는 이전에 파이썬에 대한 경험이 있고 언어로서 그것에 대해 아무것도 없다. 반면에 루아는 내가 여기저기서 수행 한 약간의 월드 오브 워크래프트 애드온 수정 외에도 거의 완전히 새로운 것입니다. 내 질문은 다음과 같습니다.

XNA / C # 플랫폼의 스크립팅 언어로서 Lua와 Python의 장단점은 무엇입니까?

그중 하나가 XNA / C #에서 사용하기가 훨씬 쉽습니까? 그들 중 하나가 XNA / C #과 함께 사용될 때 특정한 장점이나 단점이 있습니까? 왜 XNA / C #에 대해 다른 것을 추천 하시겠습니까?


4
대안을 요구하지는 않지만 C #도 유효한 스크립팅 언어이며 C #을 사용하므로 유지 관리가 매우 적습니다.
William Mariager

2
왜 스크립팅 언어가 필요한가요? 어떤 혜택을 기대하십니까?
피터 Ølsted

2
둘 다 인기 있고 전문적으로 사용되며 스크립트 부분을 수행 할 수 있습니다. 그것은 응용 프로그램의 99 %에 대한 맛의 문제 일뿐입니다. 파이썬에는 더 나은 표준 라이브러리가 있으며 제 생각에는 더 사용자 친화적 인 언어입니다.
Cloudanger

1
'당신은 고려 했습니까?' 당신은 생각 해 봤나 우우를 ? 스크립팅 언어가 아닌 스크립팅을 위해 설계되었습니다. IronPython과 유사하게 호스팅 도우미가 내장되어 있으며 XBox와 같은 대상을 해석 할 수도 있습니다.
Jonathan Dickinson

1
또한 시각적 스크립팅을 무시하지 마십시오 (Staredit-Starcraft 1 편집기와 유사).
Jonathan Dickinson

답변:


11

지금까지 C # 게임에 IronPython을 내장 한 경험이 있었기 때문에 두 가지를 비교할 수 없습니다. 그래도 내가 좋아하는 것은 다음과 같습니다.

1) 쉽다! IronPython DLL을 다운로드하고 프로젝트에 참조를 추가하십시오.

 using IronPython.Hosting;

 var engine = Python.CreateEngine();
 var product = engine.Execute<System.Numerics.BigInteger>(@"
 print ' '.join(['hello', 'from', 'ironpython!'])
 a = 123456789
 b = 10
 a**b
 ");
 Console.WriteLine("a**b={0}", product);

2) 위의 예에서 볼 수 있듯이 IronPython은 실제로 가능한 경우 BCL 클래스로 변환합니다. 스크립트의 결과는 PyObject가 아닌 System.Numerics.BigInteger입니다.

3) dynamicC # 의 키워드는 정적 유형을 사용할 수없는 interop 상황을 위해 만들어졌습니다.

    dynamic example = engine.Execute(@"
class Example(object):
  def __init__(self):
    self.breakfast = ['ham','spam','eggs']
    self.lunch = 'BRAIINNNZ'
Example() # return an example");

    foreach(string item in example.breakfast)
        Console.WriteLine(item);
    Console.WriteLine(example.lunch);

아이언 파이썬 실행을 얻는 것이 얼마나 쉬운지를 보여주는 좋은 예를 위해 +1 .... 비록 OP는 아니었지만 ;-)을 요청했습니다.
tobsen

0

IronPython과 C #은 잘 어울리고 IronPython을 C #에 추가하여 성능을 향상시킬 수 있습니다. 따라서 쓰기 게임이라면 C # 내의 Python 호출이 유리합니다. 파이썬 자체는 XNA를 사용할 수 없지만 Directx를 사용할 수는 있지만 C #은 직접 할 수 없습니다.


1
FWIW, Python은 DirectX를 "직접"사용할 수 없습니다. D3D가 C / COM API라는 사실에 따라 래퍼를 통해 상호 작용합니다. 이것이 바로 C #에서 DirectX에 액세스하는 방법입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.