A significant rewrite of a space shooter game I first programmed at the age of ten, in fifth grade. The original version was filled with what kind of code a ten year old programmer would write in cobbled into 4,000 lines of Python. When I was in my freshman year of high school I decided to rewrite it from scratch because I could not stand the original codebase.

The new version is built using Python and C++. Python is used as the front-end, such as object behaviors and general game logic. C++ is used for performance-critical components because of the number of on-screen objects, including physics, collision detection, raycasting, pathfinding, and various trigonometric/mathematical functions.

C++ and Python are connected through a custom highly optimized C++ wrapper around the bare-bones internal PyCore implementation of the Python C API. This wrapper removes all forms of error checking and optimizes it to prioritize maximum runtime performance over safety.

Features

(not a complete list)

  • Continuous collision detection with OOBBs. Broadphase is parallelized through the GPU with OpenCL, narrowphase is parallelized for multicore CPUs with OpenMP.
  • GPU-accelerated shaders and particles.
  • SIMD Advanced Vector Extensions (AVX2) optimized smart projectile targeting and raycasting.
  • Fully-featured world/map editor.
  • Binary serialization/deserialization of worlds with checksums.
  • High-performance physics, including explosion physics.
  • Very easily extensible to add new objects and entity types with completely modular object and property system.

Built With

Share this project:

Updates