Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrfrenik/gunslinger
C99, header-only framework for games and multimedia applications
https://github.com/mrfrenik/gunslinger
c99 game-framework lightweight
Last synced: about 1 month ago
JSON representation
C99, header-only framework for games and multimedia applications
- Host: GitHub
- URL: https://github.com/mrfrenik/gunslinger
- Owner: MrFrenik
- License: bsd-3-clause
- Created: 2020-03-06T19:05:15.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-15T03:29:10.000Z (6 months ago)
- Last Synced: 2024-05-15T20:42:13.257Z (6 months ago)
- Topics: c99, game-framework, lightweight
- Language: C
- Homepage:
- Size: 22.1 MB
- Stars: 1,166
- Watchers: 35
- Forks: 74
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![gunslinger](https://raw.githubusercontent.com/MrFrenik/gunslinger/master/docs/gs_logo2.png)
![GitHub](https://img.shields.io/github/license/mrfrenik/gunslinger)
![GitHub top language](https://img.shields.io/github/languages/top/mrfrenik/gunslinger?label=c99)
[![CI](https://github.com/MrFrenik/gunslinger/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/MrFrenik/gunslinger/actions/workflows/ci.yml)Gunslinger is a header-only c99 framework for multimedia applications.
## Features
- Header-only: drag-drop into any project without any additional compiling required.
- All externals included in the framework itself.
- Simple API inspired by [sokol](https://github.com/floooh/sokol) headers.
- Provides core framework for quickly developing multimedia applications: [Platform](https://github.com/MrFrenik/gunslinger/blob/master/docs/platform.md), [Graphics](https://github.com/MrFrenik/gunslinger/blob/master/docs/graphics.md), [Audio layers](https://github.com/MrFrenik/gunslinger/blob/master/docs/audio.md).
- Provides custom utilities for [math](https://github.com/MrFrenik/gunslinger/blob/master/docs/math.md) and [generic data structures](https://github.com/MrFrenik/gunslinger/blob/master/docs/containers.md).
- Optional [helper utilties](https://github.com/MrFrenik/gunslinger/tree/master/util) are provided, such as [OpenGL 2.0-style Immediate-Mode Rendering](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_idraw.h), [Asset Management System](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_asset.h), [Physics Util](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_physics.h), [Immediate Mode GUI](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_gui.h), [Graphics Extensions](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_gfxt.h), and a [Meta Data Reflection Utility](https://github.com/MrFrenik/gunslinger/blob/master/util/gs_meta.h).
- Supports a growing list of platforms: `Windows`, `OSX`, `Linux`, `Android`, and `HTML5` currently with plans to add `UWP`, `RPI`, `IOS`.
- Graphics pipeline follows an explicit rendering framework, making it easier to write for modern backends, such as `Vulkan`/`DX12`/`Metal`.
- All core layers can be fully swapped out with custom user implementations.
- Large collection of [examples](https://github.com/MrFrenik/gs_examples) for quickly getting started.
- An available [project template](https://github.com/MrFrenik/gs_project_template) for various platforms and build systems to get started with a blank gunslinger project.
- Official framework used for all [Game Engineering](https://www.youtube.com/watch?v=VLZjd_Y1gJ8&list=PLIozaEI1hFu3Cd0YJMwOBQKTKfe9uZoyn) YouTube videos.## Documentation
* [Official Documentation (Docsforge)](https://gunslinger.docsforge.com/)
* [Online Sample Repo](https://mrfrenik.github.io/gunslinger)
* [Getting Started](https://github.com/MrFrenik/gunslinger/blob/master/docs/getting_started.md)
* [Graphics](https://github.com/MrFrenik/gunslinger/blob/master/docs/graphics.md)
* [Containers](https://github.com/MrFrenik/gunslinger/blob/master/docs/containers.md)
* [Examples](https://github.com/MrFrenik/gs_examples)[//]: # "(* [Platform](https://github.com/MrFrenik/gunslinger/blob/master/docs/platform.md) )"
[//]: # "(* [Graphics](https://github.com/MrFrenik/gunslinger/blob/master/docs/graphics.md) )"
[//]: # "(* [Audio](https://github.com/MrFrenik/gunslinger/blob/master/docs/audio.md) )"
[//]: # "(* [Math](https://github.com/MrFrenik/gunslinger/blob/master/docs/math.md) )"
[//]: # "(* [Utils](https://github.com/MrFrenik/gunslinger/blob/master/docs/utils.md) )"## Basic Example
A simple c99 'Hello World' example using gunslinger:```c
#define GS_IMPL
#includegs_app_desc_t gs_main(int32_t argc, char** argv)
{
return (gs_app_desc_t){0};
}
```
## Projects using GS### Drop Down Terminal Util
https://github.com/Samdal/gs_ddt_ex## Roadmap
* Support iOS/RPI/UWP backends
* Support Vulkan/Metal/DX12 backends
* Language Ports: (Python, JS, Rust, C#)
* Add platform-independent threading utils to framework
* Job System Util
* Write more docs for github
* Hot-reload util
* Remove all externals from core framework
* Add more texture formats