[{"content":"","date":"4 March 2026","externalUrl":null,"permalink":"/","section":"ALOWHIT","summary":"","title":"ALOWHIT","type":"page"},{"content":"","date":"4 March 2026","externalUrl":null,"permalink":"/tags/blog/","section":"Tags","summary":"","title":"Blog","type":"tags"},{"content":"","date":"4 March 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"4 March 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"目標是完成教學並試著編寫簡單的多人連線IDLE遊戲\n最近在學習Golang，並且想嘗試編寫一個簡單的多人連線IDLE遊戲。 雖然手上有原神千星奇域的項目，但是我還是決定回去Godot嘗試編寫客戶端和網絡連線項目。\n現在，正在根據一篇不錯的教學 Godot 4 + Golang MMO Tutorial Series。\n要注意的是有些版本號可能會有差異，但是基本的教學仍然是有效的。 像是Visual Studio Code的部分Extension版本可能換了人更新。\n希望這個月內我能完成教學，並且能夠編寫一個屬於自己的連線遊戲。\n","date":"4 March 2026","externalUrl":null,"permalink":"/posts/%E6%97%A5%E8%AA%8C004/","section":"Posts","summary":"","title":"最近正在學習Golang","type":"posts"},{"content":" 如何獲得Gitea # Gitea是一個開源的自架Git服務\n官方獲取鏈接：https://about.gitea.com/products/gitea/\n架设流程 # 剛開始建議照著預設的資料填寫即可\n注意: 需要在事後手動更改.\\custom\\conf\\app.ini中的User的資料為git，或者連線端將User改為啟動的主機名稱；否則，使用ssh驗證的時候，會無法正常連線。 如何建立客戶端的ssh密鑰 # 使用以下方式能生成一個密鑰\nssh-keygen -t ed25519 -C \u0026#34;your_email@example.com\u0026#34; 通常，會需要你決定使用預設的檔案路徑 或自定義的路徑和檔案名\n你可以直接Enter跳過該階段\n命令的輸出大致如下所示：\nGenerating public/private ed25519 key pair. Enter file in which to save the key (C:\\Users\\username/.ssh/id_ed25519): 接下來會需要你設定密碼加密你的檔案，這邊會留空作為例子，\nEnter passphrase (empty for no passphrase): Enter same passphrase again: 總之，你應該就會獲得一個類似這樣的兩個東西\nC:\\Users\\username/.ssh/id_ed25519和C:\\Users\\username/.ssh/id_ed25519.pub\n如何設置ssh權限 # 打開C:\\Users\\username/.ssh/id_ed25519.pub\n應該會獲得很長的一串\nssh-ed25519 AAA... 將它貼到下圖所示的位置（在賬號-\u0026gt;設置的地方） 接下來，你需要把臨時的Token拿去給你的ssh做驗證： 指令大概如下：\necho -n \u0026#39;它的token\u0026#39; | ssh-keygen -Y sign -n gitea -f C:\\Users\\username/.ssh/id_ed25519.pub 提示: 如果你有設定密碼，則需要輸入密碼才可以產生簽名資料 你會獲得如下所示的資料\n-----BEGIN SSH SIGNATURE----- ... -----END SSH SIGNATURE----- 把資料複製貼上到 最後，你就能夠使用ssh服務連到你的repo了 例如：\ngit clone ssh://你Gitea的User@你的域名:你的ssh端口/你的Gitea賬戶名/你的repo.git 尾聲 # 這東西是如此簡單，卻卡了我超級久\u0026hellip;\n主要是Gitea的User並非絕對為git，\n你可以強制更改為git（如果更改後仍能夠正常執行）。\n當然，如果使用本文以外，也就是http格式也能使用；\n只需要透過瀏覽器之類的臨時授權即可。\n","date":"4 September 2025","externalUrl":null,"permalink":"/posts/gitea-setup-ssh-tutorial-ep1/","section":"Posts","summary":"","title":"EP.1 Gitea架設方式與設定ssh連線的方式","type":"posts"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/tags/gitea/","section":"Tags","summary":"","title":"Gitea","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/series/giteasetuptutorial/","section":"Series","summary":"","title":"GiteaSetupTutorial","type":"series"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/tags/giteasetuptutorial/","section":"Tags","summary":"","title":"GiteaSetupTutorial","type":"tags"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","date":"4 September 2025","externalUrl":null,"permalink":"/tags/ssh/","section":"Tags","summary":"","title":"SSH","type":"tags"},{"content":"","date":"8 April 2025","externalUrl":null,"permalink":"/tags/cardgame/","section":"Tags","summary":"","title":"CardGame","type":"tags"},{"content":"既然有了框架，那接下來就要給框架變得可根據資料切換顯示。\n而以下就是我完成基礎的調試用+顯示用框架。 在這個時間段，我還沒有完成能力詞條判定；\n因為能力詞條需要一個實例化的環境，而相關的觸發方式都和回合中的機制有關，\n像是發動時機，進行特定的動作等等。\n因此我決定延後到基本的數值運算功能，再做能力值疊加判定。\n所以，我往顯示方面開始做功夫了。\n確定遊戲的表現形式 # 那這個專案，我決定以3D的表現形式去實現表現。\n在簡略的配置了框架後，發現表現手法不太行，\n主要是遊戲內的機制擁有\u0026quot;出牌\u0026quot;，這個出牌會影響整個場地的大小和上限。\n於是乎，我就想到了玩過的某個技能型手機遊戲。\n它會用透明的方框作為卡牌放置區，那我就想弄個差不多的東西。\n效果如下：\n測試遊戲性能和方案的可行性 # 在完成了基本的規劃後，我想先去試著理解Godot對遊戲的性能需求。\n因此我簡單製作了下方的卡片節點：\n並且使用panku console這個插件協助我Debug遊戲。\n而實際運行了一段時間，卡牌張數很多也不太會影響遊戲效能表現。\n下集預告 # 讓卡牌能夠在場地中放置、使用能力、進行攻擊計算、卡牌放置到傷害區 等基本規則操作 下下集才開始對能力進行製作，設定更多的卡牌時機。\n","date":"8 April 2025","externalUrl":null,"permalink":"/posts/godot-card-game-ep3/","section":"Posts","summary":"","title":"EP.3 確立基本的卡牌資訊框架 feat.《星界英雄》","type":"posts"},{"content":"","date":"8 April 2025","externalUrl":null,"permalink":"/tags/godot/","section":"Tags","summary":"","title":"Godot","type":"tags"},{"content":"","date":"8 April 2025","externalUrl":null,"permalink":"/series/zodiacchampion/","section":"Series","summary":"","title":"ZodiacChampion","type":"series"},{"content":"","date":"8 April 2025","externalUrl":null,"permalink":"/tags/zodiacchampion/","section":"Tags","summary":"","title":"ZodiacChampion","type":"tags"},{"content":"今天，就來製作對應的卡牌資產；目前是以還原原本遊戲卡牌顯示的相關資訊為目的去製作相關素材。\n首先，確定畫面有的基本資訊。\n今天，就來試著先製作星使牌有的相關內容。\n經過兩小時的奮戰，我成功生出了以下的素材，並調整好以後會用到的卡牌UI框架。\n參考了新版UI，加入了傷害屬性框和部分卡牌資訊的放置位置。\n但整體風格還是想以手上能參考的舊版UI進行還原。\n不過今天時間不多了，之後，我也會去把星術牌和星神牌的卡牌資訊欄也做進去。\n另外，雖然我很想搞搞看卡牌稀有度的雷射鍍閃，但那不是優先級的任務，因此會放到較後的階段才嘗試製作相關Shader。\n下集預告 # 應該會把基本的卡牌資訊設置腳本給寫出來，把相關顯示功能給做基本的規範化。 之後就是把遊戲中的所有卡牌嘗試逐一還原進去，以還原原本的卡牌作為主要目標去製作對應的卡牌數據庫。\n","date":"6 April 2025","externalUrl":null,"permalink":"/posts/godot-card-game-ep2/","section":"Posts","summary":"","title":"EP.2 繪製基本的遊戲資產 feat.《星界英雄》","type":"posts"},{"content":"很高興獲得了來自《星界英雄》設計者帥狗的許可， 我可以使用Godot來將相關遊戲玩法電子化，並能使用遊戲框架和玩法使用在項目中。 我獲得的許可如下：\n對相關學習專案寫日誌並發佈到個人網站 我承諾只能部分公開，因此局限於我認識的朋友。 條件如下：\n禁止商用 禁止直接使用原發售卡牌的插畫。 同時，設計者帥狗也表示了希望能試玩，我也會很樂意分享給他（在完成該學習項目後）。\n開始理清相關遊戲規則 # 既然是要做一個卡牌遊戲，那我第一件事就是先把關鍵的核心，卡牌給還原出來。\n而還原一個卡牌，那我必須要定義一張卡牌上面有的資訊。\n在遊戲內雖然有三種不同的卡牌，但他們身上的資訊是差不多的。\n卡牌資訊 # 分為 星使牌、星術牌、星神牌 而它們都可以作為星術牌來使用，這代表它們的設計有一定程度的相似。\n那一張卡牌有什麼資訊呢？\n卡牌名稱 卡牌資訊：繪師、系列編號、種類（背景顏色）、星座圖標（或特定圖標） 卡牌屬性：（太陽/月亮） 卡牌效果 星使牌和星神牌是差不多的東西，它們共通點為\n代價需求：激活該卡需要特定的代價 及其 數字 而星使牌更是多出了三個屬性\n力量：攻擊判定時，若超出對方護盾則視為攻擊成功。 護盾：攻擊判定時，若受擊方該數值多於攻擊方的力量，則視為攻擊失敗（不計算傷害，但計算*攻擊事件） 傷害：用來決定該卡攻擊成功後的基礎傷害 基於卡牌資訊進行遊戲資產的製作 # 理解了以上的資訊後，接下來就輪到繪製卡牌資訊的動作了。\n我選擇對目前官網FB釋出的所有圖片進行二次創作，也就是 透過與原本卡牌完全不同的卡面、故事、卡牌名來還原原本的卡牌設計，既能還原原本的框架，也避免了使用版權圖造成的問題。\n接下來的規劃會是繪製卡牌屬性、十二星座、代價需求等等的資訊相關圖標或者是卡牌的排版。\n同時，我會希望將星術牌和星神牌的下方能力欄，像星使牌一樣貼上左上角的屬性，方便識別。\n剩下的遊戲系統以及遊戲規則將會在繪製完成後，在下一篇的日誌進行補全。\n下集預告 # 預計會將目前的玩法視為 常規玩法，預計會先往製作常規玩法的場地佈置、組牌需求開始做起。\n未來將會有更多的像是回合判定、傷害計算、卡牌連鎖對應、卡牌資料、卡牌實例等各種坑要填。\n","date":"5 April 2025","externalUrl":null,"permalink":"/posts/godot-card-game-ep1/","section":"Posts","summary":"","title":"EP.1 開始製作卡牌遊戲框架復刻的日誌記錄 feat.《星界英雄》","type":"posts"},{"content":"","date":"29 March 2025","externalUrl":null,"permalink":"/tags/blowfish/","section":"Tags","summary":"","title":"Blowfish","type":"tags"},{"content":"","date":"29 March 2025","externalUrl":null,"permalink":"/tags/hugo/","section":"Tags","summary":"","title":"Hugo","type":"tags"},{"content":"","date":"29 March 2025","externalUrl":null,"permalink":"/series/tutorial-for-hugo/","section":"Series","summary":"","title":"Tutorial for Hugo","type":"series"},{"content":"","date":"29 March 2025","externalUrl":null,"permalink":"/tags/website/","section":"Tags","summary":"","title":"Website","type":"tags"},{"content":"如果你之前沒有使用過 Hugo，你首先需要了解在本地機器安装 Hugo。你可以通過運行命令 hugo version 来檢查是否安裝完成。\n如果你之前連Go和Git都沒有使用過，那你更需要先去了解一下在本地機器安裝 Git ，再從Go官網給本地機器安裝 Go，版本需要1.23.0或以上。\n創建一個git項目 # 為你的網站鏈接創建一個git項目，創建的repo名需要以 \u0026lt;username\u0026gt;.github.io 的方式去命名，它也會作為你的網站域名入口而被創立。 之後，在你的項目資料夾中輸入git init -b main，從而初始化你的 git repo。\n部署Git並為Github的網頁服務做前置準備 # 本文就不多著墨在同步Git和Github的相關用法了。 經過上方的做法，你默認的branch會是main。 其次，我們還會需要一個叫做gh-pages的分支； 該分支將會用於日後的 workflows ，也就是Github提供的Action服務， 能夠根據你推送的網頁更新作自動化生成，並掛載Hugo來架設對外瀏覽用的頁面。 branch : main gh-pages\n.gitignore的文件 # 要無視的文件\n#others node_modules .hugo_build.lock # Hugo public 創建一個工作流 # 在資料夾創建一個.github/workflows的空白資料夾，再把這個檔案命名為gh-pages.yml，在程式碼下面能夠看到： 當你推送main的相關資料後，工作流就會自動創建build-deploy，最後在gh-pages進行網頁內容架設。\n# .github/workflows/gh-pages.yml name: GitHub Pages on: push: branches: - main jobs: build-deploy: runs-on: ubuntu-latest concurrency: group: ${{ github.workflow }}-${{ github.ref }} steps: - name: Checkout uses: actions/checkout@v3 with: submodules: true fetch-depth: 0 - name: Setup Hugo uses: peaceiris/actions-hugo@v2 with: hugo-version: \u0026#34;latest\u0026#34; - name: Build run: hugo --minify - name: Deploy uses: peaceiris/actions-gh-pages@v3 if: ${{ github.ref == \u0026#39;refs/heads/main\u0026#39; }} with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_branch: gh-pages publish_dir: ./public ‼注意: 你需要給你的repo打開自動化的讀寫權限以及選擇對外展示的Pages的branch，從而實現架設網站。\n如何調整Action的寫入權限 # 先打開Actions的寫入權限：\nSettings-\u0026gt;Code and automation-\u0026gt;Actions-\u0026gt;General-\u0026gt; 側邊頁-\u0026gt;Workflow permissions-\u0026gt; 把圓點選擇為Read and write permissions-\u0026gt;按下Save儲存變更\n接著是選擇你的掛載頁面的branch：\nSettings-\u0026gt;Code and automation-\u0026gt;Pages-\u0026gt;側邊頁-\u0026gt; Build and deployment-\u0026gt; Branch-\u0026gt;下拉把main改gh-pages-\u0026gt;選擇Save儲存變更\n創建新站點 # 如果你打算在一個已經創建的空資料夾下創建網站資料，使用hugo new site . 進行創建基本的Hugo項目。（假設資料夾已經有東西，可使用--force來強制初始化hugo new site . --force） 若你還未有空的網站項目資料夾，可以使用 hugo new site mywebsite 命令，可以在mywebsite目錄下創建一个新的 Hugo 站點。\n接下來，去下載blowfish主題 選擇你想使用的渠道，筆者用的是手動文件複製，也就是直接下載最新版的source_code並且解壓縮至 ./theme/blowfish。\n設置主題的配置文件 # 你在的網站根目錄中，刪除 Hugo 自動生成的 hugo.toml 文件。取而代之的，我們會使用主題中存在的 *.toml 文件，將./theme/blowfish/config/_defualt 中擁有的相關後綴名文件，搬到網頁根目錄的 ./config/_default/ 目錄中。這將確保你的主題設置準確無誤，並且在此基礎上也能輕鬆地自定義相關主題。\n‼注意: 如果項目中已經存在了 module.toml 文件，請不要覆蓋它！\n在你複製了這些文件之後，你的 config 目錄應該如下圖所示：\nconfig/_default/ ├─ hugo.toml ├─ languages.en.toml ├─ markup.toml ├─ menus.en.toml ├─ module.toml # 通过 Hugo 模块安装 └─ params.toml ‼重要: 如果你沒有用 Hugo 的模塊安裝 Blowfish，那你必須要在 hugo.toml 文件中添加 theme = \u0026quot;blowfish\u0026quot;。（或你應該會在對應文件看到# theme = \u0026quot;blowfish\u0026quot; # UNCOMMENT THIS LINE，刪除注釋即可套用相關主題）\n下一步 # 基本的 Blowfish 安裝已經完成。請繼續閱讀原文教學的 入门指南，來了解更多關於主題配置的相關內容。 我也會在之後撰寫對應的文章來介紹簡單的網頁設定。\n","date":"29 March 2025","externalUrl":null,"permalink":"/posts/setup-hugo-with-blowfish-to-github-page/","section":"Posts","summary":"","title":"如何在Github佈置Hugo（blowfish主題）","type":"posts"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"}]