이전 글에서는 벌스(Verse)가 기존 게임 스크립트 언어들과는 조금 다른 방향성을 가지고 있다는 점을 정리해보았습니다.
특히 Failure와 동시성 같은 개념을 언어 안으로 가져오려는 특징도 함께 살펴보았습니다.
이번 글에서는 실제 벌스 코드 안에서 변수와 타입 시스템이 어떤 방식으로 표현되는지,
그리고 왜 기존 C++나 일반적인 게임 스크립트 언어와는 조금 다른 느낌을 주는지를 정리해보려고 합니다.
변수 선언 방식이 비교적 단순하다
벌스 코드를 처음 보면 변수 선언 방식이 굉장히 단순하다는 느낌을 받게 됩니다.
예를 들어 C++에서는 아래처럼 타입과 세미콜론, 초기화 코드를 함께 작성하는 경우가 많습니다.
int Health = 100;
반면 벌스에서는 아래처럼 비교적 간결한 형태로 값을 선언합니다.
Health : int = 100
세미콜론도 사용하지 않고, 전체 문법도 상당히 단순하게 구성되어 있습니다.
특히 C++에 익숙한 개발자라면 처음에는 낯설게 느껴질 수도 있습니다.
하지만 벌스는 전체적으로 불필요한 저수준 요소를 최대한 줄이고, 상태와 타입 자체를 조금 더 명확하게 표현하려는 방향성이 명확해 보입니다.
특히 UEFN처럼 수많은 사용자가 다양한 게임 로직을 작성하는 환경에서는 복잡한 문법보다,
빠르게 읽고 이해할 수 있는 코드 구조가 훨씬 중요해질 수 있습니다.
그리고 벌스는 이런 상황을 꽤 강하게 의식하고 설계된 언어처럼 보입니다.
타입은 여전히 중요
벌스 문법은 비교적 간결한 편이지만, 타입 개념 자체가 약한 언어는 아닙니다.
오히려 타입을 꽤 중요하게 다루는 방향처럼 보입니다.
예를 들어 아래처럼 변수 선언에서도 int, float, string 같은 타입 정보를 직접 명시하게 됩니다.
PlayerName : string = "Ronnie" MoveSpeed : float = 600.0
즉, 벌스는 동적 타입 언어처럼 모든 타입 정보를 숨기기보다,
현재 상태와 데이터 구조를 비교적 명확하게 표현하려는 특징을 가지고 있습니다.
문법은 단순화하되 타입 지정을 명확하게 함으로써 플랫폼 안정성도 고려하는 것으로 보입니다.
특히 대규모 온라인 환경에서는 서로 다른 사용자가 작성한 코드들이 함께 동작해야 합니다.
이런 환경에서는 데이터 구조가 예측 가능하게 유지되는 것이 굉장히 중요해질 수 있습니다.
따라서 벌스는 단순히 “가볍고 쉬운 스크립트 언어” 라기 보다는, 안정성과 명확성을 함께 고려하는 설계 철학이 느껴집니다.
option 타입은 중요한 개념
벌스를 공부해 보면 option 타입 개념이 등장합니다.
예를 들어 어떤 값이 존재할 수도 있고, 존재하지 않을 수도 있는 상황을 표현할 때 option 타입이 사용됩니다.
CurrentTarget : ?player = false
이 코드는 현재 타겟 플레이어가 존재하지 않을 수도 있다는 의미를 표현합니다.
기존 C++에서는 보통 nullptr 체크나 포인터 검사 같은 방식으로 이런 상황을 처리하는 경우가 많습니다.
하지만 벌스는 값이 존재하지 않을 가능성 자체를 타입 시스템 안에서 조금 더 직접적으로 표현하려는 의도처럼 보입니다.
즉, 단순히 “개발자가 알아서 조심해야 하는 문제”로 넘기기보다,
언어 구조 안에서 실패 가능성을 조금 더 명확하게 드러내려는 특징이 보입니다.
그리고 이런 특징은 이전 글에서 이야기했던 Failure 개념과도 자연스럽게 연결됩니다.
실패 가능성을 코드 안에서 드러내려는 특징
일반적인 게임 코드에서는 특정 객체가 없을 수도 있다는 사실을 개발자가 직접 조심해야 하는 경우가 많습니다.
예를 들어 null 체크를 깜빡하거나, 잘못된 객체 접근이 발생하면 런타임 오류로 이어질 수도 있습니다.
반면 벌스는 값이 존재하지 않을 수도 있다는 사실 자체를 코드 안에서 조금 더 명시적으로 표현하려는 것 같습니다.
즉, 단순히 런타임에서 조심하는 수준보다, 언어 안에서 실패 가능성을 드러낼 수 있도록 설계한 것입니다.
그리고 이런 방향은 대규모 온라인 플랫폼 환경에서는 꽤 중요할 수 있다고 생각합니다.
수많은 사용자가 작성한 코드가 동시에 실행되는 환경에서는 예상 가능한 실패 상황을 얼마나 안전하게 표현할 수 있는지가 중요할 수 있기 때문입니다.
타입 시스템과 플랫폼 구조의 연결 가능성
현재 벌스는 아직 개발 및 발전 중인 언어입니다.
따라서 앞으로 타입 시스템과 언어 구조 역시 계속 변화할 가능성이 있습니다.
하지만 현재 공개된 방향만 보더라도,
벌스는 단순 스크립트 언어보다 안정성과 상태 표현,
그리고 실패 가능성을 중요하게 처리하려는 의도가 느껴집니다.
그리고 이런 방향은 앞으로 대규모 온라인 환경과 사용자 제작 콘텐츠 플랫폼,
멀티플레이 기반 시스템 안에서 점점 더 중요해질 가능성이 있습니다.
따라서 벌스의 타입 시스템 역시 Epic이 앞으로 어떤 플랫폼 환경을 만들고자 하는지와 연결해서 살펴볼 필요가 있다고 생각합니다.
마무리
벌스의 변수와 타입 시스템은 단순하고 간결합니다.
문법은 단순하게 유지하면서도,
상태와 실패 가능성을 조금 더 명시적으로 표현하려는 설계 철학이 강하게 느껴집니다.
특히 option 타입과 Failure 개념은 기존의 게임 스크립트 언어들과는 차이가 나는 중요한 특징 중 하나입니다.
그리고 이런 구조는 Epic이 앞으로 만들고자 하는 플랫폼 환경과도 연관되어 있다고 생각합니다.
다음 글에서는 벌스 함수 문법이 왜 기존 언어와 조금 다르게 느껴지는지,
그리고 함수 선언 구조 안에 어떤 방향성이 숨어 있는지를 이어서 정리해보겠습니다.