Verse는 새로운 프로그래밍 언어입니다. 숙련된 프로그래머이지만 이해가 되지 않는 부분이 있다면 이 용어집을 참고하세요.
여기에는 기본적인 프로그래밍 용어에 대한 정의도 다수 추가되어 있어 프로그래밍 입문자 인 경우에도 유용하게 활용할 수 있습니다.
- 16진법
Verse에서는 10진법 대신 16진법 숫자 체계를 사용하여 integer를 표시할 수 있습니다. 여기서 16진법 값은 숫자 0~9와 문자 A~F로 표현됩니다. 예를 들어 0x7F는 127과 같은 값이고, 0xFACE는 64206과 같은 값입니다.
16진법은 integers를 표현하는 또 다른 방법입니다.
- abstract class(추상 클래스)
클래스 또는 클래스 메서드에 추상 지정자가 있는 경우 클래스의 인스턴스를 생성할 수 없습니다. 추상 클래스는 수퍼클래스 용도로 만들어졌으며, 일부 멤버가 구현되거나 지정되지만 모두 구현되거나 지정되지는 않습니다. 베이스 클래스(base class)라고도 부릅니다.
- abstraction(추상화)
사용자가 이면의 복잡한 내용을 이해할 필요가 없는 경우 이러한 불필요한 세부 내용을 숨긴다는 프로그래밍 원칙입니다. 예를 들어 자동판매기에 돈을 넣고 간식을 사 먹는데 자동판매기의 작동 원리까지 이해할 필요는 없다는 것입니다.
- access level(액세스 수준)
- additive effect(애디티브 이펙트)
애디티브 이펙트는 익스클루시브 이펙트에 추가할 수 있는 이펙트입니다. 애디티브 이펙트에는
suspends및decides가 포함됩니다.- Agent
에이전트는 플레이어 또는 비플레이어 캐릭터(NPC)를 나타낼 수 있습니다.
- Algorithm
알고리즘은 문제를 해결하거나 작업을 완료하기 위해 작성된 일련의 인스트럭션으로, 음식 조리법 같은 것이라고 생각하면 이해하기가 쉽습니다. 문제를 해결하거나 작업을 완료하기 위해 코드를 작성할 때 해당 코드가 알고리즘이 됩니다.
- alternate integers(교차 정수)
16진법을 참고하세요.
- API
Application Programming Interface의 약어로, 일반적으로 사용자가 언리얼 엔진 및 포트나이트의 시스템에 액세스하고 시스템과 상호작용할 수 있도록 호출 가능한 함수, 타입, 데이터 구조로 그룹화한 라이브러리입니다.
- archetype(아키타입)
- base class(베이스 클래스)
다른 클래스가 파생되는 클래스입니다. 베이스 클래스에서 상속하는 클래스에는 모든 멤버와 멤버 함수가 있으며, 베이스 클래스에 포함되지 않은 추가 프로퍼티도 가질 수 있습니다. 베이스 클래스는 부모 클래스 또는 슈퍼 클래스라고도 합니다.
- base-16(16진수)
6이라는 의미의 hexa-와 10이라는 의미의 decimal을 결합한 Hexadecimal(줄여서 Hex)을 의미하는 16진수는 자릿수에 10개 심볼을 사용하는 10진법과 달리 16개 심볼을 사용합니다.
- bidirectional(양방향)
두 방향으로 기능합니다.
- bind(바인딩)
컴퓨터 프로그래밍에서 바인딩한다는 것은 특정한 기간 동안 두 개 이상의 프로그래밍 오브젝트 간에 연결을 생성한다는 의미입니다.
포트나이트에서 바인딩은 기능을 이벤트에 연결하는 것입니다.
Verse에서 바인딩한다는 것은 특정한 기간 동안 두 개 이상의 프로그래밍 오브젝트 간에 연결을 생성한다는 의미입니다. 예를 들어 함수를 버튼의
InteractedWithEvent에 바인딩하면 플레이어가 해당 버튼과 상호작용할 때마다 바인딩된 함수가 호출됩니다. 이는 변수와 값 또는 오브젝트 간의 연관성 또는 핸들러와 이벤트 간의 연관성을 뜻할 수 있습니다.- block 표현식
블록 표현식은 여러 표현식을 단일 표현식으로 그룹화하거나 코드 블록을 중첩하는 방식입니다. 블록 표현식은 코드 블록과 유사한 방식으로 작동합니다.
- bound(바운드)
- branch 표현식
branch표현식은 하나 이상의 비동기화 서브표현식 블록을 시작합니다. 그 뒤에 오는 모든 표현식은 즉시 실행됩니다.자세한 내용은 동시성을 참고하세요.
- break
현재
loop를 '중단'하고 루프 표현식 이후의 표현식을 실행하는 표현식입니다. 자세한 내용은 loop와 break를 참고하세요.- bug(버그)
- C++
언리얼 엔진과 같은 게임 엔진을 비롯한 다양한 애플리케이션에서 사용되는 대중적인 프로그래밍 언어입니다.
- call graph(호출 그래프)
콜 스택의 메서드 목록입니다. 여기에는 실행 시간, 시간 스탬프, 함수에 대한 식별자 같은 각 호출에 대한 정보가 포함되어 있습니다.
- caller(호출자)
- case expression(케이스 표현식)
케이스 표현식은 옵션 목록을 사용하여 프로그램의 플로를 제어할 수 있습니다. 자세한 내용은 case를 참고하세요.
- Ceil
- char
단일 문자를 저장하는 데이터 타입입니다.
- CI/CD
CI/CD는 'Continuous Integration'과 'Continuous Delivery' 또는 'Continuous Deployment'의 약어입니다. CI/CD는 애플리케이션의 빌드, 테스트, 디플로이를 자동화하여 개발과 애플리케이션을 이어줍니다.
- commit(커밋)
커밋은 버전 관리에 코드 변경사항을 기록하는 것을 말합니다.
Verse에서 커밋은 실패 가능 표현식 성공 이후 해당 표현식의 코드 이펙트가 영구적으로 남는 것을 말합니다.
- compile(컴파일)
인간이 읽을 수 있는 언어에서 컴퓨터가 실행 가능한 인스트럭션으로 프로그램을 변환하는 것을 가리킵니다.
- component(컴포넌트)
컴포넌트에는 편집 가능한 프로퍼티가 있습니다. 이러한 프로퍼티는 스태틱 메시나 파티클 시스템처럼 물리적일 수도 있고, 플랫폼의 움직임을 정의하는 게임플레이 태그나 커스텀 Verse 코드처럼 논리적일 수도 있습니다. 기본적으로 모든 엔티티는 월드에서 엔티티가 존재할 위치를 지정하기 위한 트랜스폼 컴포넌트를 보유합니다.
Verse에서는 재사용 가능한 프로그램의 함수 또는 관련 함수 그룹을 말합니다.
- composite type(복합 타입)
복합 데이터 타입은 경우에 따라 혼합(compound) 또는 집산(aggregate)이라고도 하며, 프리미티브 타입 또는 기타 컴포짓 타입의 일반적으로 명명된 필드 또는 엘리먼트로 구성할 수 있는 모든 타입을 지칭합니다. 일반적으로 수명 동안 고정된 수의 필드 또는 엘리먼트를 갖습니다. Verse에서는 현재 복합 타입으로 구조체, 클래스, 열거형, 인터페이스, 모듈을 사용합니다.
- computes
- Concurrent
동일한 유효 시간에 다수의 계산이 실행되는 것을 가리켜 '동시적'이라고 합니다. 이 경우 단일 프로세서에서와 같이 물리적인 시간에 걸쳐 잠재적으로 확산되거나 병렬로 수행될 필요가 없다고 하더라도 로직 시뮬레이션 업데이트, 틱, 프레임이 오버랩될 수 있습니다.
- Container Type
- container(컨테이너)
UEFN에서 컨테이너는 여러 오브젝트에 적용 가능한 프로퍼티를 포함하는 클래스입니다.
Verse에서 컨테이너는 코드에서 데이터를 정리하는 방식입니다. 자세한 내용은 컨테이너 타입을 참고하세요.
- context
다양한 언어 엘리먼트 및 컨스트레인트의 수명을 정의하는 코드 스코프로, 일반적으로는 코드 블록의 시작과 끝 사이의 범위입니다.
- debugging(디버깅)
코드에 있는 오류를 찾아내어 해결하는 프로세스입니다.
- decides
함수가 실패할 수 있으며 해당 함수 호출은 실패 가능 표현식임을 나타내는 이펙트입니다. decides 이펙트가 있는 함수 정의는 반드시 transacts 이펙트도 있어야 합니다. 즉, 이 함수에 의해 수행되는 액션은 함수 내 어디서든 실패가 있는 경우 마치 아무 작업도 수행하지 않았던 것처럼 롤백할 수 있습니다.
- dependency
종속성이란 한 모듈이 해당 기능에 있어서 다른 모듈에 종속되는 것을 말합니다.
- developer(개발자)
특히 UEFN을 사용하여 포트나이트에서 섬 제작(개발)을 위해 포트나이트 툴을 사용하는 사람을 말합니다. 이 용어의 의미는 포트나이트 섬 개발자, 아티스트, 아키텍트를 포함합니다.
- device
장치는 포트나이트의 오브젝트이며, 게임플레이 컨트롤을 위해 특정 작업을 수행합니다.
사물과 마찬가지로, 장치는 섬에 배치할 수 있는 오브젝트입니다. 다만 장치를 이용하면 플레이어 상호작용을 만들 수 있다는 점이 사물과 다릅니다. 장치별로 기능이 다르지만, 모두 나름의 기능을 갖추고 있습니다.
장치는 게임플레이를 지원하기 위해 커스터마이징할 수 있는 특정 기능이 포함된 게임 메커니즘 패키지라고 생각하세요. 대부분의 장치는 커스터마이징이 가능하지만 모든 장치에는 커스터마이징하지 않아도 작동 방식을 규정하는 기본 설정이 있습니다.
Verse에서 장치란 게임 메카닉을 구성하는 데 사용되는 기본 구성 요소입니다. 장치는 게임플레이를 제어하는 플레이어 상호작용을 유도합니다.
- doc
클래스 및 함수에 있지만 함수 파라미터에는 없는 일반적인 메모 필드입니다. 설명하는 대상 엘리먼트의 역할이나 사용 방법에 관한 유용한 정보가 포함되어 있으며, Verse API 레퍼런스에서 엘리먼트의 페이지를 채우는 데 사용됩니다.
- dynamic typing(다이내믹 타입)
다이내믹 타입 프로그래밍 언어에서는 변수와 표현식에 타입이 할당되지 않습니다. 이는 런타임까지는 검증될 수 없다는 것을 의미합니다. 엄격한 타입과 비교됩니다.
- Execute
프로그램을 실행하는 일입니다.
- f
float를 참고하세요.
- Fail
Verse에서는 기본적으로 사용자가 작성하는 모든 코드는 실패할 수 없습니다. 이는 함수가 부울 또는 옵션을 반환하지 않고,
<decides>를 사용하여 값, void 또는 실패를 반환한다는 것을 의미합니다.- failure context(실패 컨텍스트)
실패 컨텍스트는 실패할 수도 있는 표현식을 실행하는 것이 허용되는 컨텍스트입니다. 이 컨텍스트는 표현식이 실패할 경우 어떤 일이 발생할지 정의합니다.
- Final
클래스 및 클래스의 멤버에만 사용할 수 있는 지정자입니다.
클래스에 final 지정자가 있는 경우 클래스의 서브클래스를 생성할 수 없습니다.
필드에 final 지정자가 있는 경우 서브클래스에서 필드를 오버라이드 할 수 없습니다.
메서드에 final 지정자가 있는 경우 서브클래스에서 메서드를 오버라이드할 수 없습니다.
- Floor
- for 표현식
for표현식은 경우에 따라 for 루프라고도 하며, loop 표현식과 같지만for표현식은 컨스트레인되는 점만 다릅니다. 즉,for루프가 실행되기 전에 반복작업 횟수가 확인되며 루프의 종료 시점이 자동으로 결정됩니다. 자세한 내용은 for를 참고하세요.- function(함수) (코드)
루틴이라고도 하는 함수는 재사용 가능한 코드로, 액션을 수행하거나 입력에 기반하여 출력을 생성하는 인스트럭션을 제공합니다.
함수를 정의하려면 고유한 이름, 결과로 예상되는 정보의 타입, 호출 시 함수가 수행할 기능의 세 가지 핵심 부분을 제공해야 합니다.
함수의 기본 구문은 다음과 같습니다.
Versename() : type = codeblock콜론으로 구분된 name()과 type: 이 부분을 함수 시그니처라고 합니다. 함수를 호출하고 사용하는 방식으로, 함수는 제공한 타입의 값을 반환해야 합니다. 이 포맷은 상수의 생성 방식과 유사하지만, 이름 뒤에 ()가 와서 코드에서 함수를 호출하는 방식을 모방한다는 점이 다릅니다.
함수 코드 블록: 함수가 호출되었을 때 수행할 역할은
=codeblock을 제공하여 정의하는데, 여기서codeblock이란 표현식 하나 이상의 어떤 시퀀스도 될 수 있습니다. 함수를 호출할 때마다 코드 블록의 표현식이 실행됩니다.
- game state(게임 스테이트)
게임 또는 기타 시뮬레이션의 스테이트입니다. 시스템을 설명하는 모든 데이터 값으로 구성됩니다. 상수 및 변수 값이 시스템 스테이트를 결정합니다.
- gameboard(게임보드)
게임을 플레이하는 표면입니다. 전통적으로 게임보드라는 용어는 테이블탑 게임에 사용되어 왔지만, 비디오 게임 레벨을 설명하는 데 사용하는 것이 점점 더 일반화되고 있습니다. 비디오 게임 개발에서 게임보드 레벨은 다양한 모양, 배열 또는 지형을 갖춘 서로 다른 영역이나 구역으로 나뉠 수 있습니다. 테이블탑 게임보드와 마찬가지로 플레이어는 보드(레벨)에서 캐릭터나 오브젝트를 이동하여 게임을 진행할 수 있습니다.
- hierarchical(계층형)
등급, 중요도 또는 제어 측면에서 명확한 레벨 또는 계층구조를 갖는 것을 가리킵니다. 일반적인 계층형 관계로는 부모/자손 또는 클래스/서브클래스가 있습니다.
- IDE
'Integrated Development Environment(통합 개발 환경)'의 약어로, 프로그램 개발 및 디버깅을 위한 유저 인터페이스를 제공하는 소프트웨어입니다.
- if 표현식
if표현식을 사용하면 프로그램의 플로를 변경하는 결정을 내릴 수 있습니다. 다른 프로그래밍 언어와 마찬가지로 Verse의if표현식도 조건부 실행을 지원하지만 Verse에서는 조건이 성공과 실패를 사용하여 결정을 내립니다.- Initialize
변수를 생성하려면 변수의 식별자와 타입을 지정하여 변수를 선언한 다음 변수에 값을 할당하는 초기화를 수행해야 합니다.
- instance(인스턴스)
인스턴스는 에셋의 고유한 사본이라고 할 수 있습니다. 원본 에셋이 생성하는 새 인스턴스의 디폴트 프로퍼티를 결정합니다. 인스턴스의 프로퍼티에 적용하는 변경사항은 원본 에셋에 영향을 미치지 않습니다. 예를 들어 마스터 머티리얼은 변경하지 않고 머티리얼이 다른 외형을 갖도록 변경할 수 있습니다. 이는 머티리얼 인스턴스가 됩니다.
Verse에서 인스턴스는 변수를 생성하기 위해 변수의 식별자와 타입을 지정하여 변수를 선언한 다음 변수에 값을 할당하는 초기화를 수행하는 것입니다.
- integer 오버플로
integer 오버플로는 integer 타입에 정의된 값보다 너무 큰 값을 저장하려고 시도할 때 발생합니다.
- is-a 관계
부모 클래스와 자손 클래스 간의 관계를 'is-a' 관계라고 합니다. is-a 관계에 있는 자손 클래스는 부모 클래스에서 상속합니다.
- Iterate
시퀀스에 포함되는 각 엘리먼트에 대해 코드를 실행하는 것입니다.
- Life Span
수명을 참고하세요.
- Literal
Verse 프로그래밍 언어에서 숫자 또는 문자 같은 고정된 값입니다. 예를 들어 1은 integer 리터럴입니다.
- loose property(느슨한 프로퍼티)
- NaN
값이 숫자가 아님(Not a Number)을 나타냅니다.
- Native
native는 엘리먼트의 정의 세부 사항이 C++로 구현되었다는 것을 나타냅니다. 이 지정자는 개발자가 사용할 수 있는 C++ 정의를 자동으로 생성할 수 있습니다.native지정자는 클래스, 인터페이스, 열거형, 메서드, 데이터에서 사용됩니다.- native_callable
인스턴스 메서드가 C++로 구현된 네이티브이면서 다른 C++ 코드로 호출될 수 있다는 것을 나타냅니다. 이 지정자는 인스턴스 메서드에서 사용됩니다. 이 지정자는 서브클래스로 전파되지 않으므로, 이 지정자가 있는 메서드를 오버라이드할 때 정의에 추가하지 않아도 됩니다.
- no-rollback
이 이펙트는 함수의 변경 가능 데이터 읽기 및 쓰기가 실행 취소될 수 없다는 것을 나타냅니다. 즉, 해당 함수는 실패 이벤트에서 롤백 행동을 가진 실패 컨텍스트에서 호출될 수 없습니다.
- node(노드)
UEFN에서 노드는 특정 함수, 연산 또는 데이터 포인트를 나타내는 그래프 기반 시스템 내의 기본 단위입니다. 노드 그래프 컨텍스트에서 노드는 사운드 소스, 이펙트(리버브, 딜레이 등), 믹서 또는 출력 같은 오디오 신호를 처리하거나 라우팅하는 개별 컴포넌트를 말합니다.
Verse의 경우 연결된 목록 노드를 참고하세요.
- object(오브젝트)
UEFN에서 오브젝트는 에셋을 지칭하는 또 다른 용어입니다.
Verse에서 클래스의 인스턴스는 오브젝트입니다. 인스턴스는 클래스 타입에 의해 정의되지만 실제 값이 있는 동일한 행동을 갖습니다.
인스턴스와 오브젝트는 의미가 동일한 용어입니다.
- Operator
동작 또는 프로세스를 나타내는 기호입니다. 예를 들어
1 + 2에서는+가 연산자입니다.- Parallel
동일한 물리적 시간의 기간 동안 여러 계산이 별도의 프로세서에서 실행되거나 해서 동시에 실행되는 것을 가리켜 병렬이라고 합니다.
- Perforce
Perforce(P4)는 리비전 컨트롤(소스 코드 컨트롤 또는 버전 관리라고도 함)을 제공하는 소프트웨어 툴입니다. 소프트웨어 코드의 변경사항을 추적하고 관리할 수 있습니다. 여러 프로그래머가 팀을 이뤄 같은 프로젝트를 진행할 때 유용합니다. 누군가 실수하더라도 다른 모든 사람의 작업을 방해하지 않고 버전 관리를 통해 코드의 이전 버전과 비교하여 문제를 찾고 정정할 수 있기 때문입니다.
- persistence
플레이어 데이터가 한 세션에서 저장되어 해당 게임의 다음 세션에 리로드되는 경우, 이를 퍼시스턴스라고 합니다.
- Ping Pong
앞뒤 방향을 반전하는 것입니다.
- Pointer
포인터를 통해 지정된 값 타입을 보유할 수 있는 변경 가능 '박스'를 레퍼런스할 수 있습니다. 포인터로는 해당 박스의 특정 값을 변경할 수 있습니다. 값과 비교됩니다.
- RAII
RAII는 Resource Acquisition Is Initialization의 약어로, 리소스를 보다 효과적으로 관리하기 위해 오브젝트가 초기화와 종료 사이에만 리소스를 획득하는 것을 말합니다.
- raise(발생)
함수가 신호를 내보내면 이벤트가 발생합니다. 버튼 상호작용 등 이벤트 발생 시 영향을 받는 요소가 알림을 받으며 모든 이벤트 핸들러가 호출됩니다.
- raycasting(레이 캐스팅)
레이캐스팅은 한 오브젝트에서 시작된 보이지 않는 선을 그려서 무언가가 오브젝트와 충돌하는지 알아냅니다.
- REPL
'Read-Evaluate-Print Loop'의 약어인 REPL은 코드를 입력하고 읽어 평가를 거친 뒤 그 결과를 확인할 수 있는 컴퓨터 환경입니다. REPL을 활용하면 모든 것을 그대로 유지하면서 언어를 살펴보고 작동 원리 또는 실패 원리를 확인할 수 있습니다.
- Result
- return
프로그램이 서브루틴을 떠나 반환 어드레스로 돌아가도록 지시하는 표현식입니다. 반환 어드레스는 서브루틴이 호출된 곳입니다.
함수 코드 블록의 마지막 표현식에서 적절한 값을 생성하는 대신,
return표현식을 사용하여 명시적으로 결과를 지정할 수도 있습니다. return 표현식이 실행되면 함수의 코드 블록에서 즉시 빠져나옵니다. 즉, return 표현식을 다른 코드 앞에 배치한 경우 그 뒤의 코드는 실행되지 않습니다.- runtime(런타임)
게임, 시뮬레이션, 애플리케이션을 실행하는 데 소요되는 시간을 가리킵니다. 컴파일에 소요되는 시간을 뜻하는 컴파일 타임이나 개발, 컴파일, 디버깅에 소요되는 시간을 뜻하는 개발 타임과 비교됩니다.
런타임에 발생하는 사항과 컴파일 타임에 발생하는 사항의 차이는 구별하는 것이 일반적입니다.
- self 변수
Self는 Verse의 특수 식별자로, 클래스 메서드에서 해당 메서드가 호출되는 클래스의 인스턴스를 레퍼런스하도록 사용될 수 있습니다.Self를 사용하지 않고 메서드가 호출된 인스턴스의 다른 필드를 레퍼런스할 수도 있지만 인스턴스 전체를 레퍼런스하려면 반드시Self를 사용해야 합니다.- Serialization
저장 파일에서 데이터를 읽거나 저장 파일로 데이터를 쓰는 과정입니다. 동일한 파일을 읽으면 느슨한 프로퍼티가 생성되고 클래스/구조체에 없는 프로퍼티가 생깁니다.
- spawn 표현식
spawn표현식은 비동기화 함수를 시작합니다. spawn 표현식 뒤에 오는 모든 표현식은spawn표현식의 완료를 기다리지 않고 즉시 실행됩니다.spawn은 완료될 때까지 독립적으로 계속됩니다.- STM
Software Transactional Memory(STM)는 동시 프로그래밍에서 공유 메모리에 대한 액세스를 제어하기 위한 용도의 데이터베이스 트랜잭션과 유사한 동시성 제어 메커니즘입니다. 궁극적으로 Verse는 STM에 초점을 맞추게 될 것으로 예상됩니다. 여러 이유가 있지만, 특히 STM은 대규모 배포 시뮬레이션의 퍼포먼스를 향상하기 때문입니다.
- subscribe(등록)
등록은 이벤트가 발생할 때 호출할 함수를 지정하는 방법입니다. 이를 이벤트에 바인딩한다고 하며, 바인딩된 함수를 핸들러라고 합니다.
- suspends
함수를 취소하지 않고 일시적으로 멈추는, 즉 정지시키는 이펙트입니다.
suspends표현식으로는 비동기화 함수를 정지하고 다른 동시 표현식이 완료되기 전에 해당 표현식에 제어를 이전할 수 있습니다.자세한 내용은 동시성을 참고하세요.
- transacts
함수에
transacts이펙트가 있다면 해당 함수는 데이터를 읽고 쓸 수 있다는 의미가 되지만, 이러한 액션은 함수에 decides 이펙트가 있는 경우 롤백할 수 있습니다. 이 이펙트는 익스클루시브 이펙트입니다.지정된 익스클루시브 이펙트가 없는 함수는 데이터를 읽고 쓸 수 있지만 롤백할 수 없습니다.
- Type Checker
타입 체크는 실행 전에 프로그램을 체크하는 데 사용되며, 데이터 타입 값과 구문을 검증합니다. 프로그래밍 언어에서 타입 시스템의 주요 목적은 바로 타입 오류로 인한 프로그램의 버그 발생 가능성을 낮추는 것입니다.
- UTF-8
유니코드 문자 인코딩 방식으로, 다양한 언어, 플랫폼, 디바이스에서 일관된 문자를 표현할 수 있도록 지원하기 위해 유니코드 컨소시엄에서 개발한 표준입니다.
이모지는 이미지 또는 아이콘처럼 보이지만 사실은 UTF-8 문자 세트에서 제공되는 글자(문자)입니다.
UTF-8에는 전 세계 거의 모든 문자와 기호가 있습니다.
- variable(변수) (코드)
프로그램이 실행되는 동안 변경될 수 있는 값입니다. 변경될 수 있기 때문에 변수라고 부릅니다.
경우에 따라 '변수'라는 용어가 변수와 상수를 통칭할 때도 있지만, 변수와 상수는 서로 비슷하면서도 한 가지 중요한 차이점이 있습니다. 바로 상수 값은 프로그램 실행 중에 변경할 수 없다는 점입니다.
변수의 기본 구문은
var name : type = value입니다.var는 이것이 변수라는 것을 나타내는 키워드이고,name은 이 변수에 할당한 이름, 즉 식별자입니다.:뒤에는 타입이 옵니다.=뒤에는 값이 옵니다. 예를 들면 다음과 같습니다.VersePlayerSpeed : float = 2.0위 예시는 PlayerSpeed라는 상수의 값이 2.0이며, 프로그램이 실행되는 동안 변경되지 않는 10진수로 표시된다는 것을 나타냅니다.
이름과 타입은 선언이고, 값은 초기화에서 표현됩니다. 변수가 초기화 시점에 할당 값을 가질 필요는 없지만, 그래도 값을 할당하는 것이 좋습니다.
변수는 언제든지 값을 변경할 수 있다는 점에서 상수와 다릅니다. 이러한 변경은 대입 표현식을 통해 이루어집니다.
- varies
이 이펙트는 함수에 동일한 입력을 제공하더라도 항상 동일한 출력을 반환하지는 않는다는 것을 나타냅니다. 또한
varies이펙트는 함수 행동이 포함하는 패키지의 새 버전과 동일하게 유지된다는 보장이 없다는 점도 나타냅니다.- Verse
Verse는 게임플레이 프로그래밍에 중점을 둔 정적 체크 프로그래밍 언어입니다.
- Verse 경로
경로를 참고하세요.
- Verse 익스플로러
- verse-authored device(Verse로 제작된 장치)
포트나이트 언리얼 에디터(UEFN)에서 사용하기 위해 Verse에서 직접 프로그래밍된 장치입니다.
- Visual Studio Code
Visual Studio Code는 VS Code라고도 하며, Microsoft에서 Windows, Linux, macOS용으로 제작한 소스 코드 에디터입니다.
- VPL
비주얼 프로그래밍 언어를 참고하세요.
- zero-based numbering
시퀀스의 첫 엘리먼트를 1이 아닌 0으로 할당하는 숫자 할당 방식입니다. 따라서 인덱스의 0번 위치는 1을 나타내고, 1번 위치는 2를 나타냅니다. 0부터 시작하는 시퀀스 숫자 할당은 수학 표기법에서 일반적입니다. 프로그래밍에서는 배열의 첫 번째 위치가 0번 위치로 정해지는 경우가 있습니다.
- 값
값은 프로그램이 작동하기 위해 사용하는 정보입니다. 값의 예시로는 숫자 또는 텍스트가 있습니다.
- 강제
한 값을 다른 데이터 타입으로 변환하는 것을 말합니다. 타입 변환은 명시적 또는 묵시적으로 수행할 수 있습니다. 묵시적 변환은 강제한다고도 하며, 자동으로 이루어집니다.
- 게임 루프
게임 루프는 플레이어가 컨트롤러 또는 마우스와 상호작용하여 발생하는 입력에 반응하여 반복적으로 실행되는(루프) 코드입니다. 반복적으로 게임 스테이트를 업데이트하며, 예를 들어 플레이어가 버튼을 눌러서 불을 켜는 행동처럼 게임 스테이트에 영향을 주는 경우 이를 플레이어에게 보여주는 출력을 제공합니다. 일반적으로 플레이어가 목표에 도달하는 등 게임이 완료 스테이트에 도달하거나 플레이어가 목표에 도달하기 전에 제한 시간이 경과하여 실패 스테이트에 도달하면 루프가 종료됩니다.
- 결정 표현식
결정 표현식은 연산자
not,and,or를 사용하여 성공 및 실패 결정 플로를 제어할 수 있게 합니다.- 결정론적
결정론적 시스템이란 동일한 초기 스테이트 또는 입력이 언제나 동일한 결과를 만드는 시스템을 가리킵니다.
- 결정론적 소멸
일부 프로그래밍 언어에서 사용되는 결정론적 소멸이라는 용어는 프로그램이 자체 스코프에서 나갈 때 오브젝트가 소멸되는 것을 말합니다.
- 경로
Verse 경로는 웹 도메인의 개념에서 차용한 것으로, 다양한 요소를 식별하기 위한 글로벌 네임스페이스를 제공합니다. 이 경로는 지속적이고 고유하며 모든 Verse 프로그래머가 검색할 수 있습니다.
- 경합 조건
경합 조건은 순서대로 수행해야 올바르게 완료되는 두 개 이상의 작업을 프로그램이 동시에 수행하려고 시도할 때 발생합니다.
- 고유
고유 지정자를 클래스에 적용하여 고유 클래스를 만들 수 있습니다. 고유 클래스의 인스턴스를 생성하기 위해 Verse는 결과 인스턴스에 고유 ID를 할당합니다. 이렇게 하면 ID를 비교함으로써 고유 클래스의 인스턴스가 동등한지 비교할 수 있습니다. unique 지정자가 없는 클래스에는 이러한 ID가 없으므로 필드 값에 기반해서만 동등한지 비교할 수 있습니다. 즉, 고유 클래스는 `=` 및 <> 연산으로 비교되며, comparable 타입의 서브타입입니다.
- 괄호
괄호를 참고하세요.
- 괄호
괄호는 Verse에서 다양한 유형의 코드 정보를 지정하는 데 사용됩니다. Verse는 4가지의 괄호 세트를 사용합니다. 괄호의 용도는 다음을 포함하지만 이에 국한되지 않습니다.
()소괄호는 함수 시그니처에서 파라미터를 설정할 때, 함수 호출에서 실행인자를 설정할 때 그리고 표현식, 튜플, 서브클래스를 그룹화할 때 사용됩니다.[]대괄호(브래킷)는 실패 가능한 함수 호출, 배열 및 맵에 대한 타입 지정자, 배열에 대한 인덱싱에 사용됩니다.{}중괄호는 아키타입 인스턴스화, 코드 블록 포맷 지정, string 보간에 사용됩니다.<>홑화살괄호는 식별자 및 함수에 지정자를 추가할 때 사용됩니다.
- 구문
프로그래밍 언어의 규칙 또는 문법입니다.
시맨틱과 비교됩니다.
- 구상 클래스
구상 지정자를 갖춘 클래스는 빈 아키타입을 갖춘 클래스의 인스턴스를 구현하는 한 방식으로, 클래스의 모든 필드가 초기 값으로 정의되어야 한다는 걸 의미합니다.
- 구조적 동시성
구조적 동시성은 특정한 동시 명령 및 비동기화 컨텍스트 스코프 내에 제한되어 일정 수명 동안 진행되는 동시 연산입니다. 이는 연관 스코프 내로 제한하는
if,for,return같이 구조화된 컨트롤 플로입니다.- 그룹
표현식을
()로 감싸는 액션입니다. 이렇게 하면 평가 순서가 명시적으로 지정됩니다. 그룹화는 코드 가독성도 향상할 수 있습니다.- 내부 클래스
epic_internal로 표시된 클래스로, 클래스의 인스턴스를 만들 수 없다는 뜻입니다. API를 통해서만 내부 오브젝트에 액세스할 수 있습니다.- 내장 타입
- 내장 플러그인
프로그래밍 언어에서 '내장'이란 해당 언어 및 표준 라이브러리에서 직접 사용할 수 있다는 의미입니다.
- 노출
UEFN에서 프로퍼티가 Verse 코드의
editable어트리뷰트에 할당되면 노출됩니다. 노출된 프로퍼티는 UEFN 인터페이스에서 직접 편집 가능합니다. 편집 가능도 참고하세요.- 다이제스트
모듈, 함수, 클래스와 같이 Verse 컴파일러에서 처리한 모든 퍼블릭 심볼의 자동 생성된 목록을 말합니다. 여기에는 코멘트도 포함됩니다. 다이제스트 파일을 읽어보면 연관된 모듈에 어떤 API 및 함수 기능이 있는지 확인할 수 있습니다.
- 다형성
다형성(Polymorphic)은 많다는 의미의 poly-와 형태를 의미하는 -morph를 결합한 말입니다. 다형성 행동은 한 변수가 서로 다른 조건에서 서로 다른 값을 가질 수 있을 때 발생합니다.
- 대입 표현식
- 데이터
- 데이터 멤버
멤버를 참고하세요.
- 데이터 타입
타입을 참고하세요.
- 데코레이션
코드 작성 시 데코레이션은 코드 조각을 다른 코드 조각과 래핑하는 것을 의미합니다.
- 도메인
도메인은 특정 파라미터에 의해 수락된 일련의 입력입니다. 타입은 도메인을 지정하는 한 가지 방법이지만, 도메인은 타입보다 포괄적입니다.
- 동시실행루틴
시간 경과에 따라 작업을 수행하거나, 다양한 이벤트 및 스테이트 또는 둘의 조합이 발생하기까지 대기하는 일정 시간 동안 지속되는 수명을 갖춘 루틴입니다. 동시 실행 루틴은 비동기화 함수와 같은 뜻입니다.
- 동시적
표현식이 컨스트레인되었다는 것은 설정된 제한이 있다는 것을 의미합니다.
- 등가 비교 표현식
- 디버거
디버깅에 사용되는 툴입니다. 각 실행 단계에서 프로그램 스테이트를 확인할 수 있습니다.
- 디스패치
디스패치란 무언가를 어딘가로 전송하는 것을 가리킵니다. 예를 들어 Verse에서는 호출을 함수로 디스패치하거나 이벤트를 리스너로 디스패치할 수 있습니다.
- 레퍼런스 액터
함수 기능을 변경하지 않고 코드의 구조를 변경하는 것을 리팩토링이라고 합니다. 예를 들어, 프로그램 전체에서 여러 번 반복되는 코드 블록을 함수 호출로 리팩토링할 수 있습니다. 리팩토링은 코드의 가독성을 높이고 복잡성을 줄이는데 도움이 되며, 코드의 동작 방식을 변경하지 않습니다.
- 로직 프로그래밍
시스템 내의 문제에 대한 사실과 규칙을 표현하거나 표시하는 방식을 제어하기 위해 부울 로직을 사용하는 프로그래밍 패러다임입니다.
- 로컬
프로그래밍에서 locale이란 사용자의 언어, 지역, 유저 인터페이스의 다양한 부분을 정의하는 파라미터의 집합입니다. Verse에서
locale은 구체적으로message를 현지화해야 할 때 컨텍스트를 설정하는 타입으로, locale에 기반하는 텍스트와 숫자의 언어에 영향을 미칩니다.- 로컬
코드 블록 내의 상수 또는 변수를 말합니다. 자신이 생성된 코드 블록 밖에서는 사용될 수 없습니다. 스코프도 참고하세요.
- 롤백
- 루틴
함수를 참고하세요.
- 메서드
- 메시지
Verse에서
message는 locale에 독립적인 텍스트를 포함할 수 있는 타입입니다.string값으로message변수를 초기화할 때 이 스트링은 해당 메시지의 디폴트 텍스트 및 언어가 됩니다.- 메타버스 환경
지속적이며 전 세계적으로 일관된 리얼타임 3D 월드를 가리킵니다. 수백만 명의 사용자가 동시에 연결되고, 복잡하고 상호 의존적인 사용자 작성 코드가 동시에 실행되는 런타임 환경입니다.
- 멤버
Verse의 클래스, 구조체, 인터페이스 또는 모듈처럼 복합 데이터 구조의 하위 파트인 명명된 변수 또는 함수입니다. 멤버 변수는 필드라고도 하며, 멤버 함수는 메서드라고도 합니다.
- 명령문
결괏값을 갖지 않는 독립형 명령문입니다. Verse는 명령문을 사용하지 않습니다. 대신 표현식을 사용합니다.
- 명령형 프로그래밍
프로그램이 실행되는 방법을 프로그램에서 단계별로 설명하는 패러다임입니다. 명령형 프로그래밍 언어의 한 가지 예로는 C를 들 수 있습니다.
- 모듈
Verse 모듈은 재배포되거나 다른 코드가 종속될 수 있는 아토믹 단위 코드로, 시간 경과에 따라 종속성을 유지하면서 확장할 수 있습니다. Verse 파일에 모듈을 임포트하여 다른 Verse 파일의 코드 정의를 사용할 수도 있습니다.
자세한 내용은 모듈과 경로를 참고하세요.
- 무한 루프
무한 재귀는 함수가 스스로를 직접 혹은 간접적으로 호출할 때 발생합니다. 결과적으로 함수가 끝나지 않고 스스로를 영원히 호출하려 시도합니다. 그 결과 프로그램이 멈춥니다.
- 무한 루프입니다.
- 문법 오류
컴파일러 오류를 참고하세요.
- 문자 인코딩
문자 인코딩이란 텍스트 문자와 컴퓨터가 이해할 수 있는 데이터 간의 매핑을 말하며, 코드 포인트라고도 합니다.
- 뮤텍스
뮤텍스는 스레드를 하나만 사용하는 공유 리소스에 대한 배타적 액세스를 제공하는 동기화 프리미티브입니다. 상호 배타성도 참고하세요.
- 미설정
- 바디
자체 스코프를 갖추고 함수 바디 또는 루프 바디 같은 언어 엘리먼트의 하위 표현식을 정의하는 블록입니다. 예를 들어 함수 바디에는 함수의 역할을 정의하는 표현식이 포함되고, 해당 함수에서 선언된 모든 변수는 해당 함수 바디에 대해 로컬이 됩니다.
- 발전기
제너레이터는 값 시퀀스를 한 번에 하나씩 생성하고, 시퀀스의 값에 이름을 부여합니다.
- 범위
스코프는 프로그램에서 이름과 값의 연관성이 유효하고 해당 값을 레퍼런스하는 데 그 이름을 사용할 수 있는 부분을 말합니다. 예를 들어 함수 내에서 생성하는 상수 또는 변수는 해당 함수의 컨텍스트 내에서만 존재합니다. 즉, 오브젝트의 수명은 해당 오브젝트가 생성된 스코프 내로 제한되며 코드 블록 밖에서는 사용될 수 없습니다.
- 범위 표현식
범위 표현식은 두 지정 값과 그 사이의 모든 숫자를 포함하며,
..를 활용하여1..5와 같이 표기합니다. 범위 표현식은 특정 위치, 예를 들어for표현식 등에서만 사용할 수 있습니다.- 변경 가능
생성 후에도 여전히 변경 가능한 오브젝트 스테이트를 가리킵니다. Verse에서는 포인터를 통해서만 가능합니다.
변경 불가와 비교됩니다.
- 변경 불가
- 보간
알려진 값 사이에 배치할 새 값을 블렌딩하는 것을 말합니다.
- 부가 이펙트
- 부동 소수점 수치입니다.
다양한 프로그래밍 언어에서 분수 값이나 0.5 또는 1.0처럼 소수점을 갖는 숫자를 포함하는 변수를 정의하는 데 사용하는 용어입니다. float 변수 선언을 사용하여 생성된 숫자는 소수점 양옆에 숫자가 표기됩니다.
- 부울
부울 로직을 참고하세요.
- 부울 로직
표현된 값이 참인지 거짓인지 구분하는 로직 시스템이며, 프로그래밍 언어에서 플로 컨트롤을 정하기 위해 자주 사용합니다. 로직과 대수 분야에서 핵심적인 기여를 한 수학자인 조지 부울(George Boole, 1815~1864)의 이름을 따서 명명되었습니다.
Verse에서 참과 거짓을 나타내는 데 사용하는 타입은
logic입니다. 이 부울 로직은 실패 컨텍스트에서 실패 가능 표현식을 통해 실행됩니다.- 부호 있는 integer
부호 있는 integer란 양수, 음수, 0을 포함할 수 있는 값입니다. 부호 있는 integer라고 부르는 이유는 그 수가 양수인지 음수인지를 나타내기 위해 맨 왼쪽에 + 또는 - 부호를 사용할 수 있기 때문입니다. 부호 없는 integer는 양수 또는 0만 될 수 있습니다.
- 분화
프로그램의 실행이 예상대로 종료되지 않은 경우 이를 분화했다고 합니다. 분화되지 않고 제한된 시간 내에 값을 도출한 경우에는 수렴했다고 합니다.
- 비교 표현식
Verse의 비교 표현식은 부등 연산자 중 하나를 사용하여 두 요소를 비교합니다. 이러한 연산자로는
<,>,<=,>=,<>등이 있습니다.- 비구조적 동시성
특정한 동시 명령 또는 비동기화 컨텍스트 스코프로 논리적으로 제한되지 않는 수명을 가진 동시 표현식입니다. 이 수명은 잠재적으로 실행된 스코프를 넘어 확장될 수 있습니다. 이는
goto또는assembly jump명령처럼 비구조적 플로 컨트롤과 유사합니다.- 비동기
비동기화 표현식은 평가하는 데 시간이 걸릴 가능성이 있지만 반드시 그런 것은 아닙니다. 비동기화 표현식은 현재 또는 이후의 시뮬레이션 업데이트에서 완료되거나 완료되지 않을 수 있습니다.
suspends지정자로 식별되는 비동기화 함수는 동시 실행 루틴이라고도 합니다. 비동기화 표현식은 즉시 표현식과 대비됩니다.- 비동기화 컨텍스트
- 비주얼 프로그래밍 언어
프로그래머가 시각적 요소를 드래그하여 다른 엘리먼트와 연결하는 방식으로 사용하여 특정 프로그램 인스트럭션의 시퀀스를 완성할 수 있도록 해주는 프로그래밍 언어입니다.
- 빈 string
""같이 아무 문자도 포함하지 않은 string을 빈 string이라고 합니다.- 빈 블록
표현식을 포함하지 않는 코드 블록을 빈 블록이라고 합니다. 빈 블록은 일반적으로 자리표시자로만 사용되며 나중에 코드로 채워집니다.
- 상세
로그가 생성될 때 표시되는 추가 정보의 양을 제한하는 세팅입니다.
- 상속
Verse에서는 다른 클래스의 필드 및 메서드를 추가 또는 수정하여 또 다른 클래스의 정의를 확장하는 클래스를 생성할 수 있습니다. 한 클래스가 다른 클래스에서 정의를 상속하기 때문에 이를 보통 서브클래스 또는 상속이라고 부릅니다.
- 상수
상수는 값이 저장되는 위치이며, 상수 값은 프로그램의 런타임 동안 변경할 수 없습니다. 상수라고 부르는 이유도 항상 똑같이 유지되기 때문입니다.
상수의 기본 구문은
name : type = value입니다.name은 상수에 할당할 이름으로, 식별자라고도 합니다.:뒤에는 타입이 옵니다.=뒤에는 값이 옵니다. 예를 들면 다음과 같습니다.VersePlayerSpeed : float = 2.0위 예시는 PlayerSpeed라는 상수의 값이 2.0이며, 프로그램이 실행되는 동안 변경되지 않는 10진수로 표시된다는 것을 나타냅니다.
상수는 항상 할당된 값을 갖습니다. 이름과 타입은 선언이고, 값은 초기화에서 표현됩니다.
변수와 비교됩니다.
자세한 내용은 상수와 변수를 참고하세요.
- 상호 배타성
여러 프로세스가 동일한 코드 세그먼트에 액세스하려고 할 때 해당 세그먼트는 중요 섹션이 됩니다. 상호 배타성은 두 개의 프로세스가 중요 섹션에 동시에 액세스하지 못하도록 방지합니다.
- 섀도잉
섀도잉은 한 식별자가 다른 식별자를 숨기는 것입니다. Verse에서 섀도잉은 오류로 간주되며, 다른 코드가 컴파일되는 것을 막습니다.
- 서브루틴
자주 사용되는 연산을 수행하도록 설계된 컴퓨터 프로그램 내 일련의 인스트럭션입니다. 서브루틴은 함수와 유사하지만, 함수는 일종의 계산을 수행하고 그 결과를 호출자에 반환한다는 점이 다릅니다. 서브루틴은 호출 프로그램에 보고하지 않고 작업을 수행합니다.
- 서브모듈
다른 Verse 모듈 내에 포함되어 있는 Verse 모듈입니다. 폴더와 하위 폴더로 생각하면 이해하기가 쉽습니다. 각 서브모듈은 하위로 내려갈수록 또 다른 '/모듈명'을 계속 추가합니다.
- 서브클래스
- 선언
변수 또는 함수를 선언한다는 것은 변수 또는 함수의 식별자 및 타입을 지정하는 것을 의미합니다. 초기화와 비교됩니다.
- 선언
선언은 식별자를 해당 타입과 함께 도입하는 표현식입니다. 선언은 구현(사용)되거나 구현(사용)되지 않을 수 있고, 여기에 값이 할당(초기화)될 수도 있고 할당되지 않을 수도 있습니다.
var name : type = expression은 변수의 선언에 대한 구문입니다. 예를 들면 다음과 같습니다.Versevar PlayerSpeed : float = 2.0이 코드 줄은 PlayerSpeed라는 이름의 변수가 float 값임을 선언합니다.
이 예시에서 마지막 부분인
= 2.0은 초기화로, 선언에서 분리되어 있습니다.- 선점
나중에 재개하기 위해 실행 중인 작업을 임시로 중단하는 것을 선점이라고 합니다. 일반적으로는 작업의 도움이나 협력 없이 외부 스케줄러에 의해 수행됩니다.
- 성공
- 세마포어
세마포어는 뮤텍스와 비슷하지만, 뮤텍스가 가용 리소스에서 다른 스레드를 잠그는 반면, 세마포어는 해당 리소스가 현재 사용 중이라는 신호만 보낸다는 점이 다릅니다.
- 세트
프로그램이 실행되는 동안 변수 값을 변경하는 데 사용할 수 있는 키워드입니다.
set name = value구문을 사용합니다.set는 키워드이고,name은 변경할 변수의 이름이며,value는 변경된 결과입니다.이것을 대입이라고 합니다.
- 수렴
- 수명
오브젝트의 생성과 소멸 사이에 걸리는 시간으로, 'lifespan'이라고도 합니다.
- 수퍼클래스
클래스는 수퍼클래스에서 상속할 수 있으며, 여기에는 상속하는 클래스에 있는 수퍼클래스의 모든 필드가 포함됩니다. 이 같은 클래스를 수퍼클래스의 서브클래스라고 표현합니다.
- 수퍼타입
수퍼타입은 최소 하나 이상의 서브타입이 있는 타입입니다. 수퍼타입이 지원하는 모든 연산은 모든 서브타입에서 지원되어야 합니다. Verse에서는
any가 다른 모든 타입의 수퍼타입이며, 다른 모든 타입은any의 서브타입입니다.comparable타입은int및float처럼 Verse에서 비교 가능한 모든 타입의 수퍼타입입니다.- 수학 표현식
- 순차 실행
- 술어
Verse에서 술어는 성공 또는 실패 여부를 결정합니다.
- 스니펫
코드 스니펫을 참고하세요.
- 스레드
운영 체제에서 수행할 수 있는 최소 처리 단위입니다.
- 스크립트
- 스테이트
- 스플랫
튜플이 함수의 단일 엘리먼트로 사용되는 경우에는 해당 함수가 튜플의 각 엘리먼트와 함께 개별적으로 호출된 것처럼 보이게 됩니다. 이를 가리켜 튜플 확장 또는 스플랫이라고 부릅니다.
- 시맨틱
- 시맨틱 분석
컨텍스트 구분 분석이라고도 합니다. 시맨틱 분석은 컴파일러에서 소스 코드(내가 작성한 코드)로부터 필요한 시맨틱 정보를 모은 후 컴파일러에서 실행됩니다. 시맨틱 분석은 시맨틱 오류가 있는지 코드 일관성을 검사하고, 각 연산자에 피연산자가 있는지, 변수가 사용 전에 선언되었는지 등 타입 체크도 수행합니다.
- 시맨틱 오류
컴파일러 오류를 참고하세요.
- 시뮬레이션 업데이트
시뮬레이션에 반복적으로 발생하는 로직, 행동, 기타 계산의 라운드, 단계, 증가입니다. 종종 업데이트라고 줄여 부르며, 틱 또는 프레임과 동의어로 사용되기도 합니다. 일반적으로 시뮬레이션 업데이트에는 상수 또는 변수일 수 있는 경과 시간이 있습니다. 이를 종종 델타 타임(delta time)이라고 부르며, 실제로 경과된 시간과는 일치할 수도 있고 일치하지 않을 수도 있습니다. 예를 들어 시뮬레이션 업데이트는 실시간에 비해 빠르거나, 느리거나, 실시간과 같은 속도일 수 있습니다.
시뮬레이션 업데이트는 프레임 렌더링과 1:1 단계로 대응되는 경향이 강하며, Verse에서는 이것이 디폴트입니다. 하지만 시뮬레이션 업데이트는 프레임보다 빈도가 높거나 낮을 수 있습니다. 시뮬레이션된 오브젝트의 변경을 여러 번 반복작업하는 중에 온라인 게임 클라이언트가 서버 또는 피직스 시스템과 동기화되지 않는 경우를 예로 들 수 있습니다. 또한 시뮬레이션이 시각적으로 전혀 렌더링되지 않는 경우도 있습니다.
- 식별자
- 실패 가능 표현식
실패 가능 표현식은 성공하여 값을 생성할 수도, 실패하여 아무 값도 생성하지 못할 수도 있는 표현식입니다. 실패 가능 표현식의 예로는 배열에 대한 인덱싱이 있습니다. 유효하지 않은 인덱스는 실패하기 때문입니다. 또한 두 가지 값을 비교하는 것 등의 연산자도 예로 들 수 있습니다.
- 실행
컴퓨터가 프로그램을 해석하여 해당 프로그램에서 인스트럭션을 수행하는 프로세스입니다.
- 아키타입 인스턴스화
- 아토믹
다른 코드의 개입 또는 관찰 없이 완전히 실행하거나 실패하는 코드의 단일 완성 단위입니다. 아토믹 코드는 중단될 수 없습니다. 인접한 비동기화가 아닌 즉시 표현식은 모두 아토믹으로 간주됩니다. 즉 코드가 선점 또는 컨텍스트 전환 없이 동일한 업데이트 내에서 중단되지 않고 확실하게 실행됩니다.
- 엄격한 타입
프로그래밍 언어에서 특정 타입이 모든 식별자에 할당된 경우 이를 엄격한 타입이라고 합니다. 타입이 명시적으로 제공되지 않은 경우 추론됩니다. 즉, 이러한 식별자의 타입이 무엇이고 연산이 해당 타입에 어떤 영향을 미치는지 알고 있기 때문에 런타임 중에 언어가 예측할 수 없는 결과를 생성하지 않는다는 의미입니다. 정적 체크도 참고하세요.
- 엘리먼트
더 큰 그룹의 단일 부분입니다. 예를 들어 배열은 개별적으로 저장하고 사용할 수 있는 다양한 엘리먼트를 포함할 수 있습니다.
- 연결
연결은 string을 다른 string에 추가, 즉 덧붙이는 것을 말합니다. + 연산자를 사용하여 string을 연결할 수 있습니다.
- 연결
연결을 참고하세요.
- 연결된 목록
각 엘리먼트가 목록의 다음 엘리먼트에 대한 레퍼런스를 저장하는 선형 데이터 구조입니다.
- 연결된 목록 노드
연결된 목록의 각 엘리먼트를 노드라고 합니다. 노드는 일부 데이터와 목록 내 다음 노드에 대한 레퍼런스를 저장하는 컨테이너입니다.
- 연산
프로그램에서 특정 작업을 완료하기 위해 수행하는 행동입니다. 컴퓨터 연산의 네 가지 기본 그룹은 입력, 처리, 출력, 저장입니다. 연산은 표현식의 한 유형이기도 합니다.
- 연산자 우선순위
Verse에서 여러 연산자가 나오는 경우 따라야 하는 내장된 평가 순서를 말합니다. 예를 들어 동일한 표현식에서 여러 연산자가 사용되는 경우, 평가 순서가 중요해집니다.
예를 들어
1 + 2 * 3은3 * 3으로 평가되지 않습니다. 덧셈보다 곱셈의 우선순위가 높기 때문입니다.- 오버라이드
Verse에서는 수퍼클래스에서 필드를 오버라이드하여 초기 값을 할당할 수 있습니다. 예를 들면 다음과 같습니다.
Versetank := class(player_character): StartingShields<override> : int = 100 MaxShields<override> : int = 200 AllowOvershield<override> : logic = true DamageReduction : int = 50 CreateTankPlayerCharacter() : tank = return tank{}위의 예시에서 tank 클래스는 디폴트 클래스 값과 구분되는
StartingShields,MaxShields,AllowOvershield값을 가지게 됩니다.메서드 값도 동일한 방식으로 오버라이드할 수 있습니다.
자세한 내용은 서브클래스를 참고하세요.
- 오버로드
함수 또는 연산자를 오버로드한다는 것은 동일한 함수명 또는 연산자 기호가 서로 다른 파라미터를 가질 수 있다는 것을 의미합니다. 예를 들어 한 3D 벡터가 다른 3D 벡터와 (1,2,3) 등으로 같다고 한다면 이 진술은 매우 명확합니다. 하지만 등호 연산자를 사용하여 3D 벡터가 1과 같은 단일 숫자라고 알려줄 수도 있습니다. 이 경우 3D 벡터는 (1,1,1)로 설정될 수 있지만, 파트를 오버로드하면 서로 다른 파라미터를 갖춘 '3D Vector =' 연산자가 다수 존재하게 됩니다. 이 경우 프로그래밍 언어에서는 어떤 것을 사용해야 할지 컨텍스트를 살펴봐야 합니다.
- 오브젝트 지향 프로그래밍
오브젝트 지향 프로그래밍, 즉 OOP는 클래스 및 오브젝트 개념에 의존하는 프로그래밍 패러다임입니다.
- 오픈 월드 언어
명확하게 정의된 하위 타입 규칙에 따라 인터페이스 호환성 및 지속적인 데이터 호환성을 손상시키지 않고 다양한 사용자 및 조직이 작성한 상호 종속 모듈이 시간 경과에 따라 확장할 수 있도록 지원하는 언어입니다.
- 완료
작업이 완료된 스테이트입니다.
- 우선순위
- 유니코드
유니코드 컨소시엄에서 개발한 문자 인코딩 표준으로, 다양한 언어, 플랫폼, 디바이스에서 일관된 문자를 표현할 수 있도록 지원합니다.
- 유리수
두 개의 integer를 사용하여 단순한 분수로 표시할 수 있는 숫자입니다. 예를 들면 1.75는 7/4로 표시할 수 있지만, 2(√2)의 제곱근은 분수로 표시할 수 없으며, 따라서 이는 무리수로 간주됩니다. 3.14159로 시작되며 숫자가 무한으로 나열되는 원주율도 무리수의 한 예입니다.
- 유형
타입은 데이터에서 어떤 연산이 수행될 수 있는지, 그리고 해당 데이터 또는 값이 해당 타입에 대해 저장되는 방식을 정의합니다. integer와 string 같은 일반 타입, 복합 타입, 커스텀 타입이 있습니다. 프리미티브 타입과 컨테이너 타입도 참고하세요.
type키워드는 중괄호와 사용하여 예상 타입을 정의할 수 있습니다. 현재 함수 선언 및 숫자 범위가 선언으로 지원됩니다. 예를 들어,subscribable인터페이스에 대한Subscribe()함수는type키워드를 사용하여Callback파라미터가void반환 타입을 가진 함수가 되도록 정의합니다.VerseSubscribe<public>(Callback:type {__(:t):void})<transacts>:cancelable- 의사코드
의사코드는 알고리즘의 역할에 대해 프로그래밍 언어가 아닌 평문으로 작성된 자세한 설명을 말합니다. 의사(pseudo-)라는 말은 진짜가 아니라는 의미이므로 의사코드는 가짜 코드라고도 할 수 있지만, 알고리즘이 해야 할 일을 파악하는 데 유용합니다.
대략적인 개요라고 생각해도 좋습니다. 일반적으로 의사코드는 실제 코드를 작성하기 전에 프로그램의 큰 부분이나 복잡한 부분의 계획을 수립할 때 작성합니다.
- 이스케이프 문자
Verse의 이스케이프 문자는 백슬래시(\)이며, string 리터럴 내에 이스케이프 시퀀스를 생성합니다. 이외에는 다르게 해석되는 제어 문자를 변경하는 데 사용됩니다. 예를 들어 string에 { }처럼 용도가 미리 정해진 문자를 포함해야 하는 경우, string 내의 해당 문자 앞에 이스케이프 문자 ""를 추가해야 합니다. 그러면 텍스트에서
"\\{\\}"가 {}로 렌더링됩니다.- 이펙트 계층구조
이펙트란 함수가 표시할 수 있는 행동의 카테고리입니다. 함수에 대한 익스클루시브 이펙트 적용에는 계층구조가 존재하며, 계층구조에서 위에 있는 이펙트는 아래에 있는 이펙트의 모든 행동을 보장합니다. 다음과 같은 계층구조를 가정해 볼 수 있습니다.
transactsvariescomputesconverges
이 경우,
transacts이펙트는 아래에 있는 이펙트의 모든 프로퍼티를 포함하므로varies의computes와converges이펙트를 포함하지만,transacts의 이펙트는 포함하지 않습니다.- 이펙트를 보여줘야 하는지에 관한 액터
이펙트란 함수가 표시할 수 있는 행동의 카테고리입니다.
아래 예시 코드의 경우 함수의 이름은
IsCriticalHealth이고,Health파라미터를 통해 integer 값을 입력으로 취합니다. 그다음으로 함수가 표시하는 이펙트는decides와transacts이며, 이는 해당 함수가 실패 컨텍스트이고 함수가 실패할 경우 해당 액션은 롤백될 수 있음을 알 수 있습니다. 함수에 입력으로 전달되는Health값이 0.0보다 크고 30.0보다 작거나 같다면 함수는 성공합니다. 그렇지 않으면 함수가 실패하며, 이 함수를 호출했던 컨텍스트는 실패를 처리해야 합니다.VerseIsCriticalHealth(Health : float)<decides><transacts> : void = ((Health > 0.0) && (Health <= 30.0))자세한 내용은 지정자와 어트리뷰트를 참고하세요.
- 익스클루시브 이펙트
일부 이펙트는 익스클루시브 이펙트로 간주되며, 애디티브 이펙트를 추가할 수 있지만 다른 익스클루시브 이펙트와 함께 사용할 수는 없습니다. 익스클루시브 이펙트에는
computes,varies,transacts가 포함되며, 애디티브 이펙트에는suspends및decides가 포함됩니다.- 인덱스
인덱스는 항목의 시퀀스 내 위치를 숫자로 나타냅니다. 시퀀스는 목록, 문자 string 또는 임의의 값 시퀀스가 될 수 있습니다.
인덱스는 제로 베이스 카운팅을 사용합니다. 즉 인덱스의 첫 번째 위치는 0, 다섯 번째 위치는 4입니다.
- 인보크
호출을 참고하세요.
- 인보크 시간
표현식을 평가하는 데 걸리는 시간입니다. 즉시 호출은 사실상 시간이 걸리지 않습니다. 비동기화 표현식은 즉시 완료될 수도, 지연을 두고 완료될 수도 있습니다.
- 인수
- 인스턴스화(instantiate)
무언가의 인스턴스를 생성하는 것입니다.
Verse에서 인스턴스화는 데이터 구조체의 인스턴스 또는 값이나 클래스 또는 구조체 같은 타입을 생성하는 것을 말합니다. 아키타입 인스턴스화도 참고하세요.
- 인터프리터
프로그램을 줄 단위로 분석 및 실행하는 프로그램입니다.
- 일반 타입
일반 타입은 내장되었으면서 자주 사용되는 타입입니다. 일반 타입에는
any,comparable,float,int,logic,rational,string이 포함됩니다.- 재귀
재귀는 함수가 스스로를 호출하는 것을 뜻합니다.
- 전파
함수에서 전파는 실패 시에 일어나는 일을 호출자가 처리할 필요가 없는 경우에 발생합니다. 예를 들어
decides이펙트를 갖춘 함수는decides이펙트를 갖춘 다른 함수에 의해 호출될 수 있습니다. 이 경우 호출자를 호출한 함수는 실패를 처리해야 합니다.- 접근 지정자
액세스 지정자는 액세스 레벨을 정의합니다. 아래에는 클래스와 함께 사용할 수 있는 모든 액세스 지정자가 정리되어 있습니다.
public: 액세스에 제한이 없습니다.
internal: 현재 모듈로 액세스가 제한됩니다. 이것이 디폴트 액세스입니다.
protected: 현재 클래스 및 현재 클래스의 모든 서브클래스로 액세스가 제한됩니다.
private: 현재 클래스로 액세스가 제한됩니다.
- 접두사
- 정수
integer란 소수 자리가 없는 정수를 가리키며 양수, 음수, 0이 될 수 있습니다.
- 정의
정의란 함수 정의 또는 클래스 정의와 같이 식별자가 구현되어 있거나 식별자가 할당된 값을 가진 경우를 말합니다. 선언과 비교됩니다.
- 정의
정의를 참고하세요.
- 정적 체크
- 조건
조건은 프로그램이 참인지 또는 거짓인지 확인합니다. 조건부 표현식은 조건을 평가하고 그 결과를 true 또는 false로 반환합니다.
- 조건부
조건을 평가하고 해당 조건의 결과에 따라 인스트럭션을 실행하는 표현식입니다. 조건부의 예시로는
if표현식을 들 수 있습니다.- 중위
- 중첩됨
코드가 중첩되어 있다는 것은 한 코드 블록이 더 넓은 기능을 수행하는 다른 코드 블록 내에 포함되어 있다는 것을 의미합니다.
- 즉시
즉시 표현식은 딜레이 없이 평가를 수행합니다. 즉, 평가가 현재 시뮬레이션 업데이트 내에서 완료됩니다.
- 지니와의 계약
코드를 작성하는 일은 경우에 따라 결과가 예상한 것과 정확하게 일치하지 않는 경우에도 프로그램 자체는 인스트럭션을 정확하게 따른다는 점에서 지니와의 계약에 비교되고는 합니다. 프로그램도 참고하세요.
- 지정자
지정자는 정의에 추가 정보를 적용합니다. 예를 들어 함수 정의의
decides이펙트 지정자는 해당 함수를 실패 가능으로 표시합니다.- 체인지리스트
컴퓨터에 저장된 로컬 파일과 서버에 제출하여 프로젝트 소스 파일에 병합되는 파일 간의 Perforce 내 파일 변경사항을 추적하는 방식입니다. 줄여서 CL이라고도 합니다.
- 최상위 표현식
최상위 표현식은 코드 블록 내에 중첩되지 않은 표현식입니다. 최상위 표현식은 중첩된 코드 블록 같은 복합 표현식이 될 수도 있습니다.
- 추론
상수를 생성할 때와 같이 타입을 명시적으로 지정할 필요가 없는 경우가 있습니다. 예를 들어
MyConstant := 0에서는 할당된 값이 integer이므로 MyConstant의 타입도 integer로 추론됩니다. 이런 경우에 타입이 추론된다고 합니다.- 추측 실행
Verse에서는 실패 컨텍스트를 활용하여 커밋하지 않고도 액션을 시도해 볼 수 있습니다. 이를 추측 실행이라고 합니다. 표현식이 성공하면 변수 값이 변경되는 것과 같은 표현식의 이펙트가 커밋됩니다. 표현식이 실패하면 해당 표현식이 아예 없었던 것처럼 표현식 이펙트가 롤백됩니다.
- 취소됨
- 캐시
데이터를 더 빠르게 액세스할 수 있도록 저장하는 방식입니다.
- 컨텍스트 전환
컨텍스트 전환은 프로세스 또는 스레드의 스테이트를 저장하여 나중에 복원 또는 실행할 수 있도록 하고, 이전에 저장된 다른 스테이트를 복원할 수 있도록 하는 프로세스입니다.
- 컴파일 시간
소스 코드가 머신 인스트럭션으로 변환되는 시점입니다. 런타임과 비교됩니다.
- 컴파일러
사람이 읽을 수 있는 프로그램 인스트럭션을 컴퓨터가 실행할 수 있는 인스트럭션으로 변환하는 소프트웨어이며, 파서라고도 합니다. 컴파일러가 실행되는 시간은 컴파일 타임이라고 합니다.
- 컴파일러 오류
컴파일러 오류는 컴파일 타임에 Verse 컴파일러에 의해 탐지되는 잘못된 코드로 인해 발생합니다. 반면 버그는 런타임에 발생합니다.
- 코드
코드는 소스 코드라고도 부르며, 프로그래머가 소프트웨어 프로그램에 작동 방식을 알려 주기 위해 작성한 인스트럭션입니다. Verse 소스 코드는 프로그래머가 읽을 수 있지만 컴퓨터는 읽을 수 없습니다. 프로그램은 컴퓨터가 읽거나 실행하기 전에 컴퓨터에서 실행 가능한 인스트럭션으로 변환해야 하는데, 이를 컴파일한다고 합니다. 프로그래머가 코딩한다고 하는 것은 이러한 인스트럭션을 작성한다는 것을 의미합니다.
- 코드 블록
블록 또는 코드 블록은 새로운 코드 바디가 시작되는 표현식 그룹입니다. 코드 블록에 표현식이 전혀 포함되지 않는 경우도 있을 수 있지만, 이 경우 보통 나중에 표현식을 채워 넣을 자리표시자로 사용됩니다.
코드 블록은 식별자 뒤에 따라옵니다.
Verse의 코드 블록은 세 가지 포맷을 가집니다. 이러한 포맷은 모두 시맨틱상으로는 해당 포맷이 코드의 실제 역할을 변경하지 않는다는 점에서 동일합니다.
공백 삽입 포맷은
:으로 블록을 시작하며, 각 표현식은 공백 4개를 들여 쓴 줄로 이어집니다.Verseif (test-arg-block): expression1 expression2if (test-arg-block)은 블록의 일부가 아니며, 해당 줄 끝의:에서부터 블록이 시작됩니다.;을 사용하여 한 줄에 있는 여러 표현식을 구분할 수도 있습니다.Verseif (test-arg-block): expression1; expression2; expression3중괄호를 사용한 여러 줄 포맷에서는 블록이
{}로 감싸지며, 표현식은 새 줄에 작성됩니다.Verseif (test-arg-block) { expression1 expression2 }공백 삽입 포맷에서와 같이
;을 사용하여 한 줄에 있는 여러 표현식을 구분할 수도 있습니다.Verseif (test-arg-block) { expression1; expression2 }세 번째 포맷은 중괄호를 사용한 한 줄 포맷입니다. 마찬가지로 블록이
{}로 감싸지지만, 각 표현식은 새 줄에 작성되는 것이 아니라;으로 구분됩니다. 따라서{}기호를 다른 줄에 쓸 필요가 없습니다.Verseif (test-arg-block) {expression1; expression2}자세한 내용은 코드 블록을 참고하세요.
- 코드 샘플
하나 이상의 개념, 클래스, 함수 또는 프로그래밍 언어의 다른 측면을 보여주는 독립형 프로그램, 모듈 또는 클래스입니다. 코드 스니펫과 비교됩니다.
- 코드 스니펫
스니펫은 특정 개념을 표현하거나 구현하기 위한 코드로, 일반적으로 길이가 짧습니다.
코드 스니펫은 완전한 독립형 프로그램이 아닙니다. 코드 스니펫은 코드 블록에 복사하여 붙여넣을 수 있습니다. 코드 샘플과 비교됩니다.
- 코드 유닛
인코딩된 텍스트 유닛 하나를 표시할 수 있는 최소 비트 조합입니다. UTF-8은 8비트 코드 유닛을 사용합니다.
- 코드 코멘트
코멘트를 참고하세요.
- 코드 포인트
- 코멘트
프로그래머가 자신의 코드 또는 프로그램을 작성한 방식에 대한 이유를 설명하기 위해 작성하는 코멘트입니다. 코드 자체가 프로그램의 작동 방식을 설명한다면 코멘트는 보통 그 이유를 설명하기 위해 추가됩니다.
코드 코멘트는 코드 어디서든
#뒤에 작성할 수 있습니다. 프로그램이 실행될 때 코드 코멘트는 무시됩니다.코멘트는 줄 맨 앞에
#을 붙여 한 줄로 작성할 수 있습니다. 코멘트를 끝내려면 줄 끝에서 리턴 키를 누르면 됩니다.Verse# A single line is commented this way.여러 줄 블록 코멘트를 작성할 수도 있습니다. 이 경우
<#으로 블록을 시작하여#>로 끝내면 됩니다.Verse<# You can make multi-line comments in your code by starting and ending the comments as shown here. #>코드에 코멘트를 추가하는 다른 방법을 확인하려면 Verse 언어 퀵 레퍼런스를 참고하세요.
- 콜스택
콜 스택은 프로그램에서 호출을 트래킹하기 위해 사용되는 것으로, 어떤 함수가 실행 중인지, 실행이 완료되었는지, 어떤 것이 실행될 예정인지 등을 파악합니다.
- 쿼리
- 키-값 쌍
키가 값에 연결되는 경우 둘을 합쳐 키-값 쌍이라고 합니다. 이때 해당 키를 사용하여 값을 조회할 수 있습니다.
- 키워드
키워드는 컴파일러에서 특별한 의미를 갖는 예비어입니다. 키워드의 예로는
for나class가 있습니다. 키워드는 식별자로 사용할 수 없습니다.- 타일
바닥 또는 벽과 같은 표면의 그리드 섹션입니다.
메뉴 옵션을 시각적으로 표현하는 요소입니다.
Verse의 경우: 바닥, 벽 등 표면의 그리드 칸입니다.
- 타임 플로
바닥 또는 벽과 같은 표면의 그리드 섹션입니다.
타임 플로 컨트롤은 Verse 프로그래밍 언어의 핵심이며, 동시 표현식으로 구현됩니다.
타임 플로는 플로 컨트롤의 일종이지만 컨트롤 플로에서 프로그램에 제시된 순서에 따라 컴퓨터가 인스트럭션을 실행하는 데 반해, 타임 플로에서는 동시성 표현식이 사용된 방식을 기반으로 순서가 아닌 시간에 따라 실행을 제어합니다.
타임 플로는 동시성과 연관된 또 다른 방식입니다.
- 타입 에일리어스
타입 에일리어스는 기존 타입에 새 이름을 부여하는 방식입니다. 타입 에일리어스를 선언하면 기존 타입의 이름 대신 에일리어싱된 이름을 사용할 수 있습니다. 타입 에일리어스가 새 타입을 생성하는 것은 아니며, 기존 타입에 새 이름을 제공하는 역할만 합니다.
- 타입 형변환
NewReference := type_to_cast_to[Reference]구문을 사용하여 클래스를 서브클래스 중 하나로 변환할 수 있으며, 이를 타입 형변환이라고 합니다. 여기서type_to_cast_to는 사용할 타입입니다. 타입 형변환은 실패 가능 표현식입니다. 오브젝트를 해당 타입으로 변환할 수 없으면 형변환이 실패하기 때문입니다. 예를 들어 클래스가 서브클래스와 다른 타입인 경우가 이에 해당합니다.다음 예시에서는
creative_device_base타입을 갖는TaggedDevice를 특정 함수를 사용하기 위해customizable_light_device타입으로 변환합니다.TaggedDevice가 커스터마이징 가능한 라이트 장치가 아닌 경우TurnOn()을 호출하지 않습니다.Verseif (LightDevice := customizable_light_device[TaggedDevice]): LightDevice.TurnOn()- 테일 노드
- 틱
틱의 동의어로 사용되고 가끔은 프레임의 동의어로도 사용되는 시뮬레이션 업데이트를 참고하세요.
- 파라미터
타입 같은 도메인을 포함하는 입력 변수와 함수 시그니처에서 정의되는 선택적 디폴트 값으로, 함수의 바디에서 사용됩니다. 실행인자와 비교됩니다.
- 파라미터 타입
- 파서
코드를 파싱하는 프로그램입니다.
- 파싱
컴퓨터 공학에서 파싱이란 일련의 명령, 일반적으로는 프로그램을 비교적 쉽게 처리할 수 있는 컴포넌트로 분리하여 올바른 구문에 대하여 분석한 다음 각 컴포넌트를 정의하는 태그에 어태치하는 것을 가리킵니다.
- 파이어 앤 포겟
파이어 앤 포겟이란 완료되는 시점이나 성공적으로 완료되는지 여부를 상관하지 않아도 되는 표현식을 가리킵니다. 이런 표현식은 매우 드물게 사용됩니다.
- 패러다임
무언가의 전형적인 패턴 또는 모델입니다. 프로그래밍에서 패러다임은 프로그래밍 언어가 조직되는 방식입니다. 프로그래밍 언어의 네 가지 주요 패러다임은 다음과 같습니다.
명령형
logic
함수
오브젝트 지향
Verse처럼 여러 패러다임에 해당하는 언어도 있습니다.
- 퍼블릭 멤버
- 편집가능
코드에 추가하면 프로퍼티를 UEFN에 노출시킬 수 있는 어트리뷰트입니다. 이 어트리뷰트를 갖춘 태깅 코드는
@attribute_name, 즉 아래의 경우에는@editable을 식별자 필드 앞에 추가하는 방식으로 구성됩니다.Verse@editable PropertyName : type = DefaultValue예를 들어 string 필드
GreetingMessage는 디폴트값이"Hello, stranger"인 편집 가능한 프로퍼티입니다.Verseexpose_properties := class(creative_device): @editable GreetingMessage : string = "Hello, stranger"이를 사용하는 방법에 대한 자세한 내용은 에디터에서 장치 프로퍼티 커스터마이징을 참고하세요.
- 평가
- 평가 순서
- 포인터 변수
포인터 변수는 값이 저장된 메모리 위치를 가리킵니다. 포인터 변수를 생성한 후에는 포인터 변수의 메모리 위치를 변경할 수 없지만 해당 메모리 위치에 저장된 값을 변경할 수는 있습니다.
- 폴링
폴링은 클라이언트 프로그램이 동기화된 작업을 통해 외부 장치의 상태를 능동적으로 샘플링하는 것을 가리킵니다. 입력/출력(I/O) 측면에서 가장 흔히 사용되며, 폴링된 I/O 또는 소프트웨어 기반 I/O라고도 합니다.
- 표준 라이브러리
Verse에서 사용할 수 있는 일련의 함수, 상수 및 기타 언어 정의입니다. 이 라이브러리는 일반적인 프로그래밍 요구 사항에 대한 구현을 제공합니다. 수학 함수처럼 프로그래머가 자주 사용하는 리소스입니다.
- 표현식
표현식이란 평가했을 때 결과가 도출되는 코드(값과 함수의 조합)의 최소 단위입니다.
아래 예시는
if ... else표현식으로, 지정된 기준을 값이 충족할 경우와 그렇지 못할 경우 각각 다른 결과가 도출됩니다.Verseif (a > 5): “Big!” else “Small!”Verse에서는 리터럴부터 함수 호출 또는 컨트롤 플로까지 모두 표현식입니다.
명령문의 경우에는 독립형 명령이며 결괏값을 가지지 않습니다. Verse에서는 모든 것이 표현식이며, 값을 평가할 수 있는 명령문과 표현식 간에 구분이 없습니다.
자세한 내용은 표현식을 참고하세요.
- 퓨어
동일한 입력이 주어지면 함수에서 항상 정확히 동일한 출력을 제공하며, 부작용(변경 가능 변수에 대한 쓰기, 입출력 이펙트 등)이 없다고 선언합니다.
- 퓨처
실행이 시작되었지만 취소되지 않고 중단된 작업입니다. 미래의 어느 시점에는 완료되므로 퓨처라고 합니다.
- 프레임
프레임은 컴퓨터 모니터나 TV에서 완전히 렌더링된 이미지이며, 모든 시점의 시뮬레이션을 나타냅니다. 프레임은 보통 단계적이기 때문에 시뮬레이션 업데이트(또는 틱)와 같은 뜻으로 사용되기도 하지만, 새로운 프레임은 시뮬레이션 업데이트와 다른 속도(더 높거나 낮은 빈도)로 발생할 수 있습니다. 프레임 레이트 또는 초당 프레임(frames per second, fps)이란 초당 표시되는 프레임의 수를 말합니다.
- 프로그래밍
- 프로그래밍 언어
컴퓨터 프로그램을 작성하는 데 사용되는 형식 언어입니다. 프로그래밍 언어는 그 수가 많으며 자체 규칙도 갖추고 있습니다. 예를 들어 시각적 프로그래밍 언어인 Scratch는 인터랙티브 스토리, 게임 및 애니메이션 개발에 사용되며, 텍스트 기반 언어인 C++는 게임 개발에 흔히 사용됩니다. Verse는 개발 툴을 사용하는 방법을 배워보려는 크리에이터를 위해 에픽게임즈에서 개발한 프로그래밍 언어입니다.
- 프로그램
프로그램은 컴퓨터에 무언가를 어떻게 수행해야 할지 지시하는 인스트럭션 세트입니다. 모든 프로그램의 기본은 입력을 받고 출력을 반환하는 방식을 컴퓨터에 알려주는 것입니다.
프로그램은 문제를 해결합니다. 하지만 프로그램은 매우 직설적이기 때문에 지니와 계약을 맺는 것과 같습니다. 지니인 프로그램은 사용자의 요청을 정확히 들어줍니다. 완전히 정확히요. 프로그래머가 수신될 수 있는 입력과 그로 인한 출력을 정확하게 설명하지 못하고 일어날 일을 가정할 때 오류가 발생합니다.
- 프로퍼티
- 프리미티브 타입
프리미티브는 다른 타입에서 생성되지 않은 모든 타입입니다. 즉, 프리미티브는 복합이 아니며 더 이상 분해할 수 없습니다. 내장 프리미티브 타입에는
void,logic,int,float,rational,char등이 있습니다. 프리미티브는 Verse 언어에 내장되어 있습니다.컨테이너 타입과 비교됩니다.
- 플레이 공간
플레이어나 팀 또는 특정 플레이어의 팀 배열을 가져오는 데 사용할 수 있는 Verse API 모듈입니다. 플레이어 추가 또는 플레이어 제거 이벤트를 등록할 수도 있습니다.
- 피연산자
연산이 수행되는 수입니다. 예를 들어
1 + 2표현식에서는+가 연산자이고1과2가 피연산자입니다.- 필드
멤버를 참고하세요.
- 핑퐁 애니메이션 모드(PingPong animation mode)
최종 키프레임에 도달했을 때 애니메이션의 방향을 반전하고, 반대 방향으로 다시 재생하는 데 사용합니다.
- 하드 코딩
하드 코딩된 데이터는 변수에 할당되지 않고 코드에 직접 기록됩니다. 이 경우 코드의 유연성이 떨어지고 업데이트가 어려워지지만, 하드 코딩이 필요한 경우가 있습니다.
- 하위 타입
해당하는 수퍼타입의 모든 연산을 지원하는 타입입니다.
subtype키워드는 소괄호와 함께 사용하여 한 타입이 특정 타입에 제한된다는 것을 명시할 수 있습니다. 예를 들어, 몇 가지 Verse 배열 메서드는subtype을 사용하여, 해당 메서드가 작동하기 위해서는 배열의 모든 엘리먼트가 comparable 수퍼타입을 갖고 있어야 한다고 지정합니다.Verse(Input:[]t where t:subtype(comparable)).RemoveFirstElement<public> (ElementToRemove:t)<computes><decides>:[]t RemoveFirstElement이 경우 배열 엘리먼트가 배열의 엘리먼트 중
ElementToRemove실행인자와 같은 엘리먼트가 있는지 판단할 수 있도록comparable수퍼타입을 가져야 합니다.- 한정
식별자의 '재사용'을 허용하는 스코프 내에서 식별자를 정의합니다. 예를 들어 'cat'으로 명명된 상수가 있다고 가정하면, 'sarah.cat'으로 명명된 클래스 필드에 동일한 이름을 사용할 수 있습니다. 둘 모두 이름에 'cat'이 포함되지만, 'sarah.cat'은 한정된 것입니다.
- 함수 로직 프로그래밍
- 함수 시그니처
함수 시그니처는 함수 이름(식별자), 함수의 입력(파라미터), 출력(결과)을 선언합니다. Verse 함수는 함수의 사용 또는 구현 방식을 지정하는 지정자도 가질 수 있습니다.
- 함수 프로그래밍
함수의 사용에 초점을 맞춘 선언형 프로그래밍의 한 유형입니다. 함수 프로그래밍의 목표는 부작용을 줄임으로써 테스트와 디버깅을 더 수월하게 하는 것입니다. 함수 프로그래밍 언어의 한 가지 예로는 Haskell을 들 수 있습니다.
- 함수 호출
함수를 평가하는 표현식으로, 호출 또는 인보크한다고 합니다. 함수 호출은 함수에
decides이펙트가 있는지 여부에 따라FunctionName()및FunctionName[]과 같은 두 가지 형태를 가질 수 있습니다. 함수 호출 표현식의 결과 타입은 함수 시그니처에서 정의됩니다.- 핸들러
핸들러는 바인딩된 이벤트에 반응하여 호출되는 함수입니다. 예를 들어 함수를 버튼의 InteractedWithEvent 에 바인딩하면 플레이어가 해당 버튼과 상호작용할 때마다 해당 이벤트와 연관된 핸들러가 호출됩니다.
- 헤드 노드
- 후위