使用 Rust 開發一個微型游戲

来源:https://www.cnblogs.com/QiaoPengjun/archive/2023/05/26/17435616.html
-Advertisement-
Play Games

# 使用 Rust 構建微型游戲 -- 用於理解游戲開發 ## 一、 創建游戲 ### Agenda + 建立項目 + 實現 Game loop + 不同的游戲模式 + 添加玩家 + 添加障礙和計分 + 彙總 ### 理解 Game loop 為了讓游戲流暢、順滑的運行,需要使用 Game loop ...


使用 Rust 構建微型游戲 -- 用於理解游戲開發

一、 創建游戲

Agenda

  • 建立項目
  • 實現 Game loop
  • 不同的游戲模式
  • 添加玩家
  • 添加障礙和計分
  • 彙總

理解 Game loop

為了讓游戲流暢、順滑的運行,需要使用 Game loop

Game loop:

  • 初始化視窗、圖形和其它資源
  • 每當屏幕刷新(通常是每秒 30、60或更多次),它都會運行
  • 每次通過迴圈,它都會調用游戲的 tick() 函數

Game loop

開始 -> 配置 App、Window 和圖形 -> Poll (輪詢 OS 監聽輸入狀態 -> 調用 tick() 函數 -> 更新屏幕 -> 停止? -> 退出

游戲引擎

  • 游戲引擎用來處理平臺特定的部分
  • 以便開發者專心開發游戲

Bracket-Lib (Amethyst Foundation)

Bracket-Lib 是一個 Rust 游戲編程庫:

  • 作為簡單的教學工具
  • 抽象了游戲開發很多複雜的東西
  • 但保留了相關的概念

Bracket-Lib 包括很多庫:

  • 隨機數生成、幾何、路徑尋找、顏色處理、常用演算法等

Bracket-terminal

bracket-terminal 是 Bracket-Lib 中負責顯示部分

  • 它提供了模擬控制台
  • 可與多種渲染平臺配合:
    • 從文本控制台到 Web Assembly
    • 例如:OpenGL、Vulkan、Metal
  • 支持 sprites 和原生 OpenGL 開發

Codepage 437:IBM 擴展 ASCII 字元集

Codepage 437:

  • 來自 Dos PC 上的字元,用於終端輸出,除了字母和數字,還提供了一些符號
  • Bracket-lib 會把字元翻譯成圖形 sprites 並提供一個有限的字元集,字元所展示的是相應的圖片
~ via 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • apply(thisArg) apply(thisArg, argsArray) thisArg 在 func 函數運行時使用的 this 值。請註意,this 可能不是該方法看到的實際值:如果這個函數處於非嚴格模式下,則指定為 null 或 undefined 時會自動替換為指向全局對象,原始值會 ...
  • 具體的加密演算法可以可自行查詢其區別,這裡只是拋磚引玉,大部分加密方法基本都能通過改變傳入參數來實現。 C#相關類文檔: System.Security.Cryptography 命名空間 | Microsoft Learn Node JS相關文檔:Crypto | Node.js v16.20.0 ...
  • >我們是[袋鼠雲數棧 UED 團隊](http://ued.dtstack.cn/),致力於打造優秀的一站式數據中台產品。我們始終保持工匠精神,探索前端道路,為社區積累並傳播經驗價值。。 >本文作者:琉易 [liuxianyu.cn](https://link.juejin.cn/?target=h ...
  • # JavaScript 格式化金額 ## 一、[使用 `Intl.NumberFormat` 構造函數](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberForm ...
  • > 隨著人工智慧技術的不斷發展,阿裡體育等IT大廠,推出的“樂動力”、“天天跳繩”AI運動APP,讓**雲上運動會、線上運動會、健身打卡、AI體育指導**等概念空前火熱。那麼,能否將這些在APP成功應用的場景搬上小程式,分享這些概念的紅利呢?本系列文章就帶您一步一步從零開始開發一個AI運動小程式,本 ...
  • 前端構建的提速是一項比較複雜且細節的工程, 目前產品上在持續跟蹤構建慢的應用, 努力優化編譯速度, 但前端本身擁有一個比較自由的技術環境, 沒有統一的構建工具與流程, 另外語言本身的執行效率、單線程的構建也不好讓編譯機發揮其最大能力, 所以目前全局的通用優化手段還是會比較局限, 還是依賴項目自身的優... ...
  • 如果你有 *n* 個緩存伺服器,一個常見的負載均衡方式是使用以下的哈希方法: *伺服器索引 = 哈希(鍵) % N*,其中 *N* 是伺服器池的大小。 讓我們通過一個例子來說明這是如何工作的。如表5-1所示,我們有4台伺服器和8個字元串鍵及其哈希值。 ![image-2023052022160981 ...
  • # 1.初識變數 編程本質就是通過一定的規則,去操縱數據,變數作為數據的載體,在程式中經常會被用到。與變數相聯繫的還有一個名詞叫數據類型,我們可以舉一個生活中的例子,來理解**數據類型-變數-數據**三者之間的關係 ![image](https://img2023.cnblogs.com/blog/ ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...