Last updates on Skald Engine:
Color utility functions
PixiJS handle colors by its int value (e.g., 0xFFFFFF), so I created a bunch of function to convert or manipulate colors in this format. Right now you can:
- Convert color from/to RGB format (array, [255, 255, 255]).
- Convert color from/to HEX format (string, ‘#FFFFFF’).
- Convert color from/to HSL format (array, [255, 1, 1]).
- Get the individual color channels (red, blue, green, hue, saturation, lightness).
- Saturate a color by a given amount.
- Desaturate a color by a given amount.
- Covert the color to greyscale.
- Lighten a color by a given amount.
- Darken a color by a given amount.
- Spin the color by the hue space by a given angle.
- Blend two colors.
- Tint (blending a color to white).
- Shade (blending a color to black).
Utility for random generators
I also added a bunch of function to generate random numbers and other stuff related:
- `random.choose()` to choose a value from an array.
- `random.inclusiveRandom()` which is similar to Math.random(), but it can include the 1 (i.e., it generates a number in interval [0, 1]).
- `int()` to generate a random integer.
- `polar()` to generate a number between -x and x.
Easing function and modifiers
I add more easing functions, a general bell curve and a gaussian shaped (using the normal distribution formula without the normalization term). So they can be used to generate interesting effects.
I also added two function that modifies the easing functions, one for mirroring the result of the easing (it repeat the ease function 2 times, but it invert the result of the second half), and one for repeating (pretty straightforward). I am still testing this format, so I don’t know if I’m gonna keep it.
Added an initial implementation of particle system. there are some improvements to be made, but it is working pretty good.
Game config changes
I decided to remove the manifest as parameter of the game and added it as an item of the configuration. This should keep consistence among the API.
Additionally, I added a startScene and a preloadScene option, so the game can initialize and run a preload scene during the manifest loading, and start automatically the main scene when the game starts.
To help you in this initialization process, I also added a `start` event, triggered after the preload (if there is any item on the manifest), and added a default preload scene.
I thought I could live without it, but I was wrong, so we have scene stacking now. Now you can add or remove scenes over the base scene (the one called with `play` method). The scenes are attached to the base scene, so if you remove the base, all scenes in the stack will die too.
For the next alpha release, I want to add an event pool for event recycling (so we don’t have to create a new event instance everytime an event is triggered), and simplify the scene API. Right now the scene API is very limited and unintuitive.