리버티게임:게임 만들기: 두 판 사이의 차이
imported>Senouis (→고급 내부 링크: 확률적 분기 관련 제작 기술을 언급) |
imported>Senouis 잔글 (→확률적으로 다른 곳으로 분기시키기) |
||
232번째 줄: | 232번째 줄: | ||
</option> | </option> | ||
<option> | <option> | ||
*[[/25퍼센트|다음으로 가기]] | * [[/25퍼센트|다음으로 가기]] | ||
</option> | </option> | ||
</choose></nowiki> | </choose></nowiki> | ||
이러면 3:1의 비율로 다음으로 가기 링크를 눌렀을 때 75퍼센트라는 제목의 하위문서로 가거나 25퍼센트라는 제목의 하위문서로 갑니다. 다만 이 경우 플레이어가 확률에 따라 서로 다른 문서로 이동한다는 사실을 눈치 못 챌 수도 있으므로 [[:분류:확률에 따라 분기가 달라지는 어드벤처 게임 문서]] 분류 같은 것을 달아두면 좋습니다. | 이러면 3:1의 비율로 {{가짜 링크|다음으로 가기}} 링크를 눌렀을 때 75퍼센트라는 제목의 하위문서로 가거나 25퍼센트라는 제목의 하위문서로 갑니다. 다만 이 경우 플레이어가 확률에 따라 서로 다른 문서로 이동한다는 사실을 눈치 못 챌 수도 있으므로 [[:분류:확률에 따라 분기가 달라지는 어드벤처 게임 문서]] 분류 같은 것을 달아두면 좋습니다. | ||
== 자바스크립트 게임 만들기 == | == 자바스크립트 게임 만들기 == |
2023년 5월 30일 (화) 15:01 판
게임을 만들기로 하셨습니까? 그렇다면 게임을 만들기 위한 위키 문법을 간단히 적은 길라잡이가 있습니다.
게임을 만들기 전에 한 번은 읽어보는 것을 추천드립니다.
물론, 자바스크립트 게임이 아닌 이상 넥슨의 게임과 같은 것은 만들 수 없습니다.
게임을 만들기 전에
리버티게임에서는 지켜야 할 것들이 몇 가지 있습니다.(이 부분을 이미 길라잡이에서 보셨을 수도 있겠지만, 그렇지 않은 분들을 위해 한 번 더 설명합니다. )
- 게임은 신중히 만드세요.
- 게임을 만들게 되면 이 게임을 완성시킬 수 있느냐 없느냐를 잘 따지세요. 완성시킬 수 있다면 다행입니다만, 이미 리버티게임엔 원개발자가 사라져 버려 삭제되고 있는 많은 수의 게임이 있습니다. 혹시 완성을 확신할 수 없고 miraheze 계정이 있는 사용자라면 사용자 문서의 하위 문서로 먼저 만드시고, 완성이 되었다고 판단될 때 일반 문서로 이동을 하는 것을 추천합니다.
- 기본적인 삼대 원칙을 지켜주세요. 되도록이면 많은 사람이 웃을 수 있는 게임을 만들어 주세요.
- 다른 개발자가 만드는 게임이면 되도록 편집하지 말아 주세요. (참고:버:다른 사람의 게임을 편집하기 전에)
- 버려진 게임이라 판단되거나, 토론을 통해서 허락을 맡지 않은 이상, 다른 사용자가 만들거나 만들고 있는 게임들을 건드리지 말아주세요. 역효과로 질 낮은 게임이 만들어지거나 처음 원개발자가 의도했던 것과 다른 게임이 만들어질지도 모릅니다. 또 여럿이 게임을 만들기로 했으면 가급적이면 빨리 완성해주세요. 친목질 문제가 발생할 수 있습니다.
장르 정하기
당신이 게임을 개하고자 마음을 먹었다면 이미 여러 가지 게임을 플레이해 보신 뒤겠지요. 그리고 리버티게임엔 여러 장르의 게임이 있다는 것을 인식하셨을 겁니다.
- 어드벤처 게임
- 낚시 게임
- 어드벤처 게임의 하위 장르로, 말 그대로 낚이지 않고 엔딩까지 가는 형식의 게임입니다. 다른 어드벤처 게임과는 달리 문학성의 비중이 높지 않으며, 위키 문법과 심리적 함정을 잘 활용해야 재미있는 낚시 게임을 만들 수 있습니다.
- 대표적으로 백괴낚시가 있습니다.
- 도시 게임(참고:버:도시생활 게임 관련 규칙)
- 지능형 게임
- 이 게임을 플레이 하려면 상당한 지능이나 아니면 노가다가 필요한 게임입니다.
- 대표적으로는 백괴미궁과 Uncyclomaze가 있습니다.
- 시간 낭비형 게임
- 이 게임은 지능형 게임과 비슷하나 머리 사용하는 부분은 없애고 순전한 노가다를 요구하는 게임입니다. 노가다를 잘 하면 이길지도 모르는 게임입니다.
- 대표적으로는 큐브가 있습니다.
- 멀티플레이형 게임
- 랜덤형 게임
- <choose>나 {{#switch:{{rand|}}}}를 통해서 만들어지는 게임입니다. 은근히 재미가 있으며 구현도 상당히 쉽습니다.
- 대표적으로는 슬롯 머신이 있습니다.
- 음악 게임
- 음이나 박자를 맞추는 게임입니다. 개발에 자바스크립트 등이 필요합니다.
- 대표적으로는 백괴리겜이 있습니다.
게임 구상하기
전체적인 구조
전체적인 구조에 대해서 구상을 합니다. "내가 만들 게임은 낚시 게임이다"라고 생각하셨다면 어떤 링크를 누르면 낚이고 낚이지 않고 게임을 끝낼 수 있을지 구상을 할 수도 있겠죠. 어드벤처 게임이나 스토리 게임이라면 주인공은 여기서 어떤 모험을 할지, 이야기는 어떻게 이끌어 나갈 지 구상할 수 있습니다. 아이디어는 있는데 게임을 만들기는 어렵거나, 영감을 얻고 싶다면, 오락실에서 다른 사용자의 도움을 받을 수도 있습니다.
이와 관련하여 게임을 완성했다고 광고했는데 게임이 곧 발전소로 직행하는 참사를 막기 위해 리버티게임의 베테랑 게임 제작자들이 작성한 게임 기획 관련 도움말이 있습니다. 해당 링크 문서의 내용을 참조하면 큰 도움이 됩니다.
개발 중
게임이 만약 개발 중이라면 {{게임 공사중}}을 사용해주세요. {{게임 공사중|기간=2024-11-29}}
과 같이 사용하시면 됩니다. 기간은 게임이 완성될 것 같은 날로 정하며, 이 기간은 언제든지 바꿀 수 있습니다. 만일 지정하지 않는다면 해당 틀이 붙은 문서가 마지막으로 편집된 지 15일 뒤로 설정됩니다.
리버티게임에서는 기획한 분량이 길지만 완성된 부분이 지나치게 짧은 미완성 게임은 제작 1달 이후에는 기획 내용을 확인할 수 있으면 활동 중인 타 유저에게 인계하고 기획 내용을 확인할 수 없으면 삭제하는 정책을 기본적으로 취합니다. 따라서 관리자 직권으로 개발 중이던 게임이 삭제되는 참사를 피하기 위해 처음 개발할 때 삭제 판정을 받지 않을 만큼 내용을 미리 메모장 소프트웨어 등에 작성한 다음 한 번에 업로드하거나 처음부터 자신의 사용자 문서 내에 하위 문서 형태로 게임을 만든 다음 관리자에게 문서 내용을 옮겨달라고 오락실이나 활동 중인 관리자의 사용자 토론 문서에 새 주제 요청을 남기면 됩니다.
디자인
게임에서 디자인은 매우 중요한 역할을 합니다. 태그와 틀을 이용해서 적당하게 게임을 꾸며 주시면 됩니다.
- 글꼴
글꼴의 예
- 그림
- 그림을 오목조목 게임에 필요한 부분에 잘 넣으면 사용자들이 더 즐겁게 게임을 할 수 있게 됩니다. 필요하다면 업로드해서 사용해서도 됩니다. 다만 파일 올리기는 계정을 생성한 사용자만이 사용 가능하며, 저작권에 유의해서 올려야 합니다. 당신은 지금 파일을 올릴 수 없습니다.
편집 지침
- 이 부분의 본문은 리버티게임:편집 지침입니다.
특별히 게임에 규칙이 없을 때는 편집 지침을 따라야 합니다.
요약하자면, 리버티게임에서는 한 게임을 만들 때 게임의 하위 문서 등을 만들 때는 '게임 이름/게임 내용'과 같이 만들어야 하고 링크를 걸 때 링크 앞에 *를 붙이는 것을 원칙으로 하며 *과 링크 사이에 한 칸을 띄워야 합니다.
링크는 [[한게임/시작|시작하기]] 처럼 걸면 됩니다. 이 때 [[시작하기]] 처럼 걸면 안 됩니다. '시작하기' 문서로 게임이 이어지면 해당 문서가 어느 게임의 하위 문서인지 알 수 없고, 게임 제목 내용이 뒤섞입니다.
올바른 편집의 예
다음은 가장 널리 쓰이는 편집 방법입니다. 네모 칸 안이 편집창이라고 가정합시다. (밑줄 친 부분에 마우스를 대면 설명을 볼 수 있습니다)
너는 지금 (장소 이름)에 있다.
어디로 갈까?
* [[(게임 이름)/(너가 위치한 장소)/(너가 갈 곳 또는 너가 할 일)|(선택지)로 가기]]
* {{미궁|(게임 이름)/(너가 위치한 장소)/(너가 갈 곳 또는 너가 할 일)|(선택지)로 가기}}
게임을 만든 뒤
- 이 부분의 본문은 리버티게임:게임 알리기입니다.
게임을 만든 뒤에는 반드시 리버티게임의 게임 목록에 자신이 만든 게임을 넣어야 합니다. (게임성을 어느정도 갖췄다는 전제하에 테스팅 등의 목적으로 완성 이전에 넣어도 괜찮습니다.) 리버티게임:게임 목록에 {{게임아이콘}}에 있는 설명에 맞게 편집하시면 됩니다. 이 때 게임아이콘이 들어갈 곳은 해당 게임이 들어갈 문단에 특별히 어떻게 정렬하라고 나오지 않는 이상 가나다순으로 배치합니다. 자신이 만든 게임이라고 알리고 싶을 때에는 자신의 사용자 문서에 알리면 됩니다.
이제까지 게임을 만들 때 꼭 알아야 할 사항들을 설명하였습니다. 이제 직접 게임을 만들어 봅시다.
페이지 만들기
위에 있는 문서 만들기를 이용하여 만드시면 됩니다. 물론 게임 이름 부분엔 자신이 생각했던 게임의 이름을 적어야겠지요.
리버티게임에도 위키문법이 통하기 때문에 위키문법을 적절히 사용해서 게임을 만드시면 됩니다. (위키문법은 버:문법 도움말을 참조하시면 됩니다) 한편 하위 문서는 슬래시 (/)로 구분합니다. 링크를 걸 때와 하위 문서를 만들 때는 '게임 이름/게임 내용' 처럼 게임 이름 다음에 슬래시가 들어 있는지 확인해야 합니다. 리버티게임의 모든 게임은 리버티게임 분류에 속해야 합니다. 따라서 [[분류:리버티게임]]을 메인페이지에 넣는걸 잊지 말아주시기 바랍니다. 또한 해당 분류는 메인 페이지에만 달아 두면 됩니다.
아래부터는 게임을 만드는 데 참고하고 사용법을 익히면 좋을 기능들을 설명할 것입니다.
특수 함수 사용
- 이 부분의 본문은 리버티게임:특수 함수입니다.
미디어위키에 기본으로 설치되어 있거나 미디어위키에서 제공되는 확장 기능을 통해 사용할 수 있는 '특수 함수'로 더 복잡하고 자세한 것을 구현할 수 있습니다. 대개 '특수 함수'라 하면 초보 사용자들은 어려움을 느끼기 마련인데, 일단 배워서 익숙해지면 사용하기 쉬울 것입니다. 이런 특수 함수에 무엇이 있는지는 리버티게임:특수 함수에 더 자세히 나와있습니다!
틀 사용
멋지게 게임을 만들고 싶은데, 특수 함수고 HTML이고 뭐가 뭔지 하나도 모르겠다고요? 아니면, 게임 원본 소스가 게임을 만드는 자신도 알아보기 힘들겠다고요? 이 때문에 미디어위키에서는 틀 시스템을 제공하고 있으며, 리버티게임에서는 미디어위키의 틀 시스템을 활용해 수많은 틀을 만들어서 게임 개자의 편의를 돕고 있습니다. 틀을 단순히 끼워넣고자 하신다면 예를 들면 틀:찬성을 껴넣고자 하신다면 {{찬성}} 식으로 껴넣으시면 됩니다. 틀에도 여러 파라미터를 적용할 수 있는데, 이런 파라미터가 있는 틀은 해당 틀 문서에서 이에 관해 설명을 해놓으니 그것을 참고하시면 됩니다.
또, 한 게임에서만 사용될 전용 틀을 만드실 생각이라면, 리버티게임/틀 식으로 만드시고 {{:리버티게임/틀}} 식으로 껴넣으시면 됩니다. 파라미터를 만드실 생각이라면 {{{1}}}, {{{2}}} 식으로 만드시고, {{:리버티게임/틀|1|2}} 식으로 껴넣으시거나, {{{파라미터}}} 식으로 만드시고, {{:리버티게임;틀|파라미터=파라미터}} 식으로 껴넣으시면 됩니다.
이제, 리버티게임에서 자주 쓰이는 틀을 소개합니다. 혹시 여기서 원하는 틀을 찾지 못하셨다면 리버티게임:교통에 관한 틀이나 분류:리버티게임 틀 등에서 찾을 수도 있습니다.
링크를 위한 틀
- {{여기로}} : 화살표로 게임의 내용을 링크합니다. 링크의 색이 항상 파란색이며 링크를 가리키면 ‘여기로!’가 나오므로 다음 내용이 무엇인지 알 수 없습니다. →
- {{미궁}}, {{미궁링크}} : 링크의 색이 항상 파란색이며 링크를 가리키면 보여주는 글자가 나오므로 다음 내용이 무엇인지 알 수 없습니다.
대화용 틀
- {{대화}} :
설명가 : “보통의 대화를 보여줍니다.”
- {{Q}} :
인용 형태로 대화를 보여줍니다.
- —설명가, 이 문서에서
{{Linkget}}과 {{CGI2}}의 이용
{{Linkget}}은 매개변수를 사용할 수 있게 해 주는 틀입니다. 몇몇 게임을 플레이 하다보면 ?offset=숫자
같은것들이 주소에 붙어있는것을 확인할 수 있습니다. 이런 건 {{CGI}}를 이용한 게임으로(참고로 구형입니다), 새로 만들어진 {{Linkget}}의 기능은 이와 유사합니다.
- {{Linkget}}의 이용방법
{{#urlget:var}}
라고 바로 쓰게 되면 주소에 쓰여 있는var=
뒤의 값을 바로 출력합니다. 주소에 그런 게 없다면, 아무 것도 출력하지 않습니다.{{Linkget|링크에 나타날 텍스트|get=var=값}}
라고 바로 쓰게 되면 현재 페이지에 var의 새로운 값을 넘겨줍니다.{{Linkget|넘길 페이지|링크에 나타날 텍스트|get=var={{#urlget:var}}}}
라고 바로 쓰게 되면 현재 var의 값을 다른 페이지로 넘겨줍니다.- 지금까지 계속 변수 이름으로 var라는 것을 사용해 왔는데요, var 대신 다른 문자열을 택해도 좋습니다. 여러 변수값을 넘겨주려면
get=변수1=값1&변수2=값2&...
과 같이 쓸 수 있습니다. (여기서변수1, 변수2, ...
는 아까 썼던 var와 같은 것입니다.)- 다만, 사용한다면 영 좋지 않게 될 변수가 몇 가지 있습니다. (index.php의 변수 (미디어위키 위키))
title
,curid
,oldid
,action
,diff
,search
등등...- 물론, 이들도 잘 응용하면 사용이 가능합니다. 예를들어, 편집창으로 가는 링크를 만들땐
{{linkget|2=편집하기|get=action=edit}}
과 같이 쓸 수 있습니다. 그 외에도 다양한 특수 변수를 응용할 수 있습니다. 자세한 내용은 index.php의 변수 (미디어위키 위키)문서나 #고급 내부 링크 문단을 참고해 보세요.
- {{linkget}}을 사용하다 보면, 여러가지 변수가 쌓이게 되고, 이러한 변수를 유지하면서 새 변수를 지정하기 위해
{{linkget|페이지|텍스트|get=변수1={{#urlget:변수1}}&변수2=값2}}
라고 쓰게 됩니다. 매우 길고 비효율적이죠. 이럴땐 {{CGI2}}를 이용해 보세요. 변수를 지정할 때 다른 변수를 입력할 필요가 없고, 한번에 여러 변수를 지정할 수 있습니다.
{{CGI}}와 기타 여러 함수를 엮어서 사용하면 여러 가지 이벤트, 조건을 만들 수가 있습니다.
- 값이 1씩 증가하는 예제
- 원본: {{CGI|{{#expr:{{CGI}}+1}}|여기를 누르세요. 지금 값은 "{{CGI}}"입니다.}}
- 결과값: 여기를 누르세요. 지금 값은 "0"입니다.
- 값이 1씩 감소하는 예제
- 원본: {{CGI|{{#expr:{{CGI}}-1}}|여기를 누르세요. 지금 값은 "{{CGI}}"입니다.}}
- 결과값: 여기를 누르세요. 지금 값은 "0"입니다.
- 값이 1씩 증가하다 값이 5보다 크면 실행되는 예제
- 원본: {{CGI|{{#expr:{{CGI}}+1}}|여기를 누르세요. 지금 값은 "{{CGI}}"입니다.}}{{#ifexpr:{{CGI}} > 5|"{{CGI}}" 값이 5보다 큽니다.}}
- 결과값: 여기를 누르세요. 지금 값은 "0"입니다.
고급 내부 링크
바깥 링크를 거는 방법을 응용해서 현재 위키의 주소를 나타내는 fullurl
과 문서 제목을 입력할 때 URL 주소에 맞게 글자를 변환(인코딩)을 해주는 urlencode
를 사용해 고급 내부 링크를 걸 수 있습니다. 다만 {{urlencode:{{FULLPAGENAME}}}}
와 같은 경우에는 {{FULLPAGENAMEE}}
처럼 ‘E’를 덧붙임으로서 문서를 URL 주소에 맞게 변환합니다.
문서를 보여줄 때
문서를 보여줄 때에는 다음과 같이 링크를 걸면 됩니다만 보여줄 내용을 태그로 글자를 꾸미지 않는 이상 쓸 필요는 없습니다.
[{{fullurl:{{urlencode:문서 제목}}|offset=오프셋}} 보여줄 내용]
- 문서 제목 : 링크할 문서 제목을 입력합니다.
- offset : 오프셋 숫자를 입력합니다. {{CGI}} 또는 {{Get}}에서 사용하는 변수로, 해당 숫자를 CGI 틀에 보여줄 수 있습니다.
- 보여줄 내용 : 링크에 보여줄 내용을 입력합니다.
- 오프셋을 사용하지 않을 때 보여줄 내용에 태그로 글자를 꾸미려면 다음과 같은 방법으로 걸 것을 권합니다.
[[문서 제목|보여줄 내용]]
- 보여줄 내용을 태그로 글자를 꾸미지 않고 그냥 넣을 때에는 고급 내부 링크를 거는 대신에 다음과 같은 방법으로 걸 것을 권합니다.
편집을 할 때
편집을 할 때에는 다음과 같이 링크를 걸면 됩니다만 이 역시 보여줄 내용을 태그로 글자를 꾸미지 않는 이상 쓸 필요는 없습니다.
[{{fullurl:{{urlencode:문서 제목}}|action=edit&editintro={{urlencode:편집 윗부분에 보여줄 문서 제목}}&summary={{urlencode:편집 요약}}&minor=사소한 편집&redirectquery={{urlencode:저장시 넘어갈 urlget 변수}}&offset=오프셋}} 보여줄 내용]
여기서 editintro, summary, minor, offset 변수는 생략할 수 있으며 나머지는 반드시 입력해야 올바른 링크가 됩니다.
- 문서 제목 : 링크할 문서 제목을 입력합니다.
- editintro : 편집 윗부분에 보여줄 문서 제목을 입력합니다.
- summary : 편집 요약을 입력할 수 있습니다.
- minor : 사소한 편집 여부를 체크합니다. 1일 때는 사소한 편집에 체크가 되며, 0일 때는 체크가 되지 않습니다.
- redirectquery : 저장 버튼을 누른 뒤 넘어올 페이지나 오프셋 등의 변수를 입력할 수 있습니다.
- offset : 오프셋 숫자를 입력합니다. {{CGI}} 또는 {{Get}}에서 사용하는 변수로, 해당 숫자를 CGI 틀에 보여줄 수 있습니다.
- 보여줄 내용 : 링크에 보여줄 내용을 입력합니다.
- 보여줄 내용을 태그로 글자를 꾸미지 않고 그냥 넣을 때에는 고급 내부 링크를 거는 대신에 다음과 같은 방법으로 걸 것을 권합니다. CSS 작성에 능하시다면 {{CGI2}}를 쓰시더라도 클래스 변수를 활용해 글자를 꾸밀 수 있습니다!
확률적으로 다른 곳으로 분기시키기
만일 단일한 링크를 눌렀는데 확률에 따라 서로 다른 다음 문서로 넘어가도록 하고 싶으면 choose 태그와 option 태그를 활용할 수 있습니다.
<choose> <option weight="3"> * [[/75퍼센트|다음으로 가기]] </option> <option> * [[/25퍼센트|다음으로 가기]] </option> </choose>
이러면 3:1의 비율로 다음으로 가기 링크를 눌렀을 때 75퍼센트라는 제목의 하위문서로 가거나 25퍼센트라는 제목의 하위문서로 갑니다. 다만 이 경우 플레이어가 확률에 따라 서로 다른 문서로 이동한다는 사실을 눈치 못 챌 수도 있으므로 분류:확률에 따라 분기가 달라지는 어드벤처 게임 문서 분류 같은 것을 달아두면 좋습니다.
자바스크립트 게임 만들기
- 이 부분의 본문은 리버티게임:자바스크립트 게임 만들기입니다.
- 이 부분의 본문은 리버티게임:플러그인입니다.