Notice
Recent Posts
Recent Comments
Link
12-26 11:26
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

킹머핀의 제작 일지

화살표 생성, 입력 반응, 상호작용 본문

인디 게임 개발/개발 일지

화살표 생성, 입력 반응, 상호작용

KingMUffin 2021. 2. 13. 02:04

화살표 스프라이트 인스턴스를 레이아웃에 생성하고, 화살표(방향) 키를 누르면 각 방향에 해당하는 화살표가 반응해야 한다. 어떻게 만들지 모니터만 보고 멍때리고 있으니 해결되지 않아서 결국 글로 써보기로 했다. 역시 글 쓰는 건 좋아! 그나저나 이 정도도 쉽게 구현하지 못 하는 나는 얼마나 실력이 부족한 거지? ㅎㅎ

 

내가 주저하는 부분은 '각 방향에 해당하는 화살표'를 어떻게 구분하느냐.

  • 인스턴스 변수의 값으로 구분한다. (이 경우 매번 값을 조건문으로 확인해야 한다.)
  • UID를 순서대로 저장해서 구분한다.
    - 어디다 저장? 전역 메모리 or 사전?
  • 인스턴스를 순서대로 생성해서 IID로 구분한다.
  • 계층 구조를 만들고 자식 인스턴스 순서로 구분한다.
  • 각도 값으로 구분한다. (이 경우 각도가 정확하지 않으면 안 된다는 제한이 생긴다.)

순서대로 생성하는 것은 어렵지 않고, 인스턴스 정보를 따로 저장하지 않아도 되는 IID나 자식 인스턴스 순서로 구분하는 것이 좋겠다! 그리고 'Pick Nth instance' 또는' Pick nth child' 조건으로 가져오는 거다.

 

자 그럼 인스턴스 생성은 어떻게 해야할지도 생각해보자.

  • 레이아웃 바깥에 계층 구조를 만들어놓고 부모 인스턴스를 생성한다.
  • 이벤트 시트에서 인스턴스를 모두 생성한 후에 계층 구조를 만든다.
    - 인스턴스 속성은 어디에서 불러옴? 전역 메모리 or 사전?

어차피 미리 만든 계층 구조가 최종 형태가 아니기 때문에 인스턴스 속성을 불러와야 한다. 이벤트 시트에서 생성해야겠다.

 

초기 값은 어디에 저장하는게 좋을까요?

  • 전역 변수/상수 전용 이벤트 시트를 범주에 따라 생성한다. (이 경우 사전과 같이 문자열 키를 일일이 입력하지 않아도 됩니다. 이름을 수정하면 일괄 변경됩니다. 하지만 삭제에 매우 신중해야 합니다.)
  • 사전 데이터를 저장하는 json 파일으로 관리한다. (이 경우 데이터를 파일로 관리할 수 있습니다. 문자열 키로 데이터를 아주 쉽게 찾을 수 있습니다. 하지만 문자열 키를 수정하면 코드를 일일이 수정해야 합니다.)

저는 모든 초기(미리 결정한) 값을 '반복되는 공통 데이터'와 '그렇지 않은 데이터'로 나누어보겠습니다.

프로그래밍 언어에서 지원하는 Dictionary나 Map을 제대로 사용해본 적이 없지만(소프트웨어학부 4학년 수준 맞냐?) 데이터를 순서에 상관 없이 문자열 키로 가져올 수 있는 것이 특징입니다. 그런데 반복되지 않는 초기 속성은 사전 json 파일에 저장하는 것보다는 오히려 전역 상수가 더 유용합니다.

그럼 사전을 이용할 일이 없을까요? 아예 사용하지 않아도 괜찮을까요? 배열과 함께 사용할 수 있을까요?

 

초기 객체 속성(HP/MP/AT/대사/이벤트 등)은 어디에 저장?

  • 배열 데이터를 저장하는 json 파일으로 관리한다. (사전과 같은 장단점이 있으며, 객체마다 반복되는 데이터를 관리하기 편하지만 사전보다 효율이 낮습니다.)

객체마다 반복되는 공통 속성은 필연적으로 존재합니다. 모든 인스턴스의 속성(위치/크기/각도 등)과 객체의 속성(HP/MP/AT 등)은 배열 json 파일으로 관리해야겠죠.

  • 파일을 속성으로 분류한다면, 특정 객체에 해당하는 배열의 Y값을 인스턴스 변수 등에 저장한다. (이 때 사전이 굳이 필요 없다)

저는 파일을 속성으로 분류하고 싶습니다. 그래야 데이터 구조가 일관성 있고 작성하기도 편할 테니까요. 그렇다면 '반복되지 않는 초기 속성'도 굳이 사전을 이용하지 않고 전역 변수/상수로 만드는 것이 좋겠어요.

...이 결론을 내리기까지 4시간이 걸렸습니다. 머리 꽁꽁 싸매면서 최고의 대안을 찾아보려 애썼고 결과는 좋았지만.. 역시 무작정 만들어보면서 생각하는 게 더 효율적이었겠다는 생각이 드네요. 왜 이 생각은 항상 마지막에 드는 거야... 또 이제 와서 깨달은 건.. 사전의 문자열 키로 배열을 찾으려면 어차피 모든 객체에 해당하는 문자열 키도 인스턴스 변수든 어디든 저장해두어야 한다는 사실입니다.
휴, 그래도 이렇게 글이라도 써서 이 정도지 모니터만 쳐다보고 있었으면 이틀은 걸렸을 수도 있습니다! 이미 그랬던 적도 많고요.