Saturday, 31 October 2020

A Change Is As Good As A Rest

 Happy Halloween, how is perpetual house arrest working out for you?

So we've got a little saying "in them there these here parts": A change is as good as a rest, so here is DIY Ace Combat 1930s style. This whole thing came from an idea I had for a steam/dieselpunk story many, many moons ago for Victoriana sci-fi with cloud cities, battleship dirigibles and '30-40s aircraft. Over the years I have amassed data on the aspects and real world values of various aircraft from 1930-1940s and condensed them into something that might be useable gamewise.

Needing a break from super head-pattable fluffy eared waifus character modeling which I really don't like, I embarked on creating an action based Ace Combat 7 style aeroplane game. First up I checked out all the previous flying vehicle resources which ... were not particularly great, but did give me some pointers on how vehicles are supposed to work ... and the answer to that is that they are entirely physics based. Now considering that some of this stuff dates all the way back to the early 2000s, I expect that was very revolutionary at the time (see Dead Red Redemption 2 for physics based locomotion and a budget of 160 million USD).

So it was time to boot up Visual Studio and hard code it in good old C++. Now there was a time, not very long ago, that I trembled in fear at the thought of doing anything in C++ that didn't involve me copy and pasting some half broken crap off the stackoverflow site.

You tell 'em Aragorn, son of Arathorn

The stock flight model was frankly appalling, so I set about rewriting it from scratch. Gravity turned out to be a weird and thorny problem, as anyone hit by a falling apple can testify to, so I simplified that with a "going down fast, going up slow" methodology and if you were going straight and fast ignore it. Of course that meant that going straight and slow would be a problem so I introduced a vaguely realistic - but always siding on fun to get away from simulation - stalling system.

Gradually over the course of the month I built up a new physics based flight model based upon the concept of fun trumps boring simulation. I was aiming for something in an action style concept that mixed Ace Combat 7 and  Freespace 1/2 (so spaceships with gravity if you will).

Cue, lots of physics as me having to look up the "maths is fun!" (narrator: it isn't) and "improve your GCSE maths!" websites to get a refresher on Cosine ... and it turned out that I mostly wanted Tangents anyway ... Now I vaguely remember all this stuff from the '80s but because of large class sizes I got stuck down in Set 5 and needed a +90% score to pass the final exam - which I did - in your face education system :P

With a working and fun, physics based flight model I proceeded to create the HUD system, with all feedback and warnings. I created a primary and secondary guns system with heat buildup, stoppages due to overheat and cooldown system. The last really awkward thing to do was make a unique area damage system, so if the wings started to get shot up, maneuvering would become harder, engine damage decreased thrust and speed, etc, etc. In the end this didn't end up being as difficult as I thought it would.

Speaking fo the HUD, I came up with system that can change the entire scheme for whatever the player prefers. Even if it's bloody awful.

 I rewrote bullet fall so projectiles only begin to fail to gravity halfway through their lifetime, and then lose momentum quickly. Stock code has them losing height immediately which just seems weird having used high velocity rifles in a former existance.

In deferrence to the previously mentioned Freespace games of the '90s I added an afterburner/jet/turbo boost which I guess back in WW2 was called "War Emergency Power (WEP)" though it acts more like a Freespace turbo jet for a limited time whilst consuming energy and has to be recharged. I have 3 distinct classes of aircraft, their names based on old cavalry types for fighters, interceptors and strike aircraft, and they all handle their WEP differently, as they do with their maneuvering at speed.

There was some ancient code resource from 2004 which nearly worked out of the box 16 years later. From this I coded a few new functions to make life easier, and lo and behold, not only could I get a callback for damagable areas but I could shoot through the main collision box it it wasn't part of the mesh model. Why is this a big thing? Because  the engine uses a singular collision system for speed - eg internet packets, which obviously you want to keep as small possible and nothing really gets smaller than a 6 sided cube because you only have to send the data of 3 lengths (in your face Ramesses! Don't @ me about pyramids also being 3 lengths, you still only get half the area). This meant that all collisions were based on this surrounding boundary box. But with extra hitboxes I can keep the overall simple and fast collision system for things like movement and disassociate it for more complex things like bullets flying through it but not hitting the actual model - which looks weird.

So, next up for dieselpunk aircraft action is to refine the damage modeling and make it actually playable. I did have a quick dogfight with an empty vehicle last night and "zoom and boom" was quite fun - but I really need to sort out a moveable camera system to look around and radar because once they go off screen it took ages to find them again.

Anyhow, ladies and gentlefolks, for your delications, some video, featuring an airplane model I swiped from some modders site for a long defunct flight simulator I have never heard of, so that isn't my work.

So, what's all this for? It's for a secondary project that I can flit between the two without vegetating once one gets overwhelming or just a plain pain in the old arserinho. Cute catgirl swag 'em up will return, it's pretty much fully coded and only needs some user friendly stuff for a limited playable release but it also needs a huge amount of character modeling on top the huge amount of modeling it has already had - so here is my extra project to break up the monotomy, and as I said at the top of the page; a change is as good as a rest, and it's a lot more productive.

That was the month that was. Hope you enjoy lockdown 2 covid bugaloo.

Wednesday, 30 September 2020

Autumn Arrives And Airship Dragoonette Gets A Makeover

 Autumn arrived with a final heatwave and I sat outside to soak up the sun with a bottle of plonk. Three days later and I had the heating on and was hunting through cupboards for a hot water bottle at 1.30am.

I spent quite a bit of time writing a new movement system which didn't work and it took me about a week of debugging before I realized that  I was calling the depreciated names for the input and not the new, unified xy axis system. 

┻━┻ ︵ヽ(`Д´)ノ︵ ┻━┻

Remember this?

Well it's now this.

Airship Dragoonette gets a makeover ...

And as Valve had once again put out a new Steamworks update, I took the opportunity to use this new artwork and a derivative to refresh the artwork in Airship Dragoon. I made a little system were it counts how many startups the game has had and then swaps the main menu image between this and the original painting in rotation. Which ever one is used as the main menu background, the other is used as the loading screen.

Whilst back to looking through the spaghetti code of Airship Dragoon, I altered how panic works. Previously troopers suffering panic would either flee, go beserk or freeze in place with an RNG, but now they are much more aggressive and chose to spray bullets at enemies if available, flee if not, or freeze if their pathfinding fails.

I also tested a couple of new things which Valve had released. The first was a time limited change in store artwork capsules, which will revert to the original artwork after next January.

The second was to use the Major Update Announcement feature and all the new artwork headers which that requires. More info on that here.

There has been other things ... things I can't remember in the panic of nearly forgetting to write this September blog one hour before September ends, so we are a bit light weight on substantial content this month ... and possibly every month ...

I did buy a slow cooker which has turned out great and will no doubt get hefty use over winter.

Monday, 31 August 2020

Character Selection Screen

So I've knocked up a character selection screen that, currently is rather devoid of any art work. It's failry simple, uses an array which the player can flick through, each character (currently a whole 2) then display an image of the character (which is currently a placeholder) and more importantly a series of statistics relating to the character at the side. These include the basics such as speed of movement, health and energy replenishment and strength for pushing enemies aside. This is followed by the 3 types of attack and evade, and their relevant statistics, so the player can move through character selection and view the differing statistics for comparison.

I have since changed the buttons to something less awful using a bitmap array and text.

Having finally dispensed with DirectX 9.0c in favour of DX11 and OpenGL, I set about converting some of my custom shaders with ... not particular success.

Yeah, I'm pretty sure that isn't supposed to look like that ... This appears to have something to do with hardware skinning being controlled by the GPU when previously it was the CPU. As this only affects a few things I have come up with some workarounds for the fancy custom materials and will come back to this at a later date.

I've also had more of a play around with my XP-Pen display tablet and started to become familiar with the artist app Krita. I am planning on using this for the 2D art in game, and especially the selection screen for character portraits.

Drawing of an old oil painting I did some time years ago.

I also thought about reworking the artwork for Airship Dragoon, and knocked up a colour sketch idea for composition. Might not actually replace the original artwork but could use a new one for Steam's new capsule formats for updates - then again I could go the whole hog and use it for complete new rebranding.

I also did a whole load more stuff this month but can't actually remember what it was ...
Anyhow, onwards and upwards ...