Prototype v0.4.0
Story
I've started work on a narrative to tie the game together along with characters that also bring their own abilities.
The character portraits were taken from Captainskolot's character packs. I'm playing around with the mixing of pixel art 2d and low poly 3d. So far I'm liking how it looks but it might not really work. However that's why I decided to use someone else's high quality portraits before I spent days attempting to make my own worse looking ones which would definitely not show it in the best light.
Alice | Bob | Caesar | SST Control |
Power Up | Split | Time Slow | Not playable |
The story involves time travel/time manipulation which is the in universe reason why you can replay levels. So I wanted to tie the ability to replay a level with a reason to choose a character who has their own abilities.
Abilities
The three main characters, Alice, Bob and Caesar each have their own abilities that can be triggered multiple times per level to help you out in different situations. There are also levels that involve selecting multiple characters so you can effectively mix and match multiple abilities at the same time.
So far the three main abilities are:
- Power Up: Temporary levels up all tanks 1 level as if they had been upgraded. This also means there's a special extra level of each tank that can only be unlocked with this ability rather than bought.
- Split: Each weapon can specify how many projectiles they will fire whilst the split ability is active, but in general for most it will double the projectiles, and for the gauss tank it's up to each level to pick a higher number that's not quite double. These extra projectiles affect the accuracy however, as the firing angle is adjusted to fit the extra projectiles. So you can fire multiple lasers at once, but they won't be going directly at where you were targeting.
- Time Slow: Temporarily slows down time for the rest of the world except for your tank's projectiles. This was the trickiest one to implement, making sure the physics of the projectiles and enemy movement behaves whilst undergoing different time scales. Plus the visual effect was also fun to implement. It uses a plane that captures the currently rendered image and applies a saturation effect to everything within it which isn't the whole screen.
Level Replaying
The ability to repeat a level is gate until Caesar is unlocked which is intended to be tied into the story.
One thing that is still yet to be fully implemented is multiple bonuses for repeating a level. Ideally I want to have it where there's an unlock for simply finishing a level the first time. A bonus for completing it without taking any damage and perhaps another bonus for repeating a level. But it's that last one that I'm not sure about, like if a player is successful in winning the first time but they don't get all the bonuses and they just have to repeat the level that feels bad. So I'm thinking there needs to be an optional more difficult version of a level to repeat to unlock something else for that to be worth it.
So I think more realistically that it will just be the two bonuses, one for finishing and one for doing it without taking damage. Which means if you do everything right the first time you'll be fine and won't need to repeat a level if you don't want, but the level repeating feature will allow you to fill in the gaps later.
That said I know there will be some players who will not want to move on if they cannot win the first time, so I won't be making a point of the fact that there are bonuses if you win without taking damage until the level repeating feature is unlocked, hopefully so they won't know they're missing out until they have the ability to do something about it.
The level repeating feature is also unlocked in the 4th level, with each level up until that point being fairly short. Hopefully within playing for about 15 minutes they will have unlocked the feature anyway as I didn't want to gate this feature for long, and rather only wanted to make it both tied into the narrative and also keep the player moving along instead of potentially worrying about the first few levels and being perfect immediately.
Story Unlock
Another aspect of the level repeating is that it will give each character more time to talk about themselves and learn about each other more. As the script used to power each level will know how many times each character has played the level, if the level is being played for the first time and if there are any other flags that have been set, potentially in other levels. I'm hoping that this gives players a reason to replay a level even without the bonuses, which will probably mean that it will also force me to keep levels relatively short. If a player wants to see each characters dialogue they won't want to sit through long levels in order to see it all.
Level Scripting
To power the scripting of each level, mostly the levels dialogue I decided to use my own scripting language Lysithea which is a Lisp like language that's fully implemented in C# (and C++ and Typescript). It's quite small but it also means that since it's plain C# there's no issues exporting to mobile or WebGL which was also the main goal of it.
The other main benefit of Lysithea is that it's very easy to control it's execution, so writing to control dialogue along with pausing is easy.
This is a portion of the script for the first level. The functions called levelStart and levelEnd are special and are automatically called. As each line is displayed the scripting virtual machine pauses and only continues once the player continues the dialogue. This can also be used for dialogue choices and reacting to what the player chooses to do next.
Creating the Time Slow Effect
I wish there was an easier way to share shader graphs, but the effect is made up a few main components.
There's the hexagonal edge which is handled in a subgraph which outputs the colour of the hex edge, as well as the inner section of the hexagon. And then the main saturation effect which is taken by saturating the scene colour (so this has to render late in order to capture the scene colour) and then combining it with where the inner part of the hexagon.
The tricky part was mostly around rendering it at the right time to saturate most of the scene but leaving the paraticles alone so that there's still a splash of colour, and to make sure that the projectiles that aren't particles are still rendered late enough to avoid the effect. Then this is just placed on a quad that sits above the planet that the player is currently situated on.
The rest is using some noise to make it that the hexagon doesn't just have sharp edges.
The subgraph creates two polygons of slightly different sizes and multiples the smaller one by the 'one minus' of that to get an edge. Which is also useful because that gives us where the inner area of the hexagon is.
The noise uses two calls to some simplex noise functions from keijiro at two different scales and offset by time.
Video Devlog
Files
Get Space Strife
Space Strife
A chaotic space shooter around defending a planet using tanks!
Status | Prototype |
Author | Alan Lawrey |
Genre | Shooter |
Tags | Shoot 'Em Up, Space |
Languages | English |
More posts
- Prototype v0.3.0Sep 23, 2024
- Prototype v0.2.4Aug 20, 2024
- Prototype v0.0.2Aug 20, 2024
Leave a comment
Log in with itch.io to leave a comment.