MCPcopy Index your code
hub / github.com/efroemling/ballistica

github.com/efroemling/ballistica @v1.7.63

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.7.63 ↗ · + Follow
30,631 symbols 91,666 edges 2,149 files 10,073 documented · 33%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

logo

bal·lis·tic: physics of an object in motion; behaving like a projectile.

-ica: collection of things relating to a specific theme.

Deploy Documentation status-badge

The Ballistica project is the foundation for BombSquad and potentially other future projects.

Head to the project wiki to get started , or learn more about the project below.

Project Goals

  • Do one thing and do it well

Ballistica is not aiming to be a general purpose game engine. Rather, its goal is to support creating one particular type of experience: 'physics based multiplayer action on small diorama-like environments built from real-world objects'. If you've got something you'd like to create that can fit within that box (as BombSquad itself does), give Ballistica a look. Of course, there is nothing preventing you from going and building a first person shooter out of this stuff, but I wouldn't recommend it.

  • Python tomfoolery

Ballistica is built on a C++ core for performance-sensitive code with a Python layer for high level game/app logic. This Python layer is designed to be mucked with. Users can override core game functionality, write their own mini games, or anything else they can dream up, either by directly accessing files on disk or by working through an integrated web-based editor. It can be a fun way to learn Python without the danger of getting actual work done.

  • Physics-y goodness

I love playing with physics simulations, and Ballistica was built partly to scratch this itch. Though the game physics in BombSquad have stayed largely unchanged for a while, my future plans for the engine lean heavily on making this more flexible and open-ended, opening up lots of fun multiplayer physics-y potential. Stay tuned...

  • Community

BombSquad started as a 'just for fun' project to play with my friends, and I want to keep that spirit alive as the Ballistica project moves forward. Whether this means making it easier to share mods, organize tournaments, join up with friends, teach each other some Python, or whatever else. Life is short; let's play some games. Or make them. Maybe both.

Frequently Asked Questions

  • Q: What's with this name? Is it BombSquad or Ballistica?
  • A: BombSquad is the game. Ballistica is the engine.

  • Q: Does this mean BombSquad is open source?

  • A: Yes and no. All code contained in this repo is MIT licensed and free for use anywhere. This includes game scripts, pipeline tools, and most of the binary engine sources. Anything not directly contained in this repository, however, even if automatically downloaded by build scripts, is still proprietary and cannot be redistributed without explicit consent. This includes assets and prebuilt libraries/binaries. So in a nutshell: create and share mods or use any of this code in your own projects, but please don't distribute your own complete copies of BombSquad without permission. Please email support@froemling.net if you have any questions about this.

  • Q: When are you adding more maps/characters/minigames/etc. to BombSquad!?!?

  • A: Check out the Ballistica Roadmap to get a sense of what's planned for when. And for the record, the answer to that particular question is basically '1.8'.

  • Q: When will BombSquad be released on iOS / Steam / Switch / Xbox / PlayStation / My toaster??

  • A: The 2.0 update will be the big 'relaunch' release and the plan is to launch on at least iOS and Steam at that time. I'm trying to get there as fast as I can. As far as consoles, I'd love to and hope to at some point but have nothing to announce just yet.
  • Check out Ballistica Roadmap for more details or the Ballistica Downloads page for early test builds on some platforms.

Cloning And Contributing

This repository can be cloned and accepts issues and pull requests from the following sources

  • GitHub
  • Link: https://github.com/efroemling/ballistica
  • Cloning via git: git clone https://github.com/efroemling/ballistica.git

  • Codeberg:

  • Link: https://codeberg.org/3ra/ballistica
  • Cloning via git: git clone https://codeberg.org/3ra/ballistica.git

Core symbols most depended-on inside this repo

append
called by 1942
src/assets/pylib-apple/email/header.py
print
called by 1128
src/tools/pcommandbatch/cJSON.c
join
called by 1036
src/assets/pylib-apple/queue.py
str
called by 851
src/assets/pylib-apple/locale.py
PyUnicode_GET_LENGTH
called by 741
src/external/windows/include/python/cpython/unicodeobject.h
InLogicThread
called by 690
src/ballistica/base/base.cc
get
called by 601
src/ballistica/shared/math/matrix44f.h
startswith
called by 514
src/assets/pylib-apple/collections/__init__.py

Shape

Method 18,783
Function 6,861
Class 4,783
Enum 199
Route 5

Languages

Python64%
C++36%
C1%

Modules by API surface

src/assets/pylib-apple/typing.py256 symbols
src/assets/pylib-apple/_pydecimal.py256 symbols
src/assets/pylib-apple/xml/dom/minidom.py235 symbols
src/assets/pylib-apple/mailbox.py213 symbols
src/assets/pylib-apple/_pyio.py208 symbols
src/assets/pylib-apple/collections/__init__.py205 symbols
src/assets/pylib-apple/email/_header_value_parser.py197 symbols
src/assets/pylib-apple/_pydatetime.py192 symbols
src/external/open_dynamics_engine-ef/ode/odecpp.h187 symbols
src/assets/pylib-apple/urllib/request.py181 symbols
src/assets/pylib-apple/logging/__init__.py171 symbols
src/assets/pylib-apple/ast.py168 symbols

For agents

$ claude mcp add ballistica \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact