moonhopper's People
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.
Create rendering of tether
Currently there is not visible representation of the tether connecting two moons.
Animate the avatar moving around the moon
The avatar should have an animation for when it moves around the moon.
Horizontal grid lines not drawn correctly
There seems to be a missing grid line at the top of the view.
Create texture for grappling hook
Create collision representation for grappling hook
Need a collision representation for the grappling hook to determine when it hits a moon.
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)
Avatar dies if current moon is destroyed
If the current moon, i.e. the moon that the avatar is standing on is destroyed, the avatar dies.
Reuse display list code
The display list construction code is very similar for the different entities. It should be possible to reuse it.
Create capsule representation
Will be representing the tether with a capsule
Complete: when there is a capsule class
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.
Create a collision representation of the avatar
Create a collision representation for the avatar. If the avatar is hit by a moon, the avatar should die.
Create collision representation of tether
Since we need to test whether the tether is hit by a moon, it needs to have a collisions representation.
Completed: when the tether can be hit by a moon.
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.
Allow avatar to jump across boundaries
Currently the avatar cannot jump across the periodic boundaries of the domain. He should be able to.
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.
Handle tethered moons across the periodic boundaries
Currently the tethered moons are not properly handled if they cross the boundaries. This system should continue to work whether the moons are tethered or not.
Death screen
The player needs to be moved to a death screen when the avatar dies.
Collisions do not account for mass
The masses of the colliding moons do not affect collisions. They should.
Create debug overlay
It would be useful to have an overlay that displayed debugging information.
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).
Aggregation of moon fragments
Small moon fragments that collide with a larger moon should aggregate with the larger moon.
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.
Avatar should be able to move around the moon
Add a player controller that allows the player to move their avatar around the moon.
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.
Collisions do not account to rotation
It would be nice to incorporate rotations into the collision response.
Grid not displayed properly
When I added textures to the moons, I broke the blending and now the grid does not display properly.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.