• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    為什么游戲中的角色屬性上限都是 99、999、9999?

    圖片:編纂瞎的本家兒頁 Thinkraft,Obsessive-Compulsive-Personality-Disorde

    純真的設計選擇罷了。屬性上限常見的設心猿意馬大致分為「2^n - 1」和「999」兩個門戶,前者方向以數據布局限制作為取值規模,后者方向以UI顯示寬度作為取值規模,但并不停對,也稀有據和UI都撐持,只是程序邏輯做限制的例子。這兩個從程序實現難度和機能上講區別也不大,拍腦門隨便選即可。現實作品中,9、15、31、63、99、127、255、999、9999、65535……之類的設計我都見過。

    你們都拿FC超等馬里奧說事,這游戲的數值系統其實很鬼畜的。

    起首說命數,現實數據類型為尺度ubyte,也就是很誠懇地用一個字節(地址0x075A)來暗示0~255的數值規模。這是正常程序員最合適直覺的實現體例。

    其出格之處在于,后臺的現實數值是「不算當前這一命的備用命數」,而每次過關或死命后呈現黑屏顯示給你看的數則是「包羅當前這一命的總命數」(80年月這兩種暗示法都很風行,街機比力喜好用前一種體例表達殘機數)。成果就要拿這個數值+1之后現場換算當作兩位數顯示。例如現實數值是0x02,顯示出來的就是3。若是這里跨越0x63(99)之后就會溢出造當作顯示犯錯。

    金幣的數據布局則是令人匪夷所思的所見即所得設計。屏幕上顯示的金幣數目(00~99),十位數和個位數別離用0x07ED和0x07EE兩個字節節制,這兩個字節不僅決議了顯示內容(CHR地址),并且還直接介入游戲邏輯計較(大要意思就是吃金幣時先查抄個位數,<9就+1,>=9就歸零且繼續對十位數進行該計較)。若是你強行點竄這兩個地址的值,例如改當作0x04、0x09,屏幕上就會顯示你有49個金幣。然后你再吃一個金幣,就會釀成50。若是你把個位數鎖當作超出規模的值,例如0x0A,則個位數會按照游戲CHR碼表顯示對應的字母、符號之類的內容,而且每次吃金幣十位數城市響應進位。

    每100金幣獎命的邏輯跟這個顯示無關,而是零丁還有一個字節節制,地址0x075E。每當吃到金幣的時辰,這個地址的值也會跟著+1,隨后立即查抄它是否==0x64(十進制100),若是知足前提就執行獎命同時清零。這個地址和上面說的顯示用的兩個地址是分隔自力運作的,注重,游戲程序并不是一切今后臺這個埋沒數值為準、顯示時換算當作十進制;而是兩者自力運作,別離累加。

    近似地,該作中的殘剩時候數字也并沒有像正常做法那樣利用尺度byte/ubyte記實,而是花了三個字節別離暗示百位、十位、個位,地址0x07F8、0x07F9、0x07FA,而且直接介入計較。若是你把前兩個數值鎖當作0x00、0x00就會造當作開局剎時秒殺。

    分數同理,采用了0x07DD到0x07E2的六個字節別離來暗示六位數字(別的0x07D7到0x07DC則是高分記實),而且直接介入計較。稍有分歧的是這六位數字并不是從十萬位到個位,而是從百萬位到十位,此中百萬位為0時埋沒不畫。至于個位數,呵呵,它底子就不是分數系統的一部門。個位那個0是直接畫上去的圖罷了。

    一個1985年的游戲,為了暗示一個百萬級的數字,可以順手華侈6個字節(固然8位CPU這樣處置或許反而更便利),所以問題底子不在省內存上。機械內存容量是心猿意馬死的,不消白不消。至于后來呈現有存檔的游戲,可操縱空間也到了KB級別,也無所謂255仍是999了。

    至于為什么「良多游戲」選擇利用「999」類而不是「2^n - 1」類數字作為數值上限設計,這就沒法回覆了,具體到每個游戲上設計師都可能有本身的設法。在我看來這兩個沒有孰優孰劣,選哪個都可以有良多原因也可以沒有原因

    • 發表于 2019-03-03 21:53
    • 閱讀 ( 965 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆