개발시 스크립트를 사용하는 이유는 무엇입니까? 의해 호출됩니다. 그런 다음 스크립트는 해당 솔루션에

현재 프로젝트에서 Lua 스크립트는 서버 측의 C ++ 함수에 의해 호출됩니다. 그런 다음 스크립트는 해당 솔루션에 여전히 C ++ 함수를 다시 호출합니다. 왜 우리는 그런 일을하고 C ++ 함수를 직접 호출하지 않아야합니까? 스크립트가 필요한 상황은 무엇입니까?



답변

스크립트는 일반적으로 런타임에 컴파일 되지만 호스트 언어는 컴파일 타임에 컴파일됩니다. 즉, 스크립트가 변경되면 다시 컴파일 할 필요가 없습니다. 전체 게임을 다시 컴파일하는 데 몇 분에서 몇 시간이 걸릴 수 있으며 이는 큰 생산성 저하를 의미합니다.

일반적으로 중요한 코드 또는 백엔드 코드는 스크립팅되지 않습니다. 이 코드는 빠르게 실행되어야하며 종종 메모리 관리가 중요합니다.
게임에서 게임 논리 및 구성은 일반적으로 스크립트 파일에 포함됩니다. 이 스크립트는 프로그래머가 아닌 프로그래머 (예 : 디자이너)가 쉽게 업데이트 하여 게임 플레이를 조정할 수 있습니다. 스크립트 언어는 쉽고 그 목적을 위해 용서하는 방식으로 행동합니다.

종종 스크립트 언어는 실시간 스크립팅 에도 사용됩니다 . 일부 게임 플레이 요소를 조정하거나 디버깅 할 때 편리합니다. 많은 게임들이이 목적 (주로 사내)을위한 콘솔을 제공합니다.

스크립트만으로 기존 게임 엔진을 사용하여 게임을 만들 수 있습니다. 게임 엔진 층 따라서 완전히 게임 로직 계층으로부터 분리된다 . 현대 엔진은 일반적으로 이와 같이 쉽게 FPS 또는 RTS 게임을 만드는 데 사용될 수 있지만 어떤 장르에서도 가능하지 않습니다. MMO에는 다른 유형의 엔진이 필요할 수 있습니다.

결론은 디커플링입니다. 위에 나열된 이점은 스크립팅 언어를 만들거나 통합하기위한 추가 작업보다 종종 비쌉니다.


답변

당신은 잘못된 질문을했습니다. 실제 질문은 왜 C, C ++, Java 등과 같은 “스크립트가 아닌”언어를 사용하는 것입니까? 답은 성능입니다. (그리고 관성 일 수도 있지만 성능 때문에 관성이있을 수 있으며, 훌륭한 C / C ++ / Java를 작성할 수있는 사람이라면 누구나 최소한 통과 가능한 Ruby / Python / Lua / JavaScript를 작성할 수 있습니다.)

우리는 “스크립팅”언어 (실제로 높은 수준의 가비지 수집, 일반적으로 느슨한 타이핑 및 동적 컴파일의 형태를 의미 함)를 사용합니다. 일반적으로 프로그래머를 포함한 모든 사람이 코드를 작성하는 데 더 쉬운 언어이기 때문입니다. malloc 후 해방시키는 것을 기억하거나 코드가 예외 안전하다는 것을 확인하거나 모든 소멸자를 가상으로 만드는 것을 기억하는 것과 같은 어리석은 것들 . 우리 컴퓨터가 무한히 빠르다면 모든 것을 위해 “스크립트”언어를 사용할 것입니다.


답변

게임 로직을위한 스크립팅 언어는 소프트웨어 아키텍처 패턴 Alternate Hard and Soft Layers 의 좋은 예입니다 . 그 사이트의 장점과 그에 대한 이점에 대해서는 그 사이트에 대해 좋은 토론이 있습니다.


답변

  1. 각각의 새로운 루아 클래스는 두 줄입니다. 각각의 새로운 C ++ 클래스는 고통입니다.
  2. 원하는 모든 유형이 값을 섞는 것만으로도 유형에 대해 걱정하지 않습니다.
  3. 가비지 콜렉션.
  4. 스크립트 코드는 가상 컴퓨터에서 멋지게 격리되어 있으며, 방황하는 모든 segfault 및 배열 오버플로와는 거리가 멀습니다.

답변

스크립트 변경 사항을 쉽게 배포 할 수 있습니다. 예를 들어 스크립트를 데이터베이스에 보관하면 전체 이진 재배포 및 가능한 서비스 재시작 대신 단일 SQL UPDATE 문을 실행 한 다음 실행중인 서비스에 신호를 보내 스크립트를 다시로드 할 수 있습니다.

또한 스크립트 언어는 이해하기 쉽고 프로그래밍하기 쉬운 경우가 많기 때문에 대부분의 코드 (대규모 RPG 인 경우, AI, Spells, Item Effects 및 월드 자체의 스크립트는 종종 엔진 코드보다 큽니다). 스크립트 언어를 사용하면 가비지 콜렉션 (루아의 경우) 및 더 높은 수준의 추상화로 인해 ‘방법’보다는 ‘무엇’에 더 집중할 수 있습니다.


답변

스크립이 유용한 한 가지 시나리오는 플러그인 / 애드온으로 엔진을 확장하려는 경우입니다. 이러한 확장은 많은 경우에 비전문가 (예 : 고급 게이머 및 애호가)에 의해 만들어집니다. 이 목적을 위해 스크립트가 더 안전하고 쉽습니다. 스크립트를 사용하면 컴파일러를 사용할 필요가 없으며 포인터를 알 필요가 없습니다 …

이에 대한 좋은 예는 월드 오브 워크래프트 게임입니다. 커뮤니티에서 만든 수천 개의 애드온이 있습니다. 이 애드온은 LUA + XML을 사용하여 작성되었습니다.