Code Monkey home page Code Monkey logo

moonhopper's People

Contributors

jdowner avatar

Stargazers

 avatar

Watchers

 avatar  avatar

moonhopper's Issues

Create player avatar

Create a static graphic that represents the player. At this point it should just stand on a moon, and rotate correctly with it.

Replace moon graphic with texture

Currently the moon graphic is just a couple of polygons rendered directly using opengl calls. Now that the TextureManager has been added I would like to use it to load a texture for the moons.

Render moons on edges

Currently the moons pop when moving from one side of the domain to another. They should appear to smoothly transition from one side to another. This requires moons on the boundaries to be rendered multiple times (once for each boundary they overlap)

Reuse display list code

The display list construction code is very similar for the different entities. It should be possible to reuse it.

Adding bounding shape system

I've been working on a separate bounding shape system. This needs to be incorporate into moonhooper.

Completed: when bounding shapes support AABB, sphere, and capsule primatives, and provide bounding representations of AABBs and spheres.

Convert jumping into finite time grappling launch

As a first step towards actually having a grappling hook mechanic, I want to change the jumping from something that is instantaneous and line-of-sight to a projectile that (although fast) takes time to get from A to B.

Add help option

Currently there is no --help option from the binary. It would be useful to provide a help option, especially as more options are added.

Abort grappling hook

It should be possible for the player to abort a travelling grappling hook. It may be that the player tries for a risky shot an misses, or thinks better of it.

Completed: when the play can abort a travelling grappling hook.

Death screen

The player needs to be moved to a death screen when the avatar dies.

Particle effect system

There are several instances in the games when it would be useful to have particle effects (when moons collide and fracture, when moons impact upon one another, when the grappling hook is launched into space).

Intersection routines for capsules

Write intersection routine for capsule versus sphere and AABBs.

Complete: when capsules can be tested against spheres and AABBs for intersections.

Create texture loader

Need a texture loader for the moon and as a first step towards animating the player.

Large impacts should cause fracture

When a moon suffers a large impulse, there should be a chance that the moon fractures into smaller pieces. Moon fragments that are below a certain size could aggregate with other moons, possibly triggering a cratering kind of animation. The mass and momentum of the system should be conserved by this mechanism.

Spring clean

The code is starting to get to a point where it could benefit from a little bit of refactoring and documentation.

Make Moon into a proper class

As more functionality is being added that relates to the Moon class it makes sense that this structure becomes more encapsulated and responsible. In addition, it would be nice to have a copy ctor.

Error message when parameter file cannot be found

Currently if the user specifies a parameter file that is incorrect (either the file does not exist or the path is incorrect), a default set of parameters is used. However, this is probably a situation where we want to tell the user that the information they provided was unable to be used.

Create grappling hook mechanic

All of the pieces are in place for me to add a grappling hook mechanic to the game. There are several ways of adding in the grappling hook, but the approach I'm going to try first is having a grappling hook that shoots out to a target moon and creates a tether that the avatar can then use to cross over. However, tethering the moons together modifies their motion, which I think could lead to some interesting consequences.

Rules:
(1) The grappling hook shots out orthogonally from the surface that the avatar is standing on (there is no targeting)
(2) The grappling hook takes a short but finite amount of time to go from one moon to another. Thus it is more difficult to catch a moon that is further away than one that is closer.
(3) if the tether, once created, touches another moon the tether is destroyed.
(4) if either of the moons that the tether is attached to is destroyed (say, by a collision), the tether is destroyed.
(5) if the avatar is on the tether (not at the beginning or end) when it is destroyed, the avatar dies.
(6) the avatar can move up or down the tether.
(7) the avatar can only create one tether at a time.
(8) a tether can be intentionally destroyed by the avatar when the avatar is either at the beginning or the end of the tether (no suicides)
(9) a grappling hook that is in transit to another moon can be aborted by the avatar in mid flight.

Problems:
How is the tether modeled? Is the tether flexible or inflexible? Does the tether have a finite length? How does the tether affect moon rotation, or how is the tether affected by moon rotation?

Ideas:
It would actually be interesting to allow the avatar to create multiple tethers to control the movement of the moons.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.