Giter Club home page Giter Club logo

xtown's People

Contributors

abecid avatar ahnjinmo avatar brainini avatar hyewon0309 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

xtown's Issues

스티키노트 동기화

스티키 노트 동기화 할일

  • ownership interface 구현
  • rect transform 동기화
  • text 동기화
  • 플레이어가 scene을 나갈 때 object의 persistence 구현

ownership interface

  1. photon view를 붙인다. ownership을 인스펙터에서 fixed -> request 또는 takeover로 바꾼다.

  2. script로 IPunOwnershipCallbacks를 구현하고, OnOwnershipRequest와 OnOwnershipTransfered등
    인터페이스가 요구하는 메소드들을 채워넣는다.

  3. IPunOwnershipCallbacks를 받기 위해서는, OnEnable 과 OnDisable에서 적절한 listener 등록해주어야 함.
    void OnEnable()
    {
    PhotonNetwork.AddCallbackTarget(this);
    }

void OnDisable()
{
PhotonNetwork.RemoveCallbackTarget(this);
}

  1. 플레이어가 disconnect시에
    image
    이거 구현. PhotonNetwork.CurrentRoom.AutoCleanUp == false로 설정!!!
    https://doc.photonengine.com/zh-cn/pun/current/pungameplay/ownershipandcontrol#takeover
    기획따라 위의 페이지에서 Hard Disconnect시의 동작을 수정

클라이언트(아바타) - 아바타 표정 구현

목적

우주복 모델 헬멧 부분에 표정이 나오도록 구현

작업 상세 내용

  • 표정별 texture baking
  • 입력키(미정)에 따라 헬멧에 보이는 표정 변경

참고 사항

  • 모델은 헬멧, 몸, 신발, 장갑과 가방(?)으로 나누어져 있습니다. 아래 사진처럼 표정을 표현하려면 모델을 직접 편집하여 texture를 생성하고, unity에서 이를 별도의 material로 묶어주면 구현이 가능할 것 같습니다.
    helmet_uv
  • 진홍님께서 만들어주신 자료 (https://www.notion.so/2021sprinter/7fbeebb0e35b4d138505541a4faa9cb5)

네트워크 - mainroom을 photon lobby에서 photon room으로 바꾸기

목적

현재 lobby로 지정되 있는 mainroom을 room으로 만들어보기!!

작업 상세 내용

  • 현재 Photon 개념에서 lobby로 지정되 있는 mainroom을 room으로 만들어서 mainroom에서부터 player간 소통이 가능하게 하기

  • PlayerTtl, EmptyRoomTtl을 설정해서 Portal타고 Back to Lobby 눌렀을 때 rejoin함수를 실행해서 새로 random한 방을 찾게하는 과정을 줄이자.

  • customproperty에 연결된 scene이름을 적어서 portal에서 filtering

Character Controls

목적

  • Character Controller
    input 을 받아 캐릭터가 움직이고 방향을 바꿀 수 있도록 함.
    input은 new input system을 사용함
    move와 look 뿐만 아니라 sprint, jump 도 구현하고,
    추가 액션들을 간편하게 구현할 수 있는 확장성을 지향함.
  • Virtual Camera
    powered by Cinemachine
    캐릭터를 따라다니고, 캐릭터 시선방향과 cursor input에따라
    보는 방향을 바꿈
    상황에따라 다른 virtual camera 로 점프할 수 있도록 확장성!

작업 상세 내용

  • Controller
    StarterAssets> Third Person Controller > scripts >
    ThirdPersonController.cs

  • inputs
    StarterAssets> InputSystem > StarterAssetsInputs.cs

참고 사항

  • 이 문서의 comment 참고
  • avatar branch에서 avatar controller branch를 따서 해당 브랜치에서 작업하였음
  • 관련 코드를 수정한 사람은 반드시 자신을 Assignee 에 추가 바람

2021.12.10 (금) _ 휴회기간 과제 준비

현재 상황

  • 휴회기간 : 12/6~1/2 -> 1월 3일에 휴회 후 첫 세션
  • 기말고사 마무리 되는 시점인 12/20에 과제 공지 예정
  • 팀별 멀티플레이어 게임 미니 프로젝트 진행 제안함 (by 태구)
  • 12/20에 메인 프로젝트 팀빌딩도 동시 진행 예정.

논의 사항

해야 할 일

  • 논의 후 결정

클라이언트 - 스티키노트 추가 수정사항

수정할 사항

  • 스티키노트 뒷면에 마우스 댈 때 컨트롤러가 나타나지 않는 문제 수정
  • 배경 색 변경
  • 스티키노트 생성 높이 낮게 수정

추가할 사항

  • 내용 클립보드에 복사 및 txt export 기능 추가

클라이언트(아바타) - 감정표현 기능 추가

목적

감정표현 기능(2D) 추가

작업 상세 내용

  • T 키에 바인딩
  • 사용할 감정 표현 이미지 4가지 결정
  • 감정 표현 기능 추가

회의 내용

  • T 키에 바인딩
  • 감정 표현 종류는 4가지로 결정 (3D 애니메이션 추가하면 2D 감정표현의 경우에는 많이 사용되지 않을 것으로 판단)
  • 기존의 감정표현 기능과 같이 2D 이미지를 사용하기로 결정

참고 자료

  • 감정 표현 UI 참고 예시
    image
  • 감정 표현 기능 구현 예시 (플레이어 머리 위에 띄울 예정)
    image

공간을 scene으로 분할하는 건

Scene 분할 관련

저희가 photon을 멀티플레이어 엔진으로 사용하는 것으로 정해졌고,
이에 학회 월드 공간을 scene들로 나눠 어떻게 포털로 연결할지 기획해야 할 단계에 있습니다.

전체 월드 내에서 "logical"한 공간별로 Scene을 분리할 것인가
(예: 건물내부와 외부가 다른 scene, 건물 들어갈때 scene로드)

아니면 전체 공간을 하나의 scene으로 할 것인가

를 결정해야 합니다.

포탈을 만드는 등 다음 단계로 가는데에 중요한 결정일 거 같습니다. 댓글을 통해 귀한 의견 많이많이 적어주시길 부탁드립니다!!! 아래에는 제가 지금 생각해본 장단점을 적었습니다만, 제가 놓친 부분이나 잘못 생각하고 있는 것 같은 부분은 놓치지 말고 지적 부탁드립니다.

장점

  1. modularity-> 확장성에 좋다
  2. 각 Scene별로 photon 제한인원이 적용되므로,
    전체 월드가 한 scene이라면 전체월드에 20명밖에 못들어가지만,
    월드 안의 각 논리적 공간마다 scene이 별도로 있으면 각 공간에 20명씩 들어갈 수 있다.
  3. scene이 크면, 카메라가 많은 것들을 렌더링 하려고 하기 때문에 computation이 쓸데없이 많이 이루어질 수 있다. occulusion culling같은거로 해결해보면 성능 문제가 없길 바라는 수밖에 없다. 작은 씬들로 구현하면 이걸 쉽게 해결한다.

단점

  1. 게임이 씬 로딩시에 잠깐잠깐 끊긴다.
  2. scene사이에 이동할때마다 photon에서 room을 바꿔주면, consistency문제가 있을 수 있다(예컨대 방에 최대 5명이 들어간간다고 하고, a,b,c,d,e가 한 방에 있다가 a가 잠깐 바깥으로 나갔다. a가 다시 들어가려고 하는데 b,c,d,e가 있던 방에 f가 들어가서 5명이 채워져서 a가 못들어감) 이런것들을 서버단에서 고려해줘야 한다.
  3. room 에 join, leave하는 overload가 커진다.

네트워크 - Text Chat 수정 및 논의 사항_순규님

UI팀 기능 명세서에 따른 구현

IMG_3170

  • 위 이미지와 같이 UI요소 구현
  • UI팀이 직접 깃과 유니티를 이용해서 디자인 시스템을 입힐 예정이므로 최대한 기능명세서에 나와 있는대로 요소들을 구현하면 좋음. 다만, 현재까지 개발적으로 구현된 사항에 한해 구현할 것!!! 기능 명세서나 요소들에 지금 당장 개발적으로 구현이 힘든 요소들이 있으면 해당 사항은 미뤄놓고, 대신 피그마나 다른 문서에 표시해주면 좋을 것 같습니다.

더블클릭 update문 확인

  • 만약에 더블클릭을 무조건 update에서 클릭을 tracking 하는 개념으로 들어가면 리소스가 너무 많이 들어가므로 클릭으로만 하는 것도 고려할 필요 있음.

유저 tracking

  • update를 사용하는 것이 아니라 OnRoomJoined(), OnRoomLeft() 같은 Photon Callback 함수를 이용해서 RPC나 RaiseEvent로 처리하는 것이 좋아보임!!

클라이언트 - 아바타 의자 상호작용

목적

아바타가 의자에 앉는 행동 구현하기

작업 상세 내용

  • 의자가 없을 때, 앉는 모션이 발생하지 않게 수정
  • XTown 회의실 의자에 제대로 앉을 수 있게 조정

아바타 커스터마이징 동기화

현재 상황

  • dev 브랜치에 아바타의 각 부분 material base color 바꾸는 코드가 들어가 있음
  • 아직 동기화는 안되는 상황

목표

  • 다른 플레이어들이 내가 커스터마이징한 아바타의 모습을 볼 수 있도록 동기화
  • 추후 커스터마이징 요소가 추가될 것을 고려하여 확장성있는 설계

private 챗

baseline chat에 private chat기능을 더했습니다

디자인 - NPC 오브젝트 추가 관련 개발사항

목적

월드 내 NPC 오브젝트 추가.

작업 상세 내용

  • NPC 오브젝트의 Idle animation 추가
  • NPC 오브젝트 인터렉션 시 말풍선 추가

참고 사항

  • 구글 드라이브에 fbx 파일 2/11 중 업로드 예정입니다.

2021.12.10 (금) _ chat ui 디스플레이 안되는 bug

PhotonChat: #10

[issue]
화면 비율이 바뀌었을 때 chat ui가 제대로 표시되지 않고 빨간 x로 표시되는 문제가 있습니다.

[potential causes]
어떨 때 발생한 다 외에 아직 원인은 찾지 못했으나 anchor와 offset으로 정의된 ui element들이 화면 비율이 바뀌면
parent canvas 영역에서 벗어나 디스플레이 되지 않는 것 같습니다.

[how to reproduce]
게임 플레이 버튼 클릭 후 게임 window 비율 변경 -> inspector view로 돌아가보면 ui element들이 빨간 x로 바뀐 것 확인가능

[comments]
UI 팀에서 검토 부탁드립니다.

클라이언트(미니 컨텐츠 팀)- PocketBall 게임 완성하기 (1/3)

현재 상황

  • [현재 포켓볼 다이, 공, 그리고 물리 법칙이 잘 적용되어있는 상태임. test를 위해, 흰공을 클릭했을 때 (1,0,0) 방향으로 힘을 받도록 적용이 되어있음.]

해야 할 일

  • [PocketBall 게임 코드 이해하기. (김민석에게 마구마구 질문!!!) 흰 공을 클릭했을 때, 카메라가 바라보는 방향으로 힘을 받도록 설정하기.] -------------- due: 1/12(수)

클라이언트(미니 콘텐츠 팀) - 마무리

2.15화까지 완성

서연

  • 워프 구현
  • 세이브포인트 구현
  • 돔 구현 -> 돔은 단색 배경으로 구현 예정

지희

  • 플레이어 아바타 스폰, 점수 계산 완성
  • UI 수정 및 개선: 플레이어 화면(현재 코인, 점수에서 -> 시간, 현재점수, 코인), 클리어 시 최종 점수 표시, 게임 종료 버튼

photon계정 sharing 관련

photon app 이 한번 만들면 끝인게 아니라,
chat server 넣으려면 또 별도의 app을 만들어서
프로젝트 안에서는 그 app id로 server에 접속하는 것 같더라고요!

그래서 photon app추가를 자유롭게 할 수 있도록
photon 계정 공유하면 어떨까 싶습니다.

제가 생각하기엔 지금 photon은 이미 개인 메일로 되어 있어 어쩔 수 없지만
앞으로는 공동으로 쓸 수 있는 gmail 파고 pw도
기본 pw + otp 형식으로 기업에서 하는 것처럼 따라하는 것도
괜찮을 것 같은데 어떠신가요?

클라이언트 (생산성 도구 팀)- 스티키노트 구현

현재 상황

  • [ 시계 구현과 병행하여 스티키 노트 구현을 시작]

계획

  • [스티키 노트 1차 베이스라인 구현 전, 각자가 생각하는 스티키노트의 형태와 구현 방식 기록 ]
  • [1차 베이스라인 구현 후 회의를 통해 각 베이스라인 확인해보며 피드백 / 스티키노트 개발 방향 구체화 예정]

2021.12.16 (목) _ 휴회기간 과제준비(서버팀)

현재 상황

  • 휴회기간 : 12/6~1/2 -> 1월 3일에 휴회 후 첫 세션
  • 기말고사 마무리 되는 시점인 12/20에 과제 공지 예정
  • 팀별 멀티플레이어 게임 미니 프로젝트 진행 제안함 (by 태구)
  • 12/20에 메인 프로젝트 팀빌딩도 동시 진행 예정.

논의 사항

  • 과제 보충 및 제안 요청

해야 할 일

  • 각 팀 별 과제 확정 (~12/17)

클라이언트-미니맵 UI 만들기

해야 할 일

image

image

image

위와 같은 기능 구현 리서치.
태구 님이 world branch bug fix 하셔서 merge 하시면 그 branch 따서 구현 해보는 걸로 결정

ColdFix: 야추 멀티플레이 로직 롤백

목적

야추 멀티플레이 로직이 로비 로직과 충돌하여 야추에서 멀티플레이 로직 삭제,
포털도 삭제하여 새로 Scene연결 작업 필요.
앞으로 멀티플레이 로직 작업은 issue 판대로 client팀과 server팀 협업으로 진행 예정.

서버 - Photon 네트워킹 상태 표시 및 진단

목적

Photon network의 동작 상태에 대한 메시지 표시
Photon network가 정상적으로 동작하지 않을 때 error 메시지 표시 및 로깅
-> 유저가 네트워크 상태에 대한 정보를 받을 수 있도록 하고,
wifi 불량등의 문제로 튕겨 disconnect되었을 때 알 수 있도록 메시지 표시함.

작업 상세 내용

  • loading screen
  • disconnect 시 메시지 표시 및 로깅
    ---- optional 추가 작업 ----
  • disconnect 시 자동으로 재접속 시도

클라이언트(미니 컨텐츠 팀) - 공에 힘을 가하는 부분, 힘 조절 UI

해야 할 일

  • 다음 주 issue

    • 다음 주(or 그 다음 주까지)까지는 제가 top-down으로 정한 주제에 대해 구현을 해보려고 합니다.
    1. 공의 어떤 부분을 때릴 것인지 조절하는 기능 및 UI 구현.(위 링크 유튜브 영상의 빨간 점을 생각하시면 됩니다.) → 실제로 그 부분에 힘이 가해지도록.
    2. 마우스를 누르고 있는 동안 파워 충전 (ex. 조금 누르면 1 ~ 많이 누르면 100) 하여 힘 조절 구현. 그와 동시에 얼만큼 눌렀는지 UI 구현하기. (아니면 마우스를 두 번 눌러서 파워를 결정하는 방법도 좋을 것 같습니다!!)
    • 예시 이미지

    골프 게임에서 많이 나오는 오른쪽 UI. 혹시 팡야 골프 아시는 분 계신가요 ㅋㅋ

    골프 게임에서 많이 나오는 오른쪽 UI. 혹시 팡야 골프 아시는 분 계신가요 ㅋㅋ

    • p.s. 큐대는 다음 주에 구현해볼까 합니다!

클라이언트(미니 콘텐츠 팀)- 지난 주차 issue 마무리, 당구 큐대, Event 별 UI 구현

해야 할 일

  • 3주차 issue
    • 2주차 issue에서 못한 것 마무리 하기.
    • 당구 큐대 구현하기
    • Event 별 effect, UI 만들기 (GameOver, 턴 넘겨짐, 공 넣었을 때 등)
  • 앞으로 더 해야 할 것
    • 카메라 추가하여 자연스럽게 만들기
      • 칠 때는 기존의 카메라를 사용하되, 치고 난 다음에는 전체적인 당구대의 모습이 보이도록 할 것.
      • 추가하고 싶은 내용 회의에서 받기
    • 흰 공이 들어갔을 때 상대 팀이 흰 공 놓을 위치 선정하는 UI 구현(포켓볼 규칙 참고)

서버 - Text chat

목적

텍스트 채팅

로드맵

  • 개발팀 기능 기획
  • UI팀기획
  • 기획 피드백, 확정
  • 코딩
  • 테스트

클라이언트(생산성 도구 팀)- 유니티 시계 구현

현재 상황

  • [유니티 시계 베이스라인 제작 튜토리얼을 공유하였으며, 기본 베이스라인 구현과 함께 각자 원하는 추가 기능 (ex. 알람)을 더하여 과제 제출 예정 ]

해야 할 일

  • [과제 수합 이후 각자 구현해온 기능에 대한 피드백 / 실행 시 오류 여부 확인 ]

참고자료

  • [https://youtu.be/_jqWxUFbNrg]
  • [https://youtu.be/pbTysQw-WNs]

서버, 클라이언트 - #31 Yacht Dice 2Players

목적

multiplayer 모드 추가

작업 상세 내용

  • 순서 주고받는 로직 (Turns manager)
  • 멀티 모드에서 score board 상대방 점수 추가
  • 컵 동기화
  • 자기 순서에 맞게 control을 넘겨주는 로직
  • 주사위 동기화
  • 주사위 던진 결과 정보 주고받는 인터페이스 구현
  • Strategy 선택 결과 정보 주고받는 인터페이스 구현
  • 둘의 점수 비교, 승자 판별 로직 (진홍님께 부탁..)
  • 플레이어 두명만 받도록 방 join 로직
  • xTown 프로젝트에 붙이기

클라이언트(아바타) - 아바타 커스터마이징 기능 구현

목적

아바타 커스터마이징 기능구현

작업 상세 내용

  • 아바타 모습 확인 구역
  • 커스터마이징 설정 구역 & 버튼
  • 카메라 줌인 & 이동
  • 카메라 리셋 버튼 (+)

참고 사항

image

기본적인 chat 구현

baseline 챗 사용방법

  1. play버튼 눌러 UI가 맞게 디스플레이되는지 확인 (화면 비율에 따라 UI가 표시 안되는 경우도 있음. 이럴땐 dont destroy on load> chatManager > canvas > chatpanel의 사이즈를 변경하면 보이긴 하나 근본적으로는 ui팀에서 문제를 확인해 줬으면 좋겠음.

  2. 기본채널은 Default임. debug console에서 채널 이름 확인!

  3. 메시지 보내려면 메시지 입력후 send button클릭 또는 enter

  4. 새로운 채널에 subscribe하려면 \subscribe <채널이름> 입력
    지금은 채널 이름 입력하면 그 채널이 새로 만들어짐.

  5. 다른 채널로 이동하려면 \join <채널 이름!> 입력. 그러면 그 채널에 쌓인 메시지들이 쭉 보임(스크롤바 이용해서 위의 메시지들 확인 가능)

  6. how to change id: chatManager inspector에서 UserID 원하는대로 변경

  7. 현재 send to... 필드를 통한 private message는 지원하지 않으나 곧 추가예정

표준화작업_ 디렉토리 정리

목표:
프로젝트 directory를 어떻게 정리하고 관리할지 논의

  1. 외부 에셋을 어느 폴더에 관리할지
  2. Scene마다 폴더를 따로 둘지, 둔다면 각 scene의 폴더 구조는 어떻게 되어야 하는지
  3. 기능단위로 폴더를 따로 둘지, 둔다면 각 기능의 폴더 구조는 어떻게 되어야 하는지

를 논의해 보았으면 좋겠습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.