Skip to content
k-chan-l edited this page Mar 3, 2022 · 5 revisions

Hansung Minecraft


구조도

drawing

위의 구조대로 플러그인이 동작한다. 여기서 화살표는 event를 의미한다.


동작 순서도

drawing

  1. 서버가 시작되고 플레이어가 접속(playerJoinEvent)하면 해당 플레이어의 닉네임을 바탕으로 http get요청을 통해 DynamoDB에서 해당 플레이어의 정보 JSON String형식으로 받아온다(httpGetClearEvent).

  2. JSON String형식으로 받아오면(httpGetClearEvent) 해당 JSON 데이터에서 가장 최신의 데이터를 찾아 사용가능한 형태(JSON Object)로 가공하고 JsonObjectParsingEvent에 JSON Object를 담아 서버에 이벤트를 호출한다.


drawing

  1. JsonObjectParsingEvent를 받으면 JSON Object에서 npc의 도착지점을 받는다.

  2. npc 도착지점 확인 후 npc를 생성한다.

  3. npc 생성 후 바로 이동하면 npc가 순간이동하는 현상이 있어 5초간 대기한다.

  4. 5초간 대기 후, npc 이동 중 일정거리 이상 멀어질 경우 npcSpeakEvent를 호출하여 해당 npc와 출력할 대사를 담아 이벤트를 호출한다.


drawing

  1. npcSpeakEvent가 실행되면 npc위에 말풍선을 띄운다.(Holographic Display 이용)

drawing

  1. JsonObjectParsingEvent를 통해 받은 JSON Object에서 MQTT에서 구독할 Subject를 뽑아낸다.

  2. MQTT 클라이언트를 연결하고 Subject를 구독한다.

  3. 구독된 MQTT 클라이언트에서 메시지가 도착하면 해당 메시지의 inhale, exhale값을 추출해서 event에 담아서 호출한다.


drawing

  1. lungrowValueUpdateEvent를 통해 받은 inhale, exhale 값으로 MqttHolo의 값을 업데이트 한다.

  2. 호흡측정 단계에 따라 inhale, exhale 상태 변화를 측정해서 단계를 변경한다.

  3. buildblock의 갯수가 가득차면 ButtonClickedEvent를 활성화 하고 그 상태에서 버튼을 클릭하면 block을 초기화한다.


drawing

  1. JsonObjectParsingEvent를 통해 JSON Object를 받아 저장한다.

  2. 저장한 JSON 오브젝트에 플레이어의 이동경로를 추적하여 저장한다.


drawing

  1. 플레이어 종료시 playerQuitEvent를 발생 Checkpath의 경우 지금까지 기록된 경로를 모두 저장 그후 현재 시간까지 JSON Object의 SK 저장한다. Mattholo의 경우 해당 플레이어의 holographic display를 전부 삭제, Mqttlungrow의 경우 lungrow 커넥션을 종료한다, NPCPlugin은 생성된 NPC를 삭제한다.

  2. JSON Object를 추가한 playerExitWithJsonObejctEvent를 호출한다.

  3. 해당 JSON Object를 post method를 통해 DynamoDB로 전달한다.


drawing

커맨드를 입력하면 현재 플레이어의 방향을 측정하여 해당 방향에 맞도록 블록을 생성한다.

글자들을 Boolean 타입의 배열로 저장해두어 배경과 글자를 분리한다.