All Projects → Lachee → Raylib Goplus

Lachee / Raylib Goplus

Licence: zlib
A newer version of the Go bindings for Raylib

Programming Languages

c
50402 projects - #5 most used programming language
go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Raylib Goplus

Expo Crossy Road
🐥🚙 Crossy Road game clone made in Expo (iOS, Android, web), THREE.js, Tween, React Native. 🐔
Stars: ✭ 701 (+1222.64%)
Mutual labels:  game, opengl
Frag.exe
Multiplayer First-Person Shooter written in C++ using my own engine, Qor
Stars: ✭ 8 (-84.91%)
Mutual labels:  game, opengl
Effekseer
Stars: ✭ 728 (+1273.58%)
Mutual labels:  game, opengl
Open Builder
Open "Minecraft-like" game with multiplayer support and Lua scripting support for the both client and server
Stars: ✭ 569 (+973.58%)
Mutual labels:  game, opengl
Hs Quake 3
Quake 3 map viewer written in Haskell
Stars: ✭ 33 (-37.74%)
Mutual labels:  game, opengl
Arxlibertatis
Cross-platform port of Arx Fatalis, a first-person role-playing game
Stars: ✭ 602 (+1035.85%)
Mutual labels:  game, opengl
Zemeroth
😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust
Stars: ✭ 940 (+1673.58%)
Mutual labels:  game, opengl
Tprpix
a Cross-Platform, 2D Survival Sandbox Game Project. Based on C++17/cmake/OpenGL/SQLite3.
Stars: ✭ 448 (+745.28%)
Mutual labels:  game, opengl
Gameoverlay
🎮 GameOverlay using CEF with support for common rendering backends
Stars: ✭ 32 (-39.62%)
Mutual labels:  game, opengl
Glumpy
Python+Numpy+OpenGL: fast, scalable and beautiful scientific visualization
Stars: ✭ 882 (+1564.15%)
Mutual labels:  game, opengl
Freeorion
Source code repository of the FreeOrion project.
Stars: ✭ 507 (+856.6%)
Mutual labels:  game, opengl
Game Dogfight
Air to air combat game, created in Python 3 using HARFANG 3D.
Stars: ✭ 41 (-22.64%)
Mutual labels:  game, opengl
Etlegacy Deprecated
Archived repository. For current repo, see: https://github.com/etlegacy/etlegacy
Stars: ✭ 470 (+786.79%)
Mutual labels:  game, opengl
Ouzel
C++ game engine for Windows, macOS, Linux, iOS, tvOS, Android, and web browsers
Stars: ✭ 607 (+1045.28%)
Mutual labels:  game, opengl
Lasercrabs
Launch your LASERCRAB at walls, ceilings, and enemy heads in this indie multiplayer shooter where "move" and "attack" are synonymous.
Stars: ✭ 465 (+777.36%)
Mutual labels:  game, opengl
Openspades
Compatible client of Ace of Spades 0.75
Stars: ✭ 769 (+1350.94%)
Mutual labels:  game, opengl
Rigelengine
A modern re-implementation of the classic DOS game Duke Nukem II
Stars: ✭ 393 (+641.51%)
Mutual labels:  game, opengl
Taisei
A free and open-source Touhou Project fangame
Stars: ✭ 428 (+707.55%)
Mutual labels:  game, opengl
Fimbulclient
Open source Ragnarök Online client in C++
Stars: ✭ 8 (-84.91%)
Mutual labels:  game, opengl
Hinterland
2D top-down shooter game
Stars: ✭ 34 (-35.85%)
Mutual labels:  game, opengl

Raylib Go Plus is an improved Go bindings for the video game library Raylib

This library is a work in progress and still new. We are always looking for improvements and help translating the bindings. Any cross-platform testing is most welcome too.

Big thanks to the original Go Bindings by Gen2Brain as they served as a basis for my bindings and helped me solve some tricky c problems :)

Additional thanks to the SolarLune discord and Raylib discord for helping me out and their invested interest.

Installation

GoDoc

Use the go get command to fetch the latest version: go get github.com/lachee/raylib-goplus/raylib

You are required to have all the dependencies for Raylib too. Specifically (if you are on windows), Mingw-w64.

Its that simple! Once you have fetch the resource, be sure to include it and get going!

package main
import r "github.com/lachee/raylib-goplus/raylib"
func main() {
	r.InitWindow(800, 450, "Raylib Go Plus")
	for !r.WindowShouldClose() {
		r.BeginDrawing()
		r.ClearBackground(r.RayWhite)
		r.DrawText("Woo! Raylib-Go-Plus! Now with ++", 20, 20, 20, r.GopherBlue)
		r.EndDrawing()
	}
	r.CloseWindow()
}

Building / Updating Raylib / Contribution

If you wish to build and update raylib, the project comes with a useful converter. To run the converter, you need the goimports tool. It can be installed by running the command go get golang.org/x/tools/cmd/goimports. Make sure you update the source files in raylib/ and update the raylib-convert/headings.txt headings (this tells the converter what to export). Once that is done, simply run ./build.sh.

You can run the converter on Windows by using Git Bash (included with Git for Windows).

I am happy for any contributions. This is a big project with over 477 functions! Its likely I have missed something or something doesn't work right for a particular platform (I only test on Windows).

NOTE: All contributions to code within _gen.go files will be rejected! Those additions must be made within a raylib-convert/manual/ go file, with the function name as the file name.

Unloadables

There is an experimental feature in this library called "Unloadables". When possible, Raylib Go Plus will have a record to every object that is loaded via LoadXXXX pattern, and will delete their record when Unload() is called on them. This is a useful safety feature to just make sure everything is unloaded.

Because they are tracked, you can call r.UnloadAll() at the end of your application to free up all recorded Unloadables from the C memory, preventing memory leaks.

Please note that this is an experimental feature, and not all Loadables maybe added to the tracker, nor may they all be added for every Load functions (ie: some GetXXXX may require unloading too). It is recommended to always free up the object yourself using Unload()

Anything that is loaded using a LoadXXXX should be in OOP mode of the converter. The converter will add Unload methods. In cases where they are named Close instead (ie AudioStream), please make the OOP method Unload, and the functional method the original Close.

RayGUI & RayMath

Both raygui and raymath are implemented by default in the raylib package. The reasoning behind not seperating raygui was because of a technical limitation with cgo (the interface used to link the c files into go) not being able to support links outside the package directory (I would have to include the entire raylib.h again into a raygui package).

License

This project is still a work in progress, but the license will be zlib/libpng to keep it inline with Raylib license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].