2023-01-28 글 쓰는 날

게임디자인

요구사항 자체에 매몰되지 않기

어느 날 게임에 탈것을 넣고 싶어졌습니다. 이전에 여러 MMO 게임에 탈것을 넣던 생각이 스쳐 지나갑니다. 중세 배경 게임에서는 흔히 동물을 불러서 탈 수 있습니다. 처음 게임을 시작한 주인공은 가난한 나머지 탈것이 없어 걸어 다니지만 시간이 지나면 말을 사고 말을 성장 시키고 다른 더 좋은 말을 사기를 반복해서 멀리서 봐도 눈에 확 띄는 강력하고 멋진 탈것을 소유하게 됩니다.

탈것은 주로 수집 대상입니다. 실제 세계에서는 탈것을 유지하기 위해 상당한 노력과 비용이 필요합니다. 실제 세계에서 자동차를 구입했다면 일단 자동차 자체가 비쌀 뿐 아니라 연료, 보험, 자동차 자체의 유지관리, 세금, 주차비 등등을 지불해야 합니다. 반면 가상 세계에서 탈것은 이런 비용이 필요하지 않으므로 탈것을 한번 구입하면 세계 어디에 있든 탈것을 순식간에 부를 수 있고 따로 유지보수 할 필요가 없으며 연료를 채울 필요도 없고 또 보험료나 주차비를 지불할 필요도 없습니다. [계속]

풀소유와 분할소유 사이의 감정

현실 세계에서 물건을 소유하는 개념을 생각해봅시다. 지금 제 전 재산 뿐만 아니라 미래의 수입 일부까지 저당 잡는 신용카드라는 마법의 도구를 사용해 심호흡을 한 번 하고 어깨를 당당히 편 다음 외향인들이 판치는 애플스토어에 걸어 들어가 아이폰을 구매할 작정입니다. 미래의 수입을 저당 잡은 할부거래계약을 마친 다음 아이폰의 소유권을 넘겨 받아 상자를 열고 기계를 꺼내 전원을 켭니다.

어쩌면 처음 등록할 때 나오는 도저히 읽을 수 없는 기나긴 약관에는 제 손에 든 아이폰의 모든 부분이 온전한 제 소유가 아니며 내가 아이폰에 기록한 모든 정보 역시 온전히 제 소유가 아니라는데 동의해야만 기계를 사용할 수 있음을 나타내고 있을지도 모르지만 일단 표면적으로 할부거래계약이 성사된 이상 이 기계는 저 한 명의 소유입니다. 내가 아이폰을 소유하고 있다는 말의 의미는 이제 제가 집에 돌아가는 길에 폰을 떨어뜨려 박살을 내더라도 온전히 제 스스로 책임을 지며 반대로 아이폰을 활용한 부가가치 역시 적어도 부가가치가 생성된 그 순간만큼은 가치가 온전히 제 소유라는 의미일 것입니다. [계속]

블록체인

혹시 이 앱 게임 아닐까?

이전에 멀티 유틸리티 토큰 모델, NFT화된 인게임 자원과 법률 준수, 그리고 크립토 게임의 법률 및 플랫폼 정책에 따른 설계 과제 같은 생각을 하면서 전통적인 게임 경제에 블록체인에 기반을 둔 토큰을 도입하는 것은 재미있기도 하고 또 도전적인 과제임과 동시에 약간은 모호한 법률을 위반할 소지가 있음을 알게 되었습니다. 법률 상 블록체인에 기반한 토큰을 도입해서는 안된다고 명시하지는 않고 있지만 경품을 제공해서는 안된다는 법률의 해석에 따라 약관 상 소유권이 사용자에게 있는 데이터가 발생하는 특징을 경품으로 해석해 법률을 위반하게 됩니다. 그래서 게임에 블록체인에 기반한 토큰을 도입하려 한다면 게임 안으로는 인게임 경제가 게임 외부의 경제 여건 변화에 따라 쉽게 고장 나지 않도록 설계해야 하는 과제가 있고 또 게임 밖으로는 이런 경제 체계를 도입한 게임을 정상적으로 서비스 하기 위한 법률적 대비가 필요합니다. [계속]

애플 숏컷 활용 사례

공용 슬랙 메시지 전송 숏컷

한편 슬랙에 메시지를 전송하는 숏컷은 처음 만들어 놓고 조금씩 수정해서 사용하다가 이전에 보낸 메시지에 답글을 달아야 하는 요구사항을 반영하려고 보니 답글을 달아야 하는 상황이 그리 크지 않아서 공용 숏컷을 수정하는 대신 답글을 달아야 하는 숏컷에 별도로 슬랙 메시지를 전송하는 기능을 붙였습니다. 그런데 이렇게 다시 시간이 흐르고 보니 슬랙 메시지 전송 기능을 수정하려 하자 같은 기능을 하는 숏컷 여러 부분을 고쳐야 하는 상황이 일어납니다. 이 참에 공용으로 사용하는 슬랙 메시지 전송 숏컷을 범용으로 사용하도록 수정하고 답글을 다는 기능 역시 공용 기능에 포함시켜 숏컷 하나로 통합하기로 했습니다. [계속]

글쓸거리 생각하기 숏컷

평소에 글 쓸 거리를 메모로 남겨 놓았다가 주말 중 어느 하루에 시간을 내 메모를 하나 씩 열어보며 머릿속으로 생각을 정리한 다음 그 생각을 거의 덤프 하다시피 해서 글을 작성하고 있습니다. 글을 계획적으로 쓰는 대신 그때그때 글 슬 생각이 드는 주제를 골라서 쓰다 보니 어떤 주제는 바로 전 주에 남겼다가 바로 그 주 주말에 글로 바꾸기도 하지만 다른 주제는 몇 달 전에 남겼지만 그 후 계속해서 글로 바뀌지 않곤 합니다.

어느 날 메모를 살펴보며 오래된 글 쓸 거리를 살펴보다가 이렇게 방치해 두면 결국 못 쓰고 넘어갈 거라는 생각이 들었습니다. 그래서 오래된 글 쓸 거리를 끄집어내 아무 생각이라도 기록해 두고 이를 반복하면 어느 날 메모를 열었을 때 그 동안 기록한 생각을 훑어 보며 글로 바꿀 수 있을지도 모르겠다는 생각을 했습니다. 그래서 이 과정을 도와주는 숏컷을 만들어 보기로 합니다. [계속]

딕셔너리 읽고쓰기 숏컷

이전 오토메이션 공용환경 소개애플 숏컷에서 딕셔너리 값을 바꾸면 원본을 수정하지 않는다를 통해 글로벌 변수에 숏컷마다 사용하는 여러 값을 네임스페이스 없이 구분하기 위해 글로벌 변수 값 하나에 JSON 모양으로 데이터를 밀어 넣어 글로벌 변수 하나가 네임스페이스와 비슷한 역할을 하도록 할 작정이라는 이야기를 했습니다. 그러려면 ‘Toolbox Pro for Shortcuts’ 앱에서 제공하는 글로벌 변수에 JSON 형식을 밀어넣고 또 읽어오는 기능이 필요해서 만들기로 했습니다. [계속]

애플 숏컷에서 딕셔너리 값을 바꾸면 원본을 수정하지 않는다

오토메이션 공용환경 소개에서 애플 숏컷 환경에서 글로벌 변수를 제공하지 않아 ‘Toolbox Pro for Shortcuts’라는 별도 앱을 통해 글로벌 변수를 사용한다고 소개했습니다. 글로벌 변수를 사용할 수 있게 되면서 숏컷 활용도가 크게 올라갔지만 여러 숏컷에서 사용하는 모든 글로벌 변수가 네임스페이스 구분 없이 한 공간에 나열되어 있어 어느 값들을 어느 앱에서 사용하는 것인지 구분하기 쉽지 않았습니다.

한동안은 글로벌 변수 네이밍 규칙을 사용했지만 한 숏컷에서 여러 글로벌 변수를 읽어와야 할 때 각 값마다 불러오고 할당하는 노드 두 개가 필요했기 때문에 코드가 길어져 읽기 어려웠습니다. 그러다가 숏컷의 ‘딕셔너리’ 데이터 타입을 글로벌 변수에 넣으면 이를 JSON 형식으로 저장한다는 것을 알게 되었습니다. 그러면 한 숏컷에서 사용하는 여러 글로벌 변수를 딕셔너리에 밀어 넣은 다음 글로벌 변수 하나에 기록해 네임스페이스를 구분하고 또 여러 값을 한번에 불러올 때 편하게 사용할 수 있을 것 같았습니다. [계속]

기타

트위터 서드파티 서비스의 API 제한에 어느 정도 동의

2023년 초 트위터가 서드파티 앱의 API 접근을 차단합니다. 덕분에 오랜 시간에 걸쳐 유용하게 사용하던 트윗봇이 하루 아침에 못 쓰게 되어 황망했습니다. 한편으로는 트윗봇에서 지원하지 않는 기능이 필요할 때만 사용하던 트위터 앱을 이제 트위터를 사용해야 할 때마다 항상 사용해야 했는데 기초적인 가독성부터 시작해서 마음에 안 드는 부분이 한 둘이 아니었습니다.

현대의 트위터 앱은 지난 2008년에 처음 출시되어 ‘당겨서 새로고침’을 처음으로 소개한 트위티를 인수해서 개발한 것입니다. 지금은 너무 많은 곳에서 아무렇게나, 또 맥락 없이 사용하는 방법이지만 이 사용 방법이 처음 등장했을 때 타임라인을 당겼다 놓을 때 경험은 정말 대단했습니다. 또 당겼다 놓지 않고 계속해서 당기면 그 자리에 제작사 로고가 나타나는 동작들도 재미있었고요. 트위티는 당시 난립하던 트위터 앱 중 가장 진보한 앱이었지만 트위터에 인수되고 나서 세월이 흐르면서 그저 트위터의 리퍼런스 앱 정도의 역할을 하게 되었습니다. [계속]

아틀라시안 때문에 cloak.ist 드랍

cloak.ist’는 커스텀 도메인을 지원하지 않는 웹 서비스를 대상으로 커스텀 도메인으로 랩핑 해 주는 서비스입니다. 전에 CLOUD-6999에 대해 이야기하면서 커스텀 도메인의 필요성을 언급했는데 아틀라시안 제품 말고도 기업용 제품이면서도 커스텀 도메인을 지원하지 않는 서비스가 많아진 상황입니다. 그럼에도 여전히 커스텀 도메인을 필요로 하는 사람들이 있고 장점도 있기 때문에 등장한 서비스인 것 같습니다.

DNS가 이 서비스를 가리키도록 해 놓고 이 서비스에서 커스텀 도메인으로 랩핑할 주소를 지정하면 도메인을 요청할 때 이 서비스가 중간에서 실제 주소를 읽어 커스텀 도메인을 통해 접근할 수 있게 해 줍니다. 중간에서 데이터를 가로채는 역할을 하므로 로그인이 필요한 위치에는 적용할 수 없습니다. 기술적으로 적용이 불가능하지는 않을 것 같지만 중간에서 모든 것을 보고 있는 이 서비스의 특성 상 보안 문제를 일으킬 수 있어 아예 지원하지 않는 모양입니다. [계속]

‘CLOUD-6999’의 미래에 대한 암울한 생각

아틀라시안 제품군은 크게 서버, 데이터센터, 클라우드 제품군으로 나뉩니다. 서버 제품군은 중소규모로 아틀라시안 제품을 사용할 때 언프레미스 환경에서 사용하는데 몇 년 전부터 판매가 중단되었고 작년에 지원이 중단되었습니다. 이전에 경험한 몇몇 조직에서는 보안 문제로 컨플루언스 서버 제품을 사용하기 시작해 메이저 버전업 때마다 라이선스 비용을 추가로 지불하고 싶지 않아 오래된 서버 버전을 유지해 사용자(직원)들로부터 컨플루언스에 낡은 사용 경험을 주기도 했습니다. 데이터센터 제품군은 대규모로 아틀라시안 제품을 사용할 때 온프레미스 환경에서 사용하는 제품으로 컨플루언스 기준 최소 계약 단위가 500명 부터입니다. 연간 소프트웨어 이용 요금으로만 몇 만 달러를 지불해야 하는데 여기에 데이터센터 환경에 별도로 지출할 수 있는 수준의 기업에서 사용할 수 있을 겁니다. 서버 버전의 판매와 지원이 종료되었지만 데이터센터 버전은 여전히 구입할 수도 있고 개발과 지원도 계속 되고 있습니다. [계속]

2023년 1월의 매일 글 공유 일정