關閉

當前位置:首頁 ? 游戲工作室建立 ? 正文

游戲工作室建立三步曲2019:腳本、防封與人工智能

很高興的說一句,目前為止,前兩篇文章《第一篇,成本與防封號》,《第二篇,手動模式的選擇》收到諸多好評與贊揚,各位做游戲工作室的朋友對我的認可更是令我驚訝,所以呢,這第三篇結尾文章就多說點,希望對大家有點用。

游戲工作室建立三步曲2019:腳本、防封與人工智能

第三章主要說“腳本的注意事項”, “腳本入門的一些通用模塊”,“圖色與算法”,“人工智能”。其中會穿插一些很實用的代碼,能看懂的更好,看不懂的可以百度。

寫之前呢,說一下本人:

我還是個寶寶,真的!還是個任性的寶寶,從小愛數學,于是高考數學146.從小不大喜歡語文,所以語文91.考了個全國排名前60的大學的數學系。混了四年,對,你沒聽錯,混!畢業后,突然喜歡上編程,自學了計算機,學了數據庫管理,java。

工作第二年的時候,工資拿到一萬多。然后,懶得做網頁了,辭職了。自學了c#和Windows編程。每天自娛自樂,開心得很。

最近呢,尤其2019年上半年,公司大量倒閉,企業大量裁員,看到了好多人迷迷茫茫,哭哭啼啼。總覺得做點什么好,就決定寫幾篇文章。不求播撒光明于天下,只是不想眾多窮苦黎民泯滅于黑暗。好好看,仔細想,多問多學。保住一日三餐,足夠。

前兩篇教大家如何在游戲里賺錢,這篇教大家一些簡單的腳本知識。個人有三個建議:

第一,科技,服務于人民。不要拿去禍害社會。

第二,多學知識,少搞游戲。本事學成,進正規公司,做個軟件工程師不好?能行走于陽光之下,何必潛行于黑夜之間。

第三,只要能保住溫飽,永遠不要停止學習。

如果有人想學腳本,想學編程,告訴大家三個原則,如果你滿足不了,建議你別做。

第一:技術員永遠走在科技的前沿,哪怕迎著失敗和嘲笑。

第二:技術員永遠保持著最冷靜的心態和最淡泊的耐心。

第三:保持終生學習,并且,學會的一定要教別人。當然,這些都是題外話,不過也是真心話。

下面開始正文。

先建立一個前提,本文所說的腳本,是這樣定義的:

一個角色攻擊力1,一個boss血量1000,所以,這個角色想殺了這個boss,需要攻擊1000次。目前市場上有兩種替代人工的辦法:

第一種,將人物的攻擊修改成999999,殺這個boss,一刀。

第二種,模擬鍵盤鼠標,讓鼠標自動點擊這個boss1000下。

第一種屬于作弊,會對游戲產生大量傷害,尤其是點卡游戲,我們說的腳本不包括這些。

第二種,不修改游戲內存數據,甚至不讀取游戲的內存數據,做到玩家怎么干,電腦就怎么干,我們稱為腳本。

如果這套思路做成的軟件,不用在游戲上,用在自動化辦公上或者工廠機械上,我們稱為機械自動化或人工智能。

腳本的注意事項。

為什么這個先說,因為能寫腳本的畢竟是少數,大部分的人都是買腳本用。這個模塊,也可以告訴大家,什么樣的腳本最好別買,什么樣的腳本比較容易封號。所有的游戲腳本,都要有一個原則:“低調”。本來就是灰色產業,能多低調就多低調,越不引人注意越好,又不是相親當英雄,搞得那么光明堂皇干嘛?

下面分10點詳細說明。

第一個注意事項:腳本界面。

拿網易某個游戲來說,很多腳本的界面上有什么買鬼切草,巫醫等和游戲有關的字符或圖片。如果我是網易的程序員,在隨便一個時間點,對電腦桌面截個圖。Windows的底層函數:CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size); 很容易就能做到。一旦看到你在用腳本,遲早封你!

第二個注意事項:腳本名稱。

如果一個腳本的exe名字就叫網易xxx腳本,即使打開后界面上沒有相關字符也沒用,因為exe名稱決定了你的程序在任務管理器里面的進程名稱。而一臺電腦的所有當前進程名稱,也是很容易獲得的,這個代碼行數較多,就不貼出來,有興趣的朋友可以百度。當然,也有隱藏進程的方法,但是exe名稱改掉不是更好嗎?

第三個注意事項:調用一些需要釋放的函數或者類時,一定要記得釋放。

比如聲明一個bitmap。Bitmap bit = new Bitmap(width, height, PixelFormat.Format24bppRgb);用完之后,一定記得寫上bit.Dispose();把它釋放掉。不然,就會越積累越多。游戲變卡不說,很多檢測程序都會注意這塊。你內存一直飆升的話,別說反腳本程序,360都會檢測出來并且提醒你。

第四個注意事項:調用的第三方插件一定要有講究。

很多初學者學腳本的時候,喜歡用按鍵精靈+大漠插件,還不加外殼。對此,我只能說,自己寫個程序練練手是可以的,用這種腳本進入市場,除了封號還是封號!為什么?因為知道按鍵精靈的人都知道,按鍵是用來干嘛的?寫腳本的。大漠插件是用來干嘛的?提供公用函數,方便寫腳本的。那大點的游戲公司會不知道?不封你,只是想把你養肥了再殺而已。這里,不是說不能用按鍵和大漠,用的時候麻煩寫復雜點,加點保護,加點外殼,大漠還可以修改自身的特征碼呢。

第五個注意事項:寫模擬按鍵都是要寫延遲的。

如果真的想把腳本用起來,建議延遲改成隨機數。模擬點擊1000下,每次間隔都是一秒,你的手有那么準?一查就知道是腳本再點啊。

第六個注意事項:少用多線程。

很簡單的道理,正常人就一個腦子一雙手,不可能多線程操作,一查就知道是腳本。對于有些游戲,卻是必須多開,比如夢幻的新手任務,一般都是多開做,但是就算多開,也可以不用多線程啊,通過圖色分析每個界面進行到哪一步了,建立一個優先級別,先操作哪個后操作哪個,絕對來得及,就算慢點吧,慢點咋了?能慢幾分鐘?封組號,重新練得多久?

以上6點說的是增加被封幾率。下面說幾個坑定被封的,建議碰都別去碰。

第一個:修改內存,其實呢,這個可以不說,因為大家基本都不干這種傻事。

第二個:截獲數據包。違法,違法,違法。重要的事情說三遍。并且很容易被查到。

第三個;后臺模擬,目前后臺模擬有兩種api,一種是sendMessage,一種是postMessage。Vb,vc,C++和c#是可以直接調用這兩個api的,易語言和大漠插件是把這兩個api封裝了下。這兩種api都是利用了Windows的通信機制,消息傳遞。很遺憾的是,幾年前,csdn論壇上就有人寫了一個帖子,講述了正常的按鍵和后臺按鍵的檢測,并且方法不難,代碼不多,所以游戲公司也能很容易掌握。

第四個:虛擬機,尤其是服務器上裝虛擬機。這玩意,以前搞誅仙3的時候用的很爽,天龍八部也很爽,地下城有些時間也很爽。但是吧,我有個同學,在愛奇藝,年薪三四十萬,技術比我高那么一點點。直接對我說,你要是搞游戲,虛擬機別碰,具體為什么沒對我說,但是既然有大神說了,還是別碰比較好。

這4點為什么說坑定封呢?因為搞得太囂張了,囂張到如果你是游戲的運維人員,你也忍受不了。一般人,搞個幾十臺電腦,慢悠悠賺點小錢,對游戲本身影響真心不大,人家也就睜一只眼,閉一只眼了。腳本一旦用了這4點,相當于你想把別人的游戲一鍋端了,你把別人往死里搞,別人不把你往死里搞?

腳本入門的一些通用模塊。

不管你選擇什么語言,只要你在Windows上做,你必然要用到一些api函數,很多新手覺得很難,找又找不到,用又不會用,然后放棄了寫代碼,繼續跑去板磚。

最近抖音流行一句話:你若墮落,神仙也救不了你,你若堅強,絕處也能逢生。學編程,本身必須要有堅強的意志。當然,沒人教確實很容易絕望,所以這里貼出一些代碼,希望能幫到一些在沒有足夠條件下,卻真心想學編程的小朋友和大朋友。

以下所有的api函數,只提供名稱,具體應用,自己去百度,都能百度到。

第一步:獲得游戲焦點,專業的說法,是獲取句柄,百度上有各種方法,我給大家說兩種最簡單的。對于單窗口WindowFromPoint(int xPoint,int yPoint);返回參數是指定坐標的窗口句柄。對于多窗口,首先獲取桌面句柄,GetDesktopWindow();然后遍歷桌面的子句柄,EnumChildWindows(IntPtr hWndParent, CallBack lpfn, int lParam);通過名稱篩選。

第二步,由句柄得出窗口的四角坐標,也就是界面的位置。先自定義結構體,public struct RECT

{

 public int Left;           //最左坐標

public int Top;             //最上坐標

public int Right;           //最右坐標

public int Bottom;          //最下坐標

}

然后獲取坐標GetWindowRect(hWnd, ref lpRect);這樣你就能知道界面在屏幕的哪個位置,然后可以計算出鼠標的點擊位置和找圖的區域。

第三步,截圖。分前臺和后臺,不建議大家用后臺取色,所以這里只說前臺。.CopyFromScreen(new Point(X, Y), new Point(0, 0), bit.Size);截屏函數。

第四步,模擬鼠標鍵盤。也是說前臺。鼠標移動,SetCursorPos(int X, int Y);鼠標點擊mouse_event(int dwFlags, int dx, int dy, int dwData, IntPtr dwExtraInfo);鍵盤:keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);延遲函數:Thread.Sleep(1000);

其他:讀取文件,ReadLine()。隨機數,Random()。窗口最大最小化SetForegroundWindow(IntPtr hWnd);注冊熱鍵,RegisterHotKey();

有了這些函數,入門就簡單的多了。但是這些只是基礎,想寫出完整的腳本,還需要很多。

圖色與算法。

知道怎么讓鼠標點擊,卻不知道點哪里,也沒用。所以,判斷信息對腳本很重要,說成最重要也不為過。常用的3種方法,截獲數據包,讀取內存,圖色分析。

第一種方法,已經講過,強烈不建議。

第二種方法,讀取內存,現在的主流方式。基本流程就是找基址,找指針,然后通過函數ReadProcessMemory讀取數據。這種方式蠻好的,但是呢,每次游戲跟新就要更新代碼,就要重新找基址。對于一個團隊,到沒什么,對于散人來說,增加了不少工作量。并且,游戲對內存保護這塊越來越嚴厲,動不動來個十幾級的偏移。所以這里說一下圖色分析,圖色分析好多腳本都用到了,但是極少有腳本全程用圖色分析,大部分都是一半圖色,一半內存。

我寫腳本,就喜歡全圖色,為啥呢?寫好之后基本不用更新,除非游戲界面發生變化。并且,全圖色的,基本不封號。因為我們不讀取內存,不碰后臺,不碰多線程,全局鼠鍵模擬。不是說檢測不到我們,只是我們很低調。但是全圖色很難寫,因為有些地方,確實,人都不好分辨,怎么去分析?這里,我們引進算法,相信很多人多多少少聽過算法,但是不熟悉。

簡單的來說,算法就是比較復雜的數學公式。區別是,公式是針對所有問題的,算法有很多是針對單個問題的。比如地下城,哪個怪離你最近?怎么選擇最近的路線去接近這個怪?怎么單個消滅能達到最快?這些就可以用算法。再比如夢幻的新手任務,如果使用前臺模擬,必然要用到優先度算法,確保完成任務的平均時間差不多。關于算法,往往涉及到核心問題的解決方案,這里不好多說,有興趣的可以多研究研究。可以這么說吧,圖色分析加算法,應該是未來幾年高質量腳本的趨勢。

人工智能。

個人認為,好的游戲腳本,就應該像人一樣去操作,甚至像人一樣去分析。反過來說,游戲的制作宗旨,是為了給玩家用,而不是為了反腳本。模擬人工,你永遠能立于不敗之地。那么我們先來討論下人的分析思維。人的大腦是根據聽覺視覺嗅覺味覺觸覺等獲取信息的。

對游戲而言,只有視覺和聽覺。對于腳本而言,99%的信息靠視覺。我們重點談論視覺,人的大腦,剛出生的時候,沒辦法分析文字,因為沒有概念。至于視頻,本身就是圖片,只不過幀數比較快而已。所以,大腦分析最多的是圖片。一張圖片,并不是全部的信息有用。或者說,并不是每一塊信息同等重要。

舉個很污的例子,你在看片,更多的是在注意女主角,而不是男主,更多的是在注意女主的某些部位,而不是手指頭發。那你為什么會養成這種分析習慣呢?因為我們的大腦,在長期的分析中,提取了很多模型。所以你知道一棵樹是什么樣,你知道一條狗是什么樣。同樣,在腳本中,我們也需要模型(鑒于商業機密和只是產權,這里只說建立模型的思路,不能寫具體步驟)。

這個模型,可能是某一個對話框,也有可能是某個字。對于字庫,是必須的,甚至是首要的,大漠插件有自己的字庫,百度識別也有自己的字庫,都可以直接去調用。但是我建議,大家建立自己的字庫,雖然時間比較長,但是建成后,真心很好用。至于有多好用,參照第二章寫商人的利潤的那段。

當然,僅僅有字庫,是遠遠不夠的,還需要很多別的模型,比如npc和怪物。你的角色,如何知道身邊有哪些怪物,大部分的作者用的是基址遍歷。這種方法談不上好與不好,我的評價是兩個字:能用。除了基址遍歷,我們可以用建模型的辦法,每個npc都有特征,不然玩家怎么分辨?把這些特征抓住,轉化成特征值,通過特征值,照樣能知道身邊有哪些npc。知道了界面上的字和npc,你還需要知道鼠標在哪里。

很多游戲的鼠標都有自己的樣子,但是這些樣子幾乎是不變的,或者小范圍變化。否則,玩家怎么識別?既然人能一眼看出來,那說明,這個模型不難建立。

建立模型,一般從找色開始,圖片的像素,有像素值,有些地方是固定的,有些地方是規律變化的,抓住這些,也就抓住了建立模型的關鍵。有了模型,你就能讓你的腳本像人一樣,通過女主的表情就知道男主用了多大力。有了分析,還需要操作。人的操作,是有血肉的,而不是機械的,是休閑式的,而不是拼命式的。

有些人寫腳本,一丁點時間都不浪費,讓游戲里的角色一直打打打,殺殺殺,跑跑跑。還很自以為是的認為利潤最大化了。嘻嘻,反正我不這么想,不封號才是利潤最大化。所以我的腳本,跑跑停停,偶爾還故意點錯,跑路偶爾跑偏,然后修正一下,打怪偶爾放錯技能,然后多一回合。哎,我的利潤真心沒多大,就是比較省心,因為很少封號。

講個笑話,以前有個游戲的某個道具可以連續吃,而我呢,吊兒郎當的寫代碼,導致偶爾會同時吃掉兩個,把一些客戶心疼的,不要不要的,然后讓我改,我懶得改。然后有兩個客戶跑去用別人的腳本了,臨走前還罵我一頓,說我垃圾,不負責,不為客戶找想,不當家不知道柴米油鹽貴。但是,過了半個月,就回來了。原因估計大家也能猜到。所以啊,人嘛,總是會犯錯的,所以啊,腳本呢,也是需要偶爾犯錯滴。

游戲這行,本來就是細水長流,想一夜暴富,還是去抄大蒜比較好。

2019年,游戲工作室建立三步曲,寫了3篇,用了3天時間,你說你們要是不回復,對得起我大冬天敲鍵盤的手嗎?

好了,寫完了,明天又要敲代碼了,至于這些文章能幫到多少人,盡人事,聽天命吧。寫首歪事送給大家,寫完去給老婆洗碗。。。

勸君窮時少飲酒,一杯能解幾斤愁?勸君閑時多上進,來日方長不可停。

  • 評論(19)

NBE微信公眾號 nbeyouxi 關注后可加官方QQ群,網站內容,同步更新!

  • 1 大王任翊翔 2019-05-28 08:54:49 回復
    雖然我看不懂。但很厲害。而且很早就想學編程。結果就和很早就想學英語一樣。
  • 2 Xcc 2019-05-26 22:22:41 回復
    致敬,腳本界的清流啊
  • 3 111 2019-05-24 07:42:26 回復
    人工智能那個有點意思。
  • 4 美麗的謊言 2019-05-13 13:17:08 回復
    看了這個,雖然有很多看不懂,但是還是感覺你是很用心在寫了,希望能多看到一些這樣的章。另外,如果想學這個方面的,推薦幾本入門級的書籍,謝謝大佬
  • 5 江湖見 2019-05-10 04:21:57 回復
    看了三遍了,精彩,能否有幸相識
  • 6 臥龍長蘇 2019-05-05 21:19:52 回復
    我就說一句 術業有專攻 別浪費時間 去學習編程 , 游戲公司程序員經常裁員 項目不推廣就必裁員 。 花錢雇一個回來即可 用老板思維來思考問題
  • 7 斜陽 2019-04-26 19:33:37 回復
    我是個24開入坑的小白,已經快2年了。瀏覽完作者的三篇文章,自覺恍然大悟。游戲全部關閉 。搬出一臺自己用的電腦,準備自學些電腦技術。可能會很難,很難。也許會學會一點東西努力下去繼續學習。也許會碰到難以解決的問題放棄。但是這一刻我決定去嘗試學習。不知道結果會如何,我會努力的。感謝作者!
  • 8 哎0.0 2019-04-23 06:23:28 回復
    想學C 就是生活不富裕
  • 9 然然 2019-04-22 03:18:52 回復
    然并卵.
    告訴你.多線程是有用法的.腳本使用多線程是用來提高它的工作效率的.同一游戲窗口使用多線程工作效率比單線程更好.就像有些低級腳本使用的時候感覺一愣一愣的.有些腳本打完怪立馬就切換到下一個怪很流程.這都是有方法和技巧的.
    SetCursorPos(int X, int Y);有盾的游戲基本無效.都得用幽靈鍵鼠.就算沒盾的游戲.你不封裝個鼠標軌跡出來.那要封你的時候也是死得好看.
    至于人工智能?目前市面的腳本只是工程學方法,頂多只能算人工智障.
    真正叫人工智能的還是得用人工神經網絡,最差也得用遺傳算法的.不然那也跟快手收徒一樣,騙人滴...
    不是財力雄厚的工作室老板.根本玩兒不起真人工智能.我從0學人工智能到現在.也僅僅讓那"智障"學會了認格藍迪的怪.難度倒是不大.工作量大.得導出所有DNF的圖片讓它去學會認.工作量大得驚人.我一個人要完成可以說時間成本算不過去.
  • 10 第三人稱的愛 2019-04-21 18:03:59 回復
    哇,看了很久看完的,雖然很多都看不懂,但是作者能明白作者的真誠和用心良苦。
  • 11 蛋蛋的春天 2019-04-18 22:08:37 回復
    樓主確實很棒,但我又不知如何評價心里充滿了佩服的心情。
  • 12 困惑 2019-04-17 01:11:07 回復
    寫的很棒
  • 13 想不起來叫啥 2019-04-16 00:45:11 回復
    特意來贊你的!?的!大佬辛苦了!
  • 14 儒俠 2019-04-15 23:36:55 回復
    說得好,好一句:勸君窮時少飲酒,一杯能解幾斤愁?勸君閑時多上進,來日方長不可停。
  • 15 小新 2019-04-14 14:50:27 回復
    真的挺好,最起碼知道不要亂買腳本了 !需要大佬的幫助
  • 16 呆呆永生 2019-04-14 12:32:47 回復
    向大佬致敬:辛苦了
  • 17 孤云 2019-04-13 19:20:07 回復
    謝謝 大佬 雖然我不懂 這些 但是我都認真看一遍了 真的挺好
  • 18 嚶嚶嚶嚶嚶嚶 2019-04-13 09:55:18 回復
    這位老兄是哪位大神,好像請他吃飯
  • 19 居然真的沒人回復 2019-04-12 06:21:26 回復
    你這文章,也只有同行會評論,只知道搬磚的人,還會感覺你這太啰嗦,沒指點姿勢啥的,看了這么一篇有營養的文章我來打破0回復。

猜你喜歡


游戲工作室與生活感悟

游戲工作室與生活感悟

作為一個游戲工作室從業者,關注NBE很久了,算得上是真正的NBE的老人,搜些游戲賺錢的資料基本上都能到論壇逛一圈。很感謝有這么一個很有權威的交流平臺。...

玩家無聊說:為什么要打擊游戲工作室

玩家無聊說:為什么要打擊游戲工作室

閑逛貼吧,看見一個小伙伴的提問:為什么要打擊游戲工作室?該小伙伴認為:工作室讓銅價降低了買金便宜了不是好事嗎?相信很多小伙伴都有類似的疑問吧。的確,游...

  • 微信公眾號
  • QQ交流1群
  • 手機版訪問
二維碼
關閉
關閉
三肖中特2019免费网