레이블이 path인 게시물을 표시합니다. 모든 게시물 표시
레이블이 path인 게시물을 표시합니다. 모든 게시물 표시

2019년 6월 16일 일요일

[20190616] Throw #4 - 일단 마무리

날씨가 정말 정말 좋습니다.
덕분인지 산책도 할 수 있었네요.
10km 쯤 걸어봤는데 부담이 느껴지긴 했지만 즐거운 시간이었습니다.
다행하게도 면역력 역시 이상이 느껴지지 않았습니다.
( ^_^)y-~



작업 이야기를 해볼까요.

이 일지는 6월 12일 ~ 14일 그리고 16일 작업의 일부를 대상으로 합니다.

작업 내역은...
  • 두께가 1 이상인 투척 경로의 개선
...입니다.



투척 경로 산출 작업은 지난 일지로 끝났었습니다.
몇 가지 만족스럽지 못하지만 쉽게 마무리 하는데 도움이 될 요구사항들로 작업을 마무리 했었죠.

그런데 말입니다..
그게 게임에서 돌려보니 영~~~ 만족스럽지 않더란 말입니다.
개발자인 저는 만족 했던 기능이.
유저인 저는 만족하지 못하더군요.
( '_')y-~

손이 많이 가고.
시간을 많이 잡아먹지만
좀 더 그럴싸한

그런 투척 경로를 만들어야 겠다는 생각이 들었습니다.



두께가 1 이상인 투척 경로의 이전 요구사항을 살펴봅시다.

1. 8 방향 기준으로 만든다.
2. 경로 사이에 빈틈이 없어야 한다.
3. 위, 아래, 좌, 우 4방향을 기본 방향으로 한다.
4. 확장된 경로는 주 경로를 수평이동해서 만든다.
5. 대각선은 예외 처리 한다.

이와 같은 요구사항을 반영한 결과는...


...이렇습니다.

"경로가 이상하네" 라고 느끼는 사람이 있겠지만, "이 정도의 부실함( ? )은 나름의 재미 요소로 쓰일 수 있지 않을까?" 라고 생각했습니다.


하지만 유저인 저를 만족시키지 못했죠. ( o_o)a

그래서 개선작업에 착수했습니다.



두께가 1 이상인 투척 경로의 새로운 요구사항은 다음과 같습니다.

1. 기준 방향 없다.
2. 예외 처리 없다.

즉 자연 스러운 경로를 만들자는 겁니다.

요구사항을 정리한 이후 어떻게 알고리듬을 조정할 것인지를 놓고 20시간쯤 머리를 쥐어 뜯으며 아래의 그림을 만들었습니다.


그리고 이전의 알고리듬이 제공하는 긍정적인( 버려서는 안되는 ) 부분 은 유지하면서 기능을 확장했습니다.


눈치 빠르신분은 요구사항 2종류와 그림을 보시고 코드 꼬락서니가 어떨지 감이 오실겁니다.

그러므로 더이상의 자세한 설명은 생략합니다. ( +_+)y-~

투척 경로 작업은 여기까지 입니다. 자잘한 버그나 기능개선이 아니면 한동안 손대지 않을 것 같네요.
그리고 이번 일지도 여기까지 입니다.



하나 하나 확실히 만들어가고 있습니다.
코드 복잡도가 이전 게임보다 많이 높아서 이쯤오니 확실하게 하지 않으면 후폭풍이 감당이 안되네요.
느려도 확실하게 마무리 하고 갑니다.

전 잠깐 쉬고 오랜만에 Dot 작업을 할 계획입니다.

다들 좋은 날씨 잘 즐기시고
전 쉬러 갑니다.
( '_')y-~

> 2번 고침

2019년 6월 11일 화요일

[20190611] Throw #3

여전히 집에만 박혀 생활하고 있습니다.

잠드는 시간과 깨는 시간이 슬슬 안정을 잡아가고 있는 덕에 약간의 활력이 돌아왔네요.
작업 시간도 조금 늘었습니다.

그동안 어지간하면 주말 이틀을 쉬어왔는데 요즘은 주말에 하루, 주중에 하루 쉬고 있습니다.
뭔가 일이 계속 반복되는 느낌과 피로감이 있네요.
익숙해지면 괜찮아지는 것인지.... 모르겠습니다.
( '_')y-~



작업 이야기로 들어갑니다.

이 일지는 6월 10일, 11일의 작업을 대상으로 합니다.

작업 내역은...
  1. 발사체를 통한 Spawn
  2. 투척 경로 산출에 굵기 속성 추가
  3. 발사체에 개선된 투척 경로 적용
...입니다.



1. 발사체를 통한 Spawn

Monster 중에 Map에 무언가를 만들어내는 녀석이 있었습니다.


바로 이 녀석 이죠.

같은 기능이 발사체에서 가능하게 작업했습니다.


원활한 Test를 위해 Dummy Item 과 Dummy Effect 가 하나씩 추가 되었습니다.
( ^_^)y-~


2. 투척 경로 산출에 굵기 속성 추가

지금의 투척 경로는 단 한 줄로만 만들어 집니다.
그런데 집어던지는 것들의 두께가 모두 같을리는 없겠죠.

그래서 굵기 속성을 추가해서 투석경로가 다양한 굵기를 가지도록 작업해봤습니다.

경로 산출을 위한 기준점을 확장하고


경로를 확장했습니다.


많고 많은~! 시행착오가 있었지만 재미 없는 부분이니까 넘어갑니다.



3. 발사체에 개선된 투척 경로 적용

2번 작업에서 확장된 투척 경로를 발사체에 적용했습니다.


그렇습니다.

미묘한 버벅임이 있네요.
Debug 모드에 Leak Detector 가 적용된 상황이지만 용서될 수는 없습니다.
조만간 만들어놓고 제대로 쓰지는 않은 Caching 기능을 적용해야겠네요.

일지는 여기까지 입니다.



요즘은 오후 6시 전에 작업이 거진 마무리 됩니다.
아침 일찍 일어난 덕분이죠.

기온이 더 올라가면 피난을 가던가 낮밤을 바꿔야 할텐데 이 생활 패턴이 얼마나 지속될런지... 모르겠네요.

다들 좋은 하루 되세요.
전 쉬러 갑니다.
( '_')y-~

2019년 6월 8일 토요일

[20190608] Throw #2

조용히 작업에만 집중하는 시간을 보내고 있습니다.

몸은 많이 회복한 것 같은데... 체력이 아프기 전의 절반이 되지 않는 것 같습니다.
이거 좀 아프네요.
전과는 다른 의미로 의욕이 넘치지만 몸이 따라오질 않습니다.

수면시간이 안정되면 얼른 산책을 시작해야겠습니다.



작업 이야기를 해볼까요.

이 일지는 6월 3일 ~ 5일, 7일, 8일의 작업을 대상으로 합니다.

작업 내역은...
  1. Interaction Process 개선
  2. Item이 활용되는 Interaction의 정규화
  3. 투척 경로 산출에 관통 속성 적용
  4. 발사체 Node 추가
...입니다.



1. Interaction Process 개선

2번 작업을 위한 준비 작업 입니다.
Interaction 처리의 주체를 ManagedActor와 Item등의 말단 객체에서 Core Data라는 이름의 Class로 대신하는 작업입니다.

주요 데이터의 저장소 또는 대리자로서 여러 객체들의 의존성 관리에 많은 도움을 줄거라 생각합니다.



2. Item이 활용되는 Interaction의 정규화

1번 작업에 힘입어 전용 코드를 사용하던 Item 과 Actor 간의 Interaction 을 정규 처리 흐름안으로 집어넣었습니다.

여기 까지 오는데 정말 많은 작업을 했지만... 이만큼의 작업을 더 해야 말끔하게 정리될 겁니다.
지금 할 것은 아니지만요.
( o_o)y-~



3. 투척 경로 산출에 관통 속성 적용

관통 Stat을 추가했고 이 것을 투척 경로 산출에 적용 했습니다.


그렇습니다.



4. 발사체 Node 추가

발사체 관련 기능은 Player A.I 에 작성되어 있었습니다.
이 기능의 폭 넓은 활용을 위해 관련 기능을 대신 처리해줄 Projectile Node를 추가했습니다.

일반화 작업이 마무리 되었으니 조만간 다른 Actor들이 Projectile Node를 활용하게 만드는 작업을 하게 될겁니다.

그 전에 발사체를 통한 Spawn 기능을 처리 해야 하지만요.
( @_@)y-~


일지는 여기까지 입니다.



함께 5년을 지내준 선풍기가 목이 부러졌습니다.
새로 살까 했는데... 올해만 그냥 쓰기로 했습니다.
몇가지 Item( ? ) 을 활용하면 그럭 저럭 쓸수는 있더라고요. @_@
개발을 마무리 하고 홀가분하게 새로 사겠습니다.

다들 좋은 하루 보내시고~!
전 쉬러 갑니다.
( '_')y-~

> 1번 고침

2019년 6월 1일 토요일

[20190601] Throw #1

더운 계절이 왔습니다.
아직 불편한 정도는 아니지만 조만간 어딘가로 피신해야 할런지도 모르겠습니다.
작업이 가능한 커피숍을 찾아놔야겠네요.

몸은 어느정도 회복이 되어서, 어제는 "이제 좀 살만하네" 라고 생각했습니다.
하지만... 낮/밤이 완전히 바뀌어서 그닥 살만하지는 않네요.
( o_o)y-~



작업 이야기로 들어갑니다.

10일 만의 일지 입니다. 일지 간격이 좀 기네요.
잡설의 작성이 뜸해져서 더 긴 것으로 느껴지는군요.

이 일지는 5월 22일의 일부, 23일, 25일 ~ 29일, 31일 그리고 6월 1일 작업을 대상으로 합니다.

작업 내역은...
  • Item Throw를 위한 모든 것
...입니다.


몸이 엉망인 덕분에 작업 시간은 50시간 정도로 짧았지만 일은 많이( ? ) 진행되었습니다.
오늘 일지는 이 작업에서 중요했던 순간들을 몇 개 짚는 것으로 작성해보려 합니다.




1. 위치를 특정한다.

무언가를 던지려면 던질 위치를 특정할 필요가 있습니다.
그것에 최적화된 도구는 Mouse 입니다.

Mouse 위치를 활용할 수 있게 관련 기능을 손 봤습니다.


이렇게 Test Scene에서 확인이 가능하지요.



2. 선을 Grid로 변환 한다.

공간이 특정 크기로 규격화 되어 있는 게임이다보니 Ray 를 활용한 간편한 충돌대상감지는 Game에 맞지 않습니다.

그리하여 시작점과 끝점을 지정하면 그것을 Grid 공간의 경로로 변환하는 기능을 만들었습니다.


Twitter에 이 영상을 올렸더니 어느 외국인 친구가 뭐하는 게임인지 전혀 모르겠다고 하더군요. @_@



3. 유의미한 경로로 제한 한다.

Grid Data의 정보를 참고하여 경로가 벽을 뚫고 가지 못하도록 제한 하였습니다.


이정도면 발사체의 이동 경로로는 충분해 보입니다.



4. Inventory 와 연계하여 경로를 보여준다.

Test Scene에서 만든 기능을 Game에 얹었습니다.


경로용 Tile이 이상하죠?



5. Tile 을 넣어본다.

급하게 Tileset을 만들어서 적용 했습니다.


자리잡기 용도라서 특별한 것은 없습니다.
이거 작업하다가 Tile Build 관련 Bug를 하나 잡았습니다. ( ^_^)y-~



6. 발사체를 이동한다.

발사체 노드를 경로에 맞춰서 이동 시켜봤습니다.


여러 시행착오 끝에 마음에 드는 이동 속도를 찾았습니다.



7. 때린다.

무수한 Item 관련 Refactoring과 Data 재설계 끝에 지정한 장소에서 공격 판정을 만들어 냈습니다.
( '_')y-~


여기 까지 진행하면서 이전 일지에서 언급했던...

  • Item, 행동, 대상의 3가지 조합으로 Item활용을  처리 하는 것

...이 완전히 확립되었습니다.

Damage 가 정상표시 되지 않는 것은 Item과 Actor간의 공방 처리가 정규처리를 따르지 않고 별도의 처리 로직을 가지고 있기 때문입니다.

지난번에 관련 기능을 만들면서 Item 관련 기능은 손보지 않았는데요. 지금 저 녀석을 제대로된 처리 흐름안에 포함하기 위해 여러 부분을 갈아 엎는 중입니다.

일지는 여기 까지 입니다.




어제는 이 달 들어 처음으로 산책을 했습니다. 1.5km의 짧은 거리였지만 산을 오르내리는 거라서 나름 운동이 되었네요.

일지를 5월 31일에 작성하고 싶었는데 낮/밤이 뒤집히다보니 6월 1일에 와서야 작성했습니다.
지난 일지에서... "일지 간격이 10일 씩 되는 것은 좀 아니다 싶었습니다." ...라고 적었는데... 뭔가 스스로에게 면목이 없군요. @_@

다음 일지는 이른 시기에 작성해보겠습니다.

일교차가 좀 있는데 다들 감기 조심하시고 좋은 하루 되세요.
전 잠깐 쉬고 다시 일하러 갑니다.
( '_')y-~