스크립트와 스크립팅이라는 용어는 게임 개발 스택 교환에서 상호 교환 적으로 사용되는 것으로 보이지만 스크립팅 언어 선택에 대한 질문을 읽는 것 외에는 스크립트와 스크립팅의 관계와 핵심 언어를 이해하지 못합니다. 스크립트는 일반적으로 언제 사용되며 스크립트 언어와 다른 컨텍스트 (게임 프로그래머가 정의한대로)의 스크립트는 무엇입니까?
스크립트와 스크립팅이라는 용어는 게임 개발 스택 교환에서 상호 교환 적으로 사용되는 것으로 보이지만 스크립팅 언어 선택에 대한 질문을 읽는 것 외에는 스크립트와 스크립팅의 관계와 핵심 언어를 이해하지 못합니다. 스크립트는 일반적으로 언제 사용되며 스크립트 언어와 다른 컨텍스트 (게임 프로그래머가 정의한대로)의 스크립트는 무엇입니까?
답변:
스크립트는 스크립팅 언어로 작성되었습니다. 사람들은 속어 문장의 단어를 사용하여 당신이 언급하고있는 혼란을 얻을 수 있지만 스크립트, 스크립팅 및 스크립팅 언어의 정의를 누군가에게 요구하면 다음과 같은 것을 얻을 수 있습니다. 스크립팅은 스크립팅 언어를 사용하여 스크립트를 작성하는 행위입니다.
스크립팅 언어를 게임 엔진에 포함 시키거나 참조 할 때 핵심 언어를 사용하면 게임 엔진 내의 개체뿐만 아니라 게임 엔진에 대한 논리를 작성할 수 있습니다. 또 다른 주목할 점은 스크립트 언어가 기계 언어로 컴파일되는 경우가 거의 없으며 대신 바이트 코드 형식으로되어 런타임에 게임 엔진에 의해 해석되므로 게임을 가상 머신으로 전환한다는 것입니다.
이것은 개발 팀에게 몇 가지 큰 이점이 있으며 그중 일부는 다음에 나와 있습니다.
목록이 계속해서 나올 수 있다고 확신합니다. 특히 특수한 게임 유형에 들어가고 RTS에서 단위 그룹을 이동하기위한 그룹 구성 규칙을 정의하는 데 스크립트를 작성하는 방법 또는 최종 사용자 등에 게 확장 가능한 UI를 제공하는 스크립팅 언어
스크립팅을 사용하면 "핵심 언어"보다 많은 장점이 있습니다. 이들 중 일부는 다음과 같습니다.
스크립트는 일반적으로 핵심 엔진 외부에서 실행되는 코드입니다. 일반적으로 텍스트 파일에는 원하는 곳에 보관되어 있습니다. 그런 다음 일반적으로 엔진에 의해로드되고 구문 분석되고 런타임에 실행됩니다.
일반적으로 어떤 언어를 사용하든 (루아, Angelscript 등)이 언어에는 일반적으로 엔진 프로그래머가 엔진 기능 또는 전체 클래스를 현재 실행중인 "스크립트 엔진"인스턴스에 노출시킬 수있는 기능이 있습니다. .
예를 들어 (완전히 어리석은 예이지만 요점을 맞추기 위해) 게임 코드에는 좀비를 스폰하는 퍼블릭 함수가있을 수 있습니다.
void SpawnZombie(int x, int y, int hp /* whatever else */)
{
//...
}
사용하는 스크립팅 언어를 사용하면이 기능을 실행중인 스크립팅 파서에 노출 할 수 있습니다. 이것은 효과적으로 텍스트 파일을 열고 "SpawnZombie (200,300,1337)"를 쓸 수 있고 엔진이 코드를 실행하면 해당 위치에 좀비가 생성됩니다.
다른 답변에는 이미 이것이 일반적으로 사용되는 방법에 대한 몇 가지 좋은 예가 나와 있지만 한 가지 중요한 점을 제외하고는 매우 중요합니다.
이러한 종류의 스크립트를 사용하면 런타임 중에 게임 플레이를 디버그하거나 테스트하기가 매우 쉽습니다.
좀비를지도에 배치하는 완벽한 방법을 찾아서 플레이어가 발견 한 후 플레이어에게 최대의 겁을 줄 수 있다고 가정 해 봅시다. 스크립팅을 지원하지 않으면 응용 프로그램을 종료하고 코드에서 일부 마법 번호를 변경 한 후 다시 컴파일하고 테스트해야합니다.
스크립팅 지원을 통해 (예 : 디버그 콘솔과 같이 런타임 중에 텍스트를 입력하는 방법이 이미있는 경우) "SpawnZombie (333,444,555)"를 입력하고 그 모양을 확인하면됩니다.
같은 방식으로 무기, 차량 생성, 다른 맵 불러 오기, 게임의 일부 값 변경 등 게임에 필요한 시간을 낭비하고 싶지 않기 때문에 적을 공격 할 수 있습니다 테스트 등
이렇게하면 더 복잡한 게임에서 많은 시간을 절약 할 수 있습니다.
1) 스크립트는 코드보다 수정하기가 훨씬 쉽습니다.
2) 스크립트는 종종 현장 수정이 가능합니다. 게임을 모딩 할 수 있습니다.
스크립팅을 통해 더 높은 수준에서 논리를 작성할 수 있습니다. 다시 말해, 기능이 많을수록 적은 코드를 작성하게됩니다.
예를 들어, 다음은 코드로 작성하는 것과 스크립트 언어로 작성하는 것의 차이점을 보여줍니다.
Update Loop
{
if (CarExplodeAnimation.FinalFrame == true)
{
SceneGraph.Remove(Car);
Message("You have destroyed the car.";
}
else
{
CarExplodeAnimation.AdvanceToNextFrame();
}
}
PlayAnimation(ShipExplode) // blocks until animation completes
Message("You have destoryed the car.")
스크립팅 언어를 사용하는 경우 디자이너가 얼마나 덜 코딩해야하는지 보시겠습니까?
그 이유는 게임 코드에 따라 다르며 이벤트를 여러 프레임으로 분할하고 여러 프레임 관점에서 코드를 작성해야합니다. 반면 스크립팅을 사용하면 모든 추가 코드가 스크립트 함수 뒤에 추상화되므로 여러 프레임 이벤트를 한 줄의 코드로 생각할 수 있습니다.
당신은 물을 수 있지만, 그 기능은 게임 코드로 작성 될 수 없습니까? 예,하지만 디자이너는 게임 엔진의 소스 코드를 열고 모든 코드를 작성해야하며, 디자이너가 게임 엔진의 소스 코드를 거치지 않도록해야합니다 (실수로 변경 될 수 있음) 다른 코드와 전체 충돌).
대신, 디자이너가 대신 이런 식으로 작업하기를 원합니다. 맵 편집기에서 자동차를 마우스 오른쪽 버튼으로 클릭하고 스크립트 삽입을 클릭 한 후 스크립트 코드를 입력하십시오. 중요한 게임 엔진 소스 코드를 망칠 필요가 없습니다.