728x90

정글 128

24.05.14 나만무

나만무매치메이킹을 간단하게나마 구현했다.플레이어가 매치메이킹 버튼을 클릭하면 서버에서 매칭을 진행하게 된다.매칭을 준비하고 있는 방이 있다면 그 방에 플레이어를 넣어주게 되고, 방이 없다면 방을 생성해준다.그리고 일정 인원 (현재 5명)이 차거나 아니면 20초가 지나게 된다면 서버가 클라이언트에게 같이 게임하는 인원들의 정보를 주고, 게임을 매칭 결과창을 보여준다. 그 후 5초 뒤에 게임으로 이동하게 된다.게임에 들어가면 아까 받아온 같이 게임을 하는 인원들의 정보를 통해 플레이어들을 그려주게 된다.어려웠던 점어떻게 정보를 넘겨 줘야 할지, 그 정보를 어떤 오브젝트가 들고 있어야 할지 정하는 부분이 어려웠다.outgameserver가 가지고 있고, 그 부분을 worldmanager로 넘기는 형식으로 구현..

24.05.13 나만무

나만무socket.on 에서 setActive(true)가 안됐던 문제해결 : 털보도사님 쿠고랑 아저씨가 도와줬다.Unity에서 Socket.IO를 사용할 때 콜백 함수 내에서 Unity의 메인 스레드로 작업을 전달해야 한다. Socket.IO의 이벤트 처리가 별도의 스레드에서 실행되기 때문에 Unity의 메인 스레드에서 직접 Unity 관련 작업을 수행하면 안된다.Unity에서 UnityThread.executeInUpdate() 메서드를 사용하여 작업을 메인 스레드로 전달할 수 있다. 이 메서드는 전달된 작업을 Unity의 업데이트 루프에서 실행되도록 예약한다.Debug.log의 경우 로깅 시스템을 사용하는 메서드로, 실제로 메인 스레드에서 실행되지 않아도 된다고 한다. unity에서 debug.lo..

나만무 슬레이어즈 16

나만무setName 구현 완료문제 : 비동기로 코드가 진행되다 보니, DB에서 읽어오기 전에 아래 코드가 진행되어 값이 들어가지 않는 상황이 발생했다.async, await을 사용하여 문제를 해결했다.async function isUniqueName(name) { // 중복 없으면 true, 있으면 false await connection.query('SELECT * FROM User WHERE name = ?', [name], (err, rows) => { if (err) { logger.error('setUniqueName query error:', err); } if (rows.length === 0) { ..

Study/Project 2024.05.12

24.05.12 나만무

나만무setName 구현 완료문제 : 비동기로 코드가 진행되다 보니, DB에서 읽어오기 전에 아래 코드가 진행되어 값이 들어가지 않는 상황이 발생했다.async, await을 사용하여 문제를 해결했다.async function isUniqueName(name) { // 중복 없으면 true, 있으면 false await connection.query('SELECT * FROM User WHERE name = ?', [name], (err, rows) => { if (err) { logger.error('setUniqueName query error:', err); } if (rows.length === 0) { ..

나만무 슬레이어즈 15

나만무Matching 구현아직 미 구현이다.readyList에 매칭 입장한 유저를 저장하고, 현재는 2명의 유저가 모이면 대기실 출력에 필요한 정보 리스트를 전달한다.ReadyGame 이벤트를 위한 readyList와 userList의 구조 변경으로 매칭에도 영향이 간다.readyList = {userList : [], readyCount : 0} → readyList = {userList : new Map(), readyCout : 0}userList : new Map() ← 이 new Map이 문제일 것 같다. 그러나 userList.size === 2 조건문에 걸리기는 한다;; userList를 출력해봐야 알 것같다. 현재는 userList의 keyList가 출력되지 않는다.Google OAuth ..

Study/Project 2024.05.12

24.05.11 나만무

나만무Matching 구현아직 미 구현이다.readyList에 매칭 입장한 유저를 저장하고, 현재는 2명의 유저가 모이면 대기실 출력에 필요한 정보 리스트를 전달한다.ReadyGame 이벤트를 위한 readyList와 userList의 구조 변경으로 매칭에도 영향이 간다.readyList = {userList : [], readyCount : 0} → readyList = {userList : new Map(), readyCout : 0}userList : new Map() ← 이 new Map이 문제일 것 같다. 그러나 userList.size === 2 조건문에 걸리기는 한다;; userList를 출력해봐야 알 것같다. 현재는 userList의 keyList가 출력되지 않는다.Google OAuth ..

24.05.10 나만무

나만무두 브랜치에서 각각 서로 다른 인스턴스의 서버로 배포되도록 시스템을 구축했다.appspec.yml이 아닌 다른 이름으로 배포하면 appspec.yml을 찾지 못해 codedeploy에서 배포 실패가 됐다.여러 시도 끝에 아래와 같은 방법을 찾았다.appspec-auth.yml 을 빌드하는 순간 appspec.yml 라는 이름으로 동적 생성해 해결함name: Rename appspec filerun: mv ./appspec-auth.yml ./appspec.ymlGoogle OAuth 로그인 구현nuget을 이용해서 라이브러리를 다운 받아서 구현했다.로그인을 성공했을 때 오브젝트 setactive를 통해 화면 전환을 구현했다.로그인이 성공하면 서버에 email을 보내고 서버는 클라이언트에게 유저의 i..

24.05.09 나만무

나만무서버 속도 확인서버에서 패킷을 받아오고 처리하는 속도가 느릴수도 있겠다라는 의견이 있어서, 속도가 느리면 최적화를 해야하기 때문에 속도를 확인하는 과정을 거쳤다.처음에는 Date.now 를 사용해서 ms로 계산을 했는데, 1ms에서 0ms가 나오는 것을 확인했다.좀 더 정확한 측정을 위해서 ns 단위로 측정을 했다. ns 단위로 측정을 해보니 평균 300000ns 정도가 나왔다. ms로 치면 0.3ms가 나오는 것을 확인할 수 있었다. 나중에 DB랑 통신을 하다보면 더 느려질 수 있겠지만 일단은 서버 최적화는 아직은 건들지 않아도 괜찮겠다 라고 생각을 했다.Winston 사용, Log저장winston이라고 하는 라이브러리를 사용해서 서버에 로그를 처리하는 부분을 바꿨다.그리고 exception이나 ..

24.05.08 나만무

나만무트러블슈팅socket.io를 유니티 클라이언트와 연결하지 못 하고 있었다.처음에 app.listen을 사용해 서버를 열었다. 그러나 예제를 그대로 따라했음에도 유니티 클라이언트와 연결이 불가능했다.클라이언트의 문제 일 것이라고 생각을 하고, 여러 코드를 다 사용해봤지만 연결이 계속 되지 않았다. 그래서 서버와 클라이언트 둘 다 다른 사람의 깃을 복사해서 사용해보니 되는 것을 확인해서 하나씩 바꿔서 문제를 찾아보기 시작했다.app.listen()의 경우 Express 애플리케이션을 시작하는 메서드로서, HTTP 서버를 직접 생성하고 실행한다. 하지만 Socket.IO를 사용할 때는 http.createServer()로 생성한 HTTP 서버 인스턴스를 사용하여 Socket.IO 서버를 초기화 했어야 했..

나만무 슬레이어즈 11

나만무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..

Study/Project 2024.05.08
728x90