Skip to content

synhya/celeste-unity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

celeste clone

Platformer based on Celeste and Celeste Origin

How To Play

Download the CelesteClone.zip in Release tab on the right side.
Built for windows.

Arrow Key is for direction and movement
Press C to jump
Press X to dash


Features

Menu

Procedural Terrain Generation was used in menu. Triangle.net library helped a lot.
The idea basically came from here.

Effects

Hood Color Change on dash is implemented using lookup table. It was inspired by this devlog.
I first made tools to convert sprite texture to lookup texture and table texture then used it in shader.

Dust(when player jump and land) and Dash Line Effect is implemented
using compute shader. Using Particle system was
possible option but wasn't efficient
as I had to set Every particle's position with cpu each frame.

Death Effect is implemented with pooling because
I had to create 8 game objects for circles.
Pooling system is left be more optimized.
Death Circles would be more pretty if they behave like metaball.


Physics

Collision is not implemented using unity built-in components.
It is because I wanted to implement the similar
collision system as the original game.

The Physics(collision) system is based on three
types of entities. Solid, Actor, and Trigger.
Specifics can be found here.

For entities that are collide-able and don't block actor,
I added Trigger class up on original system.
(for example, strawberry and dash orb inherit this class)

TileCollision

Tiles are solids but they can't inherit solid class because they
inherit from RuleTile class(In UnityEngine). So I created
TypeTile class that inherits RuleTile with AABB attached to handle collisions with actor.


Player

Player moves based on state machine.
I could implement every single state inherit from IState.
But I wanted to keep every state in player class because it looked more intuitive.
For example for normal state, I declared NormalBegin(), NormalUpdate(), NormalEnd() in player script and linked as callback from state machine.

The player class was referenced by this.

There are only two states currently but can easily be expended.


User Forgiveness

Got idea mainly from UserForgiveness
coyote time, jump buffering, lift momentum storage implemented

dashing wall jump and corner correction is yet to be implemented.

Asset Credit

Articles And Scripts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published