bookmark_border《高手過招》20 年回顧系列 (1)

《高手過招》是我高中到大學時做的一個遊戲,曾經一度有小小的風行過一陣子,不過後來隨著討論程度下降就漸漸淹沒在網路裡面了。最近因為有想要為它做點東西,所以想說乾脆就來好好紀錄一下這玩意吧。

當然地,因為會詳細解說各個關卡的相關事情,所以本系列文章會有全《高手過招》的通關方式解說;不會有明寫的答案但會有做法,可以說某個程度上這系列文是《高手過招》的「官方」「解答」。雖然已經是二十年前的東西了但至少這些警告還是得先提一下。

什麼是《高手過招》?

《高手過招》最初是模仿德國人 David Münnich 做的網頁遊戲叫《Notpron》做的。玩家進入遊戲會看到一個網頁,內容可能是一張圖、一段話、或其他東西,當中隱藏了一個謎題,而玩家的目標就是要解開這個謎題獲得答案,進而能夠前進到下一個關卡。

某種程度上,這種東西其實跟所謂的「脫出遊戲」很相似,在於兩者的主軸都是將謎題和解題提示放在場景中讓玩家去尋找進而解題,差別在脫出遊戲的場景是有個環境場景在,而《高手過招》或《Notpron》則是把場景簡化做成簡單的網頁而已。如果更進一步把這種謎題大型化,加入一些謎題界常見的題型,就成了另外一類概念類似的解謎遊戲稱做 puzzle hunt;而如果保留「答案藏在網站裡」這個要素,而把藏的方式改成各種資訊安全漏洞的應用,就成了 CTF 挑戰了。可以說像《高手過招》這種解謎遊戲是屬於這類型中大型挑戰的簡化版,相對地更加著重在資訊搜集及水平思考上。

(當年在港台兩地風行起來的時候,記得有些人為此跑去建了個維基頁面紀錄當時相對比較有名一點的幾個類似仿作進去;現在我已經忘記當年的頁面名字是什麼,也不知道還在不在就是了。另外,我在首頁時有提到另一個啟發點是中國人 csksoft 做的《高手挑戰榜》,我這個《高手過招》的名字也是向他致敬的。)

這次的回顧其實就是以出題者的身份來解釋和檢討 (鞭屍) 各關的設計了。第一篇會解說 1~20 關,其餘的會在接下來的文章慢慢寫。

Continue reading “《高手過招》20 年回顧系列 (1)”

bookmark_borderAdvent of Code 2024

一年一度的 Advent of Code 又來了,應該不需要多說了吧。

這裡就來順便更新一下我的近況好了。最近工作上遇到了一些狀況,比較不怎麼有心力去做之前計畫好的事;去年這時說到的 AoC 相關的東西的收尾結果一丁半點都沒動還是卡在那裡,然後接下來有一個我想丟出來的東西會要趕快先搞定。因此就變成了連續兩年空轉的部落格……

11 月時倒是因為這樣跑去做了另一個人的算是熱身賽 (?) 的站叫 Everybody Codes (有他的參賽者貼去 Advent of Code reddit 版我才知道的),照這站長的計畫好像未來應該都會在 11 月時出新題,而今年他的題目雖然有一點偏 (最後這兩週我沒引入我的 BFS/A* 函式庫的次數好像屈指可數),不過確實算是滿用心在做的。期待未來有沒有更有趣的東西。

那麼照例文章押 12/1 發出,但接下來每天都會更新當天的題目心得;以及一直都有的 github repo 連結

Continue reading “Advent of Code 2024”

bookmark_border站台更新

台灣時間 7/9 晚上到 7/10 晚上,連到本站來的人可能會有連線不一定連得上的問題。這篇文章發出時應該已經解決了,放個一兩天看還有沒有什麼狀況吧。

事情是這樣的:7/7 一早我收到信說我這個域名 *.cruciferslab.net 的 wildcard HTTPS 憑證快過期了。想說我應該早在域名剛拿到那陣子就設好自動更新的 (對,看上面憑證可以看到我是用最容易拿到的 Let’s Encrypt 憑證,我收到的這信就是他們發給我的) 所以在上班前快速連進了放那個憑證的機器1看了一下狀況。

問題其實很簡單:我這個域名當初是從 Google Domains 註冊的,不過他們前陣子被 Squarespace 買下來了,所以設定就轉到了 Squarespace 上去。Wildcard 憑證會需要進行 DNS challenge 表示你真的是這個域名的擁有者;之前好像 Google Domain 的 DNS 還能用所以還能更新,但現在似乎不行了的樣子。於是自然想說看能不能在給 Squarespace 管的狀況下來做更新,但找了半天的結論是:Squarespace 似乎因為主力在網站建置的關係,把 HTTPS 憑證這回事給綁定在你要用他們家的建置網站裡,有的話就會自動幫你弄;要手動弄不是不行,但 DNS 他們限定在你只能用網頁介面進行更新,所以如果申請效期比較久憑證的話久久做一次是不會太麻煩,但 Let’s Encrypt 基本上是兩個月更新一次2,不給我自動化這實在很討厭……

然後找到了 reddit 上另一篇在 r/nginxproxymanager 的文章,該文章的原 PO 看起來跟我的狀況很類似,也是從 Google Domain 移到 Squarespace 然後在找方法自動設定憑證更新,不過看起來他在沒找到解決方法之下搬家到 Cloudflare 了。稍微研究了一下 Cloudflare 的設定,看起來只要把 DNS 給 Cloudflare 管理,就能用這個 plugin 設定自動更新憑證了,所以就決定這兩天把 DNS 搬進 Cloudflare 了。

開頭說的這段時間就是我把 Squarespace 的 DNS 設定解除 (主要是 DNSSEC),把 DNS 解析主機設定成 Cloudflare,等它傳播更新完成,再在 Cloudflare 這邊把 DNSSEC 開回來的時間。中間還因為在 Cloudflare 當中的設定讓站點吃了無限重導向迴圈……3 當然在那之後憑證更新就順利完成了。

不過這讓我在考慮一件事:Cloudflare 本身也是域名註冊商,既然 Squarespace 以網站建置為主,其他相關服務為輔,那我好像把網域註冊也搬進 Cloudflare 來能做的事會更多的樣子?(順便像現在這樣直接用他們的快取服務,這樣我不用煩一堆人一直來攻擊這裡……) 只是搬家好像一般要跟著展期一年,我這次續購還剩下半年有點不太確定要不要就這樣提前展期,還是等到年底再來搬家……?

(說起來,要說需要更新的東西,最近因為 regreSSHion 檢查了一下,發現跑這個站的這台 VM 用的映像檔的作業系統 LTS 剛到期,大概需要找個時間來升級了……預期一下這個站在近期的某個週末會停機個幾個小時吧。)

註腳

  1. 不是放這個站的這台:這台用的是單一域名憑證,只需要我表示 blog.cruciferslab.net 這個域名所在機器是我的,這可以用網址回應解決;這裡出問題的是另一台機器,上面預計是要放我的其他這個域名的東西,雖然現在仍然還是施工中就是了 (倒) 既然是其他 *.cruciferslab.net 的所有網域,要的憑證就需要是 wildcard 憑證了。 ↩︎
  2. Let’s Encrypt 發的憑證效期是有名的短,只有 90 天,這是他們故意設計的,要讓我們這些使用者去設定 certbot 自動更新;certbot 預設在剩 30 天時會更新,所以基本上就會是兩個月要更新一次。 ↩︎
  3. 原因是 Cloudflare 他們的快取服務的 SSL 設定,預設是 Flexible 會在連向來源伺服器時用未加密 HTTP 連線,但我的這兩台機器都有設定未加密 HTTP 會自動重導向到加密 HTTPS,所以就掉進無限迴圈了。把它的設定改成 Full 以上就能解決。 ↩︎

bookmark_border換了一個註腳外掛(X) 改用 WP 原生註腳了

WordPress 6.3 有原生註腳了,試用了一陣子還不錯,然後一年前這篇文章發表時我換了的另一個註腳外掛現在也撤下來了,所以稍微花了點時間來把原先用 fn 標籤寫的註腳改成 WP 的原生註腳。好在我的文章量不多所以改動量也不是很大就是了。

以下是一年前(2022/12/12)的原文:

先前用的註腳外掛結果是個一兩年沒人維護的外掛,然後原開發者因為這樣所以從 WP 外掛庫裡撤下來了。雖然不是不能用啦,但過時的外掛程式碼有沒有什麼問題確實不知道,所以決定換一個最近好像有更新維護的註腳外掛。樣式我盡量做到跟先前差不多了,不過從註腳跳回來的連結從在前面的 ↑ 變成在後面的⬆️了;這個外掛好像沒有把它放到前面的選項所以就先這樣好了。1就用一陣子看看吧。

  1. 原本的預設值是↩️,我有點覺得還是上箭頭比較對。它長得像這樣→ ↩︎

bookmark_borderAdvent of Code 2023

又到了年末 Advent of Code 的時間了。關於這個活動還請參照去年的文章;不過鑑於去年前幾天發生的事情,今年新增了一條「禁止使用 AI 去登入全站排行榜」的規則——並沒有全面禁止 AI,只有不允許使用 AI 讓自己登入全站前百名的排行榜而已。算是個滿合理的限制就是了。

話說這一年來還真的沒多少文章貼出來過……在檯面下做的東西一直有在轉,但範圍稍微大了一點(有一個跟 Advent of Code 相關的東西差了最後那 5% 還沒完成,結果今年的又來了),工作又相對忙了一些(忙到連 GMTK Game Jam 2023 都沒能參加……那個週末整個累壞了),所以一直沒能貼些東西。

那麼照例繼續閱讀之後就是各題的簡要心得 (於是自然有各題的雷),然後也是照例文章押 12/1 發出,但之後每天題目做完都會來更新。原始碼整理在同一個 github repo 上了。

Continue reading “Advent of Code 2023”

bookmark_border西瓜遊戲得分裡的數學

最近這一兩週爆紅的西瓜遊戲,應該大家都玩得不亦樂乎吧?

西瓜遊戲在遊戲本質上來說,其實跟九年前也爆紅過的 2048 是一樣類型的遊戲:在一個相對小的限定空間當中進行物件合併的遊戲。這個「相對小的限定空間」還滿重要的,這也是它跟 Merge-three 類型的休閒遊戲的最大差別:因為限定空間小,填滿的時間相對很快,因此可以快速地在十數分鐘內完成一局再行挑戰,形成一個自然的遊戲迴圈;但 Merge-three 類遊戲的盤面相對大,填滿反而不是主要目的,因此它的遊戲迴圈會建立在多樣化的物件互動上。

不過今天我們不是來談遊戲類型的。大家是否想過,為什麼這個遊戲會有這樣一個天然的 2000、3000、3200、3400 等等的得分門檻在?在玩的過程中應該很少人會去注意到遊戲的得分結構,而大家也只是聽說「達成三千分就算強了」之類的話。這篇文章就來和大家分析一下到底為什麼有這樣的階級出現。

Continue reading “西瓜遊戲得分裡的數學”

bookmark_borderGCJ 2023 Farewell Round C

沒想到今年就是最後一年的 GCJ 了……

這最後一年也不是一個完整的賽事年,而是就簡單地在 4/15 平行開四個難度各有不同的回合做為 Farewell Round,就此告別大家了。根據 FAQ,這四個回合的難度分配是這樣子的:

考慮到我這幾年的 GCJ 大約都在 R2 落馬,Round B 若是約 GCJ R1 難度的話我應該相對輕鬆,所以決定這最後一次就以 Round C 作結吧。

……然後就發現好像咬太多了,最終成績是 24/100。那麼,這句話也是最後一次用在 GCJ:成績截圖以下有雷。

Continue reading “GCJ 2023 Farewell Round C”

bookmark_borderAdvent of Code 2022

一年一度的 AoC 又要開始了。

為還不知道 AoC 是什麼的人簡單介紹一下:Advent of Code,名字取自聖誕日曆 Advent Calendar,是每年 12 月時開始的程式設計解題挑戰。和聖誕日曆一樣,從 12 月 1 日開始每天都有新題目,一直到 12 月 25 日聖誕節為止。每天更新的時間是美東時間的換日,換算台灣時間是下午一點。

題目的故事主題當然就是聖誕節,基本上就是那種「聖誕節快完啦,幫忙寫些程式救救聖誕節」之類的故事;但題目本身則包羅萬象,從簡單的練習題到複雜的微組合語言模擬程式都有,很適合各種不同程度的程式設計練習。就我看來,初階的程式設計學習者應該至少前五到十天不會有問題,有學了一些資料結構演算法的應該可以做到 15 到 20 日,而全通雖然是點挑戰,但也不需要到我這種打過比賽或寫過一堆程式的人,大概資工系大二到大三左右的程度應該就行了吧?

我自己其實曾經在 2018 年時做過一次,不過那年因為各種原因停在半途,一直到去年看到一個我加的 Discord 群裡有要做就又把它撿回來了。去年因為比較閒一點,除了去年當年的題目之外,一路回頭到把 2018 年之後的題目也做完了;今年則是在約一個月前把最早的三年 (2015~2017) 也清掉加入 350 星俱樂部。

這篇文章預計會是動態更新,發表時間是押 12 月 1 日,但會隨著我每天做題目新增當天的簡評。不過鑑於文章更新也要時間,當天的題目可能要到晚上或隔天才會更新。原始碼整理在 github 上了。

繼續閱讀以下就是各天的題目了。

Continue reading “Advent of Code 2022”