Giter Site home page Giter Site logo

cannonball's People

Contributors

elemel avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

cannonball's Issues

Create Geometry class for sharing display list

The current draw scheme causes the frame rate to drop when many new actors are drawn in a short period of time. Since e.g. most particle actors draw the same or similar geometries, the should share display lists. Adding a Geometry class also opens up for separating physics and graphics geometries.

The actor will still receive the draw() call, but may delegate to a Geometry, perhaps after applying transforms for position, rotation, scale, and special effects.

Grapple dynamic bodies

The grappling gun is currently limited to static bodies. Extend it to work on dynamic bodies as well.

Impact particle effect

Generate particles when the cannonball receives a strong impact. Maybe this can be achieved using the contact result callback.

Better explosions

Explosions could generate smoke (rename jet particles to smoke), sparks, and fire. Also use invisible impulse particles?

Materials

Materials are specified in SVG with e.g. data "material: stone". Materials provide defaults for density, texture, and destructibility.

Try raycast-based explosions

Explosions currently apply an impulse in the world center of the body, which does not give any rotation. Try doing raycasts and applying the impulse where the ray hits instead. If multiple rays hit a body, use their average. Try 16 rays per explosion to begin with.

Background images

Use large cloud images as Cannonball backgrounds for now. Parallax scrolling. Preferably load from SVG.

Use Pyglet vertex lists

Requires implementing Path.triangulate(). Use triangulations for graphics and convexifications for physics.

Skid particle effect

Generate skid particles when the tangential velocity of the cannonball at a contact is different from its linear velocity.

Normalize paths

Normalization reverses paths with negative areas and removes vertices with straight angles.

Physical cannons

Create Box2D bodies for all cannons and attach them to the cannonball body with prismatic joints. Also use damped springs for stability and recoil handling. Apply an impulse on the cannon when firing, corresponding to the impulse propelling the shot.

Upgrade existing cannons

Do something useful when you take e.g. a grenade launcher upgrade and already have a grenade launcher.

Grappling gun upgrade increases grappling range. Grenade launcher upgrade increases max firing range. Jet engine upgrade could increase flight range (to be implemented).

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.