2022-10-17

내 커스텀시트를 Roll20에 등록하기

지금까지 roll20에서 사용가능한 커스텀시트의 HTML, CSS, JavaScript 코드를 작성하는 법에 대해 살펴보았습니다. 이렇게 만든 시트를, 별다른 과정 없이 모두가 사용가능하도록 roll20에 올려 두고 싶다면 해야 할 일이 있습니다. 먼저 GitHub에 가입해서 계정을 만드는 일입니다. 그래야 우리가 만든 코드를 보기 쉽게 웹에 공개할 수 있어요.

이 Git이라는 것은 어떤 파일의 내용이 변경되었을 때, 그것을 여러 명의 사용자가 동시에 작업하거나 해서 충돌이 일어나는 것을 막을 수 있도록 바뀐 부분을 추적해서 보여주는 소프트웨어입니다. 조금 더 자세히 알고 싶다면 다른 글을 읽어보면 좋지만, 그냥 이 글을 그대로 따라하기만 해도 괜찮습니다. roll20은 이것을 이용하는 사이트, 깃허브의 저장소에서 사용자들이 각자 만든 코드를 관리해요.

 

GitHub - Roll20/roll20-character-sheets: Character sheet templates created by the community for use in Roll20 VTT. Submit a tick

Character sheet templates created by the community for use in Roll20 VTT. Submit a ticket at roll20.net/help if critical hotfixes are to be requested. - GitHub - Roll20/roll20-character-sheets: Cha...

github.com

여기에 올라간 시트는, 우리가 roll20에서 새 게임을 위한 방을 만들 때 (무료 유저도) 캐릭터시트를 선택하여 사용할 수 있도록 MIT라이센스를 따라 공개됩니다. 그러려면 HTML코드CSS코드 파일이 꼭 필요할 것이고, 이 시트가 어떤 것인지 설명하는 텍스트미리보기 이미지도 필요해요. 이미지는 png나 jpg 또는 gif의 형식으로 올릴 수 있는데, 여기서는 그 외의 정보들을 json파일로 만드는 방법만 설명하겠습니다.

{
  "html": "캐릭터시트.html",
  "css": "캐릭서시트.css",
  "authors": "만든사람 (@연락처)",
  "roll20userid": "아이디번호",
  "preview": "캐릭터시트.png",
  "instructions": "500자 정도의 소개문",
  "legacy": true
}

이것이 우리가 만들어야 할 json파일의 기본적인 형태가 됩니다. html, css, preview는 각각 우리가 첨부할 파일에 맞추어 이름을 변경하면 되고, authors에는 닉네임을 적으면 됩니다. 연락처는 보통 트위터 아이디를 적거나 생략하기도 해요. roll20userid라는 것은, 여러분의 roll20계정에 할당된 고유넘버입니다. 자신의 프로필을 클릭했을 때 주소창에 뜨는 7자리 숫자를 확인해서 적고, instuction은 마크다운 문법을 지켜서 작성합니다. legacy라는 것은 이 시트가 LCS와 CSE 중 어느 쪽으로 적용되기를 바라는지를 묻는 부분이기 때문에 지난 글을 참고해주세요. 오래 전에 만들어진 CoC나 인세인 등의 시트를 꾸며놓은 것이 아니라면, 대부분 CSE를 적용하게 되므로 false를 기입해주세요.

더보기

마크다운 문법이라는 것을 처음 듣는 분들도 있겠지만, 사실 여러분은 어느 정도 이미 그것을 알고 있습니다. 세션 중 **굵게** 강조한다던가, *기울인* 내용과 ***굵게 기울인*** 내용, 그리고 [링크](주소)와 ``코드``를 쓰는 법을 말이에요. 몇 가지 다른 점이 있다면, #를 써서 매크로를 호출하지 않고 가장 높은 수준의 제목을 쓰고, ######을 써서 6수준까지의 제목을 씁니다. 코드는 `코드`의 하나만으로도 충분하고, 여러 줄을 코드로 강조할 때는 앞뒤에 3개씩 쓰면 됩니다. 또한, 이미지를 삽입할 때는 ![링크](주소)의 형태로 맨 앞에 느낌표가 붙는다는 차이까지 알아두시면 좋습니다. 하지만 이런 부분의 작성이 어려우시다면, tistory의 게시글 작성에 적은 뒤 편집기를 기본모드가 아닌 마크다운으로 바꾸어 그 결과를 복사해서 붙여넣어도 됩니다. 단, 줄바꿈은 \n으로 치환해주는 걸 잊지 마세요.

작성한 json 파일은, 시트를 선택했을 때 미리보기 이미지와 설명을 제공하게 된다.

더보기

위에 나온 것들은 필수적인 사항이고, 이제부터는 있어도 좋고 없어도 괜찮은 것들입니다. 공식 시트의 경우 시트 개요서를 사용하여 compendium을 지정하고 여러가지 편리한 기능(저널에서 드래그하여 맵에 토큰을 내려놓았을 때, 기본적으로 특정 능력치가 토큰의 bar에 연결된다던지)하는 부분이 가능한데, 저희 시트는 팬메이드이니 쓸 수 없습니다. 만든 사람이 후원을 받고 싶다면 patreon이나 tipeee의 링크를 첨부할 수 있지만, 간단한 규칙을 지켜서 적어야 합니다. 마지막으로 꽤 유용하게 잘 쓰이는 것이 useroptions입니다.

"useroptions": [
	{
		"attribute": "rule",
		"displayname": "어떤 판본의 룰북을 사용합니까?",
		"type": "select",
		"options": [
			"동인판|dadami",
			"기업판|bouken"
		],
		"default": "dadami",
		"description": "동인판은 육장다다미공방에서 발매되어 6면체 하향판정을 실시하고, 기업판은 모험기획국에서 발매되어 6면체 상향판정을 실시합니다."
	},
        { … }
]

예를 들어 톱니바퀴탑의 탐공사(스카이너츠)라는 룰을 설명하겠습니다. 中西詠介의 작품으로, 六畳間幻想空間라는 동인 서클에서 처음 발매되었으나 후에 모험기획국에 속하게 되며 많은 규칙이 바뀌었습니다. 동인판에서는 2d6의 결과가 능력치보다 낮으면 성공하는 하향판정이었지만 기업판에서는 특기/취약의 능력치만을 지정하여 상향판정을 한다는 차이가 있어, 종이 시트라도 같은 형태의 캐릭터 시트를 쓰는 것이 불가능합니다. 그래서, 저는 이 시트를 2가지 버전으로 만들고 탭을 선택하는 느낌으로 어떤 시스템을 사용할 것인지를 전환할 수 있게 하려고 합니다.

<input type="checkbox" name="attr_rule" value="bouken">
<input type="checkbox" name="attr_rule" value="dadami">
<select name="attr_rule">
 	<option value="bouken"></option>
 	<option value="dadami"></option>
</select>

그것을 세션방을 소유한 GM이 캐릭터시트를 선택할 때 함께 초기 설정을 지정하면 편리하겠지요. HTML파일의 코드에 체크박스를 2개 넣고, 드롭다운으로 선택할 수 있도록 만들었습니다. 그리고 JSON파일의 코드에 useroptions를 추가합니다. 이번에는 rule에 대한 것 하나밖에 쓰지 않았지만, 또 뭔가를 만든다면 { … } 안에 그 내용이 들어가겠지요. 코드를 열고 닫는 중괄호와 대괄호, 그리고 쉼표의 사용에 주의하여 작성해 주세요.

이렇게 해서 sheet.json의 파일을 저장했다면, html과 css, 미리보기 이미지의 총 4개의 파일이 준비되었을 것입니다. 그럼 다시 github로 돌아가서, roll20의 캐릭터시트 repository의 사본을 만들고 거기에 새로운 가능성을 만들어주겠습니다. 오른쪽 상단에 있는 Fork를 누르고, 조금 아래 왼쪽에 있는 master를 클릭합니다. 간단히 말해서 repository는 저장소, fork는 복사본 만들기, branch로 가지(분기)를 그려서 commit으로 파일을 추가/수정/삭제 한다고 생각해주시면 됩니다.

그곳에 있는 입력창에, 새 분기의 이름을 지어줍시다. 기존에 있던 것과 중복되지만 않는다면, 아무 단어나 상관없습니다. 그리고 나서, Branches 아래에 있는 Creat a branch 버튼을 눌러서 만들어주면 됩니다. 우리가 여기서 파일을 수정/추가/삭제 한 뒤 원래의 repository에 끼워달라고 요청을 하면, roll20에서 변경사항을 확인하고 병합해주게 되는 거죠. 이제 오른쪽 상단의 Add file을 눌러서 우리가 만든 4개의 파일을 올리면 됩니다. 저는 폴더를 통째로 Upload files로 추가하겠습니다. 만약 폴더 없이 파일만 올려버린 경우, 그 파일 안에 들어가서셔 연필 모양 아이콘을 클릭한 뒤 파일 이름을 /폴더이름/파일이름.확장자로 변경하시면 됩니다.

여기까지 해서 추가된 파일을 보고 싶은데, 워낙 저장된 캐릭터시트가 많다 보니 폴더를 찾아서 열기가 힘듭니다. 오른쪽 상단의 Go to file을 클릭하면 우리가 업로드한 폴더의 이름을 입력하는 것으로, 해당 위치로 바로 이동할 수 있습니다. 잘 올라간 것을 확인했다면, roll20에 합쳐 달라고 요청해야 할 차례입니다. 이것을 pull request라고 하고, 초록색의 Creat pull request 버튼을 눌러봅시다. 그러면 미리 준비된 양식에 맞춰, roll20에게 등업게시글을 쓰듯이 작성해야 할 내용이 있습니다.

더보기

아까 json을 성심성의껏 작성하신 분들은 알아채셨겠지만, 이 양식 제출도 마크다운을 사용합니다. 각 항목을 읽고, 자신의 시트에 해당하는 내용을 채워넣으면 됩니다. <--과 -->의 안에 입력된 내용은 주석(메모)이므로, 지워도 상관없습니다. < >라고 된 자리는 지우고 해당 내용을 작성합니다. [ ]라고 된 칸은 비어있는 체크박스인데, [x]라고 적으면 체크된 모양으로 바뀝니다. 이하 다소 의역이 있으며, 원문의 의미와 정확하게 일치하는 용어는 아닐 수 있음을 감안해주시기 바랍니다.

<!-- ATTENTION: This Pull Request template changed on 03/17/22. Please ensure that you are completing this template to the fullest extent possible. -->

# Submission Checklist
## Required

<!-- Check these off by adding an 'x' to each of these boxes. If you fail to meet all these criteria, your PR will be rejected. -->

<!-- 주의: 이 Pull Request 양식은 2022년 3월 17일에 변경되었습니다. 이 양식을 최대한 다 채워넣었는지 확인하십시오. -->

 

# 제출 체크리스트
## 필수

 

<!-- 각 상자에 'x'를 추가하여 체크 표시를 합니다. 이 조건을 모두 충족하지 못하면 PR이 거부됩니다. -->

- [ ] The pull request title clearly contains the name of the sheet I am editing.
- [ ] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
- [ ] The pull request makes changes to files in only one sub-folder.
- [ ] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

- [ ] 이 Pull Request 제목에는 편집 중인 시트의 이름이 분명히 포함되어 있습니다.
- [ ] 이 Pull Request 제목에는 제출하는 변경 유형(새 시트/새 기능/버그 수정 등)이 명시되어 있습니다.
- [ ] 이 Pull Request은 하나의 하위 폴더에 있는 파일만 변경합니다.
- [ ] 이 Pull Request에 번역 폴더의 json 파일에 대한 변경 사항이 없습니다(translation.json은 허용됨).

## New Sheet Details

<!-- If you are submitting a new sheet to the repository, please fill in any empty spaces indicated by < >. -->

## 새 시트 세부 정보

<!-- 리포지토리에 새 시트를 제출하는 경우, < >로 표시된 빈 공간을 모두 채우십시오. -->

- The name of this game is: < > _(i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)_
- The publisher of this game is: < > _(i.e. Wizards of the Coast, Evil Hat)_
- The name of this game system/family is: < > _(i.e. Dungeons & Dragons, FATE)_

- 이 게임의 이름은 : < > _(예를 들어, Dungeons & Dragons 5th Edition, The Dresden Files RPG)_
- 이 게임의 퍼블리셔는 : < > _(예를 들어, Wizards of the Coast, Evil Hat)_
- 이 게임 시스템/분류의 이름은 : < > _(예를 들어, Dungeons & Dragons, FATE)_

- [ ] I have followed the [Character Sheets Standards](https://wiki.roll20.net/Building_Character_Sheets#Roll20_Character_Sheets_Repository) when building this sheet.

<!-- Please check any that apply: -->

- [ ] 나는 이 시트를 작성할 때 표준 캐릭터시트 지침을 따랐습니다.

<!-- 해당하는 항목을 확인하십시오. -->

- [ ] This sheet has been made on behalf of, or by, the game's publisher.
- [ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: < >
- [ ] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

- [ ] 이 시트는 게임의 게시자를 대신하여, 또는 게시자가 만들었습니다.
- [ ] 이 게임은 통상적으로 게재된 게임은 아니지만, 게임 규칙 사본을 구매/다운로드/찾을 수 있습니다: < >
- [ ] 이 시트는 비공식 팬메이드, 기존 룰의 변형 또는 하우스룰이 있는 시트입니다.

# Changes / Description

<!-- This is an optional step, but detailing the nature of the changes makes it easier for other contributors to track down bugs and fix issues -->

# 변경사항 / 설명

<!-- 이 단계는 선택 사항이지만, 변경 사항의 특성을 자세히 설명하면 다른 기여자가 버그를 더 쉽게 추적하고 문제를 해결할 수 있습니다.>

이것을 영어로 작성해서 보내고 일주일정도 기다리면 roll20에서 검토하여, 결과를 메일로 회신합니다. 무언가가 빠져서 실패했다던가, 어느 부분을 수정해달라는 등의 메일이 오기 때문에 잘 읽고 수정해서 다시 요청하면 됩니다. roll20이 매 주 요청을 검토하는 시간은 UTC 기준 목요일 자정으로, 한국시간 수요일 낮 3시쯤이니 참고하시기 바랍니다.

댓글 없음:

댓글 쓰기

본문과 관련이 적은 댓글은 삭제될 수 있습니다.