Biggest highlight of this update is a system which can create debris in Soil editor, if you do not wish to model it by hand. Only thing you must do is create some meshes which will be used as "debris carvers", assign them to explosions. This is mesh that will be booleaned with parent mesh (e.g. ship's subsystem), intersection will create debris and debris carver will be subtracted from original. This will probably improve in the future with some more visual fluff, but it is okay for now. This also motivated me to change rendering to support multi-material meshes, since that became super convenient with debris (and is now limited to this use). This whole thing comes with limitation that all meshes must be manifold.
I also done some minor rebalancing, which lead to two nice little additions. First is "compare" panel in editor, which will create another panel with some other stat so you see what parameters are on e.g. other ship. I believe this is very helpful, because I found myself doing screenshots to compare before... Second little improvement is that missiles and bullets now inherit parent's velocity, which got quite ugly after rebalancing. Rebalancing itself consisted of increasing speed of all ships and fighters to nearly double, which also prompted me to improve targeting algorithm because some problems arisen when things move too fast in certain directions (mostly when target was approaching turret at 45° angle). I also got rid of all old testing fighters and created new ones for Viridian faction. Another addition is missile destroyer, which already had a model, but now also has turrets.
Some other minor improvements consist of various bugfixes, one that could lock your keys when you pressed them multiple times during loading or some random stutter, other could prevent ship from being removed when destroyed if some other ship had it selected as fighter target. Last but not least is very minor optimization in how objects are stored, which should help when there are multiple battles going on, but doesn't help much if all is happening in one big cluster. As a bonus, I don't need to sort objects into lists of fixed sizes but can query for objects in certain radius, which is very welcome quality of life improvement, especially when dealing with arcane code...
Plans for near future include some more balancing work, adding of some big station to replace crappy makeshift one and possibly creating new tutorial mission. Other than that, I would like to implement some better SSAO, anti-aliasing and reduce a number of data used for multiplayer.
Another update is here and with it a host of changes. First, consequence free at the moment, is ability to store objects to pools at the end of the mission. Until now, this was possible only on warping out of ships. This enables doing stuff like returning to some mission in a state you left it, or perhaps something more creative. Several upgrades were done to turrets, including ability to choose what targets will turret be interested in (targets chosen by player, ship or by turret). This way, you can make turret not waste missiles or energy on targets not chosen by player, or have turrets ignore player's orders. Another thing you can choose for turret now is colorization of beams/bullets by player color.
Moving away from turrets, ships will now roll in a way to bring most turrets to bear on targets they are passing by. This will maximize damage done when frigates are moving around cruisers to get to their weak spots, for example. Also, ships now choose their own targets if none is picked by player and will turn to it when idle. Another change to ships is sorting of targets when ordered to attack multiple ships based on ship's type. Until now it was random, so frigate could first try to destroy battleship before corvettes... Last but not least, ships and fighter groups will now attempt some basic collision avoidance, which prevents ships and fighters from ramming their target ship endlessly if approaching from wrong direction, which was quite retarded when resource harvesters were doing it.
In a land of content, poorly balanced frigate and destroyer temporary models were added, based on preliminary concept art. Since shortage of artists is continuing, these are non-textured crappy models made by me. Seeing how 3D modelers are in short supply, I've been contemplating what to do with damage models, since that will be quite a lot of work. I'll probably try to make some semi-automatic system in editor, where explosion configs will be able to have some mesh attached to it, which will be used in boolean operation to bite a bit of mesh off to create debris. We'll see how that turns out...
So after much trouble with OpenAL I've managed to replace it by BASS audio library, which works like a charm. In the hindsight, using OpenAL was pretty much bad idea from the start, mostly because it is too low level for my interest in audio programming. Whether OpenAL is terrible, I have no idea. I used to be sure that yes, but it can very well be that I just don't know anything about pitfalls of audio and I ran into problems I had no idea about. Anyway, audio is fixed, works flawlessly (for now), and code looks much better.
Next thing that got fixed were some input issues (the faster you were spamming some key, the less it would respond). Apart from that, turrets got some better aiming skills (they used to aim from their center, now they aim from position where next bullet/beam will spawn). This should make more exotic turret configurations to work and not miss consistently.
In the land of content, we've added some corvettes and escort frigate (models are still only placeholders) for one faction. Hopefully we can soon start on some balancing, at least for one faction that has more ships. That's all for today and see you next year!
So I've made some basic models based on concept art and we now have original ships in Soil! Granted, they are pretty terrible 3D models, but they are only placeholders to get us started, so who really cares. Balancing is pretty bad at this time, so that needs to get ironed out, probably after we have destroyers and frigates. We also have voice casting for ships, so they will respond to your orders (this also needs some tuning, as there are too many reports, especially when large group of ships finishes orders, and only reports on single frames are grouped right now, so it can get pretty weird)
Apart from this, not a whole lot was going on. Some bugs got fixed and some more surfaced, especially related to sounds. This also prompted me to finally replace OpenAL by some library that doesn't suck as much in the near future.
Another update is here and it didn't even take ten months! And yes, this means this project is still alive and kicking, well, alive anyway... So, what happened during all those months? Let's take a look!
The big part of why this update took this long was splitting game update and rendering code into separate threads. Now this wouldn't be so damn hard if I had kept those things separate in the first place. So there was some refactoring that needed to be done, which lead to another refactoring, which lead to... yeah, you guessed it right... Anyway, what this means is that game is no longer locked in 20 FPS, but can run as fast as your GPU (and horrible code) permits, yay! After like two years I spent with it in the lands of 20 FPS, only after I've seen it run 60 I realized how utterly horrible it was (except for mouse pointer, I always knew how atrocious that was). Refactoring also tends to bring new bugs, or unearth hiding ones, so some time was also spent at cleaning those up. All is not finished though, as there are still some places where movements are not properly interpolated, which causes some jerky movements (if you run 60 FPS, you have 3 rendering frames per 1 game update frame, so you have to do something to make it appear 60 FPS). (side note: there are also some issues with input, which doesn't work well if you press the same key really fast)
Was all that time really worth the effort? Hell yeah! But wait, there's more! To justify this long update, we'll throw in something extra! Let's see... Well, there is fix to music mentioned in the last update, but it happens that now it sometimes fail for different reason. Maybe something to do with multithreading, but OpenAL docs are so piss poor they don't even mention threads, so yeah. Whatever made me choose that damned thing that doesn't bother throwing any errors at me... it's getting dumped as soon as I have time for it!
Now to the new things that actually work (I hope so anyway). There were some minor changes to script that no longer requires you to do reference counting but automatically sets your variable to null if object is destroyed or warps out. Arrays are now serialized as well, which should be quite useful (so far, no support for multidimensional arrays...). You are now also able to send information and units from one mission to another through persistent data.
Moving away from script oriented features, what's new is rebindable hotkeys, because you certainly don't want to be stuck with whatever crazy hotkey scheme developer came up with. Last but now least, something that will help me more than you, is generating minidumps on crash. This is a little file that you can send me, alongside log, when your game crashes and there is a non-zero chance that it will get fixed! Super convenient! What this also means is that saving game every five seconds to reproduce is no longer necessary, which caused noticeable lags if there was too much stuff. It also wasn't 100% guaranteed to reproduce the issue...
So, that's about it for this update. There wasn't much progress in content apart from concept art, so yeah. Speaking of which, I've taken it onto myself to take some time off programming to make some temporary ship models just to have something and I can only hope they won't be too insulting to the original concept art... so sorry for that in advance! They are meant only to test out how they will work, with their layouts and turret placements. So there might be an update within a month or two with some content update. Ha! I've got you there for a moment didn't I? or did I?