elemel / crust Goto Github PK
View Code? Open in Web Editor NEWCRUST
CRUST
Implements story: Efficient block generation (#9)
Implement a Delauney triangulation using the circumcircle function. Start with brute force, checking all triangles for each point added to the triangulation.
Story: Efficient block generation (#9)
While grabbing, draw particle effects around the character's hands and the grabbed block.
Also draw particle effects around the character's feets when flying with jet boots.
Chain spiders spawn in the ceilings of rooms. They crawl on walls and in the ceiling until they are above the hero. Then they lower themselves on a chain to bite him in the head.
Depends on story: Chains
Give blocks an additional collision shape that is 0.1 m smaller. Use it when colliding with other blocks.
Adapt physics shapes to arbitrary blocks. User can interact with blocks directly using the mouse.
Implement block.rasterize(polygon)
Populates the block with only the elements that overlap the polygon. Start with a point-in-polygon test for each potentially overlapping element.
Store the polygon for use in physics. This is a hack but should be good for now.
Implements story: Efficient block generation (#9)
Use a progressive Poisson disc instead of random points for block generation. Generate a single Poisson disc and use it for all sectors.
The Poisson disc is 20 by 20 meters, with a point every 0.1 meters. The points are ordered so that they fill the disc gradually, while maximizing the distance to other points.
When generating blocks, try skipping a random number of points from the Poisson disc before getting the next point. Hopefully this will make sectors look different.
Rationale: Using completely random seed points results in too much clustering, and in too much variation in block sizes.
Blocks currently have flat normals, more or less. Give them faceted normals instead.
The rocket boots can give the hero a boost in mid-air. He can even fly for a limited time. Control them by holding the jump key in mid-air.
Start with hardcoded water boxes. Apply buoyancy forces on submerged bodies.
Use Voronoi diagrams and rasterization to make the block generation more efficient.
Add a game mode where the player can draw chains using the mouse pointer. The chains can connect two blocks or hang from a block.
Control a character that can walk and jump. Use a circle for physics and implement walking and jumping by setting velocity or by applying force or impulse.
Start with a static sprite for the character. Mirror it when he faces left.
Implement the circumcircle function for triangles. Details on Mathworld and Wikipedia.
Story: Efficient block generation (#9)
Bats fly around and avoid nearby blocks. They can hang from the ceiling to rest.
Create an iceberg by shooting ice magic at water.
Depends on story: Water (#1)
Crack the ground by stomping. Might be invoked by pressing the down key while falling, or by pressing down + jump, and/or by wearing metal boots. Dislodges and splits blocks below when landing.
Allow all classes to use all items, but throw in some perks, e.g. alchemists have longer flight range with rocket boots.
Draw blocks with a vibration effect while lifting or digging.
The physics-based character control seems too flaky, in particular the jump height when running uphill or downhill. Use velocity-based control instead.
Start by computing which sectors intersect the frustum box. Then test each actor in each sector for intersection before drawing it.
Implements story: Improve draw performance (#17)
Move to a component-based design for the game. Rationale: More flexible, maintainable and extensible.
When grabbing and manipulating a block, keep the character's arms aimed toward it.
Start with frustum culling. If that's not enough, look into using vertex buffers instead of, or in addition to, vertex arrays.
Problem: The dungeon generation currently removes entire blocks if their centers are contained within a generated room or corridor box, resulting in jagged floors that are difficult to walk on.
Solution: Clip the floor blocks instead of removing them completely. Keep walls and ceilings the way they are now. Alternatively, clip 80% of the floor blocks and 20% of the wall and ceiling blocks.
Add chains as a new actor type. A chain is a series of links. Each link is a pixel. The links are connected at the corners with a revolute joint.
Add a mining mode. Start with simply removing clicked blocks that are close to the character.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.