코드로 세상을 지배하는 마법사

6화: 제자의 재능
새벽의 첫 빛이 별관측탑의 창틀을 핥고 지나갈 무렵이었다.
레온은 양팔에 기록지를 끌어안은 채 계단을 뛰어 올라왔다. 종이와 수정판이 부딪히며 요란한 소리를 냈다.
“대마법사님! 제국령 관측 기록을 가져왔습니다!”
엘리언은 창가에서 고개를 돌렸다. 밤새 꺼지지 않은 마력석의 빛이 그의 얼굴 절반을 푸르게 물들이고 있었다.
“책상에 놓아라.”
“그런데 북쪽 문 앞에 누가 쓰러져 있습니다.”
말이 끝나기도 전에 아래층에서 뿌리가 부서지는 소리가 들렸다.
엘리언이 입구로 내려가자 돌계단이 초록색 덩굴에 휘감겨 있었다. 덩굴 사이로 한 여자가 비틀거리며 걸어오고 있었다.
맑은 녹색 머리카락과 길쭉한 귀. 그녀의 두 손 사이에서는 작은 정령핵이 떨고 있었다. 뒤편의 나무뿌리들이 일제히 솟구쳤다.
“멈춰!”
여자가 손을 들자 뿌리들은 허공에서 멎었다. 하지만 정령핵에서 새어 나온 마력은 그녀의 팔을 타고 올라가 심장 부근에서 소용돌이쳤다.
그림자 속의 가고일이 낮게 으르렁거렸다.
“주인님. 저 엘프에게서 먼 곳의 냄새가 납니다. 아래에서 올라오는 검은 선과 비슷합니다.”
“마력부터 본다.”
엘리언이 다가서자 여자는 지팡이를 겨눴다. 끝에서 가느다란 바람칼이 생겨났다.
“당신이 엘리언입니까?”
“맞다. 지팡이를 내려라.”
“정령들이 제 말을 듣지 않습니다. 고칠 수 있다고 들었습니다.”
“고치는 건 네 몸이 아니라 네 주문이다.”
여자의 눈동자가 흔들렸다.
“아직 제 이름도 모르면서요?”
“왼쪽 어깨에서 시작한 마력선 세 개가 심장 앞에서 서로의 꼬리를 물고 있다. 이대로 두면 마력핵이 찢어진다.”
여자는 입술을 깨물었다.
“……아리엘입니다. 이실라 숲의 정령사예요.”
“언제부터 이런 일이 반복됐나?”
“사흘 전부터요. 처음에는 바람 정령 하나가 부름을 거부했습니다. 어제는 뿌리 정령이 나타났고 오늘은 둘이 한꺼번에 엉켰습니다.”
아리엘의 목소리에 억눌린 분노가 섞였다.
“제가 정령술을 잘못 배운 걸까요? 숲을 지키겠다고 나섰는데 정령들이 저를 적으로 보기 시작했습니다.”
엘리언은 그녀의 손목에 닿지 않은 채 공중에 은빛 선을 그었다. 디버그 모드가 열리자 피부 아래의 마력선이 문자와 기호로 바뀌었다.
SpiritChannel current;
current.owner = Ariel;
current.element = Forest;
bind(current, spirit);
첫 줄 아래에는 새 채널을 만드는 연결이 없었다. 대신 회색 선 하나가 이전 계약의 흔적을 물고 있었다.
“정령 계약을 다시 보여 줘라.”
“지금 당장요?”
“오류는 멈춰 있을 때보다 실행될 때 찾기 쉽다.”
“폭주하면요?”
“내가 멈춘다. 네가 연결을 놓지만 마라.”
아리엘은 잠시 그를 바라보다가 연구실 중앙으로 걸어갔다.
엘리언은 바닥에 임시 결계를 펼쳤다. 레온에게 기록석 세 개를 건넸다.
“첫 번째는 아리엘의 마력량. 두 번째는 정령핵의 진동. 세 번째는 결계 손상도다.”
“정령을 부르는 동안에도 기록합니까?”
“관찰하지 않으면 수정도 추측이 된다.”
아리엘은 눈을 감고 낮게 노래했다. 엘프의 언어가 물결처럼 퍼졌다. 바닥의 씨앗이 싹을 틔웠고 천장에 맺힌 물방울이 허공으로 떠올랐다.
바람 정령이 먼저 모습을 드러냈다. 투명한 몸체가 그녀의 오른쪽 어깨를 감쌌다.
곧바로 바닥에서 뿌리가 솟았다.
current.owner = Ariel;
두 흐름이 같은 마력선을 잡아당겼다. 바람 정령은 뿌리 정령의 몸 안으로 빨려 들어갔고 뿌리 정령은 아리엘의 가슴을 향해 가시를 뻗었다.
“으윽…… 전과 같습니다!”
레온의 기록석에서 붉은 숫자가 빠르게 올라갔다.
“마력량이 급격히 늘어납니다! 결계도 흔들립니다!”
엘리언은 두 정령 사이에 손을 뻗었다. 눈앞의 코드가 폭풍처럼 흔들렸다.
SpiritChannel current;
reference -> previous_contract.wind
reference -> previous_contract.root
변수는 선언되어 있었다. 하지만 새로 만들어지지 않았다. 이름표만 붙은 빈 자리에 이전 계약의 참조가 남아 있었다.
“아리엘. 바람 정령의 이름을 말해라.”
“실피!”
“뿌리 정령은?”
“그루!”
“둘을 분리해서 불러. 서로의 흐름을 잡아당기지 말고 각각 네 손으로 이어.”
“제가 어떻게—”
“정령을 누르지 마라. 꼬인 건 정령이 아니라 통로다.”
아리엘은 눈을 뜨고 두 손을 벌렸다. 한쪽 손바닥에는 차가운 바람이 모였고 다른 손바닥에는 흙의 기운이 맺혔다.
그러나 두 마력은 계속 하나의 고리로 합쳐졌다.
“안 됩니다! 주문이 멋대로 이어집니다!”
엘리언은 첫 줄의 회색 선을 따라갔다. 선의 끝은 바닥의 낡은 정령 계약석으로 이어져 있었다. 과거의 채널이 지워지지 않은 채 새 계약을 붙잡고 있었다.
“문제는 정령을 다루는 재능이 아니다.”
엘리언은 손끝에 은빛 마력을 모았다.
“빈 변수를 새 그릇으로 착각한 것이다.”
그는 SpiritChannel current;의 끝에 마력선을 대었다. 붉은 경고창이 번쩍였다.
[Warning: reference count changed]
[Unstable edit: active contract]
레온이 외쳤다.
“수정하면 계약이 끊기는 것 아닙니까?”
“끊는 게 아니다. 새로 만든다.”
엘리언은 낡은 계약석으로 이어진 선을 자르지 않고 선언문 뒤에 푸른 문장을 덧붙였다.
SpiritChannel current = new SpiritChannel();
새 문장이 들어간 순간 마력진 안에 투명한 그릇 하나가 생겼다. 바람과 뿌리의 흐름이 그 안으로 빨려 들어갔다.
하지만 이전 참조가 완전히 끊기지 않았다. 계약석에서 검은 실 하나가 뻗어 새 채널의 바닥을 붙잡았다.
엘리언은 손등의 붕대를 풀었다. 화상 자국이 붉게 갈라졌다.
“아리엘. 지금부터 네가 해야 한다.”
“무엇을요?”
“실피의 흐름은 왼손으로 잡아. 그루는 오른손에서 놓지 마라. 둘 사이에 선이 생기면 네가 먼저 끊어.”
“제가 그 선을 구분할 수 있을 리가…….”
“할 수 있다. 지금까지도 구분하고 있었으니까 네가 여기까지 버틴 거다.”
아리엘의 손끝이 떨렸다. 그녀는 바람 정령의 울음과 뿌리 정령의 진동을 차례로 느꼈다. 하나는 귀 옆을 스치는 찬 공기였고 다른 하나는 발바닥 아래에서 올라오는 둔중한 박동이었다.
“……찾았습니다.”
아리엘은 왼손의 바람을 끌어당겼다.
“실피는 위로 올라가려 합니다. 그루는 아래에 남으려 해요.”
“그럼 서로 다른 채널에 넣어라.”
아리엘은 숨을 깊이 들이마셨다. 두 손이 반대 방향으로 움직였다.
검은 실이 팽팽하게 당겨졌다.
엘리언은 그 순간 낡은 참조를 끊었다.
쨍!
정령핵 안에서 유리잔이 깨지는 소리가 났다. 바람 정령과 뿌리 정령이 서로 다른 빛으로 갈라졌다. 연구실을 뒤흔들던 소용돌이가 두 개의 가느다란 줄로 정리되었다.
레온이 기록석을 확인했다.
“마력량이 내려갑니다! 정령핵의 진동도 안정됐습니다!”
그 순간 관측탑 아래에서 검은 맥박이 솟구쳤다.
가고일이 그림자 밖으로 한쪽 팔을 드러냈다.
“주인님. 아래의 선이 새 채널을 건드렸습니다.”
연구실 바닥의 결계석이 동시에 어두워졌다. 새 정령 채널을 타고 낯선 파동이 올라왔다.
엘리언은 외부 경로를 확인했다. 붉은 선은 아리엘의 정령진을 스치고 지하로 이어지고 있었다.
“지금은 건드리지 않는다.”
그는 선 위에 임시 봉인을 덮었다. 파동은 정령진에서 밀려났지만 완전히 사라지지는 않았다.
아리엘은 두 정령을 바라보고 있었다. 실피는 왼쪽 어깨 위를 맴돌았고 그루는 발치의 흙 속에 작은 잎을 틔웠다.
“살아 있습니다.”
아리엘의 목소리가 떨렸다.
“두 정령 모두 제 목소리를 듣고 있어요.”
“네가 들은 거다. 주문이 이제 그 소리를 방해하지 않을 뿐이지.”
실피가 엘리언에게 다가왔다. 작은 바람의 몸체가 그의 손등에 남은 화상 위를 스쳤다. 통증이 가라앉자 엘리언은 정령의 내부 구조를 다시 확인했다.
새 채널의 끝에서 낯선 표식 하나가 깜빡였다.
test_scope: active
access: restricted
엘리언은 손을 멈췄다.
“그 표식은…….”
“무슨 문제라도 있습니까?”
“아직 모른다. 현재 권한으로는 읽을 수 없는 기록이다.”
그는 표식을 억지로 열지 않았다. 권한 바깥의 선을 건드리면 외부 파동이 다시 정령진으로 흘러들 수 있었다.
아리엘은 잠시 두 정령을 바라보다가 엘리언 앞에 무릎을 꿇었다.
“저를 제자로 받아 주세요.”
엘리언은 대답하지 않았다.
“방금 고친 건 제 주문이지만 그 구조를 만든 건 선생님입니다. 저는 정령의 흐름을 느낄 수 있습니다. 선생님은 그 흐름을 읽을 수 있고요. 함께라면 숲의 이상도 고칠 수 있을 겁니다.”
“정령을 다루는 법이 아니라 오류를 알아내는 법을 배우고 싶은 건가?”
“네.”
엘리언은 그녀를 바라봤다. 아리엘은 폭주 속에서도 연결을 놓지 않았고 자신의 감각으로 두 흐름을 구분했다.
“좋다. 첫 수업은 기록이다. 정령의 이름과 마력량 그리고 흐름의 변화를 매번 적어라.”
레온이 기록석을 들어 올렸다.
“기록은 제가 돕겠습니다.”
아리엘이 그에게 고개를 숙였다.
“잘 부탁드립니다.”
그루가 갑자기 뿌리를 뻗었다. 뿌리 끝은 연구실 북쪽 바닥을 가리켰다. 실피도 같은 방향으로 작은 회오리를 일으켰다.
아리엘이 물었다.
“저쪽에 무언가 있습니까?”
“아래로 이어지는 경로가 있다.”
“숲의 정령들도 그걸 느끼는 것 같아요. 사흘 전부터 뿌리 아래에서 낯선 물이 흐르는 소리가 났습니다.”
엘리언은 봉인 아래 남은 붉은 선을 바라봤다. 정령의 채널을 통해 외부 경로가 숲까지 뻗어 있었다.
마력은 가벼워졌다. 대신 숨겨진 연결은 세 갈래로 늘어났다.
“아리엘.”
“네.”
“네 정령들이 가리키는 곳으로 간다.”
엘리언의 손끝에서 새로 만든 채널의 구조가 푸르게 빛났다.
SpiritChannel current = new SpiritChannel();
이번에는 그 문장 뒤에 낯선 세계의 선이 붙어 있었다.
route -> Imperial_Network_Sector_04
관측탑 아래의 맥박이 다시 한 번 울렸다.
제자의 첫 수업은 끝나지 않았다. 이제 그들은 정령의 뿌리를 따라 고장 난 경로의 시작점을 찾아야 했다.