Truyen2U.Net quay lại rồi đây! Các bạn truy cập Truyen2U.Com. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

2


Ngoại Truyện

Emi biết mình đang viết một thứ gì đó không thể push lên Git. Không có version control nào cho một đoạn cảm xúc đã bị branch khỏi thực tại. Cô mở lại một bản script cũ - một passive voice line bị reject trong đợt QA gần nhất.

"It only triggers if she gets too close."

Câu đó, ban đầu, là để dành cho một hero mới trong season sắp tới. Nhưng giờ đây, khi đọc lại, Emi thấy nó như lời nhắc nhở chính mình. Giới hạn đó, sự gần gũi đó, là điều cô đã luôn viết tránh khỏi.

Bàn tay cô đặt lên con chuột, nhưng không nhấn. Ánh đèn từ màn hình hắt lên gò má đã hơi gầy đi, không phải vì thiếu ngủ, mà vì đã thôi tự nhắc bản thân ăn đúng bữa từ tháng trước.

Hôm ấy, Bonnie bước vào studio trong chiếc áo hoodie oversized màu trắng ngà, cổ tay áo hơi lấm lem dấu bút. Có một mùi lavender dịu nhẹ trôi qua khi cô ấy đi ngang, để lại dư âm trong không khí, như một passive skill không kích hoạt được chỉ vì thiếu một frame.

"Lead ơi, cái đoạn này mình nên để voiceover chạy song song với animation hay tách scene ra nhỉ?"

Giọng Bonnie lúc ấy không có gì đặc biệt. Nhưng Emi nhớ, mình đã quay lại nhìn. Không phải vì câu hỏi đó. Mà vì cách cô ấy gọi mình: "Lead". Không phải "sếp", không phải "cô Emi" như mấy intern hay gọi. Mà là một từ nhịp giữa.

Một vị trí vừa đủ để không quá gần, nhưng đủ để bị nhớ.

Khi Emi nhận lời sang Seoul trong hai tuần làm cố vấn cho một studio indie, cô mang theo tai nghe in-ear cũ, chiếc đã từng dùng để nghe test voice line từ Bonnie thu. Nó vẫn nằm trong túi áo khoác, dù đã không còn kết nối Bluetooth nữa.

Ngày thứ bảy ở Seoul, trong lúc đi bộ từ Hongdae về Gyeongnidan, Emi mở lại bản patch notes nội bộ của SAGECRAFT. Dưới mục “narrative bugs pending”, vẫn còn dòng ghi chú: Player reports inconsistent emotion in Hero 07’s memory sequence. Investigate.

Cô đã biết bug đó là gì. Không phải lỗi kỹ thuật, mà là một lỗ hổng cảm xúc. Một đoạn script Emi từng xóa đi, rồi thử viết lại, rồi lại xoá. Vì sợ nó trigger một thứ quá riêng tư.

Đó là voice line Bonnie từng viết draft:

"I want to say it, but my script breaks every time I try."

Lúc ấy, Emi đã cười nhẹ. Trong lòng. Câu thoại đó không bao giờ được duyệt. Vì nó không cần thiết cho gameplay. Nhưng nó cần thiết với cô. Như một lời chưa gửi.

Tháng sáu ở Singapore có kiểu nắng âm ấm và ẩm như những đoạn loading không bao giờ đủ 100%. Emi quay trở lại văn phòng với một cảm giác vừa lạ vừa quen, như khi bạn load lại một save file cũ nhưng bản đồ đã được cập nhật.

Bonnie đã chuyển sang làm dự án khác. Emi biết. Họ chỉ còn làm chung một vài buổi review định kỳ, và cả hai đều cố giữ lịch đó đúng giờ, không trễ, không kéo dài. Một loại tôn trọng im lặng.

Một chiều muộn, trong lúc kiểm tra lại đoạn animation loop của Hero 13, Emi vô tình chạm vào một trigger cũ. Một đoạn script Bonnie từng viết. Vẫn lưu ở folder test, chưa merge.

"If I stand still, maybe she'll notice I'm still here."

Emi tắt đoạn đó. Nhưng không xoá.

Cô không kể với ai về đêm mình khóc trong khách sạn ở Seoul. Không vì buồn. Mà vì nhận ra mình đã quen với việc sống không để ai chạm vào các biến toàn cục bên trong.

Cô từng dạy Bonnie viết dialogue như nói chuyện với bản thân ở một universe khác. Giờ đây, chính cô đang nói chuyện với chính mình như vậy. Qua từng dòng code, từng conditional trigger:

if (emotion == "muted") and (distance < safe_range):
    display("You’re still within me.")
else:
    display("Maybe that’s okay.")

Khi trở về Singapore, Emi ghé Clarke Quay vào một buổi chiều mưa nhẹ. Cô ngồi trong quán cà phê nơi từng cùng Bonnie viết ý tưởng cho hero thứ 13. Chiếc bàn cũ vẫn còn đó. Gỗ đã tróc sơn. Mặt kính phía cửa sổ vẫn đọng nước mưa từng giọt chậm.

Cô lấy ra chiếc bút ngòi đã cũ, cây bút mà Bonnie tặng nhân dịp SAGECRAFT cán mốc 5 triệu người chơi. Cây bút màu đen tuyền, khắc dòng chữ: To stories we’ve yet to write.

Emi viết một đoạn script nhỏ, như một thói quen:

If (distance < 1m) and (state == "hesitant") {
    trigger: "hand reaches for hand, but stops halfway."
    trigger: "breath held for 0.7s."
    trigger: "no dialogue."
}

Rồi cô để bút xuống. Không lưu file.

Trong studio vào một tối cuối tuần, khi chỉ còn mình cô ở lại, Emi bật replay mode.

Đoạn cutscene cuối cùng giữa Hero 07 và Hero 13. Không ai nói gì trong 11 giây cuối.

Cô tua chậm lại. Tua chậm hơn nữa.

Ở frame 741, cô thấy ánh mắt Bonnie từng mô tả. Không phải yêu. Nhưng cũng không phải không.

Cô viết một dòng cuối vào file ghi chú cá nhân:

«She never said it. I never asked her to.»

Tối đó, Emi đứng trên ban công nhà mình ở tầng 21, nhìn xuống dòng người vội vã dưới ánh đèn vàng. Một tay cô cầm ly trà đen còn ấm, tay kia chạm nhẹ vào tai nghe cũ. Tai nghe đã tắt, nhưng cô vẫn mang nó, như một placeholder.

Đôi khi, giữ lại một kết nối đã tắt cũng là một cách để đối diện với ký ức. Không để nó repeat, mà để nó tồn tại.

Trong một draft chưa hoàn chỉnh cho Hero 14, Emi từng viết một đoạn dẫn truyện:

"We don’t always respawn in the same place we fall."

Cô không chắc đoạn đó có vào bản chính thức hay không. Nhưng nó thật.

Ngày hôm sau, khi bước vào studio, Emi để lại một sticky note trên bàn làm việc của Bonnie, không ký tên. Chỉ viết đúng một dòng:

"No need to trigger anything. I’ve already noticed."

Không có ai hỏi về tờ giấy đó. Không có cutscene nào được unlock. Nhưng vài hôm sau, Bonnie đổi ảnh màn hình thành hình concept art của Hero 07 đứng cạnh một bóng người chưa có tên.

Cây bút đặt lại vào hộp. Tai nghe đặt lên bàn. Cửa sổ vẫn mở.

Emi đứng dậy, tắt màn hình.

Lúc bước ra khỏi phòng, cô không đóng cửa.

Một passive chưa từng trigger thì vẫn còn đấy. Như một residual memory.

Và đôi khi, việc mình ở lại, âm thầm cập nhật những bản patch mà không ai thấy, cũng là một cách yêu không cần phát hành.

Emi không bao giờ ngờ rằng, một ngày kia, commit cuối cùng trong nhánh riêng của mình sẽ là một dòng đơn giản: merge: heart.branch into future.main

Nhưng đó là sau này. Sau những tháng ngày viết hoài những đoạn script không ai review, những bản patch nội tâm không ai tải xuống, và những memory state cô để ngỏ, như một vùng đất bỏ hoang trong hệ thống.

Buổi sáng hôm đó, trời Singapore không quá nắng. Một thứ ánh sáng mềm rủ xuống như lớp light filter cuối cùng trong game build, vừa đủ để không làm lộ các khuyết điểm, vừa đủ để khiến mọi thứ nhìn dịu hơn.

Emi đến sớm. Không phải vì lo chuẩn bị mà chỉ vì thói quen. Trong hành lang dẫn vào hội trường của SAGECRAFT, cô thấy Bonnie đã ở đó, ngồi xổm cạnh một tấm poster cũ, tay đang dán lại mép giấy bị bong.

"Sáng nay quên đem tape xịn rồi," Bonnie nói mà không ngẩng lên. "Dùng tạm washi tape vậy, đừng trừ điểm QA em nha."

Emi mỉm cười. Cô cúi xuống cạnh Bonnie, lấy từ túi áo một cuộn băng dính đen quen thuộc.

"Lúc nào cũng thủ sẵn đúng tool ha?" Bonnie trêu.

"Chẳng phải em cũng vậy sao? Vừa đủ để vá một đoạn poster. Vừa đủ để sửa một chút tương lai."

Buổi showcase hôm đó, họ cùng nhau đứng trên sân khấu lần đầu tiên sau nhiều tháng chỉ giao tiếp qua comments, draft, và silent approvals.

Demo mới nhất của bản mở rộng SAGECRAFT: Legacy Loop đã được chạy thử. Hero 07 và Hero 13 giờ có thêm một branching ending - thứ đã từng là lý do họ tranh luận âm thầm trong một tài liệu Figma không ai chia sẻ công khai.

"Người chơi có thể chọn một trong hai kết thúc," Bonnie giải thích, ánh mắt lướt qua Emi.

"Một là cả hai hero đi về hai hướng khác nhau, mỗi người mang theo một phần ký ức. Hai là họ ở lại cùng nhau, nhưng phải từ bỏ khả năng rewind."

Khán giả vỗ tay. Nhưng không ai hiểu rằng, cả hai kết thúc đó đều là và chứ không phải hoặc. Vì trong build nội bộ, Emi đã viết một đoạn hidden flag:

if (player lingers > 20s in memory_garden) {
   unlock: "Parallel Ending: Stay & Remember"
}

Một kết thúc không hiển thị. Không hướng dẫn. Chỉ dành cho ai đủ kiên nhẫn - hoặc đủ yêu thương - để không rời khỏi màn hình quá sớm.

Tối hôm đó, Bonnie rủ Emi ghé lại studio. Không có lý do gì rõ ràng. Chỉ là để "sync lại vài thứ nhỏ".

Studio vắng. Đèn ngủ đã tắt. Nhưng hệ thống vẫn đang chạy background build.

Bonnie mở một bản script draft.

"Em sửa lại đoạn voice này. Câu cũ nghe vẫn... ngập ngừng quá."

Câu cũ là: "I want to say it, but my script breaks every time."

Câu mới là:

"If you’re still listening, I’m still speaking."

Emi nhìn Bonnie một lúc lâu. Không phải vì câu thoại. Mà vì lần đầu tiên, giọng cô ấy không lùi về hậu cảnh nữa. Mà đang đứng thẳng ở foreground, như một NPC quyết định tự mình move vào cinematic.

Ngày hôm sau, Bonnie gửi cho Emi một pull request.

Tiêu đề: [feature/living_together]

Mô tả: Adds shared calendar, grocery run automation, and small weekend rituals. Optionally includes: one toothbrush cup, one shared desk, and two gamepads.

Emi approved ngay lập tức. Không cần review.

Sau ba tháng, họ dọn về ở cùng một căn hộ nhỏ gần khu Tiong Bahru. Nơi có một góc tường được sơn màu lavender nhạt - màu Emi vẫn mô tả là "scent of proximity".

Bonnie trồng một chậu húng quế ngay bên cửa sổ. Emi gắn cảm biến nhỏ để đo độ ẩm đất, rồi kết nối với một đoạn code tự động tưới nước.

"Sống với dev đúng là không thiếu automation ha," Bonnie trêu.

"Còn sống với narrative designer thì không bao giờ thiếu chuyện để kể," Emi đáp, tay đặt lên tay cô ấy.

Ngày SAGECRAFT cán mốc 10 triệu người chơi, cả studio tổ chức một buổi livestream nho nhỏ.

Bonnie là người dẫn chuyện. Emi là người ngồi ngoài khung hình, nhưng vẫn theo dõi mọi frame.

Ở cuối buổi stream, Bonnie bất ngờ đọc một đoạn thoại chưa từng được ghi trong game:

"Có những đoạn script mình từng xóa. Vì nghĩ không cần. Nhưng đến một ngày, mình nhận ra: đó là phần không thể thiếu. Vì chính những đoạn nhỏ ấy, mới là thứ khiến mọi thứ đáng nhớ."

Cô nhìn về phía camera, chậm rãi:

"Và nếu ai đó ngoài kia đang tự hỏi: liệu có ai còn viết cho mình không? Thì câu trả lời là: có. Mỗi ngày. Trong những dòng code nhỏ xíu."

Buổi tối hôm đó, Emi in đoạn log system từ server backup:

User: emi.dev
Last modified: 03:42 AM
Message: "Found you in every version."

Cô dán nó lên tủ lạnh, cạnh một sticker hình nhân vật Hero 13 đang cầm cốc trà sữa.

Bonnie nhìn thấy, ôm Emi từ phía sau:

"Vậy là giờ tụi mình sống trong branch chính rồi hả?"

"Ừ. Không cần merge nữa. Chỉ còn continuous deploy."

Khi mùa mưa đến, họ không còn phải chờ tạnh mới đi siêu thị. Emi phát triển một app nhỏ báo thời tiết realtime. Bonnie vẽ icon cho app, hình một cái ô bị gió thổi lệch.

"Gió vậy mới thật," cô nói. "Chứ icon mà lúc nào cũng cân thì ai tin."

Emi không sửa. Cô để nguyên.

Tối chủ nhật, cả hai cùng chơi lại bản demo đầu tiên của SAGECRAFT. Những đoạn cutscene cũ, những animation chưa mượt, những câu thoại chưa polish.

Nhưng họ vẫn cười. Vẫn nhớ từng dòng code đã gõ. Nhớ những đêm trắng fix bug đến quên ăn. Và nhớ cả những câu chưa bao giờ nói ra.

Bonnie tựa vào vai Emi:

"Nếu ngày đó em không hỏi câu 'Lead ơi, đoạn này voiceover chạy song song hay tách scene?', chắc giờ mình không ở đây ha."

Emi đáp, mắt không rời khỏi màn hình:

"Nếu em không hỏi, thì chắc chị vẫn sẽ ngồi lại thêm một frame. Đợi em."

Và như thế, câu chuyện không cần đoạn kết lớn. Không cần cinematic dài. Không cần CG đặc biệt.

Vì đôi khi, cái kết có hậu nhất không nằm ở đỉnh cao kịch tính.

Mà ở những đoạn code nhỏ, những patch thầm lặng, và một lời commit giản dị:

Keep: us()

Patch Notes of Us

v2.0

Added: thói quen đi bộ cuối tuần qua Tiong Bahru.

Fixed: bug không nhìn vào mắt nhau đủ lâu.

Improved: khả năng pha trà đúng vị người đối diện.

Deprecated: silent longing.

Known issue: tim đập nhanh khi tay chạm nhau bất ngờ (won’t fix).

Status: Deployed.

Author: Emi + Bonnie

Tagline: "To stories we now write together."

Và nếu bạn linger đủ lâu ở dòng cuối cùng của cutscene, có một câu voice hidden sẽ tự động phát:

"I’m here. Always was."

Bạn đang đọc truyện trên: Truyen2U.Com