본문 바로가기
가상세계 산사VR

가상세계 산사VR C# 스크립팅 시스템

첫 게시글 : itadventure.tistory.com/337

 

세컨드라이프 2, VR 가상세계 산사(SANSAR)

산사(SANSAR), 일명 세컨드라이프2라고 불리우는 린든랩 사의 2번째 가상세계 컨텐츠에 접속해보았습니다. 산사는 눈에 고글을 쓰고 가상현실을 체험하는 VR 전용 컨텐츠입니다. 몇 년 전 확인해보

itadventure.tistory.com

산사 VR에는 C# 언어로 된 스크립팅 시스템이 있습니다.

※ 이 게시글은 컴퓨터 언어 C# 에 대해 일부 지식이 있다는 것을 전제로 진행합니다.
다소 전문적일 수 있으니 양해 바랍니다. 그래도 마지막에 언어를 몰라도 실습하실 수 있는 한 예제를 제공해 드리도록 하겠습니다 :)

전작 세컨드라이프1에서는 LSL 이라는 C 언어와 비슷하면서도 좀 다른듯한 생소한 스크립트 언어가 있었지만
산사에서는 어느 정도 알려진 컴퓨터 언어인 C# 언어 개발자를 위한 스크립팅 도구를 마련해 놓았는데요.
C#은 자바와 유사한 클래스 기반의 컴퓨터 언어입니다.

스크립트 개발시에는 비주얼 스튜디오 툴을 써도 되지만, 사실 안써도 됩니다.
어차피 텍스트로 된 하나의 클래스 소스를 산사에 업로드해서 실행하는 것이 전부이기 때문이지요.
비주얼 스튜디오 툴은 다만 자동완성과 기능들의 함수들의 파라미터 유형 확인을 도와줄 뿐입니다.
직접 산사와 연동하는 부분은 어디에도 없는 것으로 확인됩니다.


하지만 개발이 편하려면 비주얼 스튜디오 프로젝트 세팅이 필요합니다.
사실 비주얼 스튜디오를 구성까지는 하되 직접 프로그램을 실행할 일은 없지만 말이지요.
먼저 비주얼 스튜디오를 실행하고, 새 프로젝트에서 콘솔 응용 프로그램을 선택, 프로젝트를 생성합니다.

솔루션 탐색기에서 '참조 추가'를 선택하셔서, 

C:\Program Files\Sansar\Client\ScriptApi\Assemblies 폴더에 있는
Sansar.Script.dll 파일과 Sansar.Simulation.dll 파일을 참조 추가해 줍니다.

 

이어서 클래스 소스를 추가합니다. 파일명은 자유롭게 주셔도 됩니다.

소스 내용을 모두 지우고 다음 소스를 붙여넣습니다.

using Sansar.Script;
using Sansar.Simulation;

public class BaseScript : SceneObjectScript
{
    public override void Init()
    {
        
    }
}

자, 이 것이 기본 스크립트입니다. 사실 비주얼 스튜디오의 다른 소스들은 아무 상관이 없습니다.
다만 SceneObjectScript 클래스를 상속받은 이 스크립트만 기능을 구성해주시고 기능 구현이 되면 산사에 스크립트 파일을 업로드해주시면 되는데요.
SceneObjectScript 클래스 외에도 몇가지 클래스가 더 있는 것으로 확인됩니다.

우선 가장 간단한 기능 하나를 구현해볼텐데요.
아래와 같이 소스를 구성합니다. addData 라는 변수가 하나 추가되었지요?

using Sansar.Script;
using Sansar.Simulation;

public class AddInteractionScript : SceneObjectScript
{
    public override void Init()
    {
        ObjectPrivate.AddInteractionData addData =
            (ObjectPrivate.AddInteractionData)WaitFor(
                ObjectPrivate.AddInteraction,
                "나는 상자", true);
    }
}

그리고 산사의 월드 에디터에서 이 파일을 업로드합니다.
Import - Script 를 선택하시면 C# 스크립트 파일을 업로드하실 수 있습니다.

이어서 Import Script 창에서는 금방 저장한 클래스 파일을 첨부하고,
아이템 이름을 지어줍니다. 아이템명은 한글로 지어주실수도 있는데 '이름붙이기'로 지어보겠습니다.

그러면 산사에서 직접 컴파일이 진행되고

오류가 없으면 인벤토리에 스크립트 아이템이 생겨납니다.

이 아이템의 사용법은 다음과 같습니다. 월드의 오브젝트에 그냥 드래그하는 것입니다.

스크립트가 제대로 입력되었는지는, 해당 아이템을 마우스 우클릭하여 Structure 항목을 선택하시면,

오브젝트 Structure (구성) 창이 떠서 확인이 가능합니다.

한번 이 스크립트가 어떤 작동을 하는지 볼까요?
그러려면 상단 도구 상자에서 Save, Build 를 연속 선택하신 후에,

Visit Now 를 선택하시면 됩니다. 앞으로는 이 과정을 "월드를 실행해 주세요"로 표현하도록 하겠습니다 

사물을 바라보면 아무런 변화가 없는 듯 합니다.

하지만 스크립트를 넣은 물체에 마우스를 대보면, 큼지막한 글자가 뜨는 것을 보실 수 있을 겁니다.
또렷하고 예쁜 한글이 말이지요 :)

 

이번에는 한가지를 더 해봅시다. 우선 현재 월드를 편집하시려면 
Create - Edit this scene ( 이 장면 편집 ) 을 선택하시면 됩니다.

다시 한번 비주얼 스튜디오에서 소스를 아래와 같이 수정합니다.

using Sansar.Script;
using Sansar.Simulation;

public class AddInteractionScript : SceneObjectScript
{
    public override void Init()
    {
        // 인터렉션 요소 생성
        ObjectPrivate.AddInteractionData addData =
            (ObjectPrivate.AddInteractionData)WaitFor(
                ObjectPrivate.AddInteraction,
                "나는 상자", true);

        // 터치 이벤트
        addData.Interaction.Subscribe((InteractionData data) =>
        {
            AgentPrivate agent = ScenePrivate.FindAgent(data.AgentId);

            if (agent != null)
            {
                agent.SendChat(agent.AgentInfo.Name + "님, 만나서 반갑습니다");
            }
        });
    }
}

이제, 앞에 설명드린 확정 예제가 나왔습니다.
비주얼 스튜디오가 없으신 분도, 컴퓨터 언어를 모르시는 분도,

이 소스를 그냥 메모장에 복사해서 저장해주시요.
다만 저장할 때 확장자는 txt 가 아닌 cs 로 저장해주시기 바랍니다.

그리고 산사에서 IMPORT - SCRIPT - 파일 찾아보기로 선택 후, 아이템 이름 입력, IMPORT 를 선택해 주세요.

그러면 컴파일이 끝나고, 인벤토리에 스크립트 아이템이 생겨납니다.

이 아이템을 월드에 배치된 아이템에 드래그합니다. 이제 어떤 기능이 적용되었을까요?

월드를 실행해서 살펴봅시다.
SAVE - BUILD - Visit Now 쓰리 콤보!

이제 채팅창을 유심히 살펴봅시다.
혹시라도 채팅창을 닫으셨다면, 왼쪽의 Socialize - Chat 을 선택하시면 채팅창이 다시 뜨지요.

금방 마우스를 갖다 대면 제목이 나오는건 똑같습니다.

그런데 이 물체를 마우스로 클릭하시면,
채팅 창에 내 캐릭터 이름을 대상으로 인사말이 뜹니다.
아주 기본적인 것이긴 하지만 이 것이 산사의 스크립팅 시스템입니다.

산사의 스크립팅 시스템에는 얼마나 많은 기능이 있을까요?
예제들을 살펴보니 http 웹통신은 지원되는 것으로 확인되며,
당연 C#의 기본 기능들은 대부분 사용할 수 있을 것으로 생각됩니다.

UFO와 같은 탈것의 스크립트도 지원된다고 하니까요. 다만 이건 비공개 소스라서 내용을 볼 수는 없군요.
테스트는 해보지 않았습니다.

store.sansar.com/listings/705072d4-f6a2-4b4c-8cb7-4b1e69ef4ca6/basic-vehicle-script

산사의 스크립팅 시스템은 차후에 기회가 되면 그 유용성에 대해 더 연구가 필요할 것 같습니다.

오늘도 유용한 정보가 되셨는지요?
아무쪼록 힘찬 주 출발하시길 바라며, 코로나 안전에도 유의하시기 바랍니다.

읽어주셔서 감사합니다.

다음 게시글 : itadventure.tistory.com/341

 

가상세계 산사VR 튜토리얼 랜드

오늘은 연차라서 모처럼 가상세계 '산사'(sansar)의 세계를 들여다 보았습니다. 세컨드라이프2, 산사에서는 무엇이 가능한 가인가를 대체적으로 보려고요. 먼 훗날에 지구상의 기후 변화로 더 이

itadventure.tistory.com