Skip to content
A rapid-paced game about spheroid with high momentum and a target (in C++14 and SFML2.1)
C++ Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A rapid-paced game about spheroid with high momentum and a target


Project on Hold ; Looking for a maintainer

This project is currently on hold... but there's still a lot to do! If you want to take over this project, send me a little email at epholys [AT] gmail [DOT] com :).


You'll only need two things :

  • A C++11-compliant compiler like gcc

  • SFML 2.1 or later, available here and with some excellent setup tutorials there.

If you're on GNU/Linux and on a Debian-like system, you can then just type

$ sudo apt-get install g++ make libsfml-dev
$ git clone
$ cd Impetus-Spheroid
$ make

and you'll have a game freshly installed from source!


  • What are the naming convention? I use the Java naming convention, as I think it makes sense in OOP
  • Why do you (almost) use no encryption for you data files? The players can cheat! Let them cheat then! If it was a competitive game, I'll understand the concerns, but here, they may learn two or three things doing so =).
  • Do you know what 'MVC' means? I didn't know its existence at the creation of this project, and it will take a long time to refactor everything into this principle. As my personal deadline is September 2015, I don't have enough time.


  • Long-Term Thinking:

    • Sound
    • Android Port
    • Graphics
  • Gameplay

    • Tutorial
      • Full-fledged tutorial for begginers at the first game NEEDS MORE TESTING
    • Balancing
      • High-ball points value frequency
      • Limits the manual fire rate
      • Cheaper bonuses NEEDS MORE TESTING
    • Add some indications (objective, points, money, etc)
      • Replace the grey cross-hair by something more visible(?)
      • More explicit Events: Icons, Other Graphic Effects...
        • Stop Time
          • Awesome effect like radial blur(?)
      • More explicit PowerUps: Icons, Particule Effects, other graphics Effects
    • Make the game more addictive
      • Rewarding: sound
    • Add some content
      • More Events
        • Spinning Target?
        • Crazy/Teleporting(?) Target
      • More Power-Ups
        • Unlock unlimited manual fire
        • Heavy Balls?
      • More Improvement
        • Improves power-ups?
      • "Variety of environments and targets with different behaviors. Different weapons. In some levels an ability to move."
  • User Experience

    • Transitions beetween phases
    • Close Menus, restart game with buttons DONE!
  • Graphics

    • Windows vs GNU/Linux Alpha problem
  • Sound (just little sound effects)

  • Bugs

    • Crashing Windows
    • Auto-adjust the speed of the next balls left bar
  • Other

    • Make a credit page
  • Clean-up

    • Fusion addWindWorld and reverseGravWorld in EventFunctions.cpp
  • (Heavy) Refactoring

    • Replace every convenient const std::string& by the ResourceHolder managment
    • Separate DifficultyManager into two classes
    • Refactor TransitionDeque to have one an only Transition?
  • Optimization (if necessary)

    • Search where are the bottlenecks
    • ecs/EntityManager's entityExists() / componentExists() (called 504,360 times for a small game!). The function itself is optimized, but it is called to many times... Solution: Make a quad-tree for collision detection WIP (It isn't called unnecessarily now)
    • Reduce all the Balls' draw calls, as one should be enough: they are almost all the same (minus the color)!
    • For smooth balltrail: adapt duration and frequency of particles w/ ball's velocity
    • Particles: adapt particle frequency w/ number of balls on screen
    • ECS: Optimize to be more cache-friendly

BLACK HOLE ERROR Warning: noted but unhandled ioctl 0x6458 with no size/direction hints. ==20497== This could cause spurious value errors to appear. ==20497== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. ImpetusSpheroid.debug: Target.cpp:179: void Target::updateIndicators(Time): Assertion `projectileComp && targetComp' failed. ==20497== ==20497== Process terminating with default action of signal 6 (SIGABRT) ==20497== at 0x5B6C1C7: raise (raise.c:55) ==20497== by 0x5B6DE29: abort (abort.c:89) ==20497== by 0x5B650BC: __assert_fail_base (assert.c:92) ==20497== by 0x5B65171: __assert_fail (assert.c:101) ==20497== by 0x45D7C0: Target::updateIndicators(sf::Time) (Target.cpp:179) ==20497== by 0x45CDE9: Target::update(sf::Time) (Target.cpp:80) ==20497== by 0x463289: World::update(sf::Time) (World.cpp:357) ==20497== by 0x496AC4: StateGame::update(sf::Time) (StateGame.cpp:35) ==20497== by 0x49F285: StateStack::update(sf::Time) (StateStack.cpp:53) ==20497== by 0x48D031: Application::update(sf::Time) (Application.cpp:95) ==20497== by 0x48CFE1: Application::run() (Application.cpp:87) ==20497== by 0x4A1FD1: main (main.cpp:9)

To correct this mistake, see src/core/EventFunctions.cpp:490

You can’t perform that action at this time.