콘텐츠로 이동

CUnit

CUnit은 유즈맵 제작에서 가장 많이 쓰이는 데이터구조입니다. 여기서 CUnitAddress 탭에서 나열된 주소 중 하나입니다. 다만, 하나의 주소라고 표현하기에는 그 구조가 복잡하고 긴 배열 형태이기 때문에 별도의 탭으로 설명합니다.

데이터 구조

CUnit은 실제로 Address 탭에서 0x59CCA8 주소로 검색해보면, Unitnode Table을 확인할 수 있습니다. 자세히 한번 확인해봅시다.

Address Player ID Version Size Length SCR
0x59CCA8 19025 1.16.1 336 1700 Backed By Code

Compute the memory location of an index using:
0x0059CCA8 + (0x150 * index)

Size는 336바이트, Length는 무려 1700입니다. 어디서 많이 본 수치이지 않나요? 맞습니다. 맵에 배치할 수 있는 최대개체수와 같습니다.1 이는 맵에서 돌아다니는 모든 유닛의 상태를 배열의 형태로 관리하고 있음을 알 수 있습니다.

이제, Size에 주목해봅시다.
336바이트에는 많은 종류의 데이터가 포함되어 있습니다. 그리고 이 336바이트 안의 데이터구조를 확인할 수 있는게 바로 CUnit 탭입니다. CUnit에서 가장 마지막 항목의 Offset은 몇인가요? 바로 0x14F: bRepMtxY입니다. 0x14F는 Hex값으로 이를 알아보기 쉬운 10진수로 변환하면 335가 나옵니다. 336바이트 공간의 크기(Size)에 딱 맞네요.


  1. 리마스터 이후로는 확장(Extended)으로 최대 3400기까지 사용할 수 있지만, EUD맵은 기본적으로 별도의 EUD 에뮬레이터를 통해 실행되며 이전 데이터구조를 따릅니다. 그래서 EUD맵은 1700기 제한으로 고정됩니다.