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

2화: 마법인가, 프로그래밍인가
새벽이 세 번 바뀌도록 엘리언은 연구실을 나가지 않았다.
관측진의 고리에는 그가 덧댄 가느다란 마력선이 남아 있었다. 은빛 룬 사이에 낀 선은 다른 누구의 눈에도 보이지 않았다. 견습생들이 보기에는 폭주가 지나간 자리에 남은 그을음 정도였다.
엘리언은 탁자 위의 기록지를 넘겼다. 같은 도식을 열두 번 옮겨 적었지만 결론은 하나였다.
call(star_trace);
그 문장은 분명히 있었다.
문제는 그것이 그의 피로가 만든 환각인지 실제 규칙인지였다.
“레온.”
문가에서 졸고 있던 견습생이 번쩍 고개를 들었다.
“예, 대마법사님.”
“1서클 조명구의 표준 도식을 가져와라. 탑의 보관본으로.”
레온은 잠시 멈칫했다.
“관측진은 다시 손대지 않으시는 겁니까?”
“손대지 않는다. 어제의 것은 너무 큰 장치였어.”
엘리언은 손등을 감싼 붕대를 내려다봤다. 한 줄을 고친 대가치고는 지나치게 아팠다. 이 세계의 법칙이 그를 받아들인 것이 아니라 억지로 밀어냈다는 뜻이었다.
“작은 것부터 확인한다. 폭발해도 창문 하나 깨지지 않을 마법으로.”
레온은 고개를 끄덕이고 달려 나갔다.
잠시 뒤 그가 가져온 것은 얇은 양피지 한 장이었다. 초보 마법사가 가장 먼저 배우는 조명구 도식이 붉은 잉크로 정갈하게 그려져 있었다. 빛의 성질을 정하는 룬과 모양을 붙드는 룬, 시전자의 손끝을 목표로 삼는 룬이 원을 이루고 있었다.
엘리언이 종이 위에 손을 얹었다.
아무 일도 일어나지 않았다.
그는 마나를 한 줄기 흘려보냈다.
룬의 가장자리가 푸르게 젖었다. 그러자 종이 위의 고대어가 흔들렸다. 굽은 선은 괄호가 됐고 서로 닿지 않던 세 개의 표식은 낯익은 글자로 바뀌었다.
lumen(anchor);
엘리언의 눈빛이 가라앉았다.
빛을 뜻하는 룬이 먼저였다. 그 뒤에는 손끝을 뜻하는 목표 룬이 들어갔다. 마지막 바깥 고리는 모든 룬을 한 번에 감싸고 있었다.
그는 하얀 형광등 아래의 검은 화면을 떠올렸다. 이름 뒤에 괄호가 붙고 안에 값이 들어가면 컴퓨터는 그 이름이 가리키는 일을 실행했다.
‘조명구를 만든다는 뜻이 아니다.’
엘리언은 가는 펜촉에 마력을 모았다.
‘조명구를 불러오라는 문장이다.’
“대마법사님?”
“실험한다.”
레온의 얼굴이 하얗게 질렸다.
“그 도식은 기초 주문입니다. 굳이 손보실 필요가…”
“기초라서 손보는 거다. 실패해도 피해가 작으니까.”
엘리언은 바깥 고리의 일부를 끊지 않고 아주 얇게 벌렸다. 전통 마법에서 룬의 배치를 바꾸는 일은 주문의 뼈를 부러뜨리는 짓이었다. 레온이 숨을 삼켰다.
마력선이 종이에 닿자 조명구의 룬이 탁자 위에서 희미하게 떨렸다.
엘리언은 빛의 룬과 목표 룬을 안쪽으로 모았다. 그리고 마지막 실행 고리를 두 룬 바깥으로 밀어 냈다.
cast(lumen, anchor);
문장이 완성되는 순간 손등의 화상이 타는 듯 욱신거렸다.
붉은 글자가 시야 끝에 스쳤다.
[Warning: unstable edit]
엘리언은 이를 악물었다. 관측진에서 그랬듯 이질적인 선을 거부하는 힘이 종이 한 장에도 있었다. 손끝이 조금만 미끄러지면 양피지의 작은 원이 전날의 거대한 고리처럼 되먹임을 만들 수도 있었다.
그는 마력 공급을 끊지 않은 채 실행 고리의 끝을 원래 자리보다 한 획만 낮췄다. 빛의 룬과 목표 룬이 서로를 향해 당겨졌다. 종이 위에서 세 룬이 마치 숨을 맞추듯 한 번 깜빡였다.
“발동시킨다.”
“잠깐만요!”
엘리언이 손가락을 튕겼다.
탁자 위에 빛이 번졌다.
조명구는 그의 손끝에서 생기지 않았다. 양피지 위의 목표 룬 바로 위에 동전만 한 빛구가 떠올랐다.
레온이 입을 벌렸다.
“목표가… 종이 안에 있었습니다.”
“그래. 시전자의 손은 힘을 넣는 곳일 뿐이야.”
엘리언은 빛구를 살폈다. 흔들림도 없었다. 다만 평범한 1서클 주문 하나를 유지하는 데 드는 마력보다 세 배는 더 많은 힘이 빠져나가고 있었다.
그는 손끝에 모이던 마력을 절반만 거두었다. 보통의 조명구라면 이때 바로 꺼져야 했다.
빛구는 양피지 위에 남아 있었다. 목표 룬과 연결된 가는 빛줄기만이 떨렸다. 시전자의 손은 빛을 만드는 장소가 아니라 시작 신호를 보내는 곳이었다.
엘리언은 빛구가 사라질 때까지 호흡을 세었다. 열두 번 뒤에 고정 룬이 흐려지자 빛은 조용히 꺼졌다. 유지 시간까지 도식 안에 적혀 있다는 뜻이었다.
한 번의 우연으로 치부하기에는 너무 정확한 반응이었다.
“주문은 마나를 흘려 넣는 그림이 아니군.”
그가 낮게 중얼거렸다.
“정해진 순서로 대상을 붙이고 실행을 요청하는 식이다.”
레온은 알아듣지 못한 얼굴이었다.
엘리언은 더 설명하지 않았다. 눈앞의 빛구가 모든 대답을 대신하고 있었다.
그는 양피지를 들고 지상 회랑으로 올라갔다. 아침 안개가 탑의 돌난간을 감싸고 있었다. 회랑 끝에는 연습용 석제 표적이 세 개 서 있었다.
“저 가운데 표적에 표시를 해라.”
레온이 붉은 분필로 원을 그렸다.
“조명구를 거기로 옮기시려고요?”
“옮기는 게 아니다. 처음부터 그곳에서 나오게 할 거다.”
엘리언은 바닥에 작은 원을 그렸다. 조명구의 표준 도식은 손끝 룬을 목표로 삼는다. 그는 그 자리에 석제 표적을 가리키는 방향 룬을 넣었다.
전통 이론으로는 성립하지 않을 수정이었다. 방향 룬은 빛의 이동에 쓰는 보조식이지 발동의 중심에 들어갈 자리가 아니었다.
그러나 그의 눈에는 문장이 보였다.
cast(lumen, target_mark);
엘리언은 마력을 밀어 넣었다.
첫 번째 시도에서 빛구는 반쯤 생겼다가 터졌다. 작은 파편이 뺨을 스쳤다. 레온이 뒤로 물러섰다.
“역시 순서를 건드리면 위험합니다.”
“순서가 틀린 게 아니야.”
엘리언은 돌 표적을 바라봤다.
“저 표적은 내게 보이는 대상일 뿐이다. 이 도식에는 아무것도 전달하지 못해.”
분필 원은 사람의 손으로 그린 표시일 뿐이었다. 마법진이 그것을 하나의 대상으로 알아볼 이유가 없었다. 그는 분필 선을 지우고 표적 발치에 은가루를 얇게 뿌렸다.
그 위에 조명구의 고정 룬을 아주 작게 베꼈다. 빛을 붙드는 기능을 표적에게 빌려주는 셈이었다.
cast(lumen, anchor(target_mark));
이번에는 문장이 더 길어졌다. 손등의 상처가 다시 벌어졌다. 피가 손가락을 타고 흘렀다.
레온이 다급히 말했다.
“멈추십시오. 조명구 하나 때문에 그 손을 더 다치게 하실 이유는 없습니다.”
엘리언은 웃지 않았다.
“이유가 있다.”
그는 피 묻은 손을 들어 올렸다.
“이게 된다면 마법을 외우는 방식부터 다시 생각해야 하니까.”
마력이 원을 채웠다.
이번에는 빛이 엘리언의 손끝으로 모이지 않았다. 회랑을 가로질러 날아간 푸른 선이 석제 표적의 은가루 위에서 둥글게 말렸다.
동전만 한 빛구가 떠올랐다.
정확히 표적 위였다.
레온은 한동안 숨도 쉬지 못했다. 조명구는 늘 시전자의 곁에서 피어난 뒤 이동해야 했다. 그런데 엘리언의 것은 처음부터 다른 곳에 있었다.
“마법이… 말을 들었습니다.”
“말을 들은 게 아니야.”
엘리언은 흔들리는 빛구를 바라봤다.
“정해진 대로 실행됐을 뿐이다.”
그가 손을 내리자 빛구가 꺼졌다. 동시에 무릎이 잠깐 흔들렸다. 작은 주문 두 번에 마력이 너무 많이 빠졌다. 기존 주문을 쓰면 들지 않았을 비용이었다.
엘리언은 난간을 짚고 숨을 골랐다.
규칙을 읽는 것과 규칙을 고치는 것은 전혀 다른 일이었다. 기존 마법은 수백 년 동안 다듬어진 길이었다. 그는 그 길 옆에 억지로 샛길을 냈다.
그 샛길은 아직 사람 하나가 겨우 지날 만큼 좁았다. 마력을 조금만 더 넣어도 길은 무너졌고 손을 떼면 흔적마저 사라졌다.
그래도 엘리언은 그 불완전함이 오히려 마음에 들었다. 원인을 알 수 없는 기적보다 실패하는 이유가 있는 도구가 훨씬 다루기 쉬웠다.
그럼에도 결과는 분명했다.
룬은 언어였다.
마법진은 명령을 받아 실행하는 구조였다.
그리고 자신은 그 명령이 적힌 자리를 볼 수 있었다.
엘리언은 기록지를 꺼내 방금 만든 도식을 적었다. 두 번 고쳐 쓴 문장 끝에서 시야가 한순간 흐려졌다.
흐릿한 고리 하나가 조명구의 실행 표식 옆에 겹쳐 보였다.
for (...) { cast(lumen, target); }
문장은 완성되지 않았다. 괄호 안은 검은 안개에 가려 있었다. 엘리언이 손을 뻗자 글자는 곧 사라졌다.
레온이 조심스럽게 물었다.
“무언가 보이십니까?”
엘리언은 기록지를 접었다.
“아직은 한 줄씩이다.”
그의 시선이 회랑의 석제 표적들에 머물렀다.
조명구 하나를 다른 위치에 만드는 데도 이만한 대가가 들었다. 그러나 같은 문장을 한 번에 여러 번 실행할 수 있다면 이야기는 달라진다.
엘리언은 탑 아래의 넓은 실험장을 내려다봤다.
“레온. 오늘 안에 5서클 화염구 도식을 준비해라.”
견습생의 눈이 커졌다.
“화염구를요?”
“그래.”
엘리언은 아픈 손등을 다시 감쌌다.
“다음에는 호출이 한 번으로 끝나는지부터 확인해야겠군.”