bwapi - Brood War API

  •        39

The Brood War Application Programming Interface (BWAPI) is a free and open source C++ framework that is used to interact with the popular Real Time Strategy (RTS) game Starcraft: Broodwar. Using BWAPI, students, researchers, and hobbyists can create Artificial Intelligence (AI) agents that play the game. BWAPI only reveals the visible parts of the game state to AI modules by default. Information on units that have gone back into the fog of war is denied to the AI. This enables programmers to write competitive non-cheating AIs that must plan and operate under partial information conditions. BWAPI also denies user input by default, ensuring the user cannot take control of game units while the AI is playing. These defaults can be changed for flexibility, unless enforced by a Tournament Module (game referee for AI tournaments). Changed defaults will be advertised when the match begins.



Related Projects

TorchCraft - Connecting Torch to StarCraft

  •    C++

A bridge between Torch and StarCraft. Synnaeve, G., Nardelli, N., Auvolat, A., Chintala, S., Lacroix, T., Lin, Z., Richoux, F. and Usunier, N., 2016. TorchCraft: a Library for Machine Learning Research on Real-Time Strategy Games - arXiv:1611.00625.

StarData - Starcraft AI Research Dataset

  •    Python

We release the largest StarCraft: Brood War replay dataset yet, with 65646 games. The full dataset after compression is 365 GB, 1535 million frames, and 496 million player actions. The entire frame data was dumped out at 8 frames per second. We made a big effort to ensure this dataset is clean and has mostly high quality replays. You can access it with TorchCraft in C++, Python, and Lua. The replays are in an AWS S3 bucket at s3://stardata. Read below for more details, or our whitepaper on arXiv for more details. Note: The current set of replays are only compatible with the 1.3.0 version of torchcraft included here.

glbinding - A C++ binding for the OpenGL API, generated using the gl.xml specification.

  •    C++

glbinding is a cross-platform C++ binding for the OpenGL API. glbinding leverages modern C++11 features like enum classes, lambdas, and variadic templates, instead of relying on macros; all OpenGL symbols are real functions and variables. It provides type-safe parameters, per feature API header, lazy function resolution, multi-context and multi-thread support, global and local function callbacks, meta information about the generated OpenGL binding and the OpenGL runtime, as well as tools and examples for quick-starting your projects. Based on the OpenGL API specification (gl.xml) glbinding is generated using python scripts and templates that can be easily adapted to fit custom needs.

globjects - C++ library strictly wrapping OpenGL objects.

  •    C++

globjects is a cross-platform C++ wrapper for OpenGL API objects. globjects provides object-oriented interfaces to the OpenGL API (3.0 and higher). It reduces the amount of OpenGL code required for rendering and facilitates coherent OpenGL use by means of an additional abstraction layer to glbinding and GLM. Common rendering tasks and processes are automated and missing features of specific OpenGL drivers are partially simulated or even emulated at run-time.

NGINX-Demos - NGINX and NGINX Plus demos

  •    HTML

autoscaling-demo: This demo uses one NGINX Plus instance as a load balancer with two upstream groups, one for NGINX Plus web servers and one for Elasticsearch nodes. All of the instances run in Docker containers. The demo uses both the upstream_conf and status api's. If shows creating a new NGINX Plus environment and adding and removing containers manually and with autoscaling. consul-api-demo: This demo spins up a bunch of docker containers and shows NGINX Plus being used in conjuction with Consul, a service discovery platform. It uses the upstream_conf API in NGINX Plus to add the servers registered with Consul and remove the ones which get deregistered without the need for reloading NGINX Plus. This automates the process of upstream reconfiguration in NGINX Plus based on Consul data using a simple bash script and Consul watches.

Mudlet - A cross-platform, open source, and super fast MUD client with scripting in Lua

  •    C++

Mudlet is a quality MUD client, designed to take mudding to a new level. It’s a new breed of a client on the MUD scene – with an intuitive user interface, a specially designed scripting framework, and a very fast text display. That, along with cross-platform capability and an open-source development model result in a very likable MUD client.

GDevelop - :video_game: GDevelop is an open source HTML5 and native game creator requiring no coding skills

  •    C++

GDevelop is a full featured, open source game development software, allowing to create HTML5 and native games without any knowledge in a specific programming language. All the game logic is made thanks to an intuitive and powerful event based system. A pre-generated documentation of the Core library, C++ and JS game engines is available here.

EASTL - EASTL stands for Electronic Arts Standard Template Library

  •    C++

EASTL stands for Electronic Arts Standard Template Library. It is a C++ template library of containers, algorithms, and iterators useful for runtime and tool development across multiple platforms. It is a fairly extensive and robust implementation of such a library and has an emphasis on high performance above all other considerations. If you are familiar with the C++ STL or have worked with other templated container/algorithm libraries, you probably don't need to read this. If you have no familiarity with C++ templates at all, then you probably will need more than this document to get you up to speed. In this case, you need to understand that templates, when used properly, are powerful vehicles for the ease of creation of optimized C++ code. A description of C++ templates is outside the scope of this documentation, but there is plenty of such documentation on the Internet.

BansheeEngine - Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting

  •    CSharp

Banshee is a high-quality and modern game development toolkit. It provides a high-performance, multi-threaded game engine written in C++14. The engine includes math and utility libraries, Vulkan, DirectX 11 and OpenGL support, handles common tasks such as input, GUI, physics, audio, animation and scripting, and supports many popular resource formats (e.g. FBX, PNG, PSD, TTF, OGG, WAV).

oatpp - 🌱Light, high-performance web framework

  •    C++

Zero-Dependency. Performance oriented web-service-development framework. Organic. Pure C++. Cross-Platform Linux/Unix/Windows. See full list of supported-platforms. "Simple API" refers to as API used together with oatpp::web::server::HttpConnectionHandler utilizing multithreading plus blocking-IO approach.

GDevelop - HTML5 and native game creator requiring no coding skills

  •    C++

GDevelop is a full featured, open source game development software, allowing to create HTML5 and native games without any knowledge in a specific programming language. All the game logic is made thanks to an intuitive and powerful event based system.

openrw - OpenRW "Open ReWrite" is an un-official open source recreation of the classic Grand Theft Auto III game executable

  •    C++

OpenRW is a cross-platform, open source re-implementation of Rockstar Games' Grand Theft Auto III, a classic 3D action game first published in 2001. OpenRW has been ported to Linux, macOS, Windows, and several variants of BSD. A legitimate copy of the original PC game is required to run OpenRW. Without this it will not be possible to play.

gosu - 2D game development library for Ruby and C++

  •    C

Gosu is a 2D game development library for Ruby and C++. The main website is The source code, wiki, issue tracker and change log are all hosted on GitHub.

warzone2100 - Warzone 2100 - a free and open source real time strategy game

  •    C++

Warzone 2100, released in 1999 and developed by Pumpkin Studios, was a ground-breaking and innovative 3D real-time strategy game. In 2004 Eidos, in collaboration with Pumpkin Studios, decided to release the source for the game under the terms of the GNU GPL, including everything but the music and in-game video sequences, which were released later.

OpenJK - Community effort to maintain and improve Jedi Academy + Jedi Outcast released by Raven Software

  •    C++

OpenJK is an effort by the JACoders group to maintain and improve the game engines on which the Jedi Academy (JA) and Jedi Outcast (JO) games run on, while maintaining full backwards compatibility with the existing games. This project does not attempt to rebalance or otherwise modify core gameplay. Currently, the most stable portion of this project is the Jedi Academy multiplayer code, with the single player code in a reasonable state.

BZFlag - 3D multi-player tank battle game

  •    C++

BZFlag is an Open Source OpenGL multiplayer multiplatform Battle Zone capture the Flag game. At its heart, the game is a 3D first person tank simulation where opposing teams battle for dominance.

Urho3D - Cross-platform 2D and 3D game engine.

  •    C++

Urho3D is a free lightweight, cross-platform 2D and 3D game engine implemented in C++ and released under the MIT license. Greatly inspired by OGRE and Horde3D. Licensed under the MIT license, see LICENSE for details.

Minetest - Infinite-world block sandbox game engine and game with survival and crafting

  •    C++

An InfiniMiner/Minecraft inspired game.If you downloaded the Minetest Engine source code in which this file is contained, you probably want to download the Minetest Game project too.

openspades - Compatible client of Ace of Spades 0.75

  •    C++

OpenSpades is a compatible client of Ace of Spades 0.75. Once installed, you'll be able to launch OpenSpades from inside the desktop menu or from your terminal with the openspades command.

FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code.

  •    C++

helps you write concise and readable C++ code. Great code should mostly be self-documenting, but while using C++ in reality you can find yourself dealing with low-level stuff like iterators or hand-written loops that distract from the actual essence of your code.