리버티게임토론:청사진

리버티게임, 모두가 만들어가는 자유로운 게임
  • 이 문서에서는 각 단계별 계획 피드백 및 다음 단계 이행을 위해 논의를 진행합니다. 일단 매해 연말에 해당하는 기간이 적힌 문단에서만 토론하는 것을 원칙으로 합니다. 2027년 이후로 10년 5년 단위로 발생할 것으로 예상되는 토론 문서 비대화에 따른 하위 문서로의 내용 분리 요청은 사이트가 그때까지 존속한다는 전제 하에 문제가 발생할 때 분리하는 것으로 하겠습니다. --Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)
정정하겠습니다. 1년 경과 후 2단계 토론 시점에서 문서가 예상보다 빠르게 분량이 늘어났기에 문서 분리를 5개년 단위로 변경하겠습니다. --Senouis(토론장, 기여) 2023년 12월 4일 (월) 02:29 (KST)

1단계 입안 토론[원본 편집]

기간: ~2023년 02월 28일

Crystal multimedia.png 일단 임시로 작업 기한을 명기하였습니다. 다만 1단계는 다소 급하게 계획을 짜게 되어, 저 기한이 공식 계획이 될 가능성이 매우 높음을 알립니다. --Senouis(토론장, 기여) 2023년 2월 27일 (월) 00:45 (KST)

  • 백괴 클래식 분류 및 데이터/로직 손상 게임 처리 관련 토론

백괴게임 시절 게임과 리버티게임 창설 이후 게임을 분리할 이유는 충분합니다. 일단 사이트가 더 이상 '백괴스러운 게임'만을 만들지 않는다는 컨셉의 미묘한 변경이 있죠. 그리고 과거 2010년대 초반까지는 웹 컨텐츠가 상당히 정적인 경우가 다수여서 그 상황에서 텍스트와 조건문을 때려박아가며 한계를 쥐어짜낸 좋은 게임들은 지금도 고평가를 받아야겠지만 그땐 그 때고 이제는 반응형 웹이 대세이니 더 이상 동일한 게임 제작 전략만 가져오기는 어렵습니다.
따라서 그 시절의 게임을 구분해서 아카이브하는 작업이 필요합니다. 다음 3가지로 분할하여 게임 목록에 명시하는 방법이 제시됩니다.

  1. 백괴게임 시절 특집 게임(예: 위키낚시)이나 장기간 광고하였던 게임들(예: Will It Blend?)
  2. 그럭저럭 플레이 가능한 상태의 텍스트 어드벤처 게임들(절대 다수인 것으로 추정됩니다)
  3. 애셋 부재 등의 이유로 로직이 깨졌거나 플레이 자체가 매우 어려운 게임(예: 백괴리겜 - 배경음악이 저작권 문제로 링크가 끊겼는지 오류를 냅니다. 기억하기로 xi의 프리덤 다이브를 재생했었습니다)

--Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)

  • 게임 분류용 메타데이터 문서 추가

일단 Hsl0님의 수고로 JSON 포맷 문서를 작성할 경우 가이드라인은 여기에 완성되었습니다. 해당 메타데이터는 각 게임의 메인 문서 부제목에 아이콘을 덧붙이는 식으로 게임 UI를 통일하는 데 활용할 수 있으며, 사이트 내 게임에 접속시 localstorage에 캐싱하고 최근 플레이한 게임 목록을 보고 싶을 때 불러오는 식으로도 응용이 가능하겠습니다. 해당 코드는 전역 common.js에 추가하는 것이 좋아보입니다.
리버티게임 분류에 붙은 게임들에 이것들을 추가한 후게임 목록 문서도 이걸 활용할 수 있으면 좋겠지만, 이게 실시간으로 동기화를 해야 게임을 만들자마자 알 수 있으니 메타데이터를 각 문서마다 만들어봤자 게임 목록을 불러올 때 클라이언트 측에서 사이트 전체를 크롤링해야하니 서버에게 부담을 주지 않는다는 게임 목록 분리 의도를 달성할 수 없습니다. 유일한 해결책은 미분류된 최상위 문서들의 리스트를 관리자가 쉽게 보는 것인데, 어떻게 구현하면 좋을까요? --Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)

메타데이터는 이런 용도로 쓰려고 만든 것이 아닙니다. 게임아이콘 틀을 여러 군데에서 쓸 때 들어가는 데이터를 중앙화 시켜서 모든 틀을 찾아서 바꿀 필요없이 한번 수정했을 때 자동으로 바뀔 수 있도록 한 것입니다. JSON 문서는 루아 모듈을 통해서도 읽을 수 있으므로 클라이언트 사이드에서 별도의 크롤링을 할 필요는 없습니다. 이미 루아 모듈을 통해 기초적인 구현은 해두었으나리버티게임:연습장이나 사용자:hsl0/연구소에서 예시를 확인할 수 있습니다., 게임아이콘 틀 내용을 완전히 교체할 계획이 있고 사이트 전체를 편집해야 하는 관계로 포맷을 수정했을 때 다시 봇을 돌리는 일이 없도록 신중하게 접근하고 있습니다. 물론 틀 전개에서 부하가 올 수는 있겠지만 이에 대해서는 후술하겠습니다. 추가적으로 게임의 기본 정보를 봇, 스크립트, 확장 기능, 모듈, 틀이 읽을 수 있게 하고 각종 기술 스택의 게임별 설정을 저장할 수 있습니다. 최근 플레이한 게임 목록은 메타데이터 없이 접속한 문서 제목만 저장하면 됩니다. 게임 메인 문서에 정보를 표시하는 것은 적절한 활용입니다. --hsl(토론, 기여, 게임, 메일) 2023년 2월 20일 (월) 22:32 (KST)
일단 베타 버전을 저장할 신규 문서를 먼저 작성하고 정상 작동이 확인되면 기존 문서에 병합해버리는 방식으로 접근하면 안전할 것으로 보입니다. 게임 아이콘 틀 문서와 게임 목록 문서는 구 버전을 남기되 보존 처리를 하여 타 문서에서의 접근을 끊어 문서끼리 바꿔치는 식으로 적용하겠습니다. 메인 문서에 게임 정보 표시는 아예 자동으로 페이지 우상단에 표시하되 JSON 정보가 없을 경우 JSON 문서 생성 링크를 대신 달아놓는 것이 좋겠습니다. 이 작업은 늦어도 5월 전에 끝났으면 하는데, 이 기한 안에 해야 다른 작업에 영향이 없을 것 같기 때문입니다. --Senouis(토론장, 기여) 2023년 2월 27일 (월) 00:45 (KST)
더 구체적인 게임 목록 개선안입니다. 봇을 이용해 현재 리버티게임:게임 목록에 등재된 게임아이콘의 데이터를 읽어서 자동으로 game.json을 작성하고 (일회성, 새로운 게임은 게임아이콘 대신 game.json을 작성), 게임의 특성 별로 세분화된 분류를 만들고, 틀을 통해 game.json을 기반하여 자동으로 분류합니다. 그리고 게임 목록을 각 특성별장르, 제작자, 완성도, 연령 등급, 플랫폼, 평가 등로 필터링/정렬이 가능하고, 검색도 가능하도록 개편합니다. 필터링/정렬은 DPL을 활용하며, 쿼리된 문서가 많을 때 과부하를 방지하기 위해 자바스크립트를 활용해 n20개, 50개, 100개, 500개(?)를 사용자가 선택 가능하도록 생각 중개씩 부분적으로 로딩합니다. 게임 목록에 게임을 직접 등록하지 않으며, 자동 분류를 바탕으로 불러옵니다. 게임 목록은 완성도 상관없이 모든 게임을 검색할 수 있지만, 필터를 변경하지 않는 한 완성도가 어느 정도 이상거의 완성된 게임 3단계 이상을 생각하고 있습니다.인 게임만 기본값으로 표시되게 합니다. game.json은 게임 대문에서 제목 오른쪽 끝에 (game.json이 없다면) [게임 메타데이터 만들기] 같은 버튼이나, (있다면) 게임아이콘을 눌러서 조회/수정이 가능하도록 합니다. 저는 이런 방향으로 개선하기를 원하는데, 어떠십니까? --hsl(토론, 기여, 게임, 메일) 2023년 4월 7일 (금) 00:07 (KST)
Symbol support vote.svg찬성 좋습니다! 이런 자동화된 시스템이 더 지속적인 발전에 도움이 될 것 같네요. 일단 봇을 돌린 후 문제가 되는 것을 찾아보겠습니다. --Senouis(토론장, 기여) 2023년 4월 8일 (토) 13:38 (KST)
아 봇은 사용자:hsl2/게임 메타데이터에 제가 만들어 놨습니다. 메타데이터 규격이 많이 달라져 수정이 필요하지만 말이죠. 원하시면 봇을 돌려서 검토는 하셔도 되지만 섣불리 문서 생성은 하지 마시기 바랍니다. 이 작업은 반드시 메타데이터 규격이 확정(메타데이터 버전 1.0 이상)된 후 진행되어야 하거든요. --hsl(토론, 기여, 게임, 메일) 2023년 4월 8일 (토) 16:14 (KST)
  • 인기 게임 순위 시스템

토론 문서 분석하는 미디어위키 플러그인이 있다는 의견을 오락실에서 들었습니다. 플러그인 분석 결과를 여기에 간단히 기록하고 작업에 착수해봅시다. --Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)

DiscussionTools 확장 기능이 제공하는 discussiontoolspageinfo API를 통해 토론 페이지의 문단과 의견 개요를 확인할 수 있고, 이를 이용하여 각 평가별 의견 개수를 충분히 셀 수 있을 것으로 보입니다. API 분석 결과와 예시, 그리고 고찰을 사용자:hsl0/DiscussionTools에 적어두었습니다. --hsl(토론, 기여, 게임, 메일) 2023년 9월 16일 (토) 22:59 (KST)
  • HTML5 게임 프레임워크 - 핵심 코드 관련 토론

네, 일단 BANIP님의 유산인 PluginX를 더 개선하여 완전한 프레임워크를 만들어야 하는데 핵심 코드와 애셋을 어떻게 할지 걱정됩니다. 일단 언리얼 엔진과 골드 소스 호환 엔진인 Xash3D를 분석해봤는데, 게임 내 등장하는 모든 오브젝트(캐릭터, 몬스터, 아이템, 바닥에 굴러다니는 장식들, 트리거 박스, 광원, 음원, 프롭 등) 및 게임 로직(전역 로직, 문서별 로직)이야 자바스크립트의 함수 프로토타입 상속으로 구현할 수 있겠습니다. 미디어위키가 익명 함수나 class를 지원 안해서 개발 편의가 떨어지는 건 좀 아쉽지만 일단 개발용 Documentation을 작성해가면서 시작해봅시다.

2D 게임 프레임워크를 먼저 만들고 3D 게임은 나중에 3D 모델링을 어떤 포맷으로 추가할지 논의합시다(페이즈 2로 미룰 확률이 매우 높겠네요). 남은 것은 실시간 P2P 통신입니다. WebRTC를 사용할 수 있을까요?--Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)

화살표 함수나 class 등 ES6 기능은 컴파일하면 그만이죠. 저도 타입스크립트와 컴파일러를 적극 활용하고 있습니다. 그리고 pluginX는 ES6을 지원하는 것으로 알고 있습니다. --hsl(토론, 기여, 게임, 메일) 2023년 2월 20일 (월) 22:32 (KST)
앗, 그렇군요! 그럼 이제 게임 내 오브젝트인 엔티티의 기본 코드를 먼저 작성해보겠습니다. 먼저 공통적으로 스프라이트 정보 및 위치, 속성 등을 포함하고 정적인 오브젝트(프롭, 스카이박스 등)/동적인 오브젝트를 구분하여 상속시킨 다음 동적인 오브젝트는 스켈레톤 정보 및 부위별 추가 스프라이트와 애니메이션을 지정하고 거기서 사용자의 입력에 반응하는 캐릭터(플레이어블/논 플레이어블 가리지 않고)와 아이템, 버튼 같은 물체를 파생시키는 식으로 기본 코드를 한번 짜보겠습니다. --Senouis(토론장, 기여) 2023년 2월 27일 (월) 00:45 (KST)
  • 페이즈 2 이후에도 진행할 필요가 있는 장기 프로젝트를 포함한 추가 계획 논의

그 외에 추가할 만한 계획이 있을까요? --Senouis(토론장, 기여) 2023년 2월 20일 (월) 19:21 (KST)

첫번째 항목에서 반응형 웹을 말씀하셨는데, 요즘 트렌드에 맞는 프레임워크를 도입하거나 이와 유사한 위키문법 기반 시스템을 만드는 것도 좋을 것 같습니다. 미디어위키는 Vue.js를 도입하여 점점 비중을 늘려가고 있는 중이며, 리버티게임에서도 스크립트에 mw.loader.using('vue')만 넣으면 당장 쓸 수는 있습니다. 하지만 자바스크립트 코드를 내용 중간에 끼워넣을 수 있으므로 보안을 위해 모두가 편집할 수 있는 일반 문서에는 쓸 수 없겠습니다. 특히 Vue를 어설프게 쓰려고 하다가 터져나올 잠재적인 보안 문제를 대비해야 합니다. 또는 위키문법을 확장해서 프레임워크 수준까지 개발해내서 자바스크립트 없이 위키 문법과 섞어쓸 수 있게 만들 수도 있겠습니다. 저도 이에 대해 구상을 해왔습니다. 다만 게임 엔진만큼 어려운 일이겠지요. 현재 이벤트 프레임워크기술 스택끼리 간섭하지 않고 다음에 실행될 (기본) 동작을 기존 작업이 끝날때까지 지연시킬 수 있고, 링크를 누를 때 또는 페이지를 로딩할 때 동작을 예약할 수 있으며, 추후 더 많은 이벤트에 예약할 수 있게 됩니다. 왜 필요하나 싶겠지만, DB2와 CGI보호 틀은 페이지가 넘어가는 링크를 누를 때 페이지 이동을 미루고 작업을 끝낸 뒤 페이지를 넘깁니다. 그런데 현재 DOM 이벤트는 기본 동작 미루기를 지원하지 않아 기본 동작을 취소하고 작업이 끝난 뒤 별도로 기본 동작에 상응하는 동작을 실행합니다. 이러한 기술 스택이 여러 개 구동될 경우 다른 기술 스택의 일이 끝나기도 전에 자기 일만 끝나면 페이지를 넘겨버릴 수 있기 때문에 이를 조율하는 시스템이 필요합니다. 이 이벤트 프레임워크가 그 역할을 합니다. 이 프레임워크를 도입하면 각 스크립트에서 동작을 수행할 링크를 넣을 자리를 일일이 찾을 필요가 없게 되어 HTML 요소 탐색이 줄어들고 성능이 향상됩니다. 궁극적으로 자바스크립트없이 동적인 웹페이지를 만들기 위한 주요 요소 중 하나입니다. 사용자:hsl0/연구소/2에서 예시를 볼 수 있습니다. html이 덕지덕지 있지만, 틀로 예쁘게 쓸 수 있습니다.를 만들고 있는데 이를 염두에 두고 개발하고 있습니다. hsl0 (토론)이 서명을 하지 않고 의견을 썼기 때문에 나중에 설명을 추가하였습니다.
네, 그럼 이벤트 프레임워크로 사이트 동작을 정교하게 스케줄링하는 것도 추가하겠습니다. 작업이 마무리되기까지 한 2달은 걸리려나요? --Senouis(토론장, 기여) 2023년 2월 27일 (월) 00:45 (KST)

1단계 수정[원본 편집]

일단 이벤트 프레임워크는 Hsl0님이 휴식을 선언함에 따라 Phase 3으로 연기되었습니다.

그 외에도 급하게 입안된 것들이 많고 사이트 내에서 처리가 필요한 일들이 더 발견됨에 따라 일정 조정을 들어가고자 합니다. 5월 28일에 확정됩니다.

  • 백괴클래식 탐색
Symbol opinion vote.svg제안 기존 일정은 확정에서 해당 기간 내 수행 권장으로 변경 + 게임 메타데이터 문서 양식 확정 및 game.json 하위 문서 추가 작업 50% 이상 완료시 시작 조건 추가 --Senouis(토론장, 기여) 2023년 5월 1일 (월) 17:47 (KST)
  • 가젯 형태로 P2P 통신 기능 확장 지원
Symbol opinion vote.svg제안 Phase 2로 연기 --Senouis(토론장, 기여) 2023년 5월 1일 (월) 17:47 (KST)
  • 게임 엔진 테스트 게임 제작
Symbol opinion vote.svg제안 일정을 하반기로 변경 --Senouis(토론장, 기여) 2023년 5월 1일 (월) 17:47 (KST)
  • 인기 게임 순위 분석
Symbol opinion vote.svg제안 미디어위키용 플러그인/API 분석만을 Phase 1에 진행, 구현은 Phase 2로 연기 --Senouis(토론장, 기여) 2023년 5월 1일 (월) 17:47 (KST)

Yes check.svg완료 딱히 반대하는 의견이 없어서 그냥 사무관이 단독으로 진행하는 공용 프로젝트가 전부인 점을 감안해 바로 밀어넣고 추가로 책임자 닉네임을 넣겠습니다. 그리고 Phase 2부터는 사이트 전역 범위로 적용되는 개발 프로젝트가 있는 사용자들은 전부 청사진에 프로젝트들을 명시를 할게요. --Senouis(토론장, 기여) 2023년 5월 28일 (일) 19:51 (KST)

1단계 피드백 및 2단계 입안 토론[원본 편집]

기간: 2023년 12월 01일 ~ 2023년 12월 30일

1단계 피드백[원본 편집]

  • 현재 명시된 계획 중 수행 완료된 계획은 다음과 같습니다.
  1. 리버티게임:게임 목록 개선
  2. 분류:백괴클래식 작성 및 손상된 파일 복구 - 찾을 수 없는 파일은 링크가 제거되었습니다.
  3. Xash3D 래퍼 제작 및 Load/Save 기능 등 싱글플레이 컨텐츠용 기능 활성화
  • 다음 계획은 Phase 2 이후로 이월이 확정되었습니다.
  1. 소도구, 커먼자스 등의 자바스크립트 컴포넌트의 작동 우선순위를 스케쥴링하는 이벤트 스케쥴링 프레임워크 개발 - Phase 3으로 완성 시점이 연기되었습니다.
  2. Xash3D 래퍼를 사용하는 레퍼런스 게임 제작 - Phase 2부터 시작합니다.
  • 다음 계획은 2023년 11월 29일 기준으로 시작 여부가 불투명한 수준으로 완성되지 않았으며, 이월 여부나 철회 여부를 결정해야 합니다.
  1. 인기 게임 순위 시스템 구현
  2. Xash3D와 연계하여 WYSIWIG이 가능한 시각화 개발 도구(게임 에디터) 개발 계획
  3. Xash3D 한글 입출력 기능 추가

토의가 필요한 것은 아래 3개 정도 되겠습니다. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:52 (KST)

Xash3D 한글화[원본 편집]

현재 Xash3D는 한글 입출력을 지원하지 않습니다. 한글 출력은 유니코드 관련 기능은 구현된 것이 있지만 작동이 불확실하고 폰트 출력에 관해 좀 손을 대야 하며, 한글 입력은 아예 안 됩니다. 코드를 살펴보니 Xash3D가 러시아 쪽에서 개발되어서 그런지 현재 알파벳 외에 입출력이 완전히 대응되는 건 키릴 문자 뿐이네요. 한글 입력은 모듈:한글조합을 참고하여 한영 전환 버튼 및 단축키(한영키 이벤트를 받지 못하는 브라우저에서 실행하므로 Shift+Space를 한영키 대체물로 쓰려고 합니다)와 함께 추가하려고 하며, 현재 서울남산체를 fnt 포맷으로 변환해두긴 했는데 한글 영역을 인식할지는 미지수입니다. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:52 (KST)

에디터 계획[원본 편집]

개발 책임자로서, 이 계획은 철회가 나을 것 같습니다. 리버티게임에 관심을 가질 만한 연령층이 10대에 집중되어 있는데 Xash3D 엔진을 RAD Tools나 비주얼 스튜디오 수준의 IDE만으로 개발하는 현재의 난이도로는 게임 개발하라고 쓰게 하는 것이 불가능하여 엔트리나 언리얼 엔진의 블루프린트를 참고하려고 했는데, 구현할 것이 개인이 구현하기에는 지나치게 많고, 제게 지금 시간이 많지 않습니다. 그래서 자체 에디터 계획은 철회하고 고도3의 비주얼 스크립트에 대한 튜토리얼을 번역하고 고도3 LTS 지원이 끝날 때까지 그걸로 대체하여 버텨보려고 하는데 어떨까요? --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:52 (KST)
참고로 언리얼 엔진 4 웹 포트의 래퍼도 대체 계획으로 가지고 있습니다. 다만 에픽 게임즈가 반 년 전 고장난 깃헙 저장소 의존성 스크립트를 수리할 때 4.25까지만 복구하는 바람에 현재 4.24에 머무는 웹 포트는 라이브러리 의존성 복구가 여전히 불완전한 상태입니다. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:52 (KST)
다만 4.22버전까지는 에픽게임즈 런처에서 엔진만 받는 것이 가능했던 걸로 기억하고 있어서, 이 부분이 아직 작동한다면 언리얼 래퍼가 리버티게임에 우선 생길 겁니다. --Senouis(토론장, 기여) 2023년 12월 23일 (토) 16:09 (KST)

인기 게임 순위 시스템 구현[원본 편집]

이거 관련 플러그인 분석을 한다고 해 놓고 그동안 못하고 있었네요. 그래도 인기 게임 순위 시스템은 게임 개발 및 유지 관리 의욕을 높일 수 있기 때문에 상당히 중요하다고 생각하여 Phase 2에서도 계속하는 것으로 하려는데 어떨까요? --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:52 (KST)
당연히 계속해야 한다고 생각합니다. 이 프로젝트가 폐기된다면 현재 페이즈 2에 있는 UI 개선 작업의 목적이 심각하게 퇴색될 수 있습니다. — Malgok1 (토론) 2023년 12월 1일 (금) 23:33 (KST)
Hsl0님이 기초적인 분석 자료를 작성하였다고 위에 언급하셨는데 서버 측 확장 기능의 개발로 만드는 것이 더 유용할 것이라고 하네요. 그럼 내년에는 이쪽에 역량을 집중해서 PHP 확장 기능 개발에 도전하는 것에 초점을 맞추는 것이 좋겠습니다. --Senouis(토론장, 기여) 2023년 12월 2일 (토) 21:09 (KST)

그 외의 계획[원본 편집]

  • Xash3D 및 멀티플레이 관련 요소
현재 하프라이프로 테스트했던 기록을 보니 멀티플레이 기능을 사용하려고 하면 에러가 발생하는데 고도3 엔진 게임을 HTML5 게임으로 내보낸 후 리버티게임에 연결했을 때처럼 인증서 문제가 발생하는 것이 Xash3D에도 생기는 것 같습니다. 덤으로 리슨 서버 기능은 완전히 불가능한 것이 확인되었고요. 그리고 WebRTC 관련 가젯을 만들어 Xash3D 엔진에 응용하고자 하는데, 어렵게 다 구현하고 난 뒤에도 보이스챗 기능 구현 용도로만 사용 가능할 것으로 보여서 효용이 그닥 높을 것 같지 않습니다. 일단 인증서 발급 문제의 해결책을 고민하고 Azure Student Starter를 사용할 수 있을 정도의 실력 있는 사람에 한해 통신 관련 개발자를 모아야 할 것 같네요. 결론은 2단계에 미리 추가했던 프레임워크 계획 중 WebRTC 기반 가젯 계획도 철회해야 할 것 같습니다. 기존 계획 중 유지하는 건 대문 레이아웃 개선과 현재 구현된 고도 엔진 3과 Xash3D의 개발 가이드 작성 뿐이겠네요. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 21:26 (KST)

새로운 리버티게임 사이트 UI 관련 제안/요구 사항 기록[원본 편집]

대문 토론 문서도 참고하면서 2023년 12월에 토의를 진행하면 됩니다. --Senouis(토론장, 기여) 2023년 9월 6일 (수) 11:51 (KST)

  1. BANIP의 제안: 틀:게임 정보, 틀:뱃지그룹
  2. 명진의 제안: 사용자:명진/대문, 틀:게임 정보 바닥글, 리버티게임:게임 목록/세부
  3. 2023년 9월 대문 배경색 제안: 관련 오락실 기록
사용자:BANIP/대문은 단순한 메모 용도로 만든 문서이기에 제외했습니다. --BANIP (토론) 2023년 9월 6일 (수) 12:24 (KST)
틀토론:게임 정보#스타일 건의도 있습니다. 이건 한번에 펼쳐볼 때 사용할 수 있는 디자인으로 설계되었습니다. --명진 (토론) 2023년 9월 6일 (수) 15:53 (KST)

Crystal multimedia.png 슬슬 토의를 진행해봅시다. 일단 이 문서 제안의 레이아웃을 조금만 다듬고 CSS를 적용하면 괜찮을 것 같네요. 특히 최상단의 추천부터 개발자 버튼까지의 영역은 틀:리버티게임 메뉴에 반영하는 것이 좋겠습니다. --Senouis(토론장, 기여) 2023년 12월 3일 (일) 14:22 (KST)

추가 Symbol opinion vote.svg의견: 다만 문서 중간의 '개발 중인 게임 목록' 및 '모든 게임 보기'는 그냥 '모두가 자유롭게 플레이하고 만들어가는 자작 게임 위키 플랫폼인 리버티게임입니다!' 밑의 게임 목록 링크와 통합하는 것이 좋겠습니다. --Senouis(토론장, 기여) 2023년 12월 3일 (일) 18:49 (KST)

플레이어를 위한 도움말과 게임 개발자를 위한 설명문서로 분리[원본 편집]

리버티게임:길라잡이의 플레이어를 위한 안내문에 영감을 얻어, 이제는 플레이어를 위한 지원인 도움말과 게임 개발자를 위한 지원인 설명문서로 분리하고자 합니다. 설명문서에는 틀의 설명문서도 볼 수 있게 자주 사용되는 틀 또한 링크하여 그의 설명문서도 볼 수 있게 하는 것입니다. 이에 따르면 게임 만들기 및 게임 기획 등이 설명문서에 속할 것입니다. --명진 (토론) 2023년 8월 21일 (월) 05:38 (KST)

Symbol information vote.svg정보 본격적 논의는 3달 정도 뒤에 하려고 했는데, 일단 많은 분들의 도움으로 Phase 1의 작업이 거의 다 끝났기도 하니 첨언하자면, 이미 유사한 제안을 길라잡이 토론에 발제했습니다. --Senouis(토론장, 기여) 2023년 8월 21일 (월) 17:13 (KST)
게임 개발자를 위한 자세한 설명문서를 별도로 만드는것은 찬성하지만, 길라잡이 문서는 리버티게임 전체 컨텐츠에 대한 요약문서이기도 하기에 아주 기초가 되는 게임 제작법은 남겼으면 합니다. --BANIP (토론) 2023년 8월 25일 (금) 16:48 (KST)
이미 길라잡이에 그런 의견이 있긴 합니다. 추가 의견은 길라잡이에 남기겠습니다. --명진 (토론) 2023년 8월 26일 (토) 00:52 (KST)
Symbol question.svg질문 현재 길라잡이 개편 과정에서 대부분 실현된 것 같은데 2단계 청사진 제안으로 계속 남겨 놓아야 할까요? --Senouis(토론장, 기여) 2023년 11월 28일 (화) 20:55 (KST)
Symbol opinion vote.svg의견 조기 완료된 것으로 처리하면 될 듯합니다. 추가적으로 논의할 사항이 있다면 커뮤니티 토론에서 자연스럽게 정리하면 될 테니까요. — Malgok1 (토론) 2023년 12월 1일 (금) 23:42 (KST)
네, 그럼 크게 필요한 작업이 더 발견되지 않으면 청사진 2단계 작업으로 명시하지는 않겠습니다 --Senouis(토론장, 기여) 2023년 12월 2일 (토) 11:17 (KST)

Variables 확장 기능 퇴출 작업 및 대체 기능을 하는 모듈 작성[원본 편집]

미디어위키 엔진의 렌더링 엔진인 Parsoid의 병렬 처리 파싱 방식으로 변경하는 로드맵이 발표되어 현재 리버티게임에서 쓰고 있는 Variable 확장 기능이 몇 년 후 미디어위키 엔진 차기 버전에서 지원되지 않을 확률이 높다고 합니다. 이에 따라 #var, #vardefine 파서 훅을 사용하는 게임들의 기술 요소를 변경하는 작업이 필요합니다. 아마 Lua 모듈을 써야 제대로 수리가 될 것으로 보입니다. 2023년 현재 당장 급한 것은 아니지만 이미 디버그 출력을 미디어위키 엔진에서 활성화한 경우 deprecated 알림이 사이트 가장 위에 나오는 상태여서 2024년 상반기 Phase 2의 작업으로 대체 기능을 할 모듈 작성 및 매크로 편집 시행을 제안합니다. --Senouis(토론장, 기여) 2023년 8월 27일 (일) 13:42 (KST)

Symbol information vote.svg정보 이에 따라 현재 Scribunto에 기반하여 루아 모듈 호출 형태로 기능을 대체하는 VariableLua 확장 기능의 개발이 베타 테스트 단계에 들어섰습니다. Stable로 개발 단계가 전환되는 시점에서 옮겨갈 수 있도록 2단계 이후 작업으로 제안하였습니다. --Senouis(토론장, 기여) 2023년 8월 27일 (일) 13:46 (KST)
저는 모듈:IIFE를 개발하였습니다. 프로그래밍 언어는 뒤로 갈수록 나중에 실행되는 시간 차원이지만, 위키 문법은 시간 차원이 아닌 만큼 절차형 보다는 선언형 패러다임이 어울립니다. Parsoid 역시 이를 지향하는 것 같습니다. IIFE 모듈은 선언형 패러다임을 염두에 두고 설계하였습니다. IIFE 모듈은 자바스크립트의 IIFE에서 착안하여, 이와 유사합니다. 함수 이름이 들어가는 자리에 nowiki로 둘러싼 위키텍스트 코드를 넣고, 그 뒤에 치환할 매개변수를 지정하면 {{{1}}}과 같은 매개변수 문법이 치환됩니다. 변수를 바꾸지 못하는 상수 개념이기는 하지만 var를 쓰는 주된 이유인 같은 값을 여러번 쓰는 시나리오에는 유용할 겁니다. 다만, nowiki가 중첩되기 어려운 관계로 IIFE의 중첩은 아직 지원되지 않습니다. 추후 중첩도 지원된다면 더 유용해질 수 있을겁니다. --hsl(토론, 기여, 게임, 메일) 2023년 9월 4일 (월) 21:37 (KST)
IIFE를 응용하여 모듈:Pipeline을 만들었습니다. 이를 통해 함수형으로 절차적인 프로그래밍이 가능해졌으며, 이론상 모든 var를 대체할 수 있게 되었습니다. --hsl(토론, 기여, 게임, 메일) 2023년 11월 26일 (일) 14:42 (KST)
와, 감사합니다. 그럼 이 제안은 #var, #vardefine을 이 모듈의 기능으로 대체하는 작업 하나로 축약 가능하겠네요. --Senouis(토론장, 기여) 2023년 11월 26일 (일) 20:06 (KST)

관리단 유저의 접속 기록 확인 시스템 제작[원본 편집]

그리고 딱 하나만 더 제안하겠습니다. 백괴게임 시절도 그렇고 리버티게임에서도 관리단 유저가 접속하는 빈도를 정확히 알 수 없어서 관리자가 얼마나 리버티게임에 자주 들어와 관리가 가능한지 유저가 알 길이 없습니다. 문서 훼손 같은 사건이 벌어져야 비로소 확인이 가능한 상황입니다. 그래서 관리자만 편집 가능한 출석 문서를 하나 두고 관리자가 대문 문서나 삭제 기능 특수 문서 같은 문서를 방문하면 해당 문서를 자바스크립트로 API 편집 요청을 보내 최근 접속한 시점 기록을 남기는 일종의 출석체크 시스템이 필요할 것 같습니다. 물론 그런 문서를 방문할 때마다 항상 편집 요청을 보내는 것은 아니고, 약 3시간 단위로 끊어서 편집이 되도록 할 겁니다.

이 출석체크 시스템은 sysop 권한이 있는 유저에게 적용됩니다(developer는 상관 없습니다). 관리자만 사용 가능한 소도구로 설정할 것입니다. 관리자는 이 소도구를 켜고 있게 되지만 숨겨진 소도구이기에 임의로 끌 수 없습니다(right는 sysop으로 설정되며, hidden 및 default 설정됨).

관리자 출석 체크 문서는 현재 존재하는 관리자의 이름으로 된 문단들이 있으며 각 문단들의 내용은 가장 최근에 요청을 보낸 시간이 됩니다. 그리고 사이트 왼쪽 사이드바 아래에 항상 parse API로 출석체크 문서를 가져와 최근 출석 시점을 표시하며, 관리자(sysop)가 대문을 방문했을 때 마지막으로 출석 기록이 된 시간으로부터 3시간 이상 흘렀다면 출석체크 시점을 갱신하는 edit 요청(봇 편집+ 사소한 편집으로 최근 바뀜에 나타남)을 보냅니다.

이게 그렇게 구현이 어려운 것은 아니라 2단계 제안에 기록되지만 내년이 되기 전에 먼저 끝날 수도 있습니다. 이 시스템에 대해 어떻게 생각하시나요? --Senouis(토론장, 기여) 2023년 12월 3일 (일) 14:10 (KST)

비전문가 입장이라 시스템의 세부 내용 피드백은 못하겠지만 도입 취지 자체에는 동의합니다. — Malgok1 (토론) 2023년 12월 3일 (일) 15:23 (KST)

최종 취합[원본 편집]

2024년 1월 1일부터 다음 항목들을 2단계 작업으로 지정하겠습니다. 2024년 1월 1일부터 추가 제안을 받지 않으며, 프로젝트의 중간 진행 보고 및 질의응답은 여전히 가능합니다.

  • 인기 게임 순위 시스템 구현: 토론 문서를 파싱하고 분석하여 순위를 매기는 PHP 확장 기능 개발
  • 새로운 리버티게임 사이트의 대문 UI 개발: 게임 배포 플랫폼(ESD) 형태의 레이아웃 구성
  • Variables 확장 기능 퇴출 작업: 모듈:IIFE로 기능 대체
  • 관리단 접속 관리 체계 제작: 출석체크 시스템 구현
  • 고도 엔진 3 및 Xash3D의 개발 가이드 작성: 튜토리얼 및 핵심 기능에 대한 설명 추가
  • Xash3D 한글화: 모듈:한글조합을 참조하여 구현

책임자는 기존에 작업 기록이 명시된 부분은 작업을 한 유저가, 그렇지 않은 경우는 저로 지정하겠습니다. --Senouis(토론장, 기여) 2023년 12월 29일 (금) 18:44 (KST)

+ Phase 1의 작업 결과에 대한 버그 제보 및 수정도 포함합니다. --Senouis(토론장, 기여) 2023년 12월 29일 (금) 18:47 (KST)

2단계 피드백 및 3단계 입안 토론[원본 편집]

기간: ~ 2024년 12월 30일

2023년 11월 28일 일부 변경 안내[원본 편집]

Crystal multimedia.png 기존에 미리 적어두었던 내용 중 3단계의 기부 시스템은 통합 모금함이든 개별 제작자의 모금이든 사업자 등록이 필요한 등 제도적 문제가 불거질 확률이 높아 파기하고 대신 이전에 말해 yes or no 보존 결정 당시 이야기했던 대로 리버티게임의 유저들이 참여 가능한 기간제 게임과 2020년부터 2022년부터 제가 사비로 진행하였던 리버티게임 창작 장려 행사 같은 소소한 실물 보상이 있는 이벤트를 통합하여 리버티게임 커뮤니티 이벤트 제도를 마련하는 것으로 대체하려고 합니다.
이 중 금전적 가치가 있는 보상 이벤트의 경우는 꽤 민감한 문제가 될 가능성이 크기에 성인임을 미리 밝힌 유저들만 이벤트 주최를 진행할 수 있게 하거나 반드시 특수:이메일보내기를 사용하여 필요한 안내와 정보를 보내라는 등 혹시 모를 법적인 문제가 발생하는 것을 최대한 차단하고자 합니다. 현재는 리버티게임이 규모가 국내 인터넷 커뮤니티 중에서는 여전히 매우 작아 법인 수준의 관리는 힘들기 때문에 만일 리버티게임 커뮤니티 전체에서 본격적으로 시행했을 때 법과 제도와 관련된 문제가 있다면 실물 보상 이벤트 제도 제안은 즉시 파기하고 커뮤니티 이벤트는 유저들이 참여하는 기간제 게임 하나만 정비하여 재개하는 식으로 변경하겠습니다. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 21:50 (KST)

Crystal multimedia.png 또한 제가 담당하던 Xash3D 에디터 계획을 제가 철회 의사를 밝혔기에 개발 디버깅 도구도 계획 변경이 불가피하여 3단계에서 임시로 제거하였습니다. --Senouis(토론장, 기여) 2023년 11월 28일 (화) 21:57 (KST)
Symbol opinion vote.svg의견 실물 보상 이벤트의 경우 그동안의 사례에 비춰봤을 때 진행에 따르는 부담이나 절차의 복잡성 대비 그 성과가 매우 미미한 것으로 생각합니다. 특히나 신규 유입 사용자 중 미성년자의 비중이 매우 높은 점을 생각하면 법적인 문제가 없다 하더라도 되도록 피하는 게 맞습니다. 사용자들이 참여하는 기간제 게임의 경우 말해 yes or no 이외에도 퀴즈의 세계, 투표 게임 (+ 끝말 잇기) 등 훌륭한 선례가 있으므로 이를 잘 따라가면 진행에 무리가 없을 것 같습니다만... 현재로써는 페이즈 2에 있는 도전과제 시스템을 잘 정비하는 편이 활성화 및 창작자 지원에 훨씬 도움이 된다는 생각이 드네요. — Malgok1 (토론) 2023년 12월 2일 (토) 00:01 (KST)

리버티게임 도전과제 부활 + JS 가젯 제작 제안[원본 편집]

리버티게임:발전소/리버티테스트에서 요약 제시했던 내용을 기록합니다. 이 내용은 진행된다면 수행 기간이 Phase 4 이후로 이전될 수 있습니다.

게임의 흥미를 돋우는 요소로 도전 과제 시스템이 있습니다. 특정 조건을 만족하면 조건을 달성하였다는 증표를 주는 시스템이죠. 과거에 계정이 있는 사용자 대상으로 리버티게임:도전 과제가 잠시 제안된 적 있었으나, 백괴게임의 기여도에 항목을 한정했으며 관리자들의 테스트 과정에서 불편이 있었는지 계획이 폐기 상태에 있었죠. 아마 원인이 사용자 문서별로 도전 과제 진행도를 수동으로 지정해야 해서 그런 문제가 있었던 것 같습니다.

리버티테스트 발전소 논의 과정에서 게임별 도전과제 시스템으로 재편하다는 아이디어가 떠올라 이전의 도전과제 항목과 결합하여 자동화된 도전과제 시스템을 제안합니다. 리버티게임에 도전과제가 있어야 한다면 관리자든, 각 사용자가 직접 편집하든 데이터를 사람이 직접 저장하게 하는 건 지속 가능하지 않습니다. 유일하면서 사용자 경험을 늘리는 방법은 서버에 데이터를 직접 저장하는 것인데, 현재 미디어위키 + 미라헤즈에서 제공하는 도전 과제 확장 기능이 많지 않으며(SocialProfile이 거의 유일합니다), Miraheze의 허가를 얻어야 추가될 다른 기능도 팬덤의 경우처럼 비공개 상태이거나 도전 과제 외의 다른 요소가 주가 되는 등 적절하지 않은 경우가 많습니다.

그래서 Azure 무료 웹앱 호스팅 플랜(여기서 나온 무료 플랜 - 소규모 커뮤니티라면 이것으로도 충분합니다)을 활용해 외부 서버에서 도전과제 진행도를 불러오는 것이 현재는 유일한 방법이 되겠습니다. 만일 서버의 연산 자원으로 감당하기 어려울 정도로 도전과제 달성이 사이트 내에 빈번해지면 서버 스크립트 공개(어차피 개발을 공개적으로 진행할 계획이라 개발 중에 서버 스크립트가 있는 GitHub 리포지토리가 리버티게임 내에 공개될 겁니다) + 게임 별 도전 과제 서버 분할을 시행하면 됩니다.

Nodejs로 돌아가는 서버사이드 도전 과제 스크립트를 만들고 웹앱으로 올린 뒤 리버티게임 JS 가젯 기능을 활용하여 사용자가 특정 행동(링크 클릭 등)을 하면 즉시 서버로 어떤 페이지에서 특정 행동을 했다는 정보가 전송하는 구조가 될 것입니다. 해당 과정은 도전과제 시스템 전용 하이퍼링크(문서로 이동 링크, CGI 오프셋 변경 링크 등) 틀이나 현재 시간 확인 이벤트를 부를 틀을 만들고 그 안에 있는 span element의 id를 도전과제 가젯이 인식하여 사용자 이벤트에 반응하여 진행합니다.

이와 관련하여 현재 효력이 정지된 리버티게임:도전 과제의 보존 틀을 떼어내고 여기 진입하였을 때 JS 가젯이 서버에서 도전과제 성취도를 가져옵니다. 일일 통신 용량을 넘어서는 무리한 데이터 페치를 막기 위해 도전과제 페이지 아래 게임 별로 도전 과제 리스트 하위 문서들에 진입하거나 게임 이름을 눌러야 통신으로 해당 게임 도전 과제 진행도를 불러오는 작업이 이루어지며 브라우저 LocalStorage에 캐싱하는 코드도 추가됩니다.

게임 플레이로 진행도를 웹앱 서버에 저장할 POST 과정에는 현재 플레이 중인 게임, 성취도, 성취한 플레이어 ID(계정명과는 다르게 하고자 합니다), 간단한 검증용 체크섬 숫자 등의 데이터가 포함됩니다. 이것이 개인정보 보호 관련해서 문제가 있을지는 조사가 필요하겠지만 기밀로 삼을 만한 민감한 정보가 없어 도전 과제 문서에 수집 항목과 목적을 명시하고 서버로 데이터를 보낼 때 평문으로 보내도 사이트를 이용하는 사람들에게 문제가 될 수준의 피해는 없을 것 같습니다(문제가 된다면 대칭형 키 기반 암호화를 할 예정입니다). 해당 데이터가 서버에 보내지면 도전과제 서버는 성취도를 이용해 도전 과제 항목의 Stack 배열에 하나 숫자를 push합니다.

도전 과제 문서 내 게임 별 항목을 열 경우 계정이 있는 사이트 이용자는 플레이어 ID와 게임 문서 이름을 보내어 GET 메서드로 하나의 JSON 객체를 가져옵니다. 그럼 리버티게임/(게임명).json 문서의 내용을 바탕으로 파싱하여 게임의 도전 과제 진행도를 보여줍니다.

요약(20230827 변경)

  • 서버사이드 자바스크립트 파일로 도전과제 시스템을 만들고 가젯 확장기능을 사용해 서버 내에 JSON 형태로 도전과제 진행도 기록
    • 추후 도전과제 시스템 이용자가 폭증하면 도전과제 진행도 기록 서버를 분할하여 외부 호스팅(Azure Node.js 호스팅 등)으로 분리
  • 리버티게임:도전 과제에 게임 별로 진행도가 표시되며, 동적 데이터 로딩이나 하위 문서 진입시 진행도 데이터를 가져옴
  • 개발한 코드의 저장소 링크(GitHub 리포지토리 주소 등)를 리버티게임 내에 공개
  • 개인정보 보호를 고려할 것(계정명을 직접 평문으로 보내지 않기 등의 조치 가능, 수집 항목과 목적을 리버티게임 사이트 내에 명시)
  • 사용자는 도전 과제 진행 전용 링크 틀을 활용해 특정 링크를 누르거나 특정 시간대 접속 등의 활동을 하면 가젯이 자동으로 도전과제 서버와 통신 수행

이 논의는 지금 간단한 의견 표명을 하여도 되나 본격적 작업 준비를 한다면 2024년부터 진행된다는 점을 알려드립니다. --Senouis(토론장, 기여) 2023년 5월 7일 (일) 20:37 (KST)

굳이 외부 서버를 쓰지 않고 사용자 json 문서나 옵션 저장소DB2가 옵션 저장소를 활용에 저장하고 자바스크립트로 저장/출력하는 것으로도 사용자의 수동 작업 없이 자동화가 구현될수 있지 않나 싶습니다. 물론 다른 사용자의 달성율을 구현하기 어려운 문제점이 있지만 그렇게까지 일을 크게 벌리지 않을 수 있습니다. --hsl(토론, 기여, 게임, 메일) 2023년 8월 25일 (금) 21:51 (KST)
이게 Miraheze 시절에 제안된 거라 도전과제 서버를 어쩔 수 없이 사이트 외부에 두려던 건데 현재는 내부에 처리 로직을 둬도 되겠습니다. 서버에 높은 워크로드를 줄 경우에만 외부로 빼내는 것을 고려하면 되겠네요. 그에 따라 제안 내용을 변경했습니다. --Senouis(토론장, 기여) 2023년 8월 27일 (일) 13:57 (KST)
Symbol question.svg질문 혹시 이 작업을 청사진 2단계로 당길 여지가 있을까요? Xash3D 쪽 계획을 스크랩하여 약간의 여유(많이 여유로운 건 아닙니다)가 있긴 한데 구현 작업은 힘들어도 설계 정도는 가능하지 않을까 싶어서 제안합니다. 리버티게임토론:도전 과제에서 설계 관련 토론을 할 수 있겠습니다. --Senouis(토론장, 기여) 2023년 12월 2일 (토) 11:22 (KST)

3단계 피드백 및 4단계 입안 토론[원본 편집]

기간: 2025년 12월 10일 ~ 2025년 12월 30일