개인 자료란 (JE)

  서버 커뮤니티

Profile qsef1256 프로답변러

qsef1256 d87af76e09b84a0b925bd6dcc753a89a

Profile

강좌 자바 에디션(JE) 플러그인 꿀팁

Skript 비권장 사용설명서: 이렇게는 쓰지 마세요

2022.08.12 조회 수 1012 추천 수 2
분야 스크립트 
장르 버그 해결, 정보전달 
게임버전 모든버전 
API 버킷 

 서론

상황이 점점 안 좋아지는 것 같아서 게시글을 씁니다.


스크립트는 한국에서 나름 쉬운 접근성과 비교적 많은 사용자로 인기를 얻고 있지만, 접근하기 쉽기 때문에 "잘못" 사용하는 경우가 늘어나고 있는 것 같습니다. 언어의 한계라던가, 그런 다소 골치 아플 수 있는 문제를 제외하고, 스크립터의 관점에서도 잘못된 사용법을 다시 알려드리고자 합니다.


1. Addons

더 말하지 않고 간단히 설명하겠습니다: InvSK, SkChoke, QuarSk, GomSK더 이상 작동하지 않습니다.


서버에 이것들 아직도 남아있으면 과감히 지워버리세요.

애드온 쓰기 전에, 지원 버전이랑 이게 뭐 하는 애드온 인지부터 먼저 확인해보는 습관을 들입시다.


2. Periodical

on every second:

하지 마세요. 이걸 쓸 필요가 있는 구문은 한정 되어 있습니다. 보통은 다른 방식으로 구현 가능합니다.


1초마다 서버에 계산을 "계속" 시키는 겁니다. 쌓이면 TPS(=서버렉)가 내려 간다고요.


3. Loop

loop 600 times:

위에 꺼가 패시브 렉이면 이건 액티브 렉입니다. 그리고 보통 다른 방법이 있습니다.


렉 걸린다고요, 스크립트는 그렇게 최적화가 좋지 않아요.


4. DRY (Don't Repeat Yourself)

중복 코드 금지. Skript 뿐만 아니라 Java도, 다른 프로그래밍 언어에서도 동일하게 적용되는 원칙입니다.


중복 코드가 생기면 함수로 분리하세요. 그래야 알아 먹기도 쉽고 변경하기도 쉬워요.

여기 있는 것들 중에 쌓이면 제일 답 없는 게 이겁니다. 코드 버려야 함


5. Naming

{_a} {_b} {_temp} 같은 식으로 변수 이름 짓지 맙시다.


그거 나중에 님이 버그 생기면 봐야 합니다.

마찬가지로 변수에 거짓말을 하지도 마세요. 실제로는 체력 변수인데 이름이 {_player} 같은 상황이 누적되면 관리가 불가능 해집니다.


6. 개인 변수

set {ex.%player%} to 1

꺼무위키에 이런 식으로 소개된 적이 있어서 씁니다. 이렇게 쓰면 반복/삭제하기 난감합니다.


set {ex::%player%} to 1

대신 배열 변수를 쓰도록 합시다.


7. RTFM (Read The Friendly Manual)GIYF (Google Is Your Friend)

https://skripthub.net/docs/

https://google.com/

질문글의 한 35%는 Docs에서 구문 찾아보면 원하는 게 나옵니다.

45%는 구글링 하면 구문이 나옵니다.

5%는 Skript Github Issue 가져 뒤져보면 뭐가 문제인지 알 수 있습니다.


나머지는 자기가 코드 잘못 작성한 경우고, 한 7% 정도가 진짜로 도움이 필요한 특수한 분야입니다. 너무 크게 잡았는지 잘 모르겠네요


8. Syntax

문법을 지킵시다. 이건 엄연히 프로그래밍 언어지 의사 코드가 아닙니다. 영문처럼 보이지만 영문처럼 쓸 수는 없습니다.


컴퓨터는 융통성이 없고 사람 말을 못 알아듣는 친구입니다.


9. 보안

컴퓨터는 님 시킨 대로 작동합니다. 말 그대로 시킨 대로"만" 작동합니다.


이는, 구문이 악용될 수 있다는 걸 의미합니다. 예를 들어, 아이템 이름과 같은 플레이어가 변경 가능한 데이터에 아이템의 정보를 저장해서는 안됩니다.


사실 경우가 다양할 수 있기에 대표적인 형태를 특정하지는 못 하겠습니다만, 이 문제는 이곳의 다른 문제들 만큼이나 중요합니다. 구문을 작성할 때는 플레이어가 악용할 소지가 있는지, 간접적으로 이용될 수 있는 방법이 있는지, 중요한 구문인 경우 버그시 대책이 있는지 확인해야 합니다.


10. Clean Code

코드는 읽기 쉽게 작성되어야 합니다. 내 코드를 다른 개발자에게 보여줬을 때, 해석에 10초 이상이 걸린다면 그건 좋은 코드가 아닙니다.


일반인이라도 영어를 안다면 이게 뭐 하는 코드다! 를 대략 알 수 있어야 좋은 코드입니다.


11. Not Javascript
초보 분들이 가끔 하는 착각인데, 스크립트의 영문 명은 Skript 입니다. Javascript는 주로 웹 개발 용도로 사용되는 다른 프로그래밍 언어입니다.


12. Economy

https://skripthub.net/docs/?id=920

player's money 

Skript 에는 Vault와 자동 연동되는 돈 기능이 이미 있습니다. 변수를 따로 할당하려고 하지 마세요. 직접 만들면 다른 플러그인이랑 호환이 안됩니다.

단, Vault는 필수 설치입니다.


 마치며

사실 더 있을 수 있는데, 시간이 늦어서 대표적인 실수들만 소개해봅니다. 나중에 좀 더 추가될 수 있습니다.


스크립트를 당장 버리진 못하더라도, 잘못 사용하는 일은 줄어들었으면 합니다. 주변에 스크립트를 이렇게 쓰는 사람이 있으면 한번 보여주시면 감사하겠습니다.




2개의 댓글

제론
2022.08.12

Skchoke랑 InvSk가 지원이 종료 됐다니.. 스크립트의 전성기가 많이 지나가버렸군요

오른쪽왼팔
13 일 전

프로그래밍을 모르면 알기 힘든 부분을 잘 집어주셨음

클린 코드 변수명 리팩토링 구글링 ㅇㅇ..

뉴스 및 창작물
/files/thumbnails/336/355/003/262x150.crop.jpg?20221130174334

해외반응

번역) 꿀팁 : 나뭇잎은 물이 얼게 하는걸 막습니다. 1

teara

2022-11-30

1

/files/thumbnails/213/355/003/262x150.crop.jpg?20221130190452

업데이트

마인크래프트 1.19.3 프리릴리스 3 업데이트

마리오군

2022-11-30

0

/files/thumbnails/100/355/003/262x150.crop.jpg?20221130071036

소식

새로운 기본 스킨들을 소개합니다 (애니메이션 영상)

프리루트

2022-11-30

0

/files/thumbnails/728/352/003/262x150.crop.jpg?20221127060715

소식

현재 엔비디아 최신 드라이버에서 마인크래프트 구버전 플레이가 불가능합니다 3

코코냐

2022-11-27

4

/files/thumbnails/669/351/003/262x150.crop.jpg?20221125204354

업데이트

마인크래프트 프리뷰 및 베타 1.19.60.20 업데이트

Dalsu

2022-11-25

0

/files/thumbnails/663/351/003/262x150.crop.jpg?20221125194043

소식

마인크래프트 2022 블록 프라이데이 세일 시작 1

Dalsu

2022-11-25

0

/files/thumbnails/089/351/003/262x150.crop.jpg?20221124184623

업데이트

마인크래프트 1.19.3 프리릴리스 2 업데이트

마리오군

2022-11-24

1