241121 TIL - oreno turn wk2 (5)

LIHA·약 14시간 전
0

내일배움캠프

목록 보기
117/117
post-thumbnail

뼈대잡기

오늘 할일

  • 레이저 포인터 구현

오늘 한일

  • 레이저 포인터 구현
  • 유저 노티 7

프로젝트 진행

cardData는 cardType type, int32 count로 이루어져 있다 - 근데 type이 repeated네!

키밸류로 잡아오고 수정하고 다루는게 Map이 훨씬 편할거 같아서 Map 객체로 써줬는데, repeated 타입은 배열이나 리스트만 다룰 수 있다고 한다. 그래서 눈물을 머금고 다시 변경...😭

VS Code에서 디버거를 돌려보고 싶은데 - launch.json 파일이 필요하다

오피셜 docs
참고 블로그


유저 업데이트 노티 이슈

노티는 모든 캐릭터의 정보를 다 쏴줘야 한다 - 무엇이 헷갈리는 걸까?

처음에 했던 생각

  1. 내 클라에 뿌려질 데이터는 내꺼만 공개되고 남껀 공개 안 돼야 할것
  2. 그러니 내 데이터는 다 공개되고 남의 데이터는 가려주는 식의 노티를 쏴주자

혼란의 시작

어라? 근데 이게 맞나? 노티인데 내 정보가 모두 까져있으면 내 정보가 handCard까지 다른 유저에게 공개되는 거 아닌가?

팀원들의 반응

그 노티의 내용이 나 자신에게만 보내지는 리퀘스트라면 상관없는데, 모두에게 뿌려지지 않나?
-> ??? 🤯🤯🤯🤯🤯🤯

혼돈의 브레인스토밍

내정보는 까고, 남정보는 가리자! 라는건 OK
-> 이게 리퀘에대한 리스폰스면 맞는데 이거 노티잖아?
-> 모두의 정보를 모두에게 뿌려준다...
-> ??? 🤯🤯🤯🤯🤯🤯

드디어 이해했다

내 로직은 카드사용자 정보를 남에게도 뿌려주는 식이라 남이 카드사용자 정보만 받고 자기 정보도 못받고 있는 로직이었음!

그래서 카드만 사용하면 온 방에 나의 상태가 모두 공개되는, 아주 후덜덜한 개인정보 팔이가 되고 있었다.

그렇다면 새 로직은 어떻게 짜야 하는가?

  1. useCard 핸들러가 돌아가면 카드 사용자에게는 카드사용 성공여부만 반환해주고, 대상 유저에게 미치는 효과는 노티로 쏴준다고 한다
  2. 대상 유저 효과가 바뀌어야 하기 때문에 UserUpdateNotification으로 가야하는건 맞다
  3. 대상 유저는 아마 hp, state, debuff, handCardCount 중에서 바뀔것이다
  4. 그러면 광역기는 거의 모두의 hp, state, debuff, handCardCount를 노티로 쏴줘야 할 것
    (난사같은 경우는 나는 빼고 맞아야 하니 나말고 나머지 유저를 불러와야 하겠고, 플리마켓 같은건 나까지 포함해서 불러와야 할것)
  5. 광역기가 아니라면 타겟유저는 hp, state, debuff, handCardCount가 가면 될거같다

-> 그러면 각 유저에게 자기 정보만 모두 공개되고 나머지 유저의 손패와 역할은 가려진 정보가 업데이트 되어야 한다
-> 그러면 로직은 노티가 각 유저별로 여러번 쏴져야 한다는 말이 된다.

  • 각각의 클라이언트가 자기정보만 다 까져있고 남의 정보는 가려진 상태인 패킷을 받아야 한다 -> 이해함
    -> 그러려면, 이 정보 주인과 수신자는 각 유저 자기 자신이 되어야 할것 같다 (한방에 모두에게 쏘는게 아니라)
    -> 그래서 노티 쏘는게 for문을 돌아야 할것 같은데?

튜터님 답변: 이 내용이 맞다!

지금까지 이해한 것 & 앞으로 구현 방향

-> 어차피 한방에 쏠수 있는게 아니었군!
-> 각 클라는 자기정보만 받아야 하니까,
-> 모두가 돌아가며 자기정보만 받는 for문이 생겨야 하겠군


동혁님의 조언 - 목적부터 생각하자. 이걸 왜 쓰지?

왜 쓰는지 알면 어떻게 쓰는지도 알 수 있는데, 방법론만 생각하다 보니 꼬이는 것 같다. 방법은 언제든지 바뀔 수 있기 때문. 이래도 그만 저래도 그만이니까.

profile
갑자기 왜 춤춰?

0개의 댓글