https://www.youtube.com/c/NDCKR/videos
사용자가 적은 프로그램(게임)을 운영하는 기획자가 됨. 여기서 사용자가 적다보니까 유저피드백은 없고, 주변 동료의 피드백만이 남게 되었음. 그러다 보니까 점점 유저들이 재미있어할 만한 (흥미를 느낄만한) 방향과 멀어지고, 개발이 편러하고 겉은 화려한 결과물만 나옴
이것이 악순환 되다 보니까 유저들은 점점더 떨어져나가고, 그러다 보니까 유저들의 피드백과 다른,,, 개발자 입장에서의 의견만 들어감. 개발을 쉽게하기 위해서 이펙트를 줄이고... 있던 리소스를 재활용하고.. 색다른 컨텐츠를 많이 늘리기 보다 노가다성 퀘스트만이 늘어남
그 뿐 아니라, 상급자의 오더에서 처낼건 처내야하는데 계속 수용만 하다 보니까 "오더를 구현했지만 게임은 실현하지 못한" 상황이 됨. 위에서 뭐 넣자, 뭐 빼자 하면 큰 고민없이 수용해 버리니까 게임성 자체가 혼란이 온 것
그런점에서 기획자가 팀원내 커뮤니케이션만을 최우선으로 하면 주위에서 "좋은 기획자"라고 소리를 듣거나 평판이 좋아질지는 모르겠지만, 실제 사용하는 사람들 입장에서는 개떡같은 프로그램(컨텐츠)를 만든것 밖에 안됨. 이렇게 되면 출시 이후에 전면 재배치가 필요해서 오히려 시간과 자원을 써먹게 됨.
⇒ 문제가 있을것 같으면 명확하게 이런점, 저런점이 있다고 말해야 함. 또한 의심스러운 부분이 있으면 꼭 한번씩 짚어볼 것
⇒ 기획 의도를 정확히 정하고, 그에 따른 목적과 진행을 세워야 함. 그렇게 만든게 꼭 성공한다는 보장은 없음. 그렇지만 의도와 목적을 제대로 정하지 않고 만들면 "이상한 결과물"이 나와서 실패할 확률이 더 높아질 것
Signle Thread에 유저 쓰레드(Fiber)를 결합 ⇒ Node 단위. blocking 쓰레드지만 non-blocking 처럼 하는게 중요. IO작업 때문에 blocking 되어야 할 경우 (http 요청 또는 DB쿼리) 다른 fiber로 스위칭이 넘어감. 그냥 Python의 asyncio 같음.
Fiber ⇒ https://en.wikipedia.org/wiki/Fiber_(computer_science)
작업을 하다보면 Fiber끼리 통신해야할 경우가 생김. User → Room Fiber로 넘기는것과 같은 경우. 이러한것들을 할 때 유저단에서는 Lock을 신경 쓸 필요 없게 해야함. 한편 Java에서 공식적으로 Fiber를 지원하지 않음. GameAnvil의 경우 Fiber를 사용하기 위해 Quasar 라이브러리를 이용함. (근데 내부에서 버그등이 있긴함. Java17에서 Loom으로 정식으로 들어올 예정이라, 라이브러리 개발자들이 Java17쪽 지원쪽에 붙어서)
Java HeapBuffer는 C++에서 Pointer 연산보다 더 빠르다.... 다만에 JVM 외부에서 내부로 들어가거나 내부에서 외부로 나갈 때 cost가 많이 든다. (DriectBuffer등) JVM 내부에서 돌아가는건 빠르다고 함
MySQL로도 대용량 처리가 가능하다. MyProxy를 통해서 샤딩을 했더니 되더라
잘 만든 라이브러리 하나가 전체 성능을 이끈다
사용자가 직접 접속하는 서버를 gateway 서버라고 부르고... 지원용 서버(다운로드)를 support 서버라고 함.
서버의 성능을 주기적으로 검증할 수 있는 도구를 만들어야 함. 사실 정량화된 수치를 뽑아내 주는 도구가 없으면 문제가 있다는것을 알아채기 조차 힘듦. 이런 도구를 한번 만들어놓으면 언제든 자동 테스트를 통해서 성능 체크를 할 수 있음. 그러면서 개발상 문제가 있으면 바로 드러남. (수치에서 차이가 발생하니까)
단순히 Deep Learning으로 악성유저·작업장을 찾아내는데는 한계가 있다. 감지가 문제가 아니고 뒷처리가 문제. AI의 내부는 BlackBox이기 때문에 모델을 만든 개발자 조차 쉽게 설명할 수 없음. 이런 상황에서 유저가 클레임을 넣으면 마땅하게 설명할 방법이 없어서 제재를 풀어주거나 사람이 직접 재분류를 해야하는 상황이 옴.
그렇기 때문에 XAI (eXplainable AI)가 등장하여 발전중임. XAI는 무엇 때문에 이걸로 탐지했는지 과정을 보여줄수 있는 AI임. 물론 기존 AI보다도 더 cost가 쌔긴하지만, 이유를 설명할 수 있다는 점에서 상당한 이점을 가짐. 특히 하드코어 유저나 작업장의 경우 차단당하면 소송까지 하는 경우가 있는데, 소송에 휘말려도 차단한 이유와 데이터들을 준비할 수 있기 때문에 유용함
악성유저를 판단하기 위해서는 분류를 주로 사용함. 일별 플레이 타임, 일별 아이템 획득 횟수, 텔레포트 사용 횟수등을 이용해서 분류하고 수치가 특히 높은 그룹을 악성 유저로 판단하는 방식을 사용함.
친밀한 파티, 길드에 있을수록 이탈률이 적음. 그렇기 때문에 유저를 홀로 남길것이 아니라 계속해서 어딘가에 소속할 수 있는 도구를 주는것이 유저 이탈을 줄일수 있는 방법임. 유저들을 그저 유목민으로 볼 것이 아니라 자기들 끼리만의 작은 사회를 만들수 있게 하는것이 중요함.
결과적으로 영향력이 높은 사람들이 게임봇을 쓰는것을 특히 빠르게 막아야 함. 영향력이 높은 사람들이 더 많은 사람들에게 전파하기 때문에. 게임봇이 늘어나면 유저들이 떠나게 되고 게임의 수익성또한 떨어지게 됨.
SIR(질병예측모델)등을 이용하면 일별 증가속도를 파악할 수 있고, 이것으로 어느시점에서 통제불가능한 선까지 늘어날지 파악할 수 있음. 인싸들이 게임봇을 이용하면 주변에 전파 속도가 (당연히도) 늘어남. 이런걸 관측하면 예측모델을 만들수 있고, 예측 모델을 통해 효과적으로 (최적의 방법으로) 대응할 수 있음.
물론 게임봇과 같이 나쁜것만 전파되는것은 아님. 선한 행동도 전파가 됨. 그러나 전파속도가 악한 행위에 비해 몇배 느리다는 점은 걸림돌임. 한편 이런것들을 보여준 논문에서 "게임내 캐릭터가 어떻게 생겨먹었고 어떻게 만들었는가"에 따라서 플레이 성향도 달라진다는걸 말해서 흥미를 끔
새로 출시한 게임에서 60일간 얼마나 많은 사람들이 게임봇을 사용하게 되는지 분석해 보았음. 40일째 되는날 (아무런 제재를 하지않았을때) 아는 사람에 의해 게임봇을 쓰기 시작한 경우가 (전파된 경우가) 10.91%임. 특히 같은 파티의 사람이 게임봇을 쓰는 경우에 95% 확률로 전파가 됨. 같은 길드내에 있을경우 27%정도 전파됨.
그렇기 때문에 가시성이 높은 그룹에서 플레이 하는사람들을 차단하는게 중요함. (새로 전파하지 못하도록) 여기서 우리가 지켜야 할 그룹은 Honest→evil로 넘어가려는 사람들임. Holy noble은 어짜피 봇을 사용 안할것이며, venomous devil은 어짜피 봇을 사용할 종자들임. Penitent는 목격이 되질 않음...
게임위원회는 단속권한이 없어서 실질적으로 무언가를 할 수 없음. 그래서 대부분 검·경에 넘겨주는 방식이었음. 특히 검·경 수사권 변경으로 인해서 검찰은 특수범죄가 아니면 수사자체를 하지 못하기 때문에 사실상 경찰이 모든 수사를 해야하는 상황이 되었음.
경찰에게 효율적으로 수사의뢰를 하려면 범죄수익액을 강조해야 함. 범죄수익액이 결국 범죄규모의 판단기준이기 때문임. 경찰에서는 이게 얼마나 죄질이 나쁜 범죄인지, 수사 가치가 있는지가 중요함. 여기서 범죄 수익액은 1차 지표로 쓰임. 그렇기 때문에 추정손해액보다 범죄수익액에 포커스를 둬야함. (범죄수익액을 직접 파악 못할경우 추정손해액을 사실적으로 계산해서 강조해야함) 후원이나 상품판매등을 한다면 이에 대한 수익액을 계산해서 강조해야함.
그냥 사설서버를 열었다고 신고해봤자 우선도가 떨어짐. 그렇기 때문에 사설서버 제작·운영-사설서버 광고-게임머니 환전-사행성 컨텐츠 운영등을 다 엮어서 큰 규모의 조직적 범죄임을 부각시켜야 함. 또한 범죄 추정액을 이용하여 실제 규모또한 얼마나 되는지를 강조해야함
⇒ 세트로 묶고 큰 범죄로 보이게 해야함