Friday, March 01, 2024

Project 21 - Code Doodle - Swarm Doodle (Introduction)

It’s been a while since I’ve built anything interesting in the Artificial Intelligence field and with all of the neural network / transformer / LLM nonsense going on right now, I wanted to go back to one of the parts of AI I love, swarm systems.

If you haven’t heard the term before, boids are a generic model for the way organisms swarm together. Think fish in a school or birds in a flock. Each animal has a pretty simple set of things its trying to do but sometimes the overall effect can be breath taking; think of a huge murmuration of starlings at twilight. Boids -- think they fly like a boid -- are a way to model how bunch of simple agents can create a very complex behaviour, and how small tweaks to an agents behaviour can change the way a whole system performs (think starlings compared to geese). They're a very old addition to the world of artificial intelligence, and they've also been extreamly important to the world of film making.

Walter Baxter / A murmuration of starlings at Gretna / 

That being said, it’s been a very long time since since I’ve messed around with swarms (or boids) and I’m quite rusty and -- as I think is a theme here -- my vector math always seems to be just a touch insufficient. So, I’m going to write a short series as I go about putting my swarm system together.

I’m not going to go into all of the details right now, but I’m going to roughly follow Craig Reynolds Boid model. A lot of the details aren’t in the original paper and the content in the Wikipedia article is slightly out of line with my memory, so I’m going to bushwack from what I have to a hopefully working swarm system (rather than do more reading right now).

For this doodle, I’m taking my pre-existing moving agent code -- which I always wrote with an eye to doing a swarm system and expanding on it. To start I have little circles that try to balance being between the mouse and the middle of the screen. To build boids we’re going to have to expand that a little and add in a few more things to do.

I’m trying to stay close to Reynolds model for now, although there’s lots of fun to play with later on. I’m going to set up three “urges” for the boids, a separation urge -- “I’d like to not crash”, a heading (or alignment) urge -- “I want to go where everyone else is going” and a cohesion urge -- “I don’t want to be the only one out where I can get eaten”.

I’ve been working on this for a while -- and then not working on it for a while, so I’m starting to write with the intention of kicking myself into finishing the project. I’m about halfway done putting everything together -- which you'll notice when you look at the code in the repository, and I think I’ll write this up in four or five posts over the next few weeks. Once I get the basics done, I’m looking forward to all the other things I can play with.

Friday, February 02, 2024

The Books I Read - January 2024

I enjoyed making the infographic style reading updates in 2023 and I'm continuing on in 2024. I've automated a couple of things in my tracking process, so I'm going to update a little bit about how I track and organize these this year.

One thing I'm adding is a count of "pages". I'm trying to keep them kind of even between books so I'm taking the "Kindle Edition" page count for each book. (Although my brain does not like the fact that Daniel O'Malley's Blitz is *longer* than Vinge's "A Deepness in the Sky"). I'm using the page count for the weights for the Author infographic, but I'm not sure that does a great job of balancing all the authors. Katie Mack seems at a huge disadvantage.


Stats for January

Reading Stats

Books Read - 12Pages Read - 4742

Authors - 12 (50)

Author - books read - pages read

Andrea Penrose - 1 - 370Daniel O'Malley - 1 - 688
Elly Griffiths - 6 - 2207Ilona Andrews - 1 - 333
Jacqueline Winspear - 1 - 352Katie Mack - 1 - 237
Vernor Vinge - 1 - 555

A word cloud of all the authors above. Elly Griffiths is very large in the centre and the others are clustered around in roughly the order I read them.January 2024 Author Cloud


Publication Range

Earliest Book - 1999Most Recent Book - 2023

Publications by Decades

2020s - 22010s - 9
1990s - 1

Source

Borrowed From Public Library - 10Shared with Friends - 1
My libro.fm Library - 1

Formats

Audio Book - 5eBook - 7

Thursday, February 01, 2024

The Video Games I Played - January 2024

So this is the new monthly games post.

At this point I've captured two things. Which games I've played and which games I've played "intentionally". I'll probably expand this as I go, but I wanted to do something a little different and give myself a bit of an interesting look. I'm not quite sure I've achieved a look I like either, but again here's a starting point.

Which games I played is self explanatory. Which games I've played "intentionally" is a thing I'm not that clear on myself, but Sea of Stars and Final Fantasy XII are the two games I made time in the evenings to sit down and play. Other games on this list, I didn't choose as an intentional activity, so much as thing to do to rest for a short or long moment. That's a thought I'm still working on and I'll see what makes sense as we go. Games are more-or-less in order of when I started playing them from top to bottom.

I finished and "completed" Sea of Stars, so I tried to add some iconic indicators; an end dot (from sequence diagrams) to signify hitting credits and a "golden" glow to show "complete". 

(Complete goes in quotes because I could probably do more, but in this case I found the "true ending". True Ending goes in quotes because what is truth in a video game.Golden goes in quotes because I'm not great at finding colours and faders in Omnigraffle (which I used to make this).)


The Games I Played in 2024

Tiles representing video games laid out in two rough semicircles, an outer green one and an inner blue one. In the blue one, the Sea of Stars link is attached to a circle with a golden glow. There is also a tile for Final Fantasy XII. In the outer circle there are tiles for Mario Kart 8, Invisible Inc., Super Mario Odyssey, Dicey Dungeons, Europa Universalis, Into The Breach, Prison Architect and Hollow Knight.

As I mentioned, I finished Sea of Stars and wrote up some things about it. I've played quite a bit of Into the Breach especially as a background thinking game. It's (sort of) easy to dip into and out of, especially while I'm working on a project. I've really picked up the rhythm of it and I'm really having fun with it. As always Mario Kart is great to sit down and quickly jump into something to redirect your brain and your hands. ... Also "Vroom".


Like I said, this is evolving, but I kinda like the shape. Does it make sense? Is it interesting? Is there something else that would be good to know? Feedback is appreciated.

Friday, January 26, 2024

Things about Sea of Stars

When I saw the first trailer for Sea of Stars, I thought, “That looks like they were thinking about Chrono Trigger”. Having now played a few dozen hours of Sea of Stars, i can tell you that the creators were thinking about Chrono Trigger and a lot of other SNES era games as well.

Loading Page: Valare and Zale standing in a neon fantasy landscape with the moon behind them. Magic whisps glow around their weapons.

I’ve talked about this a bit in my Games of 2023 post, but when Chrono Cross came out, I was always disappointed that it didn’t expand the things I loved about Chrono Trigger. Sea of Stars plays pretty much like how I wish a 1997 sequel to Chrono Trigger would have played. The world is beautiful it’s fun to run around in, the combos and the combat make sense and you get to root for your heroes to succeed in an easy, uncomplicated way.

I really recommend Sea of Stars to anyone with SNES nostalgia, but I think anyone can love the game and it seems to me like it’s a pretty good game for a younger person, although it does touch on things like death and loss.

Here are a few things I thought about Sea of Stars. Please beware of spoilers, both for the whole of this game and for a little bit of “The Messenger” as well.


Things I Liked


I’ve mentioned that Sea of Stars is a Chrono Trigger tribute, but moving through the world actually feels like an evolution of "Illusion of Gaia". You get to move fast, drop long distances, mantle up cliffs and hookshot (sorry, “graplou”) across bottomless pits. Just moving around feels really good and traversal is always interesting.

The puzzles in the game aren’t particularly taxing, but they feel like just the right amount of challenge. You almost never have to stop moving forward, but there’s enough resistance that you always feel accomplished as you run. The challenges always felt fresh and I didn’t feel like there was much that was reused from other games. They use a lot of block pushing puzzles, but these feel the same way, interesting, not too hard, and always clever.

Screenshot: Valare, Zale and Garl keep their balance as they walk across a rope stretched over a tall waterfal.



The combat in Sea of Stars really shines. In a lot of turn based RPGs it can be easy to develop a strategy that’s good enough for most of the fights and spam that over and over, at least until you get to a boss. Things like attack type or conditions aren’t often worth factoring in, but in Sea of Stars they really shake things up and make each fight in the game interesting.

The game uses “locks”, which are stronger enemy attacks, that you can stop by hitting the enemy with the right combination of damage. You might have sharp and blunt, or lunar and poison or three sharp, three blunt a solar and an arcane. If you hit all the types of the locks, then the enemy doesn’t attack that round. At the same time, other enemies are just counting down to their turn to attack and you can’t stop them.

This makes the combat decisions important. Do I hit the lock and stop the big attack or go for the weaker enemy and get it out for future rounds, do I go for the one that’s about to hit us next. There’s also a well designed push-pull between using your regular attacks to charge up your special attacks and keeping resources in reserve so that you can hit the locks.

I was pretty much never bored in combat and this system made it so that fights with mobs in the middle of the world need as much attention as the boss fights (and are sometimes harder). Different combinations make different fights feel different, and when a boss trots out a 10 point lock you really feel like you’re about the get crushed.

Screenshot: Valare, Zale and Serai fight a witch who has a huge lock with many types of damage needed. They're in a dark and gothic looking place.

Combat also serves to reinforce the characters in the game. Garl, who is your heart and plot driver, is a “Warrior Cook” and he loves to meet people and feed them. In combat, he’ll heal you with a snack or if he has to fight he’ll whack them with his pot lid or a pressure cooker bomb.

Overall I find the characters quite likeable, one of your team is hoping that you’ll come back to her planet and save them -- which turns out to be what you need to do to to beat the big bad. Another from that other planet is basically the kool-aid man and he’s here to punch things as hard as possible.

You have two playable protagonists Valare and Zale and you can choose which one of them you run around as in the world -- although you control everyone directly in combat and they’re both present in all of the cut scenes. They’re both good and good people, but they tend to have the same emotions at the same time and while not, silent protagonists, a lot of the feeling of adventure and travelling the world is left to the rest of the playable party (especially Garl).

In your party you also have a ninja/pirate/cyborg from another planet, who is often the character who has the knowledge necessary to save the world that Valare and Zale lack. You also have the soul in an unbreakable glass body (named B’st) and The Alchemist, who has lived so long as to be basically god, and is the brother to the big bad “Fleshmancer”. The Alchemist despite having made the world -- at least I think he made the world -- has to limit himself to your level for story reasons and later on has to step out and leaves you with an identical puppet of himself.

Still they’re an interesting group and they’re surrounded by a good group of people, such as the non-ninja pirates, some of whom are ghosts, and who are in every tavern in the game playing music from around the game -- because this is an indie game you can collect and give them more. You also have a travelling historian, who is able to tell you stories when you find significant artifacts. One of the moments of the game I found touching was very late in the game where she asks you to record your histories.

Screenshot: The whole party and their friends are gathered at a banquet with several roasts and cakes spread out on the long table.

The game is also really beautiful. The backdrops are lush pixel art and feel like the perfect successor to SNES games. I don’t know that I love the style, but I appreciate the style and I really like the way the world feels and how everything works together. They also play a lot with lighting and that just serves to make the game look even better.

Screenshot: Valare and Zale stand on an old wooden ship which has been repurposed as a bar. Palm trees, lights and flags are hung all around and it seems like a core part of the town.




Things I Didn’t Like


To be totally honest there’s not much I don’t like about Sea of Stars. It took me a while to compile this list, but I found a few things that I didn’t really like.

The first is that there’s no fast travel. The world is small and you eventually get the ability to traverse it very quickly, but if you are standing in one town and you want to be in another town you have to leave town, fly across the world, land, walk into town, and go to where you needed to be. If you need to switch worlds you also have to land on your ship, travel in to the wormhole, travel out of the wormhole, and fly again.

I’m usually a happy proponent of having the travel be as authentic in world as possible -- especially if it’s interesting, but there are some treasure hunting things they want you to do in the late game and it really became a slog to get anywhere, especially if you had to travel back and for several times, and especially especially if you didn’t quite do the thing you had to do, so you don’t even get what you’d expected.

Screenshot: In a desert with techno vibes, Valare and Zale and Resh'an's puppet are looking at a huge speedball capsule.

That has a very silly additional point in that when you are on the world map, you walk *very very slowly*. I don’t know why, in the dungeons and towns you get to dash around and the movement feels awesome, but on the world map you trudge along. They’re trying to call back to the world map of Chrono Trigger, which is cute, but for some reason it’s just slow. The map is pretty though...

Screenshot: The map shows the sleeper, a dragon wrapped around the mountain and the Town of Brisk visible off to the east.



The last thing I didn’t like is that the townie non-playable characters don’t get much personality or even names. When your heroes leave town, Villager 1, Villager 2, and Villager 3 tell them how loved they are and that everyone in town -- basically identical clones of each other, of course -- will miss them.

I know the developers had a lot to do, but having a little more personality in the background characters would have helped make the world feel bigger and richer and also maybe helped make the story feel a little stronger and more connected.




Things I Noticed


I found the story of the game interesting, I didn’t love it, but it has a lot of appealing qualities. In short it’s a good fit for a game version of a Young Adult novel, which again if you look at the SNES games it reminds me of seems right. Chrono Trigger, Illusion of Gaia, Secret of Mana and even the Final Fantasies have stories that are meant more for younger people. So  I think this is a great game for a younger person to play and it’s a lot more upbeat than “Eastward” even if they have some similar vibes and influences.

Where I think there are a few more problems is that the game is also tied into its predecessor “The Messenger”, which is set in the same world (more-or-less) but thousands of years into the future. A character goes in exile so as to avoid the problems of the world, they’re not forgotten, they’re in “The Messenger”. On the other hand, Valere and Zale are forced to learn to weave (or sew?) at the beginning and that’s just never mentioned again. I’d rather figured there’d be a part of the final boss fight, or the real final boss fight where weaving turned out to be key, but it’s just a “miserable thing we had to learn in magic warrior school” that’s out of the plot a few hours in.

(Spoilers intensify)


Where I think the creators of Sea of Stars really got things right is the death of Garl. In a Chrono Trigger reminiscent scene Garl sacrifices himself to protect Valare and Zale and he dies. And he stays dead. Until the ending. Valare and Zale mourn and the world mourns, everybody loves Garl, and the game lets you sit with that sadness.



I find that unusual, there’s a lot of games where they do a “Haha, only kidding” death, and your character pops back up an hour later and who are you to have even worried about it. Here they stick with it, they make it meaning full and I appreciate that.

I also really appreciated that they gave a lot of warning in the story. There’s a cloud … mist .. which can tell the future and he warns Garl and tells him what he needs to do get more time. There are other things as well, but once Garl realises its the moment he’s able to ask The Alchemist who’s there with them for more time, from then on for as long as Garl has purpose he will remain in the world, but he’ll pass away as soon as his mission is accomplished. Garl uses that time well and intentionally and with his usual charm and grace, but then job finished, he dies and Valare and Zale take him back home and bury him under his favourite tree.

You then travel on, meet new people and sometimes talk about Garl and they say they’d like to have met him. You finish the game and Valare and Zale go off to protect the universe, but they come back home once a year to visit Garl’s grave. The ending feels satisfying, but definitely sad.

(SPOILERS INTENSIFY)


Then, as you start thinking about New Game+, the game challenges you to finish up. You don’t have to complete everything, but there are a bunch of important side quests and collectibles that you need to go find and if you finish all of the objectives you get the option to open up a hole time in and space. Valare and Zale and their unbreakable glass buddy B’st, end up right back at the moment of Garl’s death. B’st trades places with Garl, but being unbreakable just pretends to die. Garl returns with Valare and Zale and they go and dig up B’st from Garl’s grave. And now Garl joins the whole party as a Warrior Cook who really kicks ass -- seriously he’s functionally more powerful than everyone else in the game. Like when Garl died, the game gives you a moment to absorb and celebrate, and then you get to go wrap things up again.

Now when you get to the end of the game, rather than letting the big bad wander off. Garl gets in his face and you fight the true boss and get the true ending. It’s a hard fight -- although I may just be bad at it -- but very fulfilling, plus there’s just something very funny about Garl being able to just toss this guy who’s been an existential menace for the whole game.

So it might feel like an ass pull, but for me, especially the extra work they make you do and the fact that you have to finish the game once without Garl really made the story feel right to me. Now when you see the guardians return on Garl’s birthday, Garl gets to enjoy it too.



The other thing I’ve thought about a lot is the designer’s choice to use timed hits -- did I mention they called back to SNES RPGs?. They open saying that the timed hits are totally optional, but they’re not quite. I found that if I missed the block or the bonus damage, or primarily the extra hit to the lock, it was a big deal. I think they’re a good choice, but I wish they’d be acknowledged more and the optionalness been managed in a different way.



I have some concerns about choosing the difficulty generally. As I said, I found the game to be just a little easy, except for the bits that were hard. I’m 40-something now and my hands don’t work as good as they once did, disability is a changing thing and I’d like to see that acknowledged by more software. I think there are parts of the games that other people might have found harder or easier.

The developers address this, in a way I almost like. You can buy or find “relics” which allow you to turn things on and off, so you can turn on a relic that automatically allows you to do the timed hits, or you can get one that makes the enemies significantly tougher. Those are great, and they have quite a few, but they’re found in the game and I feel like those need to be in the hands of the player up front, or when the game says, there are timed hits, but they’re optional, display a list of options for how you can modify them. Finding them in shops, even if they’re cheap might make sense from the perspective of story telling or immersion, but I think we need to put all of the game play options we have in the hands of the player and trust them to make the right choices from the start.

This feels a bit low, but I’ll also point out that they wouldn’t need a relic to tell you if you got the hits right if the sprites animations read just a little bit more clearly.


Things I’d Include in a Game

 

The biggest thing I’d be influenced by in Sea of Stars is just how great the traversal is. Playing games like Hollow Knight or Super Mario Odyssey always make movement a joy, but it’s not a thing that I’d thought about in conjunction with RPGs before. Sea of Stars is just a really fun to run around and they do a good job of giving you interesting places to run through the whole game.

The other thing from Sea of Stars is just how great a great typed combat system can be. I’ve written about how much I like the way conditions work in Secret of Mana and how typed combat has always been a bit of an after thought, or something that’s included in a game because it’s expected not because it makes it more fun. The typed combat is one of the things that makes the combat in Final Fantasy X so good. Most designers have left it out of newer games or minimised it, but I absolutely love the way the Sea of Stars team pushed it to the fore and used it to make every moment of combat meaningful.







Final Things


I really appreciate Sea of Stars, it hits all of my nostalgia buttons and I think it’s a great game on its own. I also love that it feels like an entry point to games and RPGs that echos the early / mid 90s games that I entered games with. I really appreciate the time and the effort that the team has put in, they’ve made a game that fits together perfectly and I appreciate that the size is just right to appreciate how the game fits together.






The Books I Read - November 2024

November was a bit weird. The Hands of the Emperor is long, but excedingly good. I'm continuing to find Anna Lee Huber a very engagin...