지난 2월 28일, 스카이림 투게더 클로즈 베타가 성공적으로 끝났습니다.

아니, 성공적으로 끝난 듯해 보였습니다.


몇일 전 떼껄룩 게시판에 한 게시물이 올라왔습니다. 읽어보고 난 후, 저도 꽤 놀랐는데요.

위에 언급한 링크는 아래의 레딧 게시물을 링크하고 있습니다.




정확하게 스카이림 투게더 클로즈 베타가 끝나는 날, 올라온 레딧의 게시물입니다.


전문적이고 프로그램 개발에 관한 내용이라 상당히 번역하기 어려웠지만, 일단 전문을 번역합니다.

개발은 잘알지 못해 번역은 엉망진창이지만, 우선 뜻만 전해진다면 된다는 생각으로 번역했습니다.

(혹시 개발자 분이나 개발에 대해 잘 아는 분이 계시다면 제가 번역한 내용의 오류를 지적하여 주시면 대단히 감사드리겠습니다.)




지금 조금 감정적인 것 같다는 생각이 들지만, 죄송합니다. 제가 이런 일을 해야 한다는게 마음에 들지는 않습니다.


스카이림 투게더 팀은 SKSE 코드를 훔치고 있습니다. 출처를 밝히지 않고, 허가도 받지 않고요. 

(SKSE의) 명확한 명시에는 어떤 제작자도 코드에 상관하는 것을 금하고 있습니다.

그리고 Skyrim Together는 (SKSE 코드를 도용함을) 이를 부정하고 있죠. (이 링크가 삭제될 때를 대비한 링크).

그 증거는 disassembler에 있는 loader와 dll을 볼 때 꽤 명확해요.

그들은(Skyrim Together 팀) 아마 몇몇 전처리 매크로와 함께 1.7.3의 해킹된 버전을 사용하여

x64와 x86 버전 사이에서 구조 유형을 바꾸고 있는 걸겁니다.

(역주 : 정말 긴 문장인데, 전문적인 개발 라이센스에 대한 내용에다가

문장이 관계대명사로 엉망진창으로 끊겨 있어서 번역이 상당히 어렵습니다.

엉망진창으로 이어진 문장 구조로 보건데 이 시점에 SKSE 개발자는 상당히 분노한 것으로 보입니다.

떼껄룩 미니민님 정정해주셔서 감사합니다.)


ST 로더부터 말하자면, 이건 기본적으로 모든 옵션이 꺼지고, 오류 메시지가 교체된 SKSE_Loader 입니다.

또한 핵심적인 부분을 보자면, 그것들은 ERROR_ELEVATION_REQUIRED에 대한 CreateProcessA 의 에러 코드를 확인합니다.

그리고 그들의 Case를 다루는 오류 메시지 박스를 다소 바꿔썼습니다. 물론 그건 가벼운 우연의 일치일지도 모릅니다.


+4B81의 실제 DLL 인젝션 코드 쪽으로 내려가보면, 그리고 skse64\skse64_loader_common\Inject.cpp's InjectDLLThread 를 따라갑니다.

실제로 그것이 작동하도록 만드는 DoInjectDLLThread 을 호출하는 첫번째 함수인 SEH wrapper 가 있고, DoInjectDLLThread 는 거의 완전히 똑같습니다.

이것은 DLL의 제거 여부를 확인하는 것 뿐입니다. WaitForSingleObject 를 위한 타임아웃은 완전히 똑같습니다.

심지어 INFINITE 간의 전환은 60 초인데, 두 매개 변수 사이에서 이를 호출하지 않도록 만드는 것도 같은 인덱스입니다.


DLL으로 이동하면, Stirngs 내의 수많은 파일 경로가 사용가능합니다. 그 내용은 아래와 같습니다.

d:\dev\skyrim\code\skyrimtogether\common\ibufferstream.cpp 

d:\dev\skyrim\code\skyrimtogether\common\iconsole.cpp 

d:\dev\skyrim\code\skyrimtogether\common\idatastream.cpp 

d:\dev\skyrim\code\skyrimtogether\common\idebuglog.cpp 

d:\dev\skyrim\code\skyrimtogether\common\ievent.cpp 

d:\dev\skyrim\code\skyrimtogether\common\imutex.cpp 

d:\dev\skyrim\code\skyrimtogether\common\isegmentstream.cpp 

d:\dev\skyrim\code\skyrimtogether\common\isingleton.h 

d:\dev\skyrim\code\skyrimtogether\common\itextparser.cpp 

d:\dev\skyrim\code\skyrimtogether\common\itimer.cpp 

d:\dev\skyrim\code\skyrimtogether\common\itypes.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\commandtable.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\gameextradata.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\gameinput.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\gametypes.h 

d:\dev\skyrim\code\skyrimtogether\skse\hooks_debug.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\hooks_directinput8create.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\hooks_scaleform.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\nitypes.h 

d:\dev\skyrim\code\skyrimtogether\skse\pluginmanager.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\relocation.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\scaleformcallbacks.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\serialization.cpp 

d:\dev\skyrim\code\skyrimtogether\skse\translation.cpp

물론 MIT 라이센스는 일반적이고, 기여자를 요구하지 않지만 말입니다,

(하지만 관례적으로 보통 감사를 표하고 있습니다.)

하지만 SKSE의 주요 소스코드는 그렇지 않습니다.


이것은 기술적으로 언제나 일반적인 저작권법 아래에 있습니다.

하지만 SKSE 팀을 향한 yamashi (역주 : ST 팀의 리드 개발자) 의 끔찍한 행동 후에,

(여러분이 정말 신경쓰인다면, 다른 포스트에서 쓰겠음)

그는 라이센스 내에 특별한 금지사항을 얻었습니다.


"계속적으로 의도적인 저작권 침해와 전반적인 모더들에 대해 존중하지 안는 부분에 따라서,

스카이림 온라인 팀은 절대로 어떤 목적으로든 SKSE를 사용하는 것을 불허한다."


맞습니다. 그가 정도를 지나쳤습니다.


DLL을 살펴보면, 알아보기 쉬운 수많은 복제된 SKSE string이나

오류 메시지로부터 코드가 바뀌지 않은채로 포함되어 있습니다.

모든 것은 아니지만, 대부분의 새로운 스크립트와 기능, 직렬화 등의 내용이 거기에 기본적으로 다 있습니다.

수많은 SKSE의 커스텀 Class인 RTTI 데이터 포인트까지 가면, 솔직히 이건 저를 고통스럽게 만듭니다.


SKSE 코드의 끝내주는 "연기를 내뿜는 총"을 원한다면,

그들이 추가한 기능을 직접적으로 사용해보거나, TESNPC의 정의를 찾아보거나,

String이 생성하는 다른 것들 주변의 TESNPC의 구성원을 지나서 걸어가면서 나타나게 만드는

+2B5A00의 함수를 비교해보면 됩니다.

심지어 "unknown"으로 정의된 것까지 포함해, 각각의 필드의 이름도 완전히 일치합니다.

이건 절대 우연일 수가 없습니다.


계속해서 도용의 예시를를 지적해 나가는건 쉽지만,

이건 정말 기술적인 내용이고 여러분을 쉽게 지루해지게 만들겁니다.

나는 위의 예시들이 나머지를 뒷받침할 것이라고 생각합니다.


이 소스 코드 도둑들은 기여자를 전혀 언급하지도 않았고

(역주: 우리가 일반적으로 모드 제작후 Credit 을 남겨 기존 저작권자를 존중하는 일을 말합니다.)

저작자에게 거부된데다가,

그리고 나는 그들이 지금 당장 이 프로그램을 사용하게 해주는데 금전적으로도 엄청난 도움을 받았다고 확신합니다.

지금 저는 이 상황에 무엇을 해야할지 전혀 모르겠습니다.


[남기는 말]

일반적인 공개된 코드 플러그인을 사용하는 것은 아주 일반적인 행위이며, 이것은 용인되는 것입니다.

그들은 항상 그들의 코드를 언제든 사용가능하다고 말하고 있지만, 사실 현실은 그렇지 않습니다.

ST 팀은 라이센스를 위반하는 잘못을 저질렀고, 저작자를 언급하지도 않았으며,

심지어 그들의 소스코드를 비공개로 둔 상태로,

모드를 사용하게 해주는데 금전적인 이득을 챙기고 있습니다.

이것은 우리에게 굉장히 나쁘게 보이고, 우리 모더들을 베데스다와의 법적인 지위에서 불리한 위치에 놓게 만듭니다.


나는 그들이 완전하게 (감정적으로도) 무료인 모드가 되기를 바랍니다.




간단히 요약하면, SKSE 개발자는 ST 팀이 자신의 코드 (MIT 라이센스)를 훔쳤다는 것입니다.

그는 어떤 경로로 ST의 프로그램 뿐만 아니라 전체 코드를 얻게 되었고, 그걸 분석하니 SKSE의 코드와 같았다고 '주장'하고 있습니다.


따라서 아래 댓글에는 비난이 쇄도하고 있습니다.

- 훔친 코드, 그것도 MIT 라이센스의 코드로 월 3만 5천 달러 이상을 벌었다니, 너희들은 도둑이다.

- 너희들이 양심이 있다면 이것을 오픈소스 라이센스로 전환해라.

- 몇일이 지난 지금도 아무 말도 하지 않고 있다니 ST 개발자는 영리하다.

 나는 너희들이 제대로 조치할 것을 믿는다. 가령 오픈소스 라이센스로 전환한다던지 하는 것 말이다.


등의 의견이 많은 추천을 받았습니다.



비난하고 욕을 하기 전에 이야기는 양측을 모두 들어봐야하지 않습니까?


그래서 저는 직접 ST 개발진과 연락하였습니다.



Pokang은 ST 팀의 UI 디자이너입니다.

만약 앞으로 여러분이 ST를 이용하게 된다면, 눈에 보이는 모든 것은 그가 디자인한 것이죠.

특히 ST 전용 런쳐의 UI는 온전히 그의 작품입니다.


아마 ST의 오픈베타가 열리게 되면 우리가 게임을 들어가기 전에 먼저 볼 것이 그의 작품일겁니다.

SKSE의 검은 창과는 다르게, ST의 런쳐는 정말 이쁘장하거든요.


어찌됐건, 본론으로 돌아와서 그의 말을 번역하면 아래와 같습니다.



안 그래도, 그 일①에 관해서 연락하고 싶었습니다. (① 역주 : SKSE 팀의 주장에 관한 레딧 게시물을 말합니다)

왜냐하면 여러분들 한국의 스카이림 모드 커뮤니티가 내 자신에게 중요하기 때문②이고,

(②역주 : 이는 개발자의 개인적인 사정을 말합니다.)

모든 사람들이 양쪽 모두의 주장을 들어야 한다고 생각하기 때문입니다.

그러나 시간이 없어서 먼저 연락하지 못했습니다.


빠르고 간단하게 개발을 하기 위해서, 과거에 ST 팀은 SKSE 팀과 함께 작업했습니다.

저는 그 당시에 팀의 일원이 아니였지만, 어느 시점에서 SKSE 팀은 우리 ST 팀과의 협력을 중단하기로 결정했습니다.

그래서 우리는 SKSE의 모든 코드를 우리의 프로젝트에서 제거해야만 했고,

그리고 우리는 그것을 모두 제거하고, 2016년에 다시 돌아왔습니다.


클로즈 베타가 시작되었고, 한 SKSE 개발자는 ST 모드 파일과 코드베이스를 살펴보았고,

SKSE가 작동하는 원리와 비슷한 점과 그런 파일들 몇몇을 찾아냈습니다.


ST 런쳐에 포함된 그가 찾아낸 유사성은 어느 프로그램이든지 간에 Skyrim.exe 에 삽입되거나

메모리 주소를 읽어내는 DLL 에 포함되며, 일반적인 것이었습니다.


그가 우리의 코드베이스에서 포함되었다고 주장한 SKSE 파일과 코드는 의도적으로 남겼던 것도 아니고,

완전히 제거 되었으며, 우리는 그에 대해 사과를 했었습니다.

당연히 그건 사용조차 되지 않았고, 우리 ST 모드에도 사용되지 않았습니다.


우리는 또한 그가 과거에 우리의 메시지에 답하지 않았더라 하더라도, SKSE 팀과 연락하고 있으며,

우리는 그가 만족할 때까지 최대한 그의 요청에 응하려고 합니다.

우리는 개인적으로 적절하게 전문적으로 처리할 수 있는 상황임에도 불구하고,

"코드 도둑"으로 몰려 공개적으로 비난을 받았습니다.


하지만 그것은 SKSE 개발자가 원래 하려고 했던 일이 아니고,

그는 우리 ST 팀의 핵심 리드개발자인 yamashi와 갈등을 빚었던 적이 있었기 때문에,

아마도 그것이 그에게 우리에게 와서 이 문제를 직접적으로 해결하도록 만들지 못한 원인이라고 생각합니다.


어찌됐건 간에, 현재 상황은, 그것이 사실이 아닌데다가, 사람들이 생각하는 일은 전혀 일어나지 않았는데도 불구하고,

우리가 뻔뻔하게도 SKSE의 코드를 훔쳐다가 문자 그대로 이걸 팔아넘겼다고 생각하는 수많은 레딧 사용자들이 있습니다.


현 상황은 우리의 개발에는 전혀 위협이 되지 않으며, 아무런 걱정을 하지 않아도 됩니다. :)



ST 팀의 입장은 이렇다고 합니다.

즉, 요약하면, 실수로 SKSE의 파일을 ST에 포함시킨 것은 사실이지만, 의도적인 것도 아닌 순전히 실수이며,

이 파일을 ST 모드에서 사용한 적도 없다는 것입니다.


따라서 단순 해프닝이지만, 이를 개인적으로 연락해 처리할 수 있음에도 불구하고,

공개적으로 먼저 비난을 하고 본 것은

과거에 SKSE 팀리더와 ST 팀리더 간에 사적인 문제가 있었던 모양이네요.



따라서 별일 없답니다.

여러분, 안심하고 스카이림 투게더를 기대해주세요.



감사합니다.

그리고 만약 가능하다면, 그들을 격려해주세요.


또는 스카이림 투게더에 대해 원하는 것이 있다면 이 게시판에 게시물로 남겨주세요.

여러분들의 소중한 의견과 생각을 영어로 번역해 ST 개발자들에게 전하겠습니다.



참고적으로, 몇까지 ST에 대한 소식을 말씀드리자면,

오픈 베타 일정은 아직 공개할 수 없고, LE 버전의 ST는 지난주부터 작업 중에 있다고 합니다!