Full C++ source code of "Starports: Space Defense" including the engine and tools
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Game
Shoot
ShootEditor
extern
.gitignore
BuildEditor.bat
BuildGame.bat
LaunchEditor.bat
LaunchGame.bat
README.md

README.md

StarportsPublic

What is this repository about?

This is the full source code to Starports Space Defense, a mobile 3D tower defense I made and released throughout 2014/2015

In addition to the game source, this includes the full game pipeline (engine, editor, and tools), which I developed from scratch on my free time, starting around January 2010. This engine is a continuation of VLAD Heavy Strike's engine.

Why make a game engine from scratch?

I've been interested in game development technology for a long time, even more than playing or making games. I made my university's thesis project about a Game Development Environment.

Non exhaustive list of Engine Features

Low Level:

  • Cross platform targets (PC / iOS / Android / Windows Phone 8)
  • 3D rendering using OpenGL, GLES2.0, and DirectX11
  • Memory allocation tracking (full leak & allocation reporting)
  • 3D Math library
  • File system abstraction
  • Network socket abstraction
  • Multi-threading abstraction
  • Touch and Key input abstraction
  • FBX and PNG support through fbxsdk and libpng
  • OGG and WAV support through cricket audio
  • Event system

High Level:

  • Object Model framework, with serialization, ref. counting, weak handles, and polymorphism support
  • Entity Component System (ECS)
  • Resource abstraction model
  • Generic entity hierarchy handling allowing to have 3D or 2D hierarchies, or both in the same tree
  • Quad-tree partitioning
  • Collision handling
  • Context stacking and switching

Tool Side:

  • WYSIWYG Game Editor for Game and Level design
  • The game can be played in the editor and game contexts can be inspected at run-time
  • ObjectViewer tool, allows to inspect all alive objects at any given time
  • DependencyViewer tool that displays reference and dependency information across objects
  • Data packaging tool for optimal data loading at runtime