# 유니티 최근 업데이트

> 일주일 치를 정직하게 그으니 릴리스 5건이 전부였습니다. 그런데 그 안에 기능 추가가 아니라 이사가 들어 있었습니다.

- 수치: breaking 188
- 사람이 보는 화면: https://aitryed.com/ko/teardowns/games/unity-releases/
- 반대 언어: https://aitryed.com/en/teardowns/games/unity-releases/index.md
- 이 사이트 안내(AI용): https://aitryed.com/ko/llms.txt

---

**게임 만드는 프로그램(유니티)의 최근 소식을 훑은 기록입니다. 「이번 주에 뭐 나왔나」를 정직하게 세어 봤더니 다섯 건뿐이었는데, 그 안에 「새 기능」이 아니라 「이사 공사」가 들어 있었습니다.**

유니티는 제가 게임을 만들 때 쓰는 프로그램입니다. 이런 프로그램은 자동차처럼 계속 새 판이 나오는데, **새 판이 늘 좋은 소식은 아닙니다.**

> **[도판]** 다섯 건을 나열하는 것으로는 의미가 안 나온다. 네 트랙이라는 배치를 봐야 어디에 서야 할지가 나온다.
>
> 네 트랙이 동시에 굴러가고 있다. 장기 지원과 정식과 베타와 알파가 사흘 안에 다섯 개 빌드를 냈다. 그중 베타 트랙에만 깨지는 변경이 188건 쌓여 있다.

## 「이번 주 소식」을 정직하게 긋는 것부터가 일이었습니다

보통 「최근 소식」을 찾아보면 화려한 발표가 잔뜩 나옵니다. 그런데 날짜를 **딱 일주일로 자르고** 그 안에 실제로 일어난 일만 세어 보니 **다섯 건**이었습니다. 큰 발표들은 **그 일주일 밖**에 있었습니다.

이게 시시한 결과 같지만 아닙니다. **「조용한 주였다」는 사실 자체가 정보**입니다. 다섯 건만 남으니 오히려 **이 회사가 지금 네 갈래를 동시에 굴리고 있다**는 구조가 선명하게 보였습니다.

## 새 기능이 아니라 「집을 뜯어고치는 공사」가 진행 중입니다

다섯 건 중 둘은 시험판이었습니다. 버전 번호만 보면 「시험판 두 개 나왔네」로 끝납니다. 열어 보니 그게 아니었습니다.

**프로그램 내부에서 「물건에 이름표를 붙이는 방식」을 통째로 갈아엎는 중**이었습니다. 집으로 치면 벽지를 바꾸는 게 아니라 **배관을 새로 까는 공사**입니다.

그래서 이런 일이 생깁니다.

| | 보통 업데이트 | 이번 같은 공사 |
|---|---|---|
| 내가 물어야 할 것 | 「새 기능 뭐 있나」 | **「내 코드가 아직 돌아가긴 하나」** |
| 영향받는 곳 | 새로 쓰는 부분만 | **기존 코드 수백 군데** |

지금까지 쌓인 **「기존 코드가 깨지는 변경」이 188건**입니다.

## 그런데 그 188이라는 숫자를 그대로 인용하면 안 됩니다

여기서 값을 치른 교훈이 나옵니다. **188은 어디서 나온 숫자인가**를 봐야 합니다.

- 이건 **시험판에서 쌓인 누적 숫자**입니다.
- 정식판으로 나올 때 **그대로 남아 있을지는 아무도 모릅니다.** 중간에 되돌릴 수도 있고 더 늘 수도 있습니다.
- 지금 정식판을 쓰는 사람에게는 **오늘 당장 해당되는 숫자가 아닙니다.**

그래서 이 숫자를 인용할 때는 「시험판 누적치」라는 단서를 반드시 같이 붙여야 합니다. 단서를 떼고 「188군데가 깨진다」고만 하면 **틀린 말**이 됩니다.

## 저는 시험판에 올라타지 않습니다 — 그리고 그건 겁이 나서가 아닙니다

제 판정은 **정식판 유지**입니다. 이유가 둘입니다.

첫째, 시험판은 만든 회사가 **「실제 서비스에는 쓰지 말라」고 못 박아** 둡니다.

둘째가 더 중요합니다. **제 게임은 지금 만드는 중**입니다. 만드는 중에 바닥이 흔들리면, 게임이 안 돌 때 **원인이 내 실수인지 바닥 탓인지 구분이 안 됩니다.** 그 구분이 안 되는 상태가 제일 비쌉니다.

## 그래서 규칙을 하나 적었습니다 — 「이사는 짐을 다 싼 다음에」

그렇다고 영원히 안 올라탈 수는 없습니다. 언젠가는 옮겨야 합니다. 그래서 **시점 규칙**을 정했습니다.

> **큰 공사 버전으로 올리는 것은 개발 중반이 아니라, 한 덩어리를 끝낸 직후에 한다.**

한 덩어리가 끝난 시점은 **「어제까지 되던 것」이 명확한 시점**입니다. 그때 올리면 뭔가 깨졌을 때 **범인이 이사라는 걸 바로 압니다.** 중반에 올리면 내가 만들던 것과 이사가 섞여서 영원히 못 가립니다.

## 여기부터는 자세한 기록입니다

**"이번 주 뉴스"를 정직하게 그었더니 릴리스 빌드 5건이 전부였습니다.** 발표도 키노트도 그 창 안에 없었습니다. 그런데 **버전 번호만 보면 「베타 빌드 두 개 나왔네」로 끝날 것**을 열어 보니, 안에 **엔진 구조를 갈아치우는 공사**가 들어 있었습니다. **깨지는 변경 188건.** 이건 *"새 기능 써볼까"* 가 아니라 *"내 코드가 컴파일이나 되나"* 를 물어야 하는 규모입니다.

## 무엇이 있었나

**기간을 먼저 정직하게 그은 게 이 자료의 시작입니다.** 요청은 *"최근 1주일"* 이었고, 그 창 안에 실제로 일어난 일은 **릴리스 빌드 5건이 전부**였습니다. 발표나 키노트 같은 큰 뉴스는 **그 창 밖**에 있었습니다.

**그래서 둘로 나눠 적혀 있습니다** — 기간 안에 실제로 나온 것, 그리고 그걸 이해하는 데 필요한 **직전 맥락**을 따로. **기간을 늘려서 큰 뉴스를 끌어오지 않았습니다.**

사흘 동안 네 트랙에서 빌드 다섯 개가 나왔습니다. **장기 지원 · 정식 · 베타 · 알파를 동시에 굴리는 구조**가 그대로 드러납니다.

## 대표 변화 — 기능 추가가 아니라 이사다

**엔진 전반에서 객체 식별자를 체계적으로 갈아치우는 중입니다.** 애니메이션·물리·그래픽스 등 **수백 개 API가 영향**을 받고, 베타 기준 **깨지는 변경이 188건** 쌓였습니다.

**왜 하느냐가 중요합니다** — 엔티티 기반 워크플로와 기존 오브젝트 워크플로를 **하나로 합치는 기반 공사**입니다. 엔티티 개념을 **엔진 전체의 공용 식별자로 끌어올리는 것**이 목적입니다. 그래서 이 버전은 **기능 추가 버전이 아니라 이사 버전**입니다.

**그 옆에 오래 기다린 기능이 하나 들어옵니다.** 사전 자료구조 직렬화가 **내장**됩니다. 지금까지는 콜백이나 커스텀 래퍼, 서드파티 에셋에 의존해야 했던 부분입니다.

| 항목 | 내용 |
|---|---|
| 대상 | 선언 타입이 **정확히 그것**이어야 한다 — 상속·래핑은 안 된다 |
| 방식 | **옵트인.** 직렬화할 필드마다 표시를 붙여야 한다 |
| 인스펙터 | 전용 2컬럼 뷰(키 / 값) |
| 중복 키 | 편집 중에는 임시 허용하고, 중복 행마다 아이콘과 안내를 띄운다 |

**그리고 엔티티 패키지 전체가 코어로 들어옵니다.** 엔진 릴리스와 버전이 같이 가게 되어 **별도 버전 관리가 사라집니다.** 대신 **매니지드 컴포넌트가 폐기 수순**이라 클래스 기반 컴포넌트를 구조체로 바꿔야 합니다 — **이쪽도 파괴적 변경**입니다.

## 깨본 결과

**"188건"이 무엇의 수인지 봐야 합니다.** 이건 **베타 트랙 누적치**이고, 정식으로 풀릴 때 그대로 남아 있을지는 알 수 없습니다. **지금 정식 버전을 쓰는 사람에게는 오늘 해당되는 숫자가 아닙니다.**

**사전 직렬화도 조건이 빡빡합니다.** 선언 타입이 정확해야 하고 **상속이나 래핑이 안 됩니다.** 기존 프로젝트가 대개 래퍼를 거쳐 쓰고 있을 텐데, **그 래퍼를 걷어내는 작업이 먼저**입니다. *"드디어 내장됐다"* 와 *"내일부터 쓸 수 있다"* 사이에 그 일이 있습니다.

**그리고 이 자료 자체의 성격이 다른 편들과 다릅니다.** 뜯을 대상이 레포도 영상도 아니라 **릴리스 노트**입니다. **깨볼 주장이 별로 없고**, 있는 건 *"이번 주는 조용했다"* 를 인정한 것 정도입니다. ⚠ 그래서 이 편은 **판정보다 위치 확인에 가깝습니다.**

> **[도판]** 릴리스 노트를 읽는 일은 "무엇이 나왔나"가 아니라 "그중 무엇이 지금 나에게 오나"를 가르는 일이다.
>
> 이번 주 다섯 건 중 나에게 오늘 해당되는 것은 정식 안정화 패치 하나뿐이다. 베타의 깨지는 변경 188건과 사전 직렬화는 각각 다른 이유로 지금이 아니다.

## 내 환경에 대봤다

**저는 정식 트랙에 서 있어야 합니다.** 베타는 **프로덕션 금지**이고, 제 게임은 만드는 중이라 **엔진이 흔들리면 안 됩니다.** 이번 주 릴리스 중 제게 해당하는 건 **정식 안정화 패치 하나**입니다.

**이사 버전을 미리 아는 게 이 자료의 값어치입니다.** 언젠가 올려야 할 텐데, **그게 기능 추가가 아니라 대공사**라는 걸 알면 **올릴 시점을 다르게 잡습니다** — 개발 중반이 아니라 한 덩어리가 끝난 뒤로.

**사전 직렬화는 실제로 기다리던 것입니다.** 제 프로젝트에도 래퍼가 들어가 있고, 걷어낼 수 있으면 코드가 줄어듭니다. ⚠ **다만 정식으로 풀린 뒤의 얘기이고, 래퍼를 먼저 걷어내야 합니다.**

## 판정

| 무엇 | 판정 |
|---|---|
| 지금 서 있을 트랙 | **정식 유지.** 베타는 프로덕션 금지 |
| **이사 버전 대비** | **채택 — 시점 규칙으로.** 올린다면 개발 중반이 아니라 **한 덩어리가 끝난 뒤** |
| 사전 직렬화 | **대기.** 정식 이후 + 래퍼 제거가 선행 |
| 엔티티 워크플로 | **해당 없음.** 제 게임 규모가 그걸 필요로 하지 않는다 |
| "188건" 인용 | ⚠ **한정 필요.** 베타 누적치이고 정식에 그대로 남을지 모른다 |

**이 편에서 값을 치른 교훈은 자료 쪽이 아니라 읽는 법입니다 — 기간을 정직하게 그으면 「조용한 주」가 그 자체로 정보가 됩니다.** 다섯 건뿐이라는 사실이, **네 트랙을 동시에 굴리고 있다**는 구조를 오히려 선명하게 보여줬습니다.

그리고 ⚠ **버전 번호로는 대공사가 안 보입니다.** *"베타 빌드 두 개"* 와 *"깨지는 변경 188건"* 은 같은 사건인데, 앞의 표현만 보고 넘기면 **나중에 올릴 때 그 188건을 처음 만납니다.**
