2012-08-07 84 views
2

我目前正在Windows上開發一個使用C++和SFML的RPG遊戲。目前它運行良好,但是當我檢查了所有我認識到的事情之後,因爲所有數據(例如物品,庫存,生物,戰鬥,NPC,商店等等)都存儲在文本文件中,所以它們可以非常簡單地用任何文本編輯。保護C++ RPG遊戲中的存儲數據

我想至少要防止這些數據被輕易操縱。很明顯,只要有人將數據存儲在發佈的版本中,並且能夠對其進行編輯。

我想知道保護這些數據的最佳途徑是什麼,同時仍然保持使用將來構建的工具(如地圖編輯器,項目編輯器,NPC編輯器等)編輯它的能力,如以及發動機本身。

我非常喜歡寫自己的作品,並且只是想知道如何最好地完成它,因爲我主要是使用它來更好地學習語言。如果有人真的認爲這是愚蠢的,請讓我知道,所以我可能會考慮使用可選庫。

如果你做的更晚,我會很感激任何人都可以推薦一個好的給我使用。

+0

首先,gamedev.stackexchange.com可能會更有資格幫助您。其次,正如你自己所說,無論你如何存儲文件,用戶最終都能夠修改它們。因此,只要你的遊戲是單人遊戲(如果不是,你有一臺服務器來執行這些事情),我不擔心。將文件存儲在遊戲安裝的子文件夾中,讓不想玩實際遊戲的人隨意修改它們。它不會以任何方式傷害任何人:) – 2012-08-07 18:03:56

+0

好點,但正如我所說這主要是爲了練習,可能不會被分發給除了朋友之外的任何人。我試圖儘可能多地練習,並將它們放在一起。 – Kethaias 2012-08-07 18:07:40

+0

這會造成巨大的差異:)在這種情況下,Heisenbug可能會在他的答案中加上它! – 2012-08-07 18:09:01

回答

6

我想知道什麼是最好的途徑去保護這個數據 將同時仍保持與工具 將被建在將來如地圖編輯器,項目編輯, NPC進行編輯的能力編輯等,以及引擎本身。

我不認爲有一個最佳的解決方案。最簡單的可以是對文件進行加密,對遊戲中的密鑰進行硬編碼以解密它們。 這不會阻止您的二進制文件的逆向工程來恢復密鑰。

+0

+1,這是一個很好的起點。如果使用非對稱密碼算法(即公鑰和私鑰對),則可以避免其弱點(逆向工程)。有很多免費的實現可用。 – 2012-08-07 18:06:03

+2

我不認爲非對稱密碼術可以解決這個問題。事實上,二進制文件中的硬編碼私鑰仍然可以找到。 – Heisenbug 2012-08-07 18:07:30

+0

感謝您的建議。我正在考慮諸如此類的東西,但我想可能有某種你可以存儲的文件。我知道一個夢。 XD – Kethaias 2012-08-07 18:09:02

2

讓您的遊戲引擎以文本和二進制格式讀取文件。二進制格式可以像在文件目錄中使用zip壓縮一樣簡單。然後你可以在二進制文件上實現校驗和。

對於開發,您將使用文本版本,但在實時遊戲中,您只允許讀取二進制格式,並拒絕校驗和不合格的文件。

這不是超安全的,因爲有人會反向設計校驗和。但它會阻止臨時用戶編輯您的遊戲數據。通過讓遊戲客戶端驗證遊戲數據校驗和與服務器上已知的良好校驗和,可以使其更安全。