게임에 어떤 스크립팅 언어를 선택해야합니까? [닫은]


53

어떤 경우 스크립팅 언어가 다른 언어보다 낫습니까?

모든 답변에 감사 드리며, 설명을 제공하고 언어가 어떤 경우에 탁월한 지 설명하십시오.

(답변 당 하나의 언어를 기억하십시오)

답변:


39

루아는 게임 산업에서 널리 사용됩니다 . 독립 게임 ( Aquaria )에서 AAA 타이틀 (Civilization)까지.

핵심 이유는? 배우기 쉽고 게임에 쉽게 통합 할 수 있기 때문에 저는 말할 것입니다. 그러나 파이썬에 대해서도 마찬가지입니다. 일반적으로 스크립팅은 어렵지 않습니다. 루아와 함께 가야 할 진짜 이유는 그것이 증명할 수 있기 때문에 당신이 배울 수있는 훨씬 더 많은 자원을 얻을 수 있기 때문이라고 생각합니다. 표준 밖에서 무언가를 실험하고 싶다면 다른 언어를 엉망으로 만들기 시작합니다.


8
루아는 "메타 언어"기능을 제공하기 때문에 매우 인기가 있습니다. 객체 지향 구조 또는 순수한 절차 함수 등을 구현할 수 있습니다. 매우 간단한 C 인터페이스를 가지고 있으며 엔진 개발자에게 언어 자체에 많은 유연성을 제공합니다.
Karantza

3
파이썬이 좋은 선택을 할 것이라고 확신하지는 않습니다. 파이썬의 C 바인딩은 파이썬을 C로 확장 한 다음 파이썬을 C에 포함시키는 데 훨씬 더
적합합니다

5
내가 들었던 것에서 Ĺua는 파이썬과 같은 다른 스크립팅 언어와 비교할 때 런타임 성능이 좋습니다. (그리고 그것은 폐쇄에 대한 완전한 지원을 가지고 있습니다-당신이 나에게 묻는다면 정말 멋진 기능입니다.)
thbusch

2
실제로 문명 IV는 파이썬을 사용합니다 ...
Emiliano

2
실제로 @happy_emi, 동안 문명 V는 루아 사용
토비아스 Kienzler

22

청설모

다람쥐는 흥미로운 역사를 가지고 있습니다. 게임 아키텍트가 Lua의 예측할 수없는 가비지 콜렉션에 문제가 발생한 이후에 만들어졌으며 존재하지 않더라도 모든 것이 null 입니다.

다람쥐는 Left 4 Dead 2 에서 사용되는 습격 언어 입니다. API는 매우 루아와 비슷합니다 (Squirrel의 저자 는 Lua의 디자인을 좋아합니다 ).

다람쥐는 2 세대 루아처럼 멋진 언어입니다. 그것은 좋은 아이디어를 취하고 성가신 편심을 제거했습니다.

루아와 동일 :

  • 코 루틴
  • 테이블과 메타 테이블
  • 동적 유형
  • 아주 더 많이

다람쥐에 새로운 :

  • 클래스
  • 배열
  • 루아의 일치 구문 대신 정규식.
  • Pascal / Delphi 스타일 대신 C / C ++ / Java / C # 스타일 언어.
  • 아주 더 많이

다람쥐의 주요 단점은 루아가 아니라는 것입니다. 루아가 훨씬 더 널리 사용됩니다. 그러나 그것이 문제가 아니라면 다람쥐는 쉬운 승리입니다. 그러나 종종 언어의 인기는 그 자체로 유용한 기능이므로 결정이 명확하지 않습니다.


9

Google의 V8 Javascript

프로 :

사용하기 매우 쉽다

지속적으로 향상

강력하고 유연한

다른 사람은 많은 사람들이 언급 한 바와 같이, 자바 스크립트는 일반적인 프로그래머 도구입니다. 내 게임에 추가하면 다른 언어보다 유능하다고 느끼는 사람들이 훨씬 많아졌습니다. 또한 프로그래머의 작업을 절약하기 위해 대량의 캐스팅 및 변환을 지원하며 사용하기가 쉽고 STL과 잘 작동합니다.

가능한 CON :

문서가 혼란 스러울 수 있습니다 . 실제로 최고는 아닙니다.

종종 이상한 웹. 탄탄한 단순성이 결여되어있는 것보다 더 높은 수준으로 제공됩니다.

템플릿 때때로 이들은 싫어하거나 피합니다.

SDK 코드베이스 크기 생성 된 코드 크기는 부풀려 질 수 있습니다.


나를위한 한 가지 단점은 크기였습니다. 단순 / 캐주얼 게임을 제작하는 경우 v8 엔진은 상당히 크며 전체 게임보다 몇 배 더 클 수도 있습니다.
Zack The Human

사실이지만 독립형 .lib 파일로서 큰 문제가 있습니까? SDL 또는 루아 옆에 슬롯이 있습니다. 생성 된 코드 크기를 의미한다면, 그것이 얼마나 큰지 테스트하지는 않았지만 그다지 나쁜 점은 아닙니다.
밑줄 발견

생성 된 코드 크기를 의미했습니다. 오늘날 대부분의 게임 크기를 고려하면 그리 크지 않다고 생각합니다.
Zack The Human

1
1.441 MB bit.ly/9DNn8J의 최신 SVN 클럭으로 기본 shell.cc 테스트를 거쳤 습니다 . 이것은 상당히 무거워 보이지만 대부분의 라이브러리는 다른 작업 (네트워킹, 그래픽)을 수행해야합니다. v8, phoenixGL, ENet, 부스트 및 솔루션 (압축, 암호화, gui 라이브러리, awesomium과 같은) 솔루션 내부의 많은 코드가 Visual Studio 2008에서 2.5MB로 클럭됩니다. 릴리스 "빌드 가중치는 861KB입니다. 나에게 그게 다 나쁜 것은 아닙니다. 하지 :하지만 대부분의 - 특정 플랫폼에 나는 귀찮은 것을 볼 수 있었다
underscorediscovery

1
내 프로젝트에서 V8을 몇 번 사용했습니다. IMO Javascript는 게임 스크립팅에 사용하기에 가장 이상적인 언어입니다. 이벤트 기반 특성 및 프로토 타입 기반 개체는 모든 것을 매우 쉽게 만듭니다. :)
Stephen Belanger

7

게임과 대상 플랫폼에 따라 다릅니다.

비 플레이어 캐릭터 100 명 (RTS 게임)을 운영하는 게임은 2 명 (Street Fighter)을 운영하는 게임과는 다른 요구가 있습니다. PC에서 실행되는 게임은 콘솔에서 실행되는 게임과는 다른 요구 사항이 있습니다.

루아가 인기

GameMonkey 는 여러 팀에서 사용합니다. 루아보다 빠르며 스레딩에 더 좋습니다.

파이썬은 여러 게임에서 사용되었습니다.

JavaScript 엔진을 다운로드 할 수 있으므로 JavaScript가 가능한 옵션입니다. 다른 유형의 프로그래머보다 JavaScript 프로그래머가 더 많습니다.

특수 언어도 있습니다.

SCUMM은 여러 어드벤처 게임에서 사용되었으며 특히 해당 게임에 적합합니다.


자바 스크립트는 정말 좋은 생각입니다. 왜이 공간에서 견인력이없는 것 같습니까? 어떤 아이디어?
cflewis

JavaScript에는 견인력이 있습니다. Unity가 사용합니다. 그들의 엔진을위한 Wolfire Games도 마찬가지입니다.
AA Grapsas

두 엔진은 실제로 견인력을 발휘하지 않습니다. 최근 개발 한 이유는 Mono 및 V8 이전에는 훌륭한 JavaScript 인터프리터가 많지 않았기 때문입니다. SpiderMonkey는 당신이보고 말한 것이 아닙니다. "그렇습니다. 내 게임이 그렇게 빠르고 깨끗하고 안정적이기를 원합니다!"

4

완벽을 기하기 위해 또 다른 옵션은 mono-script 이며,이를 통해 .NET 프레임 워크의 Novell 구현을 스크립팅에 사용할 수 있습니다. 그것은 무엇 유니티 사용합니다. 다음 은 애플리케이션에 모노임베드하는 방법 에 대한 다른 페이지 입니다.

Mono 프레임 워크는 해석되지 않기 때문에 대부분의 스크립트 언어 (아마도?)보다 빠르며, 컴파일러와 명령어 세트 사이에 계층이 있으므로 C # 및 방언을 포함한 다양한 언어로 프로그래밍 할 수 있습니다. 파이썬, 루아 및 자바 스크립트.

그러나 모든 플랫폼에서 무료인지 확실하지 않습니다.


4
콘솔 개발을 수행하는 경우 데이터 페이지를 실행 가능으로 표시 할 수 없기 때문에 JITing 코드는 문제가되지 않습니다. IL은 대상 플랫폼에 사전 컴파일되어야합니다.
Jeff

3
JIT 문제는 iOS에도 적용됩니다. 또한 Mono에는 라이센스 제한이 있습니다. 최종 사용자가 모노 런타임을 업그레이드 할 수없는 환경에서 사용하려면 상용 라이센스가 필요합니다.
Sam

4

개인적으로, 내 프로젝트에 스크립팅 언어를 선택할 때 AngelScript (아래 링크 참조)가 Lua보다 C ++에 바인딩하기가 훨씬 쉽다는 것을 알았습니다. (실제로 약간의 유연성을 희생시키면서보다 사용하기 쉽도록 작은 래퍼 라이브러리를 작성했습니다.)

http://www.angelcode.com/angelscript/

그러나 Lua는 상업용 게임 개발자에게 매력적인 몇 가지 장점이 있다고 생각합니다.

(a) AngelScript보다 더 성숙하고 널리 퍼져 있습니다.

(b) 문법은 프로그래머가 아닌 사람에게는 쉽다 (AngelScript는 C ++과 매우 유사하다)

(c) AngelScript보다 발자국이 작습니다 (적어도 내가 기억하는 한)

그러나 취미 프로젝트를 작성하고 있다면 AngelScript는 적어도 가치가 있다고 말할 것입니다.


2

게임의 기본 개발 언어에 안정적으로 잘 지원되는 스크립팅 언어를 선택해야합니다. C 또는 C ++로 게임을 작성하는 경우 Python 및 Lua에 사용할 수있는 견고한 바인딩이 있습니다. C # 또는 다른 언어를 사용하여 .NET 플랫폼 용 게임을 작성하는 경우 IronPython 또는 IronRuby를 사용하는 것이 좋습니다. 둘 다 Microsoft의 DLR (Dynamic Language Runtime)을 활용하는 완벽한 언어 구현으로, 뛰어난 성능과 .NET Framework와의 긴밀한 통합을 제공합니다. C #과 IronPython / IronRuby 간의 상호 운용성은 요즘 매우 부드럽습니다. 특히 C # 4.0에 동적 콜 사이트 바인딩이 도입되었습니다.


2

계획

음, 교활 특히.

guile을 사용하면 게임 전용 DSL (Domain Specific Language)을 가질 수 있습니다. 괄호와 접두사 표기법에 익숙해지면 스키마가 작동하게됩니다.

진지한 게임에서 guile을 사용하려면 IIRC, Ecmascript 인터프리터 및 현재 스킴을 포함하여 2.0 릴리스까지 몇 달을 기다릴 것입니다. 또한 속도가 크게 향상 될 것으로 기대할 수 있습니다.


1

이것은 실제로 필요한 것에 달려 있습니다. David가 지적했듯이 Lua는 매우 인기가 있지만 한 게임 개발자가 왜 그 이유를 완전히 알지 못한다고 언급했습니다. 나는 그 가벼움이 일반적인 이유라고 생각하지만,이 시점에서 많은 사람들이 루아를 사용하기를 기대할 것입니다. 그것이 사실상 표준이 되었기 때문입니다. 매우 가벼운 수정에 가장 적합합니다.

보다 완전한 접근 방식을 위해서는 Python이 올바른 선택이라고 말하고 싶습니다. Civ IV는 그것을 적절한 효과로 사용했습니다.


0

하나의 스크립트 언어를 다른 언어로 선택하는 것은 특정 요구 사항에 따라 다릅니다.

선택해야 할 옵션 중 일부는 다음과 같습니다.

인터프리터 속도 – 개발자가 정적 동작을 스크립트하기 위해 스크립팅 기능 만 사용하는 경우 속도와 본격적이고 확장 가능한 API가 가장 중요한 측면 일 수 있습니다. 나는 LUA와 함께 좋은 경험을했습니다.

배우기 쉽고 접근성-컨텐츠 / 레벨 디자이너의 경우 동적 동작을 생성하기 위해보다 복잡한 스크립팅 언어 (배경에 따라 다름)를 배우기가 어려울 수 있습니다. 이 경우, 배우기 쉽고 (즉, 일반적으로 사용되는) 잘 문서화 된 언어를 사용하는 것이 더 적절할 수 있습니다. JavaScript 또는 Python이 좋은 해결책이 될 수 있습니다.

워크 플로 통합-기존 도구가있는 특정 생산 파이프 라인이있는 경우 다른 도구가 완전히 다른 도구를 사용하는 경우 해당 사례에 가장 적합한 언어를 사용하는 것이 좋지 않을 수 있습니다. 여러 도구를 사용하는 여러 프로그래머가있는 경우 특히 유효합니다. 이 경우 "잘 맞지 않는"언어를 사용하는 것이 더 효율적일 수 있습니다.


0

Windows 제목을 작업하고 CLR (Common Language Runtime)을 기반으로 실행되는 관리 코드를 작성하는 경우 (예 : C #)-(Iron) Python을 스크립팅 언어로 통합하는 방법을 제안합니다.

내 경험상, 파이썬은 비 프로그래머 / 디자이너에게 가르치기 매우 쉽습니다. 본질적으로 의사 코드처럼 읽으므로 개발자가 더 쉽게 선택할 수 있습니다. 동적으로 입력하는 것은 사전 코딩 경험이 거의 없거나 전혀없는 사람들이 언어를 빠르게 사용할 수 있도록하는 측면 중 하나 일뿐입니다.

배우기 쉽고 강력한 언어 외에도 Microsoft의 CLR 및 언어 팀 (Anders Hejlsberg, Eric Lippert, Mads Torgersen, Jim Hugunin 등)은 새로운 Dynamic을 통해 컴파일러 및 런타임 기능을 노출하는 데 큰 노력을 기울였습니다. .NET 4의 DLR (언어 런타임)은 정적 형식 코드와 동적 형식 코드 간의 상호 운용성을 훨씬 더 간단하게 만듭니다. 지금까지 보았고 시도한 것에서 상용구 코드가 최소로 줄었습니다. 코드베이스를 깨끗하고 유지 관리 할 수 ​​있습니다.

이것을 사용하여 게임의 스크립트 부분과 엔진 사이의 마찰을 매우 낮게 유지할 수 있습니다. 동일한 VM 내에서 두 가지를 모두 실행하면 런타임 중에 런타임에서 더 많은 코드를 최적화 할 수 있습니다.


0

대답은 환경에 따라 다릅니다. 현재 Unity와 함께 일하고 있으므로 모노 기반 언어를 사용합니다 (제 경우 C #이지만 Javascript 및 Boo도 옵션입니다). 대답은 전적으로 특정 상황에 따라 다릅니다.


-2

ActionScript는 Flash 게임 제작에 사용되는 하이브리드 동적 / 정적 유형 언어이며 웹에 널리 배포 될 수 있습니다. Flixel, FlashPunk 및 Box2d와 같은 라이브러리에서 상당히 잘 지원됩니다.


-2

스크립팅 언어를 사용하는 기존 팀이나 스크립팅을 사용할 리드 (레벨) 디자이너가있는 경우 원하는 언어를 선택하십시오. 그들은 그것으로 그들의 시간을 보낼 것이므로, 그들은 수용해야합니다.

[소금 한 알] 누군가가 없거나 장기 계획이 없다면 자신의 롤만드십시오 . 예, 스크립팅 언어에 대한 컴파일러 및 / 또는 인터프리터를 작성하는 데 1 ~ 2 주가 소요될 수 있지만 장기적으로 유연성은 여러 번 지불됩니다. 너무 망쳐 서 머리를 재발견하지 마십시오. [/ 곡물 소금]


나는 lisp / scheme 또는 bash 또는 python이나 lua 또는 erlang (표준 라이브러리가없는 것)과 같은 sth를 위해 haskell에 인터프리터 또는 jit 컴파일러를 1 ~ 2 일 안에 작성합니다. sth lisp를 해석하기위한 것이 아니라면 C ++ 또는 Java로 인터프리터를 작성하지 않는 것이 좋습니다. 그러나 그것은 문제가 아니었다.
comonad

나는 그 질문이 어떤 언어를 사용할 것인지 결정하는 것이 아니라 스크립팅 언어의 장단점에 더 중점을 두었다고 생각합니다. 여전히 도움이됩니다.
Michael Coleman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.