이런 방법은 피하세요

From Neos Wiki
Revision as of 08:14, 6 July 2021 by Mirpasec (talk | contribs)
Jump to navigation Jump to search
Other languages:
Deutsch • ‎English • ‎日本語 • ‎한국어

네오스는 강력한 기능과 옵션등을 갖춘 환상적인 엔진입니다.하지만, 관행처럼 사용되는 몇가지 방식은 훗날 동작하지 않거나 문제를 일으킬 수 있습니다. 이 문서에서는 피해야 하거나 하면 안되는 것들에대한 것과 기술적인 이유 및 그 대안들을 제시하고 있습니다.

창작물을 개선하거나 또는 다른 사용자가 의도치 않은 문제를 발생 시키는 것을 막기 위해서 라도, 이 문서를 한번 쯤 읽어보시기 바랍니다.

개요

무언가 문제가 생겼거나, 원하지 않은 결과가 나온다면 아이디어가 좋든 안좋든 커뮤니티나 팀원에게 문의해 보세요. 해결되지 않거나 의견차가 존재하는 경우 이슈트래커에서 새 이슈를 생성하시기 바랍니다.

슬롯 이름과 구조

로직스나 구성요소를 통한 작업시, 외부 요소(아이템, 쉐이프 등)의 이름이나 구조적 형식을 이용한 참조를 피하세요. 슬롯의 이름(Slot.name)과 구조는 임의로 바뀔 수 있으며, 동일한 이름이나 구조를 쓰는 전혀 상관없는 슬롯을 참조할 수 도 있습니다.

아래에서 관련 예제와 문제 완화를 위한 방법과 대안을 정리해 두었습니다.

User Root의 이름 또는 구조

네오스가 기능 업데이트를 하면서 User Root에 속한 아이템을 추가하거나 삭제할 수 있습니다. 이름이나 구조에 의존하면, 문제가 발생할 수 있습니다. 예를 들자면, 최근 추가된 "Freeform Camera"를 처리하기 위해 새로운 슬롯이 추가되었습니다. 공교롭게도 사용자가 업데이트 이전에 수동으로 추가한 이름과 동일하다면, 연계된 기능에 문제를 일으킬것입니다.

피해야 할 방법:

  • Find Child By Name
  • Get Parent 또는 Get Child 노드등을 반복적으로 사용하여 슬롯 구조를 탐색

해결방법:

아바타의 이름이나 구조

아바타는 매우 복잡한 아이템 입니다.

피해야 할 것:

  • 아바타의 파츠를 탐색하기 위해 Find Child By Name 노드를 사용
  • 아바타 파츠 탐색을 위해 Get Parent 및 Get Child 노드를 반복적으로 사용
  • 아바타의 구조를 가정하여 코드를 구성
    • 예를 들면, 머리와 손만 있는 아바타는 "Avatar Root"가 없습니다.

해결방법:

만약, User Root에서 특정 슬롯을 간편하게 탐색하고 싶으시다면, 이슈트래커에 새로운 기능이나 노드를 요청하세요.

다른 월드의 이름이나 구조

다른 월드를 방문하면, 월드의 손님으로 입장하기에 해당 월드에서 장난감이나 도구, 아바타 등을 만들 때 월드를 존중해 주시기 바랍니다.

피해야 할 것:

  • 총이나 로켓 또는 기타 아이템에서 유발되는 아이템들을 root 슬롯에 생성
  • 모든 월드가 동일한 슬롯 구조를 가졌다고 상정
  • 커스텀 컬링 및 로코모션 모듈 사용
  • Root Slot을 Dynamic Impulse로 호출
  • 월드 변수 영역 또는 Root Slot에 동적변수를 할당
  • 월드를 떠날때, 널부러놓은 아이템 삭제

해결방법:

  • "Root Slot"을 "Set Parent"의 대상으로 지정하는 대신 "Local User Space" 노드를 이용하면, 대부분의 경우 Root를 망가뜨리지 않고 정상적으로 동작합니다.
  • World root를 수정하거나, 복잡한 아이템을 꺼내시기 전에 세션주(방장)의 동의를 구하세요.

자동 비활성화된 구성요소를 강제로 활성화

가끔 구성요소(컴포넌트)를 사용할때 자동으로 비활성화 되는 경우가 있습니다. 이는 구성요소의 설정이나 슬롯 등에 문제가 있어 동작할 수 없음을 의미합니다.

  • 이런 경우, 활성화 관련 필드값을 True로 설정하지 마세요.
  • 이슈트래커```에 버그신고를 합니다. 많은 경우 해결 가능한 문제일 수 있습니다.
  • 가끔 구성요소를 잘못 사용하여 문제가 발생할 수 있으며, 이런 유형은 오류가 아니므로 수정되지 않을 수 있습니다. 때때로 이는 구성 요소의 실제 오용이며 수정되지 않을 수 있습니다.
  • 가끔 앞에 _이 붙는 속성은 동적으로 변경되거나 삭제될 수 있으므로 사용을 피하세요.

Reference IDs / "Ref 해킹"

네오스에서 참조ID(Reference ID)를 사용하여 기능제한이나 기능의 차이를 매우는 것이 바람직할 수 있습니다. 이 작업은 다음을 주의하여 주세요.

  • 참조ID는 언제든지 변경될 수 있습니다.
  • 어떤 참조는 보안 이슈를 유발할 수 있기에, 사전 알림 없이 패치될 수 있습니다.
    • 보안적 우려가 발견되면 ```중재시스템```에 신고 해 주세요.

일반적으로 다음과 같은 전용 노드나 개념을 사용해야합니다:

  • Allocating User 노드
  • 자료형 참조들과 형변

어떠한 참조ID 또는 경로를 계속 사용해야 한다면, 이슈트래커에 요청을 해 주시기 바랍니다.

복잡한 자료형에 ToString 노드를 이용

기초 자료형(float, int, double 등)이 아닌 자료형의 출력을 ToString 노드에 연결하는 경우. 그 값이 업데이트로 인해 변경되거나 다른 값으로 바뀔 수 있으니 출력값에 의존하지 마세요.

이러한 자료형을 문자형으로 추출하여 비교한다거나 하는 로직은 잠재적인 오류를 포함하게 됩니다.

아래의 방법을 이용하세요:

If you find yourself continually needing to do this, consider making a feature request on our Issue Tracker.