2026年6月1日 星期一

關於遊戲破不了關的雜想

早期的遊戲(2000年以前),印象中其實滿多遊戲不見得是能破關的,有的是本來就很難像魔界村這種,有的是過關條件很麻煩且遊戲本身不太會有明確提示或是要拼命練功。但是到了2000年之後感覺上很多遊戲會有一種很怕你破不了關的感覺,提示很多不說,難度也越來越多是可以調整的。

會有這樣的差異,我的猜想一個是遊戲資源豐富多了,不像以前遊戲又貴又少,好不容易買了一個就要像吃個雞翅拼命啃骨頭吸半天的,玩家沒啥耐心對一個遊戲磨上幾十個小時去地毯式搜索找那個必要的過關道具。現在的遊戲多到像人人買得起炸雞全家桶,不想吃的咬個兩下就算了,遊戲要是設計得太繁瑣刁難只怕還沒理解遊戲內容就被兩小時退費了。

另一個猜想則正是網路的興起早成資訊透明化,以往遊戲如果把難度設定在大量的練功或極限的操作時,玩家其實並不知道遊戲接下來是長這樣,只能乖乖一直試下去,畢竟頭都洗下去了。

我個人最有印象的就是西遊降魔錄大型電玩,最後一關的Boss攻擊一堆一擊秒殺,但當下的玩家並不知道那是最後Boss,往往死了之後又從頭打起多花了一堆錢,但事實上乾脆拼命投錢一重生就放大招攻擊直接破關,說不定還比天天報到花一堆錢然後被「不知道後面還有幾關」的boss KO來的省錢。

而現在一個遊戲出來不用3小時就評論滿天飛,這種資訊落差已經很難出現,要是搞一些逆天的難度設計一下就被發現加上負評,自認玩不動的玩家也會直接放棄不買,對開發商來說就是個賭注,那麼選擇保險一點的讓大家都能開開心心破關,想要挑戰的玩家再給他們額外的東西就好,像是PS白金獎盃之類的。

不過物極必反啦,魂系遊戲就是以沒有難度調整,全憑玩家能力自己探索練習著稱的。但魂系的設計是建立在「難,但是合理也公平」的架構上,而故事的碎片化反倒在網路時代變成了討論分享的絕佳培養皿。

拉拉雜雜寫一堆是因為最近打羊蹄山戰鬼時發現有個角色有夠難,難到像在刁難,但看了一下網路討論才發現其實直接調低難度打贏他還是有獎盃,老人碎念一下。

2026年5月13日 星期三

UE5.7 下Attach Android Process會失敗的問題解決

想在Unreal Engine5.7的Android 環境下 Attach process的話,要注意UE的安裝路徑是否有空白,有的話要去VC的專案檔修改一下LLDB的mapping路徑,否則會根本無法attach。


開啟VC後專案在右鍵打開Properties
要注意必須是已經切到Android環境才會看到LLDB這邊的選項


UE安裝路徑可能是像這樣有空白
要補上括號


不過最後我還是乖乖把UE另外安裝到沒有空白的路徑內,否則每次重新Generate Visual Studio Project Files 時就又要手動改一次這邊的設定,也太累了。

理論上正確的做法應該是去改UE程式碼修正它,但一方面我們團隊用的是Launcher版本,只在程式開發者電腦上用Source Code版本的UE會有版本不統一的危險,衡量之下還是先用簡單的方法處理。放假有空再來看看,說不定UE 5.8已經解決了?

2026年4月26日 星期日

ASR UE5.6 Plugin安裝的小小問題

 ARM 有個ASR UE5的Plugin 是針對Mobile加強的FSR 版本,但目前看到(2026.04)是只支援到UE5.5。

https://github.com/arm/accuracy-super-resolution-for-unreal

我手上的環境是Launcher版的UE5.6,想說安裝一下來看看,就先直接照說明下載、解開壓縮然後開始build。

於是乎出現了下列錯誤:

[1/10] Compile [x64] ArmASRFXSystem.cpp

F:\Epic Games\UE_5.6\Engine\Source\Runtime\Renderer\Private\MeshDrawCommands.h(10,1): fatal error C1083: Cannot open include file: 'TranslucentPassResource.h': No such file or directory

#include "TranslucentPassResource.h"

^

這就有趣啦,居然說是UE引擎內的MeshDrawCommands.h找不到另一個UE內的TranslucentPassResource.h。該header是位於這邊:

\Engine\Source\Runtime\Renderer\Internal\TranslucentPassResource.h

遇事不決先Google ,果然就發現有類似的狀況:

https://forums.unrealengine.com/t/ue5-6-upgrade-error-including-sceneprivate-h-missing-translucentpassresource-h/2544304

原來是5.6用了更嚴格的PrivateIncludePaths的檢查,不再是A引用B,B引用C都沒問題,而是C也要放到PrivateIncludePaths 內。

所以解決方法是PrivateIncludePaths.AddRange() 中多加一行
Path.Combine(EngineDirectory,"Source/Runtime/Renderer/Internal"),
這樣就好。

另一個小問題是FArmASRTemporalAAHistory::AddRef()的回傳型別錯誤,只要把它改成Base class的FReturnedRefCountValue就搞定了。


是說....我後來去ASR github上看到有個pull request上面就有寫解決方案了,果然是多看兩眼有沒有前人種樹就可以省下一些時間。但換個方向想,自己查過記憶也比較深刻一點。

修正5.7的PR:
https://github.com/arm/accuracy-super-resolution-for-unreal/pull/16