Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1388766 Posts in 66639 Topics- by 59315 Members - Latest Member: VisionaryGames

March 06, 2021, 04:27:54 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsDevader - swarms of enemies - made in HTML5
Pages: 1 ... 14 15 [16] 17
Print
Author Topic: Devader - swarms of enemies - made in HTML5  (Read 28385 times)
Alain
Level 2
**



View Profile WWW
« Reply #300 on: December 07, 2020, 01:44:44 AM »

It's a bit enforced by my engine, which does not support texture-swapping. Everything is on a single texture atlas.

That's really interesting to hear. Having limitations like that can be a great thing to spark creativity.
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #301 on: December 07, 2020, 10:38:39 AM »

@Alain: I sometimes feel like my creations look a bit too the same because of this limitation.

Still turning experiments into actual enemies. I've decided to not make them too complicated, at least not at first.
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #302 on: December 08, 2020, 01:47:55 PM »

More big enemies. This time I worked on some of my spider prototypes. I decided to give color another try and I feel like it was a worth while experiment Smiley There is a bit of z-fighting visible, not sure if I can fix that somehow.

Logged

vdapps
Level 2
**


Head against wall since 2013


View Profile WWW
« Reply #303 on: December 08, 2020, 05:35:19 PM »

Quality as always! Cool
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #304 on: December 17, 2020, 03:49:38 AM »

So I've been rather silent lately. Too much on my plate with difficulty finding solutions.

Variation or Chaos

The original release of Devader has 14 different types of minor enemies that are just spiders. There are others too, but the spiders are pretty much the filler unit to add that extra bit of chaos and support the bigger enemies. In an earlier post I mentioned adding a ton of new alternatives to the spiders with different behaviors. So instead of 14 small enemies (peons) I had over 60...

A level in Devader is split into 6 waves + boss wave. Each wave has a simple definition specifying which of the 14 spiders will appear. This can look like this [2] or [1,8] or [-5]. [2] means only spider 2 can appear. [1,8] activates spider 1 and 8. [-5] allows all spiders from 0 to 5 to appear.

To prevent having to redo everything I made 4 groups out 56 peons, so 4 groups of 14. Spawning peon [1] now meant randomly selecting from the 4 groups. So peon A1, B1, C1 or D1. This turned out to be very chaotic. I then switched to seeded-random to chose which enemies would appear in which wave. So wave X would always only spawn A1 or B1, but no longer both.

The random seed is determined by the players upgrade choices. This makes sense for the game as the upgrade choices determine the outcome of the game with different final bosses and various other things.

Play-testing showed me the experience was still highly chaotic as every wave would throw something entirely new at you. The player never had time to get to know an enemy as it would mostly only appear once and then never again. So instead of per wave I now make the choice of peon on a level basis. There are 7 levels. Each level specifies 2 new peon types that can appear. So in a full run you will only encounter 14 different peons (not entirely true). This seems to be a fairly good solution, but it will need some balancing and testing for sure.


img desc: The gray creatures spawn the blue pulsating stationary explosive creatures. It can get out of hand when your main damage dealer is blocked by the outer ring, as is the case here. (fixed)

Besides the peons I had also created a huge amount of creatures I call grunts. These beasts are much larger and more menacing. To include them into the game I again used the seeded random information I had defined for each wave. Only waves without mini-bosses or bosses can spawn grunts and when one appears it reduces the amount of peons that can be spawned. It's pretty straight forward and should work nicely, but certainly needs some balancing and testing.

Power-Ups
Power-ups in Devader have been very straight forward. There is hardly a reason not to pick them up, there is not much of a choice going on. Weapon power-ups stack and you get the rewards from both while they last. Power-Ups have limited ammo, it was my way of trying to make it a good idea to preserve them by not shooting. I don't think it really does, or at least it does not work on me. As picking up power-ups is a no brainer, it's not really interesting. To make things worse not having power-ups kind of sucks, as you feel a lot less powerful. If you get destroyed you lose them all so it's quite troubling. To mitigate this, I added a new feature. When you lose your bot the power-ups you are carrying are blown out and you get the chance to pick them back up. I started off by allowing weapon power-ups to be retrieved and eventually added HP + SP to the list. HP and SP add +1 capacity to health and shields.

It makes dying less punishing, but also gives you the choice of taking additional risk to retrieve what you have lost or to accept the loss. In a multi player game your allies will have to go in and collect your stuff as respawning takes a bit of time. I have not tested it yet though.

HP is special in Devader. There is a container you can pick up and it restores all your health. If you are at full health you get +1 HP-capacity. It's pretty valuable to get the latter, but if you just lose a bit of HP you miss out. You can restore HP by grazing bullets and picking it up later, but sometimes there are no bullets. My above changes lead to destroyed HP containers leaving the same remnants as if you had just lost your robot. So a destroyed container no longer restores your full HP but gives you +1 HP capacity. I noticed while playing that I sometimes rather waited for the containers to get destroyed as it was more beneficial. But waiting is not really fun. Soooo... I decided to make containers destructible for the player. This was actually something that was in the game right at the start, but at the time it didnt really work. Now it makes it a lot more interesting.

Linux issues

On a different note I received some linux-customer feedback and one player (maybe 2) have an issue with gamepad on Linux. It seems like this is not something that I am directly causing and assume it's a problem with webkit. Main issue is that I've made a huge amount of changes to the game and I am not in the most balanced of versions right now. Nonetheless after plugging through all of the above I decided to make a new version. Windows went fine, but the Linux version did not work off the bat. Turns out my older laptop no longer can run the game, due to the fact that I now have a 8192x8192 texture atlas and no longer 4096x4096. Turns out 4096 was the upper limit... So now what do I do? I currently only see one option, if it's supposed to work on older hard-ware and that is recalculating the texture atlas for every level. AAAAARGH. Not something I want to do as it will cause delays. I have no idea what can be expected from most peoples hard-ware.

Logged

JobLeonard
Level 10
*****



View Profile
« Reply #305 on: December 17, 2020, 03:56:43 AM »

Don't worry too much about Linux users, we're used to being second-class citizens who have to wait a bit to get proper help Wink
Logged
marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #306 on: December 17, 2020, 04:25:27 AM »

Making the linux version is actually pretty simple, if everything works as it should Cheesy. I really like the Linux community even if there are not many sales, so it's great if I can get some feedback. The Texture-Atlas issue wont be limited to my Linux laptop, it's a hard-ware limitation I will need to find a way to work around or accept.
Logged

Alain
Level 2
**



View Profile WWW
« Reply #307 on: December 17, 2020, 10:23:33 PM »

Thanks for the detailled update. It is nice to get a peek into your thought and work process. You said that you realized that you throw too much at the player too quickly and this is something I think many of us struggle with. We know our games inside our and are afraid it gets boring, so we throuw our content at the players, who maybe only want to enjoy the satisfaction of being able to use the skills they have learned for a while.
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #308 on: December 19, 2020, 06:42:13 AM »

Thank you for the appreciation. I'm never sure if I can really get my points across.

The changes to the weapon power-ups seem to be good, but there was still something that irritated me. In the screenshot at the top-left you can see the ammo counter for the weapon power-ups.


Weapon power-ups stack (max of 2, 3 with a special upgrade), but the stacking is limited to two. When ammo runs out the power up is removed. I noticed after a bit that it's not as much fun with no power-up at all, so I made one power-up infinite.

So far the new pick-up became infinite and the previous pick-up remained as long as it had ammo. A little weird, but not too bad. Now that containers can get destroyed things are a little more complicated. Destroyed power-ups can still be collected for 8 seconds, but it no longer provides any ammo.

(1): 0 ammo -> infinite because it's the newest one
(0): 70 ammo

If you pick up a new container (2),  (0) is discarded as more than 2 power-ups and (1) is discarded as it has no ammo

new (2): 70 ammo -> infinite
old (1): 0 ammo -> remove no ammo
old (0): remove > 2

So instead of the 2 stacked power-ups you had, picking up a destroyed container leaves you with the new power-up only. So it's really a power-down.

Another weird case:
old (1): 70 ammo -> infinite
old (0): 70 ammo

pick up damaged ammo (-> leads to stacked firepower)
new (2): 0 ammo -> infinite
old (1): 70 ammo
old (0): remove > 2

pick up full ammo (-> no stacked firepower)
new (3): 70 ammo -> infinite
old (2): 0 ammo -> remove
old (1): remove > 2

So it was all pretty counter-intuitive and I decided to switch the way it works. New ammo would be used right away, when it is depleted it chucks out the previous power up and becomes infinite. Also kind of weird, but the burst of power is now in the right order.

new (1): 70 ammo
old (0): infinite

But what happens if you pick up depleted ammo...

new (2): 0 ammo
old (1): 70 ammo -> get's chucked out as new has 0 ammo and now replaces
old (0): infinite -> get's chucked out because max 2

Not good... so I decided in the case of picking up a destroyed power up to replace the infinite slot

old (1): 70 ammo
old (0): new (2) infinite

It's still not exactly pretty the way it works. But it feels a bit better.
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #309 on: December 20, 2020, 05:59:51 AM »

So it looks like I have a quick and dirty solution for my 4k texture-limit issue (on old graphic cards). Simply scale down my texture atlas to match works quite well. It all ended up looking blurred so I simply switched gl.LINEAR to gl.NEAREST and it just looks kind of old-school now. I was dreading having to recalculate the atlas for every level + some of the new large images would likely still cause issues. Quick and dirty does it Well, hello there!

Logged

JobLeonard
Level 10
*****



View Profile
« Reply #310 on: December 20, 2020, 11:07:30 AM »

Do you have one texture atlas per level or one for the entire game? (I don't know how texture atlasses work)
Logged
marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #311 on: December 20, 2020, 01:19:44 PM »

I have one for the entire game, just because it's easier. The levels are not that predictable, so in theory I would have to remake the texture atlas before every level and it would cause quite a bit of loading time, where as now I have close to zero.

This is what it looks like reduced to 2048x2048
Logged

vdapps
Level 2
**


Head against wall since 2013


View Profile WWW
« Reply #312 on: December 20, 2020, 04:15:37 PM »

So that's one big texture atlas, wow. Shocked
Logged

Alain
Level 2
**



View Profile WWW
« Reply #313 on: December 21, 2020, 02:09:00 AM »

What the hell, that is one of the coolest things I have seen in a long time! I'd totally print out your texture atlas and put it up on my wall :D
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #314 on: December 21, 2020, 05:41:52 PM »

That's a really cool idea! Gentleman
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #315 on: December 22, 2020, 08:14:46 AM »


Working on this final boss for about the 1000th time... one of the new weapons turned out to be a problem as it just killed the boss nearly instantly. It's a piercing shot that does damage over time, so larger enemies take more damage. Here you can see my cool idea to visualize the HP state of the beast. Blue is 100% while Red is 0% aka dead. I think this will help me balance the parameters out.
Logged

nkm
Level 1
*


Ludere ergo sum


View Profile WWW
« Reply #316 on: December 22, 2020, 12:45:06 PM »

Amazing! Really like that spider Evil
Logged

marcgfx
Level 7
**


if you don't comment, who will?


View Profile WWW
« Reply #317 on: December 25, 2020, 04:18:53 AM »

First of all, let me get one thing out of the way: Merry Christmas!

As Christmas is not quite as active as it usually is, I have more time on my hands for Devader.

About a week ago I released the first fresh alpha and it was a bit of a mess. I was mainly interested in finding out if upgrading to a new version would fix a weird game-pad input problem on Linux, but ended up making an alpha for Windows/Linux that was way ahead of any planned schedule. Not that I have a schedule, but it was just not ready.

Boss music was not playing. This caused a weird issue with music stacking up. The game thought the Boss music was playing which should mean level music is turned off. After the boss battle the boss music was turned off that was never turned on, leaving level music turned on as it was never turned off. So when the next level started, both level tracks were playing. Nice.
All due to a mistake where I wrote > instead of >= ...

Lightning was causing a few performance issues. In some cases a vast amount of lightning was created recursively, also due to some sloppy writing. I was passing the wrong parameter to my lightning function, something that would not fly with anything but javascript...


Enemy spawning is seeded, that means placement is not random. I had thought it was working, but it certainly was not. Probably not something anyone noticed, but still kind of important. I'm still not 100% sure it works all the time, but time will tell.
Logged

JobLeonard
Level 10
*****



View Profile
« Reply #318 on: December 25, 2020, 06:51:17 AM »

>  I was passing the wrong parameter to my lightning function, something that would not fly with anything but javascript...

Ouch, yeah. Bitten by that quite a few times. JSDoc type annotations (or full-on TypeScript I guess) help a lot in my experience
Logged
Schrompf
Level 8
***

C++ professional, game dev sparetime


View Profile WWW
« Reply #319 on: December 25, 2020, 11:52:54 AM »

You know... that one ZFX guy always wants to convert you to Unityism. May I instead suggest the dark unforgiving powers of C++ Smiley
Logged

Snake World, multiplayer worm eats stuff and grows DevLog
Pages: 1 ... 14 15 [16] 17
Print
Jump to:  

Theme orange-lt created by panic