MMORPG防掛機驗證圖像的生成
需求:從字庫組中,隨機抽取四個漢字、字母或者數字爲一組,生成一個具有一定識別難度的驗證圖像;同時生成包括一個正確選項的四組備選項以供用戶選擇。
採用:開源代碼庫libCapt – http://code.google.com/p/libcapt/
This library generates 256x64 images with four random unicode character.
CAPTCHA is a type of challenge-response test used in computing to ensure that the response is not generated by a computer. Most captcha library is designed for website with script language like PHP or JSP. libcapt is writen by c++ language and designed to be as fast as possible. It can be used in MMORPG game server. libcapt have a gui tool(captUtil) to generate special font file(cpf file) used by libcapt. The cpf file is small and simple.
實現:
libCapt的實現封閉不錯,使用庫帶的工具生成字體文件後,調用只要如下即可:
libCapt::Generator gen(&m_fontFile);
gen.generateQuestion(m_question);
libCapt::Question中定義了驗證圖形和備選答案,可方便使用。
修改:
對於MMO應用,驗證圖形生成不可過於固定,否則容易被簡單硬解。因此,需要對生成圖像的識別難度可以調整。這一目標可以通過如下幾種方法實現:
1> 調整噪點
//噪點數量
enum { NOISE_POINT_COUNTS = 100, NOISE_CURVES_COUNTS = 10};
可將其修改成配置變量;
2> 添加背景色或圖案,可離線製作一些圖案,實時隨機抽取若干,組合插值;
3> 修改字符繪製:
_drawCharacter
4> 修改
_drawLine(imageBuf);
_drawDots(imageBuf);
_fillRandCurves(imageBuf);
_blur(imageBuf);
根據需要可以提供幾種上述繪製或模糊方案,讓策劃配置選擇。
示例:
說明:
本文提出了基於libCapt的實現及擴展來進行MMORPG的防掛機驗證圖像的生成方法。可以快速實現並方便策劃配置,以滿足運營需要。
但是,防掛機驗證圖像並不是越難識別越好。難度加大,一是必然會需要更多的計算資源,以用於服務器計算驗證圖像;另一方面也會給普通玩家帶來較差的體驗。所以,如何真正地設計遊戲內容,讓玩家掛機行爲減少收益,纔是根本解決方法。