BASIC8 誕生始末
多年前我就幻想著一套便捷的遊戲開發環境,不需要 AAA 級的畫質,只要 8-bit 復古風格就好;不要有真正古董電腦的種種不便;也不要有商業引擎的冗長 pipeline。直到我發現了 PICO-8,(詳見《PICO-8 —— 神奇的虛構遊戲機》),一個定義為 Fantasy Console 的軟體,這正是我幻想中的那個軟體的形態:有限的機能,8-bit 低解析度顯示,直截了當的開發方式,便捷的分享途徑……
然而作為一個愛折騰的(前)遊戲程序員,怎麼能簡單的滿足於拿來就用。經過簡單的研究,很快我發現了 PICO-8 和我的幻想理念有些不同。PICO-8 的技術選擇很有趣,使用 Lua 作為開發語言,它很好的適用於遊戲等應用的內嵌腳本,PICO-8 使用它省去了從語言開始造輪子的麻煩;但 PICO-8 卻保留了 8-bit 家用計算機的直接內存映射模式。前者讓它擁有比原始 8-bit 年代 BASIC 更強的表達能力,後者又把當年的一些用直接訪問特定內存的把戲(如 PEEK、POKE 特定地址的奇技淫巧)給保留了下來。
於是我開始著手設計自己的「幻想電腦」:至少得是某種 BASIC 變體(本人的入門語言,有獨特感情懷念),但不需要行號,開發者也不需要知道任何關於內存空間的細節(即使這樣的細節是虛構的)。恰巧多年前我折騰出來過一個 BASIC 解釋器,不需要寫行號,集中了從傳統的 GOTO、GOSUB,到結構化的自定義函數,並且支持 Lambda 表達式,以及基於原型的面向對象,另外還對大小寫不敏感。正好拿來作為內嵌語言,並且可以名正言順的給它起一個更老派的名子:BASIC8。
PICO-8 的一些操作保留了命令行年代的一些痕迹,另外屏幕 128x128 的大小限制不僅是針對程序的繪製區域,同樣也限制於內置的各種編輯器,包括代碼編輯器。這導致很多人使用 PICO-8 的時候根本不用內置的代碼編輯器而是使用其他更順手的文本編輯軟體。我決定把早期圖形用戶介面操作系統的理念引入 Fantasy Console/Computer 這一軟體類型(或者說使 BASIC8 成為首款基於 GUI 的幻想電腦)。程序運行時繪製區域依然限定在一個固定的大小(160x128),但編輯器的解析度並不做硬性限制而是隨著窗口大小縮放;相對於主機(console),我更傾向於把它定義成電腦(computer),並把程序包叫作磁碟(disk)而不是卡帶(cartridge);磁碟的大小,資源空間大小,代碼長度也不做硬性限制;除了每個虛擬手柄支持 6 個按鍵,另外還加入鍵盤和滑鼠控制支持。總的來說,我希望 BASIC8 的開發者依然是在針對同一套虛構規格使用同一套 API 做開發,但相對於 PICO-8 需要關注的限制和細節更少,從而可以更專註於具體想要表達什麼。
對於磁碟的管理,使用更直觀友好的圖標模式,運行、打開編輯等寫代碼之外的操作也不需要命令行式的交互。
除了基本的繪製、輸入和音頻函數,我集成了一些簡便易用的高級庫如:JSON 解析、文件讀寫、簡單 web 訪問、內置尋路等功能。讓開發者擺脫參與這些臟活累活的重複勞動就能快速組織業務邏輯。
分享和社區的構建亦是這類軟體的一個重點,我選擇更為便利的 Steam 平台,並充分利用其強大的社區創意工坊(尷尬的是目前國內訪問社區和工坊頁面需要用更科學的辦法)。接下來的計劃中有打算做 Windows 之外的平台移植以及導出可脫離編輯器直接運行的程序包的功能,這樣更方便不同平台甚至尚未擁有 BASIC8 的玩家運行社區上的磁碟。
我熱衷於收藏各式古董硬體,深知能找到一套匹配的顯示設備都不容易,更不要提在今天強制自己去適應幾十年前的太多開發上的不便。復古計算和復古遊戲本是一個小眾的領域,近些年一些愛好者通過媒體和軟體上的努力,正讓這一擁有獨特魅力的小眾樂趣變得通俗。曾幾何時家用電腦關機只需要直接拔電源就行了,雖然 BASIC8 並不能讓你安全的拔電源關閉你的實體電腦,但至少讓當年簡單純粹的樂趣又回歸了一部分,錯過或者沒經歷過那個年代的你,考慮入坑嗎?(北京時間 2 月 3 日上午左右會開始限時打折)
BASIC8 on Steam官網:https://paladin-t.github.io/b8/
在線手冊:https://paladin-t.github.io/b8/docs/manual
推薦閱讀: