C ++ 게임 프로젝트에 어떤 스크립팅 언어를 추천 하시겠습니까? [닫은]


14

여기서 스크립트를 작성한다는 것은 스크립트에 구성 데이터를 넣는 것이 아니라 일부 클래스 메소드, 테스트 특정 게임 루프 등과 같은 프로젝트의 일부를 스크립팅하는 것을 의미합니다. 게임의 일부 측면을 조정하는 스크립트.

Lua와 같은 일부 언어에는 luabind와 같은 래퍼가 있지만 과거에 사용했을 때 상속 컨텍스트에서 메소드 재정의를 지원하지 않기 때문에 문제가있었습니다.

사용하거나 사용하지 않을 언어 / 랩퍼에 대한 제안은 무엇입니까?

답변:


9

루아 스크립팅 비디오 게임
루아 스크립팅 게임 엔진

나는 루아가 최고의 기회라고 생각합니다.

이 기사 는 Lua와 C ++의 통합에 관한 것입니다. 그것은 말한다 :

LuaBind는 훌륭한 제품이지만 나에게는 너무 복잡해 보였습니다. 하나의 코드는 클래스와 객체가있는 곳에서 따르기가 쉽지 않습니다. 또한 템플릿을 사용하여 Lua를 wxWidgets 응용 프로그램에 통합하려고한다는 것을 알았습니다 (wxWidgets 사이트에서 크로스 플랫폼 문제를 읽을 수 있음).

다른 많은 바인딩 라이브러리가 있습니다.

http://luabridge.sourceforge.net/
http://www.stackedboxes.org/~lmb/diluculum/
http://cpplua.sourceforge.net/
http://www.tecgraf.puc-rio.br/~ 셀레스 / 톨 루아 /

최고의 C ++ / Lua 래퍼 란 무엇입니까?

선택하고 즐기십시오.


예, Lua는 매우 간단하고 C와 쉽게 통합 할 수 있습니다. 실제로 이것이 Lua의 주요 목표이며 임베디드 언어입니다.
Marco Mustapic

LuaBind에 대한 참조에 감사드립니다. 다른 바인딩 라이브러리를 파고 들면 Lua를 다시 복용하게 될 것입니다.
Frédérick Imbeault

그러나 메인 스레드에서만 스크립트를 실행하는 것이 좋으며 성능이 문제가 될 경우 풀 할당자를 제공하십시오.
Kylotan

5

나는 Chaiscript를 좋아 하고있다 ; 나는 그것을 오랫동안 사용하지 않았지만, 지금까지는 꽤 견고합니다.

Python 또는 lua와 달리 처음부터 C ++과 함께 사용하도록 빌드되었습니다. 바인딩 프로세스는 luabind / etc보다 훨씬 깔끔해 보입니다.

웹 사이트 요약은 다음과 같습니다.

ChaiScript는 C ++ 호환성을 염두에두고 설계된 최초이자 유일한 스크립팅 언어입니다. ECMAScript에서 영감을 얻은 임베디드 기능과 유사한 언어입니다.

ChaiScript는 BSD 라이센스에 따라 라이센스가 부여됩니다.


흥미 롭군 성능 테스트는 어떻습니까? ChaiScript / Lua / Python 비교가 있습니까?
topright

아주 흥미 롭습니다. 지금까지 겪어 온 disavantages / bugs / performance issus가 있습니까?
Frédérick Imbeault

나는 벤치 마크를 보지 못했지만 아직 성능 문제가 없었습니다 ... 지금까지의 주요 그립은 숫자 유형 사이에서 암시 적으로 변환되지 않는다는 것입니다 (따라서 int를 전달하면 오류가 발생합니다) float 등을 취하는 함수 등).
라일리 아담스

1
이 의견은 6 년 전이므로 FYI 일뿐입니다. ChaiScript는 현재 암시 적 숫자 변환을 수행합니다.
lefticus 2016 년

5

나는 Lua를 추천 할 것이다 .
파이썬 도 매우 인기가 있습니다. 많은 추천 게임 엔진 (예 : 블렌더)이이를 사용합니다.
C ++ :: Boost에는 Python과 작동 하는 라이브러리 가 있습니다. Squirrel
대해 읽었 지만 사용하지 않았습니다.

이 게임 엔진 개요를 읽을 수 있습니다 . 이 Scripting열. Lua와 Python이 가장 많이 사용되는 스크립팅 언어임을 알 수 있습니다.


Boost에 관해서는 거대한 라이브러리 일 수 있으며 많은 프로젝트가 모든 프로젝트에서 유용하지는 않다고 생각합니다. 실제로 luabind는 Boost를 많이 사용하며 내가 싫어하는 것 중 하나입니다.
Frédérick Imbeault

1
나는 그것이 이점이라고 말할 것입니다. 기본적으로 많은 솔루션이 있습니다. 그리고 프로젝트에는 외부 의존성이 하나뿐입니다-부스트. 업데이트, 코드 동기화 및 유지 관리가 어려운 많은 작은 라이브러리 (다른 스타일, 접근 방식, 라이센스를 사용하고 extern 암시 적 종속성을 가질 수 있음)는 많지 않습니다.
topright

1
그리고 필요한 Boost 라이브러리 (헤더) 만 포함합니다. 부스트는 거대하지만, 당신이 이것을 필요로 할 때까지 걱정하지 마십시오.
topright

파이썬과 루아에 대해서는 클래스 메소드를 재정의하고 새로운 메소드를 생성 할 수있는 C ++ 용 래퍼가 있습니까? 그리고이 기능은 C ++ 코드 (보안을 위해)에서 제어 할 수 있습니까? 내가 말했듯이 LuaBind는 이러한 일을하지만 상속의 맥락에서 실패합니다. 이는 게임 프로젝트에서 매우 일반적입니다. 내가 재정의하고 싶은 방법은 예를 들어, 특정 게임 루프를 테스트하고, 플레이어와 같은 개체의 방법을 업데이트하고, 게임 세계 자체의 방법을 업데이트하는 것입니다.
Frédérick Imbeault

루아에는 클래스와 객체가 없지만 테이블로 에뮬레이션 할 수 있습니다. 여기에 내가 선호 OOP에 대한 루아 라이브러리는 다음과 같습니다 love2d.org/wiki/MiddleClass .
topright

4

자신 만의 것을 만들어 보시지 않겠습니까?

시간, 인내심 및 배우려는 의지가 있다면 필요한 모든 기능과 구문을 사용하여 자체 스크립팅 엔진을 개발할 수 있습니다.

장점

  1. 컴퓨터 과학의 흥미로운 부분에 대해 배웁니다.
  2. '사내'스크립팅 엔진을 개발하면 엔진을 원하는대로 정확히 맞출 수 있으므로 처음부터 끝까지 완벽한 제어가 가능합니다.
  3. 나중에 변경해야 할 경우 다른 사람의 출입을 배우는 것보다 자신의 코드베이스의 출입을 알기가 다소 쉬워 질 수 있습니다.
  4. 다른 사람의 패치로 엔진을 최신 상태로 유지하는 것에 대해 걱정할 필요가 없습니다.

단점

  1. 시각. 많은 사람들이 가지고 있지 않습니다. 지금 무언가가 필요하다면, 이미 제안 된 엔진과 같은 기존 엔진을 사용해보십시오.

  2. 속도. 기존의 많은 스크립팅 엔진은 매우 빠릅니다. 사용자 정의 솔루션이 빠르지 않을 수 있습니다.

  3. 팀 규모. 기존의 많은 스크립팅 엔진에는 개인 팀이든 글로벌 자원 봉사자이든 상관없이 더 많은 사람들이 코드베이스에서 작업하고 있습니다. 다른 많은 사람들이 확인하고 다시 확인하는 코드에 대해 말해야 할 것이 있습니다.

  4. 스크립팅 엔진을 효과적으로 활용하려면 일정량의 초기 계획이 필요합니다. 실제 스크립팅 엔진과 전혀 관련이 없을 수도있는 구현해야 할 많은 기초가 있습니다.

  5. 플레이어베이스 / 개발자는 스크립팅 엔진에 익숙해 져야합니다. 구문과 기능이 대부분의 최신 스크립팅 엔진과 거의 동일하더라도 문제가되지 않을 수 있습니다.

이것은 완전한 목록이 아닙니다. 원하는 기능을 사용하기 위해 기존 스크립팅 언어의 백엔드를 많이 변경해야하는 경우 IMO를 사용하면 요구 사항에 더 적합한 다른 엔진을 찾거나 직접 작성할 수 있습니다.

나는 사람들이 "게으름"을 던지는 것을 즐기고 바퀴를 재발 명하지 않는다는 것을 알고 있지만이 일이 어떻게 수행되는지 배우는 것에 대해 말할 것이 있다고 생각합니다. 그리고 특정 구현은 일반적인 구현보다 프로젝트에 더 좋을 것입니다.

"C ++에서 스크립팅 시스템 생성"은 사람들이이 주제를 논의 할 때 공유하는 기사로 보입니다 : http://www.gamedev.net/reference/list.asp?categoryid=76


2
나는 이것이 특별한 교육적 이점이 있다는 데 동의했다. 그래도 프로그래밍 언어 이론 (많은 사람들이 생각하고 있음)에 대한 지식과 기술과 컴퓨팅 이론에 대한 지식이 필요합니다. 이 답변 솔기가 누군가에 호소하는 경우에, 나는 논문 두 권의 책을 제안 : amazon.com/gp/product/0136073476/ref=oss_productamazon.com/gp/product/0534950973/ref=oss_product
프레드릭 Imbeault

그러나 그러한 것들에 대한 실제 지식 없이는 얼마나 멀리 갈 수 있는지 놀랄 것입니다. 많은 MUD는 조건을 가능하게하는 해킹이 포함 된 문장 목록에 지나지 않는 스크립트 언어를 가지고 있지만, 이것만으로도 많은 것을 달성 할 수 있습니다.
Kylotan

거기에 있었어요. 파싱, 컴파일러 디자인, 바이트 코드 머신에 관한 많은 것을 배웠 습니다. 다음에는 아마도 루아를 사용하고 더 감사하겠습니다. :)
Kaz Dragon

2

Lua, Python, Scheme 및 Squirrel을 사용해 보았습니다. 루아가 최선을 다했다. 그것은 다람쥐보다 더 큰 커뮤니티와 더 나은 지원을 가지고 있으며, 파이썬보다 훨씬 더 나은 메모리와 성능 특성을 가지고 있습니다. Scheme도 정말 잘 작동했고, 아주 작은 통역사가 있었지만 디자이너가 기능적인 언어로 머리를 감싸기가 어려웠습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.