1-2
숲길을 걷기 시작한 지 채 3분도 안 됐는데 다리가 후들거렸다. 허벅지가 무겁게 가라앉았고, 종아리에서 미세한 경련이 일었다. 주머니 속 종이가 걸음마다 허벅지에 부딪혔다.
부스럭, 부스럭.
"체력이 너무 낮아..."
발을 멈췄다. 나무 한 그루에 등을 기댔다. 거친 나무껍질이 등을 통해 느껴졌다. 숨을 고르는 사이, 주머니 속 양피지가 또 허벅지에 닿았다.
주머니에 손을 넣었다. 손가락 끝에 양피지의 거친 질감이 닿았다. 모서리가 살짝 말려 있었다. 조심스럽게 꺼냈다. 햇빛이 종이 표면을 비췄다. 빛을 받은 종이가 미세하게 반짝였다.
낙엽이 깔린 바닥에 엉덩이를 내려놓았다. 축축한 냉기가 바지를 통해 스며들었다. 차가웠지만 개의치 않았다. 종이를 무릎 위에 조심스럽게 펼쳤다.
문양들이 다시 보였다. 하지만 아까 처음 봤을 때와는 확연히 달랐다. 선들이 정렬돼 있었고, 점들이 규칙적으로 배치돼 있었다.
집중해서 보자, 문양들이 또다시 변하기 시작했다. 애매하던 곡선이 날카로운 괄호로 바뀌었다. 흐릿하던 점이 선명한 세미콜론이 됐다. 고리들이 중괄호로 변형됐다. 마치 렌즈의 초점이 맞춰지듯, 모든 게 또렷해졌다. 심지어 들여 쓰기까지 자동으로 정렬됐다.
"완전히 코드잖아..."
이번에는 더 많은 것이 보였다.
Ignis.orb() -> throw
Aqua.stream() -> flow
Vento.gust() -> push
Terra.wall() -> barrier
네 줄의 코드. 클래스명, 점 연산자, 메서드명, 괄호, 화살표, 반환값. 완벽한 객체지향 구조였다. 대학 시절 배웠던 그대로. 교수님이 칠판에 적던 예제 코드와 똑같은 형식.
클래스명이 특이했다. Ignis, Aqua, Vento, Terra. 라틴어처럼 보였다.
"불, 물, 바람, 땅..."
손가락으로 첫 번째 줄을 천천히 짚었다. Ignis.orb(). 종이의 질감이 지문에 느껴졌다.
"Ignis 클래스의 orb 메서드... 반환값은 throw."
던진다는 뜻. 불을 던지는 건가.
두 번째 줄. Aqua.stream() -> flow. 물이 흐른다. 세 번째 줄. Vento.gust() -> push. 바람이 민다. 네 번째 줄. Terra.wall() -> barrier. 땅이 방벽을 만든다.
시선을 더 아래로 내렸다.
if (mana >= 10) {
Ignis.orb();
} else {
return "insufficient_mana";
}
조건문. if-else 구조. 익숙한 문법이었다.
"마나가 10 이상이면 실행... 미만이면 부족 메시지."
게임에서 쓰는 자원 관리 시스템 그대로였다.
그 아래에는 반복문도 있었다.
for(int i=0; i<3; i++) {
Vento.gust();
delay(500);
}
"3번 반복... 0.5초 간격으로 바람을..."
시퀀스 제어. 시간 제어까지 가능하다는 뜻.
손바닥에 땀이 배었다. 종이 모서리가 살짝 축축해졌다. 심장이 빨리 뛰기 시작했다.
"만약 이게 진짜로..."
말끝을 흐렸다. 입 밖으로 내기엔 너무 황당한 가정이었다. 하지만 지금 상황 자체가 이미 말이 안 됐다. 회사 책상에서 쓰러졌는데 숲에서 깨어났다.
손가락이 종이 위를 계속 헤맸다. 한 줄 한 줄 읽고 또 읽었다.
"실행 방법이 뭐지..."
컴파일러도 없고, IDE도 없고, 실행 버튼도 없었다. 그냥 종이 한 장뿐.
"음성은 안 됐고... 터치도 안 됐고..."
종이를 들어 여러 각도로 돌려봤다. 뒷면은 비어 있었다. 특별한 장치 같은 건 보이지 않았다.
"이 종이는 내가 읽으면 반응했어. 글자가 변했어."
시선을 종이에 고정했다. 문양들이 또렷하게 박혀 있었다.
"그럼 단순히 읽는 것보다 더 깊은 뭔가가 필요한 건가..."
손가락으로 Vento.gust() 부분을 다시 짚었다. 이번에는 진심으로 집중했다. 눈을 감았다. 깊게 숨을 들이마셨다. 천천히 내쉬었다. 손가락 끝에 의식을 모았다. 종이에 닿은 그 작은 지점에. 뭔가를 보낸다는 상상을 했다.
몇 초가 지났다.
십 초가 지났다.
아무 일도 일어나지 않았다.
눈을 떴다. 허탈감이 밀려왔다.
"역시 안 되는 건가..."
다시 시도했다. 이번에는 더 강하게 집중했다. 손가락 끝에 모든 의식을 쏟아부었다. 땀이 맺혔다. 미간에 주름이 잡혔다.
여전히 변화 없었다.
세 번째 시도. 네 번째 시도. 다섯 번째 시도.
모두 실패했다.
"안 돼..."
종이를 접으려는 순간, 마지막 부분에 작은 글씨가 눈에 들어왔다. 지금까지 못 봤던 줄. 맨 아래 구석에 희미하게 적혀 있었다.
// 접촉 상태에서 마나 흐름을 감지하면 자동 실행
주석이었다. 프로그래머들이 코드에 설명을 달 때 쓰는 그 주석.
"접촉... 마나 흐름... 자동 실행..."
세 개의 키워드를 소리 내어 읽었다.
"마나..."
게임에서 쓰는 용어. 마법을 쓸 때 소모되는 에너지. 하지만 현실에서는 존재하지 않는 개념.
'그런데 만약 여기서는 존재한다면?'
심장이 더 빨리 뛰기 시작했다. 귀에서 맥박 소리가 들렸다.
쿵쿵쿵.
"만약 내 몸에 마나가 있다면... 그걸 종이에 흘려보낼 수 있다면..."
종이를 다시 무릎 위에 펼쳤다. Vento.gust() 부분에 손가락을 댔다. 이번에는 더 신중하게. 눈을 감았다. 깊게 숨을 들이마셨다.
'마나를 흘려보낸다... 어떻게?'
에너지를. 의지를. 내 안에 있을지도 모르는 무언가를.
초침이 가는 소리가 들리는 것 같았다. 물론 착각이었다. 시간이 느리게 가는 느낌만 들었다.
몇 초가 지났다.
십 초가 지났다.
이십 초가 지났다.
아무 일도 일어나지 않았다.
눈을 떴다.
"... 안 돼."
종이를 접으며 한숨을 쉬었다. 손이 떨렸다. 다시 주머니에 넣었다. 양피지가 주머니 안으로 들어가며 바스락 소리를 냈다. 일어서려는데, 다리에 힘이 없었다. 체력이 바닥이었다. 앉아서 이것저것 시도만 했는데도 지쳤다.
"일단 물부터..."
멀리서 들리는 물소리를 따라갔다. 천천히, 한 걸음씩. 나뭇가지를 잡고 몸을 지탱했다. 나무에 기대어 숨을 고르고, 다시 걸었다. 몇 걸음 가지 못해 또 멈췄다. 허벅지가 후들거렸다. 종아리에 쥐가 날 것 같았다.
종이는 여전히 주머니 속에서 허벅지를 두드렸다. 걸음마다, 부스럭, 부스럭.
"나중에... 다시 시도하면 돼."
개발자는 포기하지 않는다. 버그를 만나면 해결할 때까지 파고든다. 하루가 걸리든, 이틀이 걸리든.
"급할 것 없어. 천천히..."
물소리가 점점 가까워졌다. 졸졸졸. 맑은 소리. 작은 개울 소리 같았다.
나뭇가지 사이로 빛이 반짝였다. 햇빛을 받은 물이 반짝이는 것 같았다. 몇 걸음 더 가자, 개울이 보였다. 맑은 물이 바위 사이로 흐르고 있었다. 물가에 도착하자마자 무릎을 꿇었다. 손을 담갔다. 차가웠다. 손을 모아 물을 떠 마셨다. 목구멍으로 차가운 물이 넘어갔다. 시원했다.
몇 모금 더 마셨다. 숨이 조금 편해졌다.
물가에 앉아 발을 담갔다. 신발째로. 차가운 물이 신발을 적셨지만 신경 쓰지 않았다. 시원함이 종아리까지 전해졌다.
주머니에서 종이가 다시 느껴졌다. 부스럭.
'아직 끝난 게 아니야.'
물을 바라보며 생각했다. 실행 방법을 찾아야 한다. 분명 방법이 있을 것이다. 다만 아직 모를 뿐.
"차근차근... 단계별로..."
물이 바위에 부딪히며 흘렀다. 졸졸졸. 그 소리를 들으며 잠시 쉬었다. 체력을 회복해야 했다.
그다음에 다시 생각하면 된다.
[계속]
네이버 웹소설 - http://novel.naver.com/best/detail?novelId=1195007&volumeNo=2
문피아 - https://novel.munpia.com/500060/neSrl/7368628