728x90

서버 77

24.05.07 나만무

나만무EC2 서버와 RDS DB 연결하기EC2는 public / RDS는 private 인스턴스로 생성했다. - 보안 상의 이유단순히 EC2 터미널에 접속해서 mysql 서버를 여는 건 성공했다.mysql -u [계정] -p -h [DB엔드포인트] → 이 명령어 쓰면 연결된다.문제 : 우리는 로컬에서 작업을 해야한다. 로컬 작성 → 깃허브 업로드 → EC2 실행1차 해결 : vs code에서 ssh 연결로 vs code에서 제공하는 UI로 테이블 작성 등이 가능해졌다.문제 발생 : 결국 node.js 코드에서 CRUD를 하려면 mysql.connection에 성공해야한다. 이걸 어떻게 하냐2차 해결 : 결국 RDS가 private에 있기 때문에 로컬 서버에서 연결하기는 불가능하다. gitHub Actio..

나만무 슬레이어즈7

나만무중간발표클라이언트 - 서버 host 방식으로 시연을 하고 코치님에게 피드백을 받았다.호스트 방식은 반응성이 떨어질 수 있기 때문에 레이싱에는 적합하지 않다.기존처럼 하나의 서버를 두고, 키 입력(위치, 속도, 가속도(방향))을 동기화 해라때문에 클라이언트 - 서버 host 방식에서 기존의 클라이언트 - 서버 방식으로 재 변경하였다. 서버 쪽도 SendToHost() 등 호스트 방식을 위해서 추가했던 코드를 전부 삭제했다.클라이언트 측과 프로토콜 재정의 후, 형식에 맞게 함수와 패킷 구조등을 수정했다.Packet의 멤버 변수 id → from으로 변경했다.KeyPacket에서 key → position, velocity, acceleration, time을 전달하게 변경했다.서버 쪽에서 클라이언트의 ..

Study/Project 2024.05.03

24.04.28 나만무

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

나만무 슬레이어즈 4

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

Study/Project 2024.04.30

나만무 슬레이어즈 3

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

Study/Project 2024.04.30

AWS 강연

AWS 글로벌 인프라 AWS 글로벌 인프라 빌딩 블록 리전 가장 큰 틀. 지리적 영역 내에서 격리되고, 물리적으로 분리된 최소 AZ로 구성된다. 가용영역, AZ AWS 리전 내 중복 전력, 네트워킹 및 연결성이 제공되는 하나 이상의 개별 데이터 센터로 구성 여러 개의 데이터 센터로 묶여있는 클러스터 AWS 리전 설계/디자인 AWS 리전은 고가용서으 높은 확장성 및 높은 내결함성을 위해 복수개의 가용영역(AZ)으로 구성된다. 애플리케이션과 데이터는 실시간으로 서로 다른 AZ로 실시간 복제 및 배포되어 고가용성 및 내결함성을 유지한다. AWS VPC VPC 개요 Virtual Private Cloud 사용자가 정의한, 논리적으로 격리된 가성의 프라입빗 네트워크 환경 가상 네트워크 제어 기능 IP 주소 범위,..

KraftonJungle 2024.04.18

서버 개발기 5

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

Study/Project 2024.04.17

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 함수를 사용해주고, 새로 생긴 오브젝트들이 스크롤뷰로 차례대로 정..

서버 개발기 4

서버 개발기4 회원가입을 구현하고 회원가입의 예외처리를 구현했다. 예외처리 목록 비밀번호가 다를 때 중복된 닉네임이 존재할 때 중복된 아이디가 존재할 때 이에 경우에는 그에 맞는 panel이 띄워지게 코드를 작성했다. 비밀번호 확인은 유니티 클라이언트에서 처리했고, 회원가입 부분에서는 닉네임 아이디를 검사하고 문제가 없다면 회원가입을 진행했다. 각 확인 시 문제가 있다면 send() 함수를 통해서 클라이언트에 메시지를 보내고, 그에 맞는 panel이 띄워지게 하고, 성공했을 때는 0을 보내서 성공 panel이 뜨게 끔 코드를 작성했다. 문제 다른 숫자를 send해도 클라이언트쪽에서는 1만 수신 받았다. 무슨 문제인지 숫자를 바꿔보기도 하고, 다른 여러 방법을 사용했는데도 계속 1만 수신 받는 문제가 있었..

Study/Project 2024.04.17

24.04.15 서버 개발기

서버 개발기 일단 구동을 시켜야 하기에 간단하게라도 만들어보고자 생각을 했다. 아이디어 아이디와 비밀번호 사이에 구분자를 추가해줘서 그것으로 구분하자. 성공적으로 서버에서 받는 것도 확인할 수 있었다. 이제 받은 데이터를 구분해줘야 한다. 구분자를 통해 split시키는 함수 중 strtok_s를 사용했다. 원래 strtok를 사용하려고 했는데, 더 안전한 것을 사용하라고 하기도 하고, strtok_s를 통해서면 id, pw만 받는 로그인에서 편할 것이라고 생각했다. ID, PW를 구분해주는 것을 완료했다. 여기서 또 다른 문제 LoginServer에서는 Login뿐만 아니라 Register도 처리 해줘야한다. 요청에 따른 다른 처리를 구현해야 한다. 기능에 따라 다른 메시지를 보내게 설계했다. 서버에서도..

728x90