Battle for Polaris

Battle for Polaris Roadmap

by on Aug.24, 2014, under Battle for Polaris

This post is to keep track of the “roadmap” of future features to implement for upcoming versions, as of the release of 0.1 Alpha. I revise this occasionally, removing old parts to keep it manageable, hence the bumps in the publish date.

For the latest release, see Battle for Polaris 0.21b.

For latest code, see Battle for Polaris on BitBucket.

Completed Milestones

0.22 – Refactor, Restructure and Update

  • Refactor of objects, entities and configuration system
  • Update of OGRE and CEGUI libraries to latest, and code changes to support this.
  • Removed some reliance on OGRE, e.g. singletons
  • Optimisations and improvements, particularly to aiming code
  • General code tidy-up

In-Progress Milestones

0.23 – Logging, AI and small Gameplay improvements

  • Simple logging system with switchable labels and levels, just to console (or Windows debug output) now
  •  Improvements to dogfight AI, using improved logging
    • Debug issues with target selection and retreating appearing incorrect, such as a group of ships sometimes all picking the same target.
    • Also better evasive/retreat behaviours; attempt lateral movement and shaking the player off their tail, rather than just flying away and wiggling a bit.
  • Tweaks to gameplay. Longer ranges, movement, scale and weapon tweaks, and provide some chance of skill in avoiding shots.
  • Convincing random inaccuracy to AI for a fairer challenge.
  • Wave survival mode for the simulator, instead of having to jump from sector to sector.
  • Tweaks to particle effects.
  • Add particle effects to vertical/lateral thrusters.

Ongoing – Refactors and Cross-Platform

This is kind of a side-milestone for project and code improvements that don’t involve actual game content or functionality. I’m keeping this list separate, since I am trying to alternate between this utility/infrastructure work and the work that makes the game itself better.

  • CMake project files.
  • Linux build and development environment.
  • Ongoing phasing out of direct use of OGRE code for utilities such as logging and configuration.
  • Game Engine Refactor – use common engine framework between BfP, BendBall, and future projects.
    • Single componentised interface for rendering, main loop and events to OGRE/OIS/CEGUI
    • Objective is to fully decouple my code from these dependencies, so that they can eventually be easily switchable to alternatives.

Planned Milestones

0.3 – AI (Intermediate) and RTS Gameplay

  • RTS gameplay improvements
    • Allow ships to be moved to points, rather than just circling objects. New representation of the world is needed for the AI to handle this.
    • Alterations to how ships move, in terms of speed, and weapon range/effectiveness, to allow for a more tactical game of ship positioning and flanking.
    • Terrain types (e.g. dust clouds) with bonuses.
    • Pathfinding system that takes advantage of terrain and flanking.
  • AI debug draw system – visuals for AI ship and strategic state, motion, targeting/aiming… (needs design)
  • Tweaks and improvements of the ship and group AI.
    • Better decision-making, using weighted-randomness. Fixes to how (and where) ships choose to retreat and choose their targets.
    • Type-specific collision avoidance – e.g. minor projectiles only dodged in Evasive/Passive stances.
    • Use above system also for friendly fire avoidance.
    • AI can strafe to dodge and adopt formation more quickly.
    • AI can select weapon groups.
    • Tweaks and improvements to target selection.
    • More dynamic dogfighting AI
  • Tweaks and improvements of the strategic AI
    • Better action evaluation for purchasing – e.g. last-ditch purchasing, saving up
    • Add small random elements into pre-set AI
    • Improve, tweak and verify the abstract state.
    • Other improvements? (TBC)

0.4 – Visuals & Content

  • Better-looking ship models – more variety.
  • Better-looking particle effects.
  • Better and more dynamic space backgrounds.
  • Better collision detection (use of hirerarchical bounding volumes for ships, stations, etc)
  • New ship types and weapon types; redesign of maps; gameplay balancing.
  • Sphere with ripple effect (shader) for ship shields on projectile impact.
  • Rotating planets and bodies with atmospheres.
  • A smaller version of the interface font.

0.5 Onwards (TBC)

  • 3D sound and background music
  • Dynamic group creation and arbitrary move orders via the mouse
  • More maps and scenarios; dynamic map layout & label positioning (instead of using config values)
  • Map editor mode
  • Automatic map generator
  • Story mode (full-featured mission system; communications/conversation system; docking; saving)
  • Predictive and adaptive strategic AI, achieved by finishing, testing and tweaking the Logic Engine
  • Networked multiplayer mode
  • First-person POV
  • VR (Oculus Rift) support
Leave a Comment more...

Progress Update

by on Jul.06, 2014, under Battle for Polaris, Personal

It’s been a few months, so I thought I’d post a progress update. I’ve been rather busy on the personal and work side of things, but have managed to work on some behind-the-scenes improvements in the meantime. Here’s a summary of what I’ve done over the last few months:

Battle for Polaris

I’ve finished the first set of major restructures and refactors I wanted to do. This included updating the codebase to work with latest OGRE and CEGUI, which was a job and a half in itself. I’ve also done some general tidy-up, and changed the project’s folder structure to separate header and source files. Since I’m trying to move towards having BfPEngine be a reusable framework, this made sense to me.

The main thing left to do in terms of refactor is the phasing out of OGRE code. I’m not particularly happy about depending on OGRE for simple things such as singletons, logging, string/real types, and so forth; I’ve worked quite a bit with logging systems – particularly Python’s nice logging system – since I did this, so I think I can do much better now. These plans are, however, on short-to-medium-term hold, since it feels like it’s been too long since I’ve worked on improving the meat of the gameplay and AI.

I’ve been reading back on my original plans from this project, from way back in my University days. I’ll be revisiting the old roadmap and writing up specific documentation as I go along, but the high-level summary of where I want to take the game AI is as follows:

  • General improvements to gameplay, and unit/group AI. Already summarised in my older (recently-updated) roadmap.
  • Use of probabilistic reasoning with Bayesian Networks in the high-level AI. Initially this would be to predict the player’s ship and sector positions, as a form of inferred influence map.
  • High-level AI that learns a player model over time, e.g. learning the player’s ship preferences. This already has a design, but may need revisiting after gameplay changes.
  • Investigate reinforcement learning AI. This is of academic interest, but in terms of practicality may need a more pragmatic hybrid approach.

I would like to further document this on the blog, so will be putting up posts with diagrams and overviews as I revisit and improve each section of the game code.

Interactive Fiction

This is still in the ideas stage. I would like to do something visual and gamey with this, but it has to work around my lack of artistic talent. I hope to draw up a proper design of this when I have a chance, though BfP is the priority at the moment.

Leave a Comment more...

BitBucket & plans

by on Jan.01, 2014, under Battle for Polaris

I’ve been using BitBucket for my source code. Latest code is available at the following URL:

Most of the latest changes have been refactors, mainly towards being able to swap out GUI frameworks and the ultimate goal of being able to build portably between Windows/Linux. Hence, there’s not much point in a new binary release.

The closest thing to a visible change is improvement to target-leading AI, using a proper mathematical method that is capable of taking projectile acceleration into account. This is also *far* more efficient than the naïve “expanding circle” algorithm it replaced.

Hopefully I’ll be getting more of a chance to work on this towards version 0.3; expect an re-evaluated (in terms of priorities) roadmap, though.

Leave a Comment more...

Battle for Polaris 0.21b

by on Nov.29, 2009, under Battle for Polaris

After many setbacks and a stomach virus, the new version is done. I had planned to release 0.2a a week ago, but discovered some nasty crash bugs and AI issues that I wanted to fix before making a proper release. There have been many other updates and feature additions; see the “Battle for Polaris Roadmap” post for details.

Battle for Polaris is my biggest C++ project. It is a hybrid of the 3D space combat and real-time strategy genres, with all the code, including AI, Physics, Gameplay and GUI layouts, designed and written by myself. For 3D graphics OGRE was used, and for the interface CEGUI was used. Models are mostly freely-available stuff adapted and some modified for use with OGRE in Blender. Although it formed the basis for my MSc dissertation, work on it is ongoing.

Currently the game has been written and set-up to run with DirectX 9 in Windows. A working OpenGL (and following, the Linux version) will be forthcoming.

This version is 0.21 Beta, as I’m only mostly sure I’ve ironed out all of the major crash bugs and other issues.


Click for full-sized versions.

Battle for Polaris 0.1a Screen 1 Battle for Polaris 0.1a Screen 2

Battle for Polaris 0.1a Screen 3 Battle for Polaris 0.1a Screen 4

Battle for Polaris 0.1a Screen 5 Battle for Polaris 0.1a Screen 6


Battle for Polaris 0.21b Demo Gameplay Video (2:27, 640×480 WMV, 34.2 Megabytes)

Battle for Polaris 0.21b Demo Gameplay Video (lowres) (2:27, 320×240 WMV, 19.4 Megabytes)

Music is “ROT13 (SHA2 Remix)” by Partition 36, available here under a Creative Commons licence.


Battle for Polaris 0.21b for Windows (.ZIP, 20.1 Megabytes) – Initial release with binaries.

Below are old development and source releases. NOTE that you will find much more up-to-date code at Battle for Polaris on BitBucket.

Battle for Polaris 0.21b for Windows Development Version (.ZIP, 48.7 Megabytes) – Includes data, source code, CodeBlocks project files, and DLLs for both Release and Debug versions.

Battle for Polaris 0.21b Source (.ZIP, 359 Kilobytes) – Contains only the source code and config files.

A Linux version should also be available not too long after I set it up on my laptop (I actually mean it this time!)

Leave a Comment more...

Battle for Polaris 0.2 Progress

by on Oct.26, 2009, under Battle for Polaris

Work on the 0.2 feature release of Battle for Polaris is progressing, and is currently almost complete. Some minor changes have been made to the targets put out in the road map, summarised below. The main difference is that the tutorial system has been expanded into a more general and flexible “mission” system specified by config files.


  • Major code tidy-up and commenting
  • Restructuring of the configuration system to accommodate scenarios & avoid duplication (new)
  • The framework for the configurable mission system that uses triggers & events
  • Proper texture/material importing from Blender, so that we can more easily add new ship types, planet atmospheres, and so on. (moved back from 0.3)

In Progress

  • Implementation & testing of a tutorial scenario using the new mission system
  • Rebalancing of ships, weapons and example skirmish scenarios

To Do

  • Some minor code restructuring (namespaces)
  • Implementation & testing of “Instant action” mode using the new mission system (new)

Moved Forward to 0.3

  • Interface improvements, including click-selection of ship groups
Leave a Comment more...

Battle for Polaris 0.11a

by on Sep.24, 2009, under Battle for Polaris

A small update, whose main purpose is to fix the most glaring problems in the preliminary alpha version.

Known Bugs

  • Minor visual glitch in the planet model.
  • Possibly another crash bug, and various miscallenous bugs.
  • The new turning system has necessitated a bit of minor tweaking in the aiming system.
  • The high-level AI needs tweaking to be more responsive to low-level events (e.g. the player ship arriving)
  • Some balance tuning of ships/weapons is required, particularly of the beam corvette (which is a bit overpowered).


  • Fixed bug wherein switching the target mode in certain situations would cause a crash.
  • Fixed bug wherein losing the last player ship could cause a crash.
  • Fixed bug wherein faction death wouldn’t register on the final ship being lost.
  • Turning should be smoother, and ship AI should no longer get stuck in a turning loop.


Battle for Polaris 0.11a for Windows (.ZIP, 17.7 Megabytes) – Runnable demo version

Battle for Polaris 0.11a for Windows (Dev) (.ZIP, 45.0 Megabytes) – Development version (source code, DLLs, and CodeBlocks project file)

Leave a Comment more...

Battle for Polaris 0.1a

by on Sep.08, 2009, under Battle for Polaris

Battle for Polaris is my biggest C++ project. It is a hybrid of the 3D space combat and real-time strategy genres, with the AI, Physics and Gameplay code written by myself. For 3D graphics OGRE was used, and for the interface CEGUI was used. Although it forms the basis for my MSc dissertation, work on it is ongoing. This version is 0.1 Alpha, so there are some issues (and possibly still that pesky crash bug) to iron out.

Known Bugs

  • There are one or more crash bugs, associated with player ship destruction.
  • Minor visual glitch in the planet model.
  • Ship controllers may occasionally get confused and repeatedly turn.
  • Victory may not trigger in certain situations (last ship rather than last sector)
  • And many more


Click for full-sized versions.

Battle for Polaris 0.1a Screen 1 Battle for Polaris 0.1a Screen 2

Battle for Polaris 0.1a Screen 3 Battle for Polaris 0.1a Screen 4

Battle for Polaris 0.1a Screen 5 Battle for Polaris 0.1a Screen 6


Battle for Polaris 0.1a Demo Gameplay Video (1:54, WMV, 19.8 Megabytes) – A demonstration of various gameplay elements in the preliminary alpha version


Battle for Polaris 0.1a for Windows (.ZIP, 17.7 Megabytes) – Initial release of the alpha – contains many known or already fixed issues (fixed version on its way)

A Linux version should also be available in the fairly close future.

Leave a Comment more...