도박으로 자멸하는 게이머들
·
Thoughts
블루 아카이브, 명일방주, 원신, 붕괴. 이들의 공통점은 '수집형 미소녀 모바일 게임'이라는 범주 안에 들어간다는 것이다. 그럼 또 다른 이들의 공통점은 뭘까? '가챠(뽑기)로 캐릭터들을 뽑아야 한다'는 점이다. 가챠. 이것이야말로 게이머들의 재정 건전성에 치명적인 영향을 미치며 국가를 좀먹는 사회악으로 규정해 마땅한 것이다. 이는 근본적으로 도박이다. 재화를 걸고 이길지 질지 알 수 없는 것에 오직 확률만을 믿으며 가챠용 재화를 구매한다. 흔히 트럭이라고 부르는 10만원 안팎의 가장 큰 패키지를 구매한다고 해도 100 연차를 돌릴 수 있는 게임은 본 적이 없다. 내가 안 해봤을 수도 있지만... 여하튼 10만 원이란 돈을 쓰더라도 가챠를 많이 돌릴 수 없다. 10만원어치로는 어림도 없다. 10만원이 뉘..
[C++] ChatRoom 구현
·
Study/C++ & C#
본격적으로 채팅 시스템을 만들어 보기 위한 기초 작업이라고 봐도 되겠다. 이전과의 차이점은 아래와 같다. Session 정의 변경 - 이제 세션은 서버와 클라이언트 간의 연결 상태를 나타낸다. - 기존 Room처럼 쓸 수 없고 단일 연결을 나타낸다. ChatServer 구현 - io_context를 가지고 전체 서버를 관리할 객체 - 이후에 io_context를 활용하는 객체들은 전부 이 객체로부터 레퍼런스를 받는다. ChatRoom 구현 - ChatServer 아래에서 실제 채팅방의 역할을 할 객체 핸들러 구현 - 메세지 핸들링을 분리해 코드 관리를 용이하게 할 목적으로 별도 클래스로 구현 1. Session #ifndef SESSION_H_ #define SESSION_H_ #include #incl..
[C++] Session 다중 접속
·
Study/C++ & C#
이전에 에코서버를 만들어 봤었는데, 그건 세션 당 하나의 소켓만 처리할 수 있었다. 이걸 하나의 세션에서 여러 개의 소켓을 처리할 수 있게 수정했다. 하물며 채팅에서도 1:1 채팅만 하는 것은 아니지 않은가. 1. Server Server 클래스 자체는 거의 원형을 유지하고 있다. class Server { public: Server(boost::asio::io_context& io_context, short port) : io_context_(io_context), acceptor_(io_context, tcp::endpoint(tcp::v4(), port)), session_(std::make_shared(io_context)) { DoAccept(); } private: boost::asio::io..
[C++] Boost.Asio 에코 서버
·
Study/C++ & C#
Sapphire라는 FF14의 서버를 에뮬레이팅 하는 프로젝트가 있다. 개발사가 사용하는 실제 서버 코드와 동일할 수는 없겠지만, 기본적인 처리는 되어 있기에 이를 통해 나만의 세계에서 FF14를 탐험할 수 있다. 에뮬레이팅 된 서버가 클라이언트와 정상적으로 통신하고 있으며, 서버도 적절한 처리를 해 준다는 의미이다. 그리고 난 이 프로젝트에 사용된 Boost.Asio가 매우 궁금해졌다. 이를 처음부터 공부하며 이 프로젝트에 사용된 비동기 통신 개념을 진정 나의 것으로 만들기 위한 첫걸음을 떼려고 한다. 그전에 Boost.Asio에 대해 알 필요가 있다. 이 글에서 그 내용을 설명할 수도 있지만, 매우 잘 설명해 준 어떤 블로그의 글을 발견해 링크를 남긴다. Boost Asio에 대해서 알아보자 물론 공..
아카마이한테 딱 걸렸다...
·
Others
얼마 전 갑자기 Cloudflare를 사용하는 웹사이트를 로딩하는데 큰 문제가 있었다. css를 포함한 수많은 요소들이 403으로 인해 정상적으로 로드되지 않았다. 그래서 내가 할 수 있는 많을 일들을 해 봤으니 결과는 동일. 포기하고 자고 다시 보니 이 문제는 해결이 됐다. 그런데 다른 문제가 생겼다. MSI 웹사이트에 볼 일이 있어 접속을 시도했는데... 아니 씨벌거 이게 대체... MSI 사이트에 들어가 본 지는 1년도 더 넘었는데 이게 무슨 일이란 말인가? edgesuite를 보고 Akamai와 연관된 것이라는 것을 확인. Akamai가 고객사에 제공하기 위한 클라이언트 IP 평판 관리를 하고 있는 것도 알았다. 내 IP의 평판은... 머리가 아프다. 분명 클리커 때문이겠지. 어찌 잘 되나 테스트..
[C#] ###Clicker 개선판
·
Study/C++ & C#
개선은 진작 했지만, 관련해서 포스팅하지 않은 이유는 "티스토리 계정을 까먹어서..." 자동 로그인 해둔 것들은 포맷 후에 다시 로그인해야 하니 여간 귀찮은 일이 아니다. 어찌어찌 로그인해서 쓴다. 이전과의 차이점 자격증명 체크 개선 프로세스 생명주기 관리 개선 진행상황 트래킹 개선 이터레이션 처리 개선 일부 클래스 개선 1. 자격증명 체크 개선 포맷으로 인해 기존 암호회 데이터를 사용하지 못하게 됐으니, 새로운 데이터를 만들 필요가 있다. 그래서 난 "어차피 실행해서 로그인이 불가능하면 새로운 자격증명을 입력하면 된다"라는 생각으로 실행했다. 하지만 이전 버전에서는 각 스레드마다 로그인 체크를 하기 때문에 모든 스레드가 동시에 새로운 자격증명 입력 요구를 하게 되는 상황이 발생했다. 몇 번이고 그걸 입..
[C#] 심플한 게임 런처
·
Study/C++ & C#
내가 하는 모 게임은 게임을 구동하기 위해 런처에서 로그인 후 게임을 실행해야 한다. 그리고 그 과정은 대단히 귀찮다. 심지어 난 비밀번호가 크롬에서 자동생성 해주는 복잡한 그거라 일일이 크롬에서 그걸 가져왔다. 그게 귀찮다고 다른 데 메모해 두면 보안의 의미가 없으니까... 그래서 이 번거로운 과정을 건너뛰고 한방에 게임을 켜고 싶었다. 계정의 세션ID는 변경되지 않고 고유하며, 게임 실행 시에 그 인자로 들어간다. 이를 포함한 정보를 저장했다가 다시 불러와 사용할 수 있게 하고 싶었던 것. 이전에 내가 의도하는 기능을 하는 어떤 개인 개발 프로그램이 있었는데, 유감스럽게도 소스코드나 .pdb 파일이 없었기 때문에 이를 리버싱 할 필요가 있었다. 프로그램을 디컴파일하고, 그 코드를 보기 좋게 고친 다음..
[C#] ###Clicker
·
Study/C++ & C#
모 웹사이트는 페이지에 있는 어떤 영역을 클릭하면, 그 사이트 내에서 사용할 수 있는 재화를 지급한다. 하지만 그 영역의 수가 결코 적지 않다. 일일이 클릭하기에 꽤 번거로운 양이고 특정 주기로 갱신 또한 이루어진다. 이제 자동화로 편해져 보려 한다. 하지만 여기선 클릭 자동화에 대한 얘기 보단 다른 걸 설명하려고 한다. 그런 자동화는 다른 데 더 좋은 설명이 많다. 1. Main 프로그램의 주요 동작만 알아보기 위해 Main()만 가져왔다. /// /// Holds constant values to be used throughout the application for configuration purposes. /// static class Constants { /// /// Maximum number ..
모니터가 꺼지고 그래픽 카드의 팬이 풀로드 되는 현상과 나의 해결법
·
Others
2 ~ 3일 전쯤, 식은땀이 줄줄 나는 경험을 했다.제목 그대로 "모니터가 꺼지고 그래픽 카드의 팬이 최고 속도로 도는 현상".메인보드에 물려놓은 서브 모니터도 정신을 차리지 못하는 것이 아닌가.현상의 정확한 원인은 알 수 없었지만 DirectX 응용프로그램 등을 통한 GPU의 연산 부하가 원인인 듯싶었다.왜냐하면 일반적인 브라우징 등은 문제가 없었지만 게임 같은 걸 켜면 억 하고 죽었기 때문이다.일단 해당 증상이 발생할 때 메인보드에 물려놓은 서브모니터도 문제가 발생하지만,일부 케이스에선 OS가 죽지 않고 내장 그래픽으로 바꾸는 등의 복구작업을 성공적으로 수행한 케이스도 있었다.따라서 그래픽카드와의 연결이 끊어져 해당 증상이 나타난다고 결론지었다. 아래는 유튜브에서 찾은 동일한 증상을 촬영한 영상이다...
[Node.js] Python으로부터 넘어오다
·
Study/Javascript
내가 discord.py의 기능을 온전히 활용하지 못한 탓도 있겠지만, discord.js는 보다 작성하기 용이하고 유지관리도 쉬울 것이라는 생각이 들었다. 해 보니까 진작 이거로 했어야지 싶다. 물론 예전엔 js가 머리에 접수가 안 돼서 도망친 것이지만... 일단 discord.js에서 제공하는 스타팅 가이드와 문서로 돌아가는 방식을 파악했다. 문서가 최신화가 잘 되는 듯 해 만족스럽다. 그리고 dicord.js로 개발한, 어느정도 틀이 잡혀있는 템플릿 봇을 구했다. discord.py는 정말 핑퐁 하나만 달랑 있는 봇에서 기능을 다 올린 것이기도 하고, 계획이 없었기 때문에 중구난방이었다. 마치 언리얼 엔진과 유니티 엔진의 차이와 유사하게 느껴진다. 여하튼 템플릿 봇의 코드를 뜯어보며 테스트 용으로 ..