XREAL-SNU / xTown

XREAL의 메인프로젝트 XTown project
11 stars 11 forks source link

서버 - Text chat #42

Closed AliceOfSNU closed 2 years ago

AliceOfSNU commented 2 years ago

목적

텍스트 채팅

로드맵

  • [x] 개발팀 기능 기획
  • [x] UI팀기획
  • [x] 기획 피드백, 확정
  • [x] 코딩
  • [ ] 테스트
AliceOfSNU commented 2 years ago

김한준 idea

cloNoey commented 2 years ago

곽승연 addtional Idea

Room chat 과 World chat으로 구분

.

.

Canvas Hierarchy

Canvas . ㄴ Room Chat Panel . . . . ㄴ Default chat (*) . . . . ㄴ Room Subscriber List Button . ㄴ World Chat Panel . . . . ㄴ World Chat On/Off Button . . . . ㄴ Original ver Panel . . . . . . . . ㄴ (*) . . . . ㄴ Half ver Panel . . . . . . . . ㄴ ToOriginal Button ( := 확대 버튼) . . . . . . . . ㄴ Main Panel . . . . . . . . . . . . ㄴ ChattingRooms Info . . . . . . . . ㄴChat Room Panel . . . . . . . . . . . . ㄴDefault chat ()

.

(*) := 기본 채팅 View (**) := UI팀의 기능 명세서를 따르도록 함. 저번 회의에서 말했던 대로 구현. 아직 완전한 구체화 X.

.

추후 작업 내용

위의 아이디어 중 acceptable한 범위 내에서 해당 Canvas Hierarchy를 기반으로 Chat Canvas 구현.

Gyu1291 commented 2 years ago

1/12

두 가지 기능을 완성해보려고 합니다.

Gyu1291 commented 2 years ago

1/12

  • 내 채팅과 상대방의 채팅을 구분
  • 각 채널별로 올라오는 채팅을 말풍선 모양으로 띄우기 (Instantiate)

두 가지 기능을 완성해보려고 합니다.

사용자의 메시지 분류는 저번에 시도했던 것과 비슷한 방식으로 진행해 Public Chat, Private Chat에서 각각 분류를 성공했고 이와 함께 자잘한 오류가 나는 부분들을 수정했습니다.

이후로 시간이 많지 않고 생각보다 생각해 보아야 할 부분들이 꽤 있어 이를 말풍선으로 화면에 띄워주는 과정은 완료하지 못했습니다.

내일도 다른 일정을 비우고 계속 진행할 예정입니다.

해당 기능이 완성되면 Public Chat과 Private Chat은 완성되고 특정 인원만 가입해 대화하는 단톡방, 친구 초대 기능(UI 작업된 것을 보면 프로필 사진과 닉네임이 필요할 거 같은데 일단 Public Chat에서 목록을 받아와 띄워주는 정도로) 개발을 진행해보려고 합니다.

cloNoey commented 2 years ago

0112_1

22.01.11.에 구성한 Canvas Hierarchy를 바탕으로 Room에서 실행되는 chat먼저 구현을 시작해보았습니다. Room Chat에서는 현재 방에 들어와 있는(Subscribe한) 사람들의 목록을 볼 수 있게 하는 버튼을 구현하여, 버튼을 누르면 목록이 띄워지고 다시 누르면 사라지도록 하였습니다.

0112_2

현재 Room에 들어올 수 있는 정원이 10명이기에, 기본object를 UserInfo를 포함하는 10개의 clone을 버튼으로 구현하여 들어온 인원 수에 맞게 활성화/비활성화되도록 하였습니다. (아직, room subscriber의 정보를 받아 활성화 여부를 결정할 수 있는 작업을 진행하지는 않았음.) 해당 유저의 정보나, 해당 유저에게 private message를 보내는 등의 기능을 추가할 수 있도록 '버튼'으로 구현하였습니다.

0112_3

추가 Room에 접속한 Subscriber를 List로 저장하고, 그 정보를 읽어와서 UserInfo 버튼을 활성화/비활성화하고, 정보를 해당 버튼이 포함하도록 구현하려고 합니다. UserInfo 버튼을 눌렀을 때 발생할 수 있는 사항에 관하여 추가 사항에 대하여 논의한 후 추가하면 좋을 듯합니다.

할 일 오늘 진행된 회의 내용을 참고하여, World에서의 Chat 구현을 먼저 하는 것을 목표로 함. 오늘 진행한 작업은 잠시 멈춤. (World Chat에서의 기능 구현이 비슷하여 추후에 더 빠르게 작업을 진행할 수 있을 것으로 예상) UI팀의 자료를 바탕으로, 1) 캔버스 및 씬 구현 후, 2) 유저 정보, 3) chatting group의 정보, 4) chatting group의 유저 정보, 5) 기타(추후 결정) 순으로 World Chat 구현을 목표로 함.

cloNoey commented 2 years ago

[Chat] CreateRoom

UI팀의 기획서(pdf 13p)를 기반으로 <채팅방 만들기> View 구현을 첫 번째 과제로 삼고 작업을 진행했습니다.

220113 방에 들어온 임의의 유저 List를 Storage 스크립트에 저장해놓고, 해당 리스트를 CreateRoomManager에서 받아 기획한 UI대로 구현되도록 하였습니다.

할 일 오늘 진행한 작업은 아직 방 생성의 단계 이전이므로, 선택한(using Button) 유저와 입력 정보를 기반으로 새로운 채팅방을 구성할 수 있도록 할 예정입니다. 이후부터는 순규님 작업과 합치면 될 것 같습니다.

Gyu1291 commented 2 years ago

1/14

말풍선 구현이 좀 어려워 일단 유저를 직접 초대하는 채팅방부터 만들어보기로 했습니다. (승연님 UI도 마침 나온 덕분에)

현재 새 채널을 생성하고 특정 인원들을 해당 채널의 channel.Subscribers에 추가하는 코드를 작성했습니다. (특정 인원들 채널에 초대, 해당 채널로 메시지를 Publish하면 해당 유저들이 받게될 것)

또한 ChatChannel api를 아래와 같이 수정했습니다.

컴파일 에러는 나지 않는데 UI랑 코드가 따로 작성되고 있어서 한번 합쳐보고 돌아가는지 확인하는 시간을 가져보도록 하겠습니다.

Gyu1291 commented 2 years ago

그리고 지금 유저가 채널을 Subscribe하는 코드를 수정해 특정 룸에 들어갈 때는 제약을 주려고 하는데 초대받지 않은 유저가 특정 채널을 구독하고자 할 때 어떤 방식으로 구현할지 얘기해보면 좋을 것 같습니다. 일단 생각나는 것은

AliceOfSNU commented 2 years ago

말풍선 어려운만큼 일단은 간단하게 네모로 해도 괜찮을 것 같습니다. (Vertical layout group에서 ... 각 box의 height만 text양에 따라 - 자동 스케일... 그게 어렵네요 ㅋㅋㅋ)

set 개수는 count 아닐까요. 일단 코드 리뷰 해보겠습니다!

Gyu1291 commented 2 years ago

수정했습니다!