伊莉討論區

標題: 關於遊戲模擬器的開發 [打印本頁]

作者: maybe_213    時間: 2020-2-10 03:16 PM     標題: 關於遊戲模擬器的開發

想了解 遊戲模擬器 是用什麼程式語言寫的
因為工作需要 所以需要了解一下  

希望大大們給解答
作者: codewice    時間: 2020-2-12 01:56 AM

不一定,以 NES (任天堂模擬器) 為例,有人用 C / C++,也有人用 Java, Go, Rust
作者: maybe_213    時間: 2020-2-12 08:47 PM

codewice 發表於 2020-2-12 01:56 AM
不一定,以 NES (任天堂模擬器) 為例,有人用 C / C++,也有人用 Java, Go, Rust

請問大大  知道雷電模擬器使用那種程式語言寫的嗎?
作者: codewice    時間: 2020-2-19 12:32 AM

本帖最後由 codewice 於 2020-2-19 12:33 AM 編輯

不確定,但我搜尋了一下,在 emulation.gametechwiki.com 看到有文件說 LDPlayer 是基於 VirtualBox

如果文件寫得沒錯,那 LDPlayer 也許跟你想像中的「寫遊戲模擬器」不太一樣。一般當人們說「寫遊戲模擬器」的時候,通常指通過對硬體的了解,寫出 BIOS 之類的東西去模擬遊戲主機的環境,讓 ROM 跑起來的時候以為自己身處真正的遊戲裡面。

看起來 LDPlayer 不大一樣,應該是根基在 VirtualBox 上面模擬出一個手機環境,在上面跑 Android Rom,接著在裡面跑 Android app。

我覺得兩邊要注重的技術細節不大一樣。用不太精確的比喻,原本我以為你是要問「怎麼寫一個 VirtualBox」,現在覺得你想問的是「怎麼用 VirtualBox 堆出一個可以跑 Android 的環境」

如果是後者,Android 上面的開發工具 Android Studio 就有整合模擬器,你用 "Android studio emulator qemu" 搜尋,應該可以找到相關的文件
作者: gonewang123    時間: 2020-2-19 11:34 PM

請問除了工具(C,C++,Java)之外。那電玩模擬器背後的演算法相關的學問
要去涉略哪方面呢?
譬如:動作型的電玩可能牽扯到矩陣運算。
是否有這部分的相關書籍整理可以參考?
譬如:離算數學,專門分析一些數學與演算法的關係。。。之類的。如果要入門該怎樣著手呢?

感謝各位指教
作者: gonewang123    時間: 2020-2-19 11:46 PM

不好意思。。。
剛剛翻找一下。範例如下:
有本書 "Making Games with Python & Pygame" by By Al Sweigart.
裏頭有提到利用 "python + 矩陣運算" 撰寫魔術方塊的遊戲。

所以,小弟推估,依據上述的範例,每個遊戲應該背後有個演算法(algorithm),但是模擬器又更在那之上,模擬器載入遊戲後,遊戲的ROM當中是否也儲存了相關的運行algorithm ? 這方面的組織架構(hierarchy) 是如何配置?是否有人知道哪方面的學問是專門在探討這部分?

感謝各位

作者: gonewang123    時間: 2020-2-20 09:23 AM

參考下列討論:
"www"
".quora"
".com/"
"How-do-people-make-video-game-emulators" (抱歉沒權限貼上 URL)
文中提到一些概念,基本上認為早期的電玩,譬如大型電玩、任天堂
自己本身就是一個小電腦的架構(像現在的smart phone、嵌入式系統,也是小電腦),使用Z80 IC (mcu)
相較於PC,其架構會比較簡單。而建構於其上的每個遊戲的 rom,除了執行碼,還有資料。
所以,要設計一個模擬器,需要本身對計算機組織架構有了解。也要survey原先遊戲機的架構。
要能夠創造出一個虛擬機器,它讀取遊戲rom之後,可以有機制mapping將原先Z80 (遊戲機的CPU)的instructions code 轉換成虛擬機器軟體執行上的指令。譬如原先在遊戲機上的"顯示指令",換到虛擬機制上,就要去轉譯成顯示在 windows 視窗frame上的動作。
所以,如果是牽扯到設計一個虛擬機器,理論上背後牽扯到計算機組織架構與作業系統(只是相對於PC比較簡單),那就會需要能夠對低階語言的support,所以,理論上,"C + 組語"也許是比較適合的。

另外,小弟有點好奇,是否有人專門針對撰寫模擬器出過相關參考書籍。
還請各位先進指教。

感謝




歡迎光臨 伊莉討論區 (http://swww.eyny.com/) Powered by Discuz!