728x90

크래프톤 129

나만무 슬레이어즈 4

나만무순환참조 문제InGameServer.js의 broadcast()를 ProtocolHandler.js에서 사용하기 위해 InGameServer를 import했는데, InGameServer에서 이미 ProtocolHandler를 참조(import)하고 있었기에 순환 참조 문제가 발생했다.broadcast() 함수를 ProtocolHandler로 옮겨서 해결했다.코드 아키텍쳐 설계의 중요성을 다시 한 번 알게됐다.변수 수정 문제유저를 id로 관리할 때, 기존에는 간단하게 구현했었다.sockets의 size를 id 삼아서 사용했었는데, 이를 id를 랜덤으로 생성하도록 변경한 후, 이 부분을 다시 변경해주지 않아서 문제가 발생했다.변수를 잘못 사용하던 부분을 수정하여 해결했다.협업 문제클라이언트와 소통하는 ..

Study/Project 2024.04.30

24.04.27 나만무

나만무멀티접속 구현, 동기화 x멀티 접속까지는 구현에 성공했다.같은 씬 안에 들어온 다른 캐릭터가 구현이 됐지만, 현재 같은 플레이어 이동 스크립트를 가지고 있기 때문에, 내 캐릭터를 움직이면 이 멀티 캐릭터도 움직이는 문제가 발생했다.이 부분은 프리팹에서 스크립트를 제거해주고, 움직임을 동기화하는 방법으로 해결하면 될 것같다.Node.jsclass함수는 기능을 포장하는 기술이라면 클래스는 그렇게 만들어진 변수와 함수 중 연관있는 변수와 함수를 선별해 포장하는 기술이다. 포장하는 이유는 객체 단위로 코드를 그룹화하고 재사용하기 위함이다.기능에 국한된 것이 아니라 특정한 개체를 만드는 용도로도 사용될 수 있으며, 이 클래스를 이용해서 객체를 실체화하는 것을 인스턴스화라고 한다.costructor클래스의 인..

나만무 슬레이어즈 3

나만무Buffer issue다른 플레이어가 접속했을 때, 33번 프로토콜을 전송했는데, 이상한 프로토콜을 받아오는 문제가 있었다.보내고 받을 때, 비슷한 형식의 코드를 쓰고 있었기 때문에 코드에 문제점은 없었고, 실제로 console.log를 찍어봤을 때에도 문제가 없었다.유니티에서 스트림이 쌓여 있을 때, ReceiveData() 함수를 실행한다.이것을 보고 혹시 버퍼의 다른 값이 들어가 있어서 새로운 값이 들어 왔을 때, 버퍼가 합쳐지면서 값이 달라졌을 것이라고 생각했다.서버쪽의 코드를 확인해보았는데, 확인용으로 써놨던 broadcast(”newPlayer”,socket) 함수가 있었고, 클라이언트 쪽에서는 이 부분이 프로토콜이 없다보니 읽지 않아서 스트림에서 빠져나가지 않고, 차있는 상태였다. 그래..

Study/Project 2024.04.30

나만무 슬레이어즈 2

나만무멀티접속 구현, 동기화 x멀티 접속까지는 구현에 성공했다.같은 씬 안에 들어온 다른 캐릭터가 구현이 됐지만, 현재 같은 플레이어 이동 스크립트를 가지고 있기 때문에, 내 캐릭터를 움직이면 이 멀티 캐릭터도 움직이는 문제가 발생했다.이 부분은 프리팹에서 스크립트를 제거해주고, 움직임을 동기화하는 방법으로 해결하면 될 것같다.

Study/Project 2024.04.30

24.04.25 최종 기획

최종 기획드디어 최종 기획 발표가 끝났다.지금까지의 기획 발표는 코치님들 앞에서 하는 기획 발표였는데, 이번에는 원장님도 참여한 기획 발표였다. 지금까지 원장님이 게임을 엄청 반대하신다고 들었다. 게임을 너무 좋아하시는 만큼 게임에 대해 가볍게 생각하고 접근하는 것을 싫어하시고, 사실 이 짧은 기간동안 완성도 있는 게임을 개발하는게 당연 어려운일이기 때문에 그것에 대해서는 이상하게 생각하지는 않았다.물론 생각이 이런거지 무척 긴장되고, 무서웠다.반려 당하면 또 기획하면 되지라는 생각은 항상 있지만, 사람이라는게 기계가 아닌 이상 지치게 되고, 내 마음 한켠에서도 이럴거면 그냥 웹이나 다른거 할걸 이라는 생각이 나올 수 있다고 생각해서 걱정이 됐다. 아마 우리 팀 모두 같은 생각을 했을 것 같다.특히 발표..

24.04.23 3차 기획 발표

3차 기획 발표해냈다~ 해냈어~어제 새벽 아니네 오늘이네 오늘 새벽까지 진행했던 기획을 발표하는 시간을 또 가졌다.사실 나도 그렇고 우리 팀 또한 불안했을거다. 아니면 강심장…아무튼 애써 불안함을 숨기며 이번에도 반려되면 또 기획하면 되지!! 라는 생각과 말을 하며 불안함을 숨겼다.우리 팀장이 발표를 마치고 코치님이 기획 아이디어에 대해서 말씀을 해주셨는데, 둘 다 좋은데 어제 우리가 하나부터 열까지 기획한 3D 멀티 테트리스가 참신하고 더 괜찮아 보인다고 말씀을 해주셨다.대박승리했다이겼어!!!!!!코치님은 아마 레퍼런스가 많이 없고, 뷰포트 관련이 어려울 것이라 말씀하셨지만 그래도 우리가 아이디어를 짜내고 기획을 한것이기 때문에 열심히 하고 잘 할것이라고 생각한다.야호!!

24.04.22 2차 기획발표

2차 기획발표 반려 당했다. 흑흑 두 개의 아이 지구침공과 캐치 크라운이라는 기획을 가져갔고, 혹평을 받고 반려 당했다. 처음에는 이해되는 부분과 이해 안되는 부분이 있었지만, 다시 기획에 대해서 곰곰이 생각하고 구멍들을 찾아보니 다 이해가 되면서 아 이런 이런게 정말 중요하고 우리가 이런 부분을 놓치고 있었구나 라는 생각이 들었다. 그 뒤로 부터는 무한 기획 회의에 들어갔다. 기획을 하면서 여러 아이디어가 나오고 이 기획의 기술적 챌린지나 코치님들이 바라봤을 때 어떨지 등등 여러가지를 생각하며 기획 회의를 했고, 여러가지 중 두 가지의 기획안을 완성했다. 첫 번째는 원래 캐치 크라운과 폴가이즈 그리고 코치님의 조연을 야무지게 버무린 슬레이어즈라고 하는 썰매 레이싱 게임을 기획했다. 두 번째는 멀티 3d..

24.04.19 C++

C++ C++ 입출력 성능 향상 ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); c++에서 ios::sync_with_stdio, cin.tie, cout.tie를 사용하는 주된 이유는 입출력 성능을 향상시키기 위해서 이다. ios::sync_with_stdio(false); 이 함수는 c++ 표준 입출력 스트림(cin, cout)과 c 표준 입출력 버퍼(stdin, stdout)의 동기화를 해제한다. 기본적으로 c++ 표준 입출력은 c의 표준 입출력과 동기화되어 있어서 입출력 작업 시 버퍼를 공유하고 동기화하는 과정에서 오버헤드가 발생한다. ios::sync_with_stdio(false);를 호출하면 c++과 c의 입출력 버퍼가 분리되어 동기..

24.04.17 서버 개발기, git readme 작성

서버 개발기 어제 제대로 정리 못한것을 정리하면서 시작해보자. 일단 게임씬으로 이동 후 게시판 post를 만들어야 했다. 클라이언트의 대부분은 치타단 동료 뿌추님이 만들어줬기 때문에 서버, db연동만 하면 됐다. 포스트 ui에 title, author, content를 입력하고 post버튼을 누르면 db에 전송이 되게 만들었다. 그에 따라서 db에 post라는 테이블을 만들고 후에 만들 댓글을 위해서 id를 primary key, 그리고 comment의 id를 foreign key로 지정했다. 이제 이 보드와 상호작용을 하면 지금까지 post한 게시글들을 불러와서 보여주어야 했다. 동적생성을 사용하기 위해서 unity instantiate 함수를 사용해주고, 새로 생긴 오브젝트들이 스크롤뷰로 차례대로 정..

728x90