더 복잡한 S:AD 모드를 개발하는 데 도움이 되는 몇 가지 팁입니다.
버전 관리 사용
버전 제어 시스템을 사용하면 작업에 대한 모든 변경 사항을 추적할 수 있고 문제가 있는 경우 이전의 안정적인 버전으로 되돌릴 수 있으며 가장 중요한 것은 여러 개발자가 동일한 프로젝트에서 쉽게 작업할 수 있다는 것입니다.
매우 인기 있는 버전 제어 솔루션은 GitHub입니다. 온라인 프로젝트를 위한 호스팅을 제공하므로 여러 모더가 하나의 복잡한 모드를 개발할 수 있습니다.
또 다른 솔루션은 자신의 컴퓨터 또는 서버에서 프로젝트를 호스팅하는 데 사용할 수 있는 GUI 하위 버전 래퍼인 TortoiseSVN입니다. 그렇게 하는 것은 매우 쉽습니다. 온라인에서 사용할 수 있는 설명서가 있습니다.
제안된 두 솔루션은 물론 무료입니다(또는 무료 버전이 있습니다).
버전 제어가 작동하면 모드에 대한 모든 변경 사항을 추적할 수 있습니다. 예를 들어 새 버전의 모드를 업로드하기 직전에 모드를 저장한 후 모든 변경 사항을 확인할 수 있습니다. 마지막 순간에 엉망이 되는 경우가 매우 많기 때문에 반드시 수행해야 하는 단계입니다. 모드 편집기 자체에 버그가 있는 것으로 보고되었습니다.
Steam에 업로드한 후 로컬 변경 사항도 버전 제어 저장소에 "커밋"해야 합니다.
버전 관리가 필요한 모드 폴더는 다음 위치에 있습니다.
%appdata%\Stranded - Alien Dawn\Mods
런타임 오류 모니터링
최종 오류를 찾을 수 있는 게임 출력 로그는 다음에서 찾을 수 있는 파일에 저장됩니다.
%appdata%\Stranded - Alien Dawn\logs
문제는 생성된 게임 로그를 플러시하기 위해서는 게임이 종료되어야 한다는 것입니다. 이는 로그의 오류를 특정 게임 내 이벤트와 연관시키기 어렵기 때문에 디버깅에 실용적이지 않습니다. 모딩 맵 외부에서 실시간으로 게임 로그를 모니터링하는 간단한 방법이 있습니다. Visual Studio IDE만 있으면 됩니다. 메뉴 디버그 - 프로세스에 연결(또는 바로 가기 Ctrl-Alt-P)에서 게임 프로세스에 연결하면 오류를 포함한 모든 게임 로그가 "출력" 창에서 실시간으로 표시됩니다. 첨부할 때 검색하는 게임 프로세스는 “StrandedSteam.exe”라고 해야 합니다. Visual Studio에 익숙하지 않은 분들을 위해 VisualStudio 사이트에서 다운로드할 수 있는 “Community”라는 무료 버전이 있습니다.
쓰기 모드 코드
S:AD 게임 엔진은 Lua를 게임 논리 언어로 사용합니다. 비록 바닐라 버전은 아니지만 수정된 것입니다. 표준 라이브러리에는 많은 추가, 변경 또는 제거된 기능이 있습니다. 모딩 코드 "item"도 Lua에 있지만, mod 버전은 원본을 사용하지 않고 특정 기능이 블랙리스트에 있는 제한된 환경입니다. Lua 언어 자체는 매우 쉽습니다. JavaScript 또는 Python에 익숙한 사람이라면 누구나 사용할 수 있습니다. 문제없이. Lua 파일을 편집하는 데 사용할 수 있는 많은 IDE가 있습니다. 매우 인기 있는 것은 Visual Studio Code와 Sublime이며 둘 다 무료입니다. Lua IDE가 모딩 환경에서 시작된 경우 Steam은 게임을 종료한 후에도 여전히 실행 중인 것으로 간주할 수 있습니다. 그렇다면 IDE를 닫으십시오.
게임 내 콘솔 사용
예를 들어 개체가 선택되면 SelectedObj라는 전역 변수는 선택한 개체를 값으로 갖습니다. 콘솔에 입력하면 매우 큰 텍스트일 수 있는 개체의 내용이 인쇄됩니다. 따라서 개체 내부의 특정 정보를 찾는 것이 좋습니다. SelectedObj 뒤에 점(.)이 입력되면(루아에서 구성원이 액세스되는 방식이므로) TAB 키를 누르면 선택할 수 있는 목록에 객체의 내용이 표시됩니다.
디버깅에 도움이 될 수 있는 또 다른 중요한 전역 변수는 UIPlayer입니다. 이것은 많은 중요한 게임 값의 이름 공간입니다. 예를 들어, UIPlayer.labels.Buildings는 배치된 모든 건물이 포함된 목록을 보유하는 반면, UIPlayer.labels.Survivors는 생성된 모든 생존자가 포함된 목록입니다. 콘솔에 입력하면 매우 많은 양의 텍스트가 기록되지만 그다지 실용적이지 않습니다. 사람이 읽을 수 있는 텍스트를 더 많이 표시하는 데 사용할 수 있는 ValueToStr이라는 도우미 함수가 있습니다. 예: ValueToStr(SelectedObj), ValueToStr(UIPlayer.labels).
콘솔은 TAB 키를 통한 자동 완성도 지원합니다. 이렇게 하면 주어진 전역 변수 또는 개체 구성원의 정확한 이름을 알 필요가 없습니다.
인쇄된 텍스트에서 화면을 지우려면 F9 키를 사용하십시오.
게임 데이터 작업
어쨌든 어떻게든 게임 데이터를 검사할 수 있는 방법이 있으면 유용합니다. 한 가지 방법은 게임 콘솔을 사용하여 전역 var 사전 설정의 내용을 확인하는 것입니다. 여기에는 프리셋 클래스별로 그룹화된 거의 모든 게임 데이터가 포함되어 있습니다. 이전 섹션에서 설명한 것처럼 콘솔에서 각 이름 뒤에 점(.)을 입력하면 현재 컨텍스트의 내용이 포함된 목록이 표시됩니다. 이렇게 하면 레벨별로 모든 내용을 분석할 수 있습니다.
그러나 콘솔을 사용하는 데에는 한계가 있습니다. 데이터 콘텐츠가 너무 복잡해서 큰 텍스트 덩어리로 검사할 수 없기 때문입니다. 각각에 대해 명시적인 도구를 호출하기 위해 사전 설정 클래스가 게임에 등록되어 있는지 이해해야 합니다. UI 데이터 인터페이스를 여는 사전 설정 클래스를 수락하는 콘솔 명령이 있습니다.
OpenPresetEditor("<PresetClass>")
어디 검사할 특정 클래스로 교체해야 합니다. 예를 들어 콘솔 OpenPresetEditor("FXPreset")에 입력하면 시각 및 음향 효과와 같은 가장 난해한 데이터 항목 중 하나를 포함하는 FX 편집기가 열립니다.
By injto4ka