Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
frankenfreak
Feb 16, 2007

I SCORED 85% ON A QUIZ ABOUT MONDAY NIGHT RAW AND ALL I GOT WAS THIS LOUSY TEXT

#bastionboogerbrigade
Another lurker chiming in to say this thread is super interesting. I find solving problems like the recent Greeble and Collision posts the most interesting. I'm still laughing at the "airplane carrier" from the greeble post as well.

Adbot
ADBOT LOVES YOU

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
I'm glad you guys seem to enjoy the problem-solving posts. These are both the funnest and easiest for me to do since they're "real-time" and end up being a seamless experience with developing.

I've decided to post the next update a bit sooner, it should come in as early as 1-2 days. I was gonna work afterwards on the Imperial Ships. I got to do some of the concepts, write a new shader (to be futurely used by all ships), but my conclusion is that it would take me an entire month to implement everything I want properly and as much as I want to see different-looking ships, I need to move on and focus on the game design. Right now I can generate as many placeholder ships as I need. So next on my list was working on items and stages. I think with items, a basic stage and a small polish on the current algorithm to decide stage levels I should be really close to an Alpha.

Anyway, since the ShipGen got finished, I took a break to relax and try a few different things. These past few months have been very tiresome because of the laser focus on technical aspects. So I took a bit of a break to play around, write down the ideas I had for the campaign and story, draw concept arts, do some creative stuff which I missed. I even got around to study, learn and implement my first neural network based software, I hope in the future I'll be able to learn more and be knowledgeable enough to implement some machine learning features. Either way, next update I'll showcase some of the stuff I worked on during this break.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Chapter 22 - Sketchbook


For the past few days I took a break from the more technical stuff and worked a bit on the creative side. What I want for the campaign, how many stages, what's their content, and so on. Also how I'm gonna present the story and how I'm gonna try to make it non-intrusive.

I also got back to drawing sketches, so I think I'll post some. These are all new unless told otherwise.



A Blood Tribe color sketch that I drew over one of the silhouettes:



Blood Tribe ships are based on an old concept that I had for a shmup. Something that I said before is that I had a bunch of ideas for a shmup/space game but never quite got to it until I realized the whole procgen setup was the missing piece. Blood Tribe ships are an idea I had back in 2011. Here's a concept model I made back then:





I did quite a few characters but I haven't 100% decided on the design of the protagonist, Stella (your ship's AI) and a few other NPCs. Here's a few assorted characters though:











These weapon concepts are from a few weeks ago, when I was testing modeling them and placing them on the ship:




A few ship concepts. With the exception of the first ship they're all model variants for the Imperial Ships that I intend to model someday but that I think will take too much time for now. I start drawing the ship then separating it into parts. Sometimes I sketch how some parts would connect in a different angle to help me visualize them.



















Anyway that's it for now! Hope you don't mind the crudeness of some of my drawings.


NEXT TIME:

Testing stuff! Fixing a shitload of bugs!

Elentor fucked around with this message at 08:45 on Feb 5, 2018

-Anders
Feb 1, 2007

Denmark. Wait, what?
So is there anything you don't do? :3:

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
That's very kind of you. I'm no good when it comes down to music. I studied for 5 years but never really felt like I had a knack for it.

Dreadwroth
Dec 12, 2009

by R. Guyovich
Yeah music is hard as crap for me, even though I know logically its not as hard as I think it is.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
If you're familiar with Path of Exile, there are some interesting parts in this interview:

https://www.twitch.tv/videos/218320165

It's an interview with Chris Wilson, one of the founders of Grinding Gear Games. He talks a lot about the decision process behind some game design decisions in a way that's very frank and straightforward. The part where he talks about (~around 18 minutes) starting the company is pretty cool. I'm always inspired by this kind of stuff.

Elentor fucked around with this message at 13:41 on Jan 14, 2018

Phrosphor
Feb 25, 2007

Urbanisation

EponymousMrYar posted:

Ahhhh hahahaha.

Fix one thing, break two others :suicide:

That was a really enjoyable read, I like the realtime comments.

COME ON!

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
I'm honestly happy that I've managed to structure the project relatively well and all the refactoring I did is paying off, though. It's very easy to find the issue, bugs don't often act outside of their class jurisdiction, and I feel like every issue is self-contained.

With that said, I should have done a live blog of implementing item traits, I honestly didn't expect things to be so frustrating. It's a lot of failure for one single feature.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Still kicking. If you follow my project.log you should see I've been pretty active, but none of the stuff I worked is very interesting to warrant a dedicated chapter, so the next chapter I'll probably write a summary of the different things I implemented. Some of the stuff I did was finishing the combat and trait systems, adding support to buffs/debuffs, importing more data from items and add a more robust projectile system that allows you to be a proper bullet hell boss, and a lot of performance improvements to allow that to be possible.

I feel like I'm this close to getting to a single map infinite procedural game, so once I'm done with the current item stuff I'm putting more effort to get a viable fully functional ironman mode.

Sorry for not releasing an update yet, I actually got in the zone for the past week and managed to get a lot of work done. Once this hot streak cools down a bit I'll do some write-ups.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
A bit of a minor update - again, sorry for not having released a chapter sooner.

I've been doing a lot of bug hunting and small polishes fixing stuff that needs fixing, and enhancing the API for content creation. I'm really close to wrapping up the foundations for the game. I need to do two more things, and it will be done. Afterwards I can focus on content.

One of those things is a bug that I found that causes a weapon with +projectiles to do this really weird stuff:



Eventually, one of the projectiles, out of a sudden, and always the first projectile from left to right, offsets. It doesn't start this way, it lags out about 3/4s in. It doesn't slow down, its speed remains constant, it just simply lags behind.

I'm pretty much banging my head against the wall on this. Like, it's not a crippling bug, but it's a bug and holy crap why does it happen

Elentor fucked around with this message at 12:10 on Feb 4, 2018

Feldherren
Feb 21, 2011
As a not-terribly-good programmer who uses notepad more often than something with actual debug tools, my first thought would be to just litter everything with debug output to the console. In this case, whatever you're passing to the routines that draw the bullets, and whatever the routines are drawing. I'm not familiar with how you've written it, but if it jumps or stops I'd guess that the first bullet isn't getting its position updated along with its neighbours or something.

Is it every line when it approaches the top of the screen, or just every few lines?

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Some things maybe worth checking: what happens if you spawn the bullets in a different order? If you're storing the bullets in any kind of container, check that container for consistency. Can you log a statement from each bullet each time its updater executes?

klafbang
Nov 18, 2009
Clapping Larry
What happens if you spawn 5 or 3 bullets?

professor_curly
Mar 4, 2016

There he is!
Does it happen if you only fire a single spread of 4? Is it tied to distance from the ship, or does it seem to happen at a specific time after firing?

Also take a closer look when firing a single projectile to see if it happens then as well, but less noticeably because there isn't a handy comparison group next to it.

EponymousMrYar
Jan 4, 2015

The enemy of my enemy is my enemy.
My gut says there's probably some delay happening with it, maybe with drawing. Might be because something wigs out when having to draw so many bullets. Try amping up the +projectile to something inane for test purposes and see what happens.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Okay so here's some good news. I solved the issue, and as far as my checklist goes, I've finished everything I needed/wanted for the backend of the game. It took me long enough, but I did it! The only other system I can think of is dynamic laying out tilesets but I'm not getting into it anytime soon and for what I have in mind for the first demo, everything should be in order. Now we just have to fill it with content. :cheers:


Feldherren posted:

As a not-terribly-good programmer who uses notepad more often than something with actual debug tools, my first thought would be to just litter everything with debug output to the console. In this case, whatever you're passing to the routines that draw the bullets, and whatever the routines are drawing. I'm not familiar with how you've written it, but if it jumps or stops I'd guess that the first bullet isn't getting its position updated along with its neighbours or something.

Is it every line when it approaches the top of the screen, or just every few lines?

Yeah, I solved it by making each frame require a key input and analyzing every frame individually while debugging every single step.

klafbang posted:

What happens if you spawn 5 or 3 bullets?

Same bug happens with 2, 3, 4, 5, and so on.

professor_curly posted:

Does it happen if you only fire a single spread of 4? Is it tied to distance from the ship, or does it seem to happen at a specific time after firing?

Also take a closer look when firing a single projectile to see if it happens then as well, but less noticeably because there isn't a handy comparison group next to it.

You were right that it also happens with a single projectile. Kudos.

EponymousMrYar posted:

My gut says there's probably some delay happening with it, maybe with drawing. Might be because something wigs out when having to draw so many bullets. Try amping up the +projectile to something inane for test purposes and see what happens.

That's what I initially thought as well and where my initial efforts went, but no cigar.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Well? What was the cause, then?

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Find out more about it Tuesday in this very channel.

I wrote a bit about it. Don't want to spoil the ending.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Chapter 23 - Bugs, Testing and Oversights


It's been a while since the last update. During this time I added in a bunch of systems in the game and polished the remaining few. I got pretty focused on the code and since most of it was behind-the-scenes stuff, I didn't feel like any of them warranted a particular update, though I've been posting on my project.log fairly regularly. The idea was to get things ready for the content creation, which are going to be items and then the first procedural stages.

I want to dedicate this chapter to bugs. Bugs are present all throughout the development of a game and after. I mention a lot of problem-solving, but have yet to dedicate a chapter to bugs, conceptually. So during this chapter I'll talk a bit about them, as well as general programming oversights, and all the tests that I had to run.


Really internal stuff #1 - Determinism

One of the things I worked on was making sure everything was deterministic. That is, that any given state is reproducible and will yield the same results if you execute the same actions every time.

The #1 thing was removing any references I had to Unity's default unseeded Random class. Before I switched to PCG (the RNG method I chose) I had a bunch of classes using Unity's random. The #2 thing are some more language-specific idiosyncracies, for example - in C#, Dictionaries (a class that takes any kind of input to use as a key to return a value) are not ordered, which means it loses its determinism - if we loop through a dictionary, you might get a different ordering of its values even if the order in which the values were initially inserted is the same.

I know, if you're not a programmer this is a bit counter-intuitive given that real-life dictionaries are typically alphabetically ordered. But this is the kind of detail that can screw games up.

Since PCG's footprint is so light, I decided to do something slightly different. I created two different seeds - one for low frequency game states (shop, stage generation, ships available, etc) and one for high frequency game states (combat variables, non-gameplay related graphic events, etc). I'm not sure if this is positive or negative to speed runners (it makes things more predictable for any given seed and like most procgen games I intend to let players load a custom seed), but it helps me a lot when it comes down to debugging the game, because I can now play the same set of stages and if I find anything wrong I can reproduce the event without relying on having to execute things perfectly in a stage.

It has since worked perfectly and I've been able to identify and fix a dozen bugs, which brings me to:


Really internal stuff #2 - Testing

Every time I'm coding or implementing something, I keep thinking of Final Fantasy VII's infamous Magic Defense bug. If you don't know, in FFVII the item stat Magic Defense does nothing. It's not the first time it happens - as the above page states, FFVI had a similar bug with Evade. When I was a kid I used to wonder how the hell are these things not detected? Well, I can see Magic Defense not being detected easily.

First, you don't know what the number displayed actually means. Is 10 MDef good? Is 100 good? These numbers are pretty worthless. To make matters worse, these games were tuned pretty poorly back in the day and I think, intuitively, we all knew. I alway wondered if the low Def stat in the first piece of armor you get in FF7 did anything at all even if the formula worked, and eventually I spreadsheeted it out of curiosity and found out that no, it doesn't. There was no enemy in the game, no combination of health or damage taken, no nothing that could be mitigated by that Defense value that would have made you survive a hit otherwise. And that's with a value that's working as intended.

Couple that with the fact damage is random (the same hit can deal 90 or 100 damage) and it makes very hard for even a dedicated QA tester to figure out if those values are working or not.


Once I started coding, I realized that it's not a trivial task to keep track of those things as you code either. If you're creating a class that holds the following stats:

* health
* armor
* regen
* bonusdamage
* defense
* magicdefense
* dodge
* resistance

You're not gonna type one of them at a time, implement it, and then go back to it. If you do, you'll need a list beforehand. It's easier to just type everything at once and then implement them later. But what if one of them, say, dodge, requires too many hooks? The others might take 10 minutes, but dodge might take an entire implementation of a new system that takes 5 days and by the end of it you're doing something else entirely. You might even forget to implement dodge in the firstplace, or to implement resistance afterwards. So that means you also need to keep a list of the things you did.

So now you have 8 formulas that had to be inserted somewhere. If your game has hundreds of stats and variables, it's very unlikely you'll manually test all of them. But let's say you went out of the way to test dodge, because it required 5 days of work. At this point you have checked everything on the list, but then you haven't tested health through magicdefense, and you might have typed a + where a * should be. No one tested it. What if it's a formula that makes magic defense super effective because of that sign, whereas in your initial tuning, Magic defense would be complete garbage because you didn't tune it right? A QA, without knowing it, might find the game to be actually balanced. Hell, you might also find the same.

Which brings me to a very slow process. I try to test as much as I can. I probably still skip a bunch of stuff. But what I do is, I make a list of what I need to test, model the formulas as intended on Excel, and then debug step by step every value along the way and see if it matches the spreadsheet. If I hadn't done that, resistances in my game would be completely messed up as I screwed up their formulas in 3 different places before debugging. I'm not ashamed to admit it - these mistakes happen, they happen a lot, and games are shipped with some of them. But until I learned how to code I didn't understand why. It's the sheer volume of things, dawg.

So I test



And I test



And I test



And I test



And that takes a while, but it's worth in the end I believe.


I make small mistakes that render some stuff non-functional all the time. I am privilleged to have played, read, and familiarized myself enough with a bunch of bugs that are commonplace so that I keep those same oversights in mind when coding, as well as oversights that may derive from a similar line-of-thought. We're privilleged to have played so many FPS games where moving diagonally means you move faster because up + right (a vector of 1,1) has a magnitude of the square root of two (1.414...) which is bigger than moving up (0,1 has a magnitude of 1) or right (1,0 also has a magnitude of 1). Moving diagonally instead gives you the hypotenuse of a triangle with sides 1. So many great programmers made this oversight that it became a commonplace issue, something that you keep in the back of your head. When designing movement you need to take in account that the magnitude of the movement should be constant, and so moving diagonally should give you a speed of (0.70, 0.70), not (1, 1). This issue has been present in so many games. Googling should give you plenty of results. Goldeneye is a prime example.

And so I say these things with the utmost respect for the people who coded blindly in the past. And I find hard to judge anyone for a mistake, even a simple math one, because it's not just that the mistake is obvious or easy - it's just the sheer amount of things you need to code in a game.

What about item duping, for example? As a kid, I could not believe how dumb it was to dupe items in Diablo 1. Only to find out that there were 3 different methods of duping items in The Sky is Dead. gently caress. I mean, I fixed them all, but what if there are more methods that I haven't found yet? It seemed so obvious, so easy. All I can think now is, how many duping bugs they must have fixed before shipping the product. And Diablo 1 is a game I hold in the highest regard.

Out of all the programming oversights in existance, I brought up the vector one because at some point I realized I made a very similar mistake:


Jump Range Bug

I did a two hour test trying to move as far away as possible from the original location. My intention was to see if in two hours there was any memory leak, the deadliest of all the bugs and one I want as far away from my ProcGen game as possible.

Now, I found a bunch of other space oddities, some of which I'll talk about in the next chapter. During the run, however, I noticed something slightly off: My ship showed an average jump range of 1.8, but most of the time I could travel 3-4 squares at a time. Over 2 hours that meant something was very off.

Then I realized what was wrong. The game gets your odds of travelling (from 0 to 6 squares) and multiples it to the distance of all the squares within a 13x13 square around you. Noticed something?

First, it's not a circle around you: It's a square. The exact same bug of movement in Goldeneye, Morrowind, and other games, only in a slightly different shape. Moving to (6,6) means you're moving to a magnitude of √(6^2 + 6^2) = √(36 + 36) = √72 = 8.48. And 8.48 is not 6. So your average distance moved is higher than I initially presumed, and your Jump Range 6 was being applied to all these squares. Pictured: The distances from the original point.




Now, to be quite honest, I do not mind that you can travel to 6,6. That's not even the problem, exactly. I mean, it's an oversight, but not a major one - unlike the movement in goldeneye, this is more of a symptom than the cause.

The cause is that the game is rolling between 169 (0,0 also counts) squares. And if you have Jump Range 1 50% and Jump Range 0 50%, then what does that mean? Well, there is exactly one square of distance 0, and 4 squares of distance 1. So you're not getting 50%/50%. You're getting 20%/80% (0.5 for 0, 0.5/0.5/0.5/0.5 for 1, which gets normalized afterwards). In fact, there are 20 cells that situate between 3 and 4 distance units, and 60 cells above 6 distance units. In fact, if you want to know their exact progression:

JR 0: 1
JR 1: 4
JR 2: 16
JR 3: 20
JR 4: 24
JR 5: 40
JR >=6: 60, which is the sum of:
JR 6: 36
JR >6: 24

Knowing the weights, adding the falloff is quite easy. I individually adjust some offsets to fine-tune it and make longe jump range boosts a bit more effective, tune in some weights, and calculate the inverse of the distance for each square using its real distance (not just the jump range). And here's for my last lovecraftian horrors of a spreadsheet of the day:



I make a simplified formula for the game to quickly calculate your average JR, with a +-1.01% margin of error, then I tested it in-game and made anotations for another 3 hours. The average jump range converged to the predicted value, as well as the predicted values of my "smart algorithm" that tries to detect which route you're taking and give you more options to travel in that direction and back.



Anyway, that's it for now! I already wrote most of the next chapter (this was going to be a single chapter but I decided to split it in two due to its size), so it should be up tomorrow.


NEXT TIME:
More bugs! Item Traits and Features!

Elentor fucked around with this message at 15:30 on Feb 5, 2018

SIGSEGV
Nov 4, 2010


I think you borked your first (and possibly second) link a little, it's linked in the testing part but is about C# dictionaries. I guess it should be earlier and the one in #2 should be FF8 mdef.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

SIGSEGV posted:

I think you borked your first (and possibly second) link a little, it's linked in the testing part but is about C# dictionaries. I guess it should be earlier and the one in #2 should be FF8 mdef.

You're right, thanks!

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Chapter 24 - A bunch of stuff


Playing around

In one of my stress tests to see if the game wasn't leaking memory, I played for about two hours or so trying to move as far as possible from the starting point. The final image in the latest chapter was me taking note of the movements to see if it matched the algorithm I wrote.

During this time I implemented two things in the interface to make me less insane. First, a stat-tracker:



Fun fact: While I was painting the background image for that panel, my pen broke. I mean, the tablet could still detect movement in it, but it didn't detect pressure/touching. So I assigned the side button to "click" and used the keyboard shortcuts to control the Photoshop opacity. I do not recommend doing that as it is as painful as it sounds.



I also wrote a quick grid for the stage select menu to visualize things. There's so much I want to do to spice this up. But just having a grid to visualize stuff is already immensely helpful.

So one of the things that happened was that the scaling was out-of-control and both the level and exoticity of stuff was getting crazy after a while.



First, the colors get wild (exoticity changes the color variance of ships and it's meant to go up to 10). I actually like this and I'll probably tune exoticity to make wilder things at existing levels.

Second, look at that name. That's a long name.





Lots of really nice pink makes me want to use it as a standard color variant of some faction.



Something about the Grind Prima feels really nice too.



Items are not meant to go so high. It kinda messes up the interface, in general.



I like the Salt Creeks. Let me use it to showcase the next feature:

Multiple Projectiles:



I worked on a Multiple Projectile System. It allows me to setup a weapon so that each weapon has their own way of splitting the projectiles, using the following attributes:

* Pattern

These define the pattern with which the projectiles will use the following attributes, as well as the general template for each attribute in case I don't want to individually customize every weapon.

* Minimum Angle
* Maximum Angle
* Amount of Projectiles for Maximum Angle

There's a nice star-shaped weapon that is very easy to setup with this.

* Minimum Distance between Projectiles
* Maximum Distance between Projectiles
* Amount of Projectiles for Maximum Distance

Same parameters as angle

* Y-Offset

This makes some projectiles offset (shoot ahead/behind). Which projectiles are chosen is based on the Pattern. For example, if you take a look at the Gentle Soul, you'll see that the central projectile is shot ahead of the others.

* Delay
* Source of Delayed Projectile (Current Position or Original Position)

As the name implies, this makes some projectiles delay a bit once an attack is released. This makes for some pretty cool patterns.


The Gentle Soul already comes with 3 projectiles, but having a multiple projectile systems in place gave way to the first trait I implemented.


Item Traits



Traits come randomly when an item is spawned. Items sold in higher quality shops or dropped from higher threat stages have a chance to have more/better traits. Traits have different levels and rarities.

For the Electromachine Gun, even though the weapon has only 1 projectile originally, I set up so that it always shoots forward with no angular variation.

Here's an example of the same trait coming at a higher level:



Oh, and also:



+Projectile Size is a really fun one. Originally I tuned very lightly (+10%/20%/30%/40%/50%) but then I kinda realized that players will probably see +size as a bummer if they don't get stuff that increases their damage, and things are more fun when they feel powerful. If +Size is not gonna increase your DPS directly, then at least let's make it fun. These go up all the way to 3 times the size.



I also added a counterpart to +Projectiles. Since +Projectiles reduces your damage to compensate, I added in a %chance of extra projectile. These deal full damage.





With the proper setup these already give a pretty nice feeling. Spreading bullets with a +2 Proj Gentle Soul in a Rotating Weapon Mount makes you feel like an action hero.



Here's for some bullet hell action. This is a boss I made for the debug map to test buffs/debuffs against him. Something I did while playing against it was to globally reduce the player ship's size and to make the hitbox more accurate.

This makes it actually possible to dodge every single one of his projectiles (and he shoots a lot) with a Spoony Goon which is way bigger than a general Touhou hitbox, which was a very pleasant surprise. With the 4k widescreen, it's a piece of cake.



Not with the Iron Stone L-1 though. Wide ships have a huge disadvantage and it was pretty noticeable. I like that, I like the shape of your ship being important.

Anyway, these are the current fully functional traits:

quote:

AddWeaponDmgBase,
AddWeaponDmgPhys,
AddWeaponDmgFire,
AddWeaponDmgCold,
AddWeaponDmgElectric,
AddWeaponDmgWind,
AddWeaponDmgLight,
AddWeaponDmgDark,
AddWeaponDmgPoison,

WeaponCdMul,
WeaponProjectileSpeedMul,
AddWeaponDmgBasePercent,

ReducedWeaponEnergyCost,
IncreasedWeaponEnergyEfficiency,
AddArmorPenetration,

IncreasedProjectileSize,
AddProjectileLessDamage,
ChanceExtraProjectile

For a total of 18 traits, 10 if you don't count elemental variants.

Floating Doodads, Part Deux



I'll make this quick. I found an issue that prevented ships not using the Spoony Goon's algorithm to have greeble evenly spread. I fixed it. And - yup.



We've been through this already, so I knew where to look. Some of the models were offset in Maya. I adjusted them and voilà. Everything is working on my debug favorites:








Back to Items

I included in 17 Generators for the Independents faction, and 23 Armors. Something that took me a while was hooking them up, testing their scaling, and so on. Except for their graphics and custom traits, they're all fully functional stats-wise.



Also wrote a bunch of descriptions :3:.



While writing the description text for the generator and armor items I had a nice idea. Since I want to take in suggestions for the flavor text, I realized that I could add in the possibility for the same item to have multiple descriptions. When the item is generated, one of them is picked at random. I wrote some small variations on some existing items for fun.



Working on items is the next on my list. I'm very excited to get to it.

Some more Shop Functions

I added charges as a feature to some shop functions, and implemented six more options:

* Upgrade Level/Reroll Trait Value/Add Trait to Item/Ship



This gives us a total of 11 shop functions so far (along with reroll name, buy/sell ships/items). I'm happy with the variety of stuff at this point and everything has been working as intended for the past few thousand or so shops I tested, so I'll be putting working on this on hold until much later on.


Bug with Projectiles

And now for a really strange thing. Did you notice something off in one of the first images showing the projectiles?



A really strange bug was that the leftmost projectile of a weapon with multiple projectiles was being delayed for one frame when they were about to reach the end of the screen. And sometimes as soon as the weapon shot as well. This was a really strange and oddly specific bug that got me thinking for a while.

professor_curly had the right idea:

professor_curly posted:

Does it happen if you only fire a single spread of 4? Is it tied to distance from the ship, or does it seem to happen at a specific time after firing?

Also take a closer look when firing a single projectile to see if it happens then as well, but less noticeably because there isn't a handy comparison group next to it.


After closer inspection, I noticed the bug was also happening with single projectiles. I ran the game frame-by-frame and debugged everything until I found the culprit.



Don't remove objects from lists you're iterating through.


Apparently the check for out-of-boundaries projectiles and their removal was happening within the same function that moved them as the list was iterated, something that really wasn't intended. The result is that as the list index changed, one of the projectiles moved to the same index as the object we had just removed from the list, and as such it wasn't called for an entire frame.

Isn't programming wonderful


NEXT TIME:

Polishing weapons! Hopefully no more bugs! Who am I kidding, there's always bugs.

Lechtansi
Mar 23, 2004

Item Get
Hey Elentor, I just read through this entire thread in one sitting and I'm hooked. I have 0 experience with game dev, so its mostly gibberish interspersed with cool pictures, but I'm at least following along.

And the backstory you created is A+, i can't wait to see what you do with it.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

Lechtansi posted:

Hey Elentor, I just read through this entire thread in one sitting and I'm hooked. I have 0 experience with game dev, so its mostly gibberish interspersed with cool pictures, but I'm at least following along.

And the backstory you created is A+, i can't wait to see what you do with it.

Thanks a lot. If you (or anyone) have any questions about the technobabble, feel free to ask. This way I know what's flying over the ahead and can append stuff to the chapters.

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Actually, I do have a question -- what was your approach for building the backstory and setting, and how long has it been gestating in your mind? One of the things I need to work on for my own procgen game project is the setting, which right now isn't really any more well-defined than "science fiction".

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

TooMuchAbstraction posted:

Actually, I do have a question -- what was your approach for building the backstory and setting, and how long has it been gestating in your mind? One of the things I need to work on for my own procgen game project is the setting, which right now isn't really any more well-defined than "science fiction".

Huh that's a good question but I'm not sure my answer is particularly helpful.

I have two stories that I want to tell and these are pretty much the only two-story based games I intend to make unless something else comes. The setting has been gestating in my mind for a very, very long time. In general I try to build things in a way that seems coherent to me. When I'm diving into surrealism I make a point to make a clear divide between the surreal and the abstract, something a lot of modern stories don't do. Surrealism is a distortion of reality, and I usually build things around reality as I understand it.

This may sound obvious but reading a lot is good to know building blocks. I'm not by any means an expert writer though I do like to write a lot, I guess, so take whatever I say with a grain of salt. But I don't brainstorm the beginnings of any story. I brainstorm their details and how I'll flesh them out, but most of the time I DM'd or planned a story I just took something from myself. I wrote something that I thought or pondered and tried to convert abstract thoughts into a physical thing.


For TSID's background, I can tell you all the events that made me think of the backstory. They more or less originated when I was thinking about mysticism and my philosophy teacher explained that the divide we see nowadays between philosophy, science and magic did not always exist and that while it was not a 1 to 1 correlation, Newton probably thought of his alchemy experiments the same way we would think of chemistry today, and the weight with which we give to certain words don't necessarily mean that people doing them had the same intentions we do. A lot of mathematicians in medieval times dabbled in things we would call foolish. But I entertained, in particular, this modern notion that a researcher is exploring the unknown, the boundary of science, and how that would apply retroactively to all those people exploring ideas we're absolutely sure right now are bananas.

So this idea of magic kinda turns into science once explained, which is nothing new. A lot of people, however, don't want science, they want magic, and I wanted to understand that. There's something in common between all the "serious" magic work in that most of them - not all - treat itself to a degree as pseudo-science. And if you take a look at the backstory of games like D&D, a mage is a huge nerd studying to do things that are manipulating reality, and to me that's kinda where this lust for mysticism dies. We're already doing magic. And even when I was a kid I had heard dozens of times the old adage that to people who lived 1000 years ago, what we do right now is indistinguishable from magic, and "any sufficiently advanced technology is indistinguishable from magic". A lot of high-fantasy magic seems to be this very abstract manipulation of reality, so I thought about a world where people did things that, to us, would be magic. In my mind I had this notion of a universe that had been so fundamentally altered that stuff like "we can't go faster than light" would be inconsequential. The setting kinda sprung when I asked myself the question, how would people from a simulated universe manage to get out of it? If generations of humans were born trapped in an MMO simulation with our current technology, would they write books about how the fundamental particle is a triangle? Instead of string theory, would they theorize about the way we handle memory and, who knows, find ways to exploit it? How many would rationalize bugs in the system? How would one escape that system and even communicate with the outside world? What if someone found a way to crash the simulation, or do a buffer overflow and write their own code?

Afterwards I realized I could extend this principle to our universe and apply this idea of someone loving around with our universe's memory. Eventually that person figured it out but until then, so many glitches and changes had been introduced that we now lived in a "post-physics" universe, at least from the perspective of the people involved. There are a few safeguards in place that prevent the universe from breaking, and a lot of it consists of rollbacks and code that make certain things static. So I wrote all the laws of physics that had been changed, I wrote a detailed backstory so I could have a reference for everything that happened, and what were the consequences of each event. I read once that if you're planning a setting you need to write a lot more than you're gonna show because the game/book/movie is going to be a part of something larger, and so it needs to be anchored in events that might be outside its boundaries. Otherwise you get inconsistencies. I built this over many years, but the basis was that idea I had thinking of how someone would try to exploit our universe's code.

When I have to brainstorm something I do the same process but intentionally. I take elements of philosophy, history or stuff I saw in my life and try to combine/morph/expand them.


After you have a setting you need characters in it and I think this is really what separates the really good authors from the mediocre ones, because it's really hard to have a lot of characters who are good and interesting in their own rights.

In general, the one seemingly unhelpful tip that a lot of writers and critics give is to tell a story you want to tell. Until TSID I hadn't found a proper avenue for my science fiction story and I didn't want to rush it, but I think the format fits a procgen game perfectly well and it was a match made in heaven. I've never published my stuff before but over the years I wrote a lot of things and they're all themes that I want to express. To be honest, a lot of the things I want to tell are extensions of the life I lived. When I wrote my FFVII LP I put a lot of effort into drawing comparisons between Midgar and the favelas because, to me, FFVII kinda conveyed that well, and I thought I really should write about that because otherwise people might not get it. I once saw a guy in YT many years ago saying that he thought City of God was unrealistic because it had kids with guns and that's non-sensical. And that kind of commentary makes one feel silenced, if that makes sense, when you had to grow up in that kind of environment. So my inspirations are mostly the people around me and the stuff I saw, and the things I heard. The main theme of TSID's story is mortality, and how the immortal characters deal with their existence in a universe they can't understand. One of the characters grows apathetic of everything, one of the characters has survivor's guilt, one of the characters is a nihilist, and so on. For the RPG I've been planning and intend to work on after TSID, the main theme is losing everything and building from the ground up. Which may seem like a very easy theme to build a game upon because we usually link it to game mechanics, but I want to convey it in the emotional sense, to express how I felt. The characters find themselves in a dystopic world with no memory of anything, except the one thing they loved the most, and they're stranded away from it.


I'm not sure if I'll ever managed to do it, but to me writing has always been about expressing things and that seems to be a general consensus, so I think my best recommendation is not to do anything as a filler, and pour yourself into your work. Whatever it is you have inside of you that you want to express. For the setting, whatever crazy thoughts you've had about philosophy or sci-fi ideas that you thought too absurd, whatever are the things that are your ideas, if you're the creative type you've probably had them by the hundreds. At this point I don't want anything I do to be a filler and that's my general sentiment. Black Mirror and Twilight Zone seem to have settings based on general anxieties of their generations. So pick something happy, sad, something you feel and try to turn it into a world.

Elentor fucked around with this message at 12:34 on Feb 8, 2018

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Thank you very much for that writeup. I realized after posting it that it read a lot like "where do you get your ideas", so I apologize for flinging that cliched old message at you. But the insight into the "backstory of the backstory" for TSID is really interesting. The intersection of sci-fi, mysticism, and ruminations about immortality sounds like a really rich source of content and I'm looking forward to seeing the particulars unfold.

Speaking of which, I think part of my own difficulty in creating things is my tendency to break everything down into abstractions (hence my username). I can talk about interactions between rules, sources of conflict, guiding principles, and other high-level stuff all day, but I have basically zero practice in taking that and turning it into particulars. I guess maybe one place to start then would be to come up with a set of high-level abstractions that I find interesting, and then try to dive down and say "let's say we have this particular embodiment of those abstractions, what would that look like?"

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

TooMuchAbstraction posted:

Thank you very much for that writeup. I realized after posting it that it read a lot like "where do you get your ideas", so I apologize for flinging that cliched old message at you. But the insight into the "backstory of the backstory" for TSID is really interesting. The intersection of sci-fi, mysticism, and ruminations about immortality sounds like a really rich source of content and I'm looking forward to seeing the particulars unfold.

Speaking of which, I think part of my own difficulty in creating things is my tendency to break everything down into abstractions (hence my username). I can talk about interactions between rules, sources of conflict, guiding principles, and other high-level stuff all day, but I have basically zero practice in taking that and turning it into particulars. I guess maybe one place to start then would be to come up with a set of high-level abstractions that I find interesting, and then try to dive down and say "let's say we have this particular embodiment of those abstractions, what would that look like?"

No worries. I empathize with you, But yeah, just get your hands dirty, take those high level concepts and try to turn them into something low level. When you're not actively writing, try to picture things in your head whenever you have the time.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
I've been resting a bit doing lighter stuff. Not full update-worthy, but I still want to share:

Wrote a lightning shader that I intend to reuse a lot. It works really nice in motion.


Made the ship's texture slightly less placeholderish by dirtying it up a little:


I talked about the +Projectile Size in my previous chapter, here it is in effect at a relatively low level:

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS
Chapter 25 - Faction Weaponry: Independents

Right now I got a bit of a good thing going where a huge part of the game's backend is done. I can fill it in with content. I did a quick quality pass on the current weapons (Proton Emitter, Gentle Soul, Electromachine Gun, Subcannon Blaster Mk I and Bronze Gift). But now I'd like to extend their design to you.


YOU. Yes. You.
For the next couple of chapters, I'm opening up the Indepent Weapons for contributions. These include:

* Weapon descriptions. I've done a few but this is the meat of the thing. If you want to contribute with a serious or whacky weapon description, I'm more than thankful. I also wrote a system that allows for weapons to have multiple descriptions in the databank so feel free to contribute even if someone else already suggested something to a certain weapon.
* Ideas for new weapons. If you have a nice idea for a weapon and you don't mind sharing it, but the weapon don't fit the Independents (themes below), see if it doesn't fit another faction better. You can still suggest them now even if it's for another faction and I'll put in my backburner.
* General changes. Name changes (some of it is a bit placeholderish), Art ideas, Gameplay ideas, general tips/modifications/suggestions.


If I decide to include something you did your name will be listed in the credits, and I'll prioritize working on the weapons that have stuff suggested by the community so you'll see those in future videos/updates a lot earlier. This is going to be open even after Chapter 26 so if you're reading this in the future and I haven't edited this post to close it, feel free to post your suggestion.


Where to start:
This chapter details almost all the weapons I have planned for the Independents. In addition to that, I'm doing something unconventional. I'm pre-releasing a spreadsheet that contains the stats for the Independent Weapons.

https://drive.google.com/file/d/1qi9D9b9mkB8HsRUylY0v99B2hKHNA6GK/view

Feel free to just read the chapter and ignore them, or the opposite, or read everything.

A few pointers if you decide to take a look at the stats:

Rarity influences the price, but does not influence the power or scaling of the weapon, a weapon can be rare and gimmicky. Rarity goes from 0 to 10 and items with a rarity of 10 are considerably rarer to drop than rarity 0. Rarity is affected by drop quality which is influenced by shop type or level threat. A level with a high threat can drop rarer items more often, but present more ships, higher health/damage, ships with better weapons and more aggressive AIs and so on, and are meant to be a challenge.

DropBudget means the level at which the weapon stops having a drop penalty. If a weapon has a dropbudget of 100 and the stage has a level of 100 or more, then there's no penalty. A stage level of 200 will apply the same multiplier, dropbudget is only a penalty for being underleveled. Levels in TSID go from 0 to 240.

The penalty never scales all the way to 0%, but it's pretty harsh. An item of 20 db only has a 13% chance of dropping from a stage of level 10. The lower floor of the chance is always 1 to db*10 so somewhere a player will drop a level 240 weapon in the first stage (scaled down of course).

Exoticity refers to the minimum (and maximum) level of exoticity wherein a weapon stops having drop penalties. Same rules as the others, however a place with higher exoticity will have a penalty for lower exoticity weapons.
Also high exoticity items are meant to be whackier.


Factional Themes:
A few keywords for ideas and references: Rebels, Backwater, Militia, Dystopic, Dictatorship, Desert, Settlers, Explorers, Rural, Western, Retro.

Independents don't have a common culture but they're generally from a similar background - early settlers seeking their own fortune. Some of the planets are only partially terraformed, some have never grew more than a few eco-domes in the desert. A few communities grew enough to become powerhouses, some became military dictatorships, some are highly industrial and sell their goods to other bigger factions. There's variance but in your mind independents are just that, settlers too small to pose a threat. When you think of them, you think of dirt, deserted planets and improvisation.



In general, you treat independents as every sovereign limited to a single planet or a planet + moon. As of the start of the game, you're being hunted and you have no idea if the major players have allied with the Empire or not. Some of the Independents will shoot you, some will sell you goods, but you know that they for the most part don't pose a long-term threat to you as much as the Empire.

When designing them I think of the stages of colonization. Some items being good for new settlers, some of the items being consequence of a world that never really got off its feet, some of the items being heavy armament bought by a richer faction trying to militarize itself being sold high-end stuff from a big interstellar corporation, some of it being make-do high-tech inventions from a world that's trying to be self-sufficient and advanced but not quite getting there.






High damage, high energy cost. Every ship has at least one slot and you're obligated to have at least one primary weapon equipped.


Proton Emitter
The weapon with which you start the game. Average stats, somewhat rare drop. It's a bit of a relic of the past and modern weapons use its basis, you favor it due to being oldschool.

Subcannon Blaster Mk I to IV
These are a series of primary weapons that shoot a cannon ball. They deal a lot of damage and cost a lot of energy per shot. These are the best weapons if you have a super pimped out generator.

Gentle Soul
A low DPS but very energy-efficient shotgun that shoots 3 projectiles and comes with a guaranteed trait. A bit more expensive.

Bronze Gift
Shoots an ornamented bronze cannon ball, similar to the Subcannon Blaster. In my mind this was a bit of a retro-fashion fad that lasted for a few years and this was competition to the SCB.

Highwayman
A high spread, super slow shotgun with the potential for very high damage. Shoots 6 projectiles at once. Has a large angle and lower projectile duration.

Air Buster
Pops out a huge burst of gas. Slows down enemy projectiles.

Chekhov's Launcher
A heat-seeking missile that eventually explodes and deals AOE gravity-based damage to everyone, allies or foes. Will always explode inside the boundaries of the screen.

Micromoon
Shoots a literal moon miniaturized. Deals massive gravity damage per hit.

W Machine Gun
Fairly regular weapon that serves as a common drop. The fastest of the independent primary weapons.

Matra Rockets
Slow weapon, but shoots a bunch of rockets at once.

Aldrarian Eggshards
As the name implies, it shoots egg shards, particularly sharp ones. Has a chance to crit trait. If it crits, it shoots a whole egg. :v:

Eldritch Laser
A dark laser that distorts the space around it. Deals the most DPS and has the lowest energy efficiency of all the independent weapons.

Rebel Spark
Shoots a red laser, deals Fire damage. Very good if a bit uncommon weapon.





Secondary weapons deal a bit less DPS (half on average) but cost much less energy.




Boltshooter
Shoots assorted bolts and engineering parts. Damage dealt per projectile varies.

The Colonizer
Shoots seeds. If the enemy is weak, it grows plants on them. :v:

Matchfire Laser
Thin lasers that deal pure fire damage. These deal a crazy amount of damage at the cost of being very inefficient. The fire color changes according to your energy levels.

Electromachine Gun



Shoots electrically charged bolts. A very common secondary weapon.

Chaotic Redirector
A high DPS but energy expensive weapon. The energy is reduced proportionally to your Dark resistance.

Flying Drill
Shoots a huge actual drill that adds an armor reduction debuff to the enemy.

Y-Type Ion Cannon
Shoots Light-Element Ion Pulses. These reduce enemy's shield and energy regeneration.

Romeo / Julieta
These guns deal 100% poison damage and scale inversely to how much HP% you're at.





These are activated on demand, have a long cooldown and don't cost energy. Like other weapons you can have at most two of them equipped, but they can be activated simultaneously or individually. Very energy-efficient. Usually screen-wide special attacks.


Wave Artillery
Shoots a huge water wave from behind you with explosive bursts being shot from within. Deals mixed Cold and Fire damage.

Turbo Fireblast



Common low-level drop. Shots a gigantic screen-wide fireball.

Settler's Beer/Ale/Stout
Tosses a huge chunk of corrosive beer on the enemies. Each item has a different color and element.

Snowfall
Pour down snow on the entire screen, freezing enemies.





These are passive items that do something without necessarily needing activation.




The Grenadier
Constantly tosses grenades around you at random. These deal fire damage to the first enemy hit.

Poor Man's Buttler
Occasionally throws items that restore HP at random in the stage.

Heli-Rotor
Gigantic Helicopter Roto on your ship that deals damage to enemies coming close to your melee range.

Illegal Super Snack
Creates a gigantic donut around your ship that absorbs damage. Any damage will break part of the donut.

Fungal Phasefield
Glowing Mushrooms that cover your ship and increase your Shield Regen, based on your Energy %.

Pillowtalk
Active weapon, throws pillows that stun enemies whenever you shoot with a moderate cooldown.

LR Ion Dispenser
Passive weapon, automatically targets the farthest away enemy and shoots at it.

On the Fence
Two electrified fences that cover each side of your ship. Enemies caught in them are dealt electric damage.



NEXT TIME:
Surprise Surprise!

Elentor fucked around with this message at 13:15 on Feb 11, 2018

klafbang
Nov 18, 2009
Clapping Larry
Have you considered instead of having alternative descriptions, creating the descriptions semi-procedurally?

For example, instead of doing this:

Elentor posted:

While writing the description text for the generator and armor items I had a nice idea. Since I want to take in suggestions for the flavor text, I realized that I could add in the possibility for the same item to have multiple descriptions. When the item is generated, one of them is picked at random. I wrote some small variations on some existing items for fun.



Create a single story:

quote:

This shield generator is able to condense %MATERIAL around the ship into a %BIGNESS barrier whenever it detects incoming projectiles.

Comes with a %BIGNESS manual %DESCRIPTION that it %WORKS.

%OPTIONAL_EXTRA

Make a couple of word lists

quote:

MATERIAL: air, particles, dongs, light
DESCRIPTION: telling you, stating, urging, barely concealing
WORKS: "works best with gas giants", "should work fine" on newly terraformed planets, but you're distrustful, "shouldn't be used near anti-matter stars"
BIGNESS: ripped, thin, thick, your mom
OPTIONAL_EXTRA: It was originally found in the remains of Tatooine, It comes with a free sticker book, It comes in an assortment of colors, The merchant tells you that it has been rumored to feed on the souls of its enemies

Don't generate the descriptions randomly, but use a wildly truncated (sub-)set of the stats to generate a seed for a new RNG. That way, an item with identical (or very similar) stats will get the same description, but there's a sense of progression in stats reflected in the description.

You could even use the raw stats as input for some of the word lists to reinforce the feeling of progression (so material depends on the level and a level 1 is more likely do condense "air" but a level 10 is more likely to consense "time itself" and only high-level items get an extra description).

It seems this would reduce the insanity of making multiple descriptions for hundreds of items, make some fun generated descriptions, and fit in nicely with the procedural nature of the game. This might be feature-creep at this stage, but it seems to me you'd make up for it by not having to write and maintain multiple stories for items.

Elentor
Dec 14, 2004

by Jeffrey of YOSPOS

klafbang posted:

Have you considered instead of having alternative descriptions, creating the descriptions semi-procedurally?

For example, instead of doing this:


Create a single story:


Make a couple of word lists


Don't generate the descriptions randomly, but use a wildly truncated (sub-)set of the stats to generate a seed for a new RNG. That way, an item with identical (or very similar) stats will get the same description, but there's a sense of progression in stats reflected in the description.

You could even use the raw stats as input for some of the word lists to reinforce the feeling of progression (so material depends on the level and a level 1 is more likely do condense "air" but a level 10 is more likely to consense "time itself" and only high-level items get an extra description).

It seems this would reduce the insanity of making multiple descriptions for hundreds of items, make some fun generated descriptions, and fit in nicely with the procedural nature of the game. This might be feature-creep at this stage, but it seems to me you'd make up for it by not having to write and maintain multiple stories for items.

I myself don't mind writing a lot. If my posting is any indication, I like writing a lot. But procedural descriptions seems to me like they would be the same or more amount of work if I wanted to achieve the same amount of variety. And when I thought of multiple descriptions I thought it'd be almost like an easter egg, most items would only have one description anyway.

With that said I could probably at this point do something like your idea for some items. I already wrote huge sheets of adjectives I can use and they're separated similar to your example. I hadn't thought of mixing it with item descriptions but now that I think about it I can probably get more mileage out of shop descriptions for example.

Edit: The more I think about it yeah, I like your idea. I'll not implement it as a feature soon but it's going on my backburner for the future. I like the idea of using my "vocabulary" system on some descriptions. From my experience it's definitely going to be more work than less work, though.

Elentor fucked around with this message at 12:40 on Feb 11, 2018

Fish Noise
Jul 25, 2012

IT'S ME, BURROWS!

IT WAS ME ALL ALONG, BURROWS!
Oh, great, now there's yet another text file on my desktop.

Elentor posted:

* Weapon descriptions. I've done a few but this is the meat of the thing. If you want to contribute with a serious or whacky weapon description, I'm more than thankful. I also wrote a system that allows for weapons to have multiple descriptions in the databank so feel free to contribute even if someone else already suggested something to a certain weapon.
Can you attach a particular description to a particular instance of a weapon, for instance...
Proton Emitter
Desc, starter-specific: Museum piece. Literally. The heist started forming in your head the instant you spotted your initials, in your handwriting, engraved on the barrel. You're still not welcome back there, and the more you think about it, the more you get an uncomfortable feeling that you may have donated the gun to them in the first place.

professor_curly
Mar 4, 2016

There he is!
Independent Weapon Ideas

Frontier Revolver - A slow firing but powerful weapon which uses entire canisters of plasma with each shot, loaded by a large rotating cylinder. The plasma canisters used in this weapon are standard fuel cells for prefabricated fusion reactors which are common in independent settlements. Each shot could provide power to a medium sized settlement for a month.

Alt Firing Mode - Plasma Fan: The weapon rapidly discharges all the loaded plasma cylinders at once in a devastating barrage, but the weapon will be unavailable until the canisters recharge.


Railgatling - A rotating set of charged electro-magnetic rails. The rotation of the firing assemble ensures each set of rails is fully charged before the next shot and drastically reduces wear and tear, allowing for extremely high rates of fire. Physical proof of the phrase "necessity is the mother of invention," the exact method of construction is a closely guarded secret of the tinkers and defense forces in outer settlements.

Fires extremely fast projectiles at a high rate of fire. Gimmick Firing idea - have the weapon firing be bound to a scroll wheel, it fires as fast as the wheel goes.


DS-X Pattern Mining Laser Named for the X small lasers involved in its construction, the DS Pattern is an improvised mining system that uses many small lasers converging fire at a single point to replicate the power of larger and more advanced lasers. Fires in an hourglass pattern, dealing higher damage the closer to the convergence point the target is.
Higher levels add more lasers/have a bigger X


Trinket?
Asteroid Wrangler - Automatically/Randomly targets a nearby enemy and lassos them, disabling their weapons. Can be used to swing enemy ships into one another. (Alternatively you reel in the ship and if you survive a level with the ship intact you get bonus money and/or potentially get a random part from the lasso'd ship). Originally built to transport valuable comets and asteroids to colonial processing centers, it turns out it works fine on small enemy ships too!

KillHour
Oct 28, 2007


Ionic Recycler: A secondary weapon originally designed for scrapping old ships. A beam of negative ions charges all the components of the ship, causing them to mutually repel. Doesn't do damage, per-se; but as a ship becomes more and more charged, it comes under immense strain - effectively reducing the minimum health of a ship. When the structural integrity of the ship falls below this level, it fails catastrophically, exploding in a cloud of deadly shrapnel. The more charged the ship is when it fails, the faster and more powerful the resulting explosion. Make sure to stay far away!

Bonus interactions if not too hard: Mutually charged ships should repel each other. Electrical weapons should deflect away from charged ships. As charge builds, greebles should fly off and damage nearby ships. At high charge levels, electrical components should fail and make the ship's AI unpredictable.

nielsm
Jun 1, 2009



I'm not sure if this fits into your weapon model but...

Diamond Ray - a powerful beam weapon, it takes a while (1-2 seconds) to charge, while charging shoots out a small aiming laser showing where it will hit. The shot itself is a powerful instant-hit beam active for a short while, it completely penetrates most common shields. Downside is it has a long cooldown, and your own shields go down as well while the beam is active. Also the aiming laser telegraphs your intention.

SIGSEGV
Nov 4, 2010


Lazy Laser: A big, large, powerful laser. To make the weapon more powerful, it trades beam speed for power, this causes the beam to slowly swing across targets like a hybrid of a whip and a pool noodle.

Catling gun: This would be a museum piece of a garage gun but for the serials which indicate it was built at most a decade ago. Shoots cat-shaped pastries, inflicting both hull damage and tooth decay. As it is gas operated it needs to be wrapped in space plastics to fire properly in the void.

KillHour
Oct 28, 2007


Antigrav Module: This handy device bends spacetime around your ship so incoming bullets are inclined to curve around your profile instead of hitting square on. Only a perfectly-placed shot will strike a target equipped with the highest levels of these - and at a far-reduced kinetic impact, at that. This affects your own weapons as well, causing them to accelerate away from you (albeit not necessarily in a straight line). Bringing this field into contact with other gravity-based tools or weaponry is ill-advised, as the side effects of gravity-antigravity field interaction are unknown but almost certainly spectacular.

Bad diagram:

Adbot
ADBOT LOVES YOU

TooMuchAbstraction
Oct 14, 2012

I spent four years making
Waves of Steel
Hell yes I'm going to turn my avatar into an ad for it.
Fun Shoe
Capacitated laser. Fires a high-powered beam, but the beam lasts for only a very short period (tenth of a second at most). Someone took a cutting laser, said "what if we added more power?", and slapped a bunch of capacitors on it, and this is the result. Takes a long time to recharge as the capacitors must all be charged up before it's ready to fire.

Dyno-bolas. Launch a pair of grenades connected by a cord; they lazily spin about each other and detonate on impact. If you've ever played Einhander, the "Ptyhon" [sic] weapon works similarly.

Recycle of Violence (activated item). Creates a vacuum (in space? Well, whatever...) in front of the player that sucks in projectiles, debris, smaller ships, etc. for a few seconds, then launches everything it grabbed as a big ol' ball of damage. Size and power of the ball depends on how much stuff it grabs. Basically a temporary shield that turns into an attack at the end.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply