brunch

다른 세계 3

1-3

by jeromeNa

주머니에서 종이가 다시 느껴졌다. 부스럭.


'아직 끝난 게 아니야.'


물을 바라봤다.


졸졸졸. 그 소리를 들으며 잠시 쉬었다.


주변을 돌아봤다. 마른 풀이 적었다. 바람도 물 쪽으로 불었다. 혹시 불이 나도 번지진 않을 것 같았다. 물가 바위들도 널찍했다.


"여긴 괜찮겠네."


주머니에서 양피지를 꺼냈다. 햇빛 아래 펼치자 붉은 글자들이 선명해졌다.


Ignis.orb() -> throw


"파이어볼인가?"


함수명을 보니 그럴 것 같았다. 불덩이를 만들어서 던지는 함수. 그 아래 조건문이 하나 보였다.


if (mana >= 10) {
Ignis.orb();
}


else 구문이 없었다. try-catch도 없었다.


"예외 처리가 하나도 없네. 프로토타입 코드 그대로야."


실무였다면 바로 리젝 당할 코드였다.


손가락으로 코드를 다시 짚었다. 아까처럼 접촉만으로는 안 됐었다.


"빌드? 아니면 실행?"


개발 용어를 써봐야 할 것 같았다.

종이의 코드 부분에 손을 댔다.


"빌드."


종이 위의 기호들이 붉게 빛났다. 빛이 종이에서 떨어져 바닥으로 흘렀다.


"뭐야?"


뒤로 물러섰다. 빛은 발밑에 원을 그렸다. 반경 1미터. 얇은 광선들이 기하학적 패턴을 만들었다.

그리고 허공에 반투명한 패널이 떴다. 눈높이쯤. 푸른빛을 띤 반투명 화면이었다. 컴파일 로그처럼 한 줄씩 채워졌다.


'홀로그램?'


주변엔 그런 장비가 없었다.


숨을 죽였다. 패널에 문자가 떴다.


[Build Start] - 빌드 시작
[Parsing Code...] - 코드 분석 중...
[Syntax Check: OK] - 문법 검사: 정상
[Dependency Check: None] - 종속성 검사: 없음


"진짜 로그네... CI/CD 빌드 화면이잖아."


[Mana Usage: 12] - 마나 사용량: 12
[Warning] No exception handler found. - 경고: 예외 처리기를 찾을 수 없음
[Build Status: Success with Warnings] - 빌드 상태: 경고와 함께 성공


"사용량이 12. 조건문은 10 이상이면 실행... 조건은 만족하는 거고."


패널의 경고 메시지에서 눈을 뺄 수 없었다.


"예외 처리 없음. 역시 불안해."


패널을 손으로 만져봤다. 손가락이 빛을 통과했다.


'현실이었다면 바로 코드를 고치고 재빌드했을 텐데.'


편집기가 없었다.

발밑의 빛의 원 외곽이 완전히 밝아졌다. 패널 중앙에 메시지가 떴다.


[Ready to Run] - 실행 준비 완료


그 아래, 붉은색 커서가 깜빡였다.


침을 삼켰다.


"... 런."


빛의 원 중앙에서 붉은 구체가 생겼다. 처음엔 손톱만 했다. 점점 커졌다. 로딩 바처럼 일정한 속도로. 불덩이였다. 실제 불이었다. 구 형태를 유지하며 표면에 화염 무늬가 요동쳤다.


패널에 새 로그가 떴다.


[Run Start] - 실행 시작
[Ignis.orb() executing...] - Ignis.orb() 실행 중...
[Output Temperature: 1,200°C] - 출력 온도: 1,200°C
[Stability: 84%] - 안정성: 84%


"온도가 1200도?"


패널이 깜빡였다.


[Warning] Temperature Rising - 1,400°C - 경고: 온도 상승 중 - 1,400°C
[Warning] Mana Drain: 12 → 7 - 경고: 마나 소모: 12 → 7


불덩이가 농구공만큼 커졌다. 주변 공기가 말라붙었다. 가까운 풀잎 끝이 노랗게 말랐다. 열기가 얼굴에 직접 닿았다.


[Stability: 63%] - 안정성: 63%
[Error] Output Unstable - Containment Field Weakening - 오류: 출력 불안정 - 억제장 약화


"뭐야, 제어가 안 되잖아."


"stop!"


아무 반응 없음.


"halt!"


여전히 무반응.


"abort!"


빛의 원은 계속 돌아갔다. 불덩이는 점점 더 커졌다. 패널에 붉은 경고가 떴다.


[Critical] Stability: 42% - 치명적: 안정성: 42%
[Overheat] Containment Failure in 3... 2... - 과열: 억제 실패까지 3... 2...


"꺼져!"


뒤로 물러서며 발을 휘둘렀다. 불덩이 아래쪽 빛의 원을 걷어찼다. 불덩이가 균형을 잃으며 물속으로 굴러 떨어졌다.


쿠우웅!


낮은 폭발음이 울렸다. 뜨거운 수증기가 치솟았다. 시야가 하얗게 가려졌다. 얼굴과 팔에 뜨거운 물방울이 튀었다.


패널에 마지막 메시지가 떴다.


[Run Terminated - Abnormal Exit] - 실행 종료 - 비정상 종료
[Error Log Saved] - 오류 로그 저장됨


패널이 서서히 사라졌다. 발밑의 빛의 원도 꺼졌다.


김이 서서히 걷혔다. 불덩이는 사라졌다. 폭발 지점 주변의 바위들이 검게 그을려 있었다. 타다 남은 재가 물결을 따라 퍼졌다. 물 표면이 부글부글 끓었다. 근처 땅바닥에도 그을음 자국이 선명했다.


무릎을 짚었다. 거친 숨을 몰아쉬었다.


"하... 빌드 성공, 런 실패. 아니, 폭주."


양피지를 봤다. 해당 코드 부분이 옅은 붉은 얼룩으로 물들어 있었다.


"Ignis.orb()는 화염구 생성 함수. 확실해."


빌드 단계에서 예외 처리 경고가 있었다. 무시하고 실행했더니 실제로 문제가 생겼다.


"실행 시 출력 제어 불가능... 폭주 위험. 중지 명령도 안 먹혀."


손을 펴서 바라봤다. 손가락 끝이 미세하게 떨렸다.


'특수효과가 아니야. 실제로 빌드와 실행이 가능한 코드였어.'


안전장치가 없으면 바로 재앙이었다.


물 위에서 아직도 김이 희미하게 피어올랐다.


그때 숲 건너편에서 소리가 들렸다.


바스락. 바스락.


리듬이 일정했다.


누군가 아니, 뭔가 다가오고 있었다.


재빨리 양피지를 접어 주머니에 넣었다. 물가에서 뒤로 물러났다.

발걸음 소리가 점점 가까워졌다. 나무 뒤로 몸을 숨겼다. 숨을 죽였다.


방금 만든 불덩이가 주의를 끌었을 수도 있었다. 폭발음과 수증기. 숨기기엔 너무 시끄러웠다.

발걸음 소리가 더 가까워졌다.


나뭇가지 사이로 숲 건너편을 바라봤다.


아직 모습은 보이지 않았다.


'누가 오고 있어.'




[계속]


네이버 웹소설 - http://novel.naver.com/best/detail?novelId=1195007&volumeNo=3


문피아 - https://novel.munpia.com/500060/neSrl/7371124


keyword
월, 화, 수, 목, 금, 토, 일 연재