Lua 또는 흐름 중 무엇을 사용합니까?
Stingray에서는 대화식 게임 플레이를 설정할 때 흐름 시각적 프로그래밍과 Lua 스크립팅 중 어느 것을 사용할 것인지 선택해야 합니다. 둘 중 어느 것을 사용해도 되며, 동시에 사용할 수도 있습니다. 그렇다면 어떻게 선택해야 할까요?
작업하는 프로젝트 설계와 팀에 따라 여러 가지 요소를 고려해야 합니다. 프로젝트의 규모와 스타일, 팀의 규모, 프로그래밍 수준, 기타 게임 엔진 작업 경험 등이 이러한 요소의 예입니다.
이 페이지에서는 게임 플레이 작성 방법을 계획할 때 도움이 될 만한 정보를 제공합니다.
- 게임에서 발생할 수 있는 다양한 유형의 이벤트와 트리거에 응답할 수 있는 가장 손쉬운 방법입니다.
- 흐름 그래프를 작성하는 것은 시각적으로 확인 가능하며 직관적이기 때문에 이전에 프로그래밍을 해본 적이 없는 팀원도 복잡하고 흥미로운 플레이어 상호 작용을 찾아낼 수 있습니다.
- 설계자는 새로운 아이디어에 대한 프로토타입을 신속하게 생성할 수 있습니다.
- 유닛 흐름을 사용하면 다양한 유형의 유닛을 자체 포함식으로 유지할 수 있으므로 해당 유닛의 동작 또한 자체 포함되며 종속성에 얽매이지 않습니다.
흐름의 가장 큰 단점은 다음과 같습니다.
- 프로젝트의 크기가 커짐에 따라 흐름 그래프도 거대해져 유지 관리가 어렵습니다. 흐름 그래프를 청크로 구성하고, 이러한 청크를 하위 흐름으로 저장하고, External > Flow Subroutine 노드를 사용해 필요할 때마다 호출하여 이러한 문제를 어느 정도 완화할 수 있습니다.
- 흐름 평가 중에는 디버그할 수 없습니다. 가장 좋은 방법은 디버그 범주의 노드를 사용하여 로그 또는 디스플레이에 문자열을 출력하는 것입니다.
- Lua API는 보다 광범위하며 Flow에서는 호출할 수 없는 함수와 하위 시스템에 대한 액세스를 제공합니다(자체 사용자 정의 노드로 흐름을 확장하지 않고는 호출 불가). 예를 들어 리소스 패키지 로드 및 언로드와 같은 작업은 Lua에서만 가능합니다.
- 일반적으로 Lua 코드에서 비교, in-then-else 구조, 루프와 같은 로직을 사용하기가 훨씬 쉽습니다.
- Lua는 일반적으로 더 효율적이며, 여러 번 반복하는 루프가 있는 경우 특히 그렇습니다.
- 실행 중에 Lua 코드를 디버그하고, 중단점을 설정하고, 변수의 현재 값을 볼 수 있습니다. 이는 게임 플레이가 복잡해질수록 큰 장점이 됩니다.
Lua의 가장 큰 단점은 다음과 같습니다.
- 프로그래밍 경험이 별로 없는 사용자에게는 Lua가 어려워 보일 수 있습니다.
- 처음부터 시작하는 경우 게임 플레이 코드를 제대로 조직하는 일이 힘들 수 있습니다. 각 단계에서 발생해야 하는 일, 이를 코딩하는 방법, 코드를 모듈로 구성하는 방법을 파악해야 하기 때문입니다. 시작하려면 Stingray 템플릿 프로젝트에 내장된 Appkit을 사용하십시오. Appkit은 이후 사용자 정의를 통해 확장 가능한 기본 프레임워크를 제공해줍니다.
Lua와 흐름을 조합하여 사용하면 두 방법의 장점을 활용할 수 있습니다.
- 프로그래머는 Lua를 사용하여 게임 로직을 다시 사용할 수 있는 함수로 코딩할 수 있으며 이를 사용자 정의 흐름 노드에 노출합니다.
- 수준 설계자는 게임 플레이 로직이 필요할 때 흐름에서 이러한 사용자 정의 노드를 호출합니다.
이는 두 표준의 장점을 제공합니다. 게임 설계자는 프로그래밍 로직에 대한 깊은 이해 없이도 대화식 환경을 구성할 수 있습니다. 또한, 게임 설계자는 흐름에서 창의적인 새로운 게임 플레이 아이디어의 프로토타입을 생성하여 이를 다듬거나, 알고리즘 또는 성능을 개선하거나, 이후 유지 관리 작업을 손쉽게 만들기 위해 프로그래머에게 전달할 수 있습니다. 한편, 프로그래머는 Lua에서 제공되는 더 많은 API, 친숙한 스크립팅 환경, Visual Studio Code와 같은 표준 개발 도구를 사용하여 동작을 디버깅할 수 있는 이점이 있습니다.
흐름및 Lua 간 통신도 참조하십시오.
프로그래밍 경험이 풍부하다면, 프로젝트에서 사용자 정의 C 또는 C++ 코드를 사용하고 싶을 수도 있습니다. C 코드는 일반적으로 더 빠르게 실행되므로 성능이 중요한 경우 유용합니다. 또한, 타사 라이브러리를 통합하거나 기존 C 코드를 다시 사용하려는 경우도 있습니다.
코드를 동적으로 링크한 라이브러리로 패키지할 수 있다면 함수에 대한 Lua 바인딩을 만들 수 있습니다. 이는 게임의 Lua 환경에서 호출 가능합니다. 또는 LuaJIT FFI 라이브러리를 사용하여 Lua 코드로 직접 C 함수를 호출할 수 있습니다. 자세한 내용은 Lua에서 C 코드 호출 및 하위 항목을 참조하십시오.
또는 Stingray 엔진이 노출한 기본 플러그인 API를 사용하여 자체적인 엔진 수준 플러그인을 작성할 수 있습니다. 현재 이렇게 하려면 Stingray 소스 리포지토리에 액세스할 수 있어야 합니다. 자세한 내용은 Autodesk 담당자에게 문의하십시오. Stingray 개발자 도움말도 참조하십시오.