Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 3 days ago
JSON representation

C99, header-only framework for games and multimedia applications

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
#include

gs_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