Solaro Dev Blog

Don't fear, the Solaro Dev Blog is back in action on the new iDevGames forum!

It may have seemed quiet for the last week or so, but it's because we're working on some great new AI behavior for Solaro.

We've set up a small test village that is modeled after what we think the starting area will look like. This area has three landing pad, a warp gate, and a few mission related items. We've got a set of ships that fly from one landing pad to another, trading commodities between locations. We've also got a set of patrol ships. These patrol ships intercept other ships, chosen at random, and inspect the cargo using scanners. If they find any contraband, they attack the targeted ship. So how do we do it? With a state-based AI system:

The States:

The Seek State: Ships in the seek state simply move towards a specific point. When they get within a certain distance of this point, they will go to the next state in their list. Oh, and we’ve also got some nice obstacle avoidance, so they’ll fly around asteroids and obstacles.

The Wait State: This one’s easy. They’ll wait a certain amount of time before going to the next state.

The Pathing State: This is somewhat similar to the seek state, but it allows for flying through a set of waypoints. What’s the difference? With the pathing state, we can specify the desired speed and direction through each point, and the ship can fly through them without stopping at a specific point. It’s more powerful and flexible.

The Attack State: Kickin’ ass and taking names… and we’re all out of names.

The Patrol State: Fly around a specific point at a certain radius and certain speed. If enemy ships come close to the point you are patrolling around, attack them. If they flee, go back to your patrol point. (So already this has proved very useful in missions)

The Intercept Target State: Intercept a moving target, and in this case, scan it’s cargo.

So if you're not impressed yet, it gets better! We can combine these states for UNLIMITED FUN. For example, our basic trading cargo ships do the following: First they start off in a seek state, going to a random landing approach point. They get there and stop, and they automatically go to the next state we've queued up, which is another seek state to land on the actual pad. After that, they go into the wait state for 3 seconds and it loops over. We've got a simple "DamagedBy" method that will cause these ships to switch into an AttackState to attack whoever damaged them. So it's very easy for us to customize these behaviors- to make a trader that will flee when attacked, mission specific patrols, and all sorts of good stuff.

With a lot of the core gameplay of Solaro roughed out, we've started work on generating some content. This step is key in figuring out the "flavor" of the world and direction of the game.

Here we've got a set of missions near the starting area. I think there's some good variety. We have a new set of art- we've got 10 different space buildings. These add a lot of flavor to the area and make places recognizable and unique. We'll show more about those later!

This mission string starts off simply- just by shooting some asteroids. After that, there's some exploration, finding core samples off a missing mining survey ship, destroying the pirates around a new ore location, and finally setting up a new mining base for Rock Busterz.

Scott has been doing some excellent work, and he’s put together fleets of ships! A fleet is a set of ships that will fly together in formation, and generally look out for eachother. Firing on one ship in a fleet will get the whole group angry at you.

Here we’ve got a 3 fleets on screen, and the player (the green triangle) has a few escorts. Already some of the independent traders have been engaged by another group- probably pirates. The IFF system colors them yellow, since neither party is hostile to the player yet.

We’ll have more information about the faction system in our next post!

We've added a faction system to Solaro. I hinted at it in a previous post, but now I'm ready to explain it in more detail.

Factions provide a lot of flavor to the world. It's part of the setting, but more than that, it provides a new way for the player to interact with the world. Different factions will be set to be at war with each other- other factions will come to the aid of their friends.

Meanwhile, the player is in the middle, and their actions will influence how the other factions view them. Running missions can affect your reputation with different factions- and who you blow up also has a significant effect. All in all, this is a pretty typical system- but there's one concept we've found that very cleanly offers some advantages.

The player has separate temporary and permanent reputations with each faction. This offers a great balance between making yourself a permanent enemy of a trading corporation or just angering a single member. If you're in good standing with a faction, a few accidental stray shots won't anger them too much. However, a full blown attack will always have some response from the attacked fleet. Really good relations will cause them to overlook a few destroyed vessels- they give you the benefit of the doubt. But with repeated attacks, they will eventually decide to destroy you on sight.

One thing we've been focusing on while creating Solaro is to tell a story without large paragraphs of text. While there's no denying that a rich world can be created with just text- but it's not the experience people are looking for in this sort of game.

Our goal instead is to use small amounts of text and to shape the world around the quests instead. Psychochild summarizes the problem nicely in his blog post:

Many players say they want an engaging story.

Most players skip the boring text anyway.

Reality dictates that quest text will be limited.

The point Psychochild makes in his post is that players don't know what they actually want. This is 90% correct- but I'd rather say that players know what they want, but they have the wrong idea of how to get it. More (or even better) quest text is an obvious solution, since it stares you straight in the face. This is especially in games like WoW, where the quest text is 99% of what makes collecting boar snouts different from collecting murloc eyes. So let us step back from the traditional quest "text description, action, text and reward" model.

Often, showing is better than telling. The downside, of course, is that doing anything other than blocks of text becomes a lot more work- especially where art comes in to play; that's been our traditional weakness.

So far, we've had good luck with custom scripting on our quests. Since you're doing something reasonably different on each quest, they feel very unique. There's more variety than changing a block of text can provide. (We'll also won't have 8393 quests, which is the current quest count in WoW) This is also playing towards our personal strengths. It's easier for Scott and me to script something interesting than to make art or elaborate text stories.

Oh, hey, I missed your post, AnotherJake. Yeah, that's a good quote. I think it applies to quest text too in just about every game.

I've forgotten to post here in a while, so here's a new post!

ile ago we purchased a really nice set of turrets from 3dRT, and we’ve got them in game now as our weapons! They’ve all been fitted to work on our rotating turrets and fit nicely on our ships!

One other advantage of these models is that they all share the same single texture. This saves us texture memory and context switches within Unity. It also allows us to combine several meshes into a single mesh that uses the same material. This can significantly save on draw calls and allow us to draw an impressive number of highly detailed custom ships.

Another nice feature is that we can swap out the texture to reskin ships by their faction. The above graphics show off the “red” look, and we can adjust this highlight color. For example, here’s the same weapon with a grunge look:

Since we've been pretty busy these last few months, we wanted to share what we're currently focusing on with Solaro. Solaro: Skirmishes is a space flight simulator action game that focuses on arena based combat. As you win each arena, you are awarded new components, such as weapons, shields, missile launchers, and hull pieces to add to your ship.

This gives us a great testing ground to see what kind of combat is fun. We can test the balance between different weapons and shield setups. Our previously mentioned mission system allows us to easily create a variety of different sorts of arenas.

Right now, we're just showing off the basic framework of the arena combat system. We've retooled controls and redone a lot of artwork. There are still a few rough spots that we're redoing, but this is a good example of what's to come.