A C math library targeted at games

Related tags

Game kazmath
Overview

Kazmath

Kazmath is a simple 3D maths library written in C. It was initially coded for use in my book, Beginning OpenGL Game Programming - Second edition, but rapidly gained a life of its own. Kazmath is now used by many different projects, and apparently is used in 25% of the worlds mobile games (yeah, I don't believe it either - but it's used in Cocos2d-x).

If you are using Kazmath in a project, I'd be happy to hear about it. Find me on Twitter as @kazade.

Compiling

Compiling is simple using CMake, on Linux:

mkdir build
cd build
cmake ..
make
sudo make install

On other platforms use CMake to generate an appropriate project file.

If you want to build shared libraries you should pass -DBUILD_SHARED_LIBS=YES to the cmake command

Contributing

There are many improvements that could be made to kazmath, including:

  • More tests
  • More optimizations
  • More functions, and primitives
  • More bindings (e.g. Python)

All contributions are welcome. Just send me a pull request on GitHub and I'll review and probably merge!

Donations

If you like what I do, I'm happy to receive donations in DOGE to this address: D6uwEfChxWmWjFGs4jT8VRtabYaza5oAGx :)

Thank you!

Issues
  • AABB 2d and quad

    AABB 2d and quad

    C code:

    • Renamed AABB to AABB3
    • Added AABB2
    • Put common code for intersections in ray2.c into a separate function kmLine2WithLineIntersection, that finds the intersection point, but also returns the "factor" values, so it can be checked if we are looking for a two segment intersection, an infinite ray to segment or whatever C++ code:
    • Added the AABB2 class
    • Added a quad class (non axis aligned box)
    • Added the unary minus operator to vec*.h
    • Added the BoundVec2 class : ( this is subject to be changed : for now the main reason to use this name instead of "ray" is for comparisons, and when moving to 3d, this class can define a ray, a line, or a plane , depending on its interpretation )
    opened by dhontecillas 9
  • Lerp for vectors

    Lerp for vectors

    Added linear interpolation for vectors and also for scalars. Also fixed a couple of return values that were giving errors in VS2010. Removed unnnecessary temp variable in kmVec4Normalize.

    opened by dhontecillas 7
  • c89-fixes and lua-binding for kazmath

    c89-fixes and lua-binding for kazmath

    • add all functions for kazmath/.h (except kazmath/GL/.h)
    • lkazmath.km* for all functions
    • use lkazmath._New or lkazmath._NewWithArray or lkazmath.*NewWithTbl to create a object (struct in C)
    • method ToArray, ToTbl for vec_, mat_
    • OOP support (without prefix km${StructName}), for example
    mat3 = lkazmath.kmMat3New()
    mat3:ToArray()
    

    or you can use

    lkazmath.kmMat3ToArray(mat3)
    
    • alter args(such as kmScalar *out are removed from function params), see lua__kmMat4RotationToAxisAngle, lua__kmLine2WithLineIntersection

    see More...

    opened by rocaltair 5
  • Fixed errors in headers and removed dot product and cross product from o...

    Fixed errors in headers and removed dot product and cross product from o...

    Fixed errors that I did not dectect when compiling the library, and found them when using it.

    Also changed the overloaded operators so dot and cross product are no longer used for operator*.

    opened by dhontecillas 3
  • Kazmath's GL stack doesn't allow for multiple GL contexts/multithreading

    Kazmath's GL stack doesn't allow for multiple GL contexts/multithreading

    Unfortunately, the current GL stack implementation crashes when calling it from different threads using multiple OpenGL contexts. As I required this specific functionality, I forked kazmath and implemented a TLS based context switch for the stack module (see http://github.com/starbugs/kazmath).

    With my modifications, the only thing people have to do when they switch GL contexts is to call kmGLSetCurrentContext(void *) providing a reference to some external context representation that is constant for the lifecycle of a given real GL context. kazmath will then provide a stack for each context automatically (without any changes to the stack interface). My modifications merely require linking to libpthread.

    Some background info: I am authoring a GL-based UI framework for iOS/Mac OS X which uses kazmath for most of the math and vector stuff (http://github.com/starbugs/icedcoffee). My modifications have been tested by a very small group of people currently experimenting with my framework -- no issues so far.

    Anyway, I thought I just give you a ping and ask whether you're interested in pulling these changes? Maybe they are beneficial to others...

    Big thanks for the great library!

    Tobias

    opened by starbugs 3
  • What is ub variable used for?

    What is ub variable used for?

    I wanted to know what is the following variable used for.

    File ray2.c on line 31:

    • 31: kmScalar ub = ((x2 - x1) * (y1 - y3) - (y2 - y1) * (x1 - x3)) / denom;

    It is declared and initialized but never used.

    on lines 33,34

    • 33: kmScalar x = x1 + ua * (x2 - x1);
    • 34: kmScalar y = y1 + ua * (y2 - y1);

    ua variable is used two times.

    Was the ua variable on line 34 meant to be ub?

    opened by garfi43 3
  • error: ‘isnan’ was not declared in this scope

    error: ‘isnan’ was not declared in this scope

    Hi.

    Im getting an error while building the library per instructions.

    [email protected] ~/Code/kazmath/build $ make
    Scanning dependencies of target kazmath
    [  5%] Building C object kazmath/CMakeFiles/kazmath.dir/mat4.c.o
    [ 11%] Building C object kazmath/CMakeFiles/kazmath.dir/mat3.c.o
    [ 16%] Building C object kazmath/CMakeFiles/kazmath.dir/plane.c.o
    [ 22%] Building C object kazmath/CMakeFiles/kazmath.dir/vec4.c.o
    [ 27%] Building C object kazmath/CMakeFiles/kazmath.dir/quaternion.c.o
    [ 33%] Building C object kazmath/CMakeFiles/kazmath.dir/vec2.c.o
    [ 38%] Building C object kazmath/CMakeFiles/kazmath.dir/vec3.c.o
    [ 44%] Building C object kazmath/CMakeFiles/kazmath.dir/utility.c.o
    [ 50%] Building C object kazmath/CMakeFiles/kazmath.dir/aabb2.c.o
    [ 55%] Building C object kazmath/CMakeFiles/kazmath.dir/aabb3.c.o
    [ 61%] Building C object kazmath/CMakeFiles/kazmath.dir/ray2.c.o
    [ 66%] Building C object kazmath/CMakeFiles/kazmath.dir/ray3.c.o
    [ 72%] Building C object kazmath/CMakeFiles/kazmath.dir/GL/mat4stack.c.o
    [ 77%] Building C object kazmath/CMakeFiles/kazmath.dir/GL/matrix.c.o
    [ 83%] Linking C static library libkazmath.a
    [ 83%] Built target kazmath
    [ 88%] Generating ../../tests/main.cpp
    Scanning dependencies of target kazmath_tests
    [ 94%] Building CXX object tests/CMakeFiles/kazmath_tests.dir/main.cpp.o
    In file included from /home/sbr/Code/kazmath/tests/main.cpp:5:0:
    /home/sbr/Code/kazmath/tests/test_quaternion.h: In member function ‘void TestQuaternion::test_quaternion_slerp_edge_case()’:
    /home/sbr/Code/kazmath/tests/test_quaternion.h:33:36: error: ‘isnan’ was not declared in this scope
             assert_true(!isnan(result.x));
                                        ^
    /home/sbr/Code/kazmath/tests/kaztest/kaztest.h:15:43: note: in definition of macro ‘assert_true’
     #define assert_true(actual) _assert_true((actual), __FILE__, __LINE__)
                                               ^
    /home/sbr/Code/kazmath/tests/test_quaternion.h:33:36: note: suggested alternative:
             assert_true(!isnan(result.x));
                                        ^
    /home/sbr/Code/kazmath/tests/kaztest/kaztest.h:15:43: note: in definition of macro ‘assert_true’
     #define assert_true(actual) _assert_true((actual), __FILE__, __LINE__)
                                               ^
    In file included from /usr/include/c++/5/random:38:0,
                     from /usr/include/c++/5/bits/stl_algo.h:66,
                     from /usr/include/c++/5/algorithm:62,
                     from /home/sbr/Code/kazmath/tests/kaztest/kaztest.h:9,
                     from /home/sbr/Code/kazmath/tests/main.cpp:5:
    /usr/include/c++/5/cmath:641:5: note:   ‘std::isnan’
         isnan(_Tp __x)
         ^
    tests/CMakeFiles/kazmath_tests.dir/build.make:76: recipe for target 'tests/CMakeFiles/kazmath_tests.dir/main.cpp.o' failed
    make[2]: *** [tests/CMakeFiles/kazmath_tests.dir/main.cpp.o] Error 1
    CMakeFiles/Makefile2:140: recipe for target 'tests/CMakeFiles/kazmath_tests.dir/all' failed
    make[1]: *** [tests/CMakeFiles/kazmath_tests.dir/all] Error 2
    Makefile:160: recipe for target 'all' failed
    make: *** [all] Error 2
    

    Im using gcc 5.4.0. on Ubuntu.

    opened by sbrki 2
  • lua-binding for kazmath

    lua-binding for kazmath

    hi~ @Kazade I forked this lua-binding

    so far so good.

    • add all functions for kazmath/.h (except kazmath/GL/.h)
    • lkazmath.km* for all functions
    • use lkazmath._New or lkazmath._NewWithArray or lkazmath.*NewWithTbl to create a object (struct in C)
    • method ToArray, ToTbl for vec_, mat_
    • OOP support (without prefix km${StructName}), for example
    mat3 = lkazmath.kmMat3New()
    mat3:ToArray()
    

    or you can use

    lkazmath.kmMat3ToArray(mat3)
    
    • alter args(such as kmScalar *out are removed from function params), see lua__kmMat4RotationToAxisAngle, lua__kmLine2WithLineIntersection
    opened by rocaltair 2
  • Changed all occurrences of // line comments into /* ... */ line comments...

    Changed all occurrences of // line comments into /* ... */ line comments...

    ... in .c , .h files and kazmath.config so it will compile in C89 (--pedantic) and changed one instance (kazmath/quaternion.c) of a block /* ... */ comment to #if 0 ... #endif so fixing the contained line comments wouldn't break anything

    opened by davidaciko 2
  • Collision/response related functions

    Collision/response related functions

    I'm probably going to contribute some collision/response related functions to kazmath somewhere in near future, and introduce new types such as kmOBB, kmEllipse, kmTriangle, ...

    You can see video of the math in action here: http://www.youtube.com/watch?v=HYW2lI3alG0

    You can see the current code that is still unfinished and some math is broken here (at top of file everything prefixed with km): https://github.com/Cloudef/colhck/blob/master/test/coltest.c

    Though, I have question regarding kmAABBExtent, will this kind of type be pulled in or should the original kmAABB be replaced?

    The reason for introducing kmAABBExtent is reduced memory usage.

    opened by Cloudef 2
  • Component wise multiplication and division

    Component wise multiplication and division

    Had to rename the max and min functions due to conflicts with other libraries and used the prefix km as in all other functions.

    Added component wise multiplication and division.

    Also added operators for the c++ classes ( += , -= , *=, /= ). From my point of view, the overloaded operator * in the C++ that does the dot product should perform the component wise multiplication, more in line with what happens in GLSL, and use a static dot function inside the class. But, I guess that making that change would break code using the library, and I didn't touch it.

    Also moved the .h files for kazmathxx outside the src directory. That is weird when you have to make an :

    include <kathmath/src/vec2.h>

    opened by dhontecillas 2
  • docs: fix simple typo, exmaple -> example

    docs: fix simple typo, exmaple -> example

    There is a small typo in lua/README.md.

    Should read example rather than exmaple.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 0
  • some parameters missing const

    some parameters missing const

    to be honest not sure if this is even an issue?

    kmMat4* kmMat4Scaling(kmMat4* pOut, const kmScalar x, const kmScalar y, kmScalar z) kmMat4* kmMat4Translation(kmMat4* pOut, const kmScalar x, kmScalar y, const kmScalar z)

    const missing on scaling z and translation y

    there may be others

    opened by chriscamacho 0
  • test_quaternion.h fails

    test_quaternion.h fails

    'make' command error: "isnan was not declared in this scope"

    Fix could be adding the line: using std::isnan; right after the includes in the same file.

    opened by XxMoNsTeR 0
  • Cannot build on OSX 10.11.6

    Cannot build on OSX 10.11.6

    Steps to reproduce:

    git clone https://github.com/Kazade/kazmath.git
    cd kazmath
    mkdir build
    cd build
    cmake ..
    make
    

    produces:

    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:53:34: warning: variadic
          templates are a C++11 extension [-Wc++11-extensions]
        template<typename T, typename... Args>
                                     ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:60:34: warning: variadic
          templates are a C++11 extension [-Wc++11-extensions]
        template<typename T, typename... Args>
                                     ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:96:5: error: exception
          specification of overriding function is more lax than base version
        ~AssertionError() noexcept (true) {
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/stdexcept:76:13: note:
          overridden virtual function is here
        virtual ~logic_error() _NOEXCEPT;
                ^
    In file included from /Users/jamiltron/opt/kazmath/tests/main.cpp:5:
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:96:22: error: expected ';'
          at end of declaration list
        ~AssertionError() noexcept (true) {
                         ^
                         ;
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:85:9: error: member
          initializer 'file' does not name a non-static data member or base class
            file(""),
            ^~~~~~~~
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:91:9: error: member
          initializer 'file' does not name a non-static data member or base class
            file(file_and_line.first),
            ^~~~~~~~~~~~~~~~~~~~~~~~~
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:121:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:129:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:137:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:146:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:154:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:162:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:171:13: warning: 'auto'
          type specifier is a C++11 extension [-Wc++11-extensions]
                auto file_and_line = std::make_pair(file, line);
                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:293:41: error: a space is
          required between consecutive right angle brackets (use '> >')
        std::vector<std::shared_ptr<TestCase>> instances_;
                                            ^~
                                            > >
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:189:29: warning:
          range-based for loop is a C++11 extension [-Wc++11-extensions]
            for(std::string name: names) {
                                ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:193:22: warning:
          range-based for loop is a C++11 extension [-Wc++11-extensions]
            for(U& method: methods) {
                         ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:194:47: error: no member
          named 'bind' in namespace 'std'; did you mean 'find'?
                std::function<void()> func = std::bind(method, dynamic_cast<...
                                             ~~~~~^~~~
                                                  find
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:862:1: note:
          'find' declared here
    find(_InputIterator __first, _InputIterator __last, const _Tp& __value_)
    ^
    In file included from /Users/jamiltron/opt/kazmath/tests/main.cpp:5:
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:195:30: error: expected
          expression
                tests_.push_back([=]() {
                                 ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:209:9: warning: 'auto' type
          specifier is a C++11 extension [-Wc++11-extensions]
            auto new_tests = tests_;
            ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:210:9: warning: 'auto' type
          specifier is a C++11 extension [-Wc++11-extensions]
            auto new_names = names_;
            ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:226:40: warning:
          range-based for loop is a C++11 extension [-Wc++11-extensions]
            for(std::function<void ()> test: new_tests) {
                                           ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:243:23: error: no member
          named 'file' in 'AssertionError'
                    if(!e.file.empty()) {
                        ~ ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:244:50: error: no member
          named 'file' in 'AssertionError'
                        std::cout << "        " << e.file << ":" << e.line <...
                                                   ~ ^
    /Users/jamiltron/opt/kazmath/tests/kaztest/kaztest.h:246:41: error: no member
          named 'file' in 'AssertionError'
                        std::ifstream ifs(e.file);
                                          ~ ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:27:43: error: expected expression
            std::vector<void (TestAABB::*)()>({&TestAABB::test_aabb_expand_t...
                                              ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:28:9: error: expected expression
            {"TestAABB::test_aabb_expand_to_contain", "TestAABB::test_aabb_c...
            ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:32:43: error: expected expression
            std::vector<void (TestMat3::*)()>({&TestMat3::test_mat3_inverse...
                                              ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:33:9: error: expected expression
            {"TestMat3::test_mat3_inverse", "TestMat3::test_mat3_transpose"...
            ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:37:43: error: expected expression
            std::vector<void (TestMat4::*)()>({&TestMat4::test_mat4_inverse...
                                              ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:38:9: error: expected expression
            {"TestMat4::test_mat4_inverse", "TestMat4::test_mat4_and_quatern...
            ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:42:44: error: expected expression
            std::vector<void (TestPlane::*)()>({&TestPlane::test_plane_extra...
                                               ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:43:9: error: expected expression
            {"TestPlane::test_plane_extraction_from_matrix", "TestPlane::tes...
            ^
    /Users/jamiltron/opt/kazmath/tests/main.cpp:47:49: error: expected expression
            std::vector<void (TestQuaternion::*)()>({&TestQuaternion::test_q...
                                                    ^
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    14 warnings and 20 errors generated.
    make[2]: *** [tests/CMakeFiles/kazmath_tests.dir/main.cpp.o] Error 1
    make[1]: *** [tests/CMakeFiles/kazmath_tests.dir/all] Error 2
    make: *** [all] Error 2
    
    opened by jamiltron 5
  • Cannot build on Windows using VC++ compiler.

    Cannot build on Windows using VC++ compiler.

    Currently, trying to build on Windows using the Visual C++ compiler bundled with Visual Studio causes the following error (plus a host of warnings concerning uninitialized variables):

    Cannot open include file: 'pthread.h': No such file or directory : matrix.c

    opened by Varriount 3
  • kazmath fails on test_mat4_and_quaternion_consistency

    kazmath fails on test_mat4_and_quaternion_consistency

    I am trying to use Kazmath for my engine, but I am having issues with incorrect lookAt, so I launched the test and I got this :

    ./kazmath_tests

    1.000000 0.000000 0.000000

    1.000000 0.000000 0.000000 /home/gpinchon/Bureau/projects/OpenGL/kazmath/tests/test_mat4.cpp:66: error: Failure in test_mat4_and_quaternion_consistency: kmMat4AreEqual(&tmp, &mat) FAILURE: 1 out of 37 tests failed (1 failures). Test time: 0.00 seconds.

    opened by Gpinchon 0
Owner
Luke Benstead
Luke Benstead
Pure C math library for 2D and 3D programming

MATHC MATHC is a simple math library for 2D and 3D programming. Features Vectors (2D, 3D and 4D) (integer type and floating-point type) Quaternions Ma

Felipe da Silva 600 Jul 27, 2022
📽 Highly Optimized Graphics Math (glm) for C

?? OpenGL Mathematics (glm) for C Documentation Almost all functions (inline versions) and parameters are documented inside the corresponding headers.

Recep Aslantas 1.4k Aug 4, 2022
A single-header C++ library for making simple 2D games

A single-header C++ library for making simple 2D games PLATFORM: Windows LANGUAGE: C++ ENVIRONMENT: Visual Studio Why? Learning C++ is often seen as d

Sumo Digital Academy 44 Jul 28, 2022
A multi core friendly rigid body physics and collision detection library suitable for games and VR applications.

Jolt Physics Library A multi core friendly rigid body physics and collision detection library suitable for games and VR applications. A YouTube video

null 2k Aug 8, 2022
C++ Library to connect games with Game Jolt

Game Jolt API C++ Library Game Jolt is a host for free independently developed computer games. As a gamer you are able to play every game on this site

Martin Mauersics 8 Jun 18, 2022
C library for Wordle-like games

libwordle Open this project in 8bitworkshop. This is a C library for making Wordle-like games for 8-bit systems. Platforms supported: C64 (cc65) Wordl

Steven Hugg 4 Jan 31, 2022
RPC Network Library for Multiplayer Games

Game NET - A Simple RPC Network Library (C++11) Write a simple server / client RPC system in just 10+20 lines of code. Write a multiplayer game with c

Spacerat 73 Jun 3, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.7k Jul 31, 2022
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

Luke Wren 36 Jul 26, 2022
A set of libraries and tools to make MSX games using the C programming language.

ubox MSX lib This is a set of libraries and tools to make MSX games using the C programming language. There are three main components: ubox: thin wrap

Juan J. Martínez 42 May 30, 2022
TIC-80 is a fantasy computer for making, playing and sharing tiny games.

TIC-80 is a fantasy computer for making, playing and sharing tiny games.

Vadim Grigoruk 3.5k Aug 9, 2022
Enfusion Artifical Intelligence for DayZ and future Bohemia Interactive games.

Enfusion AI Project (eAI) This mod adds headless player units under the control of a script on the server. Although the script is very rudimentary now

William Bowers 55 Jun 13, 2022
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Storm Devs 637 Aug 6, 2022
null 4.9k Aug 1, 2022
Cute Framework (CF for short) is the cutest framework available for making 2D games in C/C++

Cute Framework (CF for short) is the cutest framework available for making 2D games in C/C++. CF comprises of different features, where the various features avoid inter-dependencies. In this way using CF is about picking and choosing which pieces are needed for your game

null 246 Jul 29, 2022
Modding (hacking) il2cpp games by classes, methods, fields names.

ByNameModding Modding (hacking) il2cpp games by classes, methods, fields names. Status: Ready to use Why did I do it 1. In order not to update the off

null 75 Jul 27, 2022
OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

null 2.9k Aug 2, 2022
Insomniac games cache simulation tool plugin for UE4

Insomniac Games CacheSim plugin for UE4 This plugin for Unreal Engine 4 lets you use the Insomniac Games Cache Simulation tool to detect cache misses

Toni Rebollo Berná 28 Jul 25, 2022
Bounce is a 3D physics engine for games.

Bounce Welcome! Bounce is a 3D physics engine for games. Features Common Efficient data structures with no use of STL Fast memory allocators Built-in

Irlan Robson 70 Jul 26, 2022