Astro Heart by quasilyte
Astro Heart is an auto battler game where vessels are programmed with a simple visual language.
This game is inspired by a Carnage Heart game. Made with Ebitengine - a game engine for Go.
| How to play | |---| | 1. Choose suitable equipment for the level at Hardware screen | | 2. Configure your vessel behavior at Software screen | | 3. Test your Hardware+Software combo in battle | | 3.1. (a) If you win, the level advances | | 3.1. (b) If you lose, repeat the steps until your bot wins |
Some hints:
- Hover over any UI element to get tooltips
- There are 6 levels in total (the final boss is at level 6)
- You unlock more hardware options with levels
- Vessels get damaged while flying out-of-bounds
Level 6 is beatable, but it's very tough and it will require some luck. It's intended to be a final challenge that allows you to play the game for longer (because the first 5 enemies are not that complicated).
https://www.youtube.com/watch?v=csgGO7hh-QM
Tools used:
- MilkyTracker
https://www.youtube.com/watch?v=se7sNm6sieM - sfxr (sound effects)
- Aseprite and GIMP
- VSCodium
- Ebitengine (game engine for Go)

| Screenshot 2 | Screenshot 3 |
|---|---|
|
|
|
| Link | https://github.com/quasilyte/ld55-game |
| Link | https://quasilyte.itch.io/astro-heart |
| Original URL | https://ldjam.com/events/ludum-dare/55/astro-heart |
Ratings
| Overall | 133th | 3.63⭐ | 29🧑⚖️ |
| Fun | 185th | 3.352⭐ | 29🧑⚖️ |
| Innovation | 106th | 3.63⭐ | 29🧑⚖️ |
| Graphics | 144th | 3.611⭐ | 29🧑⚖️ |
| Audio | 141th | 3.315⭐ | 29🧑⚖️ |
| Given | 34🗳️ | 32🗨️ |
I needed to play with a visual programming part for my other game.
So in a sense, this jam was useful for me.
But as for this exact game, it's as good as it gets. :D
The system I ended up with for coding behavior could be better if I had more time. But at least I found a couple of things I like. For example, I like the idea of linear branches instead of a full-fledged trees for the logic. It's more limiting, but this pattern matching approach can make reading larger programs easier for non-programmers (because you just read them one by one, not as a whole tree). Or maybe I'm wrong and it won't scale. We'll see.
The argument/param stack was probably a dire mistake. It makes things harder without much benefits. I mean, it's a way to pass extra data to the instruction and it borrows from the languages like Forth or stack virtual machines (e.g. JVM), but there are better ways to do that. But I thought it could work pretty well in the beginning (I was wrong).
So all in all, I'm mostly interested in the visual programming part of the game than the auto-battler part.
World have been great if in the first level you just reach a target position, second is attacking target practices and so on.
Oh and maybe hardware would be purchased from loot rewards
The presentation feels super tight, it could be shipped in this state
The player could configure the behavior if they want to, but otherwise this system can be used to create tons of units with varying behavior using the in-game terms.
The visual programming part would become more of a mini game for a bigger scale game.
Although I can see a space battle game that rivals Carnage Heart, I'm not sure I want to make a game where coding is the central part (it should be an optional mini-game that is connected to the bigger game directly).
This prototype is just my way of experimenting with the idea. :)
It was a productive weekend in terms of testing out the visual programming aspect of my next project.
See my other comment above for some more context.
It's probably the most social activity (albeit online) I did in a while.
I hope you have fun too.
Other than that, I liked the variety of weapons and opponents. Very fun and there is a lot of space for different strategies. Great job!
A live coding of sorts would be pretty cool.
You know what. An on-the-fly program reload in that sandbox could be used for something other than combat. Imagine a "play sound" instruction that would trigger on some conditions. And maybe something to render on-screen notifications. That would allow a creation of programs that would do something interesting coupled with the game mechanics (movement, energy management, and other things that can control the branching). This kind of sandbox would be fun to have. I'm gonna write this idea down.
1. A bug with "rotate to point" that may take a longer route
2. A very floaty physics with high inertia
While (2) is fun, it makes movement highly unpredictable. I think it should be either reduced significantly or there should be some ways to counter it, programming-wise (like turn extra engine that would compensate for the current inertia).
Just another thought, maybe inertia could be tied to ship class or there could be different engines. So, for example, you can have more inertia, but more health or more speed as a benefit.
Btw, I remember your Auto Pilot game. We definitely "met" before on the internet. :D
Long time no see.
Anyway, this was awesome! I'll admit that upon seeing the software interface for the first time, I burst out laughing at how overwhelming it was. Still, after looking at it more, it was pretty intuitive. Trying out a bunch of strategies was fun - even if most of them failed miserably - and cheesing levels 4 and 5 by staying put and spamming homing missiles was really funny.
The balancing was a bit all over the place (like most compo entries), but it wasn't too bad aside from the aforementioned way too hard level 6. The extremely wonky and unpredictable movement made most strategies besides staying put/directly chasing the enemy seem unviable, which was a shame considering two of the three ships seem designed around such tactics. I tried creating a Pusher build, and it just failed miserably - I think the ability to push ships by bumping into them would've been nice. But again, totally understandable given the time constraint.
Also, as others have mentioned, it was very confusing at first. The delay before a tooltip shows up was a bit too long for my impatient self, so I didn't realize they existed until reading your description. Also, there was no notification or something when you unlocked new weapons, so I only discovered them by accident. And lastly, locking the settings and credits buttons was... an interesting design decision.
Overall though, I had loads of fun, and ended up playing it for like half an hour. Really great entry!
The movement is kinda broken, that's true. I wish I would spend 30 more mins to make it more predictable and enjoyable.
My friend managed to beat level 6, but it's not a fair level. It's there to add some real challenge to the game after you learned the basics. :)

Definitely an interesting concept.
I feel the out of bounds should work the other way. Could not think of any use for it as it works now, as it also pops the stack so if you want to use the value you checked for, you can't.
Anyway, super fun. Great job!
I never had enough motivation to fix it, but I actually did after this jam due to the amount of pain it inflicted. :)
It's also impressive how many features you were able to pack into the game given the time limit.
It didn't _really_ feel like I had much control over the ship, though.
Trying to strafe the enemy bullets using nothing but random
offsets feels pretty limiting, and I was heavily relying on flaws in the enemy
strategy when making programming decisions (something which did _not_ help me in level
6, which I was unable to beat). I think it would help if there were some math
operations available, like addition, subtraction, scaling, dot/cross product, etc.
Some other thoughts and things I noticed:
- "rotate towards" often taking the long way around is pretty frustrating to deal with, since it felt like it was pretty much random whether the ship would move in the way I wanted it to
- The tooltip delay seems a bit long. It might be better to simply not have a
delay before the tooltip appears, since I needed to check it frequently for
things like weapon range and timing.
- I couldn't really tell what units the lengths were in, so it might have been nice to have a message like "the arena is X units wide" or something, or even an on-screen ruler.
- It'd be nice to maybe have a way to look at the enemy software/hardware before
the round starts
- I couldn't tell which weapons were thermal weapons vs the kinetic and energy
weapons just by reading the description, and it was even harder to do so for the
enemies' bullets, which are just barely-distinguishable colored dots. I had to do a
series of test runs with each shield type to see which one was actually the most
effective.
All in all, though, it's a solid entry.
I kinda feel rough to put people through this.
But the bright side is, I managed to come up with some partial solution for my visual programming task.
Post-jam brainstorm with the "lessons learned" lead to the value stack concept elimination as it's both hard to use and understand (but it was easy to implement during the jam).
I wanted to check out your game but it seems that I already completed it. :D
I remember it being many-things-in-one experience. :D