CUnit
CUnit
은 유즈맵 제작에서 가장 많이 쓰이는 데이터구조입니다. 여기서 CUnit
은 Address 탭에서 나열된 주소 중 하나입니다. 다만, 하나의 주소라고 표현하기에는 그 구조가 복잡하고 긴 배열 형태이기 때문에 별도의 탭으로 설명합니다.
데이터 구조
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)에 딱 맞네요.
-
리마스터 이후로는 확장(Extended)으로 최대
3400기
까지 사용할 수 있지만, EUD맵은 기본적으로 별도의EUD 에뮬레이터
를 통해 실행되며 이전 데이터구조를 따릅니다. 그래서 EUD맵은1700기
제한으로 고정됩니다. ↩