Go Game Engine using SDL for fun

nMage

nMage is a (hopefully!) high performance 3D Game Engine written in Go being developed live, with recordings posted on YouTube.

This project is being built with the goals being (in no particular order):

  • Sharing knowledge about less popular/less taught (e.g. compared to web dev), yet very powerful computing topics by building things and explaining as we go
  • Showing the development process of large, high performance software, including things like: learning unfamiliar topics, reading docs, fixing bugs and profiling and optimizing
  • To build a good game engine that can actually be used to develop games
  • Have fun through the entire thing!

Running the code

To run the project you need:

  • A recent version of Go installed
  • A C/C++ compiler installed and in your path
    • Windows: MingW or similar
    • Mac/Linux: Should be installed by default, but if not try GCC or Clang

Then simply clone and use go run .

Note: that it might take a while to run the first time because of downloading/compiling dependencies.

Owner
Omar Mahdi
Backend and infra engineer. Also like game development and lower level code.
Omar Mahdi
Similar Resources

Scalable Distributed Game Server Engine with Hot Swapping in Golang

Scalable Distributed Game Server Engine with Hot Swapping in Golang

GoWorld Scalable Distributed Game Server Engine with Hot Reload in Golang Features Architecture Introduction Get GoWorld Manage GoWorld Servers Demos

Dec 25, 2022

A pure Go game engine

A pure Go game engine

Oak A pure Go game engine Table of Contents Installation Motivation Features Support Quick Start Implementation and Examples Finished Games Installati

Jan 8, 2023

Terminal-based game engine for Go, built on top of Termbox

Terminal-based game engine for Go, built on top of Termbox

Termloop Termloop is a pure Go game engine for the terminal, built on top of the excellent Termbox. It provides a simple render loop for building game

Dec 29, 2022

A 2D ARPG game engine.

A 2D ARPG game engine.

Abyss Engine is an ARPG game engine in the same vein of the 2000's games, and supports playing games similar to Diablo 2. The engine is written in golang and is cross platform. This engine does not ship with game specific files, and will require a game's assets in order to run.

Dec 24, 2022

golang powered game engine

golang powered game engine

Gobatch Go powered engine that offers features from low level opengl abstraction to UI framework. I created this to separate lot of logic from game am

Nov 13, 2022

spx - A 2D Game Engine for learning Go+

spx - A 2D Game Engine for learning Go+

spx - A 2D Game Engine for learning Go+ Tutorials How to run spx tutorials? Download Go+ and build it. See https://github.com/goplus/gop#how-to-build.

Dec 1, 2022

HelloSpx - Hello world of Go+ spx game engine

HelloSpx - Hello world of Go+ spx game engine

HelloSpx - Hello world of Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this game

Nov 27, 2021

HelloWorldForSpx - Hello world of Go+ spx game engine

 HelloWorldForSpx - Hello world of Go+ spx game engine

HelloWorldForSpx - Hello world of Go+ spx game engineHelloWorldForSpx - Hello world of Go+ spx game engine

Nov 22, 2021

snake game implementation using 2d array in Go

snake game implementation using 2d array in Go

Snake Game Implementation Snake game implementation in Go using a 2-dimensional array. Demo Install download the package git clone https://github.com/

May 14, 2022
Comments
  • intel mac busted again.

    intel mac busted again.

    just pulled dev branch and blows up again.

    Maybe should put in a github workflow to build off the makefile ?

    anyways here goes:

    ➜  bloeys__nmage git:(main) ✗ make
    rm -rf nmage 
    rm -rf assimp-go
    git clone https://github.com/bloeys/nmage -b dev
    Cloning into 'nmage'...
    remote: Enumerating objects: 222, done.
    remote: Counting objects: 100% (222/222), done.
    remote: Compressing objects: 100% (148/148), done.
    remote: Total 222 (delta 86), reused 183 (delta 53), pack-reused 0
    Receiving objects: 100% (222/222), 48.58 KiB | 1.94 MiB/s, done.
    Resolving deltas: 100% (86/86), done.
    git clone https://github.com/bloeys/assimp-go
    Cloning into 'assimp-go'...
    remote: Enumerating objects: 234, done.
    remote: Counting objects: 100% (234/234), done.
    remote: Compressing objects: 100% (156/156), done.
    remote: Total 234 (delta 110), reused 192 (delta 73), pack-reused 0
    Receiving objects: 100% (234/234), 7.38 MiB | 6.45 MiB/s, done.
    Resolving deltas: 100% (110/110), done.
    #from: https://github.com/veandco/go-sdl2#requirements
    brew install sdl2{,_image,_mixer,_ttf,_gfx} pkg-config
    Warning: sdl2 2.0.18 is already installed and up-to-date.
    To reinstall 2.0.18, run:
      brew reinstall sdl2
    Warning: sdl2_image 2.0.5 is already installed and up-to-date.
    To reinstall 2.0.5, run:
      brew reinstall sdl2_image
    Warning: sdl2_mixer 2.0.4_2 is already installed and up-to-date.
    To reinstall 2.0.4_2, run:
      brew reinstall sdl2_mixer
    Warning: sdl2_ttf 2.0.15 is already installed and up-to-date.
    To reinstall 2.0.15, run:
      brew reinstall sdl2_ttf
    Warning: sdl2_gfx 1.0.4 is already installed and up-to-date.
    To reinstall 1.0.4, run:
      brew reinstall sdl2_gfx
    Warning: pkg-config 0.29.2_3 is already installed and up-to-date.
    To reinstall 0.29.2_3, run:
      brew reinstall pkg-config
    ls -al /usr/local/lib/pkgconfig
    total 16
    drwxr-xr-x   82 apple  staff   2624  2 Dec 11:03 .
    drwxr-xr-x  328 apple  admin  10496  3 Dec 11:48 ..
    lrwxr-xr-x    1 apple  staff     53 15 Nov 14:41 SDL2_gfx.pc -> ../../Cellar/sdl2_gfx/1.0.4/lib/pkgconfig/SDL2_gfx.pc
    lrwxr-xr-x    1 apple  staff     57 15 Nov 14:40 SDL2_image.pc -> ../../Cellar/sdl2_image/2.0.5/lib/pkgconfig/SDL2_image.pc
    lrwxr-xr-x    1 apple  staff     59 15 Nov 14:40 SDL2_mixer.pc -> ../../Cellar/sdl2_mixer/2.0.4_2/lib/pkgconfig/SDL2_mixer.pc
    lrwxr-xr-x    1 apple  staff     54 15 Nov 14:41 SDL2_ttf.pc -> ../../Cellar/sdl2_ttf/2.0.15/lib/pkgconfig/SDL2_ttf.pc
    lrwxr-xr-x    1 apple  staff     51 17 Nov 10:15 fdk-aac.pc -> ../../Cellar/fdk-aac/2.0.2/lib/pkgconfig/fdk-aac.pc
    lrwxr-xr-x    1 apple  staff     47 15 Nov 14:40 flac++.pc -> ../../Cellar/flac/1.3.3/lib/pkgconfig/flac++.pc
    lrwxr-xr-x    1 apple  staff     45 15 Nov 14:40 flac.pc -> ../../Cellar/flac/1.3.3/lib/pkgconfig/flac.pc
    -rw-r--r--    1 apple  staff    196 23 Aug 11:34 flatbuffers.pc
    lrwxr-xr-x    1 apple  staff     55 24 Sep 13:56 freetype2.pc -> ../../Cellar/freetype/2.11.0/lib/pkgconfig/freetype2.pc
    lrwxr-xr-x    1 apple  staff     10 24 Oct  2019 fuse.pc -> osxfuse.pc
    lrwxr-xr-x    1 apple  staff     45 24 Sep 12:39 gmp.pc -> ../../Cellar/gmp/6.2.1_1/lib/pkgconfig/gmp.pc
    lrwxr-xr-x    1 apple  staff     47 24 Sep 12:39 gmpxx.pc -> ../../Cellar/gmp/6.2.1_1/lib/pkgconfig/gmpxx.pc
    lrwxr-xr-x    1 apple  staff     69 17 Nov 15:45 groonga-normalizer-mysql.pc -> ../../Cellar/groonga/11.0.9/lib/pkgconfig/groonga-normalizer-mysql.pc
    lrwxr-xr-x    1 apple  staff     52 17 Nov 15:45 groonga.pc -> ../../Cellar/groonga/11.0.9/lib/pkgconfig/groonga.pc
    lrwxr-xr-x    1 apple  staff     52 24 Sep 13:56 jbig2dec.pc -> ../../Cellar/jbig2dec/0.19/lib/pkgconfig/jbig2dec.pc
    lrwxr-xr-x    1 apple  staff     58 10 Nov 12:12 libbrotlicommon.pc -> ../../Cellar/brotli/1.0.9/lib/pkgconfig/libbrotlicommon.pc
    lrwxr-xr-x    1 apple  staff     55 10 Nov 12:12 libbrotlidec.pc -> ../../Cellar/brotli/1.0.9/lib/pkgconfig/libbrotlidec.pc
    lrwxr-xr-x    1 apple  staff     55 10 Nov 12:12 libbrotlienc.pc -> ../../Cellar/brotli/1.0.9/lib/pkgconfig/libbrotlienc.pc
    lrwxr-xr-x    1 apple  staff     52 10 Nov 12:12 libcares.pc -> ../../Cellar/c-ares/1.18.1/lib/pkgconfig/libcares.pc
    lrwxr-xr-x    1 apple  staff     55 26 Nov 13:04 libecpg.pc -> ../../Cellar/postgresql/14.1_1/lib/pkgconfig/libecpg.pc
    lrwxr-xr-x    1 apple  staff     62 26 Nov 13:04 libecpg_compat.pc -> ../../Cellar/postgresql/14.1_1/lib/pkgconfig/libecpg_compat.pc
    lrwxr-xr-x    1 apple  staff     48 24 Sep 13:56 libidn.pc -> ../../Cellar/libidn/1.38/lib/pkgconfig/libidn.pc
    lrwxr-xr-x    1 apple  staff     51 25 Jul 12:02 libidn2.pc -> ../../Cellar/libidn2/2.3.2/lib/pkgconfig/libidn2.pc
    lrwxr-xr-x    1 apple  staff     73 24 Jun 10:29 libimobiledevice-1.0.pc -> ../../Cellar/libimobiledevice/1.3.0/lib/pkgconfig/libimobiledevice-1.0.pc
    lrwxr-xr-x    1 apple  staff     45  8 Feb  2021 libjpeg.pc -> ../../Cellar/jpeg/9d/lib/pkgconfig/libjpeg.pc
    lrwxr-xr-x    1 apple  staff     46 23 Apr  2021 liblzma.pc -> ../../Cellar/xz/5.2.5/lib/pkgconfig/liblzma.pc
    lrwxr-xr-x    1 apple  staff     55 29 Oct 11:20 libmariadb.pc -> ../../Cellar/mariadb/10.6.4/lib/pkgconfig/libmariadb.pc
    lrwxr-xr-x    1 apple  staff     59 15 Nov 14:40 libmodplug.pc -> ../../Cellar/libmodplug/0.8.9.0/lib/pkgconfig/libmodplug.pc
    lrwxr-xr-x    1 apple  staff     53 15 Nov 14:40 libmpg123.pc -> ../../Cellar/mpg123/1.29.2/lib/pkgconfig/libmpg123.pc
    lrwxr-xr-x    1 apple  staff     58 10 Nov 12:12 libnghttp2.pc -> ../../Cellar/libnghttp2/1.46.0/lib/pkgconfig/libnghttp2.pc
    lrwxr-xr-x    1 apple  staff     53 15 Nov 14:40 libout123.pc -> ../../Cellar/mpg123/1.29.2/lib/pkgconfig/libout123.pc
    lrwxr-xr-x    1 apple  staff     47 29 Oct 10:39 libpcre.pc -> ../../Cellar/pcre/8.45/lib/pkgconfig/libpcre.pc
    lrwxr-xr-x    1 apple  staff     49 29 Oct 10:39 libpcre16.pc -> ../../Cellar/pcre/8.45/lib/pkgconfig/libpcre16.pc
    lrwxr-xr-x    1 apple  staff     53 31 Oct 12:32 libpcre2-16.pc -> ../../Cellar/pcre2/10.39/lib/pkgconfig/libpcre2-16.pc
    lrwxr-xr-x    1 apple  staff     53 31 Oct 12:32 libpcre2-32.pc -> ../../Cellar/pcre2/10.39/lib/pkgconfig/libpcre2-32.pc
    lrwxr-xr-x    1 apple  staff     52 31 Oct 12:32 libpcre2-8.pc -> ../../Cellar/pcre2/10.39/lib/pkgconfig/libpcre2-8.pc
    lrwxr-xr-x    1 apple  staff     56 31 Oct 12:32 libpcre2-posix.pc -> ../../Cellar/pcre2/10.39/lib/pkgconfig/libpcre2-posix.pc
    lrwxr-xr-x    1 apple  staff     49 29 Oct 10:39 libpcre32.pc -> ../../Cellar/pcre/8.45/lib/pkgconfig/libpcre32.pc
    lrwxr-xr-x    1 apple  staff     50 29 Oct 10:39 libpcrecpp.pc -> ../../Cellar/pcre/8.45/lib/pkgconfig/libpcrecpp.pc
    lrwxr-xr-x    1 apple  staff     52 29 Oct 10:39 libpcreposix.pc -> ../../Cellar/pcre/8.45/lib/pkgconfig/libpcreposix.pc
    lrwxr-xr-x    1 apple  staff     58 26 Nov 13:04 libpgtypes.pc -> ../../Cellar/postgresql/14.1_1/lib/pkgconfig/libpgtypes.pc
    lrwxr-xr-x    1 apple  staff     59 24 Jun 10:28 libplist++-2.0.pc -> ../../Cellar/libplist/2.2.0/lib/pkgconfig/libplist++-2.0.pc
    lrwxr-xr-x    1 apple  staff     57 24 Jun 10:28 libplist-2.0.pc -> ../../Cellar/libplist/2.2.0/lib/pkgconfig/libplist-2.0.pc
    lrwxr-xr-x    1 apple  staff     50  8 Feb  2021 libpng.pc -> ../../Cellar/libpng/1.6.37/lib/pkgconfig/libpng.pc
    lrwxr-xr-x    1 apple  staff     52  8 Feb  2021 libpng16.pc -> ../../Cellar/libpng/1.6.37/lib/pkgconfig/libpng16.pc
    lrwxr-xr-x    1 apple  staff     53 26 Nov 13:04 libpq.pc -> ../../Cellar/postgresql/14.1_1/lib/pkgconfig/libpq.pc
    lrwxr-xr-x    1 apple  staff     53 15 Nov 14:40 libsyn123.pc -> ../../Cellar/mpg123/1.29.2/lib/pkgconfig/libsyn123.pc
    lrwxr-xr-x    1 apple  staff     54 11 Nov 14:20 libtasn1.pc -> ../../Cellar/libtasn1/4.18.0/lib/pkgconfig/libtasn1.pc
    lrwxr-xr-x    1 apple  staff     53 27 Apr  2021 libtiff-4.pc -> ../../Cellar/libtiff/4.3.0/lib/pkgconfig/libtiff-4.pc
    lrwxr-xr-x    1 apple  staff     54 24 Jun 10:28 libusb-1.0.pc -> ../../Cellar/libusb/1.0.24/lib/pkgconfig/libusb-1.0.pc
    lrwxr-xr-x    1 apple  staff     61 24 Jun 10:29 libusbmuxd-2.0.pc -> ../../Cellar/libusbmuxd/2.0.2/lib/pkgconfig/libusbmuxd-2.0.pc
    lrwxr-xr-x    1 apple  staff     48 10 Nov 12:12 libuv.pc -> ../../Cellar/libuv/1.42.0/lib/pkgconfig/libuv.pc
    lrwxr-xr-x    1 apple  staff     50 15 Nov 14:40 libwebp.pc -> ../../Cellar/webp/1.2.1_1/lib/pkgconfig/libwebp.pc
    lrwxr-xr-x    1 apple  staff     57 15 Nov 14:40 libwebpdecoder.pc -> ../../Cellar/webp/1.2.1_1/lib/pkgconfig/libwebpdecoder.pc
    lrwxr-xr-x    1 apple  staff     55 15 Nov 14:40 libwebpdemux.pc -> ../../Cellar/webp/1.2.1_1/lib/pkgconfig/libwebpdemux.pc
    lrwxr-xr-x    1 apple  staff     53 15 Nov 14:40 libwebpmux.pc -> ../../Cellar/webp/1.2.1_1/lib/pkgconfig/libwebpmux.pc
    lrwxr-xr-x    1 apple  staff     51 15 Oct 11:12 libzip.pc -> ../../Cellar/libzip/1.8.0_1/lib/pkgconfig/libzip.pc
    lrwxr-xr-x    1 apple  staff     48 15 Oct 11:12 libzstd.pc -> ../../Cellar/zstd/1.5.0/lib/pkgconfig/libzstd.pc
    lrwxr-xr-x    1 apple  staff     52 29 Oct 11:20 mariadb.pc -> ../../Cellar/mariadb/10.6.4/lib/pkgconfig/mariadb.pc
    lrwxr-xr-x    1 apple  staff     51 29 Oct 10:39 msgpack.pc -> ../../Cellar/msgpack/4.0.0/lib/pkgconfig/msgpack.pc
    lrwxr-xr-x    1 apple  staff     46 15 Nov 14:09 ogg.pc -> ../../Cellar/libogg/1.3.5/lib/pkgconfig/ogg.pc
    lrwxr-xr-x    1 apple  staff     57 30 Nov 21:21 oniguruma.pc -> ../../Cellar/oniguruma/6.9.7.1/lib/pkgconfig/oniguruma.pc
    lrwxr-xr-x    1 apple  staff     45 17 Nov 10:15 opus.pc -> ../../Cellar/opus/1.3.1/lib/pkgconfig/opus.pc
    -rw-r--r--    1 apple  staff    258  1 Jul  2018 osxfuse.pc
    lrwxr-xr-x    1 apple  staff     61  2 Dec 11:03 protobuf-lite.pc -> ../../Cellar/protobuf/3.17.3_1/lib/pkgconfig/protobuf-lite.pc
    lrwxr-xr-x    1 apple  staff     56  2 Dec 11:03 protobuf.pc -> ../../Cellar/protobuf/3.17.3_1/lib/pkgconfig/protobuf.pc
    lrwxr-xr-x    1 apple  staff     63 26 Nov 13:05 python-3.9-embed.pc -> ../../Cellar/[email protected]/3.9.9/lib/pkgconfig/python-3.9-embed.pc
    lrwxr-xr-x    1 apple  staff     57 26 Nov 13:05 python-3.9.pc -> ../../Cellar/[email protected]/3.9.9/lib/pkgconfig/python-3.9.pc
    lrwxr-xr-x    1 apple  staff     60 26 Nov 13:05 python3-embed.pc -> ../../Cellar/[email protected]/3.9.9/lib/pkgconfig/python3-embed.pc
    lrwxr-xr-x    1 apple  staff     54 26 Nov 13:05 python3.pc -> ../../Cellar/[email protected]/3.9.9/lib/pkgconfig/python3.pc
    lrwxr-xr-x    1 apple  staff     46 17 Nov 10:16 sdl.pc -> ../../Cellar/sdl/1.2.15_3/lib/pkgconfig/sdl.pc
    lrwxr-xr-x    1 apple  staff     46  2 Dec 11:03 sdl2.pc -> ../../Cellar/sdl2/2.0.18/lib/pkgconfig/sdl2.pc
    lrwxr-xr-x    1 apple  staff     49 17 Nov 10:16 theora.pc -> ../../Cellar/theora/1.1.1/lib/pkgconfig/theora.pc
    lrwxr-xr-x    1 apple  staff     52 17 Nov 10:16 theoradec.pc -> ../../Cellar/theora/1.1.1/lib/pkgconfig/theoradec.pc
    lrwxr-xr-x    1 apple  staff     52 17 Nov 10:16 theoraenc.pc -> ../../Cellar/theora/1.1.1/lib/pkgconfig/theoraenc.pc
    lrwxr-xr-x    1 apple  staff     52 15 Nov 14:09 vorbis.pc -> ../../Cellar/libvorbis/1.3.7/lib/pkgconfig/vorbis.pc
    lrwxr-xr-x    1 apple  staff     55 15 Nov 14:09 vorbisenc.pc -> ../../Cellar/libvorbis/1.3.7/lib/pkgconfig/vorbisenc.pc
    lrwxr-xr-x    1 apple  staff     56 15 Nov 14:09 vorbisfile.pc -> ../../Cellar/libvorbis/1.3.7/lib/pkgconfig/vorbisfile.pc
    lrwxr-xr-x    1 apple  staff     47 17 Nov 10:15 vpx.pc -> ../../Cellar/libvpx/1.11.0/lib/pkgconfig/vpx.pc
    lrwxr-xr-x    1 apple  staff     45 17 Nov 10:16 x264.pc -> ../../Cellar/x264/r3060/lib/pkgconfig/x264.pc
    # check that brew works and that sdl2 is there.
    pkg-config --libs sdl2
    -L/usr/local/lib -lSDL2
    cd nmage && go build -o /Users/apple/workspace/go/src/github.com/gedw99/gio-tools/3d/bloeys__nmage/bin/nmage .
    # github.com/inkyblackness/imgui-go/v4
    warning: unknown warning option '-Wno-subobject-linkage' [-Wunknown-warning-option]
    # github.com/bloeys/assimp-go/asig
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:62:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/vector3.h:69:17: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:63:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/vector2.h:69:40: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:64:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/color4.h:62:16: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:65:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix3x3.h:72:19: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:66:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix4x4.h:74:19: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:67:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/quaternion.h:63:20: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:129:15: error: expected ';' at end of declaration list
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:146:13: error: expected ';' at end of declaration list
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:164:17: error: expected ';' at end of declaration list
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:266:15: error: expected ';' at end of declaration list
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:491:19: error: expected ';' at end of declaration list
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:537:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/quaternion.inl:83:30: error: out-of-line definition of 'aiQuaterniont<TReal>' does not match any declaration in 'aiQuaterniont<TReal>'
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:538:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix3x3.inl:71:50: error: out-of-line definition of 'operator*=' does not match any declaration in 'aiMatrix3x3t<TReal>'
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:539:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix4x4.inl:62:22: error: out-of-line declaration of a member must be a definition [-Wout-of-line-declaration]
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix4x4.inl:62:36: error: expected ';' at end of declaration
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix4x4.inl:62:37: error: unknown type name 'noexcept'
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/defs.h:301:24: note: expanded from macro 'AI_NO_EXCEPT'
    In file included from wrap.cxx:1:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/cimport.h:51:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/types.h:539:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/matrix4x4.inl:62:50: error: expected unqualified-id
    In file included from wrap.cxx:2:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/scene.h:52:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/texture.h:112:16: error: no matching constructor for initialization of 'aiColor4D' (aka 'aiColor4t<float>')
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/color4.h:59:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 4 were provided
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/color4.h:62:5: note: candidate constructor not viable: requires 0 arguments, but 4 were provided
    In file included from wrap.cxx:2:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/scene.h:52:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/texture.h:206:16: error: expected ';' at end of declaration list
    In file included from wrap.cxx:2:
    In file included from ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/scene.h:53:
    ../../../../../../../pkg/mod/github.com/bloeys/[email protected]/asig/assimp/mesh.h:140:13: error: expected ';' at end of declaration list
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    make: *** [nmage-build] Error 2
    ➜  bloeys__nmage git:(main) ✗ 
    

    BTW the previous build from a few weeks ago linked fine.

    make nmage-otool 
    cd /Users/apple/workspace/go/src/github.com/gedw99/gio-tools/3d/bloeys__nmage/bin && otool -L ./nmage > otool.txt 
    cd /Users/apple/workspace/go/src/github.com/gedw99/gio-tools/3d/bloeys__nmage/bin && code otool.txt 
    
    ./nmage:
    	/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
    	/usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib (compatibility version 17.0.0, current version 17.0.0)
    	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.0.0)
    	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1200.3.0)
    
    
AircraftWar - a game powered by Go+ spx game engine
AircraftWar - a game powered by Go+ spx game engine

AircraftWar - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download thi

Jan 5, 2022
FlappyCalf - a game powered by Go+ spx game engine
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

Nov 6, 2022
FlappyCalf - a game powered by Go+ spx game engine
FlappyCalf - a game powered by Go+ spx game engine

FlappyCalf - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this

Nov 6, 2022
MazePlay - a game powered by Go+ spx game engine
MazePlay - a game powered by Go+ spx game engine

MazePlay - a game powered by Go+ spx game engine How to run Download Go+ and build it. See https://github.com/goplus/gop#how-to-build. Download this g

Dec 16, 2021
A small fantasy game engine in WASM using GoLang
A small fantasy game engine in WASM using GoLang

The GoLang Fantasy Engine (GoLF Engine) is a retro game engine. It draws inspiration from fantasy console projects like pico-8, tic-80, and pyxle. Like those projects it is designed to be a retro-feeling game creation/playing tool. Unlike those projects GoLF is more minimal in scope and only provides an API and a small set of tools to help you create your games. Tools like an image editor and code editor are not built in. Despite this minimalism creating games in GoLF is still easy and should still maintain the retro game feel.

Jul 16, 2022
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!
A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy!

galactic-asteroid-belt Overview A simple game that I created with Ebiten game library as a way to teach myself Go. Enjoy! Run To run, you will need Go

Dec 2, 2021
RundQuiz-Game - This is a Go exercise that implements and builds a quiz game from a list of math questions in a CSV file.

Go RundQuiz Game Exercise details This exercise is broken into two parts to help simplify the process of explaining it as well as to make it easier to

Jan 5, 2022
Simple 2D game to teach myself various things about game development and ECS, etc

2d-grass-game I really don't know what to name this game. Its a big grass field, and its in 2d so....2D Grass game This is a simple 2D game to teach m

Jan 17, 2022
Engo is an open-source 2D game engine written in Go.

Engo A cross-platform game engine written in Go following an interpretation of the Entity Component System paradigm. Engo is currently compilable for

Dec 26, 2022
Go 3D Game Engine
Go 3D Game Engine

G3N - Go 3D Game Engine G3N (pronounced "gen") is an OpenGL 3D Game Engine written in Go. It can be used to write cross-platform Go applications that

Jan 9, 2023