본문으로 건너뛰기
AI 수익화 도전기
3D 폐차장 생존 액션 「SCRAPYARD SURVIVOR」 · 일지 3

밤새 AI에게 맡긴 3D 폐차장 게임 (3) 무섭지 않고 그냥 캄캄했던 밤

일지· 읽는 데 9분

캄캄하기만 하던 폐차장의 밤을 조명탑 우선순위 1.3에서 4.0으로, 밤 노출 1.25에서 1.08로 맞춘 과정이에요. 검은 그림자 띠와 까만 화면까지, 그날 밤 화면과 전후 비교로 보여 드려요.

목차 9개

SCRAPYARD SURVIVOR는 낮에 폐차장에서 부품을 모아 무기를 만들고, 19시에 밤이 오면 몰려오는 고철 좀비와 로봇 개를 새벽까지 버티는 게임이에요. 싸움은 거의 밤에 몰려 있어서, 밤 화면이 어떻게 보이느냐가 중요했어요. 이번 편은 그 밤 조명을 맞춘 이야기예요.

조명탑 불빛 아래에서 톱날 무기를 든 주인공을 좀비 다섯 마리와 로봇 개 한 마리가 둘러싼 밤 장면. 바닥은 불빛이 닿는 곳만 밝고 위쪽 가장자리는 어두워요

지금 밤은 이렇게 보여요. 이 게임은 1편에 적은 대로 하룻밤, 자정부터 새벽 6시 17분까지 AI가 혼자 만들었고, 밤 조명도 그날 밤 안에 끝났어요. 마지막 조명 값이 들어간 게 새벽 5시 22분이에요.

같은 자리, 같은 좀비 배치를 위아래로 비교한 장면. 위는 5시 18분 값으로 되돌린 화면으로 주인공 둘레만 희미하게 보이고, 아래는 지금 값으로 가운데 바닥과 폐차, 좀비, 로봇 개가 보여요. 위에는 뭐가 오는지 잘 안 보인다는 메모, 아래에는 좀비와 로봇 개에 노란 동그라미를 쳤어요

위아래는 같은 장면이에요. 이 글을 쓰면서 게임 사본을 띄우고 조명 값만 5시 18분 것으로 되돌려 다시 찍었어요. 오른쪽 노란 동그라미 속 좀비와 로봇 개는 위 사진에도 같은 자리에 있어요. 위에서는 거의 안 보여요.

캄캄한 밤, 새벽 1시 8분

위는 새벽 1시 8분 밤 화면. 부품 고리 네 개만 빛나고 나머지는 거의 검은색이며, 주인공 옆에 무언가 겹쳐 있는 곳에 노란 동그라미를 쳤어요. 아래는 1시 17분 화면으로 바닥이 갈색으로 밝게 보이고, 오른쪽 부품 하나가 하얗게 번진 곳에 빨간 동그라미를 쳤어요

위 사진은 새벽 1시 8분의 밤 화면이에요. 바닥이 거의 검은색이고, 보이는 건 부품 자리의 노란 고리뿐이에요. 노란 동그라미 친 곳에 주인공이 있는데, 옆에 뭐가 붙어 있는지도 구분이 안 돼요.

원인은 조명 세기 단위였어요. 이 게임은 PBR 재질을 쓰는데, 이 방식에서는 조명 세기를 실제 빛처럼 계산해서 거리가 멀어지면 빛이 빠르게 약해져요. 조명탑 세기가 40이었는데, 10m 높이에서 바닥까지 닿으려면 수천은 돼야 했어요. AI는 조명탑을 40에서 2600으로, 다시 9000으로 올렸고, 드럼통 불은 12에서 170으로, 작업등은 13에서 120으로 올렸어요. 아래 사진이 1시 17분 화면이에요. 바닥은 보이는데, 오른쪽 부품 하나가 하얀 덩어리처럼 번져 있어요.

조명보다 먼저 막힌 두 가지

위는 게임 시각 17시 12분 화면으로 오른쪽 아래에 큰 검은 대각선 띠가 깔려 있고 화살표로 가리켰어요. 아래는 17시 15분 같은 자리로, 검은 영역이 오른쪽 아래 구석으로 많이 줄었다는 파란 메모를 붙였어요

밤을 맞추기 전에 낮에도 문제가 있었어요. 0시 53분 화면에 땅을 가로지르는 큰 검은 띠가 생겼어요. 그림자 계산 범위를 물체들에 맞춰 자동으로 잡다 보니, 범위 밖 바닥이 전부 그림자로 칠해진 거였어요. 경기장이 96m로 정해져 있고 카메라도 위에서 내려다보니까, 사방 70m를 덮는 그림자 지도 한 장을 직접 깔도록 바꿨어요. 0시 59분에 고쳤어요.

왼쪽은 새벽 1시 31분 화면으로 NIGHT 1 글자와 화면 테두리 정보만 있고 게임 화면은 전부 검은색이에요. 오른쪽은 1시 34분 화면으로 전기 톱을 든 주인공과 좀비 두 마리가 보여요. 두 장에 시각 메모를 붙였어요

두 번째는 1시 31분에 나온 새까만 화면이에요. 글자와 미니맵만 있고 게임 화면이 통째로 안 그려졌어요. 조명탑만 스포트라이트였고 켜졌다 꺼지는 나머지 조명은 모두 점광원이었는데, 두 종류는 그래픽카드에 넘기는 조명 데이터 크기가 달라요. 켜지는 조명이 바뀌는 순간 크기가 안 맞아 WebGPU가 그리기를 거부한 거예요. 조명탑을 11m 높이의 점광원으로 바꿔 전부 한 종류로 맞추고, 조명이 바뀔 때마다 재질을 다시 준비하게 해서 3분 만에 다시 보였어요.

그 전에 0시 37분에 조명을 너무 많이 달아 WebGPU 한도를 넘은 오류도 있었어요. 이건 1편의 밤 웨이브 부분에 적었어요. 그 오류 때문에 생긴 규칙 하나가 이번 편의 가장 큰 문제로 이어져요.

조명은 세 자리만 켜져요

오류를 피하려고 재질 하나가 받는 조명을 4개로 묶었어요. 달빛 하나는 늘 켜 두고, 남은 세 자리를 조명탑 네 개, 작업등, 드럼통 불, 무기 불빛, 타격 섬광이 나눠 써요. 하늘에서 고르게 비추는 반구 조명은 자리를 아끼려고 껐어요(가장 낮은 화질 설정에서만 켜요). 어느 조명이 자리를 차지할지는 이렇게 정해요.

// 거리 ÷ 우선순위가 작은 조명부터 세 개만 켠다 (LightManager, 줄임)
score = Vector3.Distance(light.pos, player.position) / weight;
this.env.lights.register(flood, () => towerFoot, 4.0); // 조명탑 우선순위 (처음 1.3)

야드 가운데쯤 서 있으면 작업등은 16m, 드럼통 불은 17m, 가장 가까운 조명탑 기둥은 26m 떨어져 있어요. 무기 불빛은 늘 첫 자리이고, 남은 두 자리를 두고 겨뤄요. 조명탑 우선순위가 1.3이면 26을 1.3으로 나눠 20이 되고, 드럼통 불(우선순위 1.2)은 14, 작업등은 16이라 조명탑이 밀려요. 작은 불빛 두 개가 자리를 가져가고, 제일 넓게 비춰야 할 조명탑은 꺼져 있는 거예요. 4.0이면 조명탑이 6.4로 맨 앞에 서요.

새벽 5시 18분부터 5분

1시 34분 이후로 AI는 에셋 작업을 하다가, 5시 17분에 야드 전체를 내려다보는 밤 화면을 찍고 다시 조명으로 돌아왔어요. 값을 바꿀 때마다 같은 자리, 같은 게임 시각에서 한 장씩 찍어 보고 다음 값을 정했어요. 아래는 그때 남은 화면이에요.

새벽 5시 18분부터 23분까지 같은 구도의 밤 화면 네 장. 1번 5시 18분은 가운데가 캄캄하고, 2번 5시 20분은 달빛 4.6과 노출 1.25로 올렸는데도 어두워요. 3번 5시 21분은 조명탑 우선순위 4.0으로 바닥이 하얗게 밝고, 4번 5시 23분은 조명탑 2300과 노출 1.08로 가운데는 밝고 가장자리는 어두워요. 네 장에 번호와 시각, 값을 적었어요

1번 5시 18분에는 가운데가 캄캄했어요. 달빛을 2.2에서 3.4로, 주변 빛을 0.4에서 0.55로, 조명탑을 2200에서 3800으로 올렸는데 거의 그대로였어요. 2번 5시 20분에 달빛 4.6, 주변 빛 0.75, 밤 노출 1.25까지 올려도 여전히 어두웠어요.

이때 바닥에 실제로 들어가는 조명 목록을 뽑아 보니 달빛, 드럼통 불, 무기 불빛, 작업등이었어요. 조명탑은 하나도 없었어요. 3번 5시 21분에 우선순위를 4.0으로 바꾸자 바닥 목록이 달빛, 조명탑 두 개, 무기 불빛으로 바뀌었고, 화면이 한 번에 하얗게 밝아졌어요. 달빛과 노출을 올려 둔 상태라 이번엔 너무 밝았어요. 5시 22분에 조명탑을 2300으로, 밤 노출을 1.08로 내렸고, 5시 23분에 찍은 4번이 마지막이에요.

우선순위 1.3과 4.0

같은 장면을 위아래로 비교. 위는 조명탑 우선순위 1.3으로 주인공 둘레만 희미하고 오른쪽 좀비가 어둠에 묻혀 있어요. 아래는 4.0으로 바닥과 폐차, 드럼통, 좀비가 보여요. 위에는 캄캄해서 좀비가 안 보인다는 빨간 메모, 아래에는 조명탑 켜니까 보인다는 파란 메모와 동그라미를 넣었어요

지금 값에서 조명탑 우선순위 하나만 1.3으로 되돌려 같은 자리에서 찍었어요. 다른 값은 전부 같아요. 위 사진은 달빛만 받은 바닥이라 주인공 둘레만 희미하게 밝고, 동그라미 친 좀비는 드럼통 옆에 서 있는데 윤곽만 겨우 보여요. 아래는 조명탑 두 개가 자리를 얻은 화면이에요. 숫자 하나 차이인데 밤 전체 분위기가 달라져요.

밤 노출 1.25와 1.08

같은 장면을 위아래로 비교. 위는 밤 노출 1.25로 가운데 바닥이 누렇게 밝고 왼쪽 가장자리까지 흙이 보여요. 아래는 1.08로 가운데는 밝고 왼쪽 가장자리는 다시 어두워요. 위에 밤인데 너무 밝다는 메모, 아래 가장자리를 파란 화살표로 가리켰어요

노출은 화면 전체를 사진기처럼 밝게 하거나 어둡게 하는 값이에요. 이번에는 밤 노출만 1.25로 되돌렸어요. 위 사진은 가운데 바닥이 누렇게 밝고 왼쪽 가장자리 흙까지 보여서 해 질 녘에 가까워요. 아래 1.08은 조명탑 불빛이 닿는 가운데만 밝고, 파란 화살표 쪽 가장자리는 다시 어두워요. 그날 AI가 목표로 잡은 모습도 이렇게 불빛 웅덩이와 가장자리 어둠이 나뉘는 밤이었어요.

마지막 값

항목처음 (0시대)마지막 (5시 22분)
조명탑스포트라이트 40점광원 2300, 높이 11m, 거리 60m
조명탑 우선순위1.34.0
달빛0.554.6
주변 빛0.180.75
밤 노출0.91.08
드럼통 불12170 (흔들림 있음)
작업등3~1330~120
켜 두는 조명전부가까운 3개 + 달빛

작업대 주변 밤 화면. 작업대 위 작업등이 탁자와 바닥을 따뜻하게 비추고, 빨간 컨테이너와 초록 상자, 파란 드럼통 사이로 좀비 세 마리가 주인공에게 다가와요

이 값으로 작업대 쪽 밤을 찍어 보관한 게 5시 25분이에요. 작업등과 드럼통 불이 가까워서 이 구석은 따뜻한 색이 돌아요. 그 뒤 5시 30분에 자동 시험 11가지가 모두 통과했고, WebGPU 오류는 없었어요.

해 보니

좋았던 점부터요. 밤이 캄캄했던 진짜 이유가 밝기 숫자가 아니라 조명 자리 싸움이었다는 걸, AI가 바닥에 들어간 조명 목록 한 줄로 찾아냈어요. 달빛과 노출을 올려도 안 되던 게 우선순위 하나로 풀렸고, 위 비교 사진처럼 그 차이가 화면에 바로 보여요. 5시 18분부터 22분까지 네 번 바꾸고 멈췄는데, 매번 같은 구도로 찍어서 무엇이 달라졌는지 따라가기 쉬웠어요.

지금 값의 밤 화면. 주인공 주변 바닥은 밝은데, 화면 위쪽 어두운 곳에 서 있는 좀비 두 마리는 윤곽만 겨우 보여요. 두 좀비에 노란 동그라미와 화살표를 넣었어요

아쉬운 점도 있어요. 지금 값에서도 불빛 웅덩이 바깥은 여전히 어두워요. 위 사진 동그라미 안에 좀비가 두 마리 있는데, 알고 보지 않으면 놓치기 쉬워요. 조명 자리가 셋뿐이라 플레이어가 움직이면 켜지는 조명탑이 바뀌고, 멀리 있는 조명탑 쪽은 늘 어두워요. 목표 그림의 비 젖은 바닥 반사나 간판 불빛 같은 것도 없어요. 무섭게 느껴지는지는 사람마다 다를 것 같아서, 직접 해 보고 알려 주시면 좋겠어요.

지금 상태와 남은 것

  • 밤 조명은 5시 22분 값 그대로예요. 조명탑 4개, 작업등, 드럼통 불, 무기 불빛이 자리 3개를 나눠 써요.
  • 그림자는 경기장 전체를 덮는 지도 한 장이고, 켜졌다 꺼지는 조명은 전부 점광원이에요.
  • 가장자리 어둠 속 적이 잘 안 보이는 문제는 손대지 않았어요.
  • 3D 모델과 애니메이션을 만든 과정은 2편에 있어요.

그날 밤 빌드를 글 아래에 올려 뒀어요. 밤이 너무 어두운지, 적당한지 댓글로 알려 주세요.

이 글에서 쓴 파일

scrapyard-survivor-web.zip직접 해 볼 수 있는 웹 빌드예요. 압축을 풀고 폴더에서 npx serve . 로 띄운 뒤 크롬으로 열어요. · 82MB
내려받기
공유X에 공유

이어 읽기

댓글 0

가입 없이 써요. 비밀번호는 고치거나 지울 때 써요 · 댓글 규칙

아직 댓글이 없어요. 첫 이야기를 남겨 주세요.