Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411492 Posts in 69371 Topics- by 58428 Members - Latest Member: shelton786

April 25, 2024, 04:23:12 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsJetboard Joust Has Just Launched On Switch, Atari VCS and Steam!
Pages: 1 ... 5 6 [7] 8 9 10
Print
Author Topic: Jetboard Joust Has Just Launched On Switch, Atari VCS and Steam!  (Read 35771 times)
bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #120 on: October 23, 2017, 11:47:15 PM »

Hey the game looks cool !
Is there a story ?

Thanks!

There's no real 'story' I'm afraid, in the vein of old arcade games. The only 'plot' would go something like: 'Use a vast array of ridiculous weaponry to stop hordes of evil aliens from abducting your babies and turning them into mutants'!
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #121 on: October 26, 2017, 08:07:44 AM »

Been continuing with the ‘conventional’ weapons after finishing the dreaded flamethrower. Next one on the list – grenade launcher. Every self-respecting shooter should have one!
Thankfully this was a lot simpler than the flamethrower. A large chunk of the time was spent tweaking the grenade explosion – I wanted something that gave an ‘area of effect’ type flash and wasn’t able to do this without using a custom shader. Luckily I was able to re-use the ‘smoke’ shader I talked about here. I may tweak this some more but am pretty happy with it as is.



There were also a few issues with the movement of the grenade itself. I started with a simple ‘real world’ type physics model, the same I use for the falling pickups. This looked good but it was too hard to tweak the range for the different weapon levels and also hard to predict the range a grenade would travel for the enemy AI.

I ended up using LERPing for the horizontal movement. This meant I could predict and tweak the travel distance with 100% accuracy. When the grenade hits an obstruction LERPing is turned off and motion reverts to a ‘real world’ model.

Vertical motion remains a ‘real world’ model but I cheat a bit here as well, starting with a lighter ‘gravity’ applied to the grenade and increasing the gravity as the grenade reaches the end of its horizontal travel. This enables me to get a nice arc of travel for the grenade whilst keeping things playable and predictable for the enemy AI.



Here's some more gratuitous grenade launcher action showing how the grenade's wide area of effect makes it easier to pull off combos...



I’m still undecided as to whether I should allow grenade ‘suicide’ or only allow enemy grenades to damage the player…



Dev Time: 1.5 days
Total Dev Time: approx 121 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #122 on: November 02, 2017, 12:17:01 AM »

Over the past couple of days I've been back to getting my hands dirty with HLSL, working on some custom shaders for drawing geometric shapes that I can use for explosions and the like.

I thought I'd share the results so I've made the (thoroughly commented) source code for the shaders, as well as a mini-tutorial, available here.

Another DevLog update soon...





Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #123 on: November 06, 2017, 07:02:40 AM »

Another day, another piece of overpowered weaponry. And on it goes…

This week’s project has been to add an R.P.G. And of course in this context that stands for ‘Rocket-Propelled Grenade’ rather than ‘Role Playing Game’.

In theory the R.P.G. is a very straightforward weapon to code. Shoot a projectile in a straight line that explodes when it hits something – job done. There’s nothing particularly complex about the mechanics of it at all.

What took the time in practice was tweaking the visuals. Because the R.P.G is a powerful weapon it needs to have a certain ‘wow’ factor attached, consequently I spent considerably more time animating the rocket’s travel and detonation than I have for any other projectile in the game. Here I am starting to work on it by adding some muzzle flash and recoil to give the weapon more 'heft'...



When in flight the rocket has a spin animation and two particle generators, one that leaves a ‘thrust trail’ and one that generates a ‘flare’ at the rocket’s exhaust. For the explosions I made use of my new geometric shaders described here.




Another difference to other weapons is that the rocket is displayed ‘loaded’ into the launcher before it is fired. This means I have to cope with the scenario where the user is out of ammo (no rocket displayed) and also create an animation for when the next rocket loads. None of this was particularly complicated but it necessitated some changes in the way I deal with weapon attachments for the jetboard.

One area where the mechanics of the R.P.G. needed a bit of specialised treatment was in the distribution of damage when the rocket explodes. I had been working on a similar principle to the bombs and grenades in that damage would be applied equally around the rocket depending on how far away the enemy/player is. The problem with this was that, as the rocket detonates with a very powerful explosion, it was simply too easy to commit suicide by firing into a building or opponent at close range. To rectify this I created a kind of ‘safety zone’ behind the rocket. Characters positioned directly behind the rocket take significantly less damage, characters behind but above or below the rocket are still offered some protection but less so depending on how far away they are. You still have to be careful firing R.P.G.s when you’re low on health though!



Dev Time: 2 days
Total Dev Time: approx 125 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #124 on: November 09, 2017, 01:22:29 AM »

For the last ‘conventional’ weapon in the set I’ve decided to create an old-fashioned Gatling gun.
‘What’s that?’ I hear you cry – ‘There’s already a Gatling gun in the alpha!’

You’d be right of course, but it’s bothered me for a while that the Gatling gun in the alpha doesn’t really react much like a ‘proper’ Gatling gun. It’s far too ‘polite’ and doesn’t have the all-important ‘wind up’ effect where the speed of fire starts slow but increases to ridiculously fast as you keep the trigger held. I remember particularly enjoying the Gatling gun in the underrated 'Bulletstorm'

.

I’m still keeping the ‘old’ Gatling gun (below) but this will be renamed ‘Uzi 9mm’ which seems more fitting for the way it operates.



Actually coding the ‘new’ Gatling gun was pretty straightforward. As usual I spent most of the time tweaking explosions and the particle effects for the muzzle flash and the bullet trail. For the muzzle flash I’m using a new geometric shader type called ‘burst’ based on offset circles. I was particularly pleased with the bullet explosions and will probably re-use this effect elsewhere in the game (maybe on a much larger scale for some real ‘oomph).

Here's the 'burst' shader...



The gun gradually gets faster and more inaccurate as you hold down the trigger. It also recoils pretty badly. I’ve opted for super-big bullets which I think kind-of work (I think they’re funny anyway) even if they’re ridiculously big.



The bullets are the first time I’ve used sprite rotation in the game. I was a bit worried this would look out of keeping with the visual style (as the rotation is done at ‘full’ res rather than the game’s pixel resolution) but it seems to work fine. When the enemies get armed with gatling guns too a pretty satisfying 'bullet hell' chaos is created...



So I’m pretty much done with the ‘conventional’ weapons now – just have to add sound FX for this one, the flamethrower, R.P.G. and grenade launcher.

Dev Time: 1.5 days
Total Dev Time: approx 126.5 days

Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #125 on: November 13, 2017, 09:31:33 AM »

Halt & Catch Fire! Flamethrower vs Gatling Guns!


Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #126 on: November 16, 2017, 04:01:11 AM »

Well, all the major coding on the conventional weapons is now done so there’s just a few bits and bobs before I move on to the more ‘futuristic’ weapon set.
Firstly, I had to design upgrade UI icons for the weapons I’ve added over the past few weeks. These are 32×32 icons so require more detail than the in-game sprites. I was pretty much a #pixelart noob before starting this game and don’t find this type of drawing easy, one of the reasons I went with a limited colour palette (other than liking the ‘gameboy meets spectrum’ aesthetic) was that it would considerably narrow down my options when it came to the art and thus make the drawing considerably less intimidating. I think that was a good move.

You can see the final icons here – I’m not sure, in retrospect, that a square format was the best format to choose for these as many weapons are much more ‘landscape’ in shape – particularly things like R.P.G.s, making them tough to fit in that space without them looking too spindly and weak.



The other major thing to do was add audio for the new weapons. As with the rest on the in-game FX, I designed all the sounds using the DSI Tempest. I stick mainly to the analog oscillators but also use the digital oscs for noise and (sometimes) a pure sine wave. I really love the Tempest for this type of sound design work, the eight-slot mod matrix makes it incredibly flexible, yet it’s really intuitive to use for a synth that’s so deep. Yeah, there’s a couple of things I really wish it had from a sound design perspective (individual level control over each analog osc and pre/post filter as a modulation target) but overall it’s a beast with just the right balance of flexibility and limitations.



I also used my cheapo Boss RV-100 ‘retro’ digital reverb unit and a couple of plug-ins for (sometimes fairly hardcore) compression and limiting.

Lastly, because I liked the chunky Gatling Gun bullets so much (see previous post) I’ve increased the size of the grenade and R.P.G. rocket. Also added a bit of spin to the grenade when it’s fired. You can hear the new audio here...



Getting the conventional weapon set done feels like a bit of a milestone so I’m pleased that’s done! next step – plasma rifle!!

Dev Time: 2 days
Total Dev Time: approx 128.5 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #127 on: November 23, 2017, 12:23:03 AM »

Started on the more space-age weapons this week! Got three done which isn’t bad going I guess, I would have liked to get started on another but, as you’ll see below, I wasn’t happy with one of these and decided to start again from scratch.
I also made a couple of changes to my particle system, the main one was adding the ability to align particles left, right, up or down when they’re drawn. This has added a great deal of flexibility in designing the various particle fx which has been the bulk of the work here.

Plasma Rifle
I wanted the first weapon to be pretty close to the feel of the player’s weapon in Defender or Jet Pac (which was probably based on Defender anyway). The actual logic here is pretty simple, a beam is fired and the ‘back’ of the beam moves at a slower rate to the front. Tweaking the particle fx is what took the time and there are three different particle states here, one for the ‘head’ of the beam, one for the ‘tail’, and one for the rings that are formed around it.



I also went through several iterations of the explosion at the end of the beam, going through a bunch of ideas that looked decent but too ‘geometric’ before settling on the version you see here.



Originally I was just performing collision detection for the ‘head’ of the beam but I found this looked a bit weird when enemies moved into the tail and nothing happened to them. Now I also check to see if an enemy has moved into the tail of the beam and apply a smaller amount of damage if they have (based on the theoretical strength of the beam at that point).

Pulse Cannon
I have very fond memories of the two Turok shooters on N64 and my ‘Pulse Cannon’ is somewhat inspired by the ‘Pulse Rifle‘ in those games. It fires rapid bursts of energy with a short delay between each burst.

The mechanics of this weapon were very simple as it’s just basic projectiles moving in a straight line. Again, what took the time was getting the visuals right. here I have a sprite for the centre of the ‘pulse’ and three different particle generators, one for the ring around the pulse and two for its trail.



Spreader
The last of this batch of weapons was originally going to be based on the ‘triple blaster’ found in a bunch of ‘bullet hell’ style 2D SHMUPs. I spent almost a day going down this path and tweaking some ok looking ‘fireball’ style projectiles (well, the particles are OK, the sprites in front looking pretty lame) but, when the weapon was finally done, I was left feeling rather disappointed with the result. It just seemed rather bland and lacked anything to differentiate it from the other projectile-based weapons in the game (of which there are many).



So I went back to the drawing-board and instead engineered a weapon that creates an expanding field of energy. Even after about an hour of experimenting I could tell that this was going to be much more effective, and it was. Of course it took a long time tweaking the particles again but there’s only two different generators here so less than the previous two weapons.

I didn’t like the energy field just fading out at full ‘spread’ as I felt this looked a bit weird, so instead I made it contract back to a point which seemed to look pretty cool. The damage done by the field of energy is based on how much of the enemy overlaps the field and how concentrated the field is at that point, focussing the field at the end therefore also has implications in the use of the weapon as it means that damage done is super-concentrated at that point.



I’ll probably re-use the original ‘spreader’ bullets for a bespoke enemy weapon or something later in the game. I suspect I haven’t given up tweaking some of these effects either, particularly the plasma rifle – I like it but there’s still something that’s not quite sitting right with me. I think I may like my original version better in some respects.

Also, ‘spreader’ is a bit of a shite name for a weapon. Sound more like something you use to plaster walls or make a toasted sandwich. Must think of something better.



Dev Time: 4 days
Total Dev Time: approx 132.5 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #128 on: November 30, 2017, 12:27:18 AM »

I felt the latest weapon deserved a post to itself as it took a bit longer than the others and I’m particularly pleased with the result.
It’s called the ‘Gamma Ray’ and I was deliberately going for a kind of retro 50s sci-fi vibe with it. As with the bulk of the weapons (probably more so), there’s actually very little to coding the mechanics of it – probably around 90% of the development time here was spent on the visuals.

The ‘ray’ effect is all created with a custom shader. At its heart it’s an approximated sine wave (calculated using the smoothstep algorithm) – to get it looking more ‘electric’ I vary the amplitude of the wave at random each cycle. Here's one of the first drafts...



I had a lot of issues finding a technique for generating random numbers in HLSL that I was happy with. I tried out a couple of algorithmic solutions but none of these seemed to look much good to me. In the end I used a second texture as a ‘noise’ lookup table, I created this texture myself by rendering to a RenderTarget2D in MonoGame so I could be sure the ‘noise’ was perfectly distributed. I’ll probably write a simple tutorial post on this subject and include some PNGs with different type of randomness.

I didn’t like using a consistent wavelength for the shader as it seemed to make things too uniform so I tried varying the wavelength per frame. This looked much better but I ran into an issue where the ‘end’ of the ray looked weird if it didn’t taper out to a point, which it wouldn’t do when there wasn’t an exact number of wave cycles across the length of ray.

I tried fading out the end to get around this – this worked OK but not great and looked weird when the ray ‘collided’ with enemies or buildings. In the end I settled on a solution whereby I taper out both the amplitude and ‘stroke width’ of the wave to zero, this seems to work fine and, even with a fractional amount of cycles, the ray now always tapers out to a nice point!

Lastly I applied a raster effect to the wave (again in HLSL) and overlaid two different rays with wavelengths cycling at different rates. The wavelength of both waves in tweened using a ‘Bounce’ tween algorithm so it seems to cycle regularly but in a fairly non-linear fashion. Here's the final version...



The concentric circles at the muzzle of the gun and at the point the ray hits something are created using the geometric shaders I discuss here, though I’ve added a raster effect and a gradual fade out.

Some gratuitous 'action' GIFs...





Dev Time: 2 days
Total Dev Time: approx 134.5 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #129 on: December 06, 2017, 07:14:29 AM »

Boom, Boom, Shake The Room!

This latest weapon is called the ‘Sonic Boom’ and I had a fairly good idea of what I wanted it to look like visually before I started. Something akin to radiating circles but not so regular in feel.

I remember seeing something as a kid in a book about optical illusions (we had no Internet then, kids) that always stuck with me – it was an image comprised of two sets of concentric circles, the centres of which were slightly offset. It made your eyes go funny and that was a good thing.

So I started on that basis, by updating the geometry shaders I discuss here to include multiple sets of shapes that are offset by a certain amount. It took quite a while to get this working in a way I was happy with (and to structure the HLSL in a way that was sensible and would allow me to add other shape types easily), but the result was pretty satisfying if nothing like the effect I set out trying to achieve!



I realised there was just too much being drawn in the shader so I set about adding some different paint modes to vary the effect created. As well as the original ‘OR’ logic (if a pixel contains a shape it’s drawn) I added AND, XOR and NOT modes that react differently, particularly where shapes overlap. For the AND and NOT modes I allow a number of overlaps to be specified, with AND any pixel that contains >= the number of overlaps is drawn, with NOT and pixel that contains < the number of overlaps is drawn.



By combining these modes and a lot (and I mean a lot) of tweaking I was finally able to achieve the type of effect I'd set out to create. The final version consists of two overlapping geometry shaders for the bulk of the effect, particles around the barrel of the weapon, and a smaller 'negative' geometry shader also around the barrel of the weapon.



As with most of these weapons, the actual mechanics of it were pretty straightforward to program. It acts really like a kind of RPG that must be 'charged' before being released, if anything it's even simpler than the RPG because I'm allowing this one to travel through buildings (I'm not sure if I'll keep it like that or not, it does seem a little weird).

I did also have to update the enemy AI to allow them to cope with a 'charge and hold' type weapon but that was pretty easy. The audio design for this one's gonna be fun!

Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #130 on: December 12, 2017, 04:27:37 AM »

At last – a weapon where I can write about something else other than endless tweaking of shader and particle effects (though there was still plenty of that involved)!
The Shredder is another weapon inspired by many wasted hours playing Turok 2 on the N64 back in the day. In Turok it’s a weapon that fires a laser that bounces off anything it hits, you can see it in action here.

I knew that to get this mechanic to work I was going to need a method of collision detection that was more robust than the current system I’m using due to the speed the shredder’s ‘beam’ would be travelling. My current system relies on objects actually colliding at the point at which the collision checking is done, this is fine for the most part but will fail when very fast objects more ‘through’ smaller objects (the so-called ‘bullet through paper’ syndrome).

So I started looking at how to implement a basic raycasting algorithm to check for collisions instead. I am not great at Math(s) so was slightly dreading this, but thankfully I found a YouTube video that was able to explain to explain the calculations involved in simple raycasting here. There’s some very clear code linked to from that same video.



I was able to implement a decent enough raycasting algorithm fairly painlessly, so the next step was to work on the visuals. I tried a plain ‘laser beam’ type effect as is used in Turok, but didn't really think it was going to work - I felt a weapon called the ‘shredder’ should look at least vaguely like it’s tearing things to pieces!



So I began working with smaller particles instead and, after several hours of tweaking particle parameters (a process I am now getting a bit tired of) I managed to settle on an effect I was pretty happy with and seemed to fit with the name ‘shredder’. There’s two sets of particles here, one which stays aligned with the ‘beam’ and one which drifts away from it. Also particles are added when the ‘beam’ reflects off a surface.



I uploaded this to Twitter thinking I was done, but after coming back to it felt the trail of the ‘beam’ was too dispersed. It needed some kind of central ‘pulse’ or something. I also had some feedback, again via Twitter, to this effect so I wrote a simple shader that allowed me to taper a beam out to a point and used this. I also focussed the distribution of the particles a bit more.



Now I think I am done!

Dev Time: 2 days
Total Dev Time: approx 138.5 days

Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #131 on: December 20, 2017, 12:55:55 PM »

This was the first weapon that I really didn’t have much of a clue what I was going for when I started it and, ironically, it’s probably turned out to be the one I’m most pleased with!
When I set up the placeholder for this one ages ago it was called ‘Storm Bringer’ and I had an idea it was going to involve some kind of ‘particle storm’ type effect, a bit like those fireworks you get that fire out a ton of different sparks that go off in different directions.

However, I’ve already changed the ‘Spreader‘ weapon to be called ‘Particle Storm’ and, as that now does something very similar to what I intended this weapon to do, differentiating this weapon proved difficult.

I tried a series of variations with a bunch of particles moving in a constrained and stuttery ‘Brownian Motion’ type manner but this all looked shite and, to be honest, given that I’ve done so many of these weapons now I was beginning to feel like I was running out of ideas and motivation.

Then came a random source of inspiration. In my very skunkworks home studio I have a rack for audio gear that I’ve cobbled together over the years from various shitty pieces of Ikea furniture and stuff. In an attempt to make this more uniform (as nothing matched and my workmanship was so terrible) I covered the entire piece with Jack Kirby art from a bunch of old Spiderman and Fantastic Four comics I had as a kid.



On one small section of this there’s an image of a character disappearing into a kind of black hole, the image is drawn in negative and looks really striking. I had vaguely considered a weapon called ‘Black Hole’ (though I was worried it would be too similar to the ‘Sonic Boom‘) so I decided, largely out of desperation, to try switching the particles I was using to very dark circles with a light outline. I thought this would look ridiculous but, to my surprise, it actually looked kind of cool!



It’s not a single black hole though, so I hit upon the concept of a weapon that fires a series of mini black holes that suck the life force from enemies. Stephen Hawking would probably turn in his grave but I liked the idea. I’m calling it the ‘Black Hole Blaster’ which, thankfully, just about fits in the space I’ve reserved for weapon names in the HUD!

I worked on this ‘negative space’ effect some more, adding a layering system to my particle code so that I could draw all the white outlines ‘behind’ the black circles, this gave the effect of a unified black mass with a white outline which looked much better than a bunch of circles overlaid. As usual there was a lot of tweaking and messing around here (I didn’t really have any point of reference for the effect I was trying to create other than that one comicbook panel) but I’ve ended up with something I think works.



There’s five layers of particles in the final version two sets of black circles with light outlines (one smaller than the other) and the concentric circles you see overlaid which (I think) help to give the impression of some kind of black hole rather than simply black smoke. It was difficult to get these concentric circles subtle enough to suggest ‘black hole’ without overwhelming things, I had to do a lot of messing around with the frequency and distribution of them. It’s possible that I’ve erred to much on the side of caution and could do with a few more of them. It does look a bit like some kind of weird satanic flamethrower but I don’t think that’s necessarily a bad thing!

Lastly, whilst working on the collision detection (which was very straightforward) I thought it might be a nice touch if these mini black holes exerted a small gravitational force, actually sucking enemies towards them. This was pretty fiddly to code, and my initial version was ludicrously powerful, but it did seem to work and help to differentiate this weapon nicely from some of the others.



So I think I’m pretty much done with this one now. I’m really pleased with it, both in the way it looks, but also for the fact I’ve never seen a weapon quite like it in any other game (though some smartarse will no doubt point one out to me)!

Only two weapons left to go!!

Dev Time: 2 days
Total Dev Time: approx 140.5 days

Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #132 on: January 05, 2018, 09:53:46 AM »

For the penultimate (hurrah!) weapon I decided to go for a heat-seeking ‘limpet mine’ as I don’t currently have anything like that in the game. Not sure if this counts as a ‘conventional’ or ‘futuristic’ weapon as it’s really somewhere between the two.
Most of the coding was done on this before Christmas and I am currently suffering from a heavy cold so excuse the brevity of this blog entry!

It wasn’t that tough a weapon to put into action, for the motion I work out the ideal vector between the mine and its target and then ‘lerp‘ the mine’s horizontal and vertical velocities towards this value (with a set maximum ‘acceleration’).

I found that sometimes mines were getting stuck against the edge of buildings if the nearest target was on the other side of a building, so I implemented a very simply AI that moves the mine to the top of a building if its path is blocked. This seems to work fine and gives pretty amusing results in some scenarios.



The other simple AI I added is a check to see if a target already has a mine attached. If it does, and the HP level of the target is low enough to be knocked out by it when it explodes, further mines will seek alternative targets to prevent them being wasted. This is pretty satisfying in-game as you can just fire a bunch of mines into a swarm of enemies and trust them to find their individual targets.



Actual development of this weapon took about a day and a half, the extra time was spent improving my mother-of-all-geometry-shaders to draw triangles, six and eight pointed stars and add decent-looking fades for all these various shapes. The six-pointed star is used when the mine explodes and I will definitely be using these elsewhere in the game too.



Oh yeah, enemies with limpet mines are rather too dangerous at the moment! I am going to have to implement some kind of enemy-specific ‘pause and reload’ functionality for all the weapons.



Only one more weapon to go!!!

Dev Time: 3 days
Total Dev Time: approx 143.5 days
Logged

freank
Level 1
*



View Profile WWW
« Reply #133 on: January 09, 2018, 10:16:06 AM »

like a real retro game!  Wizard
Logged

My last game:



Supporter of
bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #134 on: January 10, 2018, 12:19:34 AM »

like a real retro game!  Wizard

Not quite sure what you mean by that!

It's not strictly retro as I'm not slavishly sticking to the restrictions of any one platform but I've tried to keep it retro in feel by referencing aspects of my favourite 'old school' games..

- A gameboy-style colour palette
- The particle FX from 'Defender'
- 'Vector' style geometry FX from "Tempest'

That kind of thing!
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #135 on: January 11, 2018, 05:10:08 AM »

At last – the final weapon is done! If I think of a cracking idea for another one I might add more but I set myself the task of designing sixteen from the outset (seemed like a nice binary number) and this is #16!

This one’s called the ‘Gravity Hammer’ – much like the ‘Black Hole Blaster’ I didn’t really have much of an idea what I was after from the outset so was pretty much making this up as I went along.

The name comes from a weapon in ‘Halo’ that I came across when searching for weapon ideas – I’ve never played Halo but had a quick look at some footage on YouTube and the Halo version seems to be more of a melee weapon, like a massive axe or something. This isn’t what I wanted.

My version fires a kind of massive ball of gravity that sends anything it comes into contact with plummeting downwards with extreme force. It does damage not at the point of contact, but when the ‘hammered’ enemy hits the ground.

It took a while to code as, not only did I have to worry about the weapon visuals (which were pretty complex) but also the effect the ‘hammer action’ would have on other game sprites. I thought about having the ‘hammer’ just do damage when it made contact and skipping the ‘smashdown’ effect but I’m glad I went through with it as it’s really satisfying in practice.



It’s particularly amusing when you have to hit an enemy several times as it looks like you’re playing basketball with them or something!



The visuals are comprised of three key elements. There’s the ‘gravity ball’ itself which consists of concentric eight-pointed stars drawn using my geometry pixel shader, a trail of particles left behind by the ball as it travels, and a larger ‘mandala’ type pattern which is actually a series of concentric six-pointed stars spinning very quickly so it looks like a more complex shape. There’s also another trail of particles left by the ball as its first ‘fired’, two particle effects for a ‘muzzle flash’, a simple animation for the barrel of the weapon when it’s active, and another particle effect for a kind of ‘pulse trail’ when the sequence is over. Altogether fairly involved, but as it was the last weapon I thought I’d go to town!

I also add a six-pointed star when the ‘gravity ball’ comes into contact with an enemy to exaggerate the ‘smash’ effect, a particle trail of ‘speed lines’ as enemies are smashed downwards, and the ubiquitous screenshake to make things seem more visceral.

You’ll see on some of the GIFs that the action swings ‘up and back’ first. This is how I originally had it as I was thinking of hammer throwing in the olympics. Twitter user @Sky_Armada helpfully pointed out that this seemed a bit arse-backwards so I tried it the other way and he was right! It feels much more natural and ‘hammer-like’ travelling downwards first.



At the moment I have this weapon destroying explosives and projectiles when it comes into contact with them, though it flips the affiliation of explosives (so one’s that would destroy the player now destroy enemies and vice versa). I’d like to add the ‘smash’ effect to explosives and projectiles too, or maybe reverse their direction or something? That’s on the ‘nice to have’ list though.

Next step is to do the audio and ‘upgrades’ pixel art for all the futuristic weapons, then I can get on with adding some more extreme enemies.

Dev Time: 2.5 days
Total Dev Time: approx 146 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #136 on: January 19, 2018, 08:21:16 AM »

For the past few days I’ve been completing the audio for the new ‘futuristic’ weapon set. It’s been quite a task, only eight weapons but over thirty sound files in all including variations
.
The process has been the same as for the bulk of the Jetboard Joust audio. I do everything using hardware, most of which is analog, and then some final processing (limiting, eq, compression) in Logic Pro. Very occasionally I’ll add some additional fx using plug-ins (pitch-shifting and saturation were used here), and sometimes I’ll end up layering two different sounds in Logic when I feel a sound is ‘almost there’ but just requires a little extra.

Once the sound is done I then import it into the game to get the level balance right and then either back to Logic for some final tweaks or, sometimes, right back to the drawing board if things really aren’t working in context. Though I was always watching a GIF of the weapon in question when designing, sometimes when you hear it in-game it just doesn’t work. Sounds that are overly reliant on bass frequencies are often particularly problematic as they can clash with the background music and are low in perceived volume (see Fletcher Munson).

Overall this process seems to work well for me. The hardware is fun to tweak, has tons of analog character, and seems to provide the right balance of flexibility and restrictions. If I tried doing the same thing in the digital realm with something like Native Instruments Komplete for example (which I own) I would just get bogged down with all the options.

The key piece of hardware I’m using for this project is the DSI Tempest – a six voice, multitimbral synth/drum machine. It has two analog and two digital oscillators. For this project I’m tending to restrict myself to the analog oscillators but will sometimes use the digital ones for noise samples.

For the hardware fx I’m limiting myself to the four aux sends on my mixing desk. I use a Roland RV-1000 digital reverb, a JHC DX-77 digital delay (both picked up really cheap on eBay), and an Echolution2 Ultra Pro delay pedal. I have a distortion unit on the last send which I switch between the awesome Malekko B:Assmaster and a Waldorf 2-Pole analog filter.

I don’t use any bitcrushers or anything like that. I’m going for a sound that’s pretty much a full-on aural assault in the way I remember Defender being but trying to create that vibe through distortion and the overall timbres used rather than restricting sample rates and bit depth. The result is a kind of hi-fi/lo-fi hybrid.





Dev Time: 3 days
Total Dev Time: approx 149 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #137 on: January 24, 2018, 04:51:14 AM »

At last – weapons are done! This is a big milestone so I'm upping the completion status to 70%. Feels good!!!  Grin

This past few days has been 50% pushing pixels and 50% working on shaders for the weapon effects I decided I wasn’t really happy with.

For the grenade launcher I designed a new grenade as I felt the old one was really pretty shite in the cold light of day. Instead of a more ‘traditional’ type of grenade I went for something that looked a bit more sci-fi and this seemed to work better right off the bat. I probably only spent about half an hour doing it (if that) which is ridiculous compared to the amount of time I spent tweaking the previous version. You can see the original here.



For the plasma rifle I felt the old effect was too overblown so went for something rather simpler using a shader rather than particles. The new effect is just one sprite drawn with a custom shader that renders a fade with a low ‘bit depth’ to look pixelated. It also draws small gaps between the (imaginary) pixels. I much prefer the result and it’s considerably more akin to the player’s weapon in Defender which is what I was going for. You can see the original here.



The particle storm (originally ‘spreader’) is a weapon that’s caused me much pain and grief. The original effect (which you can see here) wasn’t bad at all but I felt it seemed a bit clunky compared to the other weapons, too pixelated or something. The new version adds a new sprite at each frame which is drawn with a custom shader to give a blend effect, there’s also some particles that decay very fast at the front of the ‘beam’. To be honest I’m still not 100% satisfied with this but I think it’s much better than the original. I’ll probably come back to this (yet again) at a later date but for now I’m parking it. It’s in the right ballpark now at least.



The pixel-pushing I had to do was drawing version of all the ‘futuristic’ weapons for the upgrade screens. I really don’t have clue what I’m doing with this type of pixel art and the process often feels akin to a monkey trying to write Hamlet by bashing out random keys on a typewriter. It might have been easier if I’d have sketched the weapons out by hand first, the fact that I had no real point of reference for what they should look like made things even harder!

I’m pleased with the end results though I think. The particle storm is maybe still a bit weird (that weapon’s been a bastard to get right all round). I’m also a bit undecided about the pulse cannon – it looks fairly badass in most respects but there’s something about it that reminds me of whale(!) which I don’t really like.

I’m particularly pleased with the gamma ray and sonic boom but in some respects these were the easiest as I was referencing common retro sci-fi tropes.



Dev Time: 3 days
Total Dev Time: approx 152 days
Logged

bitbulldotcom
Level 2
**


#indiedev since the #zxspectrum days


View Profile WWW
« Reply #138 on: January 30, 2018, 07:12:10 AM »

Sometimes with code you just have to pick it all apart and start again – and that’s exactly what I’ve been doing for the last day and a half.
Like its main inspiration ‘Defender’, Jetboard Joust has a game world that ‘wraps’, ie once you leave one side of the world you enter at the other – a bit like Pac Man in his maze with the difference that, as the camera is permanently fixed on the player, the effect isn’t so immediately obvious.



To date I’ve been using the obvious approach to this, an approach that I’ve always used when coding this type of game. When the player leaves one side of the world the horizontal size of the world is added or subtracted to/from the player’s location and they appear at the other side. It’s straightforward in principle, seems to make logical ‘sense’, and for the most part works.

But there’s always been these little niggles when gameplay occurs around the area where the world ‘wraps’ and I’ve found myself writing lines and lines of code to circumvent issues to do with drawing (particularly some particle effects), collision detection, and AI. Most of these problems have been solvable without too much hassle but I kept thinking ‘there must be a better way…’.

Then, for no particular reason, a light bulb went off and I had the idea of dealing with wrapping relative to the player rather than to the world itself. In this scenario the player never ‘wraps’, their location just keeps increasing or decreasing as they travel in one direction, but if anything else in the game world finds itself more than half a world width away from the player the width of the world is added/subtracted to/from its location to position it on the other side of the player.

Whilst this method doesn’t really make logical ‘sense’ (static objects like buildings are jumping all over the place in the game world) it actually works much, much better in practice. The real beauty of this system is that if any glitches do occur due to the sudden jump in location caused by wrapping, they happen way off screen so the player is never aware of them – and as fast-moving objects such as projectiles, particles etc only really appear close to the player wrapping code can be completely omitted for these items.

Implementing this was a major change for the game engine and I proceeded very gingerly at first, making sure I preserved the ‘old’ method of doing things in case I needed to switch back, but it soon became obvious this was the right way to go. Various minor bugs have been completely eradicated and I was finding myself able to comment out large swathes of code. Debugging at the ‘wrap point’ is now pretty much a non-issue! I’ve eradicated a fairly major development headache in preparation for working on the enemies.

Bye bye crap code...  Cheesy



Dev Time: 1.5 days
Total Dev Time: approx 153.5 days
Logged

PetSkull
Level 2
**


View Profile
« Reply #139 on: January 30, 2018, 07:30:07 AM »

I had the very same issues in my current projet, a space trading game, where the world wraps both horizontally and vertically, and I too was writing a lot of code, trying to handle the edge cases. I too came to the solution of calculating all other objects relative to the player, by putting the player in the middle of my world when calculating and then adding the offsets to the other objects. This made pathfinding, collision detection and autopiloting a lot easier Smiley

It's always great when you have that Heureka-moment! Smiley
Logged

Pages: 1 ... 5 6 [7] 8 9 10
Print
Jump to:  

Theme orange-lt created by panic