As I mentioned in the weekly meeting blog, I’ve been working on a new feature for the star sonata server, that I like to call the “global event system”.

My goal with the system, is to bring back some sort of coherence between the AI in the universe. Currently while we have multiple types of ai (from trader, to miner to pirate etc) you can’t really see their difference and in some case they don’t work nearly as well as before.
This is mostly due to the fact that those AI work alone and only have access to their own data. While this was fine on a small single layer universe, as the universe grew they became unable to achieve their objective on a reliable basis.

There is also the problem that, since the ai are unable to do their specific work, they don’t feel like they contribute to the universe other than just giving xp and drop when killed and being target for some missions.

The global event system will in essence be the part that regive AI their purpose by providing them with specific “events” (in most cases, event that both players and ai can participate in).
Every event will have some kind of indication somewhere (maybe a rumor section in ai base, or global message, or could even be random ai talking in gal chat) when they happen.

The reason it is needed and i can’t just improve the ai to do it on their own, come down to complexity and performance. Ai like most of our objects, are restricted to accessing what is within their galaxy. There are exceptions to this, but those exceptions must be very short on cpu load.
The calculations needed to properly generate those event and keep them controlled is much larger than we can realistically fit without severely slowing down the server.
The global event system will be a system that slowly gather all the informations needed to generate those event, in one place that only it can access. Then in a separate thread analyse that information to figure the best event to initialise if any.

Currently there is only 2 of such events being created, but more will be added overtime as the system become more complete.

* The first event, is a trading event. The system will find source and destination trade routes that are profitable, then create a temporary / limited event where if you buy the commod from the source, and sell it at the destination at a guaranteed profit and make up a story explaining the route (rats ate the rations, workers are depressed and the likes)
** To ensure that only items bought from the source during the event are considered, a new type of item will be created. Name is still to be decided, but basically will be a special type of crate containing the commodity.
*** The crate has a commodity defined inside.
*** when it is bought / sold it remove / add from the stock of the defined commodity
*** when the event is over the crate would transform back into the normal commodity automatically. To ensure you cannot stockpile those items to screw with the event later on.
** During the first half of the event, the source will have its stock replenished multiple times (specific will depend on the event), and the destination will buy infinite.
** At the last half of the event, the source will stop selling the items, but the destination will continue buying until the event is over. This is to make it as easy as possible for trader to actually sell their goods, while still limiting the source / credits input.
** The event will sell and buy those item higher than the normal highest price for those items, so mass buying them to sell the regular commodity later is a bad idea (you’d be guaranteed to lose money)

When this event is active, all trader, pirate and regular police ai that are within a certain distance of the route, will participate in the event.
* Trader ai will obviously, run the trade route (buy at source, sell at destination
* Police ai will patrol the route attacking whoever attack the traders
* Pirate ai will attack trader that they feel they can defeat if the total level of the pirates in the galaxy is higher level than the total level of polices. After killing a trader, they loot and sell the items to the destination then rinse and repeat. If there is too many cops, they will simply patrol until conditions are ripe.
Players with some of the item in their inventory will be considered traders by the pirate ai.
Players who attacked a pirate recently will be considered police by the pirate ai.
If a pirate is attacking a trader and then killed by player, the trader will reward the player part of the profit he made in the event (if multiple players are involved, then it is split using the same formula as xp)

* The second event, is a war between ai team kind of event. It’s a pretty straight forward event. Similar to the trade event, an indication of this event happening will show up somewhere visible, either the ai gossiping about it, or the bulletin board etc.
** in the first part, 2 ai teams of similar strength will regroup in 2 galaxies not too far from the battleground. Extra ai will be spawned to ensure the match is interesting to watch
** once enough of the forces gathered. They will be set to hate the other team and all rush to their target galaxy.
** inside the target galaxies, a few drones for each team will be spawned. Those drones will give 2hours long aura boost varying depending on the ai team (could be based off an average of their gear value count etc)
*** one of those drones will grant splash / chain damage resistance and disable death blossom (sorry gunners, but this would be way too easy if you could just instant splash one side). This effect will be ai only.
If a player attack one of the 2 teams of ai, the other team will invite him in a squad. If the player accept, he will then be squadded with the team of ai he sided with, and receive those 2 hours long aura boosts as well as shared xp from the kills.
Once the galaxy only contain one of the 2 ai team. The war is considered over. At this point, the winning team will see its spawn number in the galaxy doubled for a period of 2 hours (so if you have a mission / drop that you want from one of the 2 team, you might want to make it win).
The first part (call to arm) will last around 30 minutes. The fight will be balanced to last about 1 hour. Altho player intervention can make it much shorter.

There is a 3rd event that i have been thinking about, which would be pvp related (bounty hunting event) but it is still on the drawing board and nowhere near ready to be announced in detail. We will first have those 2 events implemented and running for a bit before we make one that could have a much bigger impact on players gameplay.

Jey

Worked on the global event system, will make a blog explaining it more in details soon.

Blue Dwarf

Not much improvements to the item viewer for this week I’m afraid, starting to hit the first wave of coursework for this semester at university and I’ve been working on specifying how the back end would work so the script can be written. Then I can do everything else needed and not have to redo it.

Here’s another screenshot for kicks though, some minor improvements are visible from last week, noteably better titles and some styling of the table.

Ryan

Lots of little fixes last week. I made it so that only wild space gals are counted for the universe “civilized” state, which we slipped live a couple days back. I also fixed the mining resists on the T9 and T12 AI base kits after it was pointed out to me that they were out of line. Early this week I finished up the changes to the station dialog to make it resizable, and had to fix a couple bugs in our UI code to make that happen. While I was at it I fixed up the Neuro training background to make it animate like it did in C1. I also just hit the button to get valve to review us again for steam so hopefully that happens soon (but it took roughly 3 months last time)!

Jey

I finally finalised the patch, it’s currently on livetest.

I also been slowly working on my ai global event system.
— The first one i’m implementing is a traderoute event. It will look for potential trade existing routes, then make up a story about it (base starving, lack of worker blah blah) and it will lock the source and destination station price on a specific item for a specified time duration and make a bulletin board post about it. During the event, trader ai within a few galaxies jump of the route and with empty space will stop what they were doing and go work the trade route, and pirate ai will also go to the route to ambush the traders etc. The goal is for the universe to feel a tiny bit more alive by seeing actual swarm of traders moving stuff for various reason.
— I also want to add small fleet wars as another event. Where 2 team of ai would group up in neighboring galaxy, hate each other then charge into a central galaxy (with warnings about it in base and galaxy chat about it so player can either get the hell out or participate / watch the show xD), followed by a special bonus added to the winning ai team (like +25% exp on kill for the next hour or something)

I also added a feature that gather precise code performance data when a slow frame is detected (about twice the average frame time). This will allow us to see exactly what the cpu is spending time on during lag spikes on live.

Blue Dwarf

So I’ve been working more on the item viewer and I have a lovely screenshot to show of progress so far!

It’s still early days currently and there’s none of the supporting backend required to run it yet. I’ve put together some simple test data from our XML files which is what’s shown here but it’s coming along nicely. Each item type/class table have their own set of columns which come and go as needed, for example the lasers table shows the tracking range in degrees but the weapons table omits this data.

Ryan

I implemented server support for fixed lockout times so that we can test them out and get player feedback. We like the idea of Friday lockout resets for weekly lockouts, and we need to decide what time we want them to reset. We’ll enable them soon for UZ after we get a couple more details locked down and if they’re received well we will roll them out to many more bosses.

Pixel

Been working on pretty bases and things for new content!

Player questions!

If you were a superhero, what would be your superpower?

Jeff: Ability to magically code with zero bugs!
Jey: Being able to interface with computers directly instead of using keyboard / mouse
Blue Dwarf: Telekinesis or teleportation would be useful. Could do some mad juggling with telekinesis…
Pixel: The ability to produce tacos from air.

Once SS has been released on Steam, what is the future for SS?

Jeff: Depends on how well it does on Steam. If it doesn’t pop much, then mostly things how they have been. If it does really well, then likely expanding the team and adding more to the game.
yclept: poppin bottles
Blue Dwarf: Micro transactions and pay to win! So we can pop yclept’s bottles.

Yclepticon

Investigated an issue with the universe civilization formula and thinks he has come up with the reason the universe is still uncivilized and the palace hasn’t spawned yet. Looks like it has to do with the server counting too many unbuildable/ unownable galaxies towards the civilization requirements.

Precursor

Made a change for Tardis in the drop table to be replaced by a tardis crate that’s size 50, it seems to be a popular request. Has been looking through the suggestion forums and has identified several for the team to work on.

Jey

Is working on patches for live test so that he can push out a patch for live very soon.

We also had a liberty issue last week, i narrowed it down to a network failure but i’m not sure if it was on ovh side or on our drivers. The network just had partially failed. www could still talk to liberty, but liberty couldn’t reach www.

Microcapicitor

Has been looking into making a wormhole usage requirement for enemy drones similar to the current wormhole usage requirement for enemy ships. This should make some custom DGs able to be upgrade to no longer use key syncs.

Col Legno

Entered the formula for the SM 21/22 spawner code.

Looked into why icons and stars aren’t showing. It probably has to do with a client optimization somewhere, but it’s still remaining illusive.

Pixel

Although he just joined yesterday, he’s already managed to QA some bugs that have been fixed and moved to the test server.

Ryan

Has been fixing up webserver stuff. He also made station dialogs resizable.

Yesterday’s weekly developer meeting included some discussion of pvp game mechanic issues, which started further discussion in the weekly dev blog discussion post. In an effort to facilitate discussion about pvp issues, I’m opening another thread specifically devoted the topic. That thread can be found in the development notes forum.

Discussed in yesterday’s meeting were:

Issues with people using off-team alts in wars

A proposal that when you get back into your ship from death, you can’t jump into another gal owned by the owners for 30 seconds. We’re hoping this mitigates the “suicide to get deeper and deeper into enemy territory” issue, and we’re curious to hear player feedback on this.

Lifting the pvp ranges by danger factor in w3 wild space.

Discussions from yesterday’s blog post can be found here: http://forum.starsonata.com/viewtopic.php?f=9&t=61122

Blue Dwarf had university classes starting this week and got a bit busy, so I’m writing the blog this week. Welcome to new developers MicroCapacitor and Morat!

Morat

Welcome our new content developer! Morat has been working on making Steppes and Ruby Steppes less painful for navigating and bringing slaves.

Yclepticon

Worked on SM 21/22 content.

He brought up some issues with people using off-team alts in wars and proposes that when you get back into your ship from death, you can’t jump into another gal owned by the owners for 30 seconds. We’re hoping this mitigates the “suicide to get deeper and deeper into enemy territory” issue, and we’re curious to hear player feedback on this.

He would also like to lift the pvp ranges by danger factor in w3 wild space.

Precursor

MicroCapacitor

Col Legno

As always, I fixed some bugs. I also worked on some new code to support upcoming SM 21/22 content and helped Blue Dwarf fix aura issues in non-pvp galaxies.

I fixed the aggro issues between off team players and slaves. If you have a shm healing you, your slaves will no longer attack the shm.

The fixes will go in at the next patch.

Ryan

I’ve been experimenting with making the station dialogue resizeable as well as some other tweaks to it. This was made possible by the recent code changes for resiable inventories. I also have been working on some required changes with paypal on our backend.

** update 509 **
* Fix for the biggest issues that were added with the beta clients. All ships should now render properly / where they are expected to be
* Your ship should no longer shake seemingly randomly when you move around.
* A few various crashes and corruptions were also fixed.

– As with all beta client, there are likely more issues to be found and fixed. This is why it is beta after all.

Its been a long time coming. I started this client optimisation pass with the goal of supporting large scale bvb action (which currently result in more or less locked up client).

* In the process I ended up having to write new optimized container for our nodes childrens list (before we used a list, now its using an hybrid between a vector and a map for fastest possible iteration and somewhat fast element removal).
* I also ended up rewriting the way our particle system use d3d hardware buffer (before it was constantly rewriting it, now it only flag and rewrite the bits that changed)
* I rewrote how our scenenodes (the objects containing everything that end up on the screen including their rotation / resize etc) are created to remove useless parents set and overwrite (some nodes ended up moved around from parent to parent 3-4 times everytime they were made).
* Changed our billboard nodes to use a single hardware buffer containing the actual billboard index (which are used for most projectiles). While this is in practice slower when theres only a small amount of projectiles to use the hardware buffer over just sending the data directly to the gpu, the time it represent in a frame is extremely small. On the other hand, when sending the data directly to the gpu vs using a buffer, if you have 200+ of said billboards to do in the frame, it become a whole lot slower and represent nearly 20% of the gpu/cpu time in those situation (since the gpu will wait for the cpu to upload the data), this change resulted in a large improvement in the amount of billboards (projectiles) that could be on screen at once.
* This beta should also fix the few crash dumps i received over the past weeks.
* The ship preview on connection has been fixed.
* The account creation now include a password and email validation field with dynamic coloring if they match / dont match.
* Multiple other smaller performance improvements.

All in all, you should see a small generic improvement to the fps, between 5-20% depending on the scenario. On the other hand, during what was previously borderline on the client load or completely above client capacity, you should see an increase in the 20-25times the performance.

Keep in mind that while I did test and fix hundreds of problems during those optimisation there are likely a lot remaining. If you do find any new bug in this beta, please mention it in forum pm or in this blog forum post.

I wanted to do a side by side comparison of the previous beta with this one in my test scenario (20 stations firing mags at 10k range with max rof) but sadly current beta just froze / gave a frame every 15-20sec so it didnt make much of an animated gif heh.

Heres one of the new version, with lagkiller disabled and very high graphic settings (altho in a mostly empty galaxy except for the 13000 projectiles floating around at all time).

Those on the current beta client will automatically get an update at that time. If you do not have the beta client and want to try it, use http://www.starsonata.com/dl/StarSonata_2_beta.exe. It is independent from the live client and you can use both on liberty.

Col Legno

I altered base bound gear (Junkyard stuff is most of what will be affected by this) so that you can no longer put higher tech gear on lower tech bases. This way gear won’t get stuck on bases unintentionally.
I added a pop up confirm dialog for transfering base bound gear to bases so that there are less accidents while transfering gear around.
I also fixed some minor spelling and mission issues.

Jey

I finally confirmed that the hardware buffer corruption is fixed, altho in the process another issue was found in the client where some effect nodes end up stuck on the screen. Waiting for secondary test of the issue.

Applies fixes to the webserver for dealing with team score updates.

Blue Dwarf

Finally finished up the changes I was making to aura generators, cleaning up some of the code behind the environmental damage auras (common in Subspace areas) and addressing the issue that auras affect people in instances when they shouldn’t (e.g., protected galaxies).

I’ve also tweaked the Omni Census PDP-01 item to be a bit more useful, the size and energy cost have been reduced to 25 and 750 respectively and it can now be used directly from your ship. The display has also been improved a bit.

Ryan

It turns out slaves got caught up in a change where ai could no longer own debris and could no longer own debris themselves, so I fixed that. I worked on the UZ lockouts with Col Legno and now all the ai share the same instance-wide lockouts, so you can no longer get trapped in the boss room. We originally avoided this because you could kill a 10 minute lockout ai to overwrote your longer boss lockout, but I’ve changed it so that lockouts can now only be extended from new kills.

Player questions!

Question 1

Who has had the biggest influence as an programmer within this game?
Jey: i guess it would be blindside
because he was a god able to write shaders and stuff !
graphic programmers are mythical creatures
you dont often see them in the wild

Jeff: I liked the guy who wrote Effective C++

Col Legno: I’m kind of stuck on Roy Osherove atm. nothing to do with the game at all. but he’s kind of a unit testing god. He has some really cool ideas.
and Michael feathers – working effectively with legacy code.

Blue Dwarf: I don’t know, I kinda take a bit of everything from everywhere. I liked some stuff from Doug Crockford (particularly JavaScript: The Good Parts), but somethings are just ugh (One True Brace Style can suck it). I guess that’s a good thing, given I learnt Perl first.
Oh, Gary Bernhardt, because who doesn’t love some batman?

Jeff is stingy and didn’t want to do questions, so only one this week! Give us some more awesome questions so Jeff isn’t so stingy next week!

Col Legno

Jey

I found the buffer issue for the client and think it’s fixed, needs tests run on it.
Fighting the webserver over team scores which are taking too long to calculate.

Blue Dwarf

Not a great deal from me, really. Nothing fancy or exciting.

Shameless plug for a shout out and making an attempt to actually be organized though, next weekend is our bonus weekend. Is there anything in particular you guys want?

Ryan

My main focus this week was on towing, specifically in the Nexus for new players. I fixed a few bugs (such as inventory disappearing after towing) and we’re also making the starting bases towing bases so that new players can tow right away instead of waiting out their stasis timers and get right back into the action. I also fixed a font bug for the names below AI ships, where characters were aligned improperly.

Player questions!

Question 1

When will the SPEX system or whatever it was called be implemented? The ingame voucher system that was discussed years ago.
Ryan: It’s waiting on a webserver patch that has been delayed for a while now due to a variety of reasons. I’ll give this a solid soon™.

Question 2

What is the meaning of life?
Jey: Life is code and code is life
Jeff: Meaning is relative to the person evaluating a thing. There is no extrinsic meaning of life. The meaning of life is the meaning that you choose to give it.
Col Legno: dude…no 42 for the meaning of life?!?!?! come on!