1-5
숲길을 따라 걸었다. 나무들이 빽빽했다. 가지들이 햇빛을 가렸다. 발밑의 낙엽이 바스락거렸다.
얼마나 걸었을까. 똑같은 풍경이 반복됐다. 나무, 또 나무, 그리고 나무. 방향 감각이 흐려졌다.
'이러다간 계속 헤맬 뿐이야.'
유성은 걸음을 멈췄다.
아까 물가에서 했던 것처럼, 이 코드를 좀 더 깊이 분석할 필요가 있었다. 단순히 실행만 해서는 안 됐다. 구조를 이해하고, 변수를 파악하고, 최적화할 방법을 찾아야 했다.
품에서 양피지를 꺼냈다.
근처 넓은 바위에 걸터앉아 양피지를 무릎 위에 펼쳤다.
이제 이 코드들을 하나씩 분석할 시간이었다.
양피지 위로 손끝을 천천히 움직였다.
if (mana >= 10) { Ignis.orb(); }
조건문이었다. 단순해 보였지만, 이 한 줄이 모든 걸 결정했다. 유성은 아래로 시선을 내렸다.
if (mana >= 5) { Vento.gust(); }
if (mana >= 15) { Terra.wall(); }
mana -= 10;
mana -= 5;
'mana.'
모든 함수가 이 변수를 확인했다. 실행 후에는 값이 줄었다. 리소스 관리 시스템이었다. 게임으로 치면 MP, 현실로 치면 스태미나.
문제는 현재 값을 모른다는 거였다.
빌드할 때 'Mana Available: 6'이라는 로그가 떴지만, 그건 매개변수를 지정했을 때만이었다. 지금 자신의 mana가 얼마인지는 알 수 없었다.
디버깅할 수 없는 코드. 변수값을 모르면 최적화도 불가능했다.
'로그를 추가해야 해.'
유성은 양피지의 코드들을 다시 훑었다. 지금까지는 실행만 했다. 수정은 시도한 적이 없었다.
일반적인 프로그래밍이라면 편집이 가능해야 했다.
'이 시스템도 그럴까?'
mana 변수에 집중했다. 손끝이 그 단어 위에 닿았다.
"mana."
종이 위의 글자들이 희미하게 빛났다. 마치 IDE에서 변수를 클릭했을 때처럼, 관련된 모든 부분이 하이라이트 됐다. 사용하는 곳, 감소시키는 곳, 아직 이해하지 못한 부분들. 각각 다른 색으로 구분되어 떠올랐다.
의존성 그래프였다.
'흐름은 보이는데...'
수정하는 방법을 찾아야 했다. 유성은 손끝으로 변수를 길게 눌렀다. 반응 없음. 두 번 톡톡 쳤다. 여전히 아무 일도 일어나지 않았다. 양피지를 접었다 펼쳤다. 변화 없음.
터치나 제스처로는 안 됐다.
'음성 명령이겠지.'
지금까지 "빌드", "런"으로 작동시켰으니까.
"open."
조용했다.
"modify."
아무 반응이 없었다.
"change."
여전히 침묵이었다.
개발자가 가장 자주 쓰는 기본 명령어. 유성은 짧게 내뱉었다.
"edit."
양피지 표면이 물결쳤다. 기호들이 공중으로 떠올랐다. 그리고 얇고 반투명한 패널이 펼쳐졌다. 홀로그램처럼 허공에 떠 있었다. 손을 뻗었지만 손끝이 그대로 통과했다.
패널 위에 코드가 그대로 복사되어 떠 있었다. 각 구문 옆에는 작은 아이콘들이 깜빡였다. 현대적인 IDE 인터페이스였다.
상단에 탭들이 나열되어 있었다.
/vars /hooks /logs /safety /optimize
유성의 입꼬리가 살짝 올라갔다.
/vars는 변수 관리, /hooks는 이벤트 처리, /logs는 디버깅 출력, /safety는 안전장치, /optimize는 성능 최적화. 구조가 명확했다.
"logs."
패널이 전환됐다. 빈 입력창이 나타났다.
"console.log(mana);"
아무 반응이 없었다. 코드 구문으로는 안 됐다.
"mana 값을 보여줘."
여전히 조용했다.
손가락으로 턱을 긁었다. 좀 더 구체적으로 말해야 했다.
"mana 값을 실시간으로 보여주는 로그를 추가해 줘."
패널이 잔물결처럼 흔들렸다. 코드의 적절한 위치에 새로운 구문이 자동으로 삽입됐다.
log("Current mana: " + mana); // 실행 전후 mana 값 출력
"...AI 코딩 어시스턴트잖아."
현실의 어떤 개발 도구보다 진보된 기술이었다.
"적용."
편집창이 사라지고, 양피지의 코드가 업데이트됐다.
"빌드."
[Build Start] - 빌드 시작
[Code Updated] - 코드 업데이트됨
[Build Status: Success] - 빌드 상태: 성공
"런."
안전한 바람 주문. 강도를 최소로 설정했다.
[Run Start] - 실행 시작
[Current mana: 15.0] - 현재 마나: 15.0
[Vento.gust() executing] - Vento.gust() 실행 중
[Current mana: 14.1] - 현재 마나: 14.1
[Mana consumed: 0.9] - 마나 소모량: 0.9
미세한 바람이 손끝에서 일었다. 풀잎 몇 개가 살짝 흔들렸다.
현재 mana는 15.0. 기본 바람 주문에 0.9 소모. 정확한 수치였다.
하지만 여기서 멈출 수 없었다.
"edit."
다시 편집창이 떠올랐다.
"optimize."
패널이 전환됐다.
"불 주문의 마나 소모량을 50% 줄여줘."
[Analyzing code] - 코드 분석 중
[Optimization target: Ignis.orb()] - 최적화 대상: Ignis.orb()
[Current cost: 10 mana] - 현재 비용: 10 마나
[Proposed: Algorithm efficiency improvement] - 제안: 알고리즘 효율성 개선
[New cost: 5 mana] - 새로운 비용: 5 마나
코드에서 mana -= 10;이 서서히 변했다. mana -= 5;로 교체됐다. 동시에 Ignis.orb() 함수 내부에도 미세한 변화가 생겼다.
"적용."
위험을 최소화하기 위해 강도를 절반으로 줄였다.
"빌드 파라미터: strength = 0.5."
"빌드."
"런."
[Current mana: 14.1] - 현재 마나: 14.1
[Ignis.orb() executing] - Ignis.orb() 실행 중
[Current mana: 9.1] - 현재 마나: 9.1
[Mana consumed: 5.0] - 마나 소모량: 5.0
작은 불덩이가 손바닥 위에 떠올랐다. 이전의 절반 크기였지만, 열은 똑같이 뜨거웠다. 마나 소모량은 정확히 절반으로 줄었다.
유성은 주먹을 불끈 쥐었다.
최적화가 가능했다. 이 시스템의 코드를 수정하고 개선할 수 있었다.
"edit."
편집창이 다시 나타났다.
"safety."
패널이 전환됐다.
"mana가 3 이하로 떨어지면 자동으로 모든 주문을 차단하는 안전장치를 만들어줘."
if (mana <= 3) {
log("Warning: Low mana. All spells disabled.");
return false;
}
코드가 자동으로 추가됐다.
마나 고갈로 인한 위험 방지. 폭주 차단. 마나 경고. 자동 비상 정지.
가능성은 무궁무진했다.
유성은 편집창을 닫고 양피지를 접었다. 뿌듯함이 올라왔다. 이 이상한 상황에서 자신만의 강점을 찾은 것 같았다.
그때였다.
바스락.
숲 저편에서 소리가 들렸다. 나뭇가지가 부러지는 소리. 발소리가 점점 가까워졌다.
유성이 고개를 돌렸다.
나무 사이로 실루엣이 보였다. 큰 키. 넓은 어깨. 손에는 커다란 방패. 그 사람은 잠시 멈춰 섰다. 그리고 유성이 앉아 있는 바위 쪽을 바라봤다.
공중에 떠 있는 반투명한 패널. 희미하게 빛나는 코드들. 손 위에서 사라지지 않은 마법의 잔열.
'사람이다!'
가슴이 두근거렸다. 드디어. 드디어 사람을 만났다.
얼마나 헤맸나. 몇 시간째 같은 나무들만 보고 있었다. 여기가 어디인지, 어떻게 나가는지, 누구라도 좋으니 물어보고 싶었다.
유성은 양피지를 급히 접어 넣으며 손을 번쩍 들었다.
"저기요! 실례지만—"
그 사람이 유성을 똑바로 봤다.
찰나, 몸을 휙 돌려 숲 속으로 뛰어들었다. 나뭇가지가 우두둑 부러지는 소리. 발걸음이 빠르게 멀어졌다.
"어? 잠깐만요!"
유성이 바위에서 내려와 뒤따라 가려했다.
쫓아가다 다리가 휘청거렸다. 숨이 턱까지 차올랐다. 심장이 터질 것 같았다. 체력이 완전히 바닥났다.
나무에 손을 짚고 멈춰 섰다.
그 사람의 모습은 이미 숲 속으로 완전히 사라진 후였다.
"하아... 하아..."
거친 숨을 몰아쉬며 유성은 고개를 갸웃거렸다.
'왜 도망간 거지?'
단순히 길을 물어보려던 것뿐인데.
숲에 다시 정적이 내려앉았다.
바위에 홀로 남았다.
바람이 나뭇잎을 흔들었다.
[다른 세계 끝. 다음 화에 계속]
네이버 웹소설 - http://novel.naver.com/best/detail?novelId=1195007&volumeNo=5
문피아 - https://novel.munpia.com/500060/neSrl/7371961