That's right, you can finally destroy Earth!
The new level introduces a new type of hazard, complements of Earth's inhabitents: satellites. The solar panels they have absorb your shots instead of being damaged by then, some satellites use the generated electricity to fire back at you, so watch out!
This build also has all levels unlocked so you can try all of them even if you get stuck on one. It also features an animated sprite for the player. It's a little rough right now but it's a start.
Showed From The Sun to some other CAs at GDC and got made what are hopefully some good incremental changes.
- Scaled down most obstacles
- Limiting the variance in photon spawning so there's less visual noise
- Replaced the particle effect on the player with a trail renderer
- Skinned the planet meshes to look more like a planet and less like a bunch of rocks stuck together
- Updated menu assets, fixed a scaling issue
- Added more music tracks and made minor adjustments to existing ones
Added a second level to From The Sun, which of course is to Venus. It has its own music, and the music for Mercury is improved from last time. Both levels are available on the main menu, although eventually they'll be locked until beaten in order.
Check out the web build here.
It felt good to move on from a single level test bed of a game to creating more content with a base setup that I'm happy with. It was also great to have a sudden inspiration for a theme to follow while I created the waves of debris for the level, before it had felt more like filling space than coming up with a design.
I want to get an Earth level in the game by this weekend too, but I don't want to force that and make a level that's just filling space. If something comes to me I'll get it going otherwise I'll spend that time improving other aspects of the game, like the transition between levels.
There are two UI elements that I've built in Unity for From The Sun by creating a 2d mesh and mapping portions of this 8 pixel image to it.-> <- It's 1x8 and I'm just using it for color definitions. You can see the two UI elements in the picture below. They're the big rainbow gauge on the right side and the smaller rainbow gauge inside it. The big indicates the player's current color and the colors that are upgrades or downgrades from the current. The smaller one shows a history of the players colors as they make progress towards the current planet.
The big UI element is basically just a stretched out version of the raw image. I create a mesh of vertices that define those bars, with wider space for the player's color. The uvs just correspond to the image distributed evenly among the vertices, working out to one pixel providing the source for the two triangles that make up each bar. The triangles are just built directly from the vertices. The biggest effort for building this element was animating between the focused color, which was still just maintaining the current point of the boundary and animating it with time, stopping when the new color is full sized.
The smaller element took a little more building up of data to represent what is being shown. Instead of a current value to track that just represents an index the progress bar tracks the history of how much time the player spends as each color, in order and as distinct sessions. It was easy enough to set up a Progress class that has the color and duration, then keep a list of those, adding a new Progress item when the player's color changes and tracking time on that one. Then using the width and height of the rect that the progress bar will fill as boundaries I can start building a mesh from the bottom, adding new vertices from the bottom up for each progress item. This is where I went from copying code for creating meshes from vertices, uvs, and triangles and understanding it enough to read it and adjust it, as I did with the larger spectrum indicator to rewriting it completely to fit my needs. I iterate over the progress items, creating 4 vertices for each, uvs to sample the right color of the 8 pixel image, and triangles for those 4 specific vertices. This ends up with more vertices than actual on screen point locations, each boundary is 4 points for a line instead of 2, but as far as I can tell that's what I need to do to get the right uvs for each rectangle. I also make sure to only create triangles for the rectangles I want to display, not the infinitely small spaces between them. Once I reviewed the mesh generation code I already had and looked at how I was tracking the progress data this approach really fell into place and I feel like I have a better grasp of how a mesh and a texture map to eachother. The pointy bit and borders on the smaller gauge are done with a shader, the dot is just a copy of the renderer for the player that I move with the progress.
Check it out live in my latest build. Maybe turn your volume down because my 'music' is a little rough.
With some recent incremental builds that I've been sharing amongst friend I've worked out a fair about of small changes to the core gameplay of From The Sun that have really improved the feel of the game:
- Removed ammunition limit. It wasn't serving a purpose in terms of gameplay, I just added that arbitrarily because it felt like part of how ammunition 'should' work.
- Player color always moves towards ultraviolet on the spectrum when collecting ammunition photons, previously it could go up or down based on the color of the ammunition. That wasn't intuitive and now the behavior is more in line with an intuitive expectation.
- Shots do damage based on their color. Previously player color had no efect on attacks, I had considered using different attack types, such as spreads of shots, for different player colors. Again, this complicates behavior and expectations for the player. By changing the damage of shots the player does not have to have the expecation of that to make use of it, but with that expectation they can make better use of it.
In addition to these smaller mechanical changes I've been updating the tools I've been using to design levels. I was limited to placing individual prefabs in Unity, of which I had created some using splines. I added support for editing splines directly in the Unity editor and I've been able to make much better shapes and layouts for debris clusters. Speaking of debris clusters I also changed the way the planet is put together, now it's a composite of small objects instead of a single large one. It makes breaking the planet down more satisfying.
I've also been learning more about making music with LMMS and it's a lot better on the ears that the previous builds have been. The improvment in the sound quality is primarily from switching from pretty pure tones to sounds created by the triple oscillator provided with LMMS. The sound effects need the same treatment.
Overall the game is getting to a good place and I'm ready to focus more on building out levels and improving the audio and visual assets..
Link to latest build