내가 현재 생각할 수있는 유일한 이점은 다시 컴파일하지 않고도 Lua를 통해 코딩 업데이트를 할 수 있다는 것입니다.
이 유틸리티를 너무 쉽게 할인하지 마십시오. 재 컴파일 단계를 없애기 전까지는 얼마나 생산적인지 이해할 수 없습니다 .
"흐름" 이 일에 관해서 상당히 잘 이해 심리적 개념이다. 흐름은 활동에 집중할 때, 생각없이 거의 문제를 분석하고 해결할 때 얻는 느낌입니다. "흐르고"있을 때 가장 생산성이 높습니다.
컴파일 시간은 그 모든 것을 망칩니다. 테스트하는 것 사이에 10 초의 컴파일조차도 흐름에 머무르기가 어렵습니다.
게임 플레이를 개발할 때 일반적으로 사용하는 것은 "긴밀한 루프"입니다. 아이디어가 있고 테스트를 테스트하여 작동하는지 확인한 다음 사용해보십시오. 작동하지 않으면 수정 한 후 다시 시도하십시오. "코드 투 테스트"시간은 흐름을 유지하는 데 매우 중요합니다. 가능한 한 작게 만드는 것이 중요합니다.
Lua (또는 내장 된 스크립팅 언어)를 통해 수행 할 수있는 작업은 "컴파일"이 아니라 게임에 참여하여 변경 사항을 테스트 하는 것 입니다. 게임 빌드 방법에 따라 데이터를 중지하거나 다시로드하지 않고도 새 스크립트로 게임을 다시 시작하는 명령을 실행할 수 있습니다. 재 컴파일하지 않아도되며 다시 실행할 필요가 없습니다.
적절한 엔진 지원이 제공되면이를 수행 할 수있어 생산성이 크게 향상 될 수 있습니다.
스크립팅의 또 다른 주요 이점은 신경 쓰지 않는 기능입니다. C ++을 작성하는 데 오랜 시간을 소비했다면 미누에를 쓰는 데 얼마나 많은 시간이 걸리는지 놀라게 될 것입니다. 메모리가 삭제 된 위치 이것이 해제되는 곳. shared_ptr
모든 곳에서 사용하더라도 변수 유형 이름을 모두 입력하면 속도가 느려집니다.
동적 형식의 스크립팅 언어에서는 신경 쓸 필요가 없습니다. 범위는 간단합니다. 함수는 일류 객체입니다. 펑터를 수동으로 만들 필요가 없습니다. 어떤 일을하는 것은 너무 쉽습니다 .
당신이 훈련 된 프로그래머가 아니라면 이제는 부정적인 점이 있습니다. Lua에서 전역을 사용하는 것은 매우 쉽습니다 (물론이를 방지 할 방법이 있지만). 돌보지 않으면 코딩 할 때 매우 부주의 할 수 있습니다.
그러나 다시 말해서 매우 조잡하면 장점이 있습니다.
Lua의 또 다른 장점은 훌륭한 데이터 설명 언어를 만드는 것입니다. JSON은 배열 / 테이블을 빌드하고 반환하는 JavaScript 파일과 마찬가지로 테이블을 반환하는 Lua 스크립트를 만들 수 있습니다.
이것은 구성 파일에 유용합니다. Lua의 테이블 형식은 .ini 형식보다 훨씬 좋습니다. 형식은 여전히 깨끗하고 간결하며 확장 가능합니다.
아, 여전히 루아 스크립트이므로 실제 논리를 수행 할 수 있습니다. 그것의 단점은 ... 글쎄, 그것은 루아 스크립트이므로 실제 논리를 수행 할 수 있습니다 . 사용자가 잠재적으로 문제를 해결할 수 있기 때문에 게임에서 비참 할 수 있습니다.
그러나 실제로 이것은 쉽게 처리됩니다. Lua는 임베딩 용으로 설계되었으므로 격리가 실제로 매우 쉽습니다. 실제로 새로운 루아 상태는 기본적으로 아무 것도 제공 하지 않습니다 . 표준 Lua 라이브러리의 가장 기본적인 것까지 노출시키기 위해 실제로 무언가를해야합니다. 파일 액세스, 게임 상태 액세스 등은 모두 옵트 아웃이 아닌 옵트 인입니다. 그리고 각 Lua 상태는 서로 분리되어 있습니다. AI 스크립트에 사용하는 Lua 상태가 구성 파일에 사용하는 Lua 상태 일 필요는 없습니다.
실제로 많은 Lua 표준 라이브러리를 등록 할 수 있지만 모든 파일 IO를 제거하고 제거하는 코드가 있습니다. 궁극적으로 Lua 스크립트 기반 구성 파일이 수행 할 수있는 최악의 상황은 게임을 메모리에서 실행하여 실행하자마자 충돌하는 것입니다. 이러한 구성 파일을 수동으로 공유하지 않기 때문에 해커에게는 그리 재미 있지 않습니다.
모든 스크립팅 언어의 가장 큰 단점은 디버깅입니다. 대부분의 스크립팅 언어에는 디버거가 없으며 Lua도 다르지 않습니다. Lua에는 디버깅 도구를 빌드하는 데 필요한 모든 도구가 있습니다. 그러나 실제로는 디버거가 내장되어 있지 않습니다. 하나로 합쳐야합니다. 그리고 그것은 합리적인 수준의 작업을 요구할 것입니다.
또는 "printf 디버깅"으로 인해 만들 수 있습니다. 그것은 실제로 얼마나 많은 루아 코드를 작성 하느냐에 달려 있습니다.