Skip to content

Latest commit

 

History

History
771 lines (442 loc) · 30.4 KB

README-todo.md

File metadata and controls

771 lines (442 loc) · 30.4 KB

awesome-code-for-gamedev

A curated list of awesome (cpp,go,rust) libraries,frameworks,softwares for game development IMHO

Version 0.1

Production-Ready / Essential Items

Game Engines and Frameworks

  • UnrealEngine (cpp)- Unreal Engine source code

  • unity3d (c#) - commercial cross-platform game engine

  • godot (cpp) - 2D and 3D cross-platform game engine

  • cocos2d-x (cpp) - Cocos2d-x is a suite of open-source, cross-platform, game-development tools used by millions of developers all over the world.

Engine Tutorials

  • Unreal Engine

IDEs and Code Editors

  • Visual Studio 2017,2019 (c++,c#)
  • Visual Studio Code (c++,rust,golang)
  • CLion (c++,rust)
  • Goland (golang)
  • Rider ( C# )

Language Tutorials

Package Manager

Build

Computer Graphics

Theories

3D Creation Tools

  • blender - Open source 3D creation. Free to use for any purpose, forever.
  • Maya - 3D computer animation, modeling, simulation, and rendering software
  • 3DSMax - 3D modeling and rendering software for design visualization, games, and animation
  • cinema4d - 3D computer animation, modeling, simulation, and rendering software

3D Rendering Library

  • bgfx (cpp) - Cross-platform rendering library
    • bgfx-rs (rust) - Rust bindings to bgfx, a cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.

Vendor Graphics API/SDK

  • directx - a set of APIs that you can use to create games and other high-performance multimedia applications.
  • vulkan - an open standard and cross-platform Application Programming Interface (API) developed by the Khronos® Group.
  • metal - a low-level, low-overhead hardware-accelerated 3D graphic and compute shader API created by Apple.
  • opengl - The Industry's Foundation for High Performance Graphics
  • opengl-es - The Standard for Embedded Accelerated 3D Graphics

Major Assistants

Landscape, World

for unrealengine

Unreal Engine Features

2D Creation,Editing Tools

3D Content Format

Navigation , Pathfinding

Particles

C++ Coding Facilities

?

C++ Foundation Libraries

C++ Data Structures and Algorithms

  • c++ stl (cpp)
  • intel oneAPI TBB (cpp)
  • CopperSpice(cpp) - a set of individual libraries which can be used to develop cross platform software applications in C++.
  • abseil (cpp)(vcpkg) - Abseil Common Libraries (C++)
  • facebook/folly (cpp)(vcpkg) - An open-source C++ library developed and used at Facebook.
  • libcds (cpp) - a collection of concurrent containers that don't require external (manual) synchronization for shared access, and safe memory reclamation (SMR) algorithms like Hazard Pointer and user-space RCU that is used as an epoch-based SMR.

Objects

  • ?

Finiate State Machine, State Chart

  • ?

Game Mechanics

  • ?

Saving/Loading Objects, Compositing Packets

  • google/flatbuffers (cpp)(vcpkg) - FlatBuffers: Memory Efficient Serialization Library

  • simdjson/simdjson (cpp)(vcpkg) - Parsing gigabytes of JSON per second

  • Tencent/rapidjson (cpp)(vcpkg) - A fast JSON parser/generator for C++ with both SAX/DOM style API

  • danielparker/jsoncons (cpp)(vcpkg) - A C++, header-only library for constructing JSON and JSON-like data formats, with JSON Pointer, JSON Patch, JSONPath, CSV, MessagePack, CBOR, BSON, UBJSON

  • fraillt/bitsery (cpp)(vcpkg) - Header only C++ binary serialization library. It is designed around the networking requirements for real-time data delivery, especially for games.

  • msgpack/msgpack-c (cpp)(vcpkg) - MessagePack implementation for C and C++ / msgpack.org[C/C++]

Resources, FileSystem

  • ?

Tokenizer

Physics

  • NVIDIAGameWorks/Physx-3.4(cpp)(vcpkg) PhysX - An open-source realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite. [BSD-3-Clause]

C++ Libraries

  • google/re2 (cpp)(vcpkg) - RE2 is a fast, safe, thread-friendly alternative to backtracking regular expression engines like those used in PCRE, Perl, and Python. It is a C++ library.
  • fmtlib/fmt (cpp)(vcpkg)

Scripting

Logic Scripts

UI Test Automation Scripting

Physics

Sound

  • wwise
  • fmod

Human Interface Devices

Concurrency & Parallelism

GPU

Networking Libraries

Networking Libraries/Frameworks in Client Side

Networking Libraries/Frameworks in Server Side

  • scylladb/seastar (cpp) - High performance server-side application framework
  • pocoproject/poco (cpp) - C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. [Boost]
  • uNetworking/uWebSockets (cpp)(vcpkg) - Simple, secure & standards compliant web server for the most demanding of applications

MQ

MQ Client

Communication between servers , Interprocess Communications

  • grpc/grpc (cpp)(vcpkg) - The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

Communication Clients

  • microsoft/cpprestsdk (cpp)(vcpkg) - The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

Memory Allocators

  • microsoft/mimalloc (cpp)(vcpkg) - A compact general purpose allocator with excellent performance. [MIT]

Compression

  • facebook/zstd (cpp)(vcpkg) - Zstandard - Fast real-time compression algorithm

Crypto

Code Stability

  • catchorg/Catch2 (cpp)(vcpkg) - A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)

Code Analysis

Footprints , Logging

  • PlatformLab/NanoLog (cpp) - an extremely performant nanosecond scale logging system for C++ that exposes a simple printf-like API.
  • odygrd/quill (cpp)(vcpkg) - Asynchronous Low Latency Logging Library
  • gabime/spdlog (cpp)(vcpkg) - Fast C++ logging library.

Profiling

  • Intel VTune

Optimizations

Library Manager

Clouds

Image Processing , Computer Vision

ML , Deep Learning

  • BVLC/caffe (cpp)(vcpkg) - Caffe: a fast open framework for deep learning.

API services

Publishing Preparations

  • google/libphonenumber (cpp) - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.

Database Clients/Drivers

Databases

Distributed Systems

  • Tencent/phxpaxos - The Paxos library implemented in C++ that has been used in the WeChat production environment.

Audio

Commercial Games

Open Sourced Games

Expetimental, For Studying

Game Engines and Frameworks

Package Manager

Objects - Entity, Actor

Networked Objects - Synchronization

  • backroll (rust) - pure Rust implementation of GGPO rollback networking library.

Saving/Loading Objects, Compositing Packets

Physics

Finite State Machine

Behavior Tree

AI , Machine Learning

Concurrency & Parallelism

Computer Graphics

Learning

Renderer + UI

Triangles , Geometry , Maths , Physics

  • libigl/libigl (cpp)(vcpkg) - Simple C++ geometry processing library.
  • google/mathfu (cpp) - C++ math library developed primarily for games focused on simplicity and efficiency.

Graphics Asset Import

Computer Graphics Middleware

Animation

Bitmap Compression

Graphics Rendering Libraries/Frameworks

  • yocto-gl (cpp) - Tiny C++ Libraries for Data-Oriented Physically-based Graphics
  • dilligent engine (cpp) - A Modern Cross-Platform Low-Level 3D Graphics Library and Rendering Framework

Rendering SDK - DirectX, OpenGL, OpenGLES , Vulkan , Metal

Triangles , Geometry , Maths , Physics

  • libigl/libigl (cpp)(vcpkg) - Simple C++ geometry processing library.
  • google/mathfu (cpp) - C++ math library developed primarily for games focused on simplicity and efficiency.

Animations

Animation and State

Tween

UI

  • http://www.gaclib.net/index.html - a GPU accelerated C++ User Interface library.
  • https://github.com/vczh-libraries/GacUI
  • iced (rust) - A cross-platform GUI library focused on simplicity and type-safety. Inspired by Elm.
  • tauri (rust) - a framework for building tiny, blazing fast binaries for all major desktop platforms
  • sauron-native (rust) - conquers all platforms ranging from desktop to mobile devices. An attempt to create a truly native, truly cross platform UI for your rust applications.

Native UI

Front-end Web App

  • yew (rust) - a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly.

Coding

c++

C++ Reflection

C++ Data Structures and Algorithms

i18n

Reactive

Data

data parallel

  • rayon (rust)- a data-parallelism library for Rust.

GPGPU

IO

File I/O

  • mandreyel/mio (cpp)(vcpkg) - Cross-platform C++11 header-only library for memory mapped file IO

  • bin_io (rust) - a crate inspired greatly by nom and other parser combinator libraries.

Network I/O

  • tokio (rust) - n event-driven, non-blocking I/O platform for writing asynchronous applications with the Rust programming language.
  • mio (rust) - a fast, low-level I/O library for Rust focusing on non-blocking APIs and event notification for building high performance I/O apps with as little overhead as possible over the OS abstractions.

benchmark

  • rust-io-file-benchmark (rust) - a short report on the performance metrics obtained processing large files with a small rust/python script.

Virtual File System

Distributed File System

Networking Libraries

Networking Libraries/Frameworks in Server Side

  • chenshuo/muduo - Event-driven network library for multi-threaded Linux server in C++11
  • tokio-rs/tokio (rust) - A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ... https://tokio.rs

Network Libraries in Client/Server Side

coroutine

HTTP in Server Side

  • actix/actix-web (rust) - Actix web is a small, pragmatic, and extremely fast rust web framework.

  • ipkn/crow (cpp)(vcpkg)- Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask)

  • oktal/pistache (cpp)(vcpkg)- Pistache is a C++ REST framework written in pure C++11 with no external dependency. [Apache2]

  • https://github.com/oatpp/oatpp

  • [sauron)(https://github.com/ivanceras/sauron) (rust) - an web framework for creating fast and interactive client side web application, as well as server-side rendering for back-end web applications.

Testing

Load Testing

  • drill (rust) - a HTTP load testing application

Unit Tests

  • laboratory (rust) - A simple, expressive unit test framework
  • rstest (rust) - Fixture-based test framework

Concurrent

  • loom (rust) - a testing tool for concurrent Rust code.

Property Testing

  • proptest (rust) - a property testing framework inspired by the Hypothesis framework for Python
  • quickchceck (rust) - a way to do property based testing using randomly generated input.

Fuzz Testing

  • afl (rust) - a popular, effective, and modern fuzz testing tool based on AFL.

Coverage Testing

  • tarpaulin (rust) - a code coverage reporting tool for the Cargo build system, named for a waterproof cloth used to cover cargo on a ship

fake data

  • fake (rust) - A Rust library for generating fake data.

Open Source Game Server

  • TrinityCore/TrinityCore - TrinityCore Open Source MMO Framework (master = 8.3.0.34220, 3.3.5 = 3.3.5a.12340)
  • ketoo/NoahgameFrame (cpp) - A fast, scalable, distributed game server engine/framework for C++, include the actor library, network library, can be used as a real time multiplayer game engine ( MMO RPG/MOBA ), which support C#/Lua script/ Unity3d, Cocos2dx and plan to support Unreal.

Communication Clients

Communication between servers , Interprocess Communications

Memory Allocator

Profiling

Image Processing

  • ermig1979/Simd (cpp) - C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.

Audio

Databases

ORM

  • diesel (rust) - A safe, extensible ORM and Query Builder

Data Engineering

WebView

Distributed Systems

  • Tencent/phxpaxos - The Paxos library implemented in C++ that has been used in the WeChat production environment.

Debugging

VM

Source Control

Graphic Editor

  • rx (rust) - a modern and minimalist pixel editor

Sound

  • engine sound (rust) - a GUI Application used to generate purely synthetic engine sounds with advanced options