본문 바로가기

JE Making Diary/01. Clutter Wars

01. 로직 짜기 (1) - 입장

1. 개요

이번에는 해당 게임의 알고리즘 중, 입장과 관련한 로직을 만들어 보았습니다.

2. 내용

https://sweetenpotato-minecraft.tistory.com/1

 

00. 게임 개요

1. 개요 낮에는 파밍하고 밤에는 적 기지를 공격하세요, 제한된 시간동안 싸우는 특이한 PVP 전쟁! 2. 규칙 플레이어들은 임의로 2개의 팀으로 나뉩니다. 중간에 참여하는 플레이어가 있을 경우, 낮의 경우에는 바..

sweetenpotato-minecraft.tistory.com

에서 작성한 규칙을 바탕으로 실제 게임에서 어떻게 진행될지 로직을 일단 구성해 보았습니다. 로직을 짜기에는 yEd Graph Editor로 짜는게 그래도 GUI 바탕이다보니 쉽게 생각이 들어서 해당 프로그램을 이용하였습니다.

 

먼저, 일단 플레이어가 들어올 경우 해당 맵에 대한 안내가 필요할 것으로 생각되어 아래와 같이 로직을 짜 보았습니다.

플레이어가 입장한 경우 - 게임 시작 X

플레이어가 해당 맵의 규칙을 모른다는 상태로, 그리고 혹시나 일어날지 모르는 블럭을 파괴하는 행위를 막기 위해 처음 들어온 플레이어의 게임 모드를 모험모드로 설정해 놓았습니다. 그 후, tellraw(예정) 명령어를 이용해 맵에 처음 들어온 플레이어들에게 규칙을 개별적으로 설명하고 이 간략한 튜토리얼이 끝난 플레이어에게 'player'라는 태그를 붙여 구분하면 좋지 않을까 생각해 보았습니다.

 

하지만 게임이 시작된 경우에는 이야기가 다르겠죠, 게임이 시작되었는데 들어온 플레이어는 따로 처리를 해주어야 할 겁니다. 왜냐하면 이미 게임은 시작되어 팀이 나뉘었고, 팀에 존재하는 인원 수에 따라서 새로운 플레이어를 더 적은 쪽에 배치해 주어야 겠죠. 그래서 아래와 같이 간략하게 순서도를 만들어 보았습니다.

플레이어가 입장한 경우 - 이미 게임 시작 (1)

일단 팀을 해당 플레이어에게만 나누는 것을 제외하고는 똑같습니다. 앞에서 작성한 코드를 가져와서 해도 되겠군요.

 

플레이어가 입장한 경우 - 이미 게임 시작 (2)

여기서부터 약간 이야기가 달라지기 시작합니다. 애초에는 낮에만 플레이어가 중간 합류가 가능하게 하려고 하였으나 그렇게 되면 플레이 하는데 제약이 생길 것 같아 계획이 약간 바뀌었습니다. 또한 중간에 'waiter' 태그가 사용되게 되는데 그냥 team으로도 게임에 실제적으로 참여하지는 않았지만 앞선 절차를 끝낸 플레이어를 구분하는데는 충분하겠더라고요. 그래서 저는 낮인지 밤인지 판단하는 분기가 실질적으로 필요 없어졌고 그냥 팀원 수만 분기로 나누어 구분해 주면 충분했습니다.

플레이어가 입장한 경우 - 이미 시작 (개편)

훨씬 깔끔해 졌네요. 좋습니다. 물론 태그가 추가된 이후 해당 플레이어를 각 진영으로 이동시키는 것도 잊지 말구요.

 

자 근데 이렇게 되면 어떻게 각 팀의 온라인 플레이어 수를 세느냐에 대한 고찰이 필요합니다. 그 방법에 대해서는 따로 적어놓도록 하겠습니다. 다른 게시물을 참고해 주세요.

3. 결론

'JE Making Diary > 01. Clutter Wars' 카테고리의 다른 글

00. 게임 개요  (1) 2020.04.12