打造一個 Wordle · 四個系統,一句提示詞

打造一個 Wordle — 如何做出自己的 Wordle 遊戲(免費、在瀏覽器裡)

做一個你自己的 build a wordle

幾分鐘內學會怎麼做出一個 Wordle。複製我們的提示詞,拿到一款你擁有的、可以玩的文字遊戲,再把連結分享出去——免費、不必寫程式,直接在瀏覽器裡完成。

✦遊戲
做一個 build a wordle

做一個 Wordle 只需要四樣東西,沒別的了:一份拆成合法猜測與答案的詞表、一個猜測驗證器、一個兩趟式的回饋函式,還有一串分享字串。其他部分——方塊翻面、螢幕鍵盤自己上色、猜測被拒絕時抖一下——都是外觀。Neta Studio 的 3D 遊戲生成器會把一段文字描述變成瀏覽器裡可以走進去玩的世界,所以真正需要你想清楚的只有詞表和回饋規則。

這一頁給你現成的提示詞、貼上之前要先改的兩個設定,以及大多數人第一次做會撞到的失敗模式:重複字母被算成兩次、因為猜測表和答案表被合併所以答案不再是隱藏資訊,還有因為底下詞表換過而對不齊的分享字串。不用安裝,沒有建置步驟,也不用挑框架。

每個 Wordle 複製品都需要的四個系統

把遊戲拆到底,就是四個系統。你記得的所有遊玩體驗,都是疊在這四個系統上面的呈現層。

漏掉驗證器,你拿到的不是看得見的 bug,而是壞掉的狀態:四個字母的提交拿去比對五個字母的答案、同一列被算兩次、遊戲已經結束還接受猜測。漏掉分享字串,大家就改用截圖,而截圖會把答案洩漏給還沒玩過的人。這些都不是選配,而且都不是這個作品有趣的部分。

先讓這四個系統配上單色方塊能跑起來。之後如果你想要單色方塊以外的東西,等規則穩定下來再交給 Agent Sprite Forge 處理美術——在計分還不正確的時候就加上美術,只會讓錯誤的回饋更難被看出來。

  • 詞表,拆成兩份一組是你可以輸入的詞,一組是可以當作隱藏答案的詞。是兩個陣列,不是一個。這個拆分就是「遊戲玩起來公平」和「遊戲玩起來很隨便」之間的差別。
  • 猜測驗證器在計分之前執行。拿猜測字串去比對 WORD_LENGTH,確認它出現在合法猜測集合裡,確認目前這一列還沒被提交過,確認遊戲還沒結束。被拒絕的猜測不佔一列。
  • 兩趟式回饋函式吃進答案和猜測,回傳五個方塊狀態:完全命中、存在、不存在。先算完全命中的位置,再用剩下沒被用掉的字母算接近命中。大多數複製品就是在這裡壞掉。
  • 分享字串一小段文字,把結果編碼進去:謎題 id、猜測次數,還有每一列的方塊樣式。它帶著結果走,但不帶答案,也不帶任何猜過的字母。

複製這段提示詞來做你的 Wordle

整份東西就在這裡。把它當成單一段描述貼進生成器。它明確寫出常數、兩個陣列,以及兩趟式的計分規則——那正是大家自己寫提示詞時最常寫錯的地方。

> 做一款瀏覽器文字遊戲:一個隱藏的五字母單字,六次猜測。 > 詞表:一個叫 ANSWERS 的陣列,放可以當解答的五字母單字;一個叫 VALID_GUESSES 的陣列,放所有答案再加上其他願意接受的單字。兩者保持成兩個分開的陣列。 > 回饋:每次猜測後,把每個方塊標成完全命中、存在或不存在。第一趟先算完全命中,第二趟只用還沒被完全命中消耗掉的答案字母來算接近命中,這樣重複的字母永遠不會被標成存在兩次。 > 輸入:只有剛好五個字母、且出現在 VALID_GUESSES 裡的猜測才接受。被拒絕的猜測不佔一列。 > 列數:六列。猜到正確答案或第六列用完就結束遊戲,然後公布答案。 > 鍵盤:一個螢幕鍵盤,顯示每個字母目前已知的最佳狀態,其中完全命中勝過存在、存在勝過不存在。也要支援實體鍵盤。 > 分享:產生一串分享字串,包含謎題 id、用掉的猜測次數,以及每次猜測各一列,用三個固定字元代表完全命中、存在、不存在。不要包含任何猜過的字母。 > 常數:在檔案最上面設 WORD_LENGTH = 5 和 MAX_GUESSES = 6。

貼上之前有兩個地方要改。詞表,換成你自己的陣列;還有 MAX_GUESSES,設 4 會得到更難的每日一題,設 7 會更寬容。在棋盤能從頭到尾正確運作之前,其他都別動。

設定你的詞表(合法猜測 vs 答案)

合法猜測是你願意接受為輸入的任何單字。答案是可以當隱藏詞的任何單字。猜測集合永遠比較大,常常大好幾倍,而且兩者永遠不會是同一個陣列。

為什麼非得分成兩組

答案集合裡的詞必須是人們真的認識的。如果一個冷僻詞可以當解答,大多數玩家會輸在一個從沒見過的單字上,那種輸法讀起來是不公平,而不是困難。猜測集合則必須寬鬆,因為玩家輸入了真實存在的五字母單字卻被告知不在詞表裡,他就會不再信任輸入框,然後不再玩下去。

所以兩者的形狀是刻意不同的:緊縮的答案表,加上一份寬鬆的猜測表,後者包含答案表,再加上其他你願意接受的詞。

把兩份合併會出的錯

把兩個陣列合併,一個問題會立刻浮現,另一個問題會晚點浮現。立刻浮現的是:答案池繼承了所有你為了猜測而放行的縮寫、勉強接受的複數形和外來詞,於是謎題的答案變得不像答案。

晚點浮現、而且更糟的是:如果玩家能列舉你的答案表,他就能照順序走完清單,用同樣的猜測次數破掉任何一題。答案集合不再是隱藏資訊。合併過的清單,就是一個解題器手上已經有的清單。

1

01

先做答案表:幾千個常見五字母單字,全小寫,不含專有名詞,不含縮寫。

2

02

猜測表則用答案表再加上更寬的一組可接受詞,然後去重。

3

03

分開存放——兩個陣列,或兩個文字檔載進兩個陣列。永遠不要在執行時用一種同時會改寫答案表的方式去建構猜測表。

4

04

把這兩份一起做版本控管。如果你換掉答案表,舊的分享字串仍然帶著過去對應到某個特定單字的謎題 id。

回饋函式,分兩趟

只用一趟去問「答案裡有沒有這個字母?」會把重複的字母多算一次。這裡講規則,不講程式碼。

順序不是風格選擇。如果你先算接近命中才算完全命中,前面一個存在方塊可能會吃掉後面某個方塊做完全命中所需的字母,綠色方塊就變成黃色。那是一個看得見、可重現的 bug,玩家會照這樣回報。

能抓出這個問題的測試

拿 EERIE 去猜答案 SPEED。猜測裡有三個 E。答案裡有兩個 E。單趟式的包含檢查會把三個 E 方塊全標成存在。兩趟式則把前兩個標成存在、第三個標成不存在,那才是真相,而第三個方塊是灰色這件事,是玩家需要的資訊。

每次改動計分邏輯之後,都拿這一組去跑你的函式。這是文字遊戲最便宜的迴歸測試。

1

01

第一趟,完全命中。走過位置 0 到 4。猜測字母與答案在同位置的字母相等時,把該方塊標成完全命中,並從剩下的答案字母池裡移除一份該字母。

2

02

第二趟,接近命中。再走一次位置,跳過已標成完全命中的方塊。如果剩下的字母池裡還有該字母,就把它標成存在,並從池裡移除一份。

3

03

剩下沒被標到的都是不存在。不存在是預設狀態,不是拿答案再跑第三趟。

4

04

不存在是以方塊為單位,不是以字母為單位。同一個字母可以在同一次猜測裡,一個位置是完全命中、另一個位置是不存在。

每日謎題還是不限回合?

每日模式從日期或一個種子推出唯一答案,所以每個玩家拿到同一個單字,而且棋盤在提交一次之後就鎖住。不限模式則隨需開一張全新的棋盤。

這不是同一個功能的兩種口味。它們最佳化的目標不同,下面這張表才是誠實的比較。

兩個都做,預設每日,把不限模式放在一個練習按鈕後面。如果你只做每日,就沒辦法在不改日期常數的情況下測試自己的答案表,而你會和玩家同時發現那些不公平的答案。

面向一天一張棋盤不限回合
謎題選擇由日期或種子挑出答案;每個玩家拿到同一個單字從答案表隨機抽,或由玩家挑選你定義的分類
分享字串玩家之間可比較,因為答案是同一個玩家之間不可比較;只有個人成績的意義
習慣每天固定一個時段,把玩家在同一時間拉回來遊玩長度由玩家決定;沒有固定的回訪時間
重玩價值對單一謎題偏低,因為棋盤只提交一次高;每日做完之後想繼續玩,用的就是這個模式
測試你的詞表慢:必須改日期或種子才看得到另一個答案快:隨需開新棋盤,可以連續檢視很多個答案
版本控管風險高:進行中改動答案表會讓既有的分享字串失效低:開新棋盤不會改寫任何已經分享出去的東西

用連結分享你的 Wordle

分享字串比截圖好,因為它帶著結果走,卻不洩漏答案。截圖會露出字母,或在輸掉之後露出答案,所以沒玩過那張棋盤的人看一眼就被暴雷了。字串只帶格子:每列五個方塊,每個方塊三種狀態。它在群組聊天裡也撐得過壓縮和圖片封鎖,而截圖往往不行。

世界連結讓別人玩到這個遊戲。分享字串顯示某張棋盤玩得怎樣。這是兩種不同的資訊,不該合併成同一個東西。

一張分享出去的棋盤要保留什麼才比得起來

兩個結果只有在字串帶著造就它們的脈絡時才比得起來。這裡少任何一項,比較就會變成猜測。

1

01

謎題 id 或種子,讓雙方知道兩張棋盤的答案是同一個。

2

02

猜測次數,以及每次猜測各一列、照順序——六次中第四次、由三個綠色接著一個綠色組成的棋盤,和六次中第四次、由四個存在方塊組成的棋盤是不同的,而讀的人會去解析格子。

3

03

固定的三字元方塊編碼,讓每一列寬度一致,格子能在等寬字型的聊天裡對齊。

4

04

如果你支援困難模式,就要有困難模式旗標。困難模式裡的六次中第四次,和標準模式裡的六次中第四次不是同一個結果,混在一起會讓字串失去意義。

5

05

字典版本。如果你改了答案表,一個謎題 id 過去代表的單字可能變成另一個。

一張固定的棋盤、一條規則、一個分數——就是你即將做出來的形狀。
有界、可重試、能用一行描述。這正是每日謎題值得被分享的原因。

走進它所屬的那個世界

精靈是沒有地方站的角色。最後這一步是別人沒提供的:把你剛做好的精靈表放進一個有人可以四處走動的世界——一座小島、一顆行星、一個下雨的街角。這個網站上的每個世界都是從一段文字描述做出來的,並發布成一個你可以玩的頁面。

常見問題

我可以免費做一個 Wordle 嗎?+

可以。生成器在瀏覽器裡跑,所以沒東西要安裝,也沒有建置步驟要設定。上面四個系統就是整個作品,而這一頁的提示詞會在你還沒自己寫任何規則文字之前,就產出一張可以玩的棋盤。

做一個 Wordle 需要寫程式嗎?+

不用。你寫描述,生成器產出遊戲;接著你把兩個陣列和 MAX_GUESSES 當一般設定來改。只有在你想要困難模式、提示,或完全命中與存在以外的計分規則時,才會動到邏輯。

我需要多少個單字?+

兩份清單,不是一份。幾千個答案,加上一份大好幾倍的猜測表,是可運作的形狀;低於大約一千個答案,常玩的玩家就會開始看到重複。每個條目都必須是小寫、剛好五個字母,且不含專有名詞。

我可以玩自己的 Wordle 嗎?+

可以。世界一存在就能玩,而不限模式就是你用來測試它的方式。在分享任何東西之前,先連續玩幾張棋盤,記下每個讓你覺得不公平的答案——那些條目就是該從答案表砍掉的。

我可以分享它嗎?+

分成兩塊,這是刻意的。世界連結讓別人玩到這個遊戲,分享字串則回報單一結果,不揭露答案。把字典版本留在字串裡,這樣在你改過詞表之後,封存的結果仍然讀得懂。

這跟遊戲清單有什麼不同?+

遊戲清單是做好、打開就能玩的世界——Mini World 和 The Cyclops' Island 是其中兩個,你可以看看生成器產出的形狀長什麼樣。這裡給的則是原始碼:詞表、猜測次數和規則都歸你,所以你能改變遊戲玩起來的感覺,而不是去玩別人版本的他。

回到 3D 遊戲生成器

全部 31 個做好的 3D 世界、遊戲和場景都在同一頁——每一個都能玩。

平台:Neta Studio頁面:打造一個 Wordle接著讀:/app/3d-game-builder/games-like-wordle · /explore/tool/daily-word-puzzle · /use-cases/en/wordle-alternatives
×