2012-07-20 36 views
2

我正在寫一個名爲Bombz的跨平臺遊戲(使用C++),我需要一種讀取/寫入用戶設置的方式等,其中還將包括已完成哪些級別的記錄。像ini文件解析器這樣的東西可以,但它並不需要高效和/或可伸縮 - 我可以在啓動時讀取所有設置,而不是在運行時查找指定的密鑰。簡單的跨平臺設置管理器

我發現了一些簡單的ini文件解析器,但他們忽略了存儲文件的位置的問題,看起來我可能必須自己編寫所有這些東西。我應該使用類似:

  • 的Windows:$APPDATA/realh/Bombz/config
  • 的Mac:$HOME/Library/Bombz/config
  • 的Linux等:$HOME/.bombz/config(或使用XDG規範)

,我擡頭$HOME$APPDATAgetenv()?我知道在Windows中有更好的批准方式,但是我是一個Linux人,我不想直接處理Windows API。

+0

爲什麼不將設置存儲在遊戲目錄文件夾中? – 2012-07-20 15:49:34

+1

@Shaktal:因爲這是不好的實踐 - 你可能甚至沒有寫訪問 – ltjax 2012-07-20 15:51:36

+0

http://doc.trolltech.com/4.6/qdir.html#homePath如果你可以使用QT – 2012-07-20 16:11:25

回答

2

嗯,這很有趣 - 有人試圖寫一個遊戲而不調用OS函數。相當大的挑戰。

除此之外,如果你不想調用SHGetKnownFolderPath(),那麼環境變量是你唯一的選擇。儘管對於我自己,我甚至不信任Linux上的$ HOME - 我使用getpwuid_r()。和MacOS上的NSHomeDirectory()。

+0

我正在使用SDL,它負責處理幾乎所有我需要的遊戲,但它沒有任何處理設置或文件位置的東西。 – realh 2012-07-20 19:32:00

+4

我想如果任何人在Linux上改變HOME,他們可能會有一個很好的(至少對他們來說)這樣做的理由,並且可能會更喜歡遊戲來尊重它,而不是堅持使用他們顯然不喜歡的系統強加的東西。 – realh 2012-07-20 19:38:43