020年各路大作滿滿,很多玩家都興奮不已。不過一款游戲到底好不好玩只有發售后才能真正知道,去年的《圣歌》、《死亡擱淺》都曾令人期待,但最后也是各有缺陷。那么今年有哪些游戲需要玩家多注意、有可能會不達預期、甚至成為雷作呢?一起來看看吧~
《如龍7》
發售日:1月16日
世嘉老牌動作游戲擁有很多粉絲,不過最新的第7代將直接放棄經典的動作玩法,改為半回合制,這件事自公布起就有不少爭議,雖說回合制游戲也可以很好玩,不過系列老粉絲會如何接受這種重大改變還真不好說。近日,Fami通給《如龍7》打出了38分好評,希望它確實能令玩家滿意。
《看門狗:軍團》
發售日:待定
狗3中玩家將能操控任意NPC,這個設定看起來很有趣;不過,這么多隨機產生的角色,是否會對游戲的劇情發展產生負面影響?大量靠數據拼湊出的NPC,是否會有同質化、公式化問題?
而這款游戲最大的“雷點”,則是其跳票。本來《看門狗3》定在3月發售,結果因《幽靈行動斷點》表現不佳,育碧推遲了《看門狗》等3款作品的發售日,這對于游戲的開發有很大的不良影響,或許還會增多游戲內的“育式bug”。當然,也有可能《看門狗3》不會操之過急,而是慢慢優化好、等2020年底甚至2021年才發售,這或許是最好的選擇。
《彩虹六號:封鎖》
發售日:待定
與《看門狗》一樣,《彩六封鎖》也發生不限期跳票,這會對它的品質產生何種影響還不好說。而更令人擔心的一點是,《彩六封鎖》將以僵尸為題材,而目前市面上已經有很多同類射擊游戲了,《彩六》如果不能脫穎而出,不能有所創新,那就可能令玩家失望。
《光環:無限》
發售日:2020年底
乍一看,《光環無限》似乎根本不屬于“可能會雷”的范疇,目前該游戲的期待值也是非常之高。不過,至今微軟并沒放出很多游戲的具體內容,反而曝光了該游戲會有內購微交易系統。
最令人不安的是,《光環無限》創意總監Tim Longo在2019年8月離開了343工作室,不久后首席制作人Mary Olson也離職了。雖然微軟方面稱這對游戲毫無影響,但主要制作人相繼離職這種情況,怎么看都跟去年的《圣歌》有點像。作為玩家,我們只能默默期待,《光環無限》最后別像《圣歌》一樣翻車。
《半條命:愛莉克斯》
發售日:3月
“半條命”是V社旗下響當當的游戲系列,多年來受到媒體與玩家一致好評。不過這款新作卻會是一款VR獨占游戲。VR下能獲得更加沉浸的第一人稱體驗,但它畢竟是一個新興玩法門類,V社以往也沒有VR游戲開發經驗。而有些粉絲可能會把《半條命:愛莉克斯》當作“可期而不可求”的《半條命3》,無形之中給游戲增添了一點壓力和負擔。不知道《半條命:愛莉克斯》能否獲得成功?
《漫威復仇者聯盟》
發售日:5月15日
超級英雄游戲一直以來都缺乏成功的大作,而《漫威復聯》也面臨這個困局。由于游戲中的人物面貌與電影版差異較大,不少玩家已經起了爭議,而官方還早早宣布該游戲會包含付費內購,又給人一種“靠IP圈錢”的感覺。從之前放出的演示視頻來看,游戲中的角色動作也沒有特別出彩,而且還存在“雷神錘砸不死小兵”的尷尬場景。總之,這款游戲到底質量如何,還有待觀察。
《科曼奇》
發售日:3月
《科曼奇》曾是90年代備受好評的飛行空戰游戲系列,它是首款運用Voxel Space引擎打造的飛行模擬游戲,在當時擁有出彩而逼真的地貌效果。該系列在2001年后就斷更了,而今年的最新作卻將拋棄掉系列最精華的部分——單人內容。《科曼奇》新作將是團戰網游,能否再續經典真的不好說。
《三國志14》
發售日:1月16日
光榮三國志系列在11代后屢遭坎坷,這次的14代雖然將回歸大地圖、戰棋玩法,但從之前的demo來看,有些內容過于簡化,經營建造要素不多,部分武將立繪生硬,武將特性雖多卻不能混編,單挑系統也略顯簡陋。當然這只是一個試玩版,正式游戲可能會好很多。不知道《三國志14》能否重新令玩家們滿意?
《我的世界:地下城》
發售日:4月
《我的世界》已經推出了10年,也火了10年,其高自由度沙盒玩法吸引了一代又一代玩家。然而,同一工作室打造的最新作卻拋棄了原來最為人稱道的特色,轉為一款有點像《暗黑破壞神》的地牢打怪游戲,與市面上為數不少的同類游戲相比,它看起來唯一的優勢就是“我的世界”這個IP,角色甚至連職業的劃分都沒有。
很難說有多少《我的世界》玩家會喜歡上這種全然不同的游戲玩法。因此,《我的世界:地下城》或許不會像《我的世界》一樣,受到很多人喜愛。
《鐵血戰士:狩獵場》
發售日:4月24日。
這是一款非對稱多人游戲,玩家扮演精英4人小隊或鐵血戰士,完成軍事行動,或狩獵最有價值的獵物。不過在該游戲放出的演示視頻中,游戲的畫質并不算好,而且核心玩法似乎也容易讓人厭倦。如果玩家因為“鐵血戰士”慕名而來,有可能會失望而歸。
以上就是2020年里有可能會讓人失望、甚至成為“雷作”的新游戲。當然,作為玩家,“雷作”并不是我們想看到的結果,也希望這些游戲發售后都能收獲好評,盡情來打臉吧。
為了保證軟件運行的魯棒性,常常在軟件設計中,啟用看門狗軟件。對于長時間運行的軟件,處于各種不可預知的錯誤,例如:軟件的bug、IO異常等等,容易造成軟件崩潰。軟件崩潰后,就需要看門狗軟件將其拉起來。
如果要開發一個看門狗軟件,需要看長時間運行的軟件是窗體軟件,還是無窗體的軟件。對于有窗體和無窗體的軟件,看門狗軟件的實現方式是不同的。
Ubuntu上啟動應用程序,需要先使用fork啟動子進程,然后,在子進程中啟動應用程序,開門狗大致代碼如下:
/*
* 檢查被開門狗監視的軟件的進程是否不存在了,如果不存在了,則要重新拉起來
*/
auto ret=::fork();
if(ret==-1)
{
break; //出錯了,程序退出
}
else if(ret==0) //子進程
{
::execlp(exePath, exeName, params); //啟動被開門狗監視的程序,
//exePath是要拉起的程序的完整路徑
//exeName是要拉起的程序名稱
//params是啟動程序的命令行參數
}
else //父進程
{
//...
}
如果開門狗程序要拉起的是無窗體的程序,則需要進行如下設置:
假設開門狗程序位于/home/myWatchdog,要讓開門狗程序隨系統啟動而啟動,則需要在/etc/systemd/system/目錄下放置一個.service文件。
這里創建文件/etc/systemd/system/myWatchdog.service,文件內容如下:
[Unit]
Description=description of the service
[Service]
Type=simple
ExecStart=/home/myWatchdog
ExecStop=[Install]
WantedBy=multi-user.target
創建完/etc/systemd/system/myWatchdog.service文件之后,需要使用命令將服務開啟:
sudo systemctl enable myWatchdog.service
最后,重啟系統。
如果開門狗程序要拉起的是有窗體的程序,則需要進行如下設置:
假設開門狗程序位于/home/myWatchdog,要讓開門狗程序隨系統啟動而啟動,則需要在/etc/xdg/autostart/目錄下放置一個.desktop文件。
這里創建文件/etc/xdg/autostart/myWatchdog.desktop,文件內容如下:
[Desktop Entry]
Version=1.0
Name=myWatchdog.desktop
Exec=/home/myWatchdog
StartupNotify=false
NoDisplay=true
Type=Application
Categories=Utility;
建完/etc/xdg/autostart/myWatchdog.desktop文件之后,重啟系統。
Windows需要將開門狗軟件做成windows服務程序,在服務程序里面啟動應用程序即可,開門狗大致代碼如下:
#include <Windows.h>
char gServiceName[]="myWatchdog"; //服務名稱
void WINAPI ServiceMain();
int APIENTRY main(int argn, const char ** argv)
{
//...
SERVICE_TABLE_ENTRY serviceTable[2]={
{ gServiceName, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
{ NULL, NULL }
};
StartServiceCtrlDispatcher(serviceTable);
return 0;
}
SERVICE_STATUS_HANDLE gServiceStatus;
SERVICE_STATUS gStatus;
void ControlHandler(DWORD request)
{
switch (request)
{
case SERVICE_CONTROL_STOP:
gStatus.dwCurrentState=SERVICE_STOPPED;
gStatus.dwWin32ExitCode=0;
::SetServiceStatus(gServiceStatus, &gStatus);
break;
case SERVICE_CONTROL_SHUTDOWN:
gStatus.dwCurrentState=SERVICE_STOPPED;
gStatus.dwWin32ExitCode=0;
::SetServiceStatus(gServiceStatus, &gStatus);
break;
default:
::SetServiceStatus(gServiceStatus, &gStatus);
break;
}
return;
}
void WINAPI ServiceMain()
{
gStatus.dwServiceType=SERVICE_WIN32;
gStatus.dwCurrentState=SERVICE_START_PENDING;
gStatus.dwControlsAccepted=SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
gStatus.dwWin32ExitCode=0;
gStatus.dwServiceSpecificExitCode=0;
gStatus.dwCheckPoint=0;
gStatus.dwWaitHint=0;
gServiceStatus=::RegisterServiceCtrlHandler(gServiceName, (LPHANDLER_FUNCTION)ControlHandler);
if (gServiceStatus==(SERVICE_STATUS_HANDLE)0)
{
return;
}
gStatus.dwCurrentState=SERVICE_RUNNING;
::SetServiceStatus(gServiceStatus, &gStatus);
while (true)
{
/*
* 檢查被開門狗監視的軟件的進程是否不存在了,如果不存在了,則要重新拉起來
*/
//拉起程序
lauchProgress();
}
}
如果開門狗程序要拉起的是無窗體的程序,則拉起程序的函數lauchProgress()這樣寫:
void lauchProgress()
{
STARTUPINFO si;
::ZeroMemory(&si, sizeof(si));
si.cb=sizeof(si);
PROCESS_INFORMATION pi;
::ZeroMemory(&pi, sizeof(pi));
BOOL bRet=::CreateProcess(NULL, exePath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //exePath是要拉起的程序的完整路徑
if (bRet) //拉起程序成功
{
::CloseHandle(pi.hProcess);
}
else //拉起程序失敗
{
//...
}
}
如果開門狗程序要拉起的是有窗體的程序,則拉起程序的函數lauchProgress()這樣寫:
void lauchProgress()
{
HANDLE hUserToken;
DWORD id=::WTSGetActiveConsoleSessionId();
if (!::WTSQueryUserToken(id, &hUserToken))
{
return; //拉起失敗
}
STARTUPINFO si;
::ZeroMemory(&si, sizeof(si));
si.cb=sizeof(si);
PROCESS_INFORMATION pi;
::ZeroMemory(&pi, sizeof(pi));
BOOL bRet=::CreateProcessAsUser(hUserToken, NULL, exePath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); //exePath是要拉起的程序的完整路徑
if (bRet) //拉起程序成功
{
::CloseHandle(pi.hProcess);
}
else //拉起程序失敗
{
//...
}
}
看門狗程序編譯成myWatchdog.exe程序之后,假設程序保存在d:\myWatchdog.exe,則需要使用命令安裝服務:
sc create myWatchdog binPath="D:\myWatchdog.exe"
最后,進入“控制面板”->“系統和安全”->"Windows工具"->“服務”,在列表中找到"myWatchdog",設置為“自動啟動”,即可。