發表文章

目前顯示的是 1月, 2019的文章

吉里吉里 (きりきり, KiriKiri) 的設定檔 (.cf, .cfu)

吉里吉里引擎的遊戲 特徵遊戲目錄下通常會有的檔案 .xp3 (data.xp3, patch.xp3...etc) .cf (設定檔,主檔名和遊戲一樣) .cfu (使用者設定檔, 在記錄檔資料夾save內,エンジン設定修改後存放在這) 裝完新遊戲,我會先套用的設定 https://mega.nz/#!ss0nEYib!sL2Vuq_fDUI2dQtuIKyalQ1wWFyK_PWi5m88kLGClOI 接著看遊戲有沒有提供修改引擎設定 通常叫 エンジン設定.exe, SupportTools.exe,可用來修改 .cfu 改完後,我會把.cfu的內容整合進.cf,再砍掉.cfu 部分設定說明 (能從設定檔修改的,依遊戲而異) ; 該行表示註解 執行檔同名.cf save folder內 .cfu ; save存在遊戲資料夾, 因為我覺得紀錄另外放要管理很麻煩, 這個只有改.cf有效 datapath="\x24\x28\x65\x78\x65\x70\x61\x74\x68\x29\x2f\x73\x61\x76\x65\x64\x61\x74\x61" ; 關joypad joypad="\x6E\x6F" ; 聲音輸出時降bgm音量 bgmdownbyvoice="\x38\x35" ; jpgeg解碼 high jpegdec="\x68\x69\x67\x68" ; 等垂直同步 waitvsync="\x79\x65\x73" ; voice下一句不停, voice click no stop voicestopbyclick="\x6E\x6F" ; 關掉mouse wheel wheel="\x6E\x6F"

遊戲FPS和螢幕畫面更新率(Refresh Rate), VSync, G-Sync, FreeSync, Adaptive Sync

圖片
2022/8/19 更新 顯卡輸出畫面的速度(遊戲的FPS) 和顯示器更新的速度不同會有問題 顯卡較快: 畫面撕裂 (Screen Tearing) 及浪費資源 (frame無法全部顯示在螢幕上,顯卡和CPU用量增加更耗電,溫度較高,加快壽命耗損) 顯卡較慢: 畫面不順 我的第一張顯卡,在沒限制FPS的情況下,玩遊戲兩天燒掉,換新貨 (應該是劣質品) 影片畫面可參考 https://sites.google.com/view/twmonitors/%E7%9B%B8%E9%97%9C%E7%9F%A5%E8%AD%98/gsync-freesync 有以下四種解決方案 1. 無特殊硬體 (螢幕及顯卡) V-Sync犧牲顯卡的輸出去配合螢幕的速度 或No-Sync不限制 (可減少畫面延遲),建議限制比螢幕高的FPS (到一個數值後再提高就很難感到差異,可是消耗更多資源去運算,不值得) 怎麼設比較好? 要看個人體驗 在60的螢幕上,我用的設定是兩倍=120 (根據螢幕和個人感覺調整) 下面兩種可動態調整更新速度,解決上面的問題 (需要支援的顯卡和螢幕) 會稍微提高latency (應該是不影響體驗的程度?) 螢幕可能要打開variable refresh的選項 (free-sync/g-sync,設定的名字不一定) 遊戲設定記得要關掉VSync(垂直同步),FPS限制關掉或大於等於螢幕,否則沒效 2. G-Sync Nvidia專利,原生支援的螢幕比較貴 (必須向Nvidia購買G-Sync模組) 因為支援FreeSync的螢幕比較多,所以Nvidia決定修改驅動程式,讓顯卡能夠透過軟體使用G-Sync在只支援FreeSync的螢幕上 (效果應該比原生硬體支援G-Sync差?) 要購買FreeSync螢幕,建議先查詢能不能和G-Sync相容 Nvidia的認證清單,沒列的是未達標準,請自行上網查詢看要不要買 https://www.nvidia.com/en-us/geforce/products/g-sync-monitors/specs/ 支援的介面只有DisplayPort(DP) 1.2 以後 聽說用HDMI使用 Adaptive-Sync 是AMD的專利,NV不能用 (未確認) 開啟方法

Windows console(cmd.exe) 中文輸入/輸出, utf-8 encoding input/output

由於想玩日文遊戲,系統locale為日文 (code page 932),可能這樣中文才有問題,未確認 Windows console (cmd.exe) 下要輸出輸入非ansi文字需要先做設定 先講寫程式時要如何輸出 要先改變stdout的輸出模式,否則直接使用wcout會只能輸出ansi _setmode(_fileno(stdout), _O_WTEXT); 接下來的wcout都沒問題了 (只需要設定一次模式) 這個問題是我在開發 暫停程式 時遇到的 https://craftwarblog.blogspot.com/2017/12/suspend-process-replacing-pssuspendexe.html 用console輸出的程式都會有一個cmd在 (~6.xMB),總記憶體用量會比預期大 但啟動速度比較快 (因為OS會快取 cmd.exe?) 輸入給程式時的編碼要用chcp改變 改成utf-8的方法 chcp 65001 到win10 1803都還有下面的問題 在使用cmd script執行的時候,如果cmd檔不是ansi必須在第一行用chcp改變編碼 否則cmd.exe會讀取script檔錯誤 (這個我除錯很久才發現) 而且utf-8 BOM會出錯,不能有BOM 如果是直接在cmd下打指令似乎沒這個限制

IPC(inter-process communication)的選擇

http://pages.cs.wisc.edu/~adityav/Evaluation_of_Inter_Process_Communication_Mechanisms.pdf 雖然是2007古老的資料,系統也不是M$,應該沒差太多 基本上效能 shared memory > pipe > socket 除了在低資料量時pipe效能 > shared memory,差距看起來也不大 猜測,大概是lock消耗在空間小的時候,會比生出一塊記憶體高 shared memory要自己做lock控制比較麻煩 pipe只能1對1 Windows上還有其他方法 https://docs.microsoft.com/en-us/windows/desktop/ipc/interprocess-communications

尋找替代程式 alternativeto (ex: 記事本notepad可用Notepad++替代)

https://alternativeto.net 可以用來搜尋替代程式 (找商業軟體的免費替代,或比較同性質軟體) 在搜尋打入程式名後,選擇你想找哪個程式的替代程式 每個軟體還有使用者投票和評論可以參考 例如Windows內建的記事本(notepad)的替代品,可以找到 https://alternativeto.net/software/notepad/ Notepad++票數有壓倒性優勢應該會比較好用 自動判斷檔案編碼 處理不同系統的換行字元 (文字不會變成只有一行) 可安裝plugin擴充功能

調整/改變遊戲視窗大小, change/resize game window size

1. 直接視窗調整大小 https://craftwarblog.blogspot.com/2018/12/run-program-in-specified-position-and.html 2. 調整大小後,顯示區域不會跟著變大的 (只有視窗外框變大) 用OBS擷取遊戲畫面,利用OBS的preview來放大畫面 (這方法由小坤提供) 把OBS設成always on top,在把視窗focus切到遊戲就完成了 看著OBS放大的預覽畫面,鍵盤的輸入是餵給遊戲 這方法只有鍵盤限定的遊戲比較實用 需要滑鼠的遊戲會比較難使用,因為OBS在最上層會吃掉滑鼠輸入,除非你用雙螢幕

Tetris friends 開房間和朋友一起玩

有人不會開就做了教學,依照圖片的步驟就可以了 (省圖片,有些是點過才會出現的) 如果有課金買extra option的話,可以分隊伍,下面的圖是沒有的  https://imgur.com/a/9BlPYzj 完成後連結會被複製到剪貼簿,按ctrl+v貼出分享 聽說有擋廣告有時候會卡住進不去? (未確認) 這個遊戲是用flash的,要把權限設成永遠允許,否則會看不到線上好友,可能還有其他問題

C++ function pointer

member function pointer typedef wchar_t *(TextSource::*song_pfn)(wchar_t * const); wchar_t * const song_name = (this->*song_pfunc)(title.get()); function pointer typedef wchar_t *(*song_pfn)(wchar_t * const); wchar_t * const song_name = (*song_pfunc)(title.get()); 上面是我OBS plugin obs-text的一段code 有一點要注意,使用pointer一定要dereference後用()包起來 否則compile會過,執行會出錯 這樣寫會出錯  *song_pfunc(title.get()); 如果class function沒用到class member,還是會把this push進去 (看asm確認的) MSVC沒有優化掉,大概是為了保持calling convention吧 (可能是assign給pointer的關係) 有被assign進function pointer的function無法inline 據說function pointer對CPU的pipeline不好,無法預測branch? 速度可能會比較慢,未確認

osu! CTB 接水果新手教學

19/10/20  2* < 我實力大約 < 3.x* 選圖打mode=c 當filter 可以選原生CTB的圖 不提詳細模式介紹,重點放在操作的細節要領,新手可能沒想到的玩法 控制鍵: shift 和 左右方向 按shift可切換高速模式 (dash,兩倍速) 小顆漏接不會斷combo,只會掉準確率 hp會隨時間減少,要吃水果回復 (包含小顆水果及bonus的香蕉) 哪個位置能接到水果,怎麼跑才不會超過接點或太慢,只能靠經驗熟悉位置/速度 一些原則 (我在練習的方向) 想辦法看多一點畫面 練習看大一點範圍,還有離電腦遠一點 移動到目標點時,shift不用一直按著,有時候要稍微放開距離才能剛好 (高速很難精準控制) 有些水果還沒接到就要移動,時間上才來的及 (移動中接,不用站著等接到) 如果位置在偏離中間,吃完水果盡量往中間靠,下一個才不會太遠接不到 亮框水果接到會暫時加速,通常下一個要接的在遠方,接到直接往遠方移動 (不用等看到掉落) 眼睛大約看最上面,然後猜下一個點在哪往那邊看 不知道怎麼移動可以用後面幾個掉落來判斷,不一定是下一個,想著要怎麼接住後面某一個

[MSDN blog] Understanding the consequences of WAIT_ABANDONED

來源是OBS bug fix pr https://github.com/obsproject/obs-studio/pull/1599 https://blogs.msdn.microsoft.com/oldnewthing/20050912-14/?p=34253 WAIT_ABANDONED 表示另一個thread做的事沒有做完,shared object狀態是有問題的

擋掉廣告主機, block advertisement host

原理是讓廣告主機的名稱解析成無法連線的ip,讓連線失敗 這三種方法根本上的原理都一樣 1. 修改hosts檔 (需要管理者權限) 不同的系統位置不一樣 Windows 修改C:\Windows\System32\drivers\etc\hosts 複製到桌面,修改完存檔後丟回去蓋掉就可以  (或是你用管理者權限開hosts擋) Linux /etc/hosts 如果要擋skype廣告 加一行 0.0.0.0 apps.skype.com hosts檔的黑名單和更新程式 https://github.com/StevenBlack/hosts 下面兩種無法自行指定黑名單 2. 使用有阻擋廣告功能的DNS DNS adblock servers ex: https://adguard.com/en/adguard-dns/overview.html 3. VPN VPN interface filters DNS queries ex: DNS66

Widows上檔廣告,ad-block

圖片
透過IE元件顯示的廣告擋法 到限制的網站中加入廣告來源網址 適用對象 RC (raidcall),網址忘了,很久沒用了 優點: 不需要使用管理者權限,不用修改系統檔案 缺點: 非使用IE元件的程式無效 瀏覽器檔廣告 安裝擋廣告的extension 例如: uBlock Origin 擋掉廣告主機 適用整台電腦任何程式 https://craftwarblog.blogspot.com/2019/01/block-advertisement-host.html

C++ static code analysis

VS內建 https://docs.microsoft.com/en-us/visualstudio/code-quality/code-analysis-for-c-cpp-overview Cppcheck https://github.com/danmar/cppcheck 線上 free for opensource https://www.codacy.com/

Windows10/win10 更新紀錄 changelog

https://support.microsoft.com/en-us/help/4529964/windows-10-update-history https://en.wikipedia.org/wiki/Windows_10_version_history 目前的bug https://docs.microsoft.com/en-us/windows/release-information/status-windows-10-1909 https://docs.microsoft.com/en-us/windows/whats-new/whats-new-windows-10-version-2004 更新時的log file https://www.ghacks.net/2018/02/06/windows-10-upgrade-log-files-list/ 聽說從某一版Win10後或整個Win10,fullscreen就不是真的fullscreen,舊遊戲低解析度切出去桌面不會變亂,DWM有雙層buffer,效能會比較低一點 (使用者感覺不到) 聽說不要自己按檢查更新,否則會幫你安裝比較少經過測試的檔案(prerelease),讓系統自己檢查就好 記錄一些我在意的功能 2004 (codenamed "20H1") WDDM 2.7,顯卡效能提高 https://www.tenforums.com/tutorials/150440-turn-off-hardware-accelerated-gpu-scheduling-windows-10-a.html Improve CJK IME WSL v2 SegmentHeap in manifest https://docs.microsoft.com/en-us/windows/win32/sbscs/application-manifests#heaptype 1903 NotePad可以存成utf8 (no bom),.cmd script不吃 utf8-bom AV1 Image File Format (AVIF) 支援 WSL更新 https://devblogs.microsoft.com/commandline/