বহনযোগ্যতা
ইমপোর্ট ও এক্সপোর্ট: গল্পটি আপনারই থাকা উচিত
ব্রাউজার এবং web-কে আমি কেন এত পছন্দ করি, এটি তার আরেকটি গল্প। এগুলোর দ্রুত উন্নতির কারণে ২০২৬ সালে একই গল্প browser, offline archive, Windows এবং macOS app-এ চালানো যায়, আলাদা আলাদা game engine তৈরি না করেই।
আগস্ট ২০২৬-এ import ও export চালু হওয়ার আগে Romergo-তে দীর্ঘদিন vendor lock-in-এর সমস্যা ছিল: ব্যবহারকারী সিস্টেমের ভেতরে কিছু তৈরি করতে পারতেন, কিন্তু নিজের সম্পূর্ণ কাজ সহজে সঙ্গে নিতে পারতেন না। এখন আর তা নয়। Project owner নথিভুক্ত .romergo archive download করতে পারেন অথবা web, Windows, macOS ও Microsoft Store-এর জন্য standalone game প্রস্তুত করতে পারেন। লেখক কোনো দিন Romergo ছেড়ে গেলেও project-টি তাঁরই থাকা উচিত।
তাই আমি import ও export নিয়ে কাজ শুরু করেছি।
Web কীভাবে কাজটি অনেক ছোট করল
Romergo-তে আগে থেকেই একটি shared Player runtime ছিল। এটি scenes, branches, images, music, video, translations, RTL languages এবং local saves চালাতে পারে। সাধারণত এটি service থেকে published story লোড করে, তবে গল্পের সঙ্গে pack করে network পুরোপুরি বন্ধও রাখা যায়।
Web build ZIP-এর root-এ index.html রাখে। Windows ও macOS একই Player-কে নিরাপদ Electron shell-এ pack করে। Microsoft Store একই game-কে MSIXUpload হিসেবে পায়। গল্পের logic চারবার লেখা হয় না; একটি runtime-এর চারপাশের packaging-টাই শুধু বদলায়।
Platform signing, certificates, notarization, store rules এবং developer accounts এখনও প্রয়োজন। কিন্তু সবচেয়ে ব্যয়বহুল অংশ আর পুনরায় তৈরি করতে হয় না: প্রতিটি platform-এর জন্য আলাদা client ও আলাদা আচরণ।
Export যেভাবে কাজ করে
Romergo editor-এর কোনো অসম্পূর্ণ বা আকস্মিক state copy করে না। এটি Saved draft অথবা publication-এর নির্দিষ্ট saved version নেয়। Runtime ও assets নির্দিষ্ট revisions-এ pin করা হয়। Build চলার সময় project বদলালে job আবার চলে; পুরোনো scene-এর সঙ্গে নতুন file মেশানো হয় না।
প্রথম ফল সব সময় .romergo: documented structure-সহ সাধারণ ZIP। এতে manifest, project, chapters, scenes, flow graph, variables, presentation, media, credits এবং SHA-256 checksums থাকে। Archive contributors-এর দৃশ্যমান নাম ও roles রাখে, কিন্তু email বা internal IDs নয়।
saved draft অথবা publication
↓
consistent runtime ও asset revisions
↓
documented .romergo archive
↓
isolated platform builder
↓
৭ দিনের জন্য private ZIP অথবা MSIXUpload
প্রতিটি asset পড়ে hash করা হয় এবং লেখার আগে আবার পরীক্ষা করা হয়। Archive stream হয়ে সরাসরি private R2-তে যায়, তাই Worker-কে বহু GB project memory-তে রাখতে হয় না।
Editable project চাইলে এখানেই কাজ শেষ। Game build-এর জন্য .romergo internet access-বিহীন isolated Linux container-এ যায়। Container archive validate করে, offline Player যোগ করে এবং নিচের কোনো একটি output তৈরি করে:
- root-এ
index.html-সহ Web / itch.io ZIP; - local saves, SteamPipe template এবং local signing kit-সহ Windows x64 ZIP;
- Apple Silicon ও Intel-এর জন্য আলাদা macOS apps-সহ ZIP;
- Microsoft Partner Center থেকে পাওয়া user identity-সহ MSIXUpload।
Romergo Steam credentials, Apple Developer ID, certificates বা passwords চায় না। Signing ও publishing লেখকের নিজস্ব accounts-এ থাকে। Service upload-ready build তৈরি করে, সাত দিন private রাখে এবং owner-কে short-lived download link দেয়।
খরচটিও আমাকে অবাক করেছে। Production-এর “Blizzard” গল্পে প্রায় 30 MB-এর 101টি media file আছে। Cloudflare-এর included resources শেষ হলেও বর্তমান rates-এ একটি platform export-এর খরচ মাত্র কয়েক cent। মূল খরচ R2 বা traffic নয়, packaging শেষ হওয়ার পর container যতক্ষণ চালু থাকে তার সময়।
“Blizzard”-এর production version browser-এ খেলতে পারেন। এই একই project খরচের হিসাবের জন্য ব্যবহার করা হয়েছে।
Import ছিল অনেক কঠিন
Visual novel editor ও engine ইতিমধ্যে দশটির বেশি। কেউ Twine, ink, Yarn Spinner বা Ren’Py থেকে আসেন; কেউ Notepad, Obsidian বা Notion-এ লেখেন; আবার কেউ PDF, Markdown, spreadsheet, voice notes, video links ও image folder নিয়ে আসেন।
Format হাজার হাজার এবং প্রতি বছর বদলায়। প্রতিটি format-এর জন্য native importer লিখলে পাঁচ বছর পর পুরোনো third-party version বোঝে এমন parsers-এর কবরস্থান তৈরি হবে।
উত্তরটি হাতের কাছেই ছিল: AI agents।
Agent-কে HTML, Markdown, PDF, audio, images এবং links দেওয়া যায়। সে ক্রম বুঝতে, বারবার আসা characters খুঁজতে, অস্পষ্ট branches চিহ্নিত করতে এবং লেখককে প্রশ্ন করতে পারে। মানুষ flow-কে দিক দেখায় ও result যাচাই করে।
Romergo-তে MCP support আগে থেকেই ছিল। তাই পৃথিবীর সব format Romergo-কে শেখানোর বদলে আমি একটি স্থিতিশীল লক্ষ্য রেখেছি: agent যে tools দিয়ে সাধারণ Romergo project তৈরি ও verify করে।
Agent-এর মাধ্যমে import flow
source files ও links
↓
user-এর MCP-capable agent
↓
inventory, preview, questions ও warnings
↓
Romergo MCP authoring tools
↓
persisted readback ও project validation
↓
Builder-এ creator-এর review
প্রথমে user নিজের MCP-compatible agent যুক্ত করে source materials দেয়। Agent chapters, scenes, characters, locations, media, languages ও relations-এর inventory বানায়। HTML, Markdown, TXT এবং text-based PDF-এর জন্য romergo_inspect_story_source ও romergo_import_story_source কল্পিত branch না বানিয়ে literal linear migration করতে পারে।
Twine, ink, Yarn Spinner ও Ren’Py-তে passages, knots, nodes, dialogue, choices এবং basic variables সাধারণত chapters, scenes ও transitions হয়। Macros, Python, Unity commands, screens, CSS/JS এবং external functions warnings-এ যায় এবং মানুষের সিদ্ধান্ত চায়।
Preview-এর পর agent নতুন project তৈরি করে, attachments batch-এ upload করে এবং graph ও scenes লেখে। বড় media one-time upload দিয়ে সরাসরি R2-তে যায়। এরপর agent romergo_get_chapter দিয়ে saved data আবার পড়ে, romergo_validate_project চালায় এবং romergo_verify_quest_change সফল হলেই migration শেষ বলে ধরে।
AI review-এর বিকল্প নয়
Agent অর্থ বুঝতে পারে, কিন্তু অনুমান সত্য হয়ে যায় না। Audio-র external transcription লাগতে পারে, video link ব্যবহারের অধিকার দেয় না, আর complex Ren’Py code বা Twine macro নিজেই একটি program হতে পারে। তাই import flow preview ও warnings দেখায় এবং project তৈরির আগে materials-এর rights নিশ্চিত করতে বলে।
Romergo-র native uploader শুধু .romergo নেয়। এটি ইচ্ছাকৃত: নিজের open format deterministic ও নিরাপদভাবে import হওয়া উচিত; বাইরের অসংখ্য source এমন tool-কে দেওয়া ভালো, যা reasoning করতে এবং প্রশ্ন করতে পারে।
আগামী পাঁচ বছরের জন্য ভাবনা
Formats বদলাবে, models ও agents-ও বদলাবে। কিন্তু boundary স্থির থাকতে পারে: একদিকে যেকোনো human source material, অন্যদিকে documented .romergo এবং MCP authoring tools।
ভবিষ্যতে নতুন জনপ্রিয় editor এলে Romergo-কে আলাদা importer-এর জন্য অপেক্ষা করতে হবে না। Agent তার files পড়ে নিজের বোঝা দেখাতে এবং একই contract দিয়ে result লিখতে পারবে। আর লেখক Romergo ছেড়ে গেলেও তাঁর কাছে open archive ও autonomous game থাকবে।
আমার কাছে সঠিক পথ এটিই: Romergo হবে গল্প তৈরির আরামদায়ক জায়গা, এমন কোনো খাঁচা নয় যেখান থেকে গল্প বের করা যায় না।