아이디어게시판

아이디어게시판 [아이디어게시판]
스튜디오(+스크립트)에 업데이트가 필요합니다.
2020.05.16 11:51 조회 : 1138
Lv. 66익스트림버니합 CosyClimbing 작성자 게시물 더보기
스크립트 관련
1. 플레이어가 점프했을 때 발생하는 이벤트 콜백

카운터 스트라이크에는 '버니합' 이라는 버그가 있습니다.

그리고 그 버그는 기술이라는 명사로 다가와 유저들에게 재미를 안겨주고 있습니다.

그러면서 유저들은 버니합이 곧 실력이라 생각하고 잘해지기 위해 노력합니다.

아마 사람들끼리 "버니합을 잘한다." 라고 판단하는 기준은 역시 속도가 될겁니다.

기본적으로 버니합이라는 기술이 빠르게 가기 위한 기술이기 때문입니다.

그러나 많은 사람들이 버니합을 하고 있을 때 자신의 버니합이 지금 빠르게 가고 있는 건지,
제대로 하고 있는 건지 알지 못합니다.

저는 그 문제점을 스튜디오 플레이 모드에서 루아 스크립트로 해결할 수 있는 가능성을 보았습니다.

점프를 할 때마다 자신의 속도가 몇이였는지 알려주는겁니다.

제가 직접 플레이어 z값 속도를 측정하며 시도해본 적이 있는데 제대로 작동하지 않으면서 실패했습니다.

그 이유는 클라이언트에서 루아 스크립트로 전달하는 핑이 문제였는데요.

제공해주시는 API 소스를 이용해 점프를 했다 라는 것을 게임에서 즉각 체크하고 전달한다면 가능할 것으로 보입니다.


2. 플레이어가 앉기했을 때 발생하는 이벤트 콜백

카운터 스트라이크 온라인에 사용된 게임 엔진에는 '덕팅' 이라는 버그도 있습니다.

위의 버니합과 동일합니다.


3. 플레이어 중력, 플레이어 최대 속력 스크립트가 작동을 안합니다.

Game.Player.gravity 필드와 Game.Player.maxspeed 필드입니다.

시도해보기 전 위의 소스들을 봤을 때 든 생각은 '정말 유용하겠다' 였습니다.

하지만 시도해본 결과 둘 다 작동하지 않았습니다.

정확히 말씀드리면 Game.Player.gravity 함수는 창작모드 스크립트 테스트에선 정상 작동합니다.

하지만 플레이모드로 들어가면 아무리 함수를 호출해봐도 중력은 변경되지 않습니다.

추측컨데 장치 블록에 있는 중력 영역 블록과 충돌하면서 루아 스크립트의 중력 필드는 무시되는 것 같습니다.

Game.Player.maxspeed 함수는 스크립트 테스트에서 조차 작동하지 않았습니다.

이유는 모르겠습니다.


4. 플레이어 시야각 필드 추가

플레이어가 어딜 보고 있는지 체크하는겁니다.

X, Y값이 아니여도 괜찮습니다. 메소드로 동서남북만 되도 감사합니다.
추가가 된다면 HOOK 사용이나 텔레포트시 시야각을 바로 잡아주는 데에 쓰일 것으로 보입니다.


5. 플레이어가 사망한 상태에서 ui.lua에서 game.lua로 시그널이 전달되도록

사망한 상태에서 특정 조건 달성 시 스스로 부활하는 기능을 추가하고 싶습니다.

게임에서 클라이언트로 전달하는 시그널이나 클라이언트 내에서만 이루어지는 변수 전달은 가능한데

클라이언트에서 게임으로 전달되는 시그널은 전달이 불가합니다.

추가로 플레이어 리스폰 가능 여부가 리스폰 불가능일 때

Game.Player:Respawn () 함수가 사망해서 관전 상태에 있는 플레이어에게도 호출됬으면 좋겠습니다.

현재

Game.Rule.respawnable = true
player:Respawn()
Game.Rule.respawnable = false

이런식으로 쓰고 있습니다.

번거롭기도 하며, 가끔씩 루아 처리속도가 지연되면서 생기는 버그도 일어납니다.


6. 3인칭 카메라 거리 고정

Game.Player:SetThirdPersonView (minDist, maxDist) 메소드가 있고, 저도 자주 사용하고 있습니다.

그러나 3인칭을 할 때마다 감수해야 하는 것은 버니합 덕팅을 할 수 없다는건데요.

그 이유는 버니합과 덕팅을 마우스 휠로 하기 때문입니다.

3인칭 메소드를 이용해 3인칭으로 바꾸고 나면 마우스 휠을 굴려도 카메라 거리만 조절될 뿐
키보드 설정에서 마우스 휠로 바꿔둔 점프와 앉기가 무시되는겁니다.

카메라 거리 조절을 할 수 없는 3인칭 메소드가 나오면 좋겠습니다.


7. 콘솔에 입력되는 print 글자 수 개선

현재 적용되고 있는 print 글자 수 제한이 몹시 척박합니다.

콘솔에 게임 상태를 알리고자 몇 자 쓰면 바로 글자 수 제한으로 ...이 나옵니다.

역슬래시n을 해도 마찬가지였구요.

예를 들어 print ( player.name.." 님이 입장했습니다." ) 를 입력하면

실제 콘솔에 나오는 내용은 "익스트림버니합 님이 입..." 입니다.


8. 키 금지 시그널

말 그대로 무슨 키를 눌렀을 때 그 키가 동작하지 않는겁니다.

예를 들어 G키가 무기 버리기로 설정되있을 때 G키를 눌러도 무기를 버리지 못하게 하는겁니다.

카스온라인에서 시도된 모습은 본 적이 없지만, 장전 중 E키(아이템 사용)가 눌리지 않는 것을 보며

가능할 것이라 판단했습니다.


9. StopPlayerControl (stop) 함수의 키버그 개선

일정 시간동안 이동과 공격을 금지한다는 함수입니다.

되게 유용할 것으로 보이나 사실 활용이 거의 불가능할 정도의 심각한 버그가 있습니다.

함수가 호출되기 직전 누르고 있던 키가 있으면
그 키가 계속 눌린 채로 정지 여부가 풀릴 때까지 그대로 있어야 한다는건데요.

너무 불편합니다. W키를 누르고 있다가 함수가 호출되면 계속 앞으로 가고 있어야 합니다.

축구 모드에서 사용되던 것처럼 키 전달이 차단되기 전에 먼저 키 전달을 한번 리셋해주는게 맞다고 봅니다.


10. 아이템 회수 메소드 추가

플레이어가 가지고 있던 아이템을 모두 회수당하는 함수가 추가됬으면 좋겠습니다.

루아 스크립트를 활용한 모드를 만들다보면 라운드 형식으로 진행되는 모드가 많습니다.

제가 루아 스크립트를 활용해 만든 창작맵들은 라운드가 시작되면 모두 리셋을 진행합니다.
라운드 스코어와 아이템만 빼구요.
아이템을 주워 파밍하는 요소가 포함된 모드인데, 라운드가 지날수록 파밍의 난이도가 떨어집니다.


11. 장치 블록을 모두 초기화하는 함수 추가

장치 블록인 RESET 블록의 사용 없이 스크립트로 장치 블록들을 초기화하고 싶습니다.

라운드 재시작을 할 때 마다 장치 제어 스크립트 블록을 이용해 RESET 블록을 연결해야 한다는 것이

개인적으로 불편하다고 느낍니다.


12. 플레이어에게 데미지를 입히는 메소드 추가

플레이어를 죽이는 메소드가 아닌 데미지를 입히는 메소드가 필요합니다.

Game.Player.velocity 함수를 이용해 억지로 낙사 데미지를 입힐 수는 있지만
공중에 있을 때는 그러하지 못합니다.

조건 성립 시 패널티를 가해야 하는데 플레이어를 죽이는 극단적인 패널티보다
기회를 주기도 하면서 플레이어가 직접 기회를 만들 수도 있는 패널티를 활용하고 싶습니다.


13. 라운드 시작 시 파괴된 블록 복원 기능 필드 추가

루아 스크립트로 진행한 라운드 재시작은 모든 플레이어 리스폰 뿐 그 외엔 아무런 기능이 없습니다.

때문에 루아 스크립트를 활용했다 하더라도 파괴 모드나 데미지 파괴 가능 블록을 활용한 맵에는
어쩔 수 없이 제약이 따르고 있습니다.


14. GetTriggerEntity () 함수로 사격 표적 블록과 표적 버튼 블록에 영향을 준 플레이어를 불러올 수 있도록

사격 표적 블록에 공격 히트 시 신호를 주도록 영향을 준 플레이어를 불러오려 했으나

GetTriggerEntity () 함수로 불러올 수 있는 트리거는 영역 블록 뿐이였습니다.

API 문서를 더 찾아봐도 표적을 히트한 플레이어를 개별로 불러올 방법은 보이지 않았습니다.


15. 저장 및 불러오기 루아 개선

저장까지 제대로 이루어졌는데 불러올 때 저장했던 정보가 갱신되어 있지 않다거나

한꺼번에 많은 저장 정보를 저장하려 하면 저장에 실패하는 등

정확한 원인은 제가 알 수 없으나 현재 저장 정보에 버그가 상당히 많습니다.

심지어 개발자가 만든 시나리오T02 스튜디오 맵에도 간간히 저장 정보 버그가 일어나는 모습이 보입니다.





창작모드 관련

1. 풀 텍스쳐 이미지의 경사 블록 추가

많은 경사 블록 중에서 풀 경사 블록이 없다는 것이 아쉽다고 느껴집니다.


2. 대각선 블록 추가

이미 많은 분들이 많이 문의해온 내용입니다.

계단 형식의 대각선이 아닌 벽 형식의 대각선이 필요하다고 생각듭니다.

네모 밖에 없는 현재 스튜디오에서 완만하게 각진 벽을 꾸며 퀄리티를 더욱 높여줄 것으로 보입니다.


3. 밟으면 속도가 느려지는 함정 장치 블록 추가

데미지가 아닌 다른 방향으로 패널티를 주는 함정 장치도 추가되었으면 좋겠습니다.

이미 사람들이 밀어내기 블록을 역방향으로 약한 힘을 주는 것으로 구현하고 있지만

걸음 속도가 프레임이 아닌 핑으로 처리되면서 부자연스러운 화면 모습과
의도하려는 속도를 정확하게 구현할 수 없다는 점에서 깔끔하지가 못합니다.


4. 사망하면 열람중이던 장치 블록 팝업 리셋

플레이어가 컴퓨터에 암호를 입력하고 있거나 혹은 아이템을 조합/분해 하고 있을 때

플레이어가 사망하면 그 장치 블록의 팝업도 닫혀야 한다고 생각합니다.

사소한 기능 하나가 모드의 퀄리티를 높여줄 수 있고, 어떠한 상황에서는 필요한 기능일 수 있습니다.






추천 : 1
댓글을 남기시려면 로그인 해주세요
댓글 : 1
  • 지금 이 글쓴이는 스튜디오 루아의 달인입니다 운영진은 제대로 읽으세요 Lv. 6모바일에서 등록1236656 2020.05.16