# ggez/ggez

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ggez-ggez).**

4,646 stars · 439 forks · Rust · MIT

## Links

- GitHub: https://github.com/ggez/ggez
- Homepage: http://ggez.rs
- awesome-repositories: https://awesome-repositories.com/repository/ggez-ggez.md

## Topics

`crates` `engine` `game` `game-development` `game-engine` `game-frameworks` `gameengine` `rust`

## Description

ggez is a 2D game framework for the Rust programming language. It provides a hardware abstraction layer for accessing keyboard, mouse, sound, and graphics hardware, alongside a dedicated game loop manager that synchronizes input processing, state updates, and frame rendering for real-time applications.

The framework includes a hardware-accelerated rendering engine for drawing sprites, shapes, and text using shader programs. It also features a resource management system that uses a filesystem abstraction to load and manage game assets from physical directories or compressed archives.

Additional capabilities cover 3D graphics rendering, typography using TrueType fonts, and audio playback for sound effects and music. The system also handles high DPI window scaling, shader uniform management, and draw call batching to optimize performance.

## Tags

### Game Development

- [2D Game Frameworks](https://awesome-repositories.com/f/game-development/game-engines-frameworks/2d-engines/2d-game-frameworks.md) — Provides a comprehensive Rust framework for building two-dimensional games with hardware-accelerated graphics and game loops.
- [2D Graphics Frameworks](https://awesome-repositories.com/f/game-development/game-engines-frameworks/2d-engines/2d-graphics-frameworks.md) — Ships a hardware-accelerated rendering engine specifically for drawing 2D sprites, shapes, and text using shader programs.
- [Asset and Resource Management Systems](https://awesome-repositories.com/f/game-development/asset-and-resource-management-systems.md) — Implements a resource management system using a filesystem abstraction to load assets from directories or archives.
- [Asset Loading](https://awesome-repositories.com/f/game-development/asset-loading.md) — Provides a unified filesystem abstraction to load and instantiate game assets from physical directories or compressed archives. ([source](http://ggez.rs))
- [Asset Management](https://awesome-repositories.com/f/game-development/asset-management.md) — Implements a system for loading and organizing game resources such as audio files and image assets.
- [Game Loops](https://awesome-repositories.com/f/game-development/engine-architecture/game-loops.md) — Manages the primary execution cycle for processing user input, updating state, and rendering frames.
- [Cross-Platform Engines](https://awesome-repositories.com/f/game-development/game-engines-frameworks/cross-platform-engines.md) — Enables game development across multiple operating systems using a unified hardware interface and filesystem abstraction.
- [Game Loop Managers](https://awesome-repositories.com/f/game-development/game-loop-managers.md) — Coordinates the repetitive cycle of processing input, updating game state, and rendering frames to the screen. ([source](https://github.com/ggez/ggez/blob/master/docs/guides/HelloGgez.md))

### Graphics & Multimedia

- [2D and 3D Graphics Rendering](https://awesome-repositories.com/f/graphics-multimedia/2d-and-3d-graphics-rendering.md) — Implements a hardware-accelerated rendering system for drawing 2D shapes, text, and sprites. ([source](http://ggez.rs))
- [Hardware-Accelerated Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/hardware-accelerated-rendering.md) — Offloads the composition of visual layers and geometry to the GPU for high-performance rendering. ([source](https://cdn.jsdelivr.net/gh/ggez/ggez@master/README.md))
- [Real-Time Graphics Rendering](https://awesome-repositories.com/f/graphics-multimedia/real-time-graphics-rendering.md) — Provides hardware-accelerated rendering of sprites and shapes using custom shaders for fluid real-time visuals.
- [Audio Playback](https://awesome-repositories.com/f/graphics-multimedia/audio-music/audio-playback.md) — Ships a system to load and playback sound effects and music from common audio file formats. ([source](https://cdn.jsdelivr.net/gh/ggez/ggez@master/README.md))
- [Draw Call Batching](https://awesome-repositories.com/f/graphics-multimedia/draw-call-batching.md) — Optimizes performance by grouping multiple sprite draw calls into a single GPU operation via instance arrays.
- [Text Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/advanced-typography-rendering/text-rendering.md) — Provides a system for drawing labels and dialogue using TrueType fonts for clear on-screen text. ([source](https://cdn.jsdelivr.net/gh/ggez/ggez@master/README.md))
- [Shader Uniform Management](https://awesome-repositories.com/f/graphics-multimedia/shader-uniform-management.md) — Provides a system to pass constant or dynamic data structures to GPU shader programs for visual effects. ([source](https://github.com/ggez/ggez/blob/master/docs/FAQ.md))
- [Screen Space Coordinate Mappings](https://awesome-repositories.com/f/graphics-multimedia/visualization-mapping/visualization-frameworks/coordinate-systems/page-coordinate-mapping/screen-space-coordinate-mappings.md) — Provides a way to translate virtual game coordinates to physical screen pixels for consistent rendering across resolutions.

### Operating Systems & Systems Programming

- [Hardware Abstraction Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-abstraction-layers.md) — Implements a unified hardware abstraction layer for keyboard, mouse, sound, graphics, and system timers across platforms. ([source](https://github.com/ggez/ggez/blob/master/docs/guides/HelloGgez.md))

### Software Engineering & Architecture

- [Hardware Abstraction Layers](https://awesome-repositories.com/f/software-engineering-architecture/hardware-abstraction-layers.md) — Provides a consistent architectural API to access hardware resources across different operating systems.
- [Virtual File Systems](https://awesome-repositories.com/f/software-engineering-architecture/virtual-file-systems.md) — Provides a filesystem abstraction to map physical directories or archives to a logical path system for assets.

### System Administration & Monitoring

- [Delta-Time Integrations](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/performance-resource-management/frame-rate-monitors/frame-timing-trackers/animation-timing-engines/delta-time-integrations.md) — Implements a system to calculate the elapsed time between frames to ensure consistent movement and physics.
- [Engine Timing Metrics](https://awesome-repositories.com/f/system-administration-monitoring/engine-timing-metrics.md) — Provides utilities to measure frames per second and manage time intervals for consistent application performance. ([source](https://cdn.jsdelivr.net/gh/ggez/ggez@master/README.md))
- [Frame Timing Trackers](https://awesome-repositories.com/f/system-administration-monitoring/performance-monitoring-tools/performance-resource-management/frame-rate-monitors/frame-timing-trackers.md) — Includes utilities to calculate the time elapsed between frames to ensure consistent movement and physics. ([source](https://github.com/ggez/ggez/blob/master/docs/guides/HelloGgez.md))

### User Interface & Experience

- [Trait-Based](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/interaction-and-event-handling/event-handling-architectures/event-handling/trait-based.md) — Defines a trait-based interface for the game loop to execute update and draw logic every frame.
- [User Input Processing](https://awesome-repositories.com/f/user-interface-experience/user-input-processing.md) — Provides a callback system for capturing and interpreting keyboard and mouse events to drive game logic. ([source](https://cdn.jsdelivr.net/gh/ggez/ggez@master/README.md))
- [DPI Scaling](https://awesome-repositories.com/f/user-interface-experience/graphical-user-interfaces/gui-frameworks/dpi-scaling.md) — Adjusts interface dimensions and window sizes to maintain visual consistency on high-density displays. ([source](https://github.com/ggez/ggez/blob/master/docs/FAQ.md))
